diff --git a/core/js/lumx.js b/core/js/lumx.js index 6a2466854..a446f3877 100644 --- a/core/js/lumx.js +++ b/core/js/lumx.js @@ -22,6 +22,7 @@ angular.module('lumx.utils', [ angular.module('lumx.button', []); angular.module('lumx.checkbox', []); +angular.module('lumx.chip', []); angular.module('lumx.data-table', []); angular.module('lumx.date-picker', []); angular.module('lumx.dialog', ['lumx.utils.event-scheduler']); @@ -29,7 +30,9 @@ angular.module('lumx.dropdown', ['lumx.utils.event-scheduler']); angular.module('lumx.fab', []); angular.module('lumx.file-input', []); angular.module('lumx.icon', []); +angular.module('lumx.list', []); angular.module('lumx.notification', ['lumx.utils.event-scheduler']); +angular.module('lumx.popover', []); angular.module('lumx.progress', []); angular.module('lumx.radio-button', []); angular.module('lumx.ripple', []); @@ -44,6 +47,7 @@ angular.module('lumx.tooltip', []); angular.module('lumx', [ 'lumx.button', 'lumx.checkbox', + 'lumx.chip', 'lumx.data-table', 'lumx.date-picker', 'lumx.dialog', @@ -51,7 +55,9 @@ angular.module('lumx', [ 'lumx.fab', 'lumx.file-input', 'lumx.icon', + 'lumx.list', 'lumx.notification', + 'lumx.popover', 'lumx.progress', 'lumx.radio-button', 'lumx.ripple', diff --git a/core/js/utils/event-scheduler_service.js b/core/js/utils/event-scheduler_service.js index 7a075296a..1bb419e8b 100644 --- a/core/js/utils/event-scheduler_service.js +++ b/core/js/utils/event-scheduler_service.js @@ -35,7 +35,13 @@ function EventSchedulerService($document, LxUtilsService) { * @param {Event} evt The event. */ function _handle(evt) { - const scheduler = _schedule[evt.type]; + let scheduler; + + for (const [key] of Object.entries(_schedule)) { + if (key.includes(evt.type)) { + scheduler = _schedule[key]; + } + } if (angular.isDefined(scheduler)) { for (let i = 0, len = scheduler.length; i < len; i++) { diff --git a/core/scss/_legacy-theme-lumapps.scss b/core/scss/_legacy-theme-lumapps.scss index 0699af65f..514efac46 100644 --- a/core/scss/_legacy-theme-lumapps.scss +++ b/core/scss/_legacy-theme-lumapps.scss @@ -47,7 +47,6 @@ $mdi-font-path: '../../node_modules/@mdi/font/fonts' !default; @import '../../modules/radio-button/scss/radio-button'; @import '../../modules/ripple/scss/ripple'; @import '../../modules/search-filter/scss/search-filter'; -@import '../../modules/select/scss/select'; @import '../../modules/stepper/scss/stepper'; @import '../../modules/switch/scss/switch'; @import '../../modules/tabs/scss/tabs'; diff --git a/dist/lumx.css b/dist/lumx.css index bdef220e1..29012e522 100644 --- a/dist/lumx.css +++ b/dist/lumx.css @@ -13050,25 +13050,25 @@ table { .bgc-grey-50 { background-color: #FAFAFA !important; } -.bgc-grey-100, .lx-select-choices__pane-5 .lx-select-choices__pane-choice--is-selected { +.bgc-grey-100 { background-color: #F5F5F5 !important; } -.bgc-grey-200, .lx-select-choices__pane-4 .lx-select-choices__pane-choice--is-selected, .lx-select-choices__pane-5 { +.bgc-grey-200 { background-color: #EEEEEE !important; } -.bgc-grey-300, .lx-select-choices__pane-3 .lx-select-choices__pane-choice--is-selected, .lx-select-choices__pane-4 { +.bgc-grey-300 { background-color: #E0E0E0 !important; } -.bgc-grey-400, .lx-select-choices__pane-2 .lx-select-choices__pane-choice--is-selected, .lx-select-choices__pane-3 { +.bgc-grey-400 { background-color: #BDBDBD !important; } -.bgc-grey-500, .lx-select-choices__pane-1 .lx-select-choices__pane-choice--is-selected, .lx-select-choices__pane-2 { +.bgc-grey-500 { background-color: #9E9E9E !important; } -.bgc-grey-600, .lx-select-choices__pane-0 .lx-select-choices__pane-choice--is-selected, .lx-select-choices__pane-1 { +.bgc-grey-600 { background-color: #757575 !important; } -.bgc-grey-700, .lx-select-choices__panes-wrapper, .lx-select-choices__pane-0 { +.bgc-grey-700 { background-color: #616161 !important; } .bgc-grey-800 { @@ -15683,35 +15683,41 @@ table { padding: 8px; border-top: 1px solid rgba(0, 0, 0, 0.12); } +/* ========================================================================== + Chip + ========================================================================== */ .chip { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; + display: inline-flex; align-items: center; - -ms-flex-align: center; - height: 32px; - padding: 0 12px; - border-radius: 16px; - background-color: #E0E0E0; } - -.chip--is-contact { - padding-left: 0; - padding-left: 0; } + padding: 0; + margin: 0; + border: none; + outline: none; + text-decoration: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: top; + height: 36px; + border-radius: 18px; + background-color: rgba(40, 51, 109, 0.1); + color: #28336d; + padding: 0 12px; } + .chip__label { + flex: 1; + white-space: nowrap; + font-size: 14px; + font-weight: 400; + line-height: 20px; } +/* Chip deletable + ========================================================================== */ .chip--is-deletable { - padding-right: 4px; + transition-duration: 150ms; + transition-property: background-color, box-shadow, color; cursor: pointer; } .chip--is-deletable:after { - height: 24px; - width: 24px; - margin-left: 4px; display: inline-block; font: normal normal normal 24px/1 "Material Design Icons"; font-size: inherit; @@ -15719,41 +15725,35 @@ table { line-height: inherit; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - content: "\F159"; - font-size: 19px; - font-size: 1.1875rem; - color: rgba(0, 0, 0, 0.38); - line-height: 24px; - text-align: center; } + content: "\F156"; + font-size: 20px; + flex-shrink: 0; + margin-left: 8px; } .chip--is-deletable:hover { - background-color: #757575; } - .chip--is-deletable:hover:after { - color: #FFFFFF; } + background-color: rgba(40, 51, 109, 0.2); } + .chip--is-deletable:active { + background-color: rgba(40, 51, 109, 0.4); } + .chip--is-deletable[data-focus-visible-added] { + box-shadow: 0 0 0 2px rgba(40, 51, 109, 0.4); } + +/* Chip contact + ========================================================================== */ +.chip--is-contact { + padding-left: 6px; } .chip__contact { - height: 32px; - width: 32px; + flex-shrink: 0; margin-right: 8px; - border-radius: 50%; + overflow: hidden; + width: 24px; + height: 24px; background-position: center; background-repeat: no-repeat; background-size: cover; - overflow: hidden; } + border-radius: 50%; } .chip__contact img { - height: 32px; - width: 32px; } - -.chip__label { - box-flex: 1; - -moz-flex: 1; - flex: 1; - font-size: 13px; - font-size: 0.8125rem; - line-height: 32px; - color: rgba(0, 0, 0, 0.87); } - -.chip--is-deletable:hover .chip__label { - color: #FFFFFF; } + width: 24px; + height: 24px; } .data-table-container { position: relative; @@ -16586,96 +16586,60 @@ table { .dialog__footer .btn:first-child { margin-left: 0; } -.dropdown--has-toggle { - position: relative; - display: inline-block; - vertical-align: top; } - -.dropdown-toggle { - position: relative; } - -.dropdown-menu { - position: fixed; - border-radius: 2px; - background-color: #FFFFFF; - text-align: left; - opacity: 0; - overflow: auto; - box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } - .dropdown-menu ul { - margin: 0; - padding: 0; - list-style: none; } - .dropdown-menu ul > li { - position: relative; } - -.dropdown-menu__content { - padding: 8px 0; - opacity: 0; - height: 100%; - transition-property: opacity; - transition-duration: 0.2s; } - .dropdown-menu--is-open .dropdown-menu__content { - opacity: 1; } +/* ========================================================================== + Dropdown + ========================================================================== */ +.dropdown-menu ul { + padding: 0; + margin: 0; + list-style: none; + outline: none; } .dropdown-divider { height: 1px; - margin-top: 8px; - margin-bottom: 8px; - background-color: rgba(0, 0, 0, 0.12); } + margin: 8px 0; + background-color: rgba(40, 51, 109, 0.1); } .dropdown-link { - display: -moz-flex; display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; + padding-right: 16px; + padding-left: 16px; + color: #28336d; + outline: none; + text-decoration: none; + height: 36px; align-items: center; - -ms-flex-align: center; + transition-duration: 150ms; + transition-property: background-color, box-shadow, color; cursor: pointer; - color: rgba(0, 0, 0, 0.87); - text-decoration: none; - white-space: nowrap; } - @media (max-width: 61.24em) { - .dropdown-link { - height: 48px; - padding: 0 16px; - font-size: 16px; - font-size: 1rem; - line-height: 48px; } } - @media (min-width: 61.25em) { - .dropdown-link { - height: 32px; - padding: 0 24px; - font-size: 14px; - font-size: 0.875rem; - line-height: 32px; } } - .dropdown-link .mdi { - height: 24px; + font-size: 14px; + font-weight: 400; + line-height: 20px; + flex: 1; } + .dropdown-link:hover, .dropdown-link[data-focus-visible-added] { + background-color: rgba(40, 51, 109, 0.1); } + .dropdown-link:active { + background-color: rgba(40, 51, 109, 0.2); } + .dropdown-link i { + font-size: 20px; + color: #28336d; + display: flex; + flex-shrink: 0; + justify-content: center; width: 24px; - margin-right: 16px; - line-height: 24px; - color: rgba(0, 0, 0, 0.54); - text-align: center; } - @media (max-width: 61.24em) { - .dropdown-link .mdi { - font-size: 24px; - font-size: 1.5rem; } } - @media (min-width: 61.25em) { - .dropdown-link .mdi { - font-size: 18px; - font-size: 1.125rem; } } - .dropdown-link:not(.dropdown-link--is-header):hover { - background-color: #EEEEEE; } + margin-right: 8px; } .dropdown-link--is-header { - color: rgba(0, 0, 0, 0.38); - cursor: default; } + font-size: 10px; + font-weight: 700; + line-height: 12px; + text-transform: uppercase; + display: flex; + height: 36px; + align-items: center; + padding: 0 16px; + color: rgba(40, 51, 109, 0.4); + pointer-events: none; } .fab { display: inline-block; @@ -17189,99 +17153,92 @@ table { .icon--circled { border-radius: 50%; } +/* ========================================================================== + List + ========================================================================== */ .list { - margin: 0; padding: 0; - list-style: none; } - -.list-row { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - position: relative; - padding: 0 16px; } - .list-row.list-row--multi-line .list-row__primary, - .list-row.list-row--multi-line .list-row__secondary { - padding: 16px 0; } - .list-row:not(.list-row--multi-line) .list-row__primary, - .list-row:not(.list-row--multi-line) .list-row__content, - .list-row:not(.list-row--multi-line) .list-row__secondary { - box-pack: center; - -moz-justify-content: center; - -ms-justify-content: center; - -o-justify-content: center; - justify-content: center; - -ms-flex-pack: center; } - .list-row:not(.list-row--multi-line) .list-row__primary, - .list-row:not(.list-row--multi-line) .list-row__secondary { - padding: 8px 0; } - -.list-row--has-separator .list-row__content:after { - content: ''; - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 1px; - background-color: rgba(0, 0, 0, 0.12); } + margin: 0; + list-style: none; + outline: none; } -.list-row--has-separator:last-child .list-row__content:after { - display: none; } +/* List row + ========================================================================== */ +.list-row--has-separator { + position: relative; } + .list-row--has-separator::after { + position: absolute; + right: 16px; + bottom: 0; + left: 16px; + height: 1px; + background-color: rgba(40, 51, 109, 0.1); + content: ''; } + .list-row--has-separator:last-child::after { + display: none; } -.list-row--is-clickable { - cursor: pointer; } +.list-row__primary { + display: flex; + flex-shrink: 0; + justify-content: center; + width: 36px; + margin-right: 16px; } -.list-row--is-clickable:hover, -.list-row--is-active { - background-color: #F5F5F5; } +.list-row__content { + font-size: 14px; + font-weight: 400; + line-height: 20px; + flex: 1; } -.list-row__primary, -.list-row__content, .list-row__secondary { - display: -moz-flex; display: flex; - box-orient: vertical; - box-direction: normal; - -moz-flex-direction: column; - flex-direction: column; } - -.list-row__primary { - width: 56px; } + flex-shrink: 0; + justify-content: center; + margin-left: 16px; } -.list-row__content { - position: relative; - box-flex: 1; - -moz-flex: 1; - flex: 1; - padding: 12px 0; } +.list-row:not(.list-row--multi-line) { + display: flex; + padding-right: 16px; + padding-left: 16px; + color: #28336d; + outline: none; + text-decoration: none; + height: 72px; + align-items: center; + height: auto; + padding-top: 16px; + padding-bottom: 16px; } -.list-row__secondary { - box-align: end; - -moz-align-items: flex-end; - -ms-align-items: flex-end; - -o-align-items: flex-end; - align-items: flex-end; - -ms-flex-align: end; - width: 40px; } +.list-row.list-row--multi-line { + display: flex; + padding-right: 16px; + padding-left: 16px; + color: #28336d; + outline: none; + text-decoration: none; + align-items: flex-start; + padding-top: 16px; + padding-bottom: 16px; } +/* List divider + ========================================================================== */ .list-divider { height: 1px; - margin-top: 8px; - margin-bottom: 8px; - background-color: rgba(0, 0, 0, 0.12); } - -.list-divider--is-pushed { - margin-left: 72px; } + margin: 8px 0; + background-color: rgba(40, 51, 109, 0.1); } +/* List subheader + ========================================================================== */ .list-subheader { - padding: 12px 16px; - color: rgba(0, 0, 0, 0.54); } - -.list-subheader--is-pushed { - margin-left: 56px; } + font-size: 10px; + font-weight: 700; + line-height: 12px; + text-transform: uppercase; + display: flex; + height: 36px; + align-items: center; + padding: 0 16px; + color: rgba(40, 51, 109, 0.4); } .notification { position: fixed; @@ -18100,966 +18057,434 @@ table { .search-filter__autocomplete-item:hover, .search-filter__autocomplete-item.search-filter__autocomplete-item--is-active { background-color: #EEEEEE; } -.lx-select.lx-select--default-style { - position: relative; } - .lx-select.lx-select--default-style .dropdown { - display: block; } +.lx-stepper.lx-stepper--layout-vertical { + padding: 24px 0; } -.lx-select.lx-select--default-style.lx-select--view-mode-field { - padding-top: 32px; - padding-bottom: 8px; } - .lx-select.lx-select--default-style.lx-select--view-mode-field:before, .lx-select.lx-select--default-style.lx-select--view-mode-field:after { - content: ''; } - .lx-select.lx-select--default-style.lx-select--view-mode-field:before { - position: absolute; - right: 0; - bottom: 7px; - left: 0; - height: 1px; } - .lx-select.lx-select--default-style.lx-select--view-mode-field:after { +.lx-stepper__header { + position: relative; + height: 72px; + overflow: hidden; + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } + +.lx-stepper__nav { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: -moz-flex; + display: flex; + box-pack: justify; + -moz-justify-content: space-between; + -ms-justify-content: space-between; + -o-justify-content: space-between; + justify-content: space-between; + -ms-flex-pack: justify; } + .lx-stepper__nav:before { + content: ''; position: absolute; + top: 50%; right: 0; - bottom: 6px; left: 0; - height: 2px; - transform: scale(0); - transition-property: transform; + height: 1px; + background-color: rgba(0, 0, 0, 0.12); } + .lx-stepper--step-has-feedback .lx-stepper__nav { + transition-property: opacity; transition-duration: 0.6s; transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1); } + .lx-stepper--step-has-feedback.lx-stepper--step-is-loading .lx-stepper__nav { + opacity: 0; } -.lx-select.lx-select--default-style.lx-select--view-mode-field.lx-select--theme-light:before { - border-bottom: 1px solid rgba(0, 0, 0, 0.12); } - -.lx-select.lx-select--default-style.lx-select--view-mode-field.lx-select--theme-dark:before { - border-bottom: 1px solid rgba(255, 255, 255, 0.12); } - -.lx-select--default-style.lx-select--view-mode-field.lx-select--is-disabled { - pointer-events: none; } - .lx-select--default-style.lx-select--view-mode-field.lx-select--is-disabled:before { - border-bottom-style: dashed; } - -.lx-select--default-style.lx-select--view-mode-field.lx-select--valid:after { - background-color: #4CAF50; - transform: scale(1); } - -.lx-select--default-style.lx-select--view-mode-field.lx-select--error:after { - background-color: #F44336; - transform: scale(1); } - -.lx-select--default-style .lx-select-label { - display: block; - padding-right: 24px; - pointer-events: none; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - -.lx-select--default-style.lx-select--view-mode-field .lx-select-label { - position: absolute; - top: 8px; - left: 0; - height: 32px; - width: 100%; - line-height: 32px; - transform: translateY(24px); - transform-origin: bottom left; - transition-property: transform, color; - transition-duration: 0.4s; - transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1); } - -.lx-select--default-style.lx-select--view-mode-chips .lx-select-label { +.lx-stepper__feedback { position: absolute; top: 0; + right: 0; + bottom: 0; left: 0; - height: 40px; - width: 100%; - line-height: 40px; } - -.lx-select--default-style.lx-select--is-active.lx-select--fixed-label .lx-select-label, -.lx-select--default-style.lx-select--is-active.lx-select--view-mode-chips .lx-select-label { - display: none; } + z-index: 1; + display: -moz-flex; + display: flex; + box-align: center; + -moz-align-items: center; + -ms-align-items: center; + -o-align-items: center; + align-items: center; + -ms-flex-align: center; + padding: 0 24px; + opacity: 0; + font-size: 14px; + font-size: 0.875rem; + transform: translateY(20px); + transition-property: opacity, transform; + transition-duration: 0.6s; + transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1); } + .lx-stepper--step-is-loading .lx-stepper__feedback { + opacity: 1; + transform: translateY(0); } -.lx-select--default-style.lx-select--is-active.lx-select--view-mode-field .lx-select-label { - transform: scale(0.75) translateY(0); } +.lx-step-nav { + display: -moz-flex; + display: flex; + cursor: pointer; } + .lx-step-nav .ripple { + background-color: rgba(0, 0, 0, 0.54); } + .lx-stepper--layout-horizontal .lx-step-nav { + box-align: center; + -moz-align-items: center; + -ms-align-items: center; + -o-align-items: center; + align-items: center; + -ms-flex-align: center; + position: relative; + height: 72px; + padding: 0 8px; + background-color: #FFFFFF; } + .lx-stepper--layout-horizontal .lx-step-nav:first-child { + padding-left: 24px; } + .lx-stepper--layout-horizontal .lx-step-nav:last-child { + padding-right: 24px; } + .lx-stepper--layout-vertical .lx-step-nav { + padding: 8px 24px; } -.lx-select--default-style.lx-select--theme-light .lx-select-label { - color: rgba(0, 0, 0, 0.54); } +.lx-step-nav__indicator { + display: -moz-flex; + display: flex; + box-align: center; + -moz-align-items: center; + -ms-align-items: center; + -o-align-items: center; + align-items: center; + -ms-flex-align: center; + box-pack: center; + -moz-justify-content: center; + -ms-justify-content: center; + -o-justify-content: center; + justify-content: center; + -ms-flex-pack: center; + height: 24px; + width: 24px; } + .lx-stepper--layout-horizontal .lx-step-nav__indicator { + margin-right: 8px; } + .lx-stepper--layout-vertical .lx-step-nav__indicator { + margin-right: 12px; } + .lx-step-nav__indicator.lx-step-nav__indicator--index, .lx-step-nav__indicator.lx-step-nav__indicator--icon { + border-radius: 50%; + background-color: rgba(0, 0, 0, 0.38); + color: #FFFFFF; } + .lx-step-nav--is-active .lx-step-nav__indicator.lx-step-nav__indicator--index, + .lx-step-nav--is-active .lx-step-nav__indicator.lx-step-nav__indicator--icon, + .lx-step-nav--is-valid .lx-step-nav__indicator.lx-step-nav__indicator--index, + .lx-step-nav--is-valid .lx-step-nav__indicator.lx-step-nav__indicator--icon { + background-color: #3F51B5; } + .lx-step-nav__indicator.lx-step-nav__indicator--index { + font-size: 11px; + font-size: 0.6875rem; } + .lx-step-nav__indicator.lx-step-nav__indicator--icon { + font-size: 14px; + font-size: 0.875rem; } + .lx-step-nav__indicator.lx-step-nav__indicator--error { + font-size: 24px; + font-size: 1.5rem; + color: #F44336; } -.lx-select--default-style.lx-select--theme-dark .lx-select-label { - color: rgba(255, 255, 255, 0.7); } +.lx-step-nav__label { + font-size: 14px; + font-size: 0.875rem; + font-weight: 500; + color: rgba(0, 0, 0, 0.54); + line-height: 24px; } + .lx-step-nav--is-active .lx-step-nav__label, + .lx-step-nav--is-valid .lx-step-nav__label { + color: rgba(0, 0, 0, 0.87); } + .lx-step-nav--has-error .lx-step-nav__label { + color: #F44336; } -.lx-select--default-style.lx-select--theme-light.lx-select--is-disabled .lx-select-label { +.lx-step-nav__state { + font-size: 12px; + font-size: 0.75rem; color: rgba(0, 0, 0, 0.38); } + .lx-step-nav--has-error .lx-step-nav__state { + color: #F44336; } -.lx-select--default-style.lx-select--theme-dark.lx-select--is-disabled .lx-select-label { - color: rgba(255, 255, 255, 0.3); } - -.lx-select--default-style.lx-select--valid .lx-select-label { - color: #4CAF50; } - -.lx-select--default-style.lx-select--error .lx-select-label { - color: #F44336; } +.lx-stepper--layout-vertical .lx-step { + position: relative; + padding-bottom: 16px; } + .lx-stepper--layout-vertical .lx-step.lx-step--is-active { + padding-bottom: 48px; } + .lx-stepper--layout-vertical .lx-step:last-child { + padding-bottom: 0; } + .lx-stepper--layout-vertical .lx-step:before { + content: ''; + position: absolute; + top: 40px; + bottom: 0; + left: 36px; + width: 1px; + background-color: rgba(0, 0, 0, 0.12); } -.lx-select--default-style:not(.lx-select--autocomplete) .lx-select-selected-wrapper { - padding-right: 24px; } - .lx-select--default-style:not(.lx-select--autocomplete) .lx-select-selected-wrapper:after { - display: inline-block; - font: normal normal normal 24px/1 "Material Design Icons"; - font-size: inherit; - text-rendering: auto; - line-height: inherit; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: "\F35D"; - font-size: 14px; - font-size: 0.875rem; } +.lx-step__nav { + margin-bottom: 8px; } + .lx-step:not(.lx-step--is-active):last-child .lx-step__nav { + margin-bottom: 0; } -.lx-select--default-style.lx-select--view-mode-field .lx-select-selected-wrapper { - min-height: 32px; } +.lx-stepper--layout-horizontal .lx-step__wrapper { + padding: 24px; } -.lx-select--default-style.lx-select--view-mode-field:not(.lx-select--autocomplete) .lx-select-selected-wrapper:after { - position: absolute; - right: 8px; - bottom: 8px; - line-height: 16px; } +.lx-stepper--layout-vertical .lx-step__wrapper { + padding: 0 24px 0 60px; } -.lx-select--default-style.lx-select--view-mode-chips .lx-select-selected-wrapper { - min-height: 40px; } +.lx-step__content { + position: relative; } -.lx-select--default-style.lx-select--view-mode-chips:not(.lx-select--autocomplete) .lx-select-selected-wrapper:after { +.lx-step__progress { position: absolute; top: 0; right: 0; - line-height: 40px; } - -.lx-select--default-style.lx-select--theme-light .lx-select-selected-wrapper:after { - color: rgba(0, 0, 0, 0.38); } + bottom: 0; + left: 0; + display: -moz-flex; + display: flex; + box-align: center; + -moz-align-items: center; + -ms-align-items: center; + -o-align-items: center; + align-items: center; + -ms-flex-align: center; + box-pack: center; + -moz-justify-content: center; + -ms-justify-content: center; + -o-justify-content: center; + justify-content: center; + -ms-flex-pack: center; + background-color: rgba(255, 255, 255, 0.7); } -.lx-select--default-style.lx-select--theme-dark .lx-select-selected-wrapper:after { - color: rgba(255, 255, 255, 0.3); } +.lx-step__actions { + display: -moz-flex; + display: flex; + margin-top: 24px; } + .lx-stepper--layout-horizontal .lx-step__actions { + box-orient: horizontal; + box-direction: reverse; + -moz-flex-direction: row-reverse; + flex-direction: row-reverse; } -.lx-select--default-style:not(.lx-select--autocomplete) .dropdown--is-open .lx-select-selected-wrapper:after { - content: "\F360"; } +.lx-stepper--layout-horizontal .lx-step__action.lx-step__action--cancel { + margin-right: 8px; } -.lx-select-selected-wrapper > .lx-select-selected__filter { - display: none; } +.lx-stepper--layout-vertical .lx-step__action.lx-step__action--cancel { + margin-left: 8px; } -.lx-select--default-style.lx-select--is-unique .lx-select-selected:hover .lx-select-selected__clear { - opacity: 1; } +.lx-stepper--layout-horizontal .lx-step__action.lx-step__action--back { + box-flex: 1; + -moz-flex: 1; + flex: 1; } -.lx-select--default-style.lx-select--is-multiple .lx-select-selected { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - -webkit-box-lines: multiple; - -moz-box-lines: multiple; - box-lines: multiple; - flex-wrap: wrap; } +.lx-stepper--layout-vertical .lx-step__action.lx-step__action--back { + box-flex: 1; + -moz-flex: 1; + flex: 1; + text-align: right; } -.lx-select--default-style.lx-select--is-multiple.lx-select--view-mode-field .lx-select-selected { - padding: 4px 0; } +/*------------------------------------*\ + #OBJECTS-SWITCH +\*------------------------------------*/ +.switch { + min-width: 35px; + min-height: 24px; } -.lx-select--default-style .lx-select-selected__value { - display: block; - line-height: 32px; } +.switch--red .switch__input:checked + .switch__label:before { + background-color: rgba(244, 67, 54, 0.5); } -.lx-select--default-style.lx-select--theme-light .lx-select-selected__value { - color: rgba(0, 0, 0, 0.87); } +.switch--red .switch__input:checked + .switch__label:after { + background-color: #F44336; } -.lx-select--default-style.lx-select--theme-dark .lx-select-selected__value { - color: #FFFFFF; } +.switch--pink .switch__input:checked + .switch__label:before { + background-color: rgba(233, 30, 99, 0.5); } -.lx-select--default-style.lx-select--theme-light.lx-select--is-disabled .lx-select-selected__value { - color: rgba(0, 0, 0, 0.38); } +.switch--pink .switch__input:checked + .switch__label:after { + background-color: #E91E63; } -.lx-select--default-style.lx-select--theme-dark.lx-select--is-disabled .lx-select-selected__value { - color: rgba(255, 255, 255, 0.3); } +.switch--purple .switch__input:checked + .switch__label:before { + background-color: rgba(156, 39, 176, 0.5); } -.lx-select--default-style .lx-select-selected__clear { - display: block; - position: absolute; - top: 0; - right: 24px; - opacity: 0; - line-height: 32px; - transition-property: opacity, color; - transition-duration: 0.2s; } - .lx-select--default-style .lx-select-selected__clear:hover { - color: #F44336; } +.switch--purple .switch__input:checked + .switch__label:after { + background-color: #9C27B0; } -.lx-select--default-style.lx-select--theme-light .lx-select-selected__clear { - color: rgba(0, 0, 0, 0.87); } +.switch--deep-purple .switch__input:checked + .switch__label:before { + background-color: rgba(103, 58, 183, 0.5); } -.lx-select--default-style.lx-select--theme-dark .lx-select-selected__clear { - color: #FFFFFF; } +.switch--deep-purple .switch__input:checked + .switch__label:after { + background-color: #673AB7; } -.lx-select--default-style .lx-select-selected__tag { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; - align-items: center; - -ms-flex-align: center; - background-color: #E0E0E0; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - .lx-select--default-style .lx-select-selected__tag:after { - display: inline-block; - font: normal normal normal 24px/1 "Material Design Icons"; - font-size: inherit; - text-rendering: auto; - line-height: inherit; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: "\F159"; - color: rgba(0, 0, 0, 0.38); } - .lx-select--default-style .lx-select-selected__tag .mdi { - margin-right: 4px; - color: rgba(0, 0, 0, 0.54); } +.switch--indigo .switch__input:checked + .switch__label:before { + background-color: rgba(63, 81, 181, 0.5); } -.lx-select--default-style:not(.lx-select--is-disabled) .lx-select-selected__tag.lx-select-selected__tag--is-active, .lx-select--default-style:not(.lx-select--is-disabled) .lx-select-selected__tag:hover { - background-color: #757575; - color: #FFFFFF; } - .lx-select--default-style:not(.lx-select--is-disabled) .lx-select-selected__tag.lx-select-selected__tag--is-active:after, .lx-select--default-style:not(.lx-select--is-disabled) .lx-select-selected__tag:hover:after { - color: #FFFFFF; } +.switch--indigo .switch__input:checked + .switch__label:after { + background-color: #3F51B5; } -.lx-select--default-style.lx-select--is-disabled .lx-select-selected__tag { - pointer-events: none; - color: rgba(0, 0, 0, 0.38); } - .lx-select--default-style.lx-select--is-disabled .lx-select-selected__tag:after { - display: none; } +.switch--blue .switch__input:checked + .switch__label:before { + background-color: rgba(33, 150, 243, 0.5); } -.lx-select--default-style.lx-select--view-mode-field .lx-select-selected__tag { - margin: 2px 4px 2px 0; - padding: 0 4px; - border-radius: 2px; - font-size: 11px; - font-size: 0.6875rem; - line-height: 20px; } - .lx-select--default-style.lx-select--view-mode-field .lx-select-selected__tag:after { - margin-left: 4px; - font-size: 14px; - font-size: 0.875rem; } - .lx-select--default-style.lx-select--view-mode-field .lx-select-selected__tag:last-child { - margin-right: 0; } +.switch--blue .switch__input:checked + .switch__label:after { + background-color: #2196F3; } -.lx-select--default-style.lx-select--view-mode-chips .lx-select-selected__tag { - height: 32px; - margin: 4px 8px 4px 0; - padding: 0 12px; - padding-right: 4px; - border-radius: 16px; - font-size: 13px; - font-size: 0.8125rem; - line-height: 32px; } - .lx-select--default-style.lx-select--view-mode-chips .lx-select-selected__tag:after { - height: 24px; - width: 24px; - margin-left: 4px; - font-size: 19px; - font-size: 1.1875rem; - line-height: 24px; - text-align: center; } - .lx-select--default-style.lx-select--view-mode-chips .lx-select-selected__tag:last-child { - margin-right: 0; } +.switch--light-blue .switch__input:checked + .switch__label:before { + background-color: rgba(3, 169, 244, 0.5); } -.lx-select--default-style.lx-select--view-mode-chips.lx-select--is-disabled .lx-select-selected__tag { - padding-right: 12px; } +.switch--light-blue .switch__input:checked + .switch__label:after { + background-color: #03A9F4; } -.lx-select-selected__filter { - display: block; - margin: 0; - padding: 0; - border: none; - background-color: transparent; - box-shadow: none; - overflow: hidden; - cursor: text; - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - -o-appearance: none; - appearance: none; } - .lx-select-selected__filter:focus { - outline: none; } - .lx-select--default-style.lx-select--view-mode-field .lx-select-selected__filter { - height: 24px; - line-height: 24px; } - .lx-select--default-style.lx-select--view-mode-chips .lx-select-selected__filter { - height: 40px; - line-height: 40px; } - .lx-select--default-style.lx-select--theme-light .lx-select-selected__filter { - color: rgba(0, 0, 0, 0.87); } - .lx-select--default-style.lx-select--theme-light .lx-select-selected__filter::-webkit-input-placeholder { - color: rgba(0, 0, 0, 0.54); } - .lx-select--default-style.lx-select--theme-light .lx-select-selected__filter::-moz-placeholder { - color: rgba(0, 0, 0, 0.54); } - .lx-select--default-style.lx-select--theme-light .lx-select-selected__filter:-moz-placeholder { - color: rgba(0, 0, 0, 0.54); } - .lx-select--default-style.lx-select--theme-light .lx-select-selected__filter:-ms-input-placeholder { - color: rgba(0, 0, 0, 0.54); } - .lx-select--default-style.lx-select--theme-dark .lx-select-selected__filter { - color: #FFFFFF; } - .lx-select--default-style.lx-select--theme-dark .lx-select-selected__filter::-webkit-input-placeholder { - color: rgba(255, 255, 255, 0.7); } - .lx-select--default-style.lx-select--theme-dark .lx-select-selected__filter::-moz-placeholder { - color: rgba(255, 255, 255, 0.7); } - .lx-select--default-style.lx-select--theme-dark .lx-select-selected__filter:-moz-placeholder { - color: rgba(255, 255, 255, 0.7); } - .lx-select--default-style.lx-select--theme-dark .lx-select-selected__filter:-ms-input-placeholder { - color: rgba(255, 255, 255, 0.7); } +.switch--cyan .switch__input:checked + .switch__label:before { + background-color: rgba(0, 188, 212, 0.5); } -.lx-select-selected--multipane { - position: relative; } +.switch--cyan .switch__input:checked + .switch__label:after { + background-color: #00BCD4; } -.lx-select-choices--default-style .lx-select-choices__filter { - padding: 2px 8px; - margin-bottom: 8px; - border-bottom: 1px solid rgba(0, 0, 0, 0.12); } +.switch--teal .switch__input:checked + .switch__label:before { + background-color: rgba(0, 150, 136, 0.5); } -.lx-select-choices--default-style .lx-select-choices__choice, -.lx-select-choices--default-style .lx-select-choices__subheader { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; - align-items: center; - -ms-flex-align: center; - position: relative; - text-decoration: none; } - @media (max-width: 61.24em) { - .lx-select-choices--default-style .lx-select-choices__choice, - .lx-select-choices--default-style .lx-select-choices__subheader { - min-height: 48px; - padding: 8px 16px; - font-size: 16px; - font-size: 1rem; } } - @media (min-width: 61.25em) { - .lx-select-choices--default-style .lx-select-choices__choice, - .lx-select-choices--default-style .lx-select-choices__subheader { - min-height: 32px; - padding: 8px 24px; - font-size: 14px; - font-size: 0.875rem; } } - .lx-select-choices--default-style .lx-select-choices__choice .mdi, - .lx-select-choices--default-style .lx-select-choices__subheader .mdi { - height: 24px; - width: 24px; - margin-right: 16px; - line-height: 24px; - text-align: center; } - @media (max-width: 61.24em) { - .lx-select-choices--default-style .lx-select-choices__choice .mdi, - .lx-select-choices--default-style .lx-select-choices__subheader .mdi { - font-size: 24px; - font-size: 1.5rem; } } - @media (min-width: 61.25em) { - .lx-select-choices--default-style .lx-select-choices__choice .mdi, - .lx-select-choices--default-style .lx-select-choices__subheader .mdi { - font-size: 18px; - font-size: 1.125rem; } } - -.lx-select-choices--default-style .lx-select-choices__choice { - cursor: pointer; - color: rgba(0, 0, 0, 0.87); } - .lx-select-choices--default-style .lx-select-choices__choice .mdi { - color: rgba(0, 0, 0, 0.54); } - .lx-select-choices--default-style .lx-select-choices__choice:hover { - background-color: #EEEEEE; } +.switch--teal .switch__input:checked + .switch__label:after { + background-color: #009688; } -.lx-select-choices--is-unique.lx-select-choices--default-style .lx-select-choices__choice.lx-select-choices__choice--is-selected { - background-color: #EEEEEE; } +.switch--green .switch__input:checked + .switch__label:before { + background-color: rgba(76, 175, 80, 0.5); } -.lx-select-choices--is-multiple.lx-select-choices--default-style .lx-select-choices__choice:before { - display: inline-block; - font: normal normal normal 24px/1 "Material Design Icons"; - font-size: inherit; - text-rendering: auto; - line-height: inherit; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - height: 24px; - width: 24px; - content: "\F131"; - margin-right: 16px; - font-size: 18px; - font-size: 1.125rem; - color: rgba(0, 0, 0, 0.54); - line-height: 24px; - text-align: center; } +.switch--green .switch__input:checked + .switch__label:after { + background-color: #4CAF50; } -.lx-select-choices--is-multiple.lx-select-choices--default-style .lx-select-choices__choice.lx-select-choices__choice--is-disabled { - cursor: not-allowed; - color: rgba(0, 0, 0, 0.38); } - .lx-select-choices--is-multiple.lx-select-choices--default-style .lx-select-choices__choice.lx-select-choices__choice--is-disabled:before { - color: rgba(0, 0, 0, 0.38); } +.switch--light-green .switch__input:checked + .switch__label:before { + background-color: rgba(139, 195, 74, 0.5); } -.lx-select-choices--is-multiple.lx-select-choices--default-style .lx-select-choices__choice.lx-select-choices__choice--is-selected:before { - content: "\F12C"; } +.switch--light-green .switch__input:checked + .switch__label:after { + background-color: #8BC34A; } -.lx-select-choices--is-multiple.lx-select-choices--default-style .lx-select-choices__choice.lx-select-choices__choice--is-focus { - background-color: #EEEEEE; } +.switch--lime .switch__input:checked + .switch__label:before { + background-color: rgba(205, 220, 57, 0.5); } -.lx-select-choices--default-style .lx-select-choices__subheader { - color: rgba(0, 0, 0, 0.38); } - .lx-select-choices--default-style .lx-select-choices__subheader .mdi { - color: rgba(0, 0, 0, 0.38); } +.switch--lime .switch__input:checked + .switch__label:after { + background-color: #CDDC39; } -.lx-select-choices--multi-panes { - width: auto !important; - overflow: hidden !important; } - .lx-select-choices--multi-panes .dropdown-menu__content { - padding: 0; } +.switch--yellow .switch__input:checked + .switch__label:before { + background-color: rgba(255, 235, 59, 0.5); } -.lx-select-choices__panes-container { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - height: 100%; } +.switch--yellow .switch__input:checked + .switch__label:after { + background-color: #FFEB3B; } -.lx-select-choices__panes-wrapper { - height: 100%; } +.switch--amber .switch__input:checked + .switch__label:before { + background-color: rgba(255, 193, 7, 0.5); } -.lx-select-choices__pane { - position: relative; - overflow: auto; } - .lx-select-choices__pane-choice { - display: -moz-flex; - display: flex; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; - align-items: center; - -ms-flex-align: center; - min-width: 120px; - margin: 8px 0 8px 12px; - padding: 12px; - color: #FFFFFF; - cursor: pointer; } - .lx-select-choices__pane-choice i { - font-size: 40px; - font-size: 2.5rem; - line-height: 40px; - margin-right: 8px; } - .lx-select-choices__pane-choice span:not(.lx-select-choices__pane-choice--highlight) { - box-flex: 1; - -moz-flex: 1; - flex: 1; } - .lx-select-choices__pane-choice--highlight { - font-weight: bold; - text-decoration: underline; - -webkit-text-decoration-skip: ink; - text-decoration-skip-ink: auto; } - @media (min-width: 61.25em) { - .lx-select-choices__pane-choice:hover { - background-color: #FFFFFF; - color: #000000; } } - @media (max-width: 61.24em) { - .lx-select-choices__pane-choice { - position: relative; - padding: 12px; } - .lx-select-choices__pane-choice:not(.lx-select-choices__pane-choice--is-leaf):after { - justify-self: flex-end; - display: inline-block; - font: normal normal normal 24px/1 "Material Design Icons"; - font-size: inherit; - text-rendering: auto; - line-height: inherit; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: "\F140"; - font-size: 20px; - font-size: 1.25rem; - margin-left: auto; - padding-left: 8px; } - .lx-select-choices__pane-choice:not(.lx-select-choices__pane-choice--is-leaf).lx-select-choices__pane-choice--is-selected:after { - content: "\F143"; } } - .lx-select-choices__pane.lx-select-choices__pane--first .lx-select-choices__pane-choice { - margin: 0; } - .lx-select-choices__pane.lx-select-choices__pane--is-filtering .lx-select-choices__pane-choice { - opacity: 0.3; } - .lx-select-choices__pane.lx-select-choices__pane--is-filtering .lx-select-choices__pane-choice--is-matching { - opacity: 1; } - .lx-select-choices__pane-3 .lx-select-choices__pane-choice { - color: #000000; } - .lx-select-choices__pane-4 .lx-select-choices__pane-choice { - color: #000000; } - .lx-select-choices__pane-5 .lx-select-choices__pane-choice { - color: #000000; } - -.lx-select--panes.lx-select--with-filter .lx-select-selected-wrapper.lx-select-selected-wrapper--with-filter { - display: -moz-flex; - display: flex; - min-height: 40px !important; } - .lx-select--panes.lx-select--with-filter .lx-select-selected-wrapper.lx-select-selected-wrapper--with-filter .lx-select-selected__value { - margin-right: 8px; - line-height: 40px !important; } - .lx-select--panes.lx-select--with-filter .lx-select-selected-wrapper.lx-select-selected-wrapper--with-filter .lx-select-selected__tag:last-child { - margin-right: 8px; } - .lx-select--panes.lx-select--with-filter .lx-select-selected-wrapper.lx-select-selected-wrapper--with-filter .lx-select-selected__filter { - display: block; - box-flex: 1; - -moz-flex: 1; - flex: 1; - margin-top: 8px; - margin-bottom: 4px; - margin-right: 8px; - min-height: 40px !important; - line-height: 40px !important; } +.switch--amber .switch__input:checked + .switch__label:after { + background-color: #FFC107; } -.lx-select--panes.lx-select--with-filter:not(.lx-select--is-active) .lx-select-label { - line-height: 40px !important; } +.switch--orange .switch__input:checked + .switch__label:before { + background-color: rgba(255, 152, 0, 0.5); } -.lx-stepper.lx-stepper--layout-vertical { - padding: 24px 0; } +.switch--orange .switch__input:checked + .switch__label:after { + background-color: #FF9800; } -.lx-stepper__header { - position: relative; - height: 72px; - overflow: hidden; - box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); } +.switch--deep-orange .switch__input:checked + .switch__label:before { + background-color: rgba(255, 87, 34, 0.5); } -.lx-stepper__nav { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 2; - display: -moz-flex; - display: flex; - box-pack: justify; - -moz-justify-content: space-between; - -ms-justify-content: space-between; - -o-justify-content: space-between; - justify-content: space-between; - -ms-flex-pack: justify; } - .lx-stepper__nav:before { - content: ''; - position: absolute; - top: 50%; - right: 0; - left: 0; - height: 1px; - background-color: rgba(0, 0, 0, 0.12); } - .lx-stepper--step-has-feedback .lx-stepper__nav { - transition-property: opacity; - transition-duration: 0.6s; - transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1); } - .lx-stepper--step-has-feedback.lx-stepper--step-is-loading .lx-stepper__nav { - opacity: 0; } +.switch--deep-orange .switch__input:checked + .switch__label:after { + background-color: #FF5722; } -.lx-stepper__feedback { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - display: -moz-flex; - display: flex; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; - align-items: center; - -ms-flex-align: center; - padding: 0 24px; - opacity: 0; - font-size: 14px; - font-size: 0.875rem; - transform: translateY(20px); - transition-property: opacity, transform; - transition-duration: 0.6s; - transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1); } - .lx-stepper--step-is-loading .lx-stepper__feedback { - opacity: 1; - transform: translateY(0); } - -.lx-step-nav { - display: -moz-flex; - display: flex; - cursor: pointer; } - .lx-step-nav .ripple { - background-color: rgba(0, 0, 0, 0.54); } - .lx-stepper--layout-horizontal .lx-step-nav { - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; - align-items: center; - -ms-flex-align: center; - position: relative; - height: 72px; - padding: 0 8px; - background-color: #FFFFFF; } - .lx-stepper--layout-horizontal .lx-step-nav:first-child { - padding-left: 24px; } - .lx-stepper--layout-horizontal .lx-step-nav:last-child { - padding-right: 24px; } - .lx-stepper--layout-vertical .lx-step-nav { - padding: 8px 24px; } +.switch--brown .switch__input:checked + .switch__label:before { + background-color: rgba(121, 85, 72, 0.5); } -.lx-step-nav__indicator { - display: -moz-flex; - display: flex; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; - align-items: center; - -ms-flex-align: center; - box-pack: center; - -moz-justify-content: center; - -ms-justify-content: center; - -o-justify-content: center; - justify-content: center; - -ms-flex-pack: center; - height: 24px; - width: 24px; } - .lx-stepper--layout-horizontal .lx-step-nav__indicator { - margin-right: 8px; } - .lx-stepper--layout-vertical .lx-step-nav__indicator { - margin-right: 12px; } - .lx-step-nav__indicator.lx-step-nav__indicator--index, .lx-step-nav__indicator.lx-step-nav__indicator--icon { - border-radius: 50%; - background-color: rgba(0, 0, 0, 0.38); - color: #FFFFFF; } - .lx-step-nav--is-active .lx-step-nav__indicator.lx-step-nav__indicator--index, - .lx-step-nav--is-active .lx-step-nav__indicator.lx-step-nav__indicator--icon, - .lx-step-nav--is-valid .lx-step-nav__indicator.lx-step-nav__indicator--index, - .lx-step-nav--is-valid .lx-step-nav__indicator.lx-step-nav__indicator--icon { - background-color: #3F51B5; } - .lx-step-nav__indicator.lx-step-nav__indicator--index { - font-size: 11px; - font-size: 0.6875rem; } - .lx-step-nav__indicator.lx-step-nav__indicator--icon { - font-size: 14px; - font-size: 0.875rem; } - .lx-step-nav__indicator.lx-step-nav__indicator--error { - font-size: 24px; - font-size: 1.5rem; - color: #F44336; } +.switch--brown .switch__input:checked + .switch__label:after { + background-color: #795548; } -.lx-step-nav__label { - font-size: 14px; - font-size: 0.875rem; - font-weight: 500; - color: rgba(0, 0, 0, 0.54); - line-height: 24px; } - .lx-step-nav--is-active .lx-step-nav__label, - .lx-step-nav--is-valid .lx-step-nav__label { - color: rgba(0, 0, 0, 0.87); } - .lx-step-nav--has-error .lx-step-nav__label { - color: #F44336; } +.switch--grey .switch__input:checked + .switch__label:before { + background-color: rgba(158, 158, 158, 0.5); } -.lx-step-nav__state { - font-size: 12px; - font-size: 0.75rem; - color: rgba(0, 0, 0, 0.38); } - .lx-step-nav--has-error .lx-step-nav__state { - color: #F44336; } +.switch--grey .switch__input:checked + .switch__label:after { + background-color: #9E9E9E; } -.lx-stepper--layout-vertical .lx-step { - position: relative; - padding-bottom: 16px; } - .lx-stepper--layout-vertical .lx-step.lx-step--is-active { - padding-bottom: 48px; } - .lx-stepper--layout-vertical .lx-step:last-child { - padding-bottom: 0; } - .lx-stepper--layout-vertical .lx-step:before { - content: ''; - position: absolute; - top: 40px; - bottom: 0; - left: 36px; - width: 1px; - background-color: rgba(0, 0, 0, 0.12); } +.switch--blue-grey .switch__input:checked + .switch__label:before { + background-color: rgba(96, 125, 139, 0.5); } -.lx-step__nav { - margin-bottom: 8px; } - .lx-step:not(.lx-step--is-active):last-child .lx-step__nav { - margin-bottom: 0; } +.switch--blue-grey .switch__input:checked + .switch__label:after { + background-color: #607D8B; } -.lx-stepper--layout-horizontal .lx-step__wrapper { - padding: 24px; } +.switch--black .switch__input:checked + .switch__label:before { + background-color: rgba(0, 0, 0, 0.5); } -.lx-stepper--layout-vertical .lx-step__wrapper { - padding: 0 24px 0 60px; } +.switch--black .switch__input:checked + .switch__label:after { + background-color: #000000; } -.lx-step__content { - position: relative; } +.switch--white .switch__input:checked + .switch__label:before { + background-color: rgba(255, 255, 255, 0.5); } -.lx-step__progress { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: -moz-flex; - display: flex; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; - align-items: center; - -ms-flex-align: center; - box-pack: center; - -moz-justify-content: center; - -ms-justify-content: center; - -o-justify-content: center; - justify-content: center; - -ms-flex-pack: center; - background-color: rgba(255, 255, 255, 0.7); } +.switch--white .switch__input:checked + .switch__label:after { + background-color: #FFFFFF; } -.lx-step__actions { - display: -moz-flex; - display: flex; - margin-top: 24px; } - .lx-stepper--layout-horizontal .lx-step__actions { - box-orient: horizontal; - box-direction: reverse; - -moz-flex-direction: row-reverse; - flex-direction: row-reverse; } +.switch--primary .switch__input:checked + .switch__label:before { + background-color: rgba(63, 81, 181, 0.5); } -.lx-stepper--layout-horizontal .lx-step__action.lx-step__action--cancel { - margin-right: 8px; } +.switch--primary .switch__input:checked + .switch__label:after { + background-color: #3F51B5; } -.lx-stepper--layout-vertical .lx-step__action.lx-step__action--cancel { - margin-left: 8px; } +.switch--primary-hue-1 .switch__input:checked + .switch__label:before { + background-color: rgba(197, 202, 233, 0.5); } -.lx-stepper--layout-horizontal .lx-step__action.lx-step__action--back { - box-flex: 1; - -moz-flex: 1; - flex: 1; } +.switch--primary-hue-1 .switch__input:checked + .switch__label:after { + background-color: #C5CAE9; } -.lx-stepper--layout-vertical .lx-step__action.lx-step__action--back { - box-flex: 1; - -moz-flex: 1; - flex: 1; - text-align: right; } +.switch--primary-hue-2 .switch__input:checked + .switch__label:before { + background-color: rgba(48, 63, 159, 0.5); } -/*------------------------------------*\ - #OBJECTS-SWITCH -\*------------------------------------*/ -.switch { - min-width: 35px; - min-height: 24px; } +.switch--primary-hue-2 .switch__input:checked + .switch__label:after { + background-color: #303F9F; } -.switch--red .switch__input:checked + .switch__label:before { - background-color: rgba(244, 67, 54, 0.5); } +.switch--accent .switch__input:checked + .switch__label:before { + background-color: rgba(255, 64, 129, 0.5); } -.switch--red .switch__input:checked + .switch__label:after { - background-color: #F44336; } +.switch--accent .switch__input:checked + .switch__label:after { + background-color: #FF4081; } -.switch--pink .switch__input:checked + .switch__label:before { - background-color: rgba(233, 30, 99, 0.5); } +.switch--accent-hue-1 .switch__input:checked + .switch__label:before { + background-color: rgba(255, 128, 171, 0.5); } -.switch--pink .switch__input:checked + .switch__label:after { - background-color: #E91E63; } +.switch--accent-hue-1 .switch__input:checked + .switch__label:after { + background-color: #FF80AB; } -.switch--purple .switch__input:checked + .switch__label:before { - background-color: rgba(156, 39, 176, 0.5); } +.switch--accent-hue-2 .switch__input:checked + .switch__label:before { + background-color: rgba(245, 0, 87, 0.5); } -.switch--purple .switch__input:checked + .switch__label:after { - background-color: #9C27B0; } +.switch--accent-hue-2 .switch__input:checked + .switch__label:after { + background-color: #F50057; } -.switch--deep-purple .switch__input:checked + .switch__label:before { - background-color: rgba(103, 58, 183, 0.5); } - -.switch--deep-purple .switch__input:checked + .switch__label:after { - background-color: #673AB7; } - -.switch--indigo .switch__input:checked + .switch__label:before { - background-color: rgba(63, 81, 181, 0.5); } - -.switch--indigo .switch__input:checked + .switch__label:after { - background-color: #3F51B5; } - -.switch--blue .switch__input:checked + .switch__label:before { - background-color: rgba(33, 150, 243, 0.5); } - -.switch--blue .switch__input:checked + .switch__label:after { - background-color: #2196F3; } - -.switch--light-blue .switch__input:checked + .switch__label:before { - background-color: rgba(3, 169, 244, 0.5); } - -.switch--light-blue .switch__input:checked + .switch__label:after { - background-color: #03A9F4; } - -.switch--cyan .switch__input:checked + .switch__label:before { - background-color: rgba(0, 188, 212, 0.5); } - -.switch--cyan .switch__input:checked + .switch__label:after { - background-color: #00BCD4; } - -.switch--teal .switch__input:checked + .switch__label:before { - background-color: rgba(0, 150, 136, 0.5); } - -.switch--teal .switch__input:checked + .switch__label:after { - background-color: #009688; } - -.switch--green .switch__input:checked + .switch__label:before { - background-color: rgba(76, 175, 80, 0.5); } - -.switch--green .switch__input:checked + .switch__label:after { - background-color: #4CAF50; } - -.switch--light-green .switch__input:checked + .switch__label:before { - background-color: rgba(139, 195, 74, 0.5); } - -.switch--light-green .switch__input:checked + .switch__label:after { - background-color: #8BC34A; } - -.switch--lime .switch__input:checked + .switch__label:before { - background-color: rgba(205, 220, 57, 0.5); } - -.switch--lime .switch__input:checked + .switch__label:after { - background-color: #CDDC39; } - -.switch--yellow .switch__input:checked + .switch__label:before { - background-color: rgba(255, 235, 59, 0.5); } - -.switch--yellow .switch__input:checked + .switch__label:after { - background-color: #FFEB3B; } - -.switch--amber .switch__input:checked + .switch__label:before { - background-color: rgba(255, 193, 7, 0.5); } - -.switch--amber .switch__input:checked + .switch__label:after { - background-color: #FFC107; } - -.switch--orange .switch__input:checked + .switch__label:before { - background-color: rgba(255, 152, 0, 0.5); } - -.switch--orange .switch__input:checked + .switch__label:after { - background-color: #FF9800; } - -.switch--deep-orange .switch__input:checked + .switch__label:before { - background-color: rgba(255, 87, 34, 0.5); } - -.switch--deep-orange .switch__input:checked + .switch__label:after { - background-color: #FF5722; } - -.switch--brown .switch__input:checked + .switch__label:before { - background-color: rgba(121, 85, 72, 0.5); } - -.switch--brown .switch__input:checked + .switch__label:after { - background-color: #795548; } - -.switch--grey .switch__input:checked + .switch__label:before { - background-color: rgba(158, 158, 158, 0.5); } - -.switch--grey .switch__input:checked + .switch__label:after { - background-color: #9E9E9E; } - -.switch--blue-grey .switch__input:checked + .switch__label:before { - background-color: rgba(96, 125, 139, 0.5); } - -.switch--blue-grey .switch__input:checked + .switch__label:after { - background-color: #607D8B; } - -.switch--black .switch__input:checked + .switch__label:before { - background-color: rgba(0, 0, 0, 0.5); } - -.switch--black .switch__input:checked + .switch__label:after { - background-color: #000000; } - -.switch--white .switch__input:checked + .switch__label:before { - background-color: rgba(255, 255, 255, 0.5); } - -.switch--white .switch__input:checked + .switch__label:after { - background-color: #FFFFFF; } - -.switch--primary .switch__input:checked + .switch__label:before { - background-color: rgba(63, 81, 181, 0.5); } - -.switch--primary .switch__input:checked + .switch__label:after { - background-color: #3F51B5; } - -.switch--primary-hue-1 .switch__input:checked + .switch__label:before { - background-color: rgba(197, 202, 233, 0.5); } - -.switch--primary-hue-1 .switch__input:checked + .switch__label:after { - background-color: #C5CAE9; } - -.switch--primary-hue-2 .switch__input:checked + .switch__label:before { - background-color: rgba(48, 63, 159, 0.5); } - -.switch--primary-hue-2 .switch__input:checked + .switch__label:after { - background-color: #303F9F; } - -.switch--accent .switch__input:checked + .switch__label:before { - background-color: rgba(255, 64, 129, 0.5); } - -.switch--accent .switch__input:checked + .switch__label:after { - background-color: #FF4081; } - -.switch--accent-hue-1 .switch__input:checked + .switch__label:before { - background-color: rgba(255, 128, 171, 0.5); } - -.switch--accent-hue-1 .switch__input:checked + .switch__label:after { - background-color: #FF80AB; } - -.switch--accent-hue-2 .switch__input:checked + .switch__label:before { - background-color: rgba(245, 0, 87, 0.5); } - -.switch--accent-hue-2 .switch__input:checked + .switch__label:after { - background-color: #F50057; } - -.switch__input { - border: 0 !important; - clip: rect(0 0 0 0) !important; - height: 1px !important; - margin: -1px !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - width: 1px !important; } - .switch__input:not(:checked) + .switch__label:before { - background-color: rgba(0, 0, 0, 0.38); } - .switch__input:not(:checked) + .switch__label:after { - background-color: #FAFAFA; } - .switch__input:checked + .switch__label:before { - background-color: rgba(255, 64, 129, 0.5); } - .switch__input:checked + .switch__label:after { - background-color: #FF4081; } - .switch--left .switch__input:checked + .switch__label:after { - transform: translateX(15px); } - .switch--right .switch__input:checked + .switch__label:after { - transform: translateX(0); } - .switch__input[disabled] + .switch__label { - cursor: not-allowed; - color: rgba(0, 0, 0, 0.38); } - .switch__input[disabled] + .switch__label:before { - background-color: rgba(0, 0, 0, 0.12); } - .switch__input[disabled] + .switch__label:after { - background-color: #BDBDBD; } - .switch__input[disabled] ~ .switch__help { - color: rgba(0, 0, 0, 0.38); } +.switch__input { + border: 0 !important; + clip: rect(0 0 0 0) !important; + height: 1px !important; + margin: -1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; } + .switch__input:not(:checked) + .switch__label:before { + background-color: rgba(0, 0, 0, 0.38); } + .switch__input:not(:checked) + .switch__label:after { + background-color: #FAFAFA; } + .switch__input:checked + .switch__label:before { + background-color: rgba(255, 64, 129, 0.5); } + .switch__input:checked + .switch__label:after { + background-color: #FF4081; } + .switch--left .switch__input:checked + .switch__label:after { + transform: translateX(15px); } + .switch--right .switch__input:checked + .switch__label:after { + transform: translateX(0); } + .switch__input[disabled] + .switch__label { + cursor: not-allowed; + color: rgba(0, 0, 0, 0.38); } + .switch__input[disabled] + .switch__label:before { + background-color: rgba(0, 0, 0, 0.12); } + .switch__input[disabled] + .switch__label:after { + background-color: #BDBDBD; } + .switch__input[disabled] ~ .switch__help { + color: rgba(0, 0, 0, 0.38); } .switch__label { display: block; @@ -33128,25 +32553,25 @@ table { .bgc-grey-50 { background-color: #FAFAFA !important; } -.bgc-grey-100, .lx-select-choices__pane-5 .lx-select-choices__pane-choice--is-selected { +.bgc-grey-100 { background-color: #F5F5F5 !important; } -.bgc-grey-200, .lx-select-choices__pane-4 .lx-select-choices__pane-choice--is-selected, .lx-select-choices__pane-5 { +.bgc-grey-200 { background-color: #EEEEEE !important; } -.bgc-grey-300, .lx-select-choices__pane-3 .lx-select-choices__pane-choice--is-selected, .lx-select-choices__pane-4 { +.bgc-grey-300 { background-color: #E0E0E0 !important; } -.bgc-grey-400, .lx-select-choices__pane-2 .lx-select-choices__pane-choice--is-selected, .lx-select-choices__pane-3 { +.bgc-grey-400 { background-color: #BDBDBD !important; } -.bgc-grey-500, .lx-select-choices__pane-1 .lx-select-choices__pane-choice--is-selected, .lx-select-choices__pane-2 { +.bgc-grey-500 { background-color: #9E9E9E !important; } -.bgc-grey-600, .lx-select-choices__pane-0 .lx-select-choices__pane-choice--is-selected, .lx-select-choices__pane-1 { +.bgc-grey-600 { background-color: #757575 !important; } -.bgc-grey-700, .lx-select-choices__panes-wrapper, .lx-select-choices__pane-0 { +.bgc-grey-700 { background-color: #616161 !important; } .bgc-grey-800 { @@ -35761,35 +35186,41 @@ table { padding: 8px; border-top: 1px solid rgba(0, 0, 0, 0.12); } +/* ========================================================================== + Chip + ========================================================================== */ .chip { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; + display: inline-flex; align-items: center; - -ms-flex-align: center; + padding: 0; + margin: 0; + border: none; + outline: none; + text-decoration: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: top; height: 32px; - padding: 0 12px; border-radius: 16px; - background-color: #E0E0E0; } - -.chip--is-contact { - padding-left: 0; - padding-left: 0; } + background-color: rgba(0, 0, 0, 0.12); + color: rgba(0, 0, 0, 0.87); + padding: 0 12px; } + .chip__label { + flex: 1; + white-space: nowrap; + font-size: 14px; + font-weight: 400; + line-height: 20px; } +/* Chip deletable + ========================================================================== */ .chip--is-deletable { - padding-right: 4px; + transition-duration: 150ms; + transition-property: background-color, box-shadow, color; cursor: pointer; } .chip--is-deletable:after { - height: 24px; - width: 24px; - margin-left: 4px; display: inline-block; font: normal normal normal 24px/1 "Material Design Icons"; font-size: inherit; @@ -35797,41 +35228,35 @@ table { line-height: inherit; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - content: "\F159"; - font-size: 19px; - font-size: 1.1875rem; - color: rgba(0, 0, 0, 0.38); - line-height: 24px; - text-align: center; } + content: "\F156"; + font-size: 20px; + flex-shrink: 0; + margin-left: 8px; } .chip--is-deletable:hover { - background-color: #757575; } - .chip--is-deletable:hover:after { - color: #FFFFFF; } + background-color: rgba(0, 0, 0, 0.2); } + .chip--is-deletable:active { + background-color: rgba(0, 0, 0, 0.38); } + .chip--is-deletable[data-focus-visible-added] { + box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.38); } + +/* Chip contact + ========================================================================== */ +.chip--is-contact { + padding-left: 6px; } .chip__contact { - height: 32px; - width: 32px; + flex-shrink: 0; margin-right: 8px; - border-radius: 50%; + overflow: hidden; + width: 24px; + height: 24px; background-position: center; background-repeat: no-repeat; background-size: cover; - overflow: hidden; } + border-radius: 50%; } .chip__contact img { - height: 32px; - width: 32px; } - -.chip__label { - box-flex: 1; - -moz-flex: 1; - flex: 1; - font-size: 13px; - font-size: 0.8125rem; - line-height: 32px; - color: rgba(0, 0, 0, 0.87); } - -.chip--is-deletable:hover .chip__label { - color: #FFFFFF; } + width: 24px; + height: 24px; } .data-table-container { position: relative; @@ -36664,96 +36089,60 @@ table { .dialog__footer .btn:first-child { margin-left: 0; } -.dropdown--has-toggle { - position: relative; - display: inline-block; - vertical-align: top; } - -.dropdown-toggle { - position: relative; } - -.dropdown-menu { - position: fixed; - border-radius: 2px; - background-color: #FFFFFF; - text-align: left; - opacity: 0; - overflow: auto; - box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12); } - .dropdown-menu ul { - margin: 0; - padding: 0; - list-style: none; } - .dropdown-menu ul > li { - position: relative; } - -.dropdown-menu__content { - padding: 8px 0; - opacity: 0; - height: 100%; - transition-property: opacity; - transition-duration: 0.2s; } - .dropdown-menu--is-open .dropdown-menu__content { - opacity: 1; } +/* ========================================================================== + Dropdown + ========================================================================== */ +.dropdown-menu ul { + padding: 0; + margin: 0; + list-style: none; + outline: none; } .dropdown-divider { height: 1px; - margin-top: 8px; - margin-bottom: 8px; + margin: 8px 0; background-color: rgba(0, 0, 0, 0.12); } .dropdown-link { - display: -moz-flex; display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; - align-items: center; - -ms-flex-align: center; - cursor: pointer; + padding-right: 16px; + padding-left: 16px; color: rgba(0, 0, 0, 0.87); + outline: none; text-decoration: none; - white-space: nowrap; } - @media (max-width: 61.24em) { - .dropdown-link { - height: 48px; - padding: 0 16px; - font-size: 16px; - font-size: 1rem; - line-height: 48px; } } - @media (min-width: 61.25em) { - .dropdown-link { - height: 32px; - padding: 0 24px; - font-size: 14px; - font-size: 0.875rem; - line-height: 32px; } } - .dropdown-link .mdi { - height: 24px; + height: 36px; + align-items: center; + transition-duration: 150ms; + transition-property: background-color, box-shadow, color; + cursor: pointer; + font-size: 14px; + font-weight: 400; + line-height: 20px; + flex: 1; } + .dropdown-link:hover, .dropdown-link[data-focus-visible-added] { + background-color: rgba(0, 0, 0, 0.12); } + .dropdown-link:active { + background-color: rgba(0, 0, 0, 0.2); } + .dropdown-link i { + font-size: 20px; + color: #9e9e9e; + display: flex; + flex-shrink: 0; + justify-content: center; width: 24px; - margin-right: 16px; - line-height: 24px; - color: rgba(0, 0, 0, 0.54); - text-align: center; } - @media (max-width: 61.24em) { - .dropdown-link .mdi { - font-size: 24px; - font-size: 1.5rem; } } - @media (min-width: 61.25em) { - .dropdown-link .mdi { - font-size: 18px; - font-size: 1.125rem; } } - .dropdown-link:not(.dropdown-link--is-header):hover { - background-color: #EEEEEE; } + margin-right: 8px; } .dropdown-link--is-header { + font-size: 10px; + font-weight: 500; + line-height: 12px; + text-transform: uppercase; + display: flex; + height: 36px; + align-items: center; + padding: 0 16px; color: rgba(0, 0, 0, 0.38); - cursor: default; } + pointer-events: none; } .fab { display: inline-block; @@ -37267,99 +36656,92 @@ table { .icon--circled { border-radius: 50%; } +/* ========================================================================== + List + ========================================================================== */ .list { - margin: 0; padding: 0; - list-style: none; } - -.list-row { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - position: relative; - padding: 0 16px; } - .list-row.list-row--multi-line .list-row__primary, - .list-row.list-row--multi-line .list-row__secondary { - padding: 16px 0; } - .list-row:not(.list-row--multi-line) .list-row__primary, - .list-row:not(.list-row--multi-line) .list-row__content, - .list-row:not(.list-row--multi-line) .list-row__secondary { - box-pack: center; - -moz-justify-content: center; - -ms-justify-content: center; - -o-justify-content: center; - justify-content: center; - -ms-flex-pack: center; } - .list-row:not(.list-row--multi-line) .list-row__primary, - .list-row:not(.list-row--multi-line) .list-row__secondary { - padding: 8px 0; } - -.list-row--has-separator .list-row__content:after { - content: ''; - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 1px; - background-color: rgba(0, 0, 0, 0.12); } + margin: 0; + list-style: none; + outline: none; } -.list-row--has-separator:last-child .list-row__content:after { - display: none; } +/* List row + ========================================================================== */ +.list-row--has-separator { + position: relative; } + .list-row--has-separator::after { + position: absolute; + right: 16px; + bottom: 0; + left: 16px; + height: 1px; + background-color: rgba(0, 0, 0, 0.12); + content: ''; } + .list-row--has-separator:last-child::after { + display: none; } -.list-row--is-clickable { - cursor: pointer; } +.list-row__primary { + display: flex; + flex-shrink: 0; + justify-content: center; + width: 36px; + margin-right: 16px; } -.list-row--is-clickable:hover, -.list-row--is-active { - background-color: #F5F5F5; } +.list-row__content { + font-size: 14px; + font-weight: 400; + line-height: 20px; + flex: 1; } -.list-row__primary, -.list-row__content, .list-row__secondary { - display: -moz-flex; display: flex; - box-orient: vertical; - box-direction: normal; - -moz-flex-direction: column; - flex-direction: column; } - -.list-row__primary { - width: 56px; } + flex-shrink: 0; + justify-content: center; + margin-left: 16px; } -.list-row__content { - position: relative; - box-flex: 1; - -moz-flex: 1; - flex: 1; - padding: 12px 0; } +.list-row:not(.list-row--multi-line) { + display: flex; + padding-right: 16px; + padding-left: 16px; + color: rgba(0, 0, 0, 0.87); + outline: none; + text-decoration: none; + height: 72px; + align-items: center; + height: auto; + padding-top: 16px; + padding-bottom: 16px; } -.list-row__secondary { - box-align: end; - -moz-align-items: flex-end; - -ms-align-items: flex-end; - -o-align-items: flex-end; - align-items: flex-end; - -ms-flex-align: end; - width: 40px; } +.list-row.list-row--multi-line { + display: flex; + padding-right: 16px; + padding-left: 16px; + color: rgba(0, 0, 0, 0.87); + outline: none; + text-decoration: none; + align-items: flex-start; + padding-top: 16px; + padding-bottom: 16px; } +/* List divider + ========================================================================== */ .list-divider { height: 1px; - margin-top: 8px; - margin-bottom: 8px; + margin: 8px 0; background-color: rgba(0, 0, 0, 0.12); } -.list-divider--is-pushed { - margin-left: 72px; } - +/* List subheader + ========================================================================== */ .list-subheader { - padding: 12px 16px; - color: rgba(0, 0, 0, 0.54); } - -.list-subheader--is-pushed { - margin-left: 56px; } + font-size: 10px; + font-weight: 500; + line-height: 12px; + text-transform: uppercase; + display: flex; + height: 36px; + align-items: center; + padding: 0 16px; + color: rgba(0, 0, 0, 0.38); } .notification { position: fixed; @@ -37774,626 +37156,238 @@ table { .progress-container--linear.progress-container--accent-hue-1 .progress-linear__bar { background-color: #FF80AB; } -.progress-container--circular.progress-container--accent-hue-2 .progress-circular__path { - stroke: #F50057; } - -.progress-container--linear.progress-container--accent-hue-2 .progress-linear__background, -.progress-container--linear.progress-container--accent-hue-2 .progress-linear__bar { - background-color: #F50057; } - -.progress-circular { - position: relative; - width: 100px; - margin: 0px auto; } - .progress-circular:before { - content: ''; - display: block; - padding-top: 100%; } - -.progress-circular__svg { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - height: 100%; - width: 100%; - margin: auto; } - -.progress-container--determinate .progress-circular__g { - transform: rotate(-90deg); } - -.progress-container--indeterminate .progress-circular__g { - -webkit-animation: lx-progress-circular-rotate 2s linear infinite; - animation: lx-progress-circular-rotate 2s linear infinite; } - -.progress-circular__path { - stroke-dashoffset: 0; } - .progress-container--determinate .progress-circular__path { - transition-property: stroke-dasharray; - transition-duration: 0.2s; } - .progress-container--indeterminate .progress-circular__path { - stroke-dasharray: 1,200; - -webkit-animation: lx-progress-circular-dash 1.5s ease-in-out infinite; - animation: lx-progress-circular-dash 1.5s ease-in-out infinite; } - -.progress-linear { - position: relative; - height: 4px; - overflow: hidden; } - -.progress-linear__background { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - opacity: 0.4; } - -.progress-container--indeterminate .progress-linear__bar { - transform: scale(1) translateX(50%); } - -.progress-container--determinate .progress-linear__bar--first { - height: 4px; - width: 100%; - position: absolute; - top: 0; - left: 0; - transition-property: transform; - transition-duration: 0.2s; - transform-origin: 0 center; } - -.progress-container--indeterminate .progress-linear__bar--first { - height: 24px; - width: 100%; - position: absolute; - top: -12px; - -webkit-animation: lx-progress-linear-bar1 2s linear infinite; - animation: lx-progress-linear-bar1 2s linear infinite; } - -.progress-linear__bar--second { - position: absolute; - top: -48px; - height: 96px; - width: 100%; - -webkit-animation: lx-progress-linear-bar2 2s linear infinite; - animation: lx-progress-linear-bar2 2s linear infinite; } - .progress-container--determinate .progress-linear__bar--second { - display: none; } - -.radio-group .radio-button { - margin-bottom: 8px; } - .radio-group .radio-button:last-child { - margin-bottom: 0; } - -.radio-button { - min-width: 24px; - min-height: 24px; } - -.radio-button--red .radio-button__input:checked + .radio-button__label:before { - color: #F44336; } - -.radio-button--pink .radio-button__input:checked + .radio-button__label:before { - color: #E91E63; } - -.radio-button--purple .radio-button__input:checked + .radio-button__label:before { - color: #9C27B0; } - -.radio-button--deep-purple .radio-button__input:checked + .radio-button__label:before { - color: #673AB7; } - -.radio-button--indigo .radio-button__input:checked + .radio-button__label:before { - color: #3F51B5; } - -.radio-button--blue .radio-button__input:checked + .radio-button__label:before { - color: #2196F3; } - -.radio-button--light-blue .radio-button__input:checked + .radio-button__label:before { - color: #03A9F4; } - -.radio-button--cyan .radio-button__input:checked + .radio-button__label:before { - color: #00BCD4; } - -.radio-button--teal .radio-button__input:checked + .radio-button__label:before { - color: #009688; } - -.radio-button--green .radio-button__input:checked + .radio-button__label:before { - color: #4CAF50; } - -.radio-button--light-green .radio-button__input:checked + .radio-button__label:before { - color: #8BC34A; } - -.radio-button--lime .radio-button__input:checked + .radio-button__label:before { - color: #CDDC39; } - -.radio-button--yellow .radio-button__input:checked + .radio-button__label:before { - color: #FFEB3B; } - -.radio-button--amber .radio-button__input:checked + .radio-button__label:before { - color: #FFC107; } - -.radio-button--orange .radio-button__input:checked + .radio-button__label:before { - color: #FF9800; } - -.radio-button--deep-orange .radio-button__input:checked + .radio-button__label:before { - color: #FF5722; } - -.radio-button--brown .radio-button__input:checked + .radio-button__label:before { - color: #795548; } - -.radio-button--grey .radio-button__input:checked + .radio-button__label:before { - color: #9E9E9E; } - -.radio-button--blue-grey .radio-button__input:checked + .radio-button__label:before { - color: #607D8B; } - -.radio-button--black .radio-button__input:checked + .radio-button__label:before { - color: #000000; } - -.radio-button--white .radio-button__input:checked + .radio-button__label:before { - color: #FFFFFF; } - -.radio-button--primary .radio-button__input:checked + .radio-button__label:before { - color: #3F51B5; } - -.radio-button--primary-hue-1 .radio-button__input:checked + .radio-button__label:before { - color: #C5CAE9; } - -.radio-button--primary-hue-2 .radio-button__input:checked + .radio-button__label:before { - color: #303F9F; } - -.radio-button--accent .radio-button__input:checked + .radio-button__label:before { - color: #FF4081; } - -.radio-button--accent-hue-1 .radio-button__input:checked + .radio-button__label:before { - color: #FF80AB; } - -.radio-button--accent-hue-2 .radio-button__input:checked + .radio-button__label:before { - color: #F50057; } - -.radio-button__input { - border: 0 !important; - clip: rect(0 0 0 0) !important; - height: 1px !important; - margin: -1px !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - width: 1px !important; } - .radio-button__input:not(:checked) + .radio-button__label:before { - content: "\F43D"; } - .radio-button--theme-light .radio-button__input:not(:checked) + .radio-button__label:before { - color: rgba(0, 0, 0, 0.54); } - .radio-button--theme-dark .radio-button__input:not(:checked) + .radio-button__label:before { - color: rgba(255, 255, 255, 0.7); } - .radio-button__input:checked + .radio-button__label:before { - content: "\F43E"; - color: #FF4081; } - .radio-button__input[disabled] + .radio-button__label { - cursor: not-allowed; } - .radio-button--theme-light .radio-button__input[disabled] + .radio-button__label, .radio-button--theme-light .radio-button__input[disabled] + .radio-button__label:before { - color: rgba(0, 0, 0, 0.38); } - .radio-button--theme-dark .radio-button__input[disabled] + .radio-button__label, .radio-button--theme-dark .radio-button__input[disabled] + .radio-button__label:before { - color: rgba(255, 255, 255, 0.3); } - .radio-button--theme-light .radio-button__input[disabled] ~ .radio-button__help { - color: rgba(0, 0, 0, 0.38); } - .radio-button--theme-dark .radio-button__input[disabled] ~ .radio-button__help { - color: rgba(255, 255, 255, 0.3); } - -.radio-button__label { - display: block; - position: relative; - padding-left: 32px; - font-weight: 400; - line-height: 24px; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - @media (max-width: 61.24em) { - .radio-button__label { - font-size: 16px; - font-size: 1rem; } } - @media (min-width: 61.25em) { - .radio-button__label { - font-size: 15px; - font-size: 0.9375rem; } } - .radio-button--theme-light .radio-button__label { - color: rgba(0, 0, 0, 0.87); } - .radio-button--theme-dark .radio-button__label { - color: #FFFFFF; } - .radio-button--standalone .radio-button__label { - padding-left: 0; } - .radio-button__label:before { - display: inline-block; - font: normal normal normal 24px/1 "Material Design Icons"; - font-size: inherit; - text-rendering: auto; - line-height: inherit; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - top: 0; - left: 0; - font-size: 24px; - font-size: 1.5rem; - line-height: 24px; } - -.radio-button__help { - display: block; - padding-left: 32px; - font-weight: 400; - line-height: 20px; - text-align: left; } - @media (max-width: 61.24em) { - .radio-button__help { - font-size: 14px; - font-size: 0.875rem; } } - @media (min-width: 61.25em) { - .radio-button__help { - font-size: 13px; - font-size: 0.8125rem; } } - .radio-button--theme-light .radio-button__help { - color: rgba(0, 0, 0, 0.54); } - .radio-button--theme-dark .radio-button__help { - color: rgba(255, 255, 255, 0.7); } - -@-webkit-keyframes ripple { - 0% { - opacity: 0.3; - -webkit-transform: scale(0); } - 100% { - opacity: 0; - -webkit-transform: scale(2.5); } } - -@keyframes ripple { - 0% { - opacity: 0.3; - transform: scale(0); } - 100% { - opacity: 0; - transform: scale(2.5); } } - -.ripple { - display: block; - position: absolute; - border-radius: 100%; - opacity: 0.3; - transform: scale(0); - pointer-events: none; } - -.ripple--is-animated { - -webkit-animation: ripple 0.65s linear; - animation: ripple 0.65s linear; } - -.search-filter { - position: relative; - overflow: hidden; } - -.search-filter--opened-mode { - width: 100%; } - -.search-filter--closed-mode { - width: 40px; } - -.search-filter--autocomplete { - padding: 4px; } - -.search-filter__container { - position: relative; - height: 40px; - padding: 0 40px 0 56px; - overflow: hidden; } - .search-filter--closed-mode .search-filter__container { - width: 240px; } - -.search-filter__button { - position: absolute; - top: 0; - left: 0; - height: 40px; - width: 40px; } - -.search-filter__input input { - display: block; - margin: 0; - padding: 0; - border: none; - background-color: transparent; - box-shadow: none; - overflow: hidden; - cursor: text; - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - -o-appearance: none; - appearance: none; - height: 40px; - width: 100%; - font-size: 16px; - font-size: 1rem; - line-height: 40px; } - .search-filter__input input:focus { - outline: none; } - .search-filter--theme-light .search-filter__input input { - color: rgba(0, 0, 0, 0.87); } - .search-filter--theme-light .search-filter__input input::-webkit-input-placeholder { - color: rgba(0, 0, 0, 0.38); } - .search-filter--theme-light .search-filter__input input::-moz-placeholder { - color: rgba(0, 0, 0, 0.38); } - .search-filter--theme-light .search-filter__input input:-moz-placeholder { - color: rgba(0, 0, 0, 0.38); } - .search-filter--theme-light .search-filter__input input:-ms-input-placeholder { - color: rgba(0, 0, 0, 0.38); } - .search-filter--theme-dark .search-filter__input input { - color: #FFFFFF; } - .search-filter--theme-dark .search-filter__input input::-webkit-input-placeholder { - color: rgba(255, 255, 255, 0.3); } - .search-filter--theme-dark .search-filter__input input::-moz-placeholder { - color: rgba(255, 255, 255, 0.3); } - .search-filter--theme-dark .search-filter__input input:-moz-placeholder { - color: rgba(255, 255, 255, 0.3); } - .search-filter--theme-dark .search-filter__input input:-ms-input-placeholder { - color: rgba(255, 255, 255, 0.3); } - -.search-filter__clear { - position: absolute; - top: 0; - right: 0; - transform: translateX(40px); - transition-property: transform; - transition-duration: 0.4s; - transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1); } - .search-filter--has-clear-button .search-filter__clear { - transform: translateX(0); } - -.search-filter__loader { - position: absolute; - right: 0; - bottom: 0; - left: 0; } - -.search-filter__autocomplete-item { - position: relative; - display: block; - height: 48px; - padding: 0 32px 0 60px; - cursor: pointer; - color: rgba(0, 0, 0, 0.87); - line-height: 48px; - text-decoration: none; - white-space: nowrap; } - .search-filter__autocomplete-item .mdi { - position: absolute; - top: 4px; - left: 4px; - height: 40px; - width: 40px; - font-size: 24px; - font-size: 1.5rem; - color: rgba(0, 0, 0, 0.38); - line-height: 40px; - text-align: center; } - .search-filter__autocomplete-item:hover, .search-filter__autocomplete-item.search-filter__autocomplete-item--is-active { - background-color: #EEEEEE; } - -.lx-select.lx-select--default-style { - position: relative; } - .lx-select.lx-select--default-style .dropdown { - display: block; } - -.lx-select.lx-select--default-style.lx-select--view-mode-field { - padding-top: 32px; - padding-bottom: 8px; } - .lx-select.lx-select--default-style.lx-select--view-mode-field:before, .lx-select.lx-select--default-style.lx-select--view-mode-field:after { - content: ''; } - .lx-select.lx-select--default-style.lx-select--view-mode-field:before { - position: absolute; - right: 0; - bottom: 7px; - left: 0; - height: 1px; } - .lx-select.lx-select--default-style.lx-select--view-mode-field:after { - position: absolute; - right: 0; - bottom: 6px; - left: 0; - height: 2px; - transform: scale(0); - transition-property: transform; - transition-duration: 0.6s; - transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1); } - -.lx-select.lx-select--default-style.lx-select--view-mode-field.lx-select--theme-light:before { - border-bottom: 1px solid rgba(0, 0, 0, 0.12); } +.progress-container--circular.progress-container--accent-hue-2 .progress-circular__path { + stroke: #F50057; } -.lx-select.lx-select--default-style.lx-select--view-mode-field.lx-select--theme-dark:before { - border-bottom: 1px solid rgba(255, 255, 255, 0.12); } +.progress-container--linear.progress-container--accent-hue-2 .progress-linear__background, +.progress-container--linear.progress-container--accent-hue-2 .progress-linear__bar { + background-color: #F50057; } -.lx-select--default-style.lx-select--view-mode-field.lx-select--is-disabled { - pointer-events: none; } - .lx-select--default-style.lx-select--view-mode-field.lx-select--is-disabled:before { - border-bottom-style: dashed; } +.progress-circular { + position: relative; + width: 100px; + margin: 0px auto; } + .progress-circular:before { + content: ''; + display: block; + padding-top: 100%; } -.lx-select--default-style.lx-select--view-mode-field.lx-select--valid:after { - background-color: #4CAF50; - transform: scale(1); } +.progress-circular__svg { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + height: 100%; + width: 100%; + margin: auto; } -.lx-select--default-style.lx-select--view-mode-field.lx-select--error:after { - background-color: #F44336; - transform: scale(1); } +.progress-container--determinate .progress-circular__g { + transform: rotate(-90deg); } -.lx-select--default-style .lx-select-label { - display: block; - padding-right: 24px; - pointer-events: none; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } +.progress-container--indeterminate .progress-circular__g { + -webkit-animation: lx-progress-circular-rotate 2s linear infinite; + animation: lx-progress-circular-rotate 2s linear infinite; } + +.progress-circular__path { + stroke-dashoffset: 0; } + .progress-container--determinate .progress-circular__path { + transition-property: stroke-dasharray; + transition-duration: 0.2s; } + .progress-container--indeterminate .progress-circular__path { + stroke-dasharray: 1,200; + -webkit-animation: lx-progress-circular-dash 1.5s ease-in-out infinite; + animation: lx-progress-circular-dash 1.5s ease-in-out infinite; } + +.progress-linear { + position: relative; + height: 4px; + overflow: hidden; } -.lx-select--default-style.lx-select--view-mode-field .lx-select-label { +.progress-linear__background { position: absolute; - top: 8px; + top: 0; + right: 0; + bottom: 0; left: 0; - height: 32px; - width: 100%; - line-height: 32px; - transform: translateY(24px); - transform-origin: bottom left; - transition-property: transform, color; - transition-duration: 0.4s; - transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1); } + opacity: 0.4; } -.lx-select--default-style.lx-select--view-mode-chips .lx-select-label { +.progress-container--indeterminate .progress-linear__bar { + transform: scale(1) translateX(50%); } + +.progress-container--determinate .progress-linear__bar--first { + height: 4px; + width: 100%; position: absolute; top: 0; left: 0; - height: 40px; + transition-property: transform; + transition-duration: 0.2s; + transform-origin: 0 center; } + +.progress-container--indeterminate .progress-linear__bar--first { + height: 24px; width: 100%; - line-height: 40px; } + position: absolute; + top: -12px; + -webkit-animation: lx-progress-linear-bar1 2s linear infinite; + animation: lx-progress-linear-bar1 2s linear infinite; } -.lx-select--default-style.lx-select--is-active.lx-select--fixed-label .lx-select-label, -.lx-select--default-style.lx-select--is-active.lx-select--view-mode-chips .lx-select-label { - display: none; } +.progress-linear__bar--second { + position: absolute; + top: -48px; + height: 96px; + width: 100%; + -webkit-animation: lx-progress-linear-bar2 2s linear infinite; + animation: lx-progress-linear-bar2 2s linear infinite; } + .progress-container--determinate .progress-linear__bar--second { + display: none; } -.lx-select--default-style.lx-select--is-active.lx-select--view-mode-field .lx-select-label { - transform: scale(0.75) translateY(0); } +.radio-group .radio-button { + margin-bottom: 8px; } + .radio-group .radio-button:last-child { + margin-bottom: 0; } -.lx-select--default-style.lx-select--theme-light .lx-select-label { - color: rgba(0, 0, 0, 0.54); } +.radio-button { + min-width: 24px; + min-height: 24px; } -.lx-select--default-style.lx-select--theme-dark .lx-select-label { - color: rgba(255, 255, 255, 0.7); } +.radio-button--red .radio-button__input:checked + .radio-button__label:before { + color: #F44336; } -.lx-select--default-style.lx-select--theme-light.lx-select--is-disabled .lx-select-label { - color: rgba(0, 0, 0, 0.38); } +.radio-button--pink .radio-button__input:checked + .radio-button__label:before { + color: #E91E63; } -.lx-select--default-style.lx-select--theme-dark.lx-select--is-disabled .lx-select-label { - color: rgba(255, 255, 255, 0.3); } +.radio-button--purple .radio-button__input:checked + .radio-button__label:before { + color: #9C27B0; } -.lx-select--default-style.lx-select--valid .lx-select-label { - color: #4CAF50; } +.radio-button--deep-purple .radio-button__input:checked + .radio-button__label:before { + color: #673AB7; } -.lx-select--default-style.lx-select--error .lx-select-label { - color: #F44336; } +.radio-button--indigo .radio-button__input:checked + .radio-button__label:before { + color: #3F51B5; } -.lx-select--default-style:not(.lx-select--autocomplete) .lx-select-selected-wrapper { - padding-right: 24px; } - .lx-select--default-style:not(.lx-select--autocomplete) .lx-select-selected-wrapper:after { - display: inline-block; - font: normal normal normal 24px/1 "Material Design Icons"; - font-size: inherit; - text-rendering: auto; - line-height: inherit; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: "\F35D"; - font-size: 14px; - font-size: 0.875rem; } +.radio-button--blue .radio-button__input:checked + .radio-button__label:before { + color: #2196F3; } -.lx-select--default-style.lx-select--view-mode-field .lx-select-selected-wrapper { - min-height: 32px; } +.radio-button--light-blue .radio-button__input:checked + .radio-button__label:before { + color: #03A9F4; } -.lx-select--default-style.lx-select--view-mode-field:not(.lx-select--autocomplete) .lx-select-selected-wrapper:after { - position: absolute; - right: 8px; - bottom: 8px; - line-height: 16px; } +.radio-button--cyan .radio-button__input:checked + .radio-button__label:before { + color: #00BCD4; } -.lx-select--default-style.lx-select--view-mode-chips .lx-select-selected-wrapper { - min-height: 40px; } +.radio-button--teal .radio-button__input:checked + .radio-button__label:before { + color: #009688; } -.lx-select--default-style.lx-select--view-mode-chips:not(.lx-select--autocomplete) .lx-select-selected-wrapper:after { - position: absolute; - top: 0; - right: 0; - line-height: 40px; } +.radio-button--green .radio-button__input:checked + .radio-button__label:before { + color: #4CAF50; } -.lx-select--default-style.lx-select--theme-light .lx-select-selected-wrapper:after { - color: rgba(0, 0, 0, 0.38); } +.radio-button--light-green .radio-button__input:checked + .radio-button__label:before { + color: #8BC34A; } -.lx-select--default-style.lx-select--theme-dark .lx-select-selected-wrapper:after { - color: rgba(255, 255, 255, 0.3); } +.radio-button--lime .radio-button__input:checked + .radio-button__label:before { + color: #CDDC39; } -.lx-select--default-style:not(.lx-select--autocomplete) .dropdown--is-open .lx-select-selected-wrapper:after { - content: "\F360"; } +.radio-button--yellow .radio-button__input:checked + .radio-button__label:before { + color: #FFEB3B; } -.lx-select-selected-wrapper > .lx-select-selected__filter { - display: none; } +.radio-button--amber .radio-button__input:checked + .radio-button__label:before { + color: #FFC107; } -.lx-select--default-style.lx-select--is-unique .lx-select-selected:hover .lx-select-selected__clear { - opacity: 1; } +.radio-button--orange .radio-button__input:checked + .radio-button__label:before { + color: #FF9800; } -.lx-select--default-style.lx-select--is-multiple .lx-select-selected { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - -webkit-box-lines: multiple; - -moz-box-lines: multiple; - box-lines: multiple; - flex-wrap: wrap; } +.radio-button--deep-orange .radio-button__input:checked + .radio-button__label:before { + color: #FF5722; } -.lx-select--default-style.lx-select--is-multiple.lx-select--view-mode-field .lx-select-selected { - padding: 4px 0; } +.radio-button--brown .radio-button__input:checked + .radio-button__label:before { + color: #795548; } -.lx-select--default-style .lx-select-selected__value { - display: block; - line-height: 32px; } +.radio-button--grey .radio-button__input:checked + .radio-button__label:before { + color: #9E9E9E; } -.lx-select--default-style.lx-select--theme-light .lx-select-selected__value { - color: rgba(0, 0, 0, 0.87); } +.radio-button--blue-grey .radio-button__input:checked + .radio-button__label:before { + color: #607D8B; } + +.radio-button--black .radio-button__input:checked + .radio-button__label:before { + color: #000000; } -.lx-select--default-style.lx-select--theme-dark .lx-select-selected__value { +.radio-button--white .radio-button__input:checked + .radio-button__label:before { color: #FFFFFF; } -.lx-select--default-style.lx-select--theme-light.lx-select--is-disabled .lx-select-selected__value { - color: rgba(0, 0, 0, 0.38); } +.radio-button--primary .radio-button__input:checked + .radio-button__label:before { + color: #3F51B5; } -.lx-select--default-style.lx-select--theme-dark.lx-select--is-disabled .lx-select-selected__value { - color: rgba(255, 255, 255, 0.3); } +.radio-button--primary-hue-1 .radio-button__input:checked + .radio-button__label:before { + color: #C5CAE9; } -.lx-select--default-style .lx-select-selected__clear { - display: block; - position: absolute; - top: 0; - right: 24px; - opacity: 0; - line-height: 32px; - transition-property: opacity, color; - transition-duration: 0.2s; } - .lx-select--default-style .lx-select-selected__clear:hover { - color: #F44336; } +.radio-button--primary-hue-2 .radio-button__input:checked + .radio-button__label:before { + color: #303F9F; } -.lx-select--default-style.lx-select--theme-light .lx-select-selected__clear { - color: rgba(0, 0, 0, 0.87); } +.radio-button--accent .radio-button__input:checked + .radio-button__label:before { + color: #FF4081; } -.lx-select--default-style.lx-select--theme-dark .lx-select-selected__clear { - color: #FFFFFF; } +.radio-button--accent-hue-1 .radio-button__input:checked + .radio-button__label:before { + color: #FF80AB; } -.lx-select--default-style .lx-select-selected__tag { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; - align-items: center; - -ms-flex-align: center; - background-color: #E0E0E0; +.radio-button--accent-hue-2 .radio-button__input:checked + .radio-button__label:before { + color: #F50057; } + +.radio-button__input { + border: 0 !important; + clip: rect(0 0 0 0) !important; + height: 1px !important; + margin: -1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; } + .radio-button__input:not(:checked) + .radio-button__label:before { + content: "\F43D"; } + .radio-button--theme-light .radio-button__input:not(:checked) + .radio-button__label:before { + color: rgba(0, 0, 0, 0.54); } + .radio-button--theme-dark .radio-button__input:not(:checked) + .radio-button__label:before { + color: rgba(255, 255, 255, 0.7); } + .radio-button__input:checked + .radio-button__label:before { + content: "\F43E"; + color: #FF4081; } + .radio-button__input[disabled] + .radio-button__label { + cursor: not-allowed; } + .radio-button--theme-light .radio-button__input[disabled] + .radio-button__label, .radio-button--theme-light .radio-button__input[disabled] + .radio-button__label:before { + color: rgba(0, 0, 0, 0.38); } + .radio-button--theme-dark .radio-button__input[disabled] + .radio-button__label, .radio-button--theme-dark .radio-button__input[disabled] + .radio-button__label:before { + color: rgba(255, 255, 255, 0.3); } + .radio-button--theme-light .radio-button__input[disabled] ~ .radio-button__help { + color: rgba(0, 0, 0, 0.38); } + .radio-button--theme-dark .radio-button__input[disabled] ~ .radio-button__help { + color: rgba(255, 255, 255, 0.3); } + +.radio-button__label { + display: block; + position: relative; + padding-left: 32px; + font-weight: 400; + line-height: 24px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } - .lx-select--default-style .lx-select-selected__tag:after { + @media (max-width: 61.24em) { + .radio-button__label { + font-size: 16px; + font-size: 1rem; } } + @media (min-width: 61.25em) { + .radio-button__label { + font-size: 15px; + font-size: 0.9375rem; } } + .radio-button--theme-light .radio-button__label { + color: rgba(0, 0, 0, 0.87); } + .radio-button--theme-dark .radio-button__label { + color: #FFFFFF; } + .radio-button--standalone .radio-button__label { + padding-left: 0; } + .radio-button__label:before { display: inline-block; font: normal normal normal 24px/1 "Material Design Icons"; font-size: inherit; @@ -38401,62 +37395,89 @@ table { line-height: inherit; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - content: "\F159"; - color: rgba(0, 0, 0, 0.38); } - .lx-select--default-style .lx-select-selected__tag .mdi { - margin-right: 4px; + position: absolute; + top: 0; + left: 0; + font-size: 24px; + font-size: 1.5rem; + line-height: 24px; } + +.radio-button__help { + display: block; + padding-left: 32px; + font-weight: 400; + line-height: 20px; + text-align: left; } + @media (max-width: 61.24em) { + .radio-button__help { + font-size: 14px; + font-size: 0.875rem; } } + @media (min-width: 61.25em) { + .radio-button__help { + font-size: 13px; + font-size: 0.8125rem; } } + .radio-button--theme-light .radio-button__help { color: rgba(0, 0, 0, 0.54); } + .radio-button--theme-dark .radio-button__help { + color: rgba(255, 255, 255, 0.7); } -.lx-select--default-style:not(.lx-select--is-disabled) .lx-select-selected__tag.lx-select-selected__tag--is-active, .lx-select--default-style:not(.lx-select--is-disabled) .lx-select-selected__tag:hover { - background-color: #757575; - color: #FFFFFF; } - .lx-select--default-style:not(.lx-select--is-disabled) .lx-select-selected__tag.lx-select-selected__tag--is-active:after, .lx-select--default-style:not(.lx-select--is-disabled) .lx-select-selected__tag:hover:after { - color: #FFFFFF; } +@-webkit-keyframes ripple { + 0% { + opacity: 0.3; + -webkit-transform: scale(0); } + 100% { + opacity: 0; + -webkit-transform: scale(2.5); } } -.lx-select--default-style.lx-select--is-disabled .lx-select-selected__tag { - pointer-events: none; - color: rgba(0, 0, 0, 0.38); } - .lx-select--default-style.lx-select--is-disabled .lx-select-selected__tag:after { - display: none; } +@keyframes ripple { + 0% { + opacity: 0.3; + transform: scale(0); } + 100% { + opacity: 0; + transform: scale(2.5); } } -.lx-select--default-style.lx-select--view-mode-field .lx-select-selected__tag { - margin: 2px 4px 2px 0; - padding: 0 4px; - border-radius: 2px; - font-size: 11px; - font-size: 0.6875rem; - line-height: 20px; } - .lx-select--default-style.lx-select--view-mode-field .lx-select-selected__tag:after { - margin-left: 4px; - font-size: 14px; - font-size: 0.875rem; } - .lx-select--default-style.lx-select--view-mode-field .lx-select-selected__tag:last-child { - margin-right: 0; } +.ripple { + display: block; + position: absolute; + border-radius: 100%; + opacity: 0.3; + transform: scale(0); + pointer-events: none; } -.lx-select--default-style.lx-select--view-mode-chips .lx-select-selected__tag { - height: 32px; - margin: 4px 8px 4px 0; - padding: 0 12px; - padding-right: 4px; - border-radius: 16px; - font-size: 13px; - font-size: 0.8125rem; - line-height: 32px; } - .lx-select--default-style.lx-select--view-mode-chips .lx-select-selected__tag:after { - height: 24px; - width: 24px; - margin-left: 4px; - font-size: 19px; - font-size: 1.1875rem; - line-height: 24px; - text-align: center; } - .lx-select--default-style.lx-select--view-mode-chips .lx-select-selected__tag:last-child { - margin-right: 0; } +.ripple--is-animated { + -webkit-animation: ripple 0.65s linear; + animation: ripple 0.65s linear; } + +.search-filter { + position: relative; + overflow: hidden; } + +.search-filter--opened-mode { + width: 100%; } + +.search-filter--closed-mode { + width: 40px; } + +.search-filter--autocomplete { + padding: 4px; } + +.search-filter__container { + position: relative; + height: 40px; + padding: 0 40px 0 56px; + overflow: hidden; } + .search-filter--closed-mode .search-filter__container { + width: 240px; } -.lx-select--default-style.lx-select--view-mode-chips.lx-select--is-disabled .lx-select-selected__tag { - padding-right: 12px; } +.search-filter__button { + position: absolute; + top: 0; + left: 0; + height: 40px; + width: 40px; } -.lx-select-selected__filter { +.search-filter__input input { display: block; margin: 0; padding: 0; @@ -38469,247 +37490,76 @@ table { -moz-appearance: none; -ms-appearance: none; -o-appearance: none; - appearance: none; } - .lx-select-selected__filter:focus { + appearance: none; + height: 40px; + width: 100%; + font-size: 16px; + font-size: 1rem; + line-height: 40px; } + .search-filter__input input:focus { outline: none; } - .lx-select--default-style.lx-select--view-mode-field .lx-select-selected__filter { - height: 24px; - line-height: 24px; } - .lx-select--default-style.lx-select--view-mode-chips .lx-select-selected__filter { - height: 40px; - line-height: 40px; } - .lx-select--default-style.lx-select--theme-light .lx-select-selected__filter { + .search-filter--theme-light .search-filter__input input { color: rgba(0, 0, 0, 0.87); } - .lx-select--default-style.lx-select--theme-light .lx-select-selected__filter::-webkit-input-placeholder { - color: rgba(0, 0, 0, 0.54); } - .lx-select--default-style.lx-select--theme-light .lx-select-selected__filter::-moz-placeholder { - color: rgba(0, 0, 0, 0.54); } - .lx-select--default-style.lx-select--theme-light .lx-select-selected__filter:-moz-placeholder { - color: rgba(0, 0, 0, 0.54); } - .lx-select--default-style.lx-select--theme-light .lx-select-selected__filter:-ms-input-placeholder { - color: rgba(0, 0, 0, 0.54); } - .lx-select--default-style.lx-select--theme-dark .lx-select-selected__filter { + .search-filter--theme-light .search-filter__input input::-webkit-input-placeholder { + color: rgba(0, 0, 0, 0.38); } + .search-filter--theme-light .search-filter__input input::-moz-placeholder { + color: rgba(0, 0, 0, 0.38); } + .search-filter--theme-light .search-filter__input input:-moz-placeholder { + color: rgba(0, 0, 0, 0.38); } + .search-filter--theme-light .search-filter__input input:-ms-input-placeholder { + color: rgba(0, 0, 0, 0.38); } + .search-filter--theme-dark .search-filter__input input { color: #FFFFFF; } - .lx-select--default-style.lx-select--theme-dark .lx-select-selected__filter::-webkit-input-placeholder { - color: rgba(255, 255, 255, 0.7); } - .lx-select--default-style.lx-select--theme-dark .lx-select-selected__filter::-moz-placeholder { - color: rgba(255, 255, 255, 0.7); } - .lx-select--default-style.lx-select--theme-dark .lx-select-selected__filter:-moz-placeholder { - color: rgba(255, 255, 255, 0.7); } - .lx-select--default-style.lx-select--theme-dark .lx-select-selected__filter:-ms-input-placeholder { - color: rgba(255, 255, 255, 0.7); } + .search-filter--theme-dark .search-filter__input input::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.3); } + .search-filter--theme-dark .search-filter__input input::-moz-placeholder { + color: rgba(255, 255, 255, 0.3); } + .search-filter--theme-dark .search-filter__input input:-moz-placeholder { + color: rgba(255, 255, 255, 0.3); } + .search-filter--theme-dark .search-filter__input input:-ms-input-placeholder { + color: rgba(255, 255, 255, 0.3); } -.lx-select-selected--multipane { - position: relative; } +.search-filter__clear { + position: absolute; + top: 0; + right: 0; + transform: translateX(40px); + transition-property: transform; + transition-duration: 0.4s; + transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1); } + .search-filter--has-clear-button .search-filter__clear { + transform: translateX(0); } -.lx-select-choices--default-style .lx-select-choices__filter { - padding: 2px 8px; - margin-bottom: 8px; - border-bottom: 1px solid rgba(0, 0, 0, 0.12); } +.search-filter__loader { + position: absolute; + right: 0; + bottom: 0; + left: 0; } -.lx-select-choices--default-style .lx-select-choices__choice, -.lx-select-choices--default-style .lx-select-choices__subheader { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; - align-items: center; - -ms-flex-align: center; +.search-filter__autocomplete-item { position: relative; - text-decoration: none; } - @media (max-width: 61.24em) { - .lx-select-choices--default-style .lx-select-choices__choice, - .lx-select-choices--default-style .lx-select-choices__subheader { - min-height: 48px; - padding: 8px 16px; - font-size: 16px; - font-size: 1rem; } } - @media (min-width: 61.25em) { - .lx-select-choices--default-style .lx-select-choices__choice, - .lx-select-choices--default-style .lx-select-choices__subheader { - min-height: 32px; - padding: 8px 24px; - font-size: 14px; - font-size: 0.875rem; } } - .lx-select-choices--default-style .lx-select-choices__choice .mdi, - .lx-select-choices--default-style .lx-select-choices__subheader .mdi { - height: 24px; - width: 24px; - margin-right: 16px; - line-height: 24px; - text-align: center; } - @media (max-width: 61.24em) { - .lx-select-choices--default-style .lx-select-choices__choice .mdi, - .lx-select-choices--default-style .lx-select-choices__subheader .mdi { - font-size: 24px; - font-size: 1.5rem; } } - @media (min-width: 61.25em) { - .lx-select-choices--default-style .lx-select-choices__choice .mdi, - .lx-select-choices--default-style .lx-select-choices__subheader .mdi { - font-size: 18px; - font-size: 1.125rem; } } - -.lx-select-choices--default-style .lx-select-choices__choice { + display: block; + height: 48px; + padding: 0 32px 0 60px; cursor: pointer; - color: rgba(0, 0, 0, 0.87); } - .lx-select-choices--default-style .lx-select-choices__choice .mdi { - color: rgba(0, 0, 0, 0.54); } - .lx-select-choices--default-style .lx-select-choices__choice:hover { + color: rgba(0, 0, 0, 0.87); + line-height: 48px; + text-decoration: none; + white-space: nowrap; } + .search-filter__autocomplete-item .mdi { + position: absolute; + top: 4px; + left: 4px; + height: 40px; + width: 40px; + font-size: 24px; + font-size: 1.5rem; + color: rgba(0, 0, 0, 0.38); + line-height: 40px; + text-align: center; } + .search-filter__autocomplete-item:hover, .search-filter__autocomplete-item.search-filter__autocomplete-item--is-active { background-color: #EEEEEE; } -.lx-select-choices--is-unique.lx-select-choices--default-style .lx-select-choices__choice.lx-select-choices__choice--is-selected { - background-color: #EEEEEE; } - -.lx-select-choices--is-multiple.lx-select-choices--default-style .lx-select-choices__choice:before { - display: inline-block; - font: normal normal normal 24px/1 "Material Design Icons"; - font-size: inherit; - text-rendering: auto; - line-height: inherit; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - height: 24px; - width: 24px; - content: "\F131"; - margin-right: 16px; - font-size: 18px; - font-size: 1.125rem; - color: rgba(0, 0, 0, 0.54); - line-height: 24px; - text-align: center; } - -.lx-select-choices--is-multiple.lx-select-choices--default-style .lx-select-choices__choice.lx-select-choices__choice--is-disabled { - cursor: not-allowed; - color: rgba(0, 0, 0, 0.38); } - .lx-select-choices--is-multiple.lx-select-choices--default-style .lx-select-choices__choice.lx-select-choices__choice--is-disabled:before { - color: rgba(0, 0, 0, 0.38); } - -.lx-select-choices--is-multiple.lx-select-choices--default-style .lx-select-choices__choice.lx-select-choices__choice--is-selected:before { - content: "\F12C"; } - -.lx-select-choices--is-multiple.lx-select-choices--default-style .lx-select-choices__choice.lx-select-choices__choice--is-focus { - background-color: #EEEEEE; } - -.lx-select-choices--default-style .lx-select-choices__subheader { - color: rgba(0, 0, 0, 0.38); } - .lx-select-choices--default-style .lx-select-choices__subheader .mdi { - color: rgba(0, 0, 0, 0.38); } - -.lx-select-choices--multi-panes { - width: auto !important; - overflow: hidden !important; } - .lx-select-choices--multi-panes .dropdown-menu__content { - padding: 0; } - -.lx-select-choices__panes-container { - display: -moz-flex; - display: flex; - box-orient: horizontal; - box-direction: normal; - -moz-flex-direction: row; - flex-direction: row; - height: 100%; } - -.lx-select-choices__panes-wrapper { - height: 100%; } - -.lx-select-choices__pane { - position: relative; - overflow: auto; } - .lx-select-choices__pane-choice { - display: -moz-flex; - display: flex; - box-align: center; - -moz-align-items: center; - -ms-align-items: center; - -o-align-items: center; - align-items: center; - -ms-flex-align: center; - min-width: 120px; - margin: 8px 0 8px 12px; - padding: 12px; - color: #FFFFFF; - cursor: pointer; } - .lx-select-choices__pane-choice i { - font-size: 40px; - font-size: 2.5rem; - line-height: 40px; - margin-right: 8px; } - .lx-select-choices__pane-choice span:not(.lx-select-choices__pane-choice--highlight) { - box-flex: 1; - -moz-flex: 1; - flex: 1; } - .lx-select-choices__pane-choice--highlight { - font-weight: bold; - text-decoration: underline; - -webkit-text-decoration-skip: ink; - text-decoration-skip-ink: auto; } - @media (min-width: 61.25em) { - .lx-select-choices__pane-choice:hover { - background-color: #FFFFFF; - color: #000000; } } - @media (max-width: 61.24em) { - .lx-select-choices__pane-choice { - position: relative; - padding: 12px; } - .lx-select-choices__pane-choice:not(.lx-select-choices__pane-choice--is-leaf):after { - justify-self: flex-end; - display: inline-block; - font: normal normal normal 24px/1 "Material Design Icons"; - font-size: inherit; - text-rendering: auto; - line-height: inherit; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: "\F140"; - font-size: 20px; - font-size: 1.25rem; - margin-left: auto; - padding-left: 8px; } - .lx-select-choices__pane-choice:not(.lx-select-choices__pane-choice--is-leaf).lx-select-choices__pane-choice--is-selected:after { - content: "\F143"; } } - .lx-select-choices__pane.lx-select-choices__pane--first .lx-select-choices__pane-choice { - margin: 0; } - .lx-select-choices__pane.lx-select-choices__pane--is-filtering .lx-select-choices__pane-choice { - opacity: 0.3; } - .lx-select-choices__pane.lx-select-choices__pane--is-filtering .lx-select-choices__pane-choice--is-matching { - opacity: 1; } - .lx-select-choices__pane-3 .lx-select-choices__pane-choice { - color: #000000; } - .lx-select-choices__pane-4 .lx-select-choices__pane-choice { - color: #000000; } - .lx-select-choices__pane-5 .lx-select-choices__pane-choice { - color: #000000; } - -.lx-select--panes.lx-select--with-filter .lx-select-selected-wrapper.lx-select-selected-wrapper--with-filter { - display: -moz-flex; - display: flex; - min-height: 40px !important; } - .lx-select--panes.lx-select--with-filter .lx-select-selected-wrapper.lx-select-selected-wrapper--with-filter .lx-select-selected__value { - margin-right: 8px; - line-height: 40px !important; } - .lx-select--panes.lx-select--with-filter .lx-select-selected-wrapper.lx-select-selected-wrapper--with-filter .lx-select-selected__tag:last-child { - margin-right: 8px; } - .lx-select--panes.lx-select--with-filter .lx-select-selected-wrapper.lx-select-selected-wrapper--with-filter .lx-select-selected__filter { - display: block; - box-flex: 1; - -moz-flex: 1; - flex: 1; - margin-top: 8px; - margin-bottom: 4px; - margin-right: 8px; - min-height: 40px !important; - line-height: 40px !important; } - -.lx-select--panes.lx-select--with-filter:not(.lx-select--is-active) .lx-select-label { - line-height: 40px !important; } - .lx-stepper.lx-stepper--layout-vertical { padding: 24px 0; } diff --git a/dist/lumx.js b/dist/lumx.js index 00053e1d1..967b3498f 100644 --- a/dist/lumx.js +++ b/dist/lumx.js @@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 86); +/******/ return __webpack_require__(__webpack_require__.s = 99); /******/ }) /************************************************************************/ /******/ ([ @@ -100,13 +100,13 @@ return /******/ (function(modules) { // webpackBootstrap "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CSS_PREFIX; }); -/* unused harmony export DOWN_KEY_CODE */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return ENTER_KEY_CODE; }); -/* unused harmony export ESCAPE_KEY_CODE */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return DOWN_KEY_CODE; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return ENTER_KEY_CODE; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return ESCAPE_KEY_CODE; }); /* unused harmony export LEFT_KEY_CODE */ /* unused harmony export RIGHT_KEY_CODE */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return TAB_KEY_CODE; }); -/* unused harmony export UP_KEY_CODE */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return TAB_KEY_CODE; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return UP_KEY_CODE; }); ///////////////////////////// // // // Public attributes // @@ -202,18 +202,18 @@ module.exports = // eslint-disable-next-line no-new-func Function('return this')(); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(93))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(66))) /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(1); -var getOwnPropertyDescriptor = __webpack_require__(34).f; -var hide = __webpack_require__(14); -var redefine = __webpack_require__(8); -var setGlobal = __webpack_require__(39); -var copyConstructorProperties = __webpack_require__(96); +var getOwnPropertyDescriptor = __webpack_require__(33).f; +var hide = __webpack_require__(16); +var redefine = __webpack_require__(10); +var setGlobal = __webpack_require__(38); +var copyConstructorProperties = __webpack_require__(107); var isForced = __webpack_require__(44); /* @@ -270,8 +270,8 @@ module.exports = function (options, source) { var global = __webpack_require__(1); var shared = __webpack_require__(26); -var uid = __webpack_require__(63); -var NATIVE_SYMBOL = __webpack_require__(99); +var uid = __webpack_require__(72); +var NATIVE_SYMBOL = __webpack_require__(110); var Symbol = global.Symbol; var store = shared('wks'); @@ -299,24 +299,11 @@ module.exports = function (exec) { /* 5 */ /***/ (function(module, exports, __webpack_require__) { -var isObject = __webpack_require__(7); - -module.exports = function (it) { - if (!isObject(it)) { - throw TypeError(String(it) + ' is not an object'); - } return it; -}; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - "use strict"; var $ = __webpack_require__(2); -var $find = __webpack_require__(28).find; -var addToUnscopables = __webpack_require__(102); +var $find = __webpack_require__(48).find; +var addToUnscopables = __webpack_require__(76); var FIND = 'find'; var SKIPS_HOLES = true; @@ -337,9623 +324,33 @@ addToUnscopables(FIND); /***/ }), -/* 7 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(1); -var shared = __webpack_require__(26); -var hide = __webpack_require__(14); -var has = __webpack_require__(16); -var setGlobal = __webpack_require__(39); -var nativeFunctionToString = __webpack_require__(60); -var InternalStateModule = __webpack_require__(61); - -var getInternalState = InternalStateModule.get; -var enforceInternalState = InternalStateModule.enforce; -var TEMPLATE = String(nativeFunctionToString).split('toString'); - -shared('inspectSource', function (it) { - return nativeFunctionToString.call(it); -}); - -(module.exports = function (O, key, value, options) { - var unsafe = options ? !!options.unsafe : false; - var simple = options ? !!options.enumerable : false; - var noTargetGet = options ? !!options.noTargetGet : false; - if (typeof value == 'function') { - if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key); - enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); - } - if (O === global) { - if (simple) O[key] = value; - else setGlobal(key, value); - return; - } else if (!unsafe) { - delete O[key]; - } else if (!noTargetGet && O[key]) { - simple = true; - } - if (simple) O[key] = value; - else hide(O, key, value); -// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -})(Function.prototype, 'toString', function toString() { - return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this); -}); - - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(21); - -var min = Math.min; - -// `ToLength` abstract operation -// https://tc39.github.io/ecma262/#sec-tolength -module.exports = function (argument) { - return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 -}; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(4); - -// Thank's IE8 for his funny defineProperty -module.exports = !fails(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); - - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -var toString = {}.toString; - -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; - - -/***/ }), -/* 12 */ +/* 6 */ /***/ (function(module, exports, __webpack_require__) { -var DESCRIPTORS = __webpack_require__(10); -var IE8_DOM_DEFINE = __webpack_require__(59); -var anObject = __webpack_require__(5); -var toPrimitive = __webpack_require__(37); - -var nativeDefineProperty = Object.defineProperty; - -// `Object.defineProperty` method -// https://tc39.github.io/ecma262/#sec-object.defineproperty -exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return nativeDefineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; - - -/***/ }), -/* 13 */ -/***/ (function(module, exports) { +var isObject = __webpack_require__(7); -// `RequireObjectCoercible` abstract operation -// https://tc39.github.io/ecma262/#sec-requireobjectcoercible module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; - - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(10); -var definePropertyModule = __webpack_require__(12); -var createPropertyDescriptor = __webpack_require__(35); - -module.exports = DESCRIPTORS ? function (object, key, value) { - return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; + if (!isObject(it)) { + throw TypeError(String(it) + ' is not an object'); + } return it; }; /***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(2); -var exec = __webpack_require__(29); - -$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { - exec: exec -}); - - -/***/ }), -/* 16 */ +/* 7 */ /***/ (function(module, exports) { -var hasOwnProperty = {}.hasOwnProperty; - -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -var requireObjectCoercible = __webpack_require__(13); - -// `ToObject` abstract operation -// https://tc39.github.io/ecma262/#sec-toobject -module.exports = function (argument) { - return Object(requireObjectCoercible(argument)); -}; - - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(2); -var $indexOf = __webpack_require__(67).indexOf; -var sloppyArrayMethod = __webpack_require__(22); - -var nativeIndexOf = [].indexOf; - -var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; -var SLOPPY_METHOD = sloppyArrayMethod('indexOf'); - -// `Array.prototype.indexOf` method -// https://tc39.github.io/ecma262/#sec-array.prototype.indexof -$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, { - indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { - return NEGATIVE_ZERO - // convert -0 to +0 - ? nativeIndexOf.apply(this, arguments) || 0 - : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); - } -}); - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -// toObject with fallback for non-array-like ES3 strings -var IndexedObject = __webpack_require__(36); -var requireObjectCoercible = __webpack_require__(13); - module.exports = function (it) { - return IndexedObject(requireObjectCoercible(it)); -}; - - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -var path = __webpack_require__(64); -var global = __webpack_require__(1); - -var aFunction = function (variable) { - return typeof variable == 'function' ? variable : undefined; -}; - -module.exports = function (namespace, method) { - return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) - : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; -}; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports) { - -var ceil = Math.ceil; -var floor = Math.floor; - -// `ToInteger` abstract operation -// https://tc39.github.io/ecma262/#sec-tointeger -module.exports = function (argument) { - return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); + return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { +/* 8 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -var fails = __webpack_require__(4); - -module.exports = function (METHOD_NAME, argument) { - var method = [][METHOD_NAME]; - return !method || !fails(function () { - // eslint-disable-next-line no-useless-call,no-throw-literal - method.call(null, argument || function () { throw 1; }, 1); - }); -}; - - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(2); -var toAbsoluteIndex = __webpack_require__(42); -var toInteger = __webpack_require__(21); -var toLength = __webpack_require__(9); -var toObject = __webpack_require__(17); -var arraySpeciesCreate = __webpack_require__(45); -var createProperty = __webpack_require__(47); -var arrayMethodHasSpeciesSupport = __webpack_require__(27); - -var max = Math.max; -var min = Math.min; -var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; -var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; - -// `Array.prototype.splice` method -// https://tc39.github.io/ecma262/#sec-array.prototype.splice -// with adding support of @@species -$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, { - splice: function splice(start, deleteCount /* , ...items */) { - var O = toObject(this); - var len = toLength(O.length); - var actualStart = toAbsoluteIndex(start, len); - var argumentsLength = arguments.length; - var insertCount, actualDeleteCount, A, k, from, to; - if (argumentsLength === 0) { - insertCount = actualDeleteCount = 0; - } else if (argumentsLength === 1) { - insertCount = 0; - actualDeleteCount = len - actualStart; - } else { - insertCount = argumentsLength - 2; - actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart); - } - if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) { - throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); - } - A = arraySpeciesCreate(O, actualDeleteCount); - for (k = 0; k < actualDeleteCount; k++) { - from = actualStart + k; - if (from in O) createProperty(A, k, O[from]); - } - A.length = actualDeleteCount; - if (insertCount < actualDeleteCount) { - for (k = actualStart; k < len - actualDeleteCount; k++) { - from = k + actualDeleteCount; - to = k + insertCount; - if (from in O) O[to] = O[from]; - else delete O[to]; - } - for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1]; - } else if (insertCount > actualDeleteCount) { - for (k = len - actualDeleteCount; k > actualStart; k--) { - from = k + actualDeleteCount - 1; - to = k + insertCount - 1; - if (from in O) O[to] = O[from]; - else delete O[to]; - } - } - for (k = 0; k < insertCount; k++) { - O[k + actualStart] = arguments[k + 2]; - } - O.length = len - actualDeleteCount + insertCount; - return A; - } -}); - - -/***/ }), -/* 24 */ -/***/ (function(module, exports) { - -module.exports = function (it) { - if (typeof it != 'function') { - throw TypeError(String(it) + ' is not a function'); - } return it; -}; - - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __webpack_require__) { - -var $ = __webpack_require__(2); -var parseIntImplementation = __webpack_require__(131); - -// `parseInt` method -// https://tc39.github.io/ecma262/#sec-parseint-string-radix -$({ global: true, forced: parseInt != parseIntImplementation }, { - parseInt: parseIntImplementation -}); - - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(1); -var setGlobal = __webpack_require__(39); -var IS_PURE = __webpack_require__(40); - -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || setGlobal(SHARED, {}); - -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: '3.2.1', - mode: IS_PURE ? 'pure' : 'global', - copyright: '© 2019 Denis Pushkarev (zloirock.ru)' -}); - - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(4); -var wellKnownSymbol = __webpack_require__(3); - -var SPECIES = wellKnownSymbol('species'); - -module.exports = function (METHOD_NAME) { - return !fails(function () { - var array = []; - var constructor = array.constructor = {}; - constructor[SPECIES] = function () { - return { foo: 1 }; - }; - return array[METHOD_NAME](Boolean).foo !== 1; - }); -}; - - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __webpack_require__) { - -var bind = __webpack_require__(48); -var IndexedObject = __webpack_require__(36); -var toObject = __webpack_require__(17); -var toLength = __webpack_require__(9); -var arraySpeciesCreate = __webpack_require__(45); - -var push = [].push; - -// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation -var createMethod = function (TYPE) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - return function ($this, callbackfn, that, specificCreate) { - var O = toObject($this); - var self = IndexedObject(O); - var boundFunction = bind(callbackfn, that, 3); - var length = toLength(self.length); - var index = 0; - var create = specificCreate || arraySpeciesCreate; - var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; - var value, result; - for (;length > index; index++) if (NO_HOLES || index in self) { - value = self[index]; - result = boundFunction(value, index, O); - if (TYPE) { - if (IS_MAP) target[index] = result; // map - else if (result) switch (TYPE) { - case 3: return true; // some - case 5: return value; // find - case 6: return index; // findIndex - case 2: push.call(target, value); // filter - } else if (IS_EVERY) return false; // every - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; - }; -}; - -module.exports = { - // `Array.prototype.forEach` method - // https://tc39.github.io/ecma262/#sec-array.prototype.foreach - forEach: createMethod(0), - // `Array.prototype.map` method - // https://tc39.github.io/ecma262/#sec-array.prototype.map - map: createMethod(1), - // `Array.prototype.filter` method - // https://tc39.github.io/ecma262/#sec-array.prototype.filter - filter: createMethod(2), - // `Array.prototype.some` method - // https://tc39.github.io/ecma262/#sec-array.prototype.some - some: createMethod(3), - // `Array.prototype.every` method - // https://tc39.github.io/ecma262/#sec-array.prototype.every - every: createMethod(4), - // `Array.prototype.find` method - // https://tc39.github.io/ecma262/#sec-array.prototype.find - find: createMethod(5), - // `Array.prototype.findIndex` method - // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex - findIndex: createMethod(6) -}; - - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var regexpFlags = __webpack_require__(49); - -var nativeExec = RegExp.prototype.exec; -// This always refers to the native implementation, because the -// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, -// which loads this file before patching the method. -var nativeReplace = String.prototype.replace; - -var patchedExec = nativeExec; - -var UPDATES_LAST_INDEX_WRONG = (function () { - var re1 = /a/; - var re2 = /b*/g; - nativeExec.call(re1, 'a'); - nativeExec.call(re2, 'a'); - return re1.lastIndex !== 0 || re2.lastIndex !== 0; -})(); - -// nonparticipating capturing group, copied from es5-shim's String#split patch. -var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; - -var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; - -if (PATCH) { - patchedExec = function exec(str) { - var re = this; - var lastIndex, reCopy, match, i; - - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); - } - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; - - match = nativeExec.call(re, str); - - if (UPDATES_LAST_INDEX_WRONG && match) { - re.lastIndex = re.global ? match.index + match[0].length : lastIndex; - } - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ - nativeReplace.call(match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - - return match; - }; -} - -module.exports = patchedExec; - - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var fixRegExpWellKnownSymbolLogic = __webpack_require__(51); -var anObject = __webpack_require__(5); -var toObject = __webpack_require__(17); -var toLength = __webpack_require__(9); -var toInteger = __webpack_require__(21); -var requireObjectCoercible = __webpack_require__(13); -var advanceStringIndex = __webpack_require__(52); -var regExpExec = __webpack_require__(53); - -var max = Math.max; -var min = Math.min; -var floor = Math.floor; -var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g; -var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g; - -var maybeToString = function (it) { - return it === undefined ? it : String(it); -}; - -// @@replace logic -fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) { - return [ - // `String.prototype.replace` method - // https://tc39.github.io/ecma262/#sec-string.prototype.replace - function replace(searchValue, replaceValue) { - var O = requireObjectCoercible(this); - var replacer = searchValue == undefined ? undefined : searchValue[REPLACE]; - return replacer !== undefined - ? replacer.call(searchValue, O, replaceValue) - : nativeReplace.call(String(O), searchValue, replaceValue); - }, - // `RegExp.prototype[@@replace]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace - function (regexp, replaceValue) { - var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); - if (res.done) return res.value; - - var rx = anObject(regexp); - var S = String(this); - - var functionalReplace = typeof replaceValue === 'function'; - if (!functionalReplace) replaceValue = String(replaceValue); - - var global = rx.global; - if (global) { - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - } - var results = []; - while (true) { - var result = regExpExec(rx, S); - if (result === null) break; - - results.push(result); - if (!global) break; - - var matchStr = String(result[0]); - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - } - - var accumulatedResult = ''; - var nextSourcePosition = 0; - for (var i = 0; i < results.length; i++) { - result = results[i]; - - var matched = String(result[0]); - var position = max(min(toInteger(result.index), S.length), 0); - var captures = []; - // NOTE: This is equivalent to - // captures = result.slice(1).map(maybeToString) - // but for some reason `nativeSlice.call(result, 1, result.length)` (called in - // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and - // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. - for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); - var namedCaptures = result.groups; - if (functionalReplace) { - var replacerArgs = [matched].concat(captures, position, S); - if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); - var replacement = String(replaceValue.apply(undefined, replacerArgs)); - } else { - replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); - } - if (position >= nextSourcePosition) { - accumulatedResult += S.slice(nextSourcePosition, position) + replacement; - nextSourcePosition = position + matched.length; - } - } - return accumulatedResult + S.slice(nextSourcePosition); - } - ]; - - // https://tc39.github.io/ecma262/#sec-getsubstitution - function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { - var tailPos = position + matched.length; - var m = captures.length; - var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; - if (namedCaptures !== undefined) { - namedCaptures = toObject(namedCaptures); - symbols = SUBSTITUTION_SYMBOLS; - } - return nativeReplace.call(replacement, symbols, function (match, ch) { - var capture; - switch (ch.charAt(0)) { - case '$': return '$'; - case '&': return matched; - case '`': return str.slice(0, position); - case "'": return str.slice(tailPos); - case '<': - capture = namedCaptures[ch.slice(1, -1)]; - break; - default: // \d\d? - var n = +ch; - if (n === 0) return match; - if (n > m) { - var f = floor(n / 10); - if (f === 0) return match; - if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); - return match; - } - capture = captures[n - 1]; - } - return capture === undefined ? '' : capture; - }); - } -}); - - -/***/ }), -/* 31 */ -/***/ (function(module, exports) { - -// a string of all valid unicode whitespaces -// eslint-disable-next-line max-len -module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; - - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(2); -var forEach = __webpack_require__(75); - -// `Array.prototype.forEach` method -// https://tc39.github.io/ecma262/#sec-array.prototype.foreach -$({ target: 'Array', proto: true, forced: [].forEach != forEach }, { - forEach: forEach -}); - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(1); -var DOMIterables = __webpack_require__(122); -var forEach = __webpack_require__(75); -var hide = __webpack_require__(14); - -for (var COLLECTION_NAME in DOMIterables) { - var Collection = global[COLLECTION_NAME]; - var CollectionPrototype = Collection && Collection.prototype; - // some Chrome versions have non-configurable methods on DOMTokenList - if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { - hide(CollectionPrototype, 'forEach', forEach); - } catch (error) { - CollectionPrototype.forEach = forEach; - } -} - - -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(10); -var propertyIsEnumerableModule = __webpack_require__(94); -var createPropertyDescriptor = __webpack_require__(35); -var toIndexedObject = __webpack_require__(19); -var toPrimitive = __webpack_require__(37); -var has = __webpack_require__(16); -var IE8_DOM_DEFINE = __webpack_require__(59); - -var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - -// `Object.getOwnPropertyDescriptor` method -// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor -exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return nativeGetOwnPropertyDescriptor(O, P); - } catch (error) { /* empty */ } - if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); -}; - - -/***/ }), -/* 35 */ -/***/ (function(module, exports) { - -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - - -/***/ }), -/* 36 */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(4); -var classof = __webpack_require__(11); - -var split = ''.split; - -// fallback for non-array-like ES3 and non-enumerable old V8 strings -module.exports = fails(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins - return !Object('z').propertyIsEnumerable(0); -}) ? function (it) { - return classof(it) == 'String' ? split.call(it, '') : Object(it); -} : Object; - - -/***/ }), -/* 37 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(7); - -// `ToPrimitive` abstract operation -// https://tc39.github.io/ecma262/#sec-toprimitive -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (input, PREFERRED_STRING) { - if (!isObject(input)) return input; - var fn, val; - if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; - if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; - if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; - throw TypeError("Can't convert object to primitive value"); -}; - - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(1); -var isObject = __webpack_require__(7); - -var document = global.document; -// typeof document.createElement is 'object' in old IE -var EXISTS = isObject(document) && isObject(document.createElement); - -module.exports = function (it) { - return EXISTS ? document.createElement(it) : {}; -}; - - -/***/ }), -/* 39 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(1); -var hide = __webpack_require__(14); - -module.exports = function (key, value) { - try { - hide(global, key, value); - } catch (error) { - global[key] = value; - } return value; -}; - - -/***/ }), -/* 40 */ -/***/ (function(module, exports) { - -module.exports = false; - - -/***/ }), -/* 41 */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), -/* 42 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(21); - -var max = Math.max; -var min = Math.min; - -// Helper for a popular repeating case of the spec: -// Let integer be ? ToInteger(index). -// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length). -module.exports = function (index, length) { - var integer = toInteger(index); - return integer < 0 ? max(integer + length, 0) : min(integer, length); -}; - - -/***/ }), -/* 43 */ -/***/ (function(module, exports) { - -// IE8- don't enum bug keys -module.exports = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' -]; - - -/***/ }), -/* 44 */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(4); - -var replacement = /#|\.prototype\./; - -var isForced = function (feature, detection) { - var value = data[normalize(feature)]; - return value == POLYFILL ? true - : value == NATIVE ? false - : typeof detection == 'function' ? fails(detection) - : !!detection; -}; - -var normalize = isForced.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); -}; - -var data = isForced.data = {}; -var NATIVE = isForced.NATIVE = 'N'; -var POLYFILL = isForced.POLYFILL = 'P'; - -module.exports = isForced; - - -/***/ }), -/* 45 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(7); -var isArray = __webpack_require__(46); -var wellKnownSymbol = __webpack_require__(3); - -var SPECIES = wellKnownSymbol('species'); - -// `ArraySpeciesCreate` abstract operation -// https://tc39.github.io/ecma262/#sec-arrayspeciescreate -module.exports = function (originalArray, length) { - var C; - if (isArray(originalArray)) { - C = originalArray.constructor; - // cross-realm fallback - if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; - else if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); -}; - - -/***/ }), -/* 46 */ -/***/ (function(module, exports, __webpack_require__) { - -var classof = __webpack_require__(11); - -// `IsArray` abstract operation -// https://tc39.github.io/ecma262/#sec-isarray -module.exports = Array.isArray || function isArray(arg) { - return classof(arg) == 'Array'; -}; - - -/***/ }), -/* 47 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var toPrimitive = __webpack_require__(37); -var definePropertyModule = __webpack_require__(12); -var createPropertyDescriptor = __webpack_require__(35); - -module.exports = function (object, key, value) { - var propertyKey = toPrimitive(key); - if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); - else object[propertyKey] = value; -}; - - -/***/ }), -/* 48 */ -/***/ (function(module, exports, __webpack_require__) { - -var aFunction = __webpack_require__(24); - -// optional / simple context binding -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 0: return function () { - return fn.call(that); - }; - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; - - -/***/ }), -/* 49 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var anObject = __webpack_require__(5); - -// `RegExp.prototype.flags` getter implementation -// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags -module.exports = function () { - var that = anObject(this); - var result = ''; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.dotAll) result += 's'; - if (that.unicode) result += 'u'; - if (that.sticky) result += 'y'; - return result; -}; - - -/***/ }), -/* 50 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var redefine = __webpack_require__(8); -var anObject = __webpack_require__(5); -var fails = __webpack_require__(4); -var flags = __webpack_require__(49); - -var TO_STRING = 'toString'; -var RegExpPrototype = RegExp.prototype; -var nativeToString = RegExpPrototype[TO_STRING]; - -var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; }); -// FF44- RegExp#toString has a wrong name -var INCORRECT_NAME = nativeToString.name != TO_STRING; - -// `RegExp.prototype.toString` method -// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring -if (NOT_GENERIC || INCORRECT_NAME) { - redefine(RegExp.prototype, TO_STRING, function toString() { - var R = anObject(this); - var p = String(R.source); - var rf = R.flags; - var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf); - return '/' + p + '/' + f; - }, { unsafe: true }); -} - - -/***/ }), -/* 51 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var hide = __webpack_require__(14); -var redefine = __webpack_require__(8); -var fails = __webpack_require__(4); -var wellKnownSymbol = __webpack_require__(3); -var regexpExec = __webpack_require__(29); - -var SPECIES = wellKnownSymbol('species'); - -var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { - // #replace needs built-in support for named groups. - // #match works fine because it just return the exec results, even if it has - // a "grops" property. - var re = /./; - re.exec = function () { - var result = []; - result.groups = { a: '7' }; - return result; - }; - return ''.replace(re, '$') !== '7'; -}); - -// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec -// Weex JS has frozen built-in prototypes, so use try / catch wrapper -var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { - var re = /(?:)/; - var originalExec = re.exec; - re.exec = function () { return originalExec.apply(this, arguments); }; - var result = 'ab'.split(re); - return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; -}); - -module.exports = function (KEY, length, exec, sham) { - var SYMBOL = wellKnownSymbol(KEY); - - var DELEGATES_TO_SYMBOL = !fails(function () { - // String methods call symbol-named RegEp methods - var O = {}; - O[SYMBOL] = function () { return 7; }; - return ''[KEY](O) != 7; - }); - - var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { - // Symbol-named RegExp methods call .exec - var execCalled = false; - var re = /a/; - re.exec = function () { execCalled = true; return null; }; - - if (KEY === 'split') { - // RegExp[@@split] doesn't call the regex's exec method, but first creates - // a new one. We need to return the patched regex when creating the new one. - re.constructor = {}; - re.constructor[SPECIES] = function () { return re; }; - } - - re[SYMBOL](''); - return !execCalled; - }); - - if ( - !DELEGATES_TO_SYMBOL || - !DELEGATES_TO_EXEC || - (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || - (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) - ) { - var nativeRegExpMethod = /./[SYMBOL]; - var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { - if (regexp.exec === regexpExec) { - if (DELEGATES_TO_SYMBOL && !forceStringMethod) { - // The native String method already delegates to @@method (this - // polyfilled function), leasing to infinite recursion. - // We avoid it by directly calling the native @@method method. - return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; - } - return { done: true, value: nativeMethod.call(str, regexp, arg2) }; - } - return { done: false }; - }); - var stringMethod = methods[0]; - var regexMethod = methods[1]; - - redefine(String.prototype, KEY, stringMethod); - redefine(RegExp.prototype, SYMBOL, length == 2 - // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) - // 21.2.5.11 RegExp.prototype[@@split](string, limit) - ? function (string, arg) { return regexMethod.call(string, this, arg); } - // 21.2.5.6 RegExp.prototype[@@match](string) - // 21.2.5.9 RegExp.prototype[@@search](string) - : function (string) { return regexMethod.call(string, this); } - ); - if (sham) hide(RegExp.prototype[SYMBOL], 'sham', true); - } -}; - - -/***/ }), -/* 52 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var charAt = __webpack_require__(109).charAt; - -// `AdvanceStringIndex` abstract operation -// https://tc39.github.io/ecma262/#sec-advancestringindex -module.exports = function (S, index, unicode) { - return index + (unicode ? charAt(S, index).length : 1); -}; - - -/***/ }), -/* 53 */ -/***/ (function(module, exports, __webpack_require__) { - -var classof = __webpack_require__(11); -var regexpExec = __webpack_require__(29); - -// `RegExpExec` abstract operation -// https://tc39.github.io/ecma262/#sec-regexpexec -module.exports = function (R, S) { - var exec = R.exec; - if (typeof exec === 'function') { - var result = exec.call(R, S); - if (typeof result !== 'object') { - throw TypeError('RegExp exec method returned something other than an Object or null'); - } - return result; - } - - if (classof(R) !== 'RegExp') { - throw TypeError('RegExp#exec called on incompatible receiver'); - } - - return regexpExec.call(R, S); -}; - - - -/***/ }), -/* 54 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(2); -var isObject = __webpack_require__(7); -var isArray = __webpack_require__(46); -var toAbsoluteIndex = __webpack_require__(42); -var toLength = __webpack_require__(9); -var toIndexedObject = __webpack_require__(19); -var createProperty = __webpack_require__(47); -var arrayMethodHasSpeciesSupport = __webpack_require__(27); -var wellKnownSymbol = __webpack_require__(3); - -var SPECIES = wellKnownSymbol('species'); -var nativeSlice = [].slice; -var max = Math.max; - -// `Array.prototype.slice` method -// https://tc39.github.io/ecma262/#sec-array.prototype.slice -// fallback for not array-like ES3 strings and DOM objects -$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, { - slice: function slice(start, end) { - var O = toIndexedObject(this); - var length = toLength(O.length); - var k = toAbsoluteIndex(start, length); - var fin = toAbsoluteIndex(end === undefined ? length : end, length); - // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible - var Constructor, result, n; - if (isArray(O)) { - Constructor = O.constructor; - // cross-realm fallback - if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) { - Constructor = undefined; - } else if (isObject(Constructor)) { - Constructor = Constructor[SPECIES]; - if (Constructor === null) Constructor = undefined; - } - if (Constructor === Array || Constructor === undefined) { - return nativeSlice.call(O, k, fin); - } - } - result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0)); - for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); - result.length = n; - return result; - } -}); - - -/***/ }), -/* 55 */ -/***/ (function(module, exports, __webpack_require__) { - -var requireObjectCoercible = __webpack_require__(13); -var whitespaces = __webpack_require__(31); - -var whitespace = '[' + whitespaces + ']'; -var ltrim = RegExp('^' + whitespace + whitespace + '*'); -var rtrim = RegExp(whitespace + whitespace + '*$'); - -// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation -var createMethod = function (TYPE) { - return function ($this) { - var string = String(requireObjectCoercible($this)); - if (TYPE & 1) string = string.replace(ltrim, ''); - if (TYPE & 2) string = string.replace(rtrim, ''); - return string; - }; -}; - -module.exports = { - // `String.prototype.{ trimLeft, trimStart }` methods - // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart - start: createMethod(1), - // `String.prototype.{ trimRight, trimEnd }` methods - // https://tc39.github.io/ecma262/#sec-string.prototype.trimend - end: createMethod(2), - // `String.prototype.trim` method - // https://tc39.github.io/ecma262/#sec-string.prototype.trim - trim: createMethod(3) -}; - - -/***/ }), -/* 56 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(5); -var aFunction = __webpack_require__(24); -var wellKnownSymbol = __webpack_require__(3); - -var SPECIES = wellKnownSymbol('species'); - -// `SpeciesConstructor` abstract operation -// https://tc39.github.io/ecma262/#sec-speciesconstructor -module.exports = function (O, defaultConstructor) { - var C = anObject(O).constructor; - var S; - return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S); -}; - - -/***/ }), -/* 57 */ -/***/ (function(module, exports) { - -var v1='
'; -angular.module('lumx.checkbox').run(['$templateCache', function ($templateCache) {$templateCache.put('checkbox.html', v1);}]); -module.exports=v1 - -/***/ }), -/* 58 */ -/***/ (function(module, exports) { - -var v1=''; -angular.module('lumx.icon').run(['$templateCache', function ($templateCache) {$templateCache.put('icon.html', v1);}]); -module.exports=v1 - -/***/ }), -/* 59 */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(10); -var fails = __webpack_require__(4); -var createElement = __webpack_require__(38); - -// Thank's IE8 for his funny defineProperty -module.exports = !DESCRIPTORS && !fails(function () { - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a != 7; -}); - - -/***/ }), -/* 60 */ -/***/ (function(module, exports, __webpack_require__) { - -var shared = __webpack_require__(26); - -module.exports = shared('native-function-to-string', Function.toString); - - -/***/ }), -/* 61 */ -/***/ (function(module, exports, __webpack_require__) { - -var NATIVE_WEAK_MAP = __webpack_require__(95); -var global = __webpack_require__(1); -var isObject = __webpack_require__(7); -var hide = __webpack_require__(14); -var objectHas = __webpack_require__(16); -var sharedKey = __webpack_require__(62); -var hiddenKeys = __webpack_require__(41); - -var WeakMap = global.WeakMap; -var set, get, has; - -var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); -}; - -var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject(it) || (state = get(it)).type !== TYPE) { - throw TypeError('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; -}; - -if (NATIVE_WEAK_MAP) { - var store = new WeakMap(); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; - set = function (it, metadata) { - wmset.call(store, it, metadata); - return metadata; - }; - get = function (it) { - return wmget.call(store, it) || {}; - }; - has = function (it) { - return wmhas.call(store, it); - }; -} else { - var STATE = sharedKey('state'); - hiddenKeys[STATE] = true; - set = function (it, metadata) { - hide(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return objectHas(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return objectHas(it, STATE); - }; -} - -module.exports = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor -}; - - -/***/ }), -/* 62 */ -/***/ (function(module, exports, __webpack_require__) { - -var shared = __webpack_require__(26); -var uid = __webpack_require__(63); - -var keys = shared('keys'); - -module.exports = function (key) { - return keys[key] || (keys[key] = uid(key)); -}; - - -/***/ }), -/* 63 */ -/***/ (function(module, exports) { - -var id = 0; -var postfix = Math.random(); - -module.exports = function (key) { - return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); -}; - - -/***/ }), -/* 64 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(1); - - -/***/ }), -/* 65 */ -/***/ (function(module, exports, __webpack_require__) { - -var internalObjectKeys = __webpack_require__(66); -var enumBugKeys = __webpack_require__(43); - -var hiddenKeys = enumBugKeys.concat('length', 'prototype'); - -// `Object.getOwnPropertyNames` method -// https://tc39.github.io/ecma262/#sec-object.getownpropertynames -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); -}; - - -/***/ }), -/* 66 */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(16); -var toIndexedObject = __webpack_require__(19); -var indexOf = __webpack_require__(67).indexOf; -var hiddenKeys = __webpack_require__(41); - -module.exports = function (object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key; - for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~indexOf(result, key) || result.push(key); - } - return result; -}; - - -/***/ }), -/* 67 */ -/***/ (function(module, exports, __webpack_require__) { - -var toIndexedObject = __webpack_require__(19); -var toLength = __webpack_require__(9); -var toAbsoluteIndex = __webpack_require__(42); - -// `Array.prototype.{ indexOf, includes }` methods implementation -var createMethod = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) { - if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; - -module.exports = { - // `Array.prototype.includes` method - // https://tc39.github.io/ecma262/#sec-array.prototype.includes - includes: createMethod(true), - // `Array.prototype.indexOf` method - // https://tc39.github.io/ecma262/#sec-array.prototype.indexof - indexOf: createMethod(false) -}; - - -/***/ }), -/* 68 */ -/***/ (function(module, exports, __webpack_require__) { - -var internalObjectKeys = __webpack_require__(66); -var enumBugKeys = __webpack_require__(43); - -// `Object.keys` method -// https://tc39.github.io/ecma262/#sec-object.keys -module.exports = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys); -}; - - -/***/ }), -/* 69 */ -/***/ (function(module, exports, __webpack_require__) { - -var getBuiltIn = __webpack_require__(20); - -module.exports = getBuiltIn('document', 'documentElement'); - - -/***/ }), -/* 70 */ -/***/ (function(module, exports, __webpack_require__) { - -var redefine = __webpack_require__(8); - -var DatePrototype = Date.prototype; -var INVALID_DATE = 'Invalid Date'; -var TO_STRING = 'toString'; -var nativeDateToString = DatePrototype[TO_STRING]; -var getTime = DatePrototype.getTime; - -// `Date.prototype.toString` method -// https://tc39.github.io/ecma262/#sec-date.prototype.tostring -if (new Date(NaN) + '' != INVALID_DATE) { - redefine(DatePrototype, TO_STRING, function toString() { - var value = getTime.call(this); - // eslint-disable-next-line no-self-compare - return value === value ? nativeDateToString.call(this) : INVALID_DATE; - }); -} - - -/***/ }), -/* 71 */ -/***/ (function(module, exports, __webpack_require__) { - -var redefine = __webpack_require__(8); -var toString = __webpack_require__(108); - -var ObjectPrototype = Object.prototype; - -// `Object.prototype.toString` method -// https://tc39.github.io/ecma262/#sec-object.prototype.tostring -if (toString !== ObjectPrototype.toString) { - redefine(ObjectPrototype, 'toString', toString, { unsafe: true }); -} - - -/***/ }), -/* 72 */ -/***/ (function(module, exports, __webpack_require__) { - -var classofRaw = __webpack_require__(11); -var wellKnownSymbol = __webpack_require__(3); - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); -// ES3 wrong here -var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; - -// fallback for IE11 Script Access Denied error -var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } -}; - -// getting tag from ES6+ `Object.prototype.toString` -module.exports = function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw(O) - // ES3 arguments fallback - : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; -}; - - -/***/ }), -/* 73 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(2); -var IndexedObject = __webpack_require__(36); -var toIndexedObject = __webpack_require__(19); -var sloppyArrayMethod = __webpack_require__(22); - -var nativeJoin = [].join; - -var ES3_STRINGS = IndexedObject != Object; -var SLOPPY_METHOD = sloppyArrayMethod('join', ','); - -// `Array.prototype.join` method -// https://tc39.github.io/ecma262/#sec-array.prototype.join -$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, { - join: function join(separator) { - return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator); - } -}); - - -/***/ }), -/* 74 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var fixRegExpWellKnownSymbolLogic = __webpack_require__(51); -var anObject = __webpack_require__(5); -var toLength = __webpack_require__(9); -var requireObjectCoercible = __webpack_require__(13); -var advanceStringIndex = __webpack_require__(52); -var regExpExec = __webpack_require__(53); - -// @@match logic -fixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) { - return [ - // `String.prototype.match` method - // https://tc39.github.io/ecma262/#sec-string.prototype.match - function match(regexp) { - var O = requireObjectCoercible(this); - var matcher = regexp == undefined ? undefined : regexp[MATCH]; - return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); - }, - // `RegExp.prototype[@@match]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match - function (regexp) { - var res = maybeCallNative(nativeMatch, regexp, this); - if (res.done) return res.value; - - var rx = anObject(regexp); - var S = String(this); - - if (!rx.global) return regExpExec(rx, S); - - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - var A = []; - var n = 0; - var result; - while ((result = regExpExec(rx, S)) !== null) { - var matchStr = String(result[0]); - A[n] = matchStr; - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - n++; - } - return n === 0 ? null : A; - } - ]; -}); - - -/***/ }), -/* 75 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $forEach = __webpack_require__(28).forEach; -var sloppyArrayMethod = __webpack_require__(22); - -// `Array.prototype.forEach` method implementation -// https://tc39.github.io/ecma262/#sec-array.prototype.foreach -module.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) { - return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); -} : [].forEach; - - -/***/ }), -/* 76 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(2); -var $filter = __webpack_require__(28).filter; -var arrayMethodHasSpeciesSupport = __webpack_require__(27); - -// `Array.prototype.filter` method -// https://tc39.github.io/ecma262/#sec-array.prototype.filter -// with adding support of @@species -$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, { - filter: function filter(callbackfn /* , thisArg */) { - return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); - } -}); - - -/***/ }), -/* 77 */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(10); -var global = __webpack_require__(1); -var isForced = __webpack_require__(44); -var inheritIfRequired = __webpack_require__(135); -var defineProperty = __webpack_require__(12).f; -var getOwnPropertyNames = __webpack_require__(65).f; -var isRegExp = __webpack_require__(78); -var getFlags = __webpack_require__(49); -var redefine = __webpack_require__(8); -var fails = __webpack_require__(4); -var setSpecies = __webpack_require__(79); -var wellKnownSymbol = __webpack_require__(3); - -var MATCH = wellKnownSymbol('match'); -var NativeRegExp = global.RegExp; -var RegExpPrototype = NativeRegExp.prototype; -var re1 = /a/g; -var re2 = /a/g; - -// "new" should create a new object, old webkit bug -var CORRECT_NEW = new NativeRegExp(re1) !== re1; - -var FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || fails(function () { - re2[MATCH] = false; - // RegExp constructor can alter flags and IsRegExp works correct with @@match - return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; -}))); - -// `RegExp` constructor -// https://tc39.github.io/ecma262/#sec-regexp-constructor -if (FORCED) { - var RegExpWrapper = function RegExp(pattern, flags) { - var thisIsRegExp = this instanceof RegExpWrapper; - var patternIsRegExp = isRegExp(pattern); - var flagsAreUndefined = flags === undefined; - return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern - : inheritIfRequired(CORRECT_NEW - ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags) - : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper) - ? pattern.source - : pattern, patternIsRegExp && flagsAreUndefined ? getFlags.call(pattern) : flags) - , thisIsRegExp ? this : RegExpPrototype, RegExpWrapper); - }; - var proxy = function (key) { - key in RegExpWrapper || defineProperty(RegExpWrapper, key, { - configurable: true, - get: function () { return NativeRegExp[key]; }, - set: function (it) { NativeRegExp[key] = it; } - }); - }; - var keys = getOwnPropertyNames(NativeRegExp); - var index = 0; - while (keys.length > index) proxy(keys[index++]); - RegExpPrototype.constructor = RegExpWrapper; - RegExpWrapper.prototype = RegExpPrototype; - redefine(global, 'RegExp', RegExpWrapper); -} - -// https://tc39.github.io/ecma262/#sec-get-regexp-@@species -setSpecies('RegExp'); - - -/***/ }), -/* 78 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(7); -var classof = __webpack_require__(11); -var wellKnownSymbol = __webpack_require__(3); - -var MATCH = wellKnownSymbol('match'); - -// `IsRegExp` abstract operation -// https://tc39.github.io/ecma262/#sec-isregexp -module.exports = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp'); -}; - - -/***/ }), -/* 79 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var getBuiltIn = __webpack_require__(20); -var definePropertyModule = __webpack_require__(12); -var wellKnownSymbol = __webpack_require__(3); -var DESCRIPTORS = __webpack_require__(10); - -var SPECIES = wellKnownSymbol('species'); - -module.exports = function (CONSTRUCTOR_NAME) { - var Constructor = getBuiltIn(CONSTRUCTOR_NAME); - var defineProperty = definePropertyModule.f; - - if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { - defineProperty(Constructor, SPECIES, { - configurable: true, - get: function () { return this; } - }); - } -}; - - -/***/ }), -/* 80 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(1); - -module.exports = global.Promise; - - -/***/ }), -/* 81 */ -/***/ (function(module, exports) { - -module.exports = {}; - - -/***/ }), -/* 82 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(1); -var fails = __webpack_require__(4); -var classof = __webpack_require__(11); -var bind = __webpack_require__(48); -var html = __webpack_require__(69); -var createElement = __webpack_require__(38); - -var location = global.location; -var set = global.setImmediate; -var clear = global.clearImmediate; -var process = global.process; -var MessageChannel = global.MessageChannel; -var Dispatch = global.Dispatch; -var counter = 0; -var queue = {}; -var ONREADYSTATECHANGE = 'onreadystatechange'; -var defer, channel, port; - -var run = function (id) { - // eslint-disable-next-line no-prototype-builtins - if (queue.hasOwnProperty(id)) { - var fn = queue[id]; - delete queue[id]; - fn(); - } -}; - -var runner = function (id) { - return function () { - run(id); - }; -}; - -var listener = function (event) { - run(event.data); -}; - -var post = function (id) { - // old engines have not location.origin - global.postMessage(id + '', location.protocol + '//' + location.host); -}; - -// Node.js 0.9+ & IE10+ has setImmediate, otherwise: -if (!set || !clear) { - set = function setImmediate(fn) { - var args = []; - var i = 1; - while (arguments.length > i) args.push(arguments[i++]); - queue[++counter] = function () { - // eslint-disable-next-line no-new-func - (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args); - }; - defer(counter); - return counter; - }; - clear = function clearImmediate(id) { - delete queue[id]; - }; - // Node.js 0.8- - if (classof(process) == 'process') { - defer = function (id) { - process.nextTick(runner(id)); - }; - // Sphere (JS game engine) Dispatch API - } else if (Dispatch && Dispatch.now) { - defer = function (id) { - Dispatch.now(runner(id)); - }; - // Browsers with MessageChannel, includes WebWorkers - } else if (MessageChannel) { - channel = new MessageChannel(); - port = channel.port2; - channel.port1.onmessage = listener; - defer = bind(port.postMessage, port, 1); - // Browsers with postMessage, skip WebWorkers - // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' - } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) { - defer = post; - global.addEventListener('message', listener, false); - // IE8- - } else if (ONREADYSTATECHANGE in createElement('script')) { - defer = function (id) { - html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { - html.removeChild(this); - run(id); - }; - }; - // Rest old browsers - } else { - defer = function (id) { - setTimeout(runner(id), 0); - }; - } -} - -module.exports = { - set: set, - clear: clear -}; - - -/***/ }), -/* 83 */ -/***/ (function(module, exports, __webpack_require__) { - -var getBuiltIn = __webpack_require__(20); - -module.exports = getBuiltIn('navigator', 'userAgent') || ''; - - -/***/ }), -/* 84 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(5); -var isObject = __webpack_require__(7); -var newPromiseCapability = __webpack_require__(85); - -module.exports = function (C, x) { - anObject(C); - if (isObject(x) && x.constructor === C) return x; - var promiseCapability = newPromiseCapability.f(C); - var resolve = promiseCapability.resolve; - resolve(x); - return promiseCapability.promise; -}; - - -/***/ }), -/* 85 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var aFunction = __webpack_require__(24); - -var PromiseCapability = function (C) { - var resolve, reject; - this.promise = new C(function ($$resolve, $$reject) { - if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); - resolve = $$resolve; - reject = $$reject; - }); - this.resolve = aFunction(resolve); - this.reject = aFunction(reject); -}; - -// 25.4.1.5 NewPromiseCapability(C) -module.exports.f = function (C) { - return new PromiseCapability(C); -}; - - -/***/ }), -/* 86 */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(87); -__webpack_require__(88); -__webpack_require__(89); -__webpack_require__(90); -__webpack_require__(91); -__webpack_require__(92); -__webpack_require__(100); -__webpack_require__(101); -__webpack_require__(105); -__webpack_require__(106); -__webpack_require__(107); -__webpack_require__(110); -__webpack_require__(192); -__webpack_require__(111); -__webpack_require__(114); -__webpack_require__(115); -__webpack_require__(118); -__webpack_require__(119); -__webpack_require__(120); -__webpack_require__(121); -__webpack_require__(123); -__webpack_require__(124); -__webpack_require__(125); -__webpack_require__(126); -__webpack_require__(127); -__webpack_require__(130); -__webpack_require__(132); -__webpack_require__(133); -__webpack_require__(134); -__webpack_require__(138); -__webpack_require__(143); -__webpack_require__(157); -__webpack_require__(158); -__webpack_require__(159); -__webpack_require__(160); -__webpack_require__(161); -__webpack_require__(162); -__webpack_require__(163); -__webpack_require__(164); -__webpack_require__(165); -__webpack_require__(166); -__webpack_require__(167); -__webpack_require__(168); -__webpack_require__(169); -__webpack_require__(170); -__webpack_require__(171); -__webpack_require__(172); -__webpack_require__(173); -__webpack_require__(174); -__webpack_require__(175); -__webpack_require__(176); -__webpack_require__(57); -__webpack_require__(177); -__webpack_require__(178); -__webpack_require__(179); -__webpack_require__(180); -__webpack_require__(181); -__webpack_require__(182); -__webpack_require__(183); -__webpack_require__(184); -__webpack_require__(185); -__webpack_require__(186); -__webpack_require__(187); -__webpack_require__(188); -__webpack_require__(189); -__webpack_require__(58); -__webpack_require__(190); -module.exports = __webpack_require__(191); - - -/***/ }), -/* 87 */ -/***/ (function(module, exports, __webpack_require__) { - -// extracted by extract-css-chunks-webpack-plugin - -/***/ }), -/* 88 */ -/***/ (function(module, exports, __webpack_require__) { - -// extracted by extract-css-chunks-webpack-plugin - -/***/ }), -/* 89 */ -/***/ (function(module, exports) { - -angular.module('lumx.utils.depth', []); -angular.module('lumx.utils.enter-keypress', []); -angular.module('lumx.utils.event-scheduler', []); -angular.module('lumx.utils.focus-on-init', []); -angular.module('lumx.utils.focus-trap', []); -angular.module('lumx.utils.stop-propagation', []); -angular.module('lumx.utils.transclude-replace', []); -angular.module('lumx.utils.utils', []); -angular.module('lumx.utils', ['lumx.utils.depth', 'lumx.utils.enter-keypress', 'lumx.utils.event-scheduler', 'lumx.utils.focus-on-init', 'lumx.utils.focus-trap', 'lumx.utils.stop-propagation', 'lumx.utils.transclude-replace', 'lumx.utils.utils']); -angular.module('lumx.button', []); -angular.module('lumx.checkbox', []); -angular.module('lumx.data-table', []); -angular.module('lumx.date-picker', []); -angular.module('lumx.dialog', ['lumx.utils.event-scheduler']); -angular.module('lumx.dropdown', ['lumx.utils.event-scheduler']); -angular.module('lumx.fab', []); -angular.module('lumx.file-input', []); -angular.module('lumx.icon', []); -angular.module('lumx.notification', ['lumx.utils.event-scheduler']); -angular.module('lumx.progress', []); -angular.module('lumx.radio-button', []); -angular.module('lumx.ripple', []); -angular.module('lumx.search-filter', []); -angular.module('lumx.select', []); -angular.module('lumx.stepper', []); -angular.module('lumx.switch', []); -angular.module('lumx.tabs', []); -angular.module('lumx.text-field', []); -angular.module('lumx.tooltip', []); -angular.module('lumx', ['lumx.button', 'lumx.checkbox', 'lumx.data-table', 'lumx.date-picker', 'lumx.dialog', 'lumx.dropdown', 'lumx.fab', 'lumx.file-input', 'lumx.icon', 'lumx.notification', 'lumx.progress', 'lumx.radio-button', 'lumx.ripple', 'lumx.search-filter', 'lumx.select', 'lumx.stepper', 'lumx.switch', 'lumx.tabs', 'lumx.text-field', 'lumx.tooltip', 'lumx.utils']); - -/***/ }), -/* 90 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DepthService", function() { return DepthService; }); -function DepthService() { - 'ngInject'; - - var service = this; - var _depth = 1000; - - function get() { - return _depth; - } - - function increase() { - _depth++; - } - - service.get = get; - service.increase = increase; - service.getDepth = get; - service.register = increase; -} - -angular.module('lumx.utils.depth').service('LxDepthService', DepthService); - - -/***/ }), -/* 91 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EnterKeypressDirective", function() { return EnterKeypressDirective; }); -/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); - - -function EnterKeypressDirective() { - 'ngInject'; - - function link(scope, el, attrs) { - el.on('keydown keypress', function (evt) { - if (evt.which === _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_0__[/* ENTER_KEY_CODE */ "b"]) { - scope.$apply(function evalExpression() { - scope.$eval(attrs.lxEnterKeypress, { - $event: evt - }); - }); - evt.preventDefault(); - } - }); - } - - return { - link: link - }; -} - -angular.module('lumx.utils.enter-keypress').directive('lxEnterKeypress', EnterKeypressDirective); - - -/***/ }), -/* 92 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EventSchedulerService", function() { return EventSchedulerService; }); -/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18); -/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23); -/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_1__); - - -EventSchedulerService.$inject = ["$document", "LxUtilsService"]; - -function EventSchedulerService($document, LxUtilsService) { - 'ngInject'; - - var service = this; - var _handlers = {}; - var _schedule = {}; - - function _handle(evt) { - var scheduler = _schedule[evt.type]; - - if (angular.isDefined(scheduler)) { - for (var i = 0, len = scheduler.length; i < len; i++) { - var handler = scheduler[i]; - - if (angular.isDefined(handler) && angular.isDefined(handler.cb) && angular.isFunction(handler.cb)) { - handler.cb(evt); - - if (evt.isPropagationStopped()) { - break; - } - } - } - } - } - - function register(eventName, cb) { - var handler = { - cb: cb, - eventName: eventName - }; - var id = LxUtilsService.generateUUID(); - _handlers[id] = handler; - - if (angular.isUndefined(_schedule[eventName])) { - _schedule[eventName] = []; - $document.on(eventName, _handle); - } - - _schedule[eventName].unshift(_handlers[id]); - - return id; - } - - function unregister(id) { - var found = false; - var handler = _handlers[id]; - - if (angular.isDefined(handler) && angular.isDefined(_schedule[handler.eventName])) { - var index = _schedule[handler.eventName].indexOf(handler); - - if (angular.isDefined(index) && index > -1) { - _schedule[handler.eventName].splice(index, 1); - - delete _handlers[id]; - found = true; - } - - if (_schedule[handler.eventName].length === 0) { - delete _schedule[handler.eventName]; - $document.off(handler.eventName, _handle); - } - } - - return found; - } - - service.register = register; - service.unregister = unregister; -} - -angular.module('lumx.utils.event-scheduler').service('LxEventSchedulerService', EventSchedulerService); - - -/***/ }), -/* 93 */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || new Function("return this")(); -} catch (e) { - // This works if the window reference is available - if (typeof window === "object") g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), -/* 94 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var nativePropertyIsEnumerable = {}.propertyIsEnumerable; -var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - -// Nashorn ~ JDK8 bug -var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); - -// `Object.prototype.propertyIsEnumerable` method implementation -// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable -exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; -} : nativePropertyIsEnumerable; - - -/***/ }), -/* 95 */ -/***/ (function(module, exports, __webpack_require__) { - -var global = __webpack_require__(1); -var nativeFunctionToString = __webpack_require__(60); - -var WeakMap = global.WeakMap; - -module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap)); - - -/***/ }), -/* 96 */ -/***/ (function(module, exports, __webpack_require__) { - -var has = __webpack_require__(16); -var ownKeys = __webpack_require__(97); -var getOwnPropertyDescriptorModule = __webpack_require__(34); -var definePropertyModule = __webpack_require__(12); - -module.exports = function (target, source) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } -}; - - -/***/ }), -/* 97 */ -/***/ (function(module, exports, __webpack_require__) { - -var getBuiltIn = __webpack_require__(20); -var getOwnPropertyNamesModule = __webpack_require__(65); -var getOwnPropertySymbolsModule = __webpack_require__(98); -var anObject = __webpack_require__(5); - -// all object keys, includes non-enumerable and symbols -module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; -}; - - -/***/ }), -/* 98 */ -/***/ (function(module, exports) { - -exports.f = Object.getOwnPropertySymbols; - - -/***/ }), -/* 99 */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(4); - -module.exports = !!Object.getOwnPropertySymbols && !fails(function () { - // Chrome 38 Symbol has incorrect toString conversion - // eslint-disable-next-line no-undef - return !String(Symbol()); -}); - - -/***/ }), -/* 100 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FocusOnInitDirective", function() { return FocusOnInitDirective; }); -FocusOnInitDirective.$inject = ["$timeout"]; - -function FocusOnInitDirective($timeout) { - 'ngInject'; - - function link(scope, el, attrs) { - if (angular.isDefined(attrs.lxFocusOnInit) && attrs.lxFocusOnInit && !scope.$eval(attrs.lxFocusOnInit)) { - return; - } - - $timeout(function () { - el.focus(); - }); - } - - return { - link: link - }; -} - -angular.module('lumx.utils.focus-on-init').directive('lxFocusOnInit', FocusOnInitDirective); - - -/***/ }), -/* 101 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FocusTrapService", function() { return FocusTrapService; }); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0); - - - -function FocusTrapService() { - 'ngInject'; - - var service = this; - - var _activeElement; - - function _onKeyPress(evt) { - if (evt.keyCode !== _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__[/* TAB_KEY_CODE */ "c"]) { - return; - } - - var focusableEls = _activeElement.find('a[href]:not([tabindex="-1"]), button:not([tabindex="-1"]), textarea:not([tabindex="-1"]), input[type="text"]:not([tabindex="-1"]), input[type="radio"]:not([tabindex="-1"]), input[type="checkbox"]:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"])'); - - var firstFocusableEl = focusableEls[0]; - var lastFocusableEl = focusableEls[focusableEls.length - 1]; - - if (evt.shiftKey) { - if (document.activeElement === firstFocusableEl) { - lastFocusableEl.focus(); - evt.preventDefault(); - } - } else if (document.activeElement === lastFocusableEl) { - firstFocusableEl.focus(); - evt.preventDefault(); - } - } - - function activate(el) { - _activeElement = el; - - _activeElement.on('keydown keypress', _onKeyPress); - } - - function disable() { - _activeElement.off('keydown keypress', _onKeyPress); - - _activeElement = undefined; - } - - service.activate = activate; - service.disable = disable; -} - -angular.module('lumx.utils.focus-trap').service('LxFocusTrapService', FocusTrapService); - - -/***/ }), -/* 102 */ -/***/ (function(module, exports, __webpack_require__) { - -var wellKnownSymbol = __webpack_require__(3); -var create = __webpack_require__(103); -var hide = __webpack_require__(14); - -var UNSCOPABLES = wellKnownSymbol('unscopables'); -var ArrayPrototype = Array.prototype; - -// Array.prototype[@@unscopables] -// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables -if (ArrayPrototype[UNSCOPABLES] == undefined) { - hide(ArrayPrototype, UNSCOPABLES, create(null)); -} - -// add a key to Array.prototype[@@unscopables] -module.exports = function (key) { - ArrayPrototype[UNSCOPABLES][key] = true; -}; - - -/***/ }), -/* 103 */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(5); -var defineProperties = __webpack_require__(104); -var enumBugKeys = __webpack_require__(43); -var hiddenKeys = __webpack_require__(41); -var html = __webpack_require__(69); -var documentCreateElement = __webpack_require__(38); -var sharedKey = __webpack_require__(62); -var IE_PROTO = sharedKey('IE_PROTO'); - -var PROTOTYPE = 'prototype'; -var Empty = function () { /* empty */ }; - -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement('iframe'); - var length = enumBugKeys.length; - var lt = '<'; - var script = 'script'; - var gt = '>'; - var js = 'java' + script + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - iframe.src = String(js); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]]; - return createDict(); -}; - -// `Object.create` method -// https://tc39.github.io/ecma262/#sec-object.create -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : defineProperties(result, Properties); -}; - -hiddenKeys[IE_PROTO] = true; - - -/***/ }), -/* 104 */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(10); -var definePropertyModule = __webpack_require__(12); -var anObject = __webpack_require__(5); -var objectKeys = __webpack_require__(68); - -// `Object.defineProperties` method -// https://tc39.github.io/ecma262/#sec-object.defineproperties -module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = objectKeys(Properties); - var length = keys.length; - var index = 0; - var key; - while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]); - return O; -}; - - -/***/ }), -/* 105 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StopPropagationDirective", function() { return StopPropagationDirective; }); -function StopPropagationDirective() { - 'ngInject'; - - function link(scope, el, attrs) { - el.on(attrs.lxStopPropagation, function (evt) { - evt.stopPropagation(); - }); - } - - return { - link: link - }; -} - -angular.module('lumx.utils.stop-propagation').directive('lxStopPropagation', StopPropagationDirective); - - -/***/ }), -/* 106 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TranscludeReplaceDirective", function() { return TranscludeReplaceDirective; }); -function TranscludeReplaceDirective() { - 'ngInject'; - - function link(scope, el, attrs, ctrl, transclude) { - if (!transclude) { - return; - } - - transclude(function (clone) { - if (clone.length > 0) { - el.replaceWith(clone); - } else { - el.remove(); - } - }); - } - - return { - link: link, - restrict: 'EA', - terminal: true - }; -} - -angular.module('lumx.utils.transclude-replace').directive('ngTranscludeReplace', TranscludeReplaceDirective); - - -/***/ }), -/* 107 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UtilsService", function() { return UtilsService; }); -/* harmony import */ var core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(70); -/* harmony import */ var core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71); -/* harmony import */ var core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15); -/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(50); -/* harmony import */ var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30); -/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_4__); - - - - - -UtilsService.$inject = ["$rootScope"]; - -function UtilsService($rootScope) { - 'ngInject'; - - var service = this; - - function debounce(func, wait, immediate) { - var _this = this, - _arguments = arguments; - - var timeout; - return function () { - var context = _this; - var args = _arguments; - - var later = function later() { - timeout = null; - - if (!immediate) { - func.apply(context, args); - } - }; - - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - - if (callNow) { - func.apply(context, args); - } - }; - } - - function disableBodyScroll() { - $rootScope.$broadcast('lx-scroll__disable'); - } - - function escapeRegexp(strToEscape) { - return strToEscape.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'); - } - - function generateUUID() { - var time = new Date().getTime(); - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (char) { - var random = (time + Math.random() * 16) % 16 | 0; - time = Math.floor(time / 16); - return (char === 'x' ? random : random & 0x3 | 0x8).toString(16); - }); - } - - function restoreBodyScroll() { - $rootScope.$broadcast('lx-scroll__restore'); - } - - service.debounce = debounce; - service.disableBodyScroll = disableBodyScroll; - service.escapeRegexp = escapeRegexp; - service.generateUUID = generateUUID; - service.restoreBodyScroll = restoreBodyScroll; -} - -angular.module('lumx.utils.utils').service('LxUtilsService', UtilsService); - - -/***/ }), -/* 108 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var classof = __webpack_require__(72); -var wellKnownSymbol = __webpack_require__(3); - -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); -var test = {}; - -test[TO_STRING_TAG] = 'z'; - -// `Object.prototype.toString` method implementation -// https://tc39.github.io/ecma262/#sec-object.prototype.tostring -module.exports = String(test) !== '[object z]' ? function toString() { - return '[object ' + classof(this) + ']'; -} : test.toString; - - -/***/ }), -/* 109 */ -/***/ (function(module, exports, __webpack_require__) { - -var toInteger = __webpack_require__(21); -var requireObjectCoercible = __webpack_require__(13); - -// `String.prototype.{ codePointAt, at }` methods implementation -var createMethod = function (CONVERT_TO_STRING) { - return function ($this, pos) { - var S = String(requireObjectCoercible($this)); - var position = toInteger(pos); - var size = S.length; - var first, second; - if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; - first = S.charCodeAt(position); - return first < 0xD800 || first > 0xDBFF || position + 1 === size - || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF - ? CONVERT_TO_STRING ? S.charAt(position) : first - : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; - }; -}; - -module.exports = { - // `String.prototype.codePointAt` method - // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat - codeAt: createMethod(false), - // `String.prototype.at` method - // https://github.com/mathiasbynens/String.prototype.at - charAt: createMethod(true) -}; - - -/***/ }), -/* 110 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ButtonDirective", function() { return ButtonDirective; }); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(73); -/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15); -/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(74); -/* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0); - - - - - - -function ButtonDirective() { - 'ngInject'; - - function isAnchor(attrs) { - return angular.isDefined(attrs.href) || angular.isDefined(attrs.ngHref) || angular.isDefined(attrs.ngLink) || angular.isDefined(attrs.uiSref); - } - - function getTemplate(el, attrs) { - if (isAnchor(attrs)) { - return "
"; - } - - return ""; - } - - function link(scope, el, attrs) { - if (!attrs.lxVariant && !attrs.lxType || attrs.lxVariant === 'button' || attrs.lxType === 'raised' || attrs.lxType === 'flat') { - var leftIcon = el.find('i:first-child'); - var rightIcon = el.find('i:last-child'); - var label = el.find('span'); - - if (leftIcon.length > 0) { - el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--has-left-icon"); - } - - if (rightIcon.length > 0) { - el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--has-right-icon"); - } - - if (label.length === 0) { - el.wrapInner(''); - } - } - - var isDefaultEmphasis = !attrs.lxEmphasis || attrs.lxEmphasis === 'high'; - var defaultProps = { - color: isDefaultEmphasis ? 'primary' : 'dark', - emphasis: 'high', - size: 'm', - theme: 'light', - variant: 'button' - }; - - if (!attrs.lxColor) { - el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--color-" + defaultProps.color); - } - - attrs.$observe('lxColor', function (color) { - if (!color) { - return; - } - - el.removeClass(function (index, className) { - return (className.match(/(?:\S|-)*button--color-\S+/g) || []).join(' '); - }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--color-" + color); - }); - - if (!attrs.lxEmphasis) { - el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--emphasis-" + defaultProps.emphasis); - } - - attrs.$observe('lxEmphasis', function (emphasis) { - if (!emphasis) { - return; - } - - el.removeClass(function (index, className) { - return (className.match(/(?:\S|-)*button--emphasis-\S+/g) || []).join(' '); - }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--emphasis-" + emphasis); - }); - - if (!attrs.lxSize) { - el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--size-" + defaultProps.size); - } - - attrs.$observe('lxSize', function (size) { - if (!size) { - return; - } - - var sizeFallback = { - xs: 's', - s: 's', - m: 'm', - l: 'm', - xl: 'm' - }; - el.removeClass(function (index, className) { - return (className.match(/(?:\S|-)*button--size-\S+/g) || []).join(' '); - }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--size-" + sizeFallback[size]); - }); - - if (!attrs.lxTheme && isDefaultEmphasis) { - el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--theme-" + defaultProps.theme); - } - - attrs.$observe('lxTheme', function (theme) { - if (!theme) { - return; - } - - el.removeClass(function (index, className) { - return (className.match(/(?:\S|-)*button--theme-\S+/g) || []).join(' '); - }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--theme-" + theme); - }); - - if (!attrs.lxVariant) { - el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--variant-" + defaultProps.variant); - } - - attrs.$observe('lxVariant', function (variant) { - if (!variant) { - return; - } - - el.removeClass(function (index, className) { - return (className.match(/(?:\S|-)*button--variant-\S+/g) || []).join(' '); - }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--variant-" + variant); - }); - attrs.$observe('lxType', function (type) { - if (!type) { - return; - } - - var emphasisFallback = { - raised: 'high', - flat: 'low', - fab: 'high', - icon: 'low' - }; - el.removeClass(function (index, className) { - return (className.match(/(?:\S|-)*button--emphasis-\S+/g) || []).join(' '); - }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--emphasis-" + emphasisFallback[type]); - - if (type === 'fab' || type === 'icon') { - el.removeClass(function (index, className) { - return (className.match(/(?:\S|-)*button--variant-\S+/g) || []).join(' '); - }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--variant-icon"); - } - }); - scope.$watch(attrs.lxIsSelected, function (isSelected) { - if (isSelected) { - el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--is-selected"); - } else { - el.removeClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--is-selected"); - } - }); - } - - return { - link: link, - replace: true, - restrict: 'E', - template: getTemplate, - transclude: true - }; -} - -angular.module('lumx.button').directive('lxButton', ButtonDirective); - - -/***/ }), -/* 111 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18); -/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(112); -/* harmony import */ var core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23); -/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(113); -/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_3__); - - - - - -(function () { - 'use strict'; - - angular.module('lumx.data-table').directive('lxDataTable', lxDataTable); - - function lxDataTable() { - return { - restrict: 'E', - templateUrl: 'data-table.html', - scope: { - activable: '=?lxActivable', - border: '=?lxBorder', - bulk: '=?lxBulk', - selectable: '=?lxSelectable', - thumbnail: '=?lxThumbnail', - tbody: '=lxTbody', - thead: '=lxThead' - }, - link: link, - controller: LxDataTableController, - controllerAs: 'lxDataTable', - bindToController: true, - transclude: true, - replace: true - }; - - function link(scope, element, attrs, ctrl) { - attrs.$observe('id', function (_newId) { - ctrl.id = _newId; - }); - } - } - - LxDataTableController.$inject = ['$rootScope', '$sce', '$scope']; - - function LxDataTableController($rootScope, $sce, $scope) { - var lxDataTable = this; - lxDataTable.areAllRowsSelected = areAllRowsSelected; - lxDataTable.border = angular.isUndefined(lxDataTable.border) ? true : lxDataTable.border; - lxDataTable.bulk = angular.isUndefined(lxDataTable.bulk) ? true : lxDataTable.bulk; - lxDataTable.sort = sort; - lxDataTable.toggleActivation = toggleActivation; - lxDataTable.toggleAllSelected = toggleAllSelected; - lxDataTable.toggleSelection = toggleSelection; - lxDataTable.$sce = $sce; - lxDataTable.allRowsSelected = false; - lxDataTable.selectedRows = []; - $scope.$on('lx-data-table__select', function (event, id, row) { - if (id === lxDataTable.id && angular.isDefined(row)) { - _select(angular.isArray(row) && row.length > 0 ? row[0] : row); - } - }); - $scope.$on('lx-data-table__select-all', function (event, id) { - if (id === lxDataTable.id) { - _selectAll(); - } - }); - $scope.$on('lx-data-table__unselect', function (event, id, row) { - if (id === lxDataTable.id && angular.isDefined(row)) { - _unselect(angular.isArray(row) && row.length > 0 ? row[0] : row); - } - }); - $scope.$on('lx-data-table__unselect-all', function (event, id) { - if (id === lxDataTable.id) { - _unselectAll(); - } - }); - $scope.$on('lx-data-table__activate', function (event, id, row) { - if (id === lxDataTable.id && angular.isDefined(row)) { - _activate(angular.isArray(row) && row.length > 0 ? row[0] : row); - } - }); - $scope.$on('lx-data-table__deactivate', function (event, id, row) { - if (id === lxDataTable.id && angular.isDefined(row)) { - _deactivate(angular.isArray(row) && row.length > 0 ? row[0] : row); - } - }); - - function _activate(row) { - toggleActivation(row, true); - } - - function _deactivate(row) { - toggleActivation(row, false); - } - - function _select(row) { - toggleSelection(row, true); - } - - function _selectAll() { - lxDataTable.selectedRows.length = 0; - - for (var i = 0, len = lxDataTable.tbody.length; i < len; i++) { - if (!lxDataTable.tbody[i].lxDataTableDisabled) { - lxDataTable.tbody[i].lxDataTableSelected = true; - lxDataTable.selectedRows.push(lxDataTable.tbody[i]); - } - } - - lxDataTable.allRowsSelected = true; - $rootScope.$broadcast('lx-data-table__unselected', lxDataTable.id, lxDataTable.selectedRows); - } - - function _unselect(row) { - toggleSelection(row, false); - } - - function _unselectAll() { - for (var i = 0, len = lxDataTable.tbody.length; i < len; i++) { - if (!lxDataTable.tbody[i].lxDataTableDisabled) { - lxDataTable.tbody[i].lxDataTableSelected = false; - } - } - - lxDataTable.allRowsSelected = false; - lxDataTable.selectedRows.length = 0; - $rootScope.$broadcast('lx-data-table__selected', lxDataTable.id, lxDataTable.selectedRows); - } - - function areAllRowsSelected() { - var displayedRows = 0; - - for (var i = 0, len = lxDataTable.tbody.length; i < len; i++) { - if (!lxDataTable.tbody[i].lxDataTableDisabled) { - displayedRows++; - } - } - - if (displayedRows === lxDataTable.selectedRows.length) { - lxDataTable.allRowsSelected = true; - } else { - lxDataTable.allRowsSelected = false; - } - } - - function sort(_column) { - if (!_column.sortable) { - return; - } - - for (var i = 0, len = lxDataTable.thead.length; i < len; i++) { - if (lxDataTable.thead[i].sortable && lxDataTable.thead[i].name !== _column.name) { - lxDataTable.thead[i].sort = undefined; - } - } - - if (!_column.sort || _column.sort === 'desc') { - _column.sort = 'asc'; - } else { - _column.sort = 'desc'; - } - - $rootScope.$broadcast('lx-data-table__sorted', lxDataTable.id, _column); - } - - function toggleActivation(_row, _newActivatedStatus) { - if (_row.lxDataTableDisabled || !lxDataTable.activable) { - return; - } - - for (var i = 0, len = lxDataTable.tbody.length; i < len; i++) { - if (lxDataTable.tbody.indexOf(_row) !== i) { - lxDataTable.tbody[i].lxDataTableActivated = false; - } - } - - _row.lxDataTableActivated = !_row.lxDataTableActivated; - - if (_row.lxDataTableActivated) { - $rootScope.$broadcast('lx-data-table__activated', lxDataTable.id, _row); - } else { - $rootScope.$broadcast('lx-data-table__deactivated', lxDataTable.id, _row); - } - } - - function toggleAllSelected() { - if (!lxDataTable.bulk) { - return; - } - - if (lxDataTable.allRowsSelected) { - _unselectAll(); - } else { - _selectAll(); - } - } - - function toggleSelection(_row, _newSelectedStatus, _event) { - if (_row.lxDataTableDisabled || !lxDataTable.selectable) { - return; - } - - if (angular.isDefined(_event)) { - _event.stopPropagation(); - } - - _row.lxDataTableSelected = angular.isDefined(_newSelectedStatus) ? _newSelectedStatus : !_row.lxDataTableSelected; - - if (_row.lxDataTableSelected) { - if (lxDataTable.selectedRows.length === 0 || lxDataTable.selectedRows.length && lxDataTable.selectedRows.indexOf(_row) === -1) { - lxDataTable.selectedRows.push(_row); - lxDataTable.areAllRowsSelected(); - $rootScope.$broadcast('lx-data-table__selected', lxDataTable.id, lxDataTable.selectedRows, _row); - } - } else { - if (lxDataTable.selectedRows.length && lxDataTable.selectedRows.indexOf(_row) > -1) { - lxDataTable.selectedRows.splice(lxDataTable.selectedRows.indexOf(_row), 1); - lxDataTable.allRowsSelected = false; - $rootScope.$broadcast('lx-data-table__unselected', lxDataTable.id, lxDataTable.selectedRows, _row); - } - } - } - } -})(); - -/***/ }), -/* 112 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(2); -var aFunction = __webpack_require__(24); -var toObject = __webpack_require__(17); -var fails = __webpack_require__(4); -var sloppyArrayMethod = __webpack_require__(22); - -var nativeSort = [].sort; -var test = [1, 2, 3]; - -// IE8- -var FAILS_ON_UNDEFINED = fails(function () { - test.sort(undefined); -}); -// V8 bug -var FAILS_ON_NULL = fails(function () { - test.sort(null); -}); -// Old WebKit -var SLOPPY_METHOD = sloppyArrayMethod('sort'); - -var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD; - -// `Array.prototype.sort` method -// https://tc39.github.io/ecma262/#sec-array.prototype.sort -$({ target: 'Array', proto: true, forced: FORCED }, { - sort: function sort(comparefn) { - return comparefn === undefined - ? nativeSort.call(toObject(this)) - : nativeSort.call(toObject(this), aFunction(comparefn)); - } -}); - - -/***/ }), -/* 113 */ -/***/ (function(module, exports, __webpack_require__) { - -var DESCRIPTORS = __webpack_require__(10); -var defineProperty = __webpack_require__(12).f; - -var FunctionPrototype = Function.prototype; -var FunctionPrototypeToString = FunctionPrototype.toString; -var nameRE = /^\s*function ([^ (]*)/; -var NAME = 'name'; - -// Function instances `.name` property -// https://tc39.github.io/ecma262/#sec-function-instances-name -if (DESCRIPTORS && !(NAME in FunctionPrototype)) { - defineProperty(FunctionPrototype, NAME, { - configurable: true, - get: function () { - try { - return FunctionPrototypeToString.call(this).match(nameRE)[1]; - } catch (error) { - return ''; - } - } - }); -} - - -/***/ }), -/* 114 */ -/***/ (function(module, exports) { - -(function () { - 'use strict'; - - angular.module('lumx.data-table').service('LxDataTableService', LxDataTableService); - LxDataTableService.$inject = ['$rootScope']; - - function LxDataTableService($rootScope) { - var service = this; - service.select = select; - service.selectAll = selectAll; - service.unselect = unselect; - service.unselectAll = unselectAll; - service.activate = activate; - service.deactivate = deactivate; - - function select(_dataTableId, row) { - $rootScope.$broadcast('lx-data-table__select', _dataTableId, row); - } - - function selectAll(_dataTableId) { - $rootScope.$broadcast('lx-data-table__select-all', _dataTableId); - } - - function unselect(_dataTableId, row) { - $rootScope.$broadcast('lx-data-table__unselect', _dataTableId, row); - } - - function unselectAll(_dataTableId) { - $rootScope.$broadcast('lx-data-table__unselect-all', _dataTableId); - } - - function activate(_dataTableId, row) { - $rootScope.$broadcast('lx-data-table__activate', _dataTableId, row); - } - - function deactivate(_dataTableId, row) { - $rootScope.$broadcast('lx-data-table__deactivate', _dataTableId, row); - } - } -})(); - -/***/ }), -/* 115 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); -/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(70); -/* harmony import */ var core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15); -/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30); -/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(116); -/* harmony import */ var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_5__); - - - - - - - -(function () { - 'use strict'; - - angular.module('lumx.date-picker').directive('lxDatePicker', lxDatePicker); - lxDatePicker.$inject = ['LxDatePickerService', 'LxUtilsService']; - - function lxDatePicker(LxDatePickerService, LxUtilsService) { - return { - restrict: 'AE', - templateUrl: 'date-picker.html', - scope: { - autoClose: '=?lxAutoClose', - callback: '&?lxCallback', - color: '@?lxColor', - escapeClose: '=?lxEscapeClose', - inputFormat: '@?lxInputFormat', - maxDate: '=?lxMaxDate', - ngModel: '=', - minDate: '=?lxMinDate', - locale: '@lxLocale' - }, - link: link, - controller: LxDatePickerController, - controllerAs: 'lxDatePicker', - bindToController: true, - replace: true, - transclude: true - }; - - function link(scope, element, attrs) { - if (angular.isDefined(attrs.id)) { - attrs.$observe('id', function (_newId) { - scope.lxDatePicker.pickerId = _newId; - LxDatePickerService.registerScope(scope.lxDatePicker.pickerId, scope); - }); - } else { - scope.lxDatePicker.pickerId = LxUtilsService.generateUUID(); - LxDatePickerService.registerScope(scope.lxDatePicker.pickerId, scope); - } - } - } - - LxDatePickerController.$inject = ['$element', '$scope', '$timeout', '$transclude', 'LxDatePickerService', 'LxUtilsService']; - - function LxDatePickerController($element, $scope, $timeout, $transclude, LxDatePickerService, LxUtilsService) { - var lxDatePicker = this; - var input; - var modelController; - var timer1; - var timer2; - var watcher1; - var watcher2; - lxDatePicker.closeDatePicker = closeDatePicker; - lxDatePicker.displayYearSelection = displayYearSelection; - lxDatePicker.hideYearSelection = hideYearSelection; - lxDatePicker.getDateFormatted = getDateFormatted; - lxDatePicker.nextMonth = nextMonth; - lxDatePicker.openDatePicker = openDatePicker; - lxDatePicker.previousMonth = previousMonth; - lxDatePicker.select = select; - lxDatePicker.selectYear = selectYear; - lxDatePicker.autoClose = angular.isDefined(lxDatePicker.autoClose) ? lxDatePicker.autoClose : true; - lxDatePicker.color = angular.isDefined(lxDatePicker.color) ? lxDatePicker.color : 'primary'; - lxDatePicker.element = $element.find('.lx-date-picker'); - lxDatePicker.escapeClose = angular.isDefined(lxDatePicker.escapeClose) ? lxDatePicker.escapeClose : true; - lxDatePicker.isOpen = false; - lxDatePicker.moment = moment; - lxDatePicker.yearSelection = false; - lxDatePicker.uuid = LxUtilsService.generateUUID(); - $transclude(function (clone) { - if (clone.length) { - lxDatePicker.hasInput = true; - timer1 = $timeout(function () { - input = $element.find('.lx-date-input input'); - modelController = input.data('$ngModelController'); - watcher2 = $scope.$watch(function () { - return modelController.$viewValue; - }, function (newValue, oldValue) { - if (angular.isUndefined(newValue)) { - lxDatePicker.ngModel = undefined; - } - }); - }); - } - }); - watcher1 = $scope.$watch(function () { - return lxDatePicker.ngModel; - }, init); - $scope.$on('$destroy', function () { - $timeout.cancel(timer1); - $timeout.cancel(timer2); - - if (angular.isFunction(watcher1)) { - watcher1(); - } - - if (angular.isFunction(watcher2)) { - watcher2(); - } - }); - - function closeDatePicker() { - LxDatePickerService.close(lxDatePicker.pickerId); - } - - function displayYearSelection() { - lxDatePicker.yearSelection = true; - timer2 = $timeout(function () { - var yearSelector = angular.element('.lx-date-picker__year-selector'); - var activeYear = yearSelector.find('.lx-date-picker__year--is-active'); - yearSelector.scrollTop(yearSelector.scrollTop() + activeYear.position().top - yearSelector.height() / 2 + activeYear.height() / 2); - }); - } - - function hideYearSelection() { - lxDatePicker.yearSelection = false; - } - - function generateCalendar() { - lxDatePicker.days = []; - var previousDay = angular.copy(lxDatePicker.ngModelMoment).date(0); - var firstDayOfMonth = angular.copy(lxDatePicker.ngModelMoment).date(1); - var lastDayOfMonth = firstDayOfMonth.clone().endOf('month'); - var maxDays = lastDayOfMonth.date(); - lxDatePicker.emptyFirstDays = []; - - for (var i = firstDayOfMonth.day() === 0 ? 6 : firstDayOfMonth.day() - 1; i > 0; i--) { - lxDatePicker.emptyFirstDays.push({}); - } - - for (var j = 0; j < maxDays; j++) { - var date = angular.copy(previousDay.add(1, 'days')); - date.selected = angular.isDefined(lxDatePicker.ngModel) && date.isSame(lxDatePicker.ngModel, 'day'); - date.today = date.isSame(moment(), 'day'); - - if (angular.isDefined(lxDatePicker.minDate)) { - var minDate = angular.isString(lxDatePicker.minDate) ? new Date(lxDatePicker.minDate) : lxDatePicker.minDate; - - if (date.toDate() < minDate) { - date.disabled = true; - } - } - - if (angular.isDefined(lxDatePicker.maxDate)) { - var maxDate = angular.isString(lxDatePicker.maxDate) ? new Date(lxDatePicker.maxDate) : lxDatePicker.maxDate; - - if (date.toDate() > maxDate) { - date.disabled = true; - } - } - - lxDatePicker.days.push(date); - } - - lxDatePicker.emptyLastDays = []; - - for (var k = 7 - (lastDayOfMonth.day() === 0 ? 7 : lastDayOfMonth.day()); k > 0; k--) { - lxDatePicker.emptyLastDays.push({}); - } - } - - function getDateFormatted() { - var dateFormatted = lxDatePicker.ngModelMoment.format('llll').replace(lxDatePicker.ngModelMoment.format('LT'), '').trim().replace(lxDatePicker.ngModelMoment.format('YYYY'), '').trim(); - var dateFormattedLastChar = dateFormatted.slice(-1); - - if (dateFormattedLastChar === ',') { - dateFormatted = dateFormatted.slice(0, -1); - } - - return dateFormatted; - } - - function init() { - moment.locale(lxDatePicker.locale); - lxDatePicker.ngModelMoment = angular.isDefined(lxDatePicker.ngModel) ? moment(angular.copy(lxDatePicker.ngModel)) : moment(); - lxDatePicker.days = []; - lxDatePicker.daysOfWeek = [moment.weekdaysMin(1), moment.weekdaysMin(2), moment.weekdaysMin(3), moment.weekdaysMin(4), moment.weekdaysMin(5), moment.weekdaysMin(6), moment.weekdaysMin(0)]; - lxDatePicker.years = []; - - for (var y = moment().year() - 100; y <= moment().year() + 100; y++) { - lxDatePicker.years.push(y); - } - - generateCalendar(); - } - - function nextMonth() { - lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.add(1, 'month'); - generateCalendar(); - } - - function openDatePicker() { - LxDatePickerService.open(lxDatePicker.pickerId); - generateCalendar(); - } - - function previousMonth() { - lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.subtract(1, 'month'); - generateCalendar(); - } - - function select(_day) { - if (!_day.disabled) { - lxDatePicker.ngModel = _day.toDate(); - lxDatePicker.ngModelMoment = angular.copy(_day); - - if (angular.isDefined(lxDatePicker.callback)) { - lxDatePicker.callback({ - newDate: lxDatePicker.ngModel - }); - } - - if (angular.isDefined(modelController) && lxDatePicker.inputFormat) { - modelController.$setViewValue(angular.copy(_day).format(lxDatePicker.inputFormat)); - modelController.$render(); - } - - generateCalendar(); - } - } - - function selectYear(_year) { - lxDatePicker.yearSelection = false; - lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.year(_year); - generateCalendar(); - } - } -})(); - -/***/ }), -/* 116 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var $ = __webpack_require__(2); -var $trim = __webpack_require__(55).trim; -var forcedStringTrimMethod = __webpack_require__(117); - -// `String.prototype.trim` method -// https://tc39.github.io/ecma262/#sec-string.prototype.trim -$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { - trim: function trim() { - return $trim(this); - } -}); - - -/***/ }), -/* 117 */ -/***/ (function(module, exports, __webpack_require__) { - -var fails = __webpack_require__(4); -var whitespaces = __webpack_require__(31); - -var non = '\u200B\u0085\u180E'; - -// check that a method works with the correct list -// of whitespaces and has a correct name -module.exports = function (METHOD_NAME) { - return fails(function () { - return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME; - }); -}; - - -/***/ }), -/* 118 */ -/***/ (function(module, exports) { - -(function () { - 'use strict'; - - angular.module('lumx.date-picker').service('LxDatePickerService', LxDatePickerService); - LxDatePickerService.$inject = ['$rootScope', '$timeout', 'LxDepthService', 'LxEventSchedulerService']; - - function LxDatePickerService($rootScope, $timeout, LxDepthService, LxEventSchedulerService) { - var service = this; - var activeDatePickerId; - var datePickerFilter; - var idEventScheduler; - var scopeMap = {}; - service.close = closeDatePicker; - service.open = openDatePicker; - service.registerScope = registerScope; - - function closeDatePicker(_datePickerId) { - if (angular.isDefined(idEventScheduler)) { - LxEventSchedulerService.unregister(idEventScheduler); - idEventScheduler = undefined; - } - - activeDatePickerId = undefined; - $rootScope.$broadcast('lx-date-picker__close-start', _datePickerId); - datePickerFilter.removeClass('lx-date-picker-filter--is-shown'); - - scopeMap[_datePickerId].element.removeClass('lx-date-picker--is-shown'); - - $timeout(function () { - angular.element('body').removeClass('no-scroll-date-picker-' + scopeMap[_datePickerId].uuid); - datePickerFilter.remove(); - - scopeMap[_datePickerId].element.hide().appendTo(scopeMap[_datePickerId].elementParent); - - scopeMap[_datePickerId].isOpen = false; - $rootScope.$broadcast('lx-date-picker__close-end', _datePickerId); - }, 600); - } - - function onKeyUp(_event) { - if (_event.keyCode == 27 && angular.isDefined(activeDatePickerId)) { - closeDatePicker(activeDatePickerId); - } - - _event.stopPropagation(); - } - - function openDatePicker(_datePickerId) { - LxDepthService.register(); - activeDatePickerId = _datePickerId; - angular.element('body').addClass('no-scroll-date-picker-' + scopeMap[_datePickerId].uuid); - datePickerFilter = angular.element('
', { - class: 'lx-date-picker-filter' - }); - datePickerFilter.css('z-index', LxDepthService.getDepth()).appendTo('body'); - - if (scopeMap[activeDatePickerId].autoClose) { - datePickerFilter.on('click', function () { - closeDatePicker(activeDatePickerId); - }); - } - - if (scopeMap[activeDatePickerId].escapeClose) { - idEventScheduler = LxEventSchedulerService.register('keyup', onKeyUp); - } - - scopeMap[activeDatePickerId].element.css('z-index', LxDepthService.getDepth() + 1).appendTo('body').show(); - $timeout(function () { - $rootScope.$broadcast('lx-date-picker__open-start', activeDatePickerId); - scopeMap[activeDatePickerId].isOpen = true; - datePickerFilter.addClass('lx-date-picker-filter--is-shown'); - scopeMap[activeDatePickerId].element.addClass('lx-date-picker--is-shown'); - }, 100); - $timeout(function () { - $rootScope.$broadcast('lx-date-picker__open-end', activeDatePickerId); - }, 700); - } - - function registerScope(_datePickerId, _datePickerScope) { - scopeMap[_datePickerId] = _datePickerScope.lxDatePicker; - } - } -})(); - -/***/ }), -/* 119 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); - - -(function () { - 'use strict'; - - angular.module('lumx.dialog').directive('lxDialog', lxDialog).directive('lxDialogHeader', lxDialogHeader).directive('lxDialogContent', lxDialogContent).directive('lxDialogFooter', lxDialogFooter).directive('lxDialogClose', lxDialogClose); - - function lxDialog() { - return { - restrict: 'E', - template: '
', - scope: { - autoClose: '=?lxAutoClose', - escapeClose: '=?lxEscapeClose', - size: '@?lxSize' - }, - link: link, - controller: LxDialogController, - controllerAs: 'lxDialog', - bindToController: true, - replace: true, - transclude: true - }; - - function link(scope, element, attrs, ctrl) { - attrs.$observe('id', function (_newId) { - ctrl.id = _newId; - }); - } - } - - LxDialogController.$inject = ['$element', '$interval', '$rootScope', '$scope', '$timeout', '$window', 'LxDepthService', 'LxEventSchedulerService', 'LxUtilsService']; - - function LxDialogController($element, $interval, $rootScope, $scope, $timeout, $window, LxDepthService, LxEventSchedulerService, LxUtilsService) { - var lxDialog = this; - var dialogFilter = angular.element('
', { - class: 'dialog-filter' - }); - var dialogHeight; - var dialogInterval; - var dialogScrollable; - var elementParent = $element.parent(); - var idEventScheduler; - var resizeDebounce; - var windowHeight; - lxDialog.autoClose = angular.isDefined(lxDialog.autoClose) ? lxDialog.autoClose : true; - lxDialog.escapeClose = angular.isDefined(lxDialog.escapeClose) ? lxDialog.escapeClose : true; - lxDialog.isOpen = false; - lxDialog.uuid = LxUtilsService.generateUUID(); - $scope.$on('lx-dialog__open', function (event, id, params) { - if (id === lxDialog.id) { - open(params); - } - }); - $scope.$on('lx-dialog__close', function (event, id, canceled, params) { - if (id === lxDialog.id || id === undefined) { - close(canceled, params); - } - }); - $scope.$on('$destroy', function () { - close(true); - }); - - function checkDialogHeight() { - var dialog = $element; - var dialogHeader = dialog.find('.dialog__header'); - var dialogContent = dialog.find('.dialog__content'); - var dialogFooter = dialog.find('.dialog__footer'); - - if (!dialogFooter.length) { - dialogFooter = dialog.find('.dialog__actions'); - } - - if (angular.isUndefined(dialogHeader)) { - return; - } - - var heightToCheck = 60 + dialogHeader.outerHeight() + dialogContent.outerHeight() + dialogFooter.outerHeight(); - - if (dialogHeight === heightToCheck && windowHeight === $window.innerHeight) { - return; - } - - dialogHeight = heightToCheck; - windowHeight = $window.innerHeight; - - if (heightToCheck >= $window.innerHeight) { - dialog.addClass('dialog--is-fixed'); - dialogScrollable.css({ - top: dialogHeader.outerHeight(), - bottom: dialogFooter.outerHeight() - }).off('scroll', checkScrollEnd).on('scroll', checkScrollEnd); - } else { - dialog.removeClass('dialog--is-fixed'); - dialogScrollable.removeAttr('style').off('scroll', checkScrollEnd); - } - } - - function checkDialogHeightOnResize() { - if (resizeDebounce) { - $timeout.cancel(resizeDebounce); - } - - resizeDebounce = $timeout(function () { - checkDialogHeight(); - }, 200); - } - - function checkScrollEnd() { - if (dialogScrollable.scrollTop() + dialogScrollable.innerHeight() >= dialogScrollable[0].scrollHeight) { - $rootScope.$broadcast('lx-dialog__scroll-end', lxDialog.id); - dialogScrollable.off('scroll', checkScrollEnd); - $timeout(function () { - dialogScrollable.on('scroll', checkScrollEnd); - }, 500); - } - } - - function onKeyUp(_event) { - if (_event.keyCode == 27) { - close(true); - } - - _event.stopPropagation(); - } - - function open(_params) { - if (lxDialog.isOpen) { - return; - } - - LxDepthService.register(); - angular.element('body').addClass('no-scroll-dialog-' + lxDialog.uuid); - dialogFilter.css('z-index', LxDepthService.getDepth()).appendTo('body'); - - if (lxDialog.autoClose) { - dialogFilter.on('click', function () { - close(true); - }); - } - - if (lxDialog.escapeClose) { - idEventScheduler = LxEventSchedulerService.register('keyup', onKeyUp); - } - - $element.css('z-index', LxDepthService.getDepth() + 1).appendTo('body').show(); - $timeout(function () { - $rootScope.$broadcast('lx-dialog__open-start', lxDialog.id, _params); - lxDialog.isOpen = true; - dialogFilter.addClass('dialog-filter--is-shown'); - $element.addClass('dialog--is-shown'); - }, 100); - $timeout(function () { - if ($element.find('.dialog__scrollable').length === 0) { - $element.find('.dialog__content').wrap(angular.element('
', { - class: 'dialog__scrollable' - })); - } - - dialogScrollable = $element.find('.dialog__scrollable'); - }, 200); - $timeout(function () { - $rootScope.$broadcast('lx-dialog__open-end', lxDialog.id, _params); - }, 700); - dialogInterval = $interval(function () { - checkDialogHeight(); - }, 500); - angular.element($window).on('resize', checkDialogHeightOnResize); - } - - function close(_canceled, _params) { - if (!lxDialog.isOpen) { - return; - } - - _params = _params || {}; - - if (angular.isDefined(idEventScheduler)) { - LxEventSchedulerService.unregister(idEventScheduler); - idEventScheduler = undefined; - } - - angular.element($window).off('resize', checkDialogHeightOnResize); - $element.find('.dialog__scrollable').off('scroll', checkScrollEnd); - $rootScope.$broadcast('lx-dialog__close-start', lxDialog.id, _canceled, _params); - - if (resizeDebounce) { - $timeout.cancel(resizeDebounce); - } - - $interval.cancel(dialogInterval); - dialogFilter.removeClass('dialog-filter--is-shown'); - $element.removeClass('dialog--is-shown'); - $timeout(function () { - angular.element('body').removeClass('no-scroll-dialog-' + lxDialog.uuid); - dialogFilter.remove(); - $element.hide().removeClass('dialog--is-fixed').appendTo(elementParent); - lxDialog.isOpen = false; - dialogHeight = undefined; - $rootScope.$broadcast('lx-dialog__close-end', lxDialog.id, _canceled, _params); - }, 600); - } - } - - function lxDialogHeader() { - return { - restrict: 'E', - template: '
', - replace: true, - transclude: true - }; - } - - function lxDialogContent() { - return { - restrict: 'E', - template: '
', - replace: true, - transclude: true - }; - } - - function lxDialogFooter() { - return { - restrict: 'E', - template: '', - replace: true, - transclude: true - }; - } - - lxDialogClose.$inject = ['LxDialogService']; - - function lxDialogClose(LxDialogService) { - return { - restrict: 'A', - link: function link(scope, element) { - element.on('click', function () { - LxDialogService.close(element.parents('.dialog').attr('id'), true); - }); - scope.$on('$destroy', function () { - element.off(); - }); - } - }; - } -})(); - -/***/ }), -/* 120 */ -/***/ (function(module, exports) { - -(function () { - 'use strict'; - - angular.module('lumx.dialog').service('LxDialogService', LxDialogService); - LxDialogService.$inject = ['$rootScope']; - - function LxDialogService($rootScope) { - var service = this; - service.open = open; - service.close = close; - - function open(_dialogId, _params) { - $rootScope.$broadcast('lx-dialog__open', _dialogId, _params); - } - - function close(_dialogId, _canceled, _params) { - $rootScope.$broadcast('lx-dialog__close', _dialogId, _canceled, _params); - } - } -})(); - -/***/ }), -/* 121 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(32); -/* harmony import */ var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18); -/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(54); -/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(33); -/* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_4__); - - - - - - -(function () { - 'use strict'; - - angular.module('lumx.dropdown').directive('lxDropdown', lxDropdown).directive('lxDropdownToggle', lxDropdownToggle).directive('lxDropdownMenu', lxDropdownMenu).directive('lxDropdownFilter', lxDropdownFilter); - - function lxDropdown() { - return { - restrict: 'E', - templateUrl: 'dropdown.html', - scope: { - closeOnClick: '=?lxCloseOnClick', - effect: '@?lxEffect', - escapeClose: '=?lxEscapeClose', - hover: '=?lxHover', - hoverDelay: '=?lxHoverDelay', - minOffset: '=?lxMinOffset', - offset: '@?lxOffset', - overToggle: '=?lxOverToggle', - position: '@?lxPosition', - width: '@?lxWidth' - }, - link: link, - controller: LxDropdownController, - controllerAs: 'lxDropdown', - bindToController: true, - transclude: true - }; - - function link(scope, element, attrs, ctrl) { - var backwardOneWay = ['position', 'width']; - var backwardTwoWay = ['escapeClose', 'overToggle']; - angular.forEach(backwardOneWay, function (attribute) { - if (angular.isDefined(attrs[attribute])) { - attrs.$observe(attribute, function (newValue) { - scope.lxDropdown[attribute] = newValue; - }); - } - }); - angular.forEach(backwardTwoWay, function (attribute) { - if (angular.isDefined(attrs[attribute])) { - scope.$watch(function () { - return scope.$parent.$eval(attrs[attribute]); - }, function (newValue) { - scope.lxDropdown[attribute] = newValue; - }); - } - }); - attrs.$observe('id', function (_newId) { - ctrl.uuid = _newId; - }); - scope.$on('$destroy', function () { - if (ctrl.isOpen) { - ctrl.closeDropdownMenu(); - } - }); - } - } - - LxDropdownController.$inject = ['$document', '$element', '$interval', '$rootScope', '$scope', '$timeout', '$window', 'LxDepthService', 'LxDropdownService', 'LxEventSchedulerService', 'LxUtilsService']; - - function LxDropdownController($document, $element, $interval, $rootScope, $scope, $timeout, $window, LxDepthService, LxDropdownService, LxEventSchedulerService, LxUtilsService) { - var lxDropdown = this; - var dropdownContentWatcher; - var dropdownMenu; - var dropdownToggle; - var idEventScheduler; - var openTimeout; - var positionTarget; - var scrollMask = angular.element('
', { - class: 'scroll-mask' - }); - var enableBodyScroll; - lxDropdown.closeDropdownMenu = closeDropdownMenu; - lxDropdown.openDropdownMenu = openDropdownMenu; - lxDropdown.registerDropdownMenu = registerDropdownMenu; - lxDropdown.registerDropdownToggle = registerDropdownToggle; - lxDropdown.toggle = toggle; - lxDropdown.uuid = LxUtilsService.generateUUID(); - lxDropdown.closeOnClick = angular.isDefined(lxDropdown.closeOnClick) ? lxDropdown.closeOnClick : true; - lxDropdown.effect = angular.isDefined(lxDropdown.effect) ? lxDropdown.effect : 'expand'; - lxDropdown.escapeClose = angular.isDefined(lxDropdown.escapeClose) ? lxDropdown.escapeClose : true; - lxDropdown.hasToggle = false; - lxDropdown.isOpen = false; - lxDropdown.overToggle = angular.isDefined(lxDropdown.overToggle) ? lxDropdown.overToggle : false; - lxDropdown.position = angular.isDefined(lxDropdown.position) ? lxDropdown.position : 'left'; - lxDropdown.minOffset = angular.isUndefined(lxDropdown.minOffset) || lxDropdown.minOffset < 0 ? 8 : lxDropdown.minOffset; - $scope.$on('lx-dropdown__open', function (_event, _params) { - if (_params.uuid === lxDropdown.uuid && !lxDropdown.isOpen) { - LxDropdownService.closeActiveDropdown(); - LxDropdownService.registerActiveDropdownUuid(lxDropdown.uuid); - positionTarget = _params.target; - registerDropdownToggle(positionTarget); - openDropdownMenu(); - } - }); - $scope.$on('lx-dropdown__close', function (_event, _params) { - if (_params.uuid === lxDropdown.uuid && lxDropdown.isOpen && (!_params.documentClick || _params.documentClick && lxDropdown.closeOnClick)) { - closeDropdownMenu(); - } - }); - $scope.$on('$destroy', function () { - $timeout.cancel(openTimeout); - }); - - function closeDropdownMenu() { - $document.off('click touchend', onDocumentClick); - $rootScope.$broadcast('lx-dropdown__close-start', $element.attr('id')); - angular.element(window).off('resize', initDropdownPosition); - - if (angular.isFunction(dropdownContentWatcher)) { - dropdownContentWatcher(); - dropdownContentWatcher = undefined; - } - - LxDropdownService.resetActiveDropdownUuid(); - var velocityProperties; - var velocityEasing; - - if (!lxDropdown.hover && angular.isDefined(scrollMask)) { - scrollMask.remove(); - } - - if (angular.isFunction(enableBodyScroll)) { - enableBodyScroll(); - } - - enableBodyScroll = undefined; - var dropdownToggleElement; - - if (lxDropdown.hasToggle) { - dropdownToggleElement = angular.isString(dropdownToggle) ? angular.element(dropdownToggle) : dropdownToggle; - dropdownToggleElement.off('wheel').css('z-index', ''); - } - - dropdownMenu.css({ - overflow: 'hidden' - }); - - if (lxDropdown.effect === 'expand') { - velocityProperties = { - width: 0, - height: 0 - }; - velocityEasing = 'easeOutQuint'; - } else if (lxDropdown.effect === 'fade') { - velocityProperties = { - opacity: 0 - }; - velocityEasing = 'linear'; - } - - if (lxDropdown.effect === 'expand' || lxDropdown.effect === 'fade') { - dropdownMenu.velocity(velocityProperties, { - duration: 200, - easing: velocityEasing, - complete: function complete() { - dropdownMenu.removeAttr('style').removeClass('dropdown-menu--is-open').appendTo($element.find('.dropdown')); - $scope.$apply(function () { - lxDropdown.isOpen = false; - - if (lxDropdown.escapeClose) { - LxEventSchedulerService.unregister(idEventScheduler); - idEventScheduler = undefined; - } - }); - } - }); - } else if (lxDropdown.effect === 'none') { - dropdownMenu.removeAttr('style').removeClass('dropdown-menu--is-open').appendTo($element.find('.dropdown')); - $scope.$apply(function () { - lxDropdown.isOpen = false; - - if (lxDropdown.escapeClose) { - LxEventSchedulerService.unregister(idEventScheduler); - idEventScheduler = undefined; - } - }); - } - - dropdownMenu.off('scroll', checkScrollEnd); - $rootScope.$broadcast('lx-dropdown__close-end', $element.attr('id')); - } - - function getAvailableHeight() { - var availableHeightOnTop; - var availableHeightOnBottom; - var direction; - var dropdownToggleElement = angular.isString(dropdownToggle) ? angular.element(dropdownToggle) : dropdownToggle; - var dropdownToggleHeight = dropdownToggleElement.outerHeight(); - var dropdownToggleTop = dropdownToggleElement.offset().top - angular.element($window).scrollTop(); - var windowHeight = $window.innerHeight; - - if (lxDropdown.overToggle) { - availableHeightOnTop = dropdownToggleTop + dropdownToggleHeight; - availableHeightOnBottom = windowHeight - dropdownToggleTop; - } else { - availableHeightOnTop = dropdownToggleTop; - availableHeightOnBottom = windowHeight - (dropdownToggleTop + dropdownToggleHeight); - } - - if (availableHeightOnTop > availableHeightOnBottom) { - direction = 'top'; - } else { - direction = 'bottom'; - } - - return { - top: availableHeightOnTop, - bottom: availableHeightOnBottom, - direction: direction - }; - } - - function initDropdownPosition() { - var availableHeight = getAvailableHeight(); - var dropdownMenuWidth; - var dropdownMenuLeft; - var dropdownMenuRight; - var dropdownToggleElement = angular.isString(dropdownToggle) ? angular.element(dropdownToggle) : dropdownToggle; - var dropdownToggleWidth = dropdownToggleElement.outerWidth(); - var dropdownToggleHeight = dropdownToggleElement.outerHeight(); - var dropdownToggleTop = dropdownToggleElement.offset().top - angular.element($window).scrollTop(); - var windowWidth = $window.innerWidth; - var windowHeight = $window.innerHeight; - var cssProperties = {}; - - if (angular.isDefined(lxDropdown.width)) { - if (lxDropdown.width.indexOf('%') > -1) { - dropdownMenuWidth = dropdownToggleWidth * (lxDropdown.width.slice(0, -1) / 100); - angular.extend(cssProperties, { - minWidth: dropdownMenuWidth - }); - } else { - dropdownMenuWidth = lxDropdown.width; - angular.extend(cssProperties, { - width: dropdownMenuWidth - }); - } - } else { - dropdownMenuWidth = 'auto'; - angular.extend(cssProperties, { - width: dropdownMenuWidth - }); - } - - if (lxDropdown.position === 'left') { - dropdownMenuLeft = dropdownToggleElement.offset().left; - dropdownMenuLeft = dropdownMenuLeft <= lxDropdown.minOffset ? lxDropdown.minOffset : dropdownMenuLeft; - dropdownMenuRight = 'auto'; - } else if (lxDropdown.position === 'right') { - dropdownMenuLeft = 'auto'; - dropdownMenuRight = windowWidth - dropdownToggleElement.offset().left - dropdownToggleWidth; - dropdownMenuRight = dropdownMenuRight > windowWidth - lxDropdown.minOffset ? windowWidth - lxDropdown.minOffset : dropdownMenuRight; - } else if (lxDropdown.position === 'center') { - dropdownMenuLeft = dropdownToggleElement.offset().left + dropdownToggleWidth / 2 - dropdownMenuWidth / 2; - dropdownMenuLeft = dropdownMenuLeft <= lxDropdown.minOffset ? lxDropdown.minOffset : dropdownMenuLeft; - dropdownMenuRight = 'auto'; - } - - angular.extend(cssProperties, { - left: dropdownMenuLeft, - right: dropdownMenuRight - }); - dropdownMenu.css(cssProperties); - - if (availableHeight.direction === 'top') { - dropdownMenu.css({ - bottom: lxDropdown.overToggle ? windowHeight - dropdownToggleTop - dropdownToggleHeight : windowHeight - dropdownToggleTop + ~~lxDropdown.offset - }); - return availableHeight.top; - } else if (availableHeight.direction === 'bottom') { - dropdownMenu.css({ - top: lxDropdown.overToggle ? dropdownToggleTop : dropdownToggleTop + dropdownToggleHeight + ~~lxDropdown.offset - }); - return availableHeight.bottom; - } - } - - function onDocumentClick() { - $timeout(function nextDigest() { - LxDropdownService.close(lxDropdown.uuid, true); - }); - } - - function openDropdownMenu() { - $document.on('click touchend', onDocumentClick); - $document.on('touchmove', function onTouchMove(evt) { - $document.off('touchend', onDocumentClick); - }); - $rootScope.$broadcast('lx-dropdown__open-start', $element.attr('id')); - lxDropdown.isOpen = true; - LxDepthService.register(); - - if (!lxDropdown.hover) { - scrollMask.css('z-index', LxDepthService.getDepth()).appendTo('body'); - scrollMask.on('click wheel touchmove ontouchstart', closeDropdownMenu); - } - - angular.element(window).on('resize', initDropdownPosition); - enableBodyScroll = LxUtilsService.disableBodyScroll(); - var dropdownToggleElement; - - if (lxDropdown.hasToggle) { - dropdownToggleElement = angular.isString(dropdownToggle) ? angular.element(dropdownToggle) : dropdownToggle; - dropdownToggleElement.css('z-index', LxDepthService.getDepth() + 1).on('wheel', function preventDefault(e) { - e.preventDefault(); - }); - } - - dropdownMenu.addClass('dropdown-menu--is-open').css('z-index', LxDepthService.getDepth() + 1).appendTo('body'); - - if (lxDropdown.escapeClose) { - idEventScheduler = LxEventSchedulerService.register('keyup', onKeyUp); - } - - openTimeout = $timeout(function () { - var availableHeight = initDropdownPosition() - ~~lxDropdown.offset; - var dropdownMenuHeight = dropdownMenu.outerHeight(); - var dropdownMenuWidth = dropdownMenu.outerWidth(); - var enoughHeight = true; - - if (availableHeight < dropdownMenuHeight) { - enoughHeight = false; - dropdownMenuHeight = availableHeight; - } - - dropdownContentWatcher = $scope.$watch(function watcherDropdownContent() { - return dropdownMenu.find('.dropdown-menu__content').html(); - }, function watchDropdownContent(newValue, oldValue) { - if (newValue === oldValue) { - return; - } - - updateDropdownMenuHeight(); - }); - - if (lxDropdown.effect === 'expand') { - dropdownMenu.css({ - width: 0, - height: 0, - opacity: 1, - overflow: 'hidden' - }); - dropdownMenu.find('.dropdown-menu__content').css({ - width: dropdownMenuWidth, - height: dropdownMenuHeight - }); - dropdownMenu.velocity({ - width: dropdownMenuWidth - }, { - duration: 200, - easing: 'easeOutQuint', - queue: false - }); - dropdownMenu.velocity({ - height: dropdownMenuHeight - }, { - duration: 500, - easing: 'easeOutQuint', - queue: false, - complete: function complete() { - dropdownMenu.css({ - overflow: 'auto' - }); - - if (angular.isUndefined(lxDropdown.width)) { - dropdownMenu.css({ - width: 'auto' - }); - } - - $timeout(updateDropdownMenuHeight); - dropdownMenu.find('.dropdown-menu__content').removeAttr('style'); - } - }); - } else if (lxDropdown.effect === 'fade') { - dropdownMenu.css({ - height: dropdownMenuHeight - }); - dropdownMenu.velocity({ - opacity: 1 - }, { - duration: 200, - easing: 'linear', - queue: false, - complete: function complete() { - $timeout(updateDropdownMenuHeight); - } - }); - } else if (lxDropdown.effect === 'none') { - dropdownMenu.css({ - opacity: 1 - }); - $timeout(updateDropdownMenuHeight); - } - - dropdownMenu.on('scroll', checkScrollEnd); - $rootScope.$broadcast('lx-dropdown__open-end', $element.attr('id')); - }); - } - - function onKeyUp(_event) { - if (_event.keyCode == 27) { - closeDropdownMenu(); - } - - _event.stopPropagation(); - } - - function registerDropdownMenu(_dropdownMenu) { - dropdownMenu = _dropdownMenu; - } - - function registerDropdownToggle(_dropdownToggle) { - if (!positionTarget) { - lxDropdown.hasToggle = true; - } - - dropdownToggle = _dropdownToggle; - } - - function toggle() { - if (!lxDropdown.isOpen) { - openDropdownMenu(); - } else { - closeDropdownMenu(); - } - } - - function updateDropdownMenuHeight() { - if (positionTarget) { - registerDropdownToggle(angular.element(positionTarget)); - } - - if (!angular.element(dropdownToggle).is(':visible')) { - return; - } - - var availableHeight = getAvailableHeight(); - var scrollPosition = dropdownMenu.scrollTop(); - dropdownMenu.css({ - height: 'auto' - }); - dropdownMenu.css(availableHeight.direction, 'auto'); - var dropdownMenuHeight = dropdownMenu.find('.dropdown-menu__content').outerHeight(); - - if (availableHeight[availableHeight.direction] - ~~lxDropdown.offset <= dropdownMenuHeight) { - if (availableHeight.direction === 'top') { - dropdownMenu.css({ - top: 0 - }); - } else if (availableHeight.direction === 'bottom') { - dropdownMenu.css({ - bottom: 0 - }); - } - } else { - if (availableHeight.direction === 'top') { - dropdownMenu.css({ - top: 'auto' - }); - } else if (availableHeight.direction === 'bottom') { - dropdownMenu.css({ - bottom: 'auto' - }); - } - } - - dropdownMenu.scrollTop(scrollPosition); - } - - function checkScrollEnd() { - if (dropdownMenu.scrollTop() + dropdownMenu.innerHeight() >= dropdownMenu[0].scrollHeight) { - $rootScope.$broadcast('lx-dropdown__scroll-end', $element.attr('id')); - } - } - } - - lxDropdownToggle.$inject = ['$timeout', '$window', 'LxDropdownService']; - - function lxDropdownToggle($timeout, $window, LxDropdownService) { - return { - restrict: 'AE', - templateUrl: 'dropdown-toggle.html', - require: '^lxDropdown', - scope: true, - link: link, - replace: true, - transclude: true - }; - - function link(scope, element, attrs, ctrl) { - var hoverTimeout = []; - var mouseEvent = ctrl.hover ? 'mouseenter' : 'click'; - ctrl.registerDropdownToggle(element); - element.on(mouseEvent, function (_event) { - if (mouseEvent === 'mouseenter' && 'ontouchstart' in window && angular.element($window).outerWidth() <= 480) { - return; - } - - if (!ctrl.hover) { - _event.stopPropagation(); - } - - LxDropdownService.closeActiveDropdown(); - LxDropdownService.registerActiveDropdownUuid(ctrl.uuid); - - if (ctrl.hover) { - ctrl.mouseOnToggle = true; - - if (!ctrl.isOpen) { - hoverTimeout[0] = $timeout(function () { - scope.$apply(function () { - ctrl.openDropdownMenu(); - }); - }, ctrl.hoverDelay); - } - } else { - scope.$apply(function () { - ctrl.toggle(); - }); - } - }); - - if (ctrl.hover) { - element.on('mouseleave', function () { - ctrl.mouseOnToggle = false; - $timeout.cancel(hoverTimeout[0]); - hoverTimeout[1] = $timeout(function () { - if (!ctrl.mouseOnMenu) { - scope.$apply(function () { - ctrl.closeDropdownMenu(); - }); - } - }, ctrl.hoverDelay); - }); - } - - scope.$on('$destroy', function () { - element.off(); - - if (ctrl.hover) { - $timeout.cancel(hoverTimeout[0]); - $timeout.cancel(hoverTimeout[1]); - } - }); - } - } - - lxDropdownMenu.$inject = ['$timeout']; - - function lxDropdownMenu($timeout) { - return { - restrict: 'E', - templateUrl: 'dropdown-menu.html', - require: ['lxDropdownMenu', '^lxDropdown'], - scope: true, - link: link, - controller: LxDropdownMenuController, - controllerAs: 'lxDropdownMenu', - bindToController: true, - replace: true, - transclude: true - }; - - function link(scope, element, attrs, ctrls) { - var hoverTimeout; - ctrls[1].registerDropdownMenu(element); - ctrls[0].setParentController(ctrls[1]); - - if (ctrls[1].hover) { - element.on('mouseenter', function () { - ctrls[1].mouseOnMenu = true; - }); - element.on('mouseleave', function () { - ctrls[1].mouseOnMenu = false; - hoverTimeout = $timeout(function () { - if (!ctrls[1].mouseOnToggle) { - scope.$apply(function () { - ctrls[1].closeDropdownMenu(); - }); - } - }, ctrls[1].hoverDelay); - }); - } - - scope.$on('$destroy', function () { - if (ctrls[1].hover) { - element.off(); - $timeout.cancel(hoverTimeout); - } - }); - } - } - - LxDropdownMenuController.$inject = ['$element']; - - function LxDropdownMenuController($element) { - var lxDropdownMenu = this; - lxDropdownMenu.setParentController = setParentController; - - function setParentController(_parentCtrl) { - lxDropdownMenu.parentCtrl = _parentCtrl; - } - } - - lxDropdownFilter.$inject = ['$timeout']; - - function lxDropdownFilter($timeout) { - return { - restrict: 'A', - link: link - }; - - function link(scope, element) { - var focusTimeout; - element.on('click', function (_event) { - _event.stopPropagation(); - }); - focusTimeout = $timeout(function () { - element.find('input').focus(); - }, 200); - scope.$on('$destroy', function () { - $timeout.cancel(focusTimeout); - element.off(); - }); - } - } -})(); - -/***/ }), -/* 122 */ -/***/ (function(module, exports) { - -// iterable DOM collections -// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods -module.exports = { - CSSRuleList: 0, - CSSStyleDeclaration: 0, - CSSValueList: 0, - ClientRectList: 0, - DOMRectList: 0, - DOMStringList: 0, - DOMTokenList: 1, - DataTransferItemList: 0, - FileList: 0, - HTMLAllCollection: 0, - HTMLCollection: 0, - HTMLFormElement: 0, - HTMLSelectElement: 0, - MediaList: 0, - MimeTypeArray: 0, - NamedNodeMap: 0, - NodeList: 1, - PaintRequestList: 0, - Plugin: 0, - PluginArray: 0, - SVGLengthList: 0, - SVGNumberList: 0, - SVGPathSegList: 0, - SVGPointList: 0, - SVGStringList: 0, - SVGTransformList: 0, - SourceBufferList: 0, - StyleSheetList: 0, - TextTrackCueList: 0, - TextTrackList: 0, - TouchList: 0 -}; - - -/***/ }), -/* 123 */ -/***/ (function(module, exports) { - -(function () { - 'use strict'; - - angular.module('lumx.dropdown').service('LxDropdownService', LxDropdownService); - LxDropdownService.$inject = ['$document', '$rootScope']; - - function LxDropdownService($document, $rootScope) { - var service = this; - var activeDropdownUuid; - service.close = close; - service.closeActiveDropdown = closeActiveDropdown; - service.open = open; - service.isOpen = isOpen; - service.registerActiveDropdownUuid = registerActiveDropdownUuid; - service.resetActiveDropdownUuid = resetActiveDropdownUuid; - - function close(_uuid, isDocumentClick) { - isDocumentClick = isDocumentClick || false; - $rootScope.$broadcast('lx-dropdown__close', { - documentClick: isDocumentClick, - uuid: _uuid - }); - } - - function closeActiveDropdown() { - if (angular.isDefined(activeDropdownUuid) && activeDropdownUuid.length > 0) { - $rootScope.$broadcast('lx-dropdown__close', { - documentClick: true, - uuid: activeDropdownUuid - }); - } - } - - function open(_uuid, _target) { - $rootScope.$broadcast('lx-dropdown__open', { - uuid: _uuid, - target: _target - }); - } - - function isOpen(_uuid) { - return activeDropdownUuid === _uuid; - } - - function registerActiveDropdownUuid(_uuid) { - activeDropdownUuid = _uuid; - } - - function resetActiveDropdownUuid() { - activeDropdownUuid = undefined; - } - } -})(); - -/***/ }), -/* 124 */ -/***/ (function(module, exports) { - -(function () { - 'use strict'; - - angular.module('lumx.fab').directive('lxFab', lxFab).directive('lxFabTrigger', lxFabTrigger).directive('lxFabActions', lxFabActions); - - function lxFab() { - return { - restrict: 'E', - templateUrl: 'fab.html', - scope: true, - link: link, - controller: LxFabController, - controllerAs: 'lxFab', - bindToController: true, - transclude: true, - replace: true - }; - - function link(scope, element, attrs, ctrl) { - attrs.$observe('lxDirection', function (newDirection) { - ctrl.setFabDirection(newDirection); - }); - attrs.$observe('lxTriggerOnClick', function (isTriggeredOnClick) { - ctrl.setFabTriggerMethod(scope.$eval(isTriggeredOnClick)); - }); - } - } - - function LxFabController() { - var lxFab = this; - lxFab.setFabDirection = setFabDirection; - lxFab.setFabTriggerMethod = setFabTriggerMethod; - lxFab.toggleState = toggleState; - lxFab.isOpen = false; - - function setFabDirection(_direction) { - lxFab.lxDirection = _direction; - } - - function setFabTriggerMethod(_isTriggeredOnClick) { - lxFab.lxTriggerOnClick = _isTriggeredOnClick; - } - - function toggleState() { - if (lxFab.lxTriggerOnClick) { - lxFab.isOpen = !lxFab.isOpen; - } - } - } - - function lxFabTrigger() { - return { - restrict: 'E', - require: '^lxFab', - templateUrl: 'fab-trigger.html', - transclude: true, - replace: true - }; - } - - function lxFabActions() { - return { - restrict: 'E', - require: '^lxFab', - templateUrl: 'fab-actions.html', - link: link, - transclude: true, - replace: true - }; - - function link(scope, element, attrs, ctrl) { - scope.parentCtrl = ctrl; - } - } -})(); - -/***/ }), -/* 125 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15); -/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(30); -/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__); - - - - -(function () { - 'use strict'; - - angular.module('lumx.file-input').directive('lxFileInput', lxFileInput); - - function lxFileInput() { - return { - restrict: 'E', - templateUrl: 'file-input.html', - scope: { - label: '@lxLabel', - accept: '@lxAccept', - callback: '&?lxCallback' - }, - link: link, - controller: LxFileInputController, - controllerAs: 'lxFileInput', - bindToController: true, - replace: true - }; - - function link(scope, element, attrs, ctrl) { - var input = element.find('input'); - input.on('change', ctrl.updateModel).on('blur', function () { - element.removeClass('input-file--is-focus'); - }); - scope.$on('$destroy', function () { - input.off(); - }); - } - } - - LxFileInputController.$inject = ['$element', '$scope', '$timeout']; - - function LxFileInputController($element, $scope, $timeout) { - var lxFileInput = this; - var input = $element.find('input'); - var timer; - lxFileInput.updateModel = updateModel; - $scope.$on('$destroy', function () { - $timeout.cancel(timer); - }); - - function setFileName() { - if (input.val()) { - lxFileInput.fileName = input.val().replace(/C:\\fakepath\\/i, ''); - $element.addClass('input-file--is-focus'); - $element.addClass('input-file--is-active'); - } else { - lxFileInput.fileName = undefined; - $element.removeClass('input-file--is-active'); - } - - input.val(undefined); - } - - function updateModel() { - if (angular.isDefined(lxFileInput.callback)) { - lxFileInput.callback({ - newFile: input[0].files[0] - }); - } - - timer = $timeout(setFileName); - } - } -})(); - -/***/ }), -/* 126 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IconDirective", function() { return IconDirective; }); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); -/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(73); -/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15); -/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(74); -/* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0); -/* harmony import */ var _views_icon_html__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(58); -/* harmony import */ var _views_icon_html__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_views_icon_html__WEBPACK_IMPORTED_MODULE_5__); - - - - - - - -function IconDirective() { - 'ngInject'; - - function link(scope, el, attrs) { - attrs.$observe('lxPath', function (path) { - el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-icon--path"); - el.find('path').attr('d', path); - }); - attrs.$observe('lxId', function (font) { - el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-icon--font mdi mdi-" + font); - }); - attrs.$observe('lxColor', function (color) { - if (!color) { - return; - } - - el.removeClass(function (index, className) { - return (className.match(/(?:\S|-)*icon--color-\S+/g) || []).join(' '); - }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-icon--color-" + color); - }); - attrs.$observe('lxColorVariant', function (colorVariant) { - if (!colorVariant) { - return; - } - - el.removeClass(function (index, className) { - return (className.match(/(?:\S|-)*icon--color-variant-\S+/g) || []).join(' '); - }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-icon--color-variant-" + colorVariant); - }); - attrs.$observe('lxSize', function (size) { - if (!size) { - return; - } - - el.removeClass(function (index, className) { - return (className.match(/(?:\S|-)*icon--size-\S+/g) || []).join(' '); - }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-icon--size-" + size); - }); - } - - return { - link: link, - replace: true, - restrict: 'E', - template: _views_icon_html__WEBPACK_IMPORTED_MODULE_5___default.a - }; -} - -angular.module('lumx.icon').directive('lxIcon', IconDirective); - - -/***/ }), -/* 127 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18); -/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); -/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23); -/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(128); -/* harmony import */ var core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_3__); - - - - - -(function () { - 'use strict'; - - angular.module('lumx.notification').service('LxNotificationService', LxNotificationService); - LxNotificationService.$inject = ['$injector', '$rootScope', '$timeout', 'LxDepthService', 'LxEventSchedulerService']; - - function LxNotificationService($injector, $rootScope, $timeout, LxDepthService, LxEventSchedulerService) { - var service = this; - var dialogFilter; - var dialog; - var idEventScheduler; - var notificationList = []; - var actionClicked = false; - service.alert = showAlertDialog; - service.confirm = showConfirmDialog; - service.error = notifyError; - service.info = notifyInfo; - service.notify = notify; - service.success = notifySuccess; - service.warning = notifyWarning; - service.getNotificationList = getNotificationList; - service.reComputeElementsPosition = reComputeElementsPosition; - service.deleteNotification = deleteNotification; - service.buildNotification = buildNotification; - - function getElementHeight(_elem) { - return parseFloat(window.getComputedStyle(_elem, null).height); - } - - function moveNotificationUp() { - var newNotifIndex = notificationList.length - 1; - notificationList[newNotifIndex].height = getElementHeight(notificationList[newNotifIndex].elem[0]); - var upOffset = 0; - - for (var idx = newNotifIndex; idx >= 0; idx--) { - if (notificationList.length > 1 && idx !== newNotifIndex) { - upOffset = 24 + notificationList[newNotifIndex].height; - notificationList[idx].margin += upOffset; - notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px'); - } - } - } - - function deleteNotification(_notification, _callback) { - _callback = !angular.isFunction(_callback) ? angular.noop : _callback; - var notifIndex = notificationList.indexOf(_notification); - var dnOffset = angular.isDefined(notificationList[notifIndex]) ? 24 + notificationList[notifIndex].height : 24; - - for (var idx = 0; idx < notifIndex; idx++) { - if (notificationList.length > 1) { - notificationList[idx].margin -= dnOffset; - notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px'); - } - } - - _notification.elem.removeClass('notification--is-shown'); - - $timeout(function () { - _notification.elem.remove(); - - notifIndex = notificationList.indexOf(_notification); - - if (notifIndex != -1) { - notificationList.splice(notifIndex, 1); - } - - _callback(actionClicked); - - actionClicked = false; - }, 400); - } - - function reComputeElementsPosition() { - var baseOffset = 0; - - for (var idx = notificationList.length - 1; idx >= 0; idx--) { - notificationList[idx].height = getElementHeight(notificationList[idx].elem[0]); - notificationList[idx].margin = baseOffset; - notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px'); - baseOffset += notificationList[idx].height + 24; - } - } - - function buildNotification(_text, _icon, _color, _action) { - var notification = angular.element('
', { - class: 'notification' - }); - var notificationText = angular.element('', { - class: 'notification__content', - html: _text - }); - - if (angular.isDefined(_icon)) { - var notificationIcon = angular.element('', { - class: 'notification__icon mdi mdi-' + _icon - }); - notification.addClass('notification--has-icon').append(notificationIcon); - } - - if (angular.isDefined(_color)) { - notification.addClass('notification--' + _color); - } - - notification.append(notificationText); - - if (angular.isDefined(_action)) { - var $compile = $injector.get('$compile'); - var notificationAction = angular.element('"; + } + + function link(scope, el, attrs) { + if (!attrs.lxVariant && !attrs.lxType || attrs.lxVariant === 'button' || attrs.lxType === 'raised' || attrs.lxType === 'flat') { + var leftIcon = el.find('i:first-child'); + var rightIcon = el.find('i:last-child'); + var label = el.find('span'); + + if (leftIcon.length > 0) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--has-left-icon"); + } + + if (rightIcon.length > 0) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--has-right-icon"); + } + + if (label.length === 0) { + el.wrapInner(''); + } + } + + var isDefaultEmphasis = !attrs.lxEmphasis || attrs.lxEmphasis === 'high'; + var defaultProps = { + color: isDefaultEmphasis ? 'primary' : 'dark', + emphasis: 'high', + size: 'm', + theme: 'light', + variant: 'button' + }; + + if (!attrs.lxColor) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--color-" + defaultProps.color); + } + + attrs.$observe('lxColor', function (color) { + if (!color) { + return; + } + + el.removeClass(function (index, className) { + return (className.match(/(?:\S|-)*button--color-\S+/g) || []).join(' '); + }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--color-" + color); + }); + + if (!attrs.lxEmphasis) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--emphasis-" + defaultProps.emphasis); + } + + attrs.$observe('lxEmphasis', function (emphasis) { + if (!emphasis) { + return; + } + + el.removeClass(function (index, className) { + return (className.match(/(?:\S|-)*button--emphasis-\S+/g) || []).join(' '); + }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--emphasis-" + emphasis); + }); + + if (!attrs.lxSize) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--size-" + defaultProps.size); + } + + attrs.$observe('lxSize', function (size) { + if (!size) { + return; + } + + var sizeFallback = { + xs: 's', + s: 's', + m: 'm', + l: 'm', + xl: 'm' + }; + el.removeClass(function (index, className) { + return (className.match(/(?:\S|-)*button--size-\S+/g) || []).join(' '); + }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--size-" + sizeFallback[size]); + }); + + if (!attrs.lxTheme && isDefaultEmphasis) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--theme-" + defaultProps.theme); + } + + attrs.$observe('lxTheme', function (theme) { + if (!theme) { + return; + } + + el.removeClass(function (index, className) { + return (className.match(/(?:\S|-)*button--theme-\S+/g) || []).join(' '); + }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--theme-" + theme); + }); + + if (!attrs.lxVariant) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--variant-" + defaultProps.variant); + } + + attrs.$observe('lxVariant', function (variant) { + if (!variant) { + return; + } + + el.removeClass(function (index, className) { + return (className.match(/(?:\S|-)*button--variant-\S+/g) || []).join(' '); + }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--variant-" + variant); + }); + attrs.$observe('lxType', function (type) { + if (!type) { + return; + } + + var emphasisFallback = { + raised: 'high', + flat: 'low', + fab: 'high', + icon: 'low' + }; + el.removeClass(function (index, className) { + return (className.match(/(?:\S|-)*button--emphasis-\S+/g) || []).join(' '); + }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--emphasis-" + emphasisFallback[type]); + + if (type === 'fab' || type === 'icon') { + el.removeClass(function (index, className) { + return (className.match(/(?:\S|-)*button--variant-\S+/g) || []).join(' '); + }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--variant-icon"); + } + }); + scope.$watch(attrs.lxIsSelected, function (isSelected) { + if (isSelected) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--is-selected"); + } else { + el.removeClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-button--is-selected"); + } + }); + } + + return { + link: link, + replace: true, + restrict: 'E', + template: getTemplate, + transclude: true + }; +} + +angular.module('lumx.button').directive('lxButton', ButtonDirective); + + +/***/ }), +/* 125 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CheckboxDirective", function() { return CheckboxDirective; }); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0); +/* harmony import */ var _lumx_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8); +/* harmony import */ var _views_checkbox_html__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(57); +/* harmony import */ var _views_checkbox_html__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_views_checkbox_html__WEBPACK_IMPORTED_MODULE_3__); + +CheckboxController.$inject = ["LxUtilsService"]; + + + + +function CheckboxController(LxUtilsService) { + 'ngInject'; + + var lx = this; + + var _modelController; + + lx.checkboxId = LxUtilsService.generateUUID(); + lx.hasHelper = false; + lx.hasLabel = false; + lx.hasTranscluded = false; + lx.icons = { + mdiCheck: _lumx_icons__WEBPACK_IMPORTED_MODULE_2__[/* mdiCheck */ "b"] + }; + lx.viewValue = undefined; + + function setModelController(modelController) { + _modelController = modelController; + + _modelController.$render = function onModelRender() { + lx.viewValue = _modelController.$viewValue; + }; + } + + function updateViewValue() { + if (angular.isUndefined(_modelController)) { + lx.viewValue = !lx.viewValue; + return; + } + + _modelController.$setViewValue(!_modelController.$viewValue); + + _modelController.$render(); + } + + lx.setModelController = setModelController; + lx.updateViewValue = updateViewValue; +} + +function CheckboxDirective() { + 'ngInject'; + + function link(scope, el, attrs, ctrls, transclude) { + if (ctrls[1]) { + ctrls[0].setModelController(ctrls[1]); + } + + if (transclude.isSlotFilled('label')) { + ctrls[0].hasLabel = true; + } + + if (transclude.isSlotFilled('helper')) { + ctrls[0].hasHelper = true; + } + + if (!ctrls[0].hasLabel && !ctrls[0].hasHelper) { + transclude(function (clone) { + if (clone.length > 0) { + ctrls[0].hasTranscluded = true; + } + }); + } + + attrs.$observe('disabled', function (isDisabled) { + el.find('input').attr('disabled', isDisabled); + + if (isDisabled) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__[/* CSS_PREFIX */ "a"] + "-checkbox--is-disabled"); + } else { + el.removeClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__[/* CSS_PREFIX */ "a"] + "-checkbox--is-disabled"); + } + }); + attrs.$observe('checked', function (isChecked) { + el.find('input').attr('checked', isChecked); + ctrls[0].viewValue = isChecked; + }); + } + + return { + bindToController: true, + controller: CheckboxController, + controllerAs: 'lx', + link: link, + replace: true, + require: ['lxCheckbox', '?ngModel'], + restrict: 'E', + scope: { + theme: '@?lxTheme' + }, + template: _views_checkbox_html__WEBPACK_IMPORTED_MODULE_3___default.a, + transclude: { + helper: '?lxCheckboxHelp', + label: '?lxCheckboxLabel' + } + }; +} + +angular.module('lumx.checkbox').directive('lxCheckbox', CheckboxDirective); + + +/***/ }), +/* 126 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChipDirective", function() { return ChipDirective; }); +/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(30); +/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(31); +/* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0); +/* harmony import */ var _lumx_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8); +/* harmony import */ var _views_chip_html__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(58); +/* harmony import */ var _views_chip_html__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_views_chip_html__WEBPACK_IMPORTED_MODULE_5__); + + + + + + + +function ChipController() { + 'ngInject'; + + var lx = this; + lx.hasAfter = false; + lx.hasBefore = false; + lx.hasLabel = false; + lx.icons = { + mdiMenuDown: _lumx_icons__WEBPACK_IMPORTED_MODULE_4__[/* mdiMenuDown */ "g"] + }; + + function handleOnAfterClick(evt) { + if (!angular.isFunction(lx.onAfterClick)) { + return; + } + + evt.stopPropagation(); + lx.onAfterClick(); + } + + function handleOnBeforeClick(evt) { + if (!angular.isFunction(lx.onBeforeClick)) { + return; + } + + evt.stopPropagation(); + lx.onBeforeClick(); + } + + function handleOnClick(evt) { + if (!angular.isFunction(lx.onClick)) { + return; + } + + lx.onClick({ + $event: evt + }); + } + + lx.handleOnAfterClick = handleOnAfterClick; + lx.handleOnBeforeClick = handleOnBeforeClick; + lx.handleOnClick = handleOnClick; +} + +function ChipDirective() { + 'ngInject'; + + function link(scope, el, attrs, ctrl, transclude) { + if (transclude.isSlotFilled('after')) { + ctrl.hasAfter = true; + } + + if (transclude.isSlotFilled('before')) { + ctrl.hasBefore = true; + } + + if (transclude.isSlotFilled('label')) { + ctrl.hasLabel = true; + } + + var defaultProps = { + color: 'dark' + }; + + if (!attrs.lxColor) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_3__[/* CSS_PREFIX */ "a"] + "-chip--color-" + defaultProps.color); + } + + attrs.$observe('lxColor', function (color) { + if (!color) { + return; + } + + el.removeClass(function (index, className) { + return (className.match(/(?:\S|-)*chip--color-\S+/g) || []).join(' '); + }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_3__[/* CSS_PREFIX */ "a"] + "-chip--color-" + color); + }); + } + + return { + bindToController: true, + controller: ChipController, + controllerAs: 'lx', + link: link, + replace: true, + restrict: 'E', + scope: { + color: '@?lxColor', + hasDropdownIndicator: '=?lxHasDropdownIndicator', + isDisabled: '=?ngDisabled', + isSelected: '=?lxIsSelected', + onAfterClick: '&?lxOnAfterClick', + onBeforeClick: '&?lxOnBeforeClick', + onClick: '&?lxOnClick', + size: '@?lxSize', + theme: '@?lxTheme' + }, + template: _views_chip_html__WEBPACK_IMPORTED_MODULE_5___default.a, + transclude: { + after: '?lxChipAfter', + before: '?lxChipBefore', + label: 'lxChipLabel' + } + }; +} + +angular.module('lumx.chip').directive('lxChip', ChipDirective); + + +/***/ }), +/* 127 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22); +/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(128); +/* harmony import */ var core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19); +/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(129); +/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_3__); + + + + + +(function () { + 'use strict'; + + angular.module('lumx.data-table').directive('lxDataTable', lxDataTable); + + function lxDataTable() { + return { + restrict: 'E', + templateUrl: 'data-table.html', + scope: { + activable: '=?lxActivable', + border: '=?lxBorder', + bulk: '=?lxBulk', + selectable: '=?lxSelectable', + thumbnail: '=?lxThumbnail', + tbody: '=lxTbody', + thead: '=lxThead' + }, + link: link, + controller: LxDataTableController, + controllerAs: 'lxDataTable', + bindToController: true, + transclude: true, + replace: true + }; + + function link(scope, element, attrs, ctrl) { + attrs.$observe('id', function (_newId) { + ctrl.id = _newId; + }); + } + } + + LxDataTableController.$inject = ['$rootScope', '$sce', '$scope']; + + function LxDataTableController($rootScope, $sce, $scope) { + var lxDataTable = this; + lxDataTable.areAllRowsSelected = areAllRowsSelected; + lxDataTable.border = angular.isUndefined(lxDataTable.border) ? true : lxDataTable.border; + lxDataTable.bulk = angular.isUndefined(lxDataTable.bulk) ? true : lxDataTable.bulk; + lxDataTable.sort = sort; + lxDataTable.toggleActivation = toggleActivation; + lxDataTable.toggleAllSelected = toggleAllSelected; + lxDataTable.toggleSelection = toggleSelection; + lxDataTable.$sce = $sce; + lxDataTable.allRowsSelected = false; + lxDataTable.selectedRows = []; + $scope.$on('lx-data-table__select', function (event, id, row) { + if (id === lxDataTable.id && angular.isDefined(row)) { + _select(angular.isArray(row) && row.length > 0 ? row[0] : row); + } + }); + $scope.$on('lx-data-table__select-all', function (event, id) { + if (id === lxDataTable.id) { + _selectAll(); + } + }); + $scope.$on('lx-data-table__unselect', function (event, id, row) { + if (id === lxDataTable.id && angular.isDefined(row)) { + _unselect(angular.isArray(row) && row.length > 0 ? row[0] : row); + } + }); + $scope.$on('lx-data-table__unselect-all', function (event, id) { + if (id === lxDataTable.id) { + _unselectAll(); + } + }); + $scope.$on('lx-data-table__activate', function (event, id, row) { + if (id === lxDataTable.id && angular.isDefined(row)) { + _activate(angular.isArray(row) && row.length > 0 ? row[0] : row); + } + }); + $scope.$on('lx-data-table__deactivate', function (event, id, row) { + if (id === lxDataTable.id && angular.isDefined(row)) { + _deactivate(angular.isArray(row) && row.length > 0 ? row[0] : row); + } + }); + + function _activate(row) { + toggleActivation(row, true); + } + + function _deactivate(row) { + toggleActivation(row, false); + } + + function _select(row) { + toggleSelection(row, true); + } + + function _selectAll() { + lxDataTable.selectedRows.length = 0; + + for (var i = 0, len = lxDataTable.tbody.length; i < len; i++) { + if (!lxDataTable.tbody[i].lxDataTableDisabled) { + lxDataTable.tbody[i].lxDataTableSelected = true; + lxDataTable.selectedRows.push(lxDataTable.tbody[i]); + } + } + + lxDataTable.allRowsSelected = true; + $rootScope.$broadcast('lx-data-table__unselected', lxDataTable.id, lxDataTable.selectedRows); + } + + function _unselect(row) { + toggleSelection(row, false); + } + + function _unselectAll() { + for (var i = 0, len = lxDataTable.tbody.length; i < len; i++) { + if (!lxDataTable.tbody[i].lxDataTableDisabled) { + lxDataTable.tbody[i].lxDataTableSelected = false; + } + } + + lxDataTable.allRowsSelected = false; + lxDataTable.selectedRows.length = 0; + $rootScope.$broadcast('lx-data-table__selected', lxDataTable.id, lxDataTable.selectedRows); + } + + function areAllRowsSelected() { + var displayedRows = 0; + + for (var i = 0, len = lxDataTable.tbody.length; i < len; i++) { + if (!lxDataTable.tbody[i].lxDataTableDisabled) { + displayedRows++; + } + } + + if (displayedRows === lxDataTable.selectedRows.length) { + lxDataTable.allRowsSelected = true; + } else { + lxDataTable.allRowsSelected = false; + } + } + + function sort(_column) { + if (!_column.sortable) { + return; + } + + for (var i = 0, len = lxDataTable.thead.length; i < len; i++) { + if (lxDataTable.thead[i].sortable && lxDataTable.thead[i].name !== _column.name) { + lxDataTable.thead[i].sort = undefined; + } + } + + if (!_column.sort || _column.sort === 'desc') { + _column.sort = 'asc'; + } else { + _column.sort = 'desc'; + } + + $rootScope.$broadcast('lx-data-table__sorted', lxDataTable.id, _column); + } + + function toggleActivation(_row, _newActivatedStatus) { + if (_row.lxDataTableDisabled || !lxDataTable.activable) { + return; + } + + for (var i = 0, len = lxDataTable.tbody.length; i < len; i++) { + if (lxDataTable.tbody.indexOf(_row) !== i) { + lxDataTable.tbody[i].lxDataTableActivated = false; + } + } + + _row.lxDataTableActivated = !_row.lxDataTableActivated; + + if (_row.lxDataTableActivated) { + $rootScope.$broadcast('lx-data-table__activated', lxDataTable.id, _row); + } else { + $rootScope.$broadcast('lx-data-table__deactivated', lxDataTable.id, _row); + } + } + + function toggleAllSelected() { + if (!lxDataTable.bulk) { + return; + } + + if (lxDataTable.allRowsSelected) { + _unselectAll(); + } else { + _selectAll(); + } + } + + function toggleSelection(_row, _newSelectedStatus, _event) { + if (_row.lxDataTableDisabled || !lxDataTable.selectable) { + return; + } + + if (angular.isDefined(_event)) { + _event.stopPropagation(); + } + + _row.lxDataTableSelected = angular.isDefined(_newSelectedStatus) ? _newSelectedStatus : !_row.lxDataTableSelected; + + if (_row.lxDataTableSelected) { + if (lxDataTable.selectedRows.length === 0 || lxDataTable.selectedRows.length && lxDataTable.selectedRows.indexOf(_row) === -1) { + lxDataTable.selectedRows.push(_row); + lxDataTable.areAllRowsSelected(); + $rootScope.$broadcast('lx-data-table__selected', lxDataTable.id, lxDataTable.selectedRows, _row); + } + } else { + if (lxDataTable.selectedRows.length && lxDataTable.selectedRows.indexOf(_row) > -1) { + lxDataTable.selectedRows.splice(lxDataTable.selectedRows.indexOf(_row), 1); + lxDataTable.allRowsSelected = false; + $rootScope.$broadcast('lx-data-table__unselected', lxDataTable.id, lxDataTable.selectedRows, _row); + } + } + } + } +})(); + +/***/ }), +/* 128 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(2); +var aFunction = __webpack_require__(24); +var toObject = __webpack_require__(23); +var fails = __webpack_require__(4); +var sloppyArrayMethod = __webpack_require__(27); + +var nativeSort = [].sort; +var test = [1, 2, 3]; + +// IE8- +var FAILS_ON_UNDEFINED = fails(function () { + test.sort(undefined); +}); +// V8 bug +var FAILS_ON_NULL = fails(function () { + test.sort(null); +}); +// Old WebKit +var SLOPPY_METHOD = sloppyArrayMethod('sort'); + +var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD; + +// `Array.prototype.sort` method +// https://tc39.github.io/ecma262/#sec-array.prototype.sort +$({ target: 'Array', proto: true, forced: FORCED }, { + sort: function sort(comparefn) { + return comparefn === undefined + ? nativeSort.call(toObject(this)) + : nativeSort.call(toObject(this), aFunction(comparefn)); + } +}); + + +/***/ }), +/* 129 */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(9); +var defineProperty = __webpack_require__(12).f; + +var FunctionPrototype = Function.prototype; +var FunctionPrototypeToString = FunctionPrototype.toString; +var nameRE = /^\s*function ([^ (]*)/; +var NAME = 'name'; + +// Function instances `.name` property +// https://tc39.github.io/ecma262/#sec-function-instances-name +if (DESCRIPTORS && !(NAME in FunctionPrototype)) { + defineProperty(FunctionPrototype, NAME, { + configurable: true, + get: function () { + try { + return FunctionPrototypeToString.call(this).match(nameRE)[1]; + } catch (error) { + return ''; + } + } + }); +} + + +/***/ }), +/* 130 */ +/***/ (function(module, exports) { + +(function () { + 'use strict'; + + angular.module('lumx.data-table').service('LxDataTableService', LxDataTableService); + LxDataTableService.$inject = ['$rootScope']; + + function LxDataTableService($rootScope) { + var service = this; + service.select = select; + service.selectAll = selectAll; + service.unselect = unselect; + service.unselectAll = unselectAll; + service.activate = activate; + service.deactivate = deactivate; + + function select(_dataTableId, row) { + $rootScope.$broadcast('lx-data-table__select', _dataTableId, row); + } + + function selectAll(_dataTableId) { + $rootScope.$broadcast('lx-data-table__select-all', _dataTableId); + } + + function unselect(_dataTableId, row) { + $rootScope.$broadcast('lx-data-table__unselect', _dataTableId, row); + } + + function unselectAll(_dataTableId) { + $rootScope.$broadcast('lx-data-table__unselect-all', _dataTableId); + } + + function activate(_dataTableId, row) { + $rootScope.$broadcast('lx-data-table__activate', _dataTableId, row); + } + + function deactivate(_dataTableId, row) { + $rootScope.$broadcast('lx-data-table__deactivate', _dataTableId, row); + } + } +})(); + +/***/ }), +/* 131 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(52); +/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81); +/* harmony import */ var core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14); +/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29); +/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(132); +/* harmony import */ var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_5__); + + + + + + + +(function () { + 'use strict'; + + angular.module('lumx.date-picker').directive('lxDatePicker', lxDatePicker); + lxDatePicker.$inject = ['LxDatePickerService', 'LxUtilsService']; + + function lxDatePicker(LxDatePickerService, LxUtilsService) { + return { + restrict: 'AE', + templateUrl: 'date-picker.html', + scope: { + autoClose: '=?lxAutoClose', + callback: '&?lxCallback', + color: '@?lxColor', + escapeClose: '=?lxEscapeClose', + inputFormat: '@?lxInputFormat', + maxDate: '=?lxMaxDate', + ngModel: '=', + minDate: '=?lxMinDate', + locale: '@lxLocale' + }, + link: link, + controller: LxDatePickerController, + controllerAs: 'lxDatePicker', + bindToController: true, + replace: true, + transclude: true + }; + + function link(scope, element, attrs) { + if (angular.isDefined(attrs.id)) { + attrs.$observe('id', function (_newId) { + scope.lxDatePicker.pickerId = _newId; + LxDatePickerService.registerScope(scope.lxDatePicker.pickerId, scope); + }); + } else { + scope.lxDatePicker.pickerId = LxUtilsService.generateUUID(); + LxDatePickerService.registerScope(scope.lxDatePicker.pickerId, scope); + } + } + } + + LxDatePickerController.$inject = ['$element', '$scope', '$timeout', '$transclude', 'LxDatePickerService', 'LxUtilsService']; + + function LxDatePickerController($element, $scope, $timeout, $transclude, LxDatePickerService, LxUtilsService) { + var lxDatePicker = this; + var input; + var modelController; + var timer1; + var timer2; + var watcher1; + var watcher2; + lxDatePicker.closeDatePicker = closeDatePicker; + lxDatePicker.displayYearSelection = displayYearSelection; + lxDatePicker.hideYearSelection = hideYearSelection; + lxDatePicker.getDateFormatted = getDateFormatted; + lxDatePicker.nextMonth = nextMonth; + lxDatePicker.openDatePicker = openDatePicker; + lxDatePicker.previousMonth = previousMonth; + lxDatePicker.select = select; + lxDatePicker.selectYear = selectYear; + lxDatePicker.autoClose = angular.isDefined(lxDatePicker.autoClose) ? lxDatePicker.autoClose : true; + lxDatePicker.color = angular.isDefined(lxDatePicker.color) ? lxDatePicker.color : 'primary'; + lxDatePicker.element = $element.find('.lx-date-picker'); + lxDatePicker.escapeClose = angular.isDefined(lxDatePicker.escapeClose) ? lxDatePicker.escapeClose : true; + lxDatePicker.isOpen = false; + lxDatePicker.moment = moment; + lxDatePicker.yearSelection = false; + lxDatePicker.uuid = LxUtilsService.generateUUID(); + $transclude(function (clone) { + if (clone.length) { + lxDatePicker.hasInput = true; + timer1 = $timeout(function () { + input = $element.find('.lx-date-input input'); + modelController = input.data('$ngModelController'); + watcher2 = $scope.$watch(function () { + return modelController.$viewValue; + }, function (newValue, oldValue) { + if (angular.isUndefined(newValue)) { + lxDatePicker.ngModel = undefined; + } + }); + }); + } + }); + watcher1 = $scope.$watch(function () { + return lxDatePicker.ngModel; + }, init); + $scope.$on('$destroy', function () { + $timeout.cancel(timer1); + $timeout.cancel(timer2); + + if (angular.isFunction(watcher1)) { + watcher1(); + } + + if (angular.isFunction(watcher2)) { + watcher2(); + } + }); + + function closeDatePicker() { + LxDatePickerService.close(lxDatePicker.pickerId); + } + + function displayYearSelection() { + lxDatePicker.yearSelection = true; + timer2 = $timeout(function () { + var yearSelector = angular.element('.lx-date-picker__year-selector'); + var activeYear = yearSelector.find('.lx-date-picker__year--is-active'); + yearSelector.scrollTop(yearSelector.scrollTop() + activeYear.position().top - yearSelector.height() / 2 + activeYear.height() / 2); + }); + } + + function hideYearSelection() { + lxDatePicker.yearSelection = false; + } + + function generateCalendar() { + lxDatePicker.days = []; + var previousDay = angular.copy(lxDatePicker.ngModelMoment).date(0); + var firstDayOfMonth = angular.copy(lxDatePicker.ngModelMoment).date(1); + var lastDayOfMonth = firstDayOfMonth.clone().endOf('month'); + var maxDays = lastDayOfMonth.date(); + lxDatePicker.emptyFirstDays = []; + + for (var i = firstDayOfMonth.day() === 0 ? 6 : firstDayOfMonth.day() - 1; i > 0; i--) { + lxDatePicker.emptyFirstDays.push({}); + } + + for (var j = 0; j < maxDays; j++) { + var date = angular.copy(previousDay.add(1, 'days')); + date.selected = angular.isDefined(lxDatePicker.ngModel) && date.isSame(lxDatePicker.ngModel, 'day'); + date.today = date.isSame(moment(), 'day'); + + if (angular.isDefined(lxDatePicker.minDate)) { + var minDate = angular.isString(lxDatePicker.minDate) ? new Date(lxDatePicker.minDate) : lxDatePicker.minDate; + + if (date.toDate() < minDate) { + date.disabled = true; + } + } + + if (angular.isDefined(lxDatePicker.maxDate)) { + var maxDate = angular.isString(lxDatePicker.maxDate) ? new Date(lxDatePicker.maxDate) : lxDatePicker.maxDate; + + if (date.toDate() > maxDate) { + date.disabled = true; + } + } + + lxDatePicker.days.push(date); + } + + lxDatePicker.emptyLastDays = []; + + for (var k = 7 - (lastDayOfMonth.day() === 0 ? 7 : lastDayOfMonth.day()); k > 0; k--) { + lxDatePicker.emptyLastDays.push({}); + } + } + + function getDateFormatted() { + var dateFormatted = lxDatePicker.ngModelMoment.format('llll').replace(lxDatePicker.ngModelMoment.format('LT'), '').trim().replace(lxDatePicker.ngModelMoment.format('YYYY'), '').trim(); + var dateFormattedLastChar = dateFormatted.slice(-1); + + if (dateFormattedLastChar === ',') { + dateFormatted = dateFormatted.slice(0, -1); + } + + return dateFormatted; + } + + function init() { + moment.locale(lxDatePicker.locale); + lxDatePicker.ngModelMoment = angular.isDefined(lxDatePicker.ngModel) ? moment(angular.copy(lxDatePicker.ngModel)) : moment(); + lxDatePicker.days = []; + lxDatePicker.daysOfWeek = [moment.weekdaysMin(1), moment.weekdaysMin(2), moment.weekdaysMin(3), moment.weekdaysMin(4), moment.weekdaysMin(5), moment.weekdaysMin(6), moment.weekdaysMin(0)]; + lxDatePicker.years = []; + + for (var y = moment().year() - 100; y <= moment().year() + 100; y++) { + lxDatePicker.years.push(y); + } + + generateCalendar(); + } + + function nextMonth() { + lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.add(1, 'month'); + generateCalendar(); + } + + function openDatePicker() { + LxDatePickerService.open(lxDatePicker.pickerId); + generateCalendar(); + } + + function previousMonth() { + lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.subtract(1, 'month'); + generateCalendar(); + } + + function select(_day) { + if (!_day.disabled) { + lxDatePicker.ngModel = _day.toDate(); + lxDatePicker.ngModelMoment = angular.copy(_day); + + if (angular.isDefined(lxDatePicker.callback)) { + lxDatePicker.callback({ + newDate: lxDatePicker.ngModel + }); + } + + if (angular.isDefined(modelController) && lxDatePicker.inputFormat) { + modelController.$setViewValue(angular.copy(_day).format(lxDatePicker.inputFormat)); + modelController.$render(); + } + + generateCalendar(); + } + } + + function selectYear(_year) { + lxDatePicker.yearSelection = false; + lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.year(_year); + generateCalendar(); + } + } +})(); + +/***/ }), +/* 132 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $ = __webpack_require__(2); +var $trim = __webpack_require__(53).trim; +var forcedStringTrimMethod = __webpack_require__(133); + +// `String.prototype.trim` method +// https://tc39.github.io/ecma262/#sec-string.prototype.trim +$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { + trim: function trim() { + return $trim(this); + } +}); + + +/***/ }), +/* 133 */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(4); +var whitespaces = __webpack_require__(32); + +var non = '\u200B\u0085\u180E'; + +// check that a method works with the correct list +// of whitespaces and has a correct name +module.exports = function (METHOD_NAME) { + return fails(function () { + return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME; + }); +}; + + +/***/ }), +/* 134 */ +/***/ (function(module, exports) { + +(function () { + 'use strict'; + + angular.module('lumx.date-picker').service('LxDatePickerService', LxDatePickerService); + LxDatePickerService.$inject = ['$rootScope', '$timeout', 'LxDepthService', 'LxEventSchedulerService']; + + function LxDatePickerService($rootScope, $timeout, LxDepthService, LxEventSchedulerService) { + var service = this; + var activeDatePickerId; + var datePickerFilter; + var idEventScheduler; + var scopeMap = {}; + service.close = closeDatePicker; + service.open = openDatePicker; + service.registerScope = registerScope; + + function closeDatePicker(_datePickerId) { + if (angular.isDefined(idEventScheduler)) { + LxEventSchedulerService.unregister(idEventScheduler); + idEventScheduler = undefined; + } + + activeDatePickerId = undefined; + $rootScope.$broadcast('lx-date-picker__close-start', _datePickerId); + datePickerFilter.removeClass('lx-date-picker-filter--is-shown'); + + scopeMap[_datePickerId].element.removeClass('lx-date-picker--is-shown'); + + $timeout(function () { + angular.element('body').removeClass('no-scroll-date-picker-' + scopeMap[_datePickerId].uuid); + datePickerFilter.remove(); + + scopeMap[_datePickerId].element.hide().appendTo(scopeMap[_datePickerId].elementParent); + + scopeMap[_datePickerId].isOpen = false; + $rootScope.$broadcast('lx-date-picker__close-end', _datePickerId); + }, 600); + } + + function onKeyUp(_event) { + if (_event.keyCode == 27 && angular.isDefined(activeDatePickerId)) { + closeDatePicker(activeDatePickerId); + } + + _event.stopPropagation(); + } + + function openDatePicker(_datePickerId) { + LxDepthService.register(); + activeDatePickerId = _datePickerId; + angular.element('body').addClass('no-scroll-date-picker-' + scopeMap[_datePickerId].uuid); + datePickerFilter = angular.element('
', { + class: 'lx-date-picker-filter' + }); + datePickerFilter.css('z-index', LxDepthService.getDepth()).appendTo('body'); + + if (scopeMap[activeDatePickerId].autoClose) { + datePickerFilter.on('click', function () { + closeDatePicker(activeDatePickerId); + }); + } + + if (scopeMap[activeDatePickerId].escapeClose) { + idEventScheduler = LxEventSchedulerService.register('keyup', onKeyUp); + } + + scopeMap[activeDatePickerId].element.css('z-index', LxDepthService.getDepth() + 1).appendTo('body').show(); + $timeout(function () { + $rootScope.$broadcast('lx-date-picker__open-start', activeDatePickerId); + scopeMap[activeDatePickerId].isOpen = true; + datePickerFilter.addClass('lx-date-picker-filter--is-shown'); + scopeMap[activeDatePickerId].element.addClass('lx-date-picker--is-shown'); + }, 100); + $timeout(function () { + $rootScope.$broadcast('lx-date-picker__open-end', activeDatePickerId); + }, 700); + } + + function registerScope(_datePickerId, _datePickerScope) { + scopeMap[_datePickerId] = _datePickerScope.lxDatePicker; + } + } +})(); + +/***/ }), +/* 135 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); + + +(function () { + 'use strict'; + + angular.module('lumx.dialog').directive('lxDialog', lxDialog).directive('lxDialogHeader', lxDialogHeader).directive('lxDialogContent', lxDialogContent).directive('lxDialogFooter', lxDialogFooter).directive('lxDialogClose', lxDialogClose); + + function lxDialog() { + return { + restrict: 'E', + template: '
', + scope: { + autoClose: '=?lxAutoClose', + escapeClose: '=?lxEscapeClose', + size: '@?lxSize' + }, + link: link, + controller: LxDialogController, + controllerAs: 'lxDialog', + bindToController: true, + replace: true, + transclude: true + }; + + function link(scope, element, attrs, ctrl) { + attrs.$observe('id', function (_newId) { + ctrl.id = _newId; + }); + } + } + + LxDialogController.$inject = ['$element', '$interval', '$rootScope', '$scope', '$timeout', '$window', 'LxDepthService', 'LxEventSchedulerService', 'LxUtilsService']; + + function LxDialogController($element, $interval, $rootScope, $scope, $timeout, $window, LxDepthService, LxEventSchedulerService, LxUtilsService) { + var lxDialog = this; + var dialogFilter = angular.element('
', { + class: 'dialog-filter' + }); + var dialogHeight; + var dialogInterval; + var dialogScrollable; + var elementParent = $element.parent(); + var idEventScheduler; + var resizeDebounce; + var windowHeight; + lxDialog.autoClose = angular.isDefined(lxDialog.autoClose) ? lxDialog.autoClose : true; + lxDialog.escapeClose = angular.isDefined(lxDialog.escapeClose) ? lxDialog.escapeClose : true; + lxDialog.isOpen = false; + lxDialog.uuid = LxUtilsService.generateUUID(); + $scope.$on('lx-dialog__open', function (event, id, params) { + if (id === lxDialog.id) { + open(params); + } + }); + $scope.$on('lx-dialog__close', function (event, id, canceled, params) { + if (id === lxDialog.id || id === undefined) { + close(canceled, params); + } + }); + $scope.$on('$destroy', function () { + close(true); + }); + + function checkDialogHeight() { + var dialog = $element; + var dialogHeader = dialog.find('.dialog__header'); + var dialogContent = dialog.find('.dialog__content'); + var dialogFooter = dialog.find('.dialog__footer'); + + if (!dialogFooter.length) { + dialogFooter = dialog.find('.dialog__actions'); + } + + if (angular.isUndefined(dialogHeader)) { + return; + } + + var heightToCheck = 60 + dialogHeader.outerHeight() + dialogContent.outerHeight() + dialogFooter.outerHeight(); + + if (dialogHeight === heightToCheck && windowHeight === $window.innerHeight) { + return; + } + + dialogHeight = heightToCheck; + windowHeight = $window.innerHeight; + + if (heightToCheck >= $window.innerHeight) { + dialog.addClass('dialog--is-fixed'); + dialogScrollable.css({ + top: dialogHeader.outerHeight(), + bottom: dialogFooter.outerHeight() + }).off('scroll', checkScrollEnd).on('scroll', checkScrollEnd); + } else { + dialog.removeClass('dialog--is-fixed'); + dialogScrollable.removeAttr('style').off('scroll', checkScrollEnd); + } + } + + function checkDialogHeightOnResize() { + if (resizeDebounce) { + $timeout.cancel(resizeDebounce); + } + + resizeDebounce = $timeout(function () { + checkDialogHeight(); + }, 200); + } + + function checkScrollEnd() { + if (dialogScrollable.scrollTop() + dialogScrollable.innerHeight() >= dialogScrollable[0].scrollHeight) { + $rootScope.$broadcast('lx-dialog__scroll-end', lxDialog.id); + dialogScrollable.off('scroll', checkScrollEnd); + $timeout(function () { + dialogScrollable.on('scroll', checkScrollEnd); + }, 500); + } + } + + function onKeyUp(_event) { + if (_event.keyCode == 27) { + close(true); + } + + _event.stopPropagation(); + } + + function open(_params) { + if (lxDialog.isOpen) { + return; + } + + LxDepthService.register(); + angular.element('body').addClass('no-scroll-dialog-' + lxDialog.uuid); + dialogFilter.css('z-index', LxDepthService.getDepth()).appendTo('body'); + + if (lxDialog.autoClose) { + dialogFilter.on('click', function () { + close(true); + }); + } + + if (lxDialog.escapeClose) { + idEventScheduler = LxEventSchedulerService.register('keyup', onKeyUp); + } + + $element.css('z-index', LxDepthService.getDepth() + 1).appendTo('body').show(); + $timeout(function () { + $rootScope.$broadcast('lx-dialog__open-start', lxDialog.id, _params); + lxDialog.isOpen = true; + dialogFilter.addClass('dialog-filter--is-shown'); + $element.addClass('dialog--is-shown'); + }, 100); + $timeout(function () { + if ($element.find('.dialog__scrollable').length === 0) { + $element.find('.dialog__content').wrap(angular.element('
', { + class: 'dialog__scrollable' + })); + } + + dialogScrollable = $element.find('.dialog__scrollable'); + }, 200); + $timeout(function () { + $rootScope.$broadcast('lx-dialog__open-end', lxDialog.id, _params); + }, 700); + dialogInterval = $interval(function () { + checkDialogHeight(); + }, 500); + angular.element($window).on('resize', checkDialogHeightOnResize); + } + + function close(_canceled, _params) { + if (!lxDialog.isOpen) { + return; + } + + _params = _params || {}; + + if (angular.isDefined(idEventScheduler)) { + LxEventSchedulerService.unregister(idEventScheduler); + idEventScheduler = undefined; + } + + angular.element($window).off('resize', checkDialogHeightOnResize); + $element.find('.dialog__scrollable').off('scroll', checkScrollEnd); + $rootScope.$broadcast('lx-dialog__close-start', lxDialog.id, _canceled, _params); + + if (resizeDebounce) { + $timeout.cancel(resizeDebounce); + } + + $interval.cancel(dialogInterval); + dialogFilter.removeClass('dialog-filter--is-shown'); + $element.removeClass('dialog--is-shown'); + $timeout(function () { + angular.element('body').removeClass('no-scroll-dialog-' + lxDialog.uuid); + dialogFilter.remove(); + $element.hide().removeClass('dialog--is-fixed').appendTo(elementParent); + lxDialog.isOpen = false; + dialogHeight = undefined; + $rootScope.$broadcast('lx-dialog__close-end', lxDialog.id, _canceled, _params); + }, 600); + } + } + + function lxDialogHeader() { + return { + restrict: 'E', + template: '
', + replace: true, + transclude: true + }; + } + + function lxDialogContent() { + return { + restrict: 'E', + template: '
', + replace: true, + transclude: true + }; + } + + function lxDialogFooter() { + return { + restrict: 'E', + template: '', + replace: true, + transclude: true + }; + } + + lxDialogClose.$inject = ['LxDialogService']; + + function lxDialogClose(LxDialogService) { + return { + restrict: 'A', + link: function link(scope, element) { + element.on('click', function () { + LxDialogService.close(element.parents('.dialog').attr('id'), true); + }); + scope.$on('$destroy', function () { + element.off(); + }); + } + }; + } +})(); + +/***/ }), +/* 136 */ +/***/ (function(module, exports) { + +(function () { + 'use strict'; + + angular.module('lumx.dialog').service('LxDialogService', LxDialogService); + LxDialogService.$inject = ['$rootScope']; + + function LxDialogService($rootScope) { + var service = this; + service.open = open; + service.close = close; + + function open(_dialogId, _params) { + $rootScope.$broadcast('lx-dialog__open', _dialogId, _params); + } + + function close(_dialogId, _canceled, _params) { + $rootScope.$broadcast('lx-dialog__close', _dialogId, _canceled, _params); + } + } +})(); + +/***/ }), +/* 137 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DropdownDirective", function() { return DropdownDirective; }); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22); +/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(52); +/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0); +/* harmony import */ var _views_dropdown_html__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(59); +/* harmony import */ var _views_dropdown_html__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_views_dropdown_html__WEBPACK_IMPORTED_MODULE_4__); + + + +DropdownController.$inject = ["$document", "$rootScope", "$scope", "$timeout", "$window", "LxDepthService", "LxDropdownService", "LxEventSchedulerService", "LxUtilsService"]; + + + +function DropdownController($document, $rootScope, $scope, $timeout, $window, LxDepthService, LxDropdownService, LxEventSchedulerService, LxUtilsService) { + 'ngInject'; + + var lx = this; + var _OFFSET_FROM_EDGE = 16; + + var _idEventScheduler; + + var _menuEl; + + var _sourceEl; + + var _toggleEl; + + lx.hasToggle = false; + lx.isOpen = false; + lx.uuid = LxUtilsService.generateUUID(); + + function _onDocumentEvent(evt) { + if (angular.isDefined(lx.escapeClose) && !lx.escapeClose) { + return; + } + + evt.stopPropagation(); + LxDropdownService.closeLastDropdown(); + } + + function _stopMenuPropagation(evt) { + if (evt.keyCode === _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_3__[/* ESCAPE_KEY_CODE */ "d"]) { + return; + } + + evt.stopPropagation(); + } + + function _checkScrollEnd() { + if (_menuEl.scrollTop() + _menuEl.innerHeight() >= _menuEl[0].scrollHeight) { + $rootScope.$broadcast('lx-dropdown__scroll-end', lx.uuid); + } + } + + function _close() { + lx.isOpen = false; + LxDropdownService.unregisterDropdownId(lx.uuid); + LxUtilsService.restoreBodyScroll(); + $timeout(function () { + _menuEl.removeAttr('style').hide().off('scroll', _checkScrollEnd).insertAfter(_toggleEl); + + if (angular.isDefined(lx.closeOnClick) && !lx.closeOnClick) { + _menuEl.off('click keydown keypress', _stopMenuPropagation); + } + + LxEventSchedulerService.unregister(_idEventScheduler); + _idEventScheduler = undefined; + + if (angular.isDefined(_sourceEl)) { + _sourceEl.focus(); + } + }); + } + + function _getAvailableHeight() { + var availaibleHeight = {}; + var toggleProps = { + height: _toggleEl.outerHeight(), + top: _toggleEl.offset().top - angular.element($window).scrollTop() + }; + var windowProps = { + height: $window.innerHeight + }; + + if (lx.overToggle) { + availaibleHeight.above = toggleProps.top; + availaibleHeight.below = windowProps.height - toggleProps.top; + } else { + availaibleHeight.above = toggleProps.top; + availaibleHeight.below = windowProps.height - (toggleProps.top + toggleProps.height); + } + + return availaibleHeight; + } + + function _initHorizontalPosition() { + var menuProps = {}; + var toggleProps = { + height: _toggleEl.outerHeight(), + left: _toggleEl.offset().left, + width: _toggleEl.outerWidth() + }; + var windowProps = { + height: $window.innerHeight, + width: $window.innerWidth + }; + + if (angular.isDefined(lx.width)) { + if (lx.width.indexOf('%') > -1) { + menuProps.minWidth = toggleProps.width * (lx.width.slice(0, -1) / 100); + } else { + menuProps.width = lx.width; + } + } else { + menuProps.width = 'auto'; + } + + if (!lx.position || lx.position === 'left') { + menuProps.left = toggleProps.left; + menuProps.right = 'auto'; + } else if (lx.position === 'right') { + menuProps.left = 'auto'; + menuProps.right = windowProps.width - toggleProps.width - toggleProps.left; + } + + _menuEl.css({ + left: menuProps.left, + right: menuProps.right + }); + + if (angular.isDefined(menuProps.minWidth)) { + _menuEl.css({ + minWidth: menuProps.minWidth + }); + } else { + _menuEl.css({ + width: menuProps.width + }); + } + } + + function _initVerticalPosition() { + var availaibleHeight = _getAvailableHeight(); + + var menuProps = {}; + var windowProps = { + height: $window.innerHeight + }; + + if (availaibleHeight.below > availaibleHeight.above) { + if (lx.overToggle) { + menuProps.top = availaibleHeight.above; + menuProps.maxHeight = availaibleHeight.below; + } else { + menuProps.top = availaibleHeight.above + _toggleEl.outerHeight() + ~~lx.offset; + menuProps.maxHeight = availaibleHeight.below; + } + } else if (lx.overToggle) { + menuProps.bottom = windowProps.height - availaibleHeight.above - _toggleEl.outerHeight(); + menuProps.maxHeight = availaibleHeight.above + _toggleEl.outerHeight(); + } else { + menuProps.bottom = windowProps.height - availaibleHeight.above + ~~lx.offset; + menuProps.maxHeight = availaibleHeight.above; + } + + menuProps.maxHeight -= _OFFSET_FROM_EDGE; + + _menuEl.css(menuProps); + } + + function _open() { + LxDropdownService.closeLastDropdown(true); + LxDropdownService.registerDropdownId(lx.uuid); + LxDepthService.increase(); + + _menuEl.appendTo('body').show().css({ + position: 'fixed', + zIndex: LxDepthService.get() + }); + + $timeout(function () { + _initHorizontalPosition(); + + _initVerticalPosition(); + + lx.isOpen = true; + LxUtilsService.disableBodyScroll(); + + _menuEl.on('scroll', _checkScrollEnd); + + if (angular.isDefined(lx.closeOnClick) && !lx.closeOnClick) { + _menuEl.on('click keydown keypress', _stopMenuPropagation); + } + + _idEventScheduler = LxEventSchedulerService.register('click keydown keypress', _onDocumentEvent); + }); + } + + function _registerSource(sourceEl) { + _sourceEl = sourceEl; + } + + function registerMenu(menuEl) { + _menuEl = menuEl; + + _menuEl.hide(); + } + + function registerToggle(toggleEl) { + _toggleEl = toggleEl; + } + + function toggle(evt) { + if (angular.isDefined(evt.target)) { + _registerSource(angular.element(evt.target)); + } + + if (lx.isOpen) { + LxDropdownService.close(lx.uuid); + } else { + _open(); + } + } + + lx.registerMenu = registerMenu; + lx.registerToggle = registerToggle; + lx.toggle = toggle; + $scope.$on('lx-dropdown__open', function (evt, dropdownId, params) { + if (dropdownId === lx.uuid && !lx.isOpen) { + var toggleEl; + + if (angular.isElement(params)) { + toggleEl = params; + } else if (angular.isString(params)) { + toggleEl = angular.element(params); + } else if (angular.isObject(params)) { + toggleEl = angular.element(params.target); + } + + registerToggle(toggleEl); + + if (angular.isObject(params) && angular.isDefined(params.source)) { + _registerSource(angular.element(params.source)); + } else { + _registerSource(toggleEl); + } + + _open(); + } + }); + $scope.$on('lx-dropdown__close', function (evt, dropdownId, onOpen) { + if (dropdownId === lx.uuid && lx.isOpen) { + if (onOpen && angular.isDefined(lx.closeOnClick) && !lx.closeOnClick) { + return; + } + + _close(); + } + }); + $scope.$on('lx-dropdown__update', function () { + if (LxDropdownService.isOpen(lx.uuid)) { + _initHorizontalPosition(); + + _initVerticalPosition(); + } + }); + $scope.$on('$destroy', function () { + if (!lx.isOpen) { + return; + } + + _close(); + }); +} + +function DropdownDirective() { + 'ngInject'; + + function link(scope, el, attrs, ctrl, transclude) { + ctrl.registerToggle(el.find("." + _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_3__[/* CSS_PREFIX */ "a"] + "-dropdown__toggle")); + ctrl.registerMenu(el.find("." + _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_3__[/* CSS_PREFIX */ "a"] + "-dropdown__menu")); + + if (transclude.isSlotFilled('toggle')) { + ctrl.hasToggle = true; + } + + attrs.$observe('id', function (id) { + ctrl.uuid = id; + }); + } + + return { + bindToController: true, + controller: DropdownController, + controllerAs: 'lx', + link: link, + replace: true, + restrict: 'E', + scope: { + closeOnClick: '=?lxCloseOnClick', + escapeClose: '=?lxEscapeClose', + offset: '@?lxOffset', + overToggle: '=?lxOverToggle', + position: '@?lxPosition', + width: '@?lxWidth' + }, + template: _views_dropdown_html__WEBPACK_IMPORTED_MODULE_4___default.a, + transclude: { + menu: 'lxDropdownMenu', + toggle: '?lxDropdownToggle' + } + }; +} + +angular.module('lumx.dropdown').directive('lxDropdown', DropdownDirective); + + +/***/ }), +/* 138 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DropdownService", function() { return DropdownService; }); +/* harmony import */ var core_js_modules_es_array_includes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65); +/* harmony import */ var core_js_modules_es_array_includes__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22); +/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19); +/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2__); + + + +DropdownService.$inject = ["$rootScope"]; + +function DropdownService($rootScope) { + 'ngInject'; + + var service = this; + var _activeDropdownIds = []; + + function closeDropdown(dropdownId, onOpen) { + $rootScope.$broadcast('lx-dropdown__close', dropdownId, onOpen); + } + + function closeLastDropdown(onOpen) { + if (_activeDropdownIds.length > 0) { + closeDropdown(_activeDropdownIds[_activeDropdownIds.length - 1], onOpen); + } + } + + function getLastDropdownId() { + return _activeDropdownIds[_activeDropdownIds.length - 1]; + } + + function isOpen(dropdownId) { + return _activeDropdownIds.includes(dropdownId); + } + + function openDropdown(dropdownId, params) { + $rootScope.$broadcast('lx-dropdown__open', dropdownId, params); + } + + function registerDropdownId(dropdownId) { + _activeDropdownIds.push(dropdownId); + } + + function unregisterDropdownId(dropdownId) { + _activeDropdownIds.splice(_activeDropdownIds.indexOf(dropdownId), 1); + } + + function updateActiveDropdownPosition() { + $rootScope.$broadcast('lx-dropdown__update'); + } + + service.close = closeDropdown; + service.closeLastDropdown = closeLastDropdown; + service.getLastDropdownId = getLastDropdownId; + service.isOpen = isOpen; + service.open = openDropdown; + service.registerDropdownId = registerDropdownId; + service.unregisterDropdownId = unregisterDropdownId; + service.updateActiveDropdownPosition = updateActiveDropdownPosition; +} + +angular.module('lumx.dropdown').service('LxDropdownService', DropdownService); + + +/***/ }), +/* 139 */ +/***/ (function(module, exports) { + +(function () { + 'use strict'; + + angular.module('lumx.fab').directive('lxFab', lxFab).directive('lxFabTrigger', lxFabTrigger).directive('lxFabActions', lxFabActions); + + function lxFab() { + return { + restrict: 'E', + templateUrl: 'fab.html', + scope: true, + link: link, + controller: LxFabController, + controllerAs: 'lxFab', + bindToController: true, + transclude: true, + replace: true + }; + + function link(scope, element, attrs, ctrl) { + attrs.$observe('lxDirection', function (newDirection) { + ctrl.setFabDirection(newDirection); + }); + attrs.$observe('lxTriggerOnClick', function (isTriggeredOnClick) { + ctrl.setFabTriggerMethod(scope.$eval(isTriggeredOnClick)); + }); + } + } + + function LxFabController() { + var lxFab = this; + lxFab.setFabDirection = setFabDirection; + lxFab.setFabTriggerMethod = setFabTriggerMethod; + lxFab.toggleState = toggleState; + lxFab.isOpen = false; + + function setFabDirection(_direction) { + lxFab.lxDirection = _direction; + } + + function setFabTriggerMethod(_isTriggeredOnClick) { + lxFab.lxTriggerOnClick = _isTriggeredOnClick; + } + + function toggleState() { + if (lxFab.lxTriggerOnClick) { + lxFab.isOpen = !lxFab.isOpen; + } + } + } + + function lxFabTrigger() { + return { + restrict: 'E', + require: '^lxFab', + templateUrl: 'fab-trigger.html', + transclude: true, + replace: true + }; + } + + function lxFabActions() { + return { + restrict: 'E', + require: '^lxFab', + templateUrl: 'fab-actions.html', + link: link, + transclude: true, + replace: true + }; + + function link(scope, element, attrs, ctrl) { + scope.parentCtrl = ctrl; + } + } +})(); + +/***/ }), +/* 140 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); +/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29); +/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__); + + + + +(function () { + 'use strict'; + + angular.module('lumx.file-input').directive('lxFileInput', lxFileInput); + + function lxFileInput() { + return { + restrict: 'E', + templateUrl: 'file-input.html', + scope: { + label: '@lxLabel', + accept: '@lxAccept', + callback: '&?lxCallback' + }, + link: link, + controller: LxFileInputController, + controllerAs: 'lxFileInput', + bindToController: true, + replace: true + }; + + function link(scope, element, attrs, ctrl) { + var input = element.find('input'); + input.on('change', ctrl.updateModel).on('blur', function () { + element.removeClass('input-file--is-focus'); + }); + scope.$on('$destroy', function () { + input.off(); + }); + } + } + + LxFileInputController.$inject = ['$element', '$scope', '$timeout']; + + function LxFileInputController($element, $scope, $timeout) { + var lxFileInput = this; + var input = $element.find('input'); + var timer; + lxFileInput.updateModel = updateModel; + $scope.$on('$destroy', function () { + $timeout.cancel(timer); + }); + + function setFileName() { + if (input.val()) { + lxFileInput.fileName = input.val().replace(/C:\\fakepath\\/i, ''); + $element.addClass('input-file--is-focus'); + $element.addClass('input-file--is-active'); + } else { + lxFileInput.fileName = undefined; + $element.removeClass('input-file--is-active'); + } + + input.val(undefined); + } + + function updateModel() { + if (angular.isDefined(lxFileInput.callback)) { + lxFileInput.callback({ + newFile: input[0].files[0] + }); + } + + timer = $timeout(setFileName); + } + } +})(); + +/***/ }), +/* 141 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IconDirective", function() { return IconDirective; }); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30); +/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14); +/* harmony import */ var core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(31); +/* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0); +/* harmony import */ var _views_icon_html__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(60); +/* harmony import */ var _views_icon_html__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_views_icon_html__WEBPACK_IMPORTED_MODULE_5__); + + + + + + + +function IconDirective() { + 'ngInject'; + + function link(scope, el, attrs) { + attrs.$observe('lxPath', function (path) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-icon--path"); + el.find('path').attr('d', path); + }); + attrs.$observe('lxId', function (font) { + el.addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-icon--font mdi mdi-" + font); + }); + attrs.$observe('lxColor', function (color) { + if (!color) { + return; + } + + el.removeClass(function (index, className) { + return (className.match(/(?:\S|-)*icon--color-\S+/g) || []).join(' '); + }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-icon--color-" + color); + }); + attrs.$observe('lxColorVariant', function (colorVariant) { + if (!colorVariant) { + return; + } + + el.removeClass(function (index, className) { + return (className.match(/(?:\S|-)*icon--color-variant-\S+/g) || []).join(' '); + }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-icon--color-variant-" + colorVariant); + }); + attrs.$observe('lxSize', function (size) { + if (!size) { + return; + } + + el.removeClass(function (index, className) { + return (className.match(/(?:\S|-)*icon--size-\S+/g) || []).join(' '); + }).addClass(_lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_4__[/* CSS_PREFIX */ "a"] + "-icon--size-" + size); + }); + } + + return { + link: link, + replace: true, + restrict: 'E', + template: _views_icon_html__WEBPACK_IMPORTED_MODULE_5___default.a + }; +} + +angular.module('lumx.icon').directive('lxIcon', IconDirective); + + +/***/ }), +/* 142 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ListDirective", function() { return ListDirective; }); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); +/* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0); +/* harmony import */ var _views_list_html__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61); +/* harmony import */ var _views_list_html__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_views_list_html__WEBPACK_IMPORTED_MODULE_2__); + +ListController.$inject = ["$element", "$scope"]; + + + +function ListController($element, $scope) { + 'ngInject'; + + var lx = this; + lx.activeItemIndex = -1; + + function _nextItemOnKeyDown() { + var nextItem = $element.find("." + _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__[/* CSS_PREFIX */ "a"] + "-list-item").eq(lx.activeItemIndex + 1); + + if (nextItem.length === 0) { + lx.activeItemIndex = 0; + nextItem = $element.find("." + _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__[/* CSS_PREFIX */ "a"] + "-list-item").eq(lx.activeItemIndex).focus(); + } else { + lx.activeItemIndex++; + } + + nextItem.focus(); + } + + function _previousItemOnKeyUp() { + var previousItem = $element.find("." + _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__[/* CSS_PREFIX */ "a"] + "-list-item").eq(lx.activeItemIndex - 1); + + if (previousItem.length === 0) { + lx.activeItemIndex = $element.find("." + _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__[/* CSS_PREFIX */ "a"] + "-list-item").length - 1; + previousItem = $element.find("." + _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__[/* CSS_PREFIX */ "a"] + "-list-item").eq(lx.activeItemIndex).focus(); + } else { + lx.activeItemIndex--; + } + + previousItem.focus(); + } + + function _onKeyPress(evt) { + if (!lx.isClickable) { + return; + } + + if (evt.keyCode === _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__[/* DOWN_KEY_CODE */ "b"]) { + _nextItemOnKeyDown(); + + $scope.$apply(); + evt.preventDefault(); + evt.stopPropagation(); + } else if (evt.keyCode === _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__[/* UP_KEY_CODE */ "f"]) { + _previousItemOnKeyUp(); + + $scope.$apply(); + evt.preventDefault(); + evt.stopPropagation(); + } else if (evt.keyCode === _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_1__[/* TAB_KEY_CODE */ "e"]) { + evt.preventDefault(); + evt.stopPropagation(); + } + } + + function _resetActiveItemIndex() { + lx.activeItemIndex = -1; + } + + $element.on('keydown keypress', _onKeyPress).on('focus', _resetActiveItemIndex); + $scope.$on('$destroy', function () { + $element.off('keydown keypress', _onKeyPress).off('focus', _resetActiveItemIndex); + }); +} + +function ListDirective() { + return { + bindToController: true, + controller: ListController, + controllerAs: 'lx', + replace: true, + restrict: 'E', + scope: { + isClickable: '=?lxIsClickable' + }, + template: _views_list_html__WEBPACK_IMPORTED_MODULE_2___default.a, + transclude: true + }; +} + +angular.module('lumx.list').directive('lxList', ListDirective); + + +/***/ }), +/* 143 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ListDividerDirective", function() { return ListDividerDirective; }); +/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + + +function ListDividerDirective() { + 'ngInject'; + + return { + replace: true, + restrict: 'E', + template: "
  • " + }; +} + +angular.module('lumx.list').directive('lxListDivider', ListDividerDirective); + + +/***/ }), +/* 144 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ListItemDirective", function() { return ListItemDirective; }); +/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var _views_list_item_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62); +/* harmony import */ var _views_list_item_html__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_views_list_item_html__WEBPACK_IMPORTED_MODULE_1__); +ListItemController.$inject = ["$element", "$scope"]; + + + +function ListItemController($element, $scope) { + 'ngInject'; + + var lx = this; + lx.hasAfter = false; + lx.hasBefore = false; + lx.hasContent = false; + lx.parentController = undefined; + + function _registerIndex() { + if (angular.isUndefined(lx.parentController)) { + return; + } + + lx.parentController.activeItemIndex = $element.index("." + _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_0__[/* CSS_PREFIX */ "a"] + "-list-item"); + } + + $element.on('focus', _registerIndex); + $scope.$on('$destroy', function () { + $element.off('focus', _registerIndex); + }); +} + +function ListItemDirective() { + 'ngInject'; + + function link(scope, el, attrs, ctrls, transclude) { + if (transclude.isSlotFilled('before')) { + ctrls[0].hasBefore = true; + } + + if (transclude.isSlotFilled('content')) { + ctrls[0].hasContent = true; + } + + if (transclude.isSlotFilled('after')) { + ctrls[0].hasAfter = true; + } + + if (angular.isDefined(ctrls[1]) && ctrls[1]) { + ctrls[0].parentController = ctrls[1]; + } + } + + return { + bindToController: true, + controller: ListItemController, + controllerAs: 'lx', + link: link, + replace: true, + require: ['lxListItem', '?^lxList'], + restrict: 'E', + scope: { + isSelected: '=?lxIsSelected', + size: '@?lxSize' + }, + template: _views_list_item_html__WEBPACK_IMPORTED_MODULE_1___default.a, + transclude: { + after: '?lxListItemAfter', + before: '?lxListItemBefore', + content: '?lxListItemContent' + } + }; +} + +angular.module('lumx.list').directive('lxListItem', ListItemDirective); + + +/***/ }), +/* 145 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ListSubheaderDirective", function() { return ListSubheaderDirective; }); +/* harmony import */ var _lumx_core_js_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); + + +function ListSubheaderDirective() { + 'ngInject'; + + return { + replace: true, + restrict: 'E', + template: "
  • ", + transclude: true + }; +} + +angular.module('lumx.list').directive('lxListSubheader', ListSubheaderDirective); + + +/***/ }), +/* 146 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22); +/* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(52); +/* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19); +/* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(147); +/* harmony import */ var core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_3__); + + + + + +(function () { + 'use strict'; + + angular.module('lumx.notification').service('LxNotificationService', LxNotificationService); + LxNotificationService.$inject = ['$injector', '$rootScope', '$timeout', 'LxDepthService', 'LxEventSchedulerService']; + + function LxNotificationService($injector, $rootScope, $timeout, LxDepthService, LxEventSchedulerService) { + var service = this; + var dialogFilter; + var dialog; + var idEventScheduler; + var notificationList = []; + var actionClicked = false; + service.alert = showAlertDialog; + service.confirm = showConfirmDialog; + service.error = notifyError; + service.info = notifyInfo; + service.notify = notify; + service.success = notifySuccess; + service.warning = notifyWarning; + service.getNotificationList = getNotificationList; + service.reComputeElementsPosition = reComputeElementsPosition; + service.deleteNotification = deleteNotification; + service.buildNotification = buildNotification; + + function getElementHeight(_elem) { + return parseFloat(window.getComputedStyle(_elem, null).height); + } + + function moveNotificationUp() { + var newNotifIndex = notificationList.length - 1; + notificationList[newNotifIndex].height = getElementHeight(notificationList[newNotifIndex].elem[0]); + var upOffset = 0; + + for (var idx = newNotifIndex; idx >= 0; idx--) { + if (notificationList.length > 1 && idx !== newNotifIndex) { + upOffset = 24 + notificationList[newNotifIndex].height; + notificationList[idx].margin += upOffset; + notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px'); + } + } + } + + function deleteNotification(_notification, _callback) { + _callback = !angular.isFunction(_callback) ? angular.noop : _callback; + var notifIndex = notificationList.indexOf(_notification); + var dnOffset = angular.isDefined(notificationList[notifIndex]) ? 24 + notificationList[notifIndex].height : 24; + + for (var idx = 0; idx < notifIndex; idx++) { + if (notificationList.length > 1) { + notificationList[idx].margin -= dnOffset; + notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px'); + } + } + + _notification.elem.removeClass('notification--is-shown'); + + $timeout(function () { + _notification.elem.remove(); + + notifIndex = notificationList.indexOf(_notification); + + if (notifIndex != -1) { + notificationList.splice(notifIndex, 1); + } + + _callback(actionClicked); + + actionClicked = false; + }, 400); + } + + function reComputeElementsPosition() { + var baseOffset = 0; + + for (var idx = notificationList.length - 1; idx >= 0; idx--) { + notificationList[idx].height = getElementHeight(notificationList[idx].elem[0]); + notificationList[idx].margin = baseOffset; + notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px'); + baseOffset += notificationList[idx].height + 24; + } + } + + function buildNotification(_text, _icon, _color, _action) { + var notification = angular.element('
    ', { + class: 'notification' + }); + var notificationText = angular.element('', { + class: 'notification__content', + html: _text + }); + + if (angular.isDefined(_icon)) { + var notificationIcon = angular.element('', { + class: 'notification__icon mdi mdi-' + _icon + }); + notification.addClass('notification--has-icon').append(notificationIcon); + } + + if (angular.isDefined(_color)) { + notification.addClass('notification--' + _color); + } + + notification.append(notificationText); + + if (angular.isDefined(_action)) { + var $compile = $injector.get('$compile'); + var notificationAction = angular.element(''},transclude:!0}}n.r(t),n.d(t,"ButtonDirective",function(){return l});n(6),n(73),n(15),n(74);var i=n(0);angular.module("lumx.button").directive("lxButton",l)},function(e,t,n){"use strict";n.r(t);n(18),n(112),n(23),n(113);!function(){function e(e,t,n){function l(e){s(e,!0)}function i(e){s(e,!1)}function o(e){u(e,!0)}function a(){d.selectedRows.length=0;for(var t=0,n=d.tbody.length;t-1&&(d.selectedRows.splice(d.selectedRows.indexOf(t),1),d.allRowsSelected=!1,e.$broadcast("lx-data-table__unselected",d.id,d.selectedRows,t)))}var d=this;d.areAllRowsSelected=function(){for(var e=0,t=0,n=d.tbody.length;t0?n[0]:n)}),n.$on("lx-data-table__select-all",function(e,t){t===d.id&&a()}),n.$on("lx-data-table__unselect",function(e,t,n){t===d.id&&angular.isDefined(n)&&r(angular.isArray(n)&&n.length>0?n[0]:n)}),n.$on("lx-data-table__unselect-all",function(e,t){t===d.id&&c()}),n.$on("lx-data-table__activate",function(e,t,n){t===d.id&&angular.isDefined(n)&&l(angular.isArray(n)&&n.length>0?n[0]:n)}),n.$on("lx-data-table__deactivate",function(e,t,n){t===d.id&&angular.isDefined(n)&&i(angular.isArray(n)&&n.length>0?n[0]:n)})}angular.module("lumx.data-table").directive("lxDataTable",function(){return{restrict:"E",templateUrl:"data-table.html",scope:{activable:"=?lxActivable",border:"=?lxBorder",bulk:"=?lxBulk",selectable:"=?lxSelectable",thumbnail:"=?lxThumbnail",tbody:"=lxTbody",thead:"=lxThead"},link:function(e,t,n,l){n.$observe("id",function(e){l.id=e})},controller:e,controllerAs:"lxDataTable",bindToController:!0,transclude:!0,replace:!0}}),e.$inject=["$rootScope","$sce","$scope"]}()},function(e,t,n){"use strict";var l=n(2),i=n(24),o=n(17),a=n(4),r=n(22),c=[].sort,s=[1,2,3],u=a(function(){s.sort(void 0)}),d=a(function(){s.sort(null)}),p=r("sort"),f=u||!d||p;l({target:"Array",proto:!0,forced:f},{sort:function(e){return void 0===e?c.call(o(this)):c.call(o(this),i(e))}})},function(e,t,n){var l=n(10),i=n(12).f,o=Function.prototype,a=o.toString,r=/^\s*function ([^ (]*)/;!l||"name"in o||i(o,"name",{configurable:!0,get:function(){try{return a.call(this).match(r)[1]}catch(e){return""}}})},function(e,t){!function(){"use strict";function e(e){this.select=function(t,n){e.$broadcast("lx-data-table__select",t,n)},this.selectAll=function(t){e.$broadcast("lx-data-table__select-all",t)},this.unselect=function(t,n){e.$broadcast("lx-data-table__unselect",t,n)},this.unselectAll=function(t){e.$broadcast("lx-data-table__unselect-all",t)},this.activate=function(t,n){e.$broadcast("lx-data-table__activate",t,n)},this.deactivate=function(t,n){e.$broadcast("lx-data-table__deactivate",t,n)}}angular.module("lumx.data-table").service("LxDataTableService",e),e.$inject=["$rootScope"]}()},function(e,t,n){"use strict";n.r(t);n(6),n(54),n(70),n(15),n(30),n(116);!function(){function e(e,n){return{restrict:"AE",templateUrl:"date-picker.html",scope:{autoClose:"=?lxAutoClose",callback:"&?lxCallback",color:"@?lxColor",escapeClose:"=?lxEscapeClose",inputFormat:"@?lxInputFormat",maxDate:"=?lxMaxDate",ngModel:"=",minDate:"=?lxMinDate",locale:"@lxLocale"},link:function(t,l,i){angular.isDefined(i.id)?i.$observe("id",function(n){t.lxDatePicker.pickerId=n,e.registerScope(t.lxDatePicker.pickerId,t)}):(t.lxDatePicker.pickerId=n.generateUUID(),e.registerScope(t.lxDatePicker.pickerId,t))},controller:t,controllerAs:"lxDatePicker",bindToController:!0,replace:!0,transclude:!0}}function t(e,t,n,l,i,o){function a(){f.days=[];var e=angular.copy(f.ngModelMoment).date(0),t=angular.copy(f.ngModelMoment).date(1),n=t.clone().endOf("month"),l=n.date();f.emptyFirstDays=[];for(var i=0===t.day()?6:t.day()-1;i>0;i--)f.emptyFirstDays.push({});for(var o=0;oc&&(a.disabled=!0)}f.days.push(a)}f.emptyLastDays=[];for(var s=7-(0===n.day()?7:n.day());s>0;s--)f.emptyLastDays.push({})}var r,c,s,u,d,p,f=this;f.closeDatePicker=function(){i.close(f.pickerId)},f.displayYearSelection=function(){f.yearSelection=!0,u=n(function(){var e=angular.element(".lx-date-picker__year-selector"),t=e.find(".lx-date-picker__year--is-active");e.scrollTop(e.scrollTop()+t.position().top-e.height()/2+t.height()/2)})},f.hideYearSelection=function(){f.yearSelection=!1},f.getDateFormatted=function(){var e=f.ngModelMoment.format("llll").replace(f.ngModelMoment.format("LT"),"").trim().replace(f.ngModelMoment.format("YYYY"),"").trim(),t=e.slice(-1);return","===t&&(e=e.slice(0,-1)),e},f.nextMonth=function(){f.ngModelMoment=f.ngModelMoment.add(1,"month"),a()},f.openDatePicker=function(){i.open(f.pickerId),a()},f.previousMonth=function(){f.ngModelMoment=f.ngModelMoment.subtract(1,"month"),a()},f.select=function(e){e.disabled||(f.ngModel=e.toDate(),f.ngModelMoment=angular.copy(e),angular.isDefined(f.callback)&&f.callback({newDate:f.ngModel}),angular.isDefined(c)&&f.inputFormat&&(c.$setViewValue(angular.copy(e).format(f.inputFormat)),c.$render()),a())},f.selectYear=function(e){f.yearSelection=!1,f.ngModelMoment=f.ngModelMoment.year(e),a()},f.autoClose=!angular.isDefined(f.autoClose)||f.autoClose,f.color=angular.isDefined(f.color)?f.color:"primary",f.element=e.find(".lx-date-picker"),f.escapeClose=!angular.isDefined(f.escapeClose)||f.escapeClose,f.isOpen=!1,f.moment=moment,f.yearSelection=!1,f.uuid=o.generateUUID(),l(function(l){l.length&&(f.hasInput=!0,s=n(function(){r=e.find(".lx-date-input input"),c=r.data("$ngModelController"),p=t.$watch(function(){return c.$viewValue},function(e,t){angular.isUndefined(e)&&(f.ngModel=void 0)})}))}),d=t.$watch(function(){return f.ngModel},function(){moment.locale(f.locale),f.ngModelMoment=angular.isDefined(f.ngModel)?moment(angular.copy(f.ngModel)):moment(),f.days=[],f.daysOfWeek=[moment.weekdaysMin(1),moment.weekdaysMin(2),moment.weekdaysMin(3),moment.weekdaysMin(4),moment.weekdaysMin(5),moment.weekdaysMin(6),moment.weekdaysMin(0)],f.years=[];for(var e=moment().year()-100;e<=moment().year()+100;e++)f.years.push(e);a()}),t.$on("$destroy",function(){n.cancel(s),n.cancel(u),angular.isFunction(d)&&d(),angular.isFunction(p)&&p()})}angular.module("lumx.date-picker").directive("lxDatePicker",e),e.$inject=["LxDatePickerService","LxUtilsService"],t.$inject=["$element","$scope","$timeout","$transclude","LxDatePickerService","LxUtilsService"]}()},function(e,t,n){"use strict";var l=n(2),i=n(55).trim,o=n(117);l({target:"String",proto:!0,forced:o("trim")},{trim:function(){return i(this)}})},function(e,t,n){var l=n(4),i=n(31);e.exports=function(e){return l(function(){return!!i[e]()||"​…᠎"!="​…᠎"[e]()||i[e].name!==e})}},function(e,t){!function(){"use strict";function e(e,t,n,l){function i(n){angular.isDefined(c)&&(l.unregister(c),c=void 0),a=void 0,e.$broadcast("lx-date-picker__close-start",n),r.removeClass("lx-date-picker-filter--is-shown"),s[n].element.removeClass("lx-date-picker--is-shown"),t(function(){angular.element("body").removeClass("no-scroll-date-picker-"+s[n].uuid),r.remove(),s[n].element.hide().appendTo(s[n].elementParent),s[n].isOpen=!1,e.$broadcast("lx-date-picker__close-end",n)},600)}function o(e){27==e.keyCode&&angular.isDefined(a)&&i(a),e.stopPropagation()}var a,r,c,s={};this.close=i,this.open=function(u){n.register(),a=u,angular.element("body").addClass("no-scroll-date-picker-"+s[u].uuid),r=angular.element("
    ",{class:"lx-date-picker-filter"}),r.css("z-index",n.getDepth()).appendTo("body"),s[a].autoClose&&r.on("click",function(){i(a)}),s[a].escapeClose&&(c=l.register("keyup",o)),s[a].element.css("z-index",n.getDepth()+1).appendTo("body").show(),t(function(){e.$broadcast("lx-date-picker__open-start",a),s[a].isOpen=!0,r.addClass("lx-date-picker-filter--is-shown"),s[a].element.addClass("lx-date-picker--is-shown")},100),t(function(){e.$broadcast("lx-date-picker__open-end",a)},700)},this.registerScope=function(e,t){s[e]=t.lxDatePicker}}angular.module("lumx.date-picker").service("LxDatePickerService",e),e.$inject=["$rootScope","$timeout","LxDepthService","LxEventSchedulerService"]}()},function(e,t,n){"use strict";n.r(t);n(6);!function(){function e(e,t,n,l,i,o,a,r,c){function s(){var t=e,n=t.find(".dialog__header"),l=t.find(".dialog__content"),i=t.find(".dialog__footer");if(i.length||(i=t.find(".dialog__actions")),!angular.isUndefined(n)){var a=60+n.outerHeight()+l.outerHeight()+i.outerHeight();x===a&&b===o.innerHeight||(x=a,b=o.innerHeight,a>=o.innerHeight?(t.addClass("dialog--is-fixed"),h.css({top:n.outerHeight(),bottom:i.outerHeight()}).off("scroll",d).on("scroll",d)):(t.removeClass("dialog--is-fixed"),h.removeAttr("style").off("scroll",d)))}}function u(){m&&i.cancel(m),m=i(function(){s()},200)}function d(){h.scrollTop()+h.innerHeight()>=h[0].scrollHeight&&(n.$broadcast("lx-dialog__scroll-end",S.id),h.off("scroll",d),i(function(){h.on("scroll",d)},500))}function p(e){27==e.keyCode&&f(!0),e.stopPropagation()}function f(l,a){S.isOpen&&(a=a||{},angular.isDefined(v)&&(r.unregister(v),v=void 0),angular.element(o).off("resize",u),e.find(".dialog__scrollable").off("scroll",d),n.$broadcast("lx-dialog__close-start",S.id,l,a),m&&i.cancel(m),t.cancel(g),y.removeClass("dialog-filter--is-shown"),e.removeClass("dialog--is-shown"),i(function(){angular.element("body").removeClass("no-scroll-dialog-"+S.uuid),y.remove(),e.hide().removeClass("dialog--is-fixed").appendTo(C),S.isOpen=!1,x=void 0,n.$broadcast("lx-dialog__close-end",S.id,l,a)},600))}var x,g,h,v,m,b,S=this,y=angular.element("
    ",{class:"dialog-filter"}),C=e.parent();S.autoClose=!angular.isDefined(S.autoClose)||S.autoClose,S.escapeClose=!angular.isDefined(S.escapeClose)||S.escapeClose,S.isOpen=!1,S.uuid=c.generateUUID(),l.$on("lx-dialog__open",function(l,c,d){var x;c===S.id&&(x=d,S.isOpen||(a.register(),angular.element("body").addClass("no-scroll-dialog-"+S.uuid),y.css("z-index",a.getDepth()).appendTo("body"),S.autoClose&&y.on("click",function(){f(!0)}),S.escapeClose&&(v=r.register("keyup",p)),e.css("z-index",a.getDepth()+1).appendTo("body").show(),i(function(){n.$broadcast("lx-dialog__open-start",S.id,x),S.isOpen=!0,y.addClass("dialog-filter--is-shown"),e.addClass("dialog--is-shown")},100),i(function(){0===e.find(".dialog__scrollable").length&&e.find(".dialog__content").wrap(angular.element("
    ",{class:"dialog__scrollable"})),h=e.find(".dialog__scrollable")},200),i(function(){n.$broadcast("lx-dialog__open-end",S.id,x)},700),g=t(function(){s()},500),angular.element(o).on("resize",u)))}),l.$on("lx-dialog__close",function(e,t,n,l){t!==S.id&&void 0!==t||f(n,l)}),l.$on("$destroy",function(){f(!0)})}function t(e){return{restrict:"A",link:function(t,n){n.on("click",function(){e.close(n.parents(".dialog").attr("id"),!0)}),t.$on("$destroy",function(){n.off()})}}}angular.module("lumx.dialog").directive("lxDialog",function(){return{restrict:"E",template:"
    ",scope:{autoClose:"=?lxAutoClose",escapeClose:"=?lxEscapeClose",size:"@?lxSize"},link:function(e,t,n,l){n.$observe("id",function(e){l.id=e})},controller:e,controllerAs:"lxDialog",bindToController:!0,replace:!0,transclude:!0}}).directive("lxDialogHeader",function(){return{restrict:"E",template:'
    ',replace:!0,transclude:!0}}).directive("lxDialogContent",function(){return{restrict:"E",template:'
    ',replace:!0,transclude:!0}}).directive("lxDialogFooter",function(){return{restrict:"E",template:'',replace:!0,transclude:!0}}).directive("lxDialogClose",t),e.$inject=["$element","$interval","$rootScope","$scope","$timeout","$window","LxDepthService","LxEventSchedulerService","LxUtilsService"],t.$inject=["LxDialogService"]}()},function(e,t){!function(){"use strict";function e(e){this.open=function(t,n){e.$broadcast("lx-dialog__open",t,n)},this.close=function(t,n,l){e.$broadcast("lx-dialog__close",t,n,l)}}angular.module("lumx.dialog").service("LxDialogService",e),e.$inject=["$rootScope"]}()},function(e,t,n){"use strict";n.r(t);n(6),n(32),n(18),n(54),n(33);!function(){function e(e,t,n,l,i,o,a,r,c,s,u){function d(){var n,o,a;e.off("click touchend",x),l.$broadcast("lx-dropdown__close-start",t.attr("id")),angular.element(window).off("resize",f),angular.isFunction(S)&&(S(),S=void 0),c.resetActiveDropdownUuid(),!$.hover&&angular.isDefined(T)&&T.remove(),angular.isFunction(k)&&k(),k=void 0,$.hasToggle&&(a=angular.isString(C)?angular.element(C):C,a.off("wheel").css("z-index","")),y.css({overflow:"hidden"}),"expand"===$.effect?(n={width:0,height:0},o="easeOutQuint"):"fade"===$.effect&&(n={opacity:0},o="linear"),"expand"===$.effect||"fade"===$.effect?y.velocity(n,{duration:200,easing:o,complete:function(){y.removeAttr("style").removeClass("dropdown-menu--is-open").appendTo(t.find(".dropdown")),i.$apply(function(){$.isOpen=!1,$.escapeClose&&(s.unregister(_),_=void 0)})}}):"none"===$.effect&&(y.removeAttr("style").removeClass("dropdown-menu--is-open").appendTo(t.find(".dropdown")),i.$apply(function(){$.isOpen=!1,$.escapeClose&&(s.unregister(_),_=void 0)})),y.off("scroll",b),l.$broadcast("lx-dropdown__close-end",t.attr("id"))}function p(){var e,t,n,l=angular.isString(C)?angular.element(C):C,i=l.outerHeight(),o=l.offset().top-angular.element(a).scrollTop(),r=a.innerHeight;return $.overToggle?(e=o+i,t=r-o):(e=o,t=r-(o+i)),n=e>t?"top":"bottom",{top:e,bottom:t,direction:n}}function f(){var e,t,n,l=p(),i=angular.isString(C)?angular.element(C):C,o=i.outerWidth(),r=i.outerHeight(),c=i.offset().top-angular.element(a).scrollTop(),s=a.innerWidth,u=a.innerHeight,d={};return angular.isDefined($.width)?$.width.indexOf("%")>-1?(e=o*($.width.slice(0,-1)/100),angular.extend(d,{minWidth:e})):(e=$.width,angular.extend(d,{width:e})):(e="auto",angular.extend(d,{width:e})),"left"===$.position?(t=i.offset().left,t=t<=$.minOffset?$.minOffset:t,n="auto"):"right"===$.position?(t="auto",n=s-i.offset().left-o,n=n>s-$.minOffset?s-$.minOffset:n):"center"===$.position&&(t=i.offset().left+o/2-e/2,t=t<=$.minOffset?$.minOffset:t,n="auto"),angular.extend(d,{left:t,right:n}),y.css(d),"top"===l.direction?(y.css({bottom:$.overToggle?u-c-r:u-c+~~$.offset}),l.top):"bottom"===l.direction?(y.css({top:$.overToggle?c:c+r+~~$.offset}),l.bottom):void 0}function x(){o(function(){c.close($.uuid,!0)})}function g(){var n;e.on("click touchend",x),e.on("touchmove",function(t){e.off("touchend",x)}),l.$broadcast("lx-dropdown__open-start",t.attr("id")),$.isOpen=!0,r.register(),$.hover||(T.css("z-index",r.getDepth()).appendTo("body"),T.on("click wheel touchmove ontouchstart",d)),angular.element(window).on("resize",f),k=u.disableBodyScroll(),$.hasToggle&&(n=angular.isString(C)?angular.element(C):C,n.css("z-index",r.getDepth()+1).on("wheel",function(e){e.preventDefault()})),y.addClass("dropdown-menu--is-open").css("z-index",r.getDepth()+1).appendTo("body"),$.escapeClose&&(_=s.register("keyup",h)),w=o(function(){var e=f()-~~$.offset,n=y.outerHeight(),a=y.outerWidth();e=y[0].scrollHeight&&l.$broadcast("lx-dropdown__scroll-end",t.attr("id"))}var S,y,C,_,w,D,k,$=this,T=angular.element("
    ",{class:"scroll-mask"});$.closeDropdownMenu=d,$.openDropdownMenu=g,$.registerDropdownMenu=function(e){y=e},$.registerDropdownToggle=v,$.toggle=function(){$.isOpen?d():g()},$.uuid=u.generateUUID(),$.closeOnClick=!angular.isDefined($.closeOnClick)||$.closeOnClick,$.effect=angular.isDefined($.effect)?$.effect:"expand",$.escapeClose=!angular.isDefined($.escapeClose)||$.escapeClose,$.hasToggle=!1,$.isOpen=!1,$.overToggle=!!angular.isDefined($.overToggle)&&$.overToggle,$.position=angular.isDefined($.position)?$.position:"left",$.minOffset=angular.isUndefined($.minOffset)||$.minOffset<0?8:$.minOffset,i.$on("lx-dropdown__open",function(e,t){t.uuid!==$.uuid||$.isOpen||(c.closeActiveDropdown(),c.registerActiveDropdownUuid($.uuid),D=t.target,v(D),g())}),i.$on("lx-dropdown__close",function(e,t){t.uuid===$.uuid&&$.isOpen&&(!t.documentClick||t.documentClick&&$.closeOnClick)&&d()}),i.$on("$destroy",function(){o.cancel(w)})}function t(e,t,n){return{restrict:"AE",templateUrl:"dropdown-toggle.html",require:"^lxDropdown",scope:!0,link:function(l,i,o,a){var r=[],c=a.hover?"mouseenter":"click";a.registerDropdownToggle(i),i.on(c,function(i){"mouseenter"===c&&"ontouchstart"in window&&angular.element(t).outerWidth()<=480||(a.hover||i.stopPropagation(),n.closeActiveDropdown(),n.registerActiveDropdownUuid(a.uuid),a.hover?(a.mouseOnToggle=!0,a.isOpen||(r[0]=e(function(){l.$apply(function(){a.openDropdownMenu()})},a.hoverDelay))):l.$apply(function(){a.toggle()}))}),a.hover&&i.on("mouseleave",function(){a.mouseOnToggle=!1,e.cancel(r[0]),r[1]=e(function(){a.mouseOnMenu||l.$apply(function(){a.closeDropdownMenu()})},a.hoverDelay)}),l.$on("$destroy",function(){i.off(),a.hover&&(e.cancel(r[0]),e.cancel(r[1]))})},replace:!0,transclude:!0}}function n(e){return{restrict:"E",templateUrl:"dropdown-menu.html",require:["lxDropdownMenu","^lxDropdown"],scope:!0,link:function(t,n,l,i){var o;i[1].registerDropdownMenu(n),i[0].setParentController(i[1]),i[1].hover&&(n.on("mouseenter",function(){i[1].mouseOnMenu=!0}),n.on("mouseleave",function(){i[1].mouseOnMenu=!1,o=e(function(){i[1].mouseOnToggle||t.$apply(function(){i[1].closeDropdownMenu()})},i[1].hoverDelay)})),t.$on("$destroy",function(){i[1].hover&&(n.off(),e.cancel(o))})},controller:l,controllerAs:"lxDropdownMenu",bindToController:!0,replace:!0,transclude:!0}}function l(e){var t=this;t.setParentController=function(e){t.parentCtrl=e}}function i(e){return{restrict:"A",link:function(t,n){var l;n.on("click",function(e){e.stopPropagation()}),l=e(function(){n.find("input").focus()},200),t.$on("$destroy",function(){e.cancel(l),n.off()})}}}angular.module("lumx.dropdown").directive("lxDropdown",function(){return{restrict:"E",templateUrl:"dropdown.html",scope:{closeOnClick:"=?lxCloseOnClick",effect:"@?lxEffect",escapeClose:"=?lxEscapeClose",hover:"=?lxHover",hoverDelay:"=?lxHoverDelay",minOffset:"=?lxMinOffset",offset:"@?lxOffset",overToggle:"=?lxOverToggle",position:"@?lxPosition",width:"@?lxWidth"},link:function(e,t,n,l){angular.forEach(["position","width"],function(t){angular.isDefined(n[t])&&n.$observe(t,function(n){e.lxDropdown[t]=n})}),angular.forEach(["escapeClose","overToggle"],function(t){angular.isDefined(n[t])&&e.$watch(function(){return e.$parent.$eval(n[t])},function(n){e.lxDropdown[t]=n})}),n.$observe("id",function(e){l.uuid=e}),e.$on("$destroy",function(){l.isOpen&&l.closeDropdownMenu()})},controller:e,controllerAs:"lxDropdown",bindToController:!0,transclude:!0}}).directive("lxDropdownToggle",t).directive("lxDropdownMenu",n).directive("lxDropdownFilter",i),e.$inject=["$document","$element","$interval","$rootScope","$scope","$timeout","$window","LxDepthService","LxDropdownService","LxEventSchedulerService","LxUtilsService"],t.$inject=["$timeout","$window","LxDropdownService"],n.$inject=["$timeout"],l.$inject=["$element"],i.$inject=["$timeout"]}()},function(e,t){e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(e,t){!function(){"use strict";function e(e,t){var n;this.close=function(e,n){n=n||!1,t.$broadcast("lx-dropdown__close",{documentClick:n,uuid:e})},this.closeActiveDropdown=function(){angular.isDefined(n)&&n.length>0&&t.$broadcast("lx-dropdown__close",{documentClick:!0,uuid:n})},this.open=function(e,n){t.$broadcast("lx-dropdown__open",{uuid:e,target:n})},this.isOpen=function(e){return n===e},this.registerActiveDropdownUuid=function(e){n=e},this.resetActiveDropdownUuid=function(){n=void 0}}angular.module("lumx.dropdown").service("LxDropdownService",e),e.$inject=["$document","$rootScope"]}()},function(e,t){!function(){"use strict";function e(){var e=this;e.setFabDirection=function(t){e.lxDirection=t},e.setFabTriggerMethod=function(t){e.lxTriggerOnClick=t},e.toggleState=function(){e.lxTriggerOnClick&&(e.isOpen=!e.isOpen)},e.isOpen=!1}angular.module("lumx.fab").directive("lxFab",function(){return{restrict:"E",templateUrl:"fab.html",scope:!0,link:function(e,t,n,l){n.$observe("lxDirection",function(e){l.setFabDirection(e)}),n.$observe("lxTriggerOnClick",function(t){l.setFabTriggerMethod(e.$eval(t))})},controller:e,controllerAs:"lxFab",bindToController:!0,transclude:!0,replace:!0}}).directive("lxFabTrigger",function(){return{restrict:"E",require:"^lxFab",templateUrl:"fab-trigger.html",transclude:!0,replace:!0}}).directive("lxFabActions",function(){return{restrict:"E",require:"^lxFab",templateUrl:"fab-actions.html",link:function(e,t,n,l){e.parentCtrl=l},transclude:!0,replace:!0}})}()},function(e,t,n){"use strict";n.r(t);n(6),n(15),n(30);!function(){function e(e,t,n){function l(){a.val()?(o.fileName=a.val().replace(/C:\\fakepath\\/i,""),e.addClass("input-file--is-focus"),e.addClass("input-file--is-active")):(o.fileName=void 0,e.removeClass("input-file--is-active")),a.val(void 0)}var i,o=this,a=e.find("input");o.updateModel=function(){angular.isDefined(o.callback)&&o.callback({newFile:a[0].files[0]}),i=n(l)},t.$on("$destroy",function(){n.cancel(i)})}angular.module("lumx.file-input").directive("lxFileInput",function(){return{restrict:"E",templateUrl:"file-input.html",scope:{label:"@lxLabel",accept:"@lxAccept",callback:"&?lxCallback"},link:function(e,t,n,l){var i=t.find("input");i.on("change",l.updateModel).on("blur",function(){t.removeClass("input-file--is-focus")}),e.$on("$destroy",function(){i.off()})},controller:e,controllerAs:"lxFileInput",bindToController:!0,replace:!0}}),e.$inject=["$element","$scope","$timeout"]}()},function(e,t,n){"use strict";function l(){return{link:function(e,t,n){n.$observe("lxPath",function(e){t.addClass(i.a+"-icon--path"),t.find("path").attr("d",e)}),n.$observe("lxId",function(e){t.addClass(i.a+"-icon--font mdi mdi-"+e)}),n.$observe("lxColor",function(e){e&&t.removeClass(function(e,t){return(t.match(/(?:\S|-)*icon--color-\S+/g)||[]).join(" ")}).addClass(i.a+"-icon--color-"+e)}),n.$observe("lxColorVariant",function(e){e&&t.removeClass(function(e,t){return(t.match(/(?:\S|-)*icon--color-variant-\S+/g)||[]).join(" ")}).addClass(i.a+"-icon--color-variant-"+e)}),n.$observe("lxSize",function(e){e&&t.removeClass(function(e,t){return(t.match(/(?:\S|-)*icon--size-\S+/g)||[]).join(" ")}).addClass(i.a+"-icon--size-"+e)})},replace:!0,restrict:"E",template:a.a}}n.r(t),n.d(t,"IconDirective",function(){return l});n(6),n(73),n(15),n(74);var i=n(0),o=n(58),a=n.n(o);angular.module("lumx.icon").directive("lxIcon",l)},function(e,t,n){"use strict";n.r(t);n(18),n(54),n(23),n(128);!function(){function e(e,t,n,l,i){function o(e){return parseFloat(window.getComputedStyle(e,null).height)}function a(){var e=h.length-1;h[e].height=o(h[e].elem[0]);for(var t=0,n=e;n>=0;n--)h.length>1&&n!==e&&(t=24+h[e].height,h[n].margin+=t,h[n].elem.css("marginBottom",h[n].margin+"px"))}function r(e,t){t=angular.isFunction(t)?t:angular.noop;for(var l=h.indexOf(e),i=angular.isDefined(h[l])?24+h[l].height:24,o=0;o1&&(h[o].margin-=i,h[o].elem.css("marginBottom",h[o].margin+"px"));e.elem.removeClass("notification--is-shown"),n(function(){e.elem.remove(),l=h.indexOf(e),-1!=l&&h.splice(l,1),t(v),v=!1},400)}function c(n,l,o){var a=e.get("$compile"),r=angular.element("
    ",{class:"dialog__footer"}),c=angular.element("'},transclude:!0}}n.r(t),n.d(t,"ButtonDirective",function(){return i});n(5),n(30),n(14),n(31);var l=n(0);angular.module("lumx.button").directive("lxButton",i)},function(e,t,n){"use strict";function i(e){var t,n=this;n.checkboxId=e.generateUUID(),n.hasHelper=!1,n.hasLabel=!1,n.hasTranscluded=!1,n.icons={mdiCheck:r.b},n.viewValue=void 0,n.setModelController=function(e){t=e,t.$render=function(){n.viewValue=t.$viewValue}},n.updateViewValue=function(){angular.isUndefined(t)?n.viewValue=!n.viewValue:(t.$setViewValue(!t.$viewValue),t.$render())}}function l(){return{bindToController:!0,controller:i,controllerAs:"lx",link:function(e,t,n,i,l){i[1]&&i[0].setModelController(i[1]),l.isSlotFilled("label")&&(i[0].hasLabel=!0),l.isSlotFilled("helper")&&(i[0].hasHelper=!0),i[0].hasLabel||i[0].hasHelper||l(function(e){e.length>0&&(i[0].hasTranscluded=!0)}),n.$observe("disabled",function(e){t.find("input").attr("disabled",e),e?t.addClass(o.a+"-checkbox--is-disabled"):t.removeClass(o.a+"-checkbox--is-disabled")}),n.$observe("checked",function(e){t.find("input").attr("checked",e),i[0].viewValue=e})},replace:!0,require:["lxCheckbox","?ngModel"],restrict:"E",scope:{theme:"@?lxTheme"},template:c.a,transclude:{helper:"?lxCheckboxHelp",label:"?lxCheckboxLabel"}}}n.r(t),n.d(t,"CheckboxDirective",function(){return l});n(5);var o=n(0),r=n(8),a=n(57),c=n.n(a);i.$inject=["LxUtilsService"],angular.module("lumx.checkbox").directive("lxCheckbox",l)},function(e,t,n){"use strict";function i(){var e=this;e.hasAfter=!1,e.hasBefore=!1,e.hasLabel=!1,e.icons={mdiMenuDown:r.g},e.handleOnAfterClick=function(t){angular.isFunction(e.onAfterClick)&&(t.stopPropagation(),e.onAfterClick())},e.handleOnBeforeClick=function(t){angular.isFunction(e.onBeforeClick)&&(t.stopPropagation(),e.onBeforeClick())},e.handleOnClick=function(t){angular.isFunction(e.onClick)&&e.onClick({$event:t})}}function l(){return{bindToController:!0,controller:i,controllerAs:"lx",link:function(e,t,n,i,l){l.isSlotFilled("after")&&(i.hasAfter=!0),l.isSlotFilled("before")&&(i.hasBefore=!0),l.isSlotFilled("label")&&(i.hasLabel=!0),n.lxColor||t.addClass(o.a+"-chip--color-dark"),n.$observe("lxColor",function(e){e&&t.removeClass(function(e,t){return(t.match(/(?:\S|-)*chip--color-\S+/g)||[]).join(" ")}).addClass(o.a+"-chip--color-"+e)})},replace:!0,restrict:"E",scope:{color:"@?lxColor",hasDropdownIndicator:"=?lxHasDropdownIndicator",isDisabled:"=?ngDisabled",isSelected:"=?lxIsSelected",onAfterClick:"&?lxOnAfterClick",onBeforeClick:"&?lxOnBeforeClick",onClick:"&?lxOnClick",size:"@?lxSize",theme:"@?lxTheme"},template:c.a,transclude:{after:"?lxChipAfter",before:"?lxChipBefore",label:"lxChipLabel"}}}n.r(t),n.d(t,"ChipDirective",function(){return l});n(30),n(14),n(31);var o=n(0),r=n(8),a=n(58),c=n.n(a);angular.module("lumx.chip").directive("lxChip",l)},function(e,t,n){"use strict";n.r(t);n(22),n(128),n(19),n(129);!function(){function e(e,t,n){function i(){a.selectedRows.length=0;for(var t=0,n=a.tbody.length;t-1&&(a.selectedRows.splice(a.selectedRows.indexOf(t),1),a.allRowsSelected=!1,e.$broadcast("lx-data-table__unselected",a.id,a.selectedRows,t)))}var a=this;a.areAllRowsSelected=function(){for(var e=0,t=0,n=a.tbody.length;t0?n[0]:n)}),n.$on("lx-data-table__select-all",function(e,t){t===a.id&&i()}),n.$on("lx-data-table__unselect",function(e,t,n){t===a.id&&angular.isDefined(n)&&function(e){r(e,!1)}(angular.isArray(n)&&n.length>0?n[0]:n)}),n.$on("lx-data-table__unselect-all",function(e,t){t===a.id&&l()}),n.$on("lx-data-table__activate",function(e,t,n){t===a.id&&angular.isDefined(n)&&function(e){o(e,!0)}(angular.isArray(n)&&n.length>0?n[0]:n)}),n.$on("lx-data-table__deactivate",function(e,t,n){t===a.id&&angular.isDefined(n)&&function(e){o(e,!1)}(angular.isArray(n)&&n.length>0?n[0]:n)})}angular.module("lumx.data-table").directive("lxDataTable",function(){return{restrict:"E",templateUrl:"data-table.html",scope:{activable:"=?lxActivable",border:"=?lxBorder",bulk:"=?lxBulk",selectable:"=?lxSelectable",thumbnail:"=?lxThumbnail",tbody:"=lxTbody",thead:"=lxThead"},link:function(e,t,n,i){n.$observe("id",function(e){i.id=e})},controller:e,controllerAs:"lxDataTable",bindToController:!0,transclude:!0,replace:!0}}),e.$inject=["$rootScope","$sce","$scope"]}()},function(e,t,n){"use strict";var i=n(2),l=n(24),o=n(23),r=n(4),a=n(27),c=[].sort,s=[1,2,3],u=r(function(){s.sort(void 0)}),d=r(function(){s.sort(null)}),f=a("sort"),p=u||!d||f;i({target:"Array",proto:!0,forced:p},{sort:function(e){return void 0===e?c.call(o(this)):c.call(o(this),l(e))}})},function(e,t,n){var i=n(9),l=n(12).f,o=Function.prototype,r=o.toString,a=/^\s*function ([^ (]*)/;!i||"name"in o||l(o,"name",{configurable:!0,get:function(){try{return r.call(this).match(a)[1]}catch(e){return""}}})},function(e,t){!function(){"use strict";function e(e){this.select=function(t,n){e.$broadcast("lx-data-table__select",t,n)},this.selectAll=function(t){e.$broadcast("lx-data-table__select-all",t)},this.unselect=function(t,n){e.$broadcast("lx-data-table__unselect",t,n)},this.unselectAll=function(t){e.$broadcast("lx-data-table__unselect-all",t)},this.activate=function(t,n){e.$broadcast("lx-data-table__activate",t,n)},this.deactivate=function(t,n){e.$broadcast("lx-data-table__deactivate",t,n)}}angular.module("lumx.data-table").service("LxDataTableService",e),e.$inject=["$rootScope"]}()},function(e,t,n){"use strict";n.r(t);n(5),n(52),n(81),n(14),n(29),n(132);!function(){function e(e,n){return{restrict:"AE",templateUrl:"date-picker.html",scope:{autoClose:"=?lxAutoClose",callback:"&?lxCallback",color:"@?lxColor",escapeClose:"=?lxEscapeClose",inputFormat:"@?lxInputFormat",maxDate:"=?lxMaxDate",ngModel:"=",minDate:"=?lxMinDate",locale:"@lxLocale"},link:function(t,i,l){angular.isDefined(l.id)?l.$observe("id",function(n){t.lxDatePicker.pickerId=n,e.registerScope(t.lxDatePicker.pickerId,t)}):(t.lxDatePicker.pickerId=n.generateUUID(),e.registerScope(t.lxDatePicker.pickerId,t))},controller:t,controllerAs:"lxDatePicker",bindToController:!0,replace:!0,transclude:!0}}function t(e,t,n,i,l,o){function r(){p.days=[];var e=angular.copy(p.ngModelMoment).date(0),t=angular.copy(p.ngModelMoment).date(1),n=t.clone().endOf("month"),i=n.date();p.emptyFirstDays=[];for(var l=0===t.day()?6:t.day()-1;l>0;l--)p.emptyFirstDays.push({});for(var o=0;oc&&(r.disabled=!0)}p.days.push(r)}p.emptyLastDays=[];for(var s=7-(0===n.day()?7:n.day());s>0;s--)p.emptyLastDays.push({})}var a,c,s,u,d,f,p=this;p.closeDatePicker=function(){l.close(p.pickerId)},p.displayYearSelection=function(){p.yearSelection=!0,u=n(function(){var e=angular.element(".lx-date-picker__year-selector"),t=e.find(".lx-date-picker__year--is-active");e.scrollTop(e.scrollTop()+t.position().top-e.height()/2+t.height()/2)})},p.hideYearSelection=function(){p.yearSelection=!1},p.getDateFormatted=function(){var e=p.ngModelMoment.format("llll").replace(p.ngModelMoment.format("LT"),"").trim().replace(p.ngModelMoment.format("YYYY"),"").trim(),t=e.slice(-1);return","===t&&(e=e.slice(0,-1)),e},p.nextMonth=function(){p.ngModelMoment=p.ngModelMoment.add(1,"month"),r()},p.openDatePicker=function(){l.open(p.pickerId),r()},p.previousMonth=function(){p.ngModelMoment=p.ngModelMoment.subtract(1,"month"),r()},p.select=function(e){e.disabled||(p.ngModel=e.toDate(),p.ngModelMoment=angular.copy(e),angular.isDefined(p.callback)&&p.callback({newDate:p.ngModel}),angular.isDefined(c)&&p.inputFormat&&(c.$setViewValue(angular.copy(e).format(p.inputFormat)),c.$render()),r())},p.selectYear=function(e){p.yearSelection=!1,p.ngModelMoment=p.ngModelMoment.year(e),r()},p.autoClose=!angular.isDefined(p.autoClose)||p.autoClose,p.color=angular.isDefined(p.color)?p.color:"primary",p.element=e.find(".lx-date-picker"),p.escapeClose=!angular.isDefined(p.escapeClose)||p.escapeClose,p.isOpen=!1,p.moment=moment,p.yearSelection=!1,p.uuid=o.generateUUID(),i(function(i){i.length&&(p.hasInput=!0,s=n(function(){a=e.find(".lx-date-input input"),c=a.data("$ngModelController"),f=t.$watch(function(){return c.$viewValue},function(e,t){angular.isUndefined(e)&&(p.ngModel=void 0)})}))}),d=t.$watch(function(){return p.ngModel},function(){moment.locale(p.locale),p.ngModelMoment=angular.isDefined(p.ngModel)?moment(angular.copy(p.ngModel)):moment(),p.days=[],p.daysOfWeek=[moment.weekdaysMin(1),moment.weekdaysMin(2),moment.weekdaysMin(3),moment.weekdaysMin(4),moment.weekdaysMin(5),moment.weekdaysMin(6),moment.weekdaysMin(0)],p.years=[];for(var e=moment().year()-100;e<=moment().year()+100;e++)p.years.push(e);r()}),t.$on("$destroy",function(){n.cancel(s),n.cancel(u),angular.isFunction(d)&&d(),angular.isFunction(f)&&f()})}angular.module("lumx.date-picker").directive("lxDatePicker",e),e.$inject=["LxDatePickerService","LxUtilsService"],t.$inject=["$element","$scope","$timeout","$transclude","LxDatePickerService","LxUtilsService"]}()},function(e,t,n){"use strict";var i=n(2),l=n(53).trim,o=n(133);i({target:"String",proto:!0,forced:o("trim")},{trim:function(){return l(this)}})},function(e,t,n){var i=n(4),l=n(32);e.exports=function(e){return i(function(){return!!l[e]()||"​…᠎"!="​…᠎"[e]()||l[e].name!==e})}},function(e,t){!function(){"use strict";function e(e,t,n,i){function l(n){angular.isDefined(c)&&(i.unregister(c),c=void 0),r=void 0,e.$broadcast("lx-date-picker__close-start",n),a.removeClass("lx-date-picker-filter--is-shown"),s[n].element.removeClass("lx-date-picker--is-shown"),t(function(){angular.element("body").removeClass("no-scroll-date-picker-"+s[n].uuid),a.remove(),s[n].element.hide().appendTo(s[n].elementParent),s[n].isOpen=!1,e.$broadcast("lx-date-picker__close-end",n)},600)}function o(e){27==e.keyCode&&angular.isDefined(r)&&l(r),e.stopPropagation()}var r,a,c,s={};this.close=l,this.open=function(u){n.register(),r=u,angular.element("body").addClass("no-scroll-date-picker-"+s[u].uuid),a=angular.element("
    ",{class:"lx-date-picker-filter"}),a.css("z-index",n.getDepth()).appendTo("body"),s[r].autoClose&&a.on("click",function(){l(r)}),s[r].escapeClose&&(c=i.register("keyup",o)),s[r].element.css("z-index",n.getDepth()+1).appendTo("body").show(),t(function(){e.$broadcast("lx-date-picker__open-start",r),s[r].isOpen=!0,a.addClass("lx-date-picker-filter--is-shown"),s[r].element.addClass("lx-date-picker--is-shown")},100),t(function(){e.$broadcast("lx-date-picker__open-end",r)},700)},this.registerScope=function(e,t){s[e]=t.lxDatePicker}}angular.module("lumx.date-picker").service("LxDatePickerService",e),e.$inject=["$rootScope","$timeout","LxDepthService","LxEventSchedulerService"]}()},function(e,t,n){"use strict";n.r(t);n(5);!function(){function e(e,t,n,i,l,o,r,a,c){function s(){var t=e,n=t.find(".dialog__header"),i=t.find(".dialog__content"),l=t.find(".dialog__footer");if(l.length||(l=t.find(".dialog__actions")),!angular.isUndefined(n)){var r=60+n.outerHeight()+i.outerHeight()+l.outerHeight();x===r&&b===o.innerHeight||(x=r,b=o.innerHeight,r>=o.innerHeight?(t.addClass("dialog--is-fixed"),g.css({top:n.outerHeight(),bottom:l.outerHeight()}).off("scroll",d).on("scroll",d)):(t.removeClass("dialog--is-fixed"),g.removeAttr("style").off("scroll",d)))}}function u(){m&&l.cancel(m),m=l(function(){s()},200)}function d(){g.scrollTop()+g.innerHeight()>=g[0].scrollHeight&&(n.$broadcast("lx-dialog__scroll-end",y.id),g.off("scroll",d),l(function(){g.on("scroll",d)},500))}function f(e){27==e.keyCode&&p(!0),e.stopPropagation()}function p(i,r){y.isOpen&&(r=r||{},angular.isDefined(v)&&(a.unregister(v),v=void 0),angular.element(o).off("resize",u),e.find(".dialog__scrollable").off("scroll",d),n.$broadcast("lx-dialog__close-start",y.id,i,r),m&&l.cancel(m),t.cancel(h),w.removeClass("dialog-filter--is-shown"),e.removeClass("dialog--is-shown"),l(function(){angular.element("body").removeClass("no-scroll-dialog-"+y.uuid),w.remove(),e.hide().removeClass("dialog--is-fixed").appendTo(_),y.isOpen=!1,x=void 0,n.$broadcast("lx-dialog__close-end",y.id,i,r)},600))}var x,h,g,v,m,b,y=this,w=angular.element("
    ",{class:"dialog-filter"}),_=e.parent();y.autoClose=!angular.isDefined(y.autoClose)||y.autoClose,y.escapeClose=!angular.isDefined(y.escapeClose)||y.escapeClose,y.isOpen=!1,y.uuid=c.generateUUID(),i.$on("lx-dialog__open",function(i,c,d){var x;c===y.id&&(x=d,y.isOpen||(r.register(),angular.element("body").addClass("no-scroll-dialog-"+y.uuid),w.css("z-index",r.getDepth()).appendTo("body"),y.autoClose&&w.on("click",function(){p(!0)}),y.escapeClose&&(v=a.register("keyup",f)),e.css("z-index",r.getDepth()+1).appendTo("body").show(),l(function(){n.$broadcast("lx-dialog__open-start",y.id,x),y.isOpen=!0,w.addClass("dialog-filter--is-shown"),e.addClass("dialog--is-shown")},100),l(function(){0===e.find(".dialog__scrollable").length&&e.find(".dialog__content").wrap(angular.element("
    ",{class:"dialog__scrollable"})),g=e.find(".dialog__scrollable")},200),l(function(){n.$broadcast("lx-dialog__open-end",y.id,x)},700),h=t(function(){s()},500),angular.element(o).on("resize",u)))}),i.$on("lx-dialog__close",function(e,t,n,i){t!==y.id&&void 0!==t||p(n,i)}),i.$on("$destroy",function(){p(!0)})}function t(e){return{restrict:"A",link:function(t,n){n.on("click",function(){e.close(n.parents(".dialog").attr("id"),!0)}),t.$on("$destroy",function(){n.off()})}}}angular.module("lumx.dialog").directive("lxDialog",function(){return{restrict:"E",template:"
    ",scope:{autoClose:"=?lxAutoClose",escapeClose:"=?lxEscapeClose",size:"@?lxSize"},link:function(e,t,n,i){n.$observe("id",function(e){i.id=e})},controller:e,controllerAs:"lxDialog",bindToController:!0,replace:!0,transclude:!0}}).directive("lxDialogHeader",function(){return{restrict:"E",template:'
    ',replace:!0,transclude:!0}}).directive("lxDialogContent",function(){return{restrict:"E",template:'
    ',replace:!0,transclude:!0}}).directive("lxDialogFooter",function(){return{restrict:"E",template:'',replace:!0,transclude:!0}}).directive("lxDialogClose",t),e.$inject=["$element","$interval","$rootScope","$scope","$timeout","$window","LxDepthService","LxEventSchedulerService","LxUtilsService"],t.$inject=["LxDialogService"]}()},function(e,t){!function(){"use strict";function e(e){this.open=function(t,n){e.$broadcast("lx-dialog__open",t,n)},this.close=function(t,n,i){e.$broadcast("lx-dialog__close",t,n,i)}}angular.module("lumx.dialog").service("LxDialogService",e),e.$inject=["$rootScope"]}()},function(e,t,n){"use strict";function i(e,t,n,i,l,r,a,c,s){function u(e){angular.isDefined(k.escapeClose)&&!k.escapeClose||(e.stopPropagation(),a.closeLastDropdown())}function d(e){e.keyCode!==o.d&&e.stopPropagation()}function f(){y.scrollTop()+y.innerHeight()>=y[0].scrollHeight&&t.$broadcast("lx-dropdown__scroll-end",k.uuid)}function p(){k.isOpen=!1,a.unregisterDropdownId(k.uuid),s.restoreBodyScroll(),i(function(){y.removeAttr("style").hide().off("scroll",f).insertAfter(_),angular.isDefined(k.closeOnClick)&&!k.closeOnClick&&y.off("click keydown keypress",d),c.unregister(b),b=void 0,angular.isDefined(w)&&w.focus()})}function x(){var e={},t={height:_.outerHeight(),left:_.offset().left,width:_.outerWidth()},n=(l.innerHeight,l.innerWidth);angular.isDefined(k.width)?k.width.indexOf("%")>-1?e.minWidth=t.width*(k.width.slice(0,-1)/100):e.width=k.width:e.width="auto",k.position&&"left"!==k.position?"right"===k.position&&(e.left="auto",e.right=n-t.width-t.left):(e.left=t.left,e.right="auto"),y.css({left:e.left,right:e.right}),angular.isDefined(e.minWidth)?y.css({minWidth:e.minWidth}):y.css({width:e.width})}function h(){var e=function(){var e={},t={height:_.outerHeight(),top:_.offset().top-angular.element(l).scrollTop()},n=l.innerHeight;return k.overToggle?(e.above=t.top,e.below=n-t.top):(e.above=t.top,e.below=n-(t.top+t.height)),e}(),t={},n=l.innerHeight;e.below>e.above?k.overToggle?(t.top=e.above,t.maxHeight=e.below):(t.top=e.above+_.outerHeight()+~~k.offset,t.maxHeight=e.below):k.overToggle?(t.bottom=n-e.above-_.outerHeight(),t.maxHeight=e.above+_.outerHeight()):(t.bottom=n-e.above+~~k.offset,t.maxHeight=e.above),t.maxHeight-=S,y.css(t)}function g(){a.closeLastDropdown(!0),a.registerDropdownId(k.uuid),r.increase(),y.appendTo("body").show().css({position:"fixed",zIndex:r.get()}),i(function(){x(),h(),k.isOpen=!0,s.disableBodyScroll(),y.on("scroll",f),angular.isDefined(k.closeOnClick)&&!k.closeOnClick&&y.on("click keydown keypress",d),b=c.register("click keydown keypress",u)})}function v(e){w=e}function m(e){_=e}var b,y,w,_,k=this,S=16;k.hasToggle=!1,k.isOpen=!1,k.uuid=s.generateUUID(),k.registerMenu=function(e){y=e,y.hide()},k.registerToggle=m,k.toggle=function(e){angular.isDefined(e.target)&&v(angular.element(e.target)),k.isOpen?a.close(k.uuid):g()},n.$on("lx-dropdown__open",function(e,t,n){var i;t!==k.uuid||k.isOpen||(angular.isElement(n)?i=n:angular.isString(n)?i=angular.element(n):angular.isObject(n)&&(i=angular.element(n.target)),m(i),angular.isObject(n)&&angular.isDefined(n.source)?v(angular.element(n.source)):v(i),g())}),n.$on("lx-dropdown__close",function(e,t,n){if(t===k.uuid&&k.isOpen){if(n&&angular.isDefined(k.closeOnClick)&&!k.closeOnClick)return;p()}}),n.$on("lx-dropdown__update",function(){a.isOpen(k.uuid)&&(x(),h())}),n.$on("$destroy",function(){k.isOpen&&p()})}function l(){return{bindToController:!0,controller:i,controllerAs:"lx",link:function(e,t,n,i,l){i.registerToggle(t.find("."+o.a+"-dropdown__toggle")),i.registerMenu(t.find("."+o.a+"-dropdown__menu")),l.isSlotFilled("toggle")&&(i.hasToggle=!0),n.$observe("id",function(e){i.uuid=e})},replace:!0,restrict:"E",scope:{closeOnClick:"=?lxCloseOnClick",escapeClose:"=?lxEscapeClose",offset:"@?lxOffset",overToggle:"=?lxOverToggle",position:"@?lxPosition",width:"@?lxWidth"},template:a.a,transclude:{menu:"lxDropdownMenu",toggle:"?lxDropdownToggle"}}}n.r(t),n.d(t,"DropdownDirective",function(){return l});n(5),n(22),n(52);var o=n(0),r=n(59),a=n.n(r);i.$inject=["$document","$rootScope","$scope","$timeout","$window","LxDepthService","LxDropdownService","LxEventSchedulerService","LxUtilsService"],angular.module("lumx.dropdown").directive("lxDropdown",l)},function(e,t,n){"use strict";function i(e){function t(t,n){e.$broadcast("lx-dropdown__close",t,n)}var n=[];this.close=t,this.closeLastDropdown=function(e){n.length>0&&t(n[n.length-1],e)},this.getLastDropdownId=function(){return n[n.length-1]},this.isOpen=function(e){return n.includes(e)},this.open=function(t,n){e.$broadcast("lx-dropdown__open",t,n)},this.registerDropdownId=function(e){n.push(e)},this.unregisterDropdownId=function(e){n.splice(n.indexOf(e),1)},this.updateActiveDropdownPosition=function(){e.$broadcast("lx-dropdown__update")}}n.r(t),n.d(t,"DropdownService",function(){return i});n(65),n(22),n(19);i.$inject=["$rootScope"],angular.module("lumx.dropdown").service("LxDropdownService",i)},function(e,t){!function(){"use strict";function e(){var e=this;e.setFabDirection=function(t){e.lxDirection=t},e.setFabTriggerMethod=function(t){e.lxTriggerOnClick=t},e.toggleState=function(){e.lxTriggerOnClick&&(e.isOpen=!e.isOpen)},e.isOpen=!1}angular.module("lumx.fab").directive("lxFab",function(){return{restrict:"E",templateUrl:"fab.html",scope:!0,link:function(e,t,n,i){n.$observe("lxDirection",function(e){i.setFabDirection(e)}),n.$observe("lxTriggerOnClick",function(t){i.setFabTriggerMethod(e.$eval(t))})},controller:e,controllerAs:"lxFab",bindToController:!0,transclude:!0,replace:!0}}).directive("lxFabTrigger",function(){return{restrict:"E",require:"^lxFab",templateUrl:"fab-trigger.html",transclude:!0,replace:!0}}).directive("lxFabActions",function(){return{restrict:"E",require:"^lxFab",templateUrl:"fab-actions.html",link:function(e,t,n,i){e.parentCtrl=i},transclude:!0,replace:!0}})}()},function(e,t,n){"use strict";n.r(t);n(5),n(14),n(29);!function(){function e(e,t,n){function i(){r.val()?(o.fileName=r.val().replace(/C:\\fakepath\\/i,""),e.addClass("input-file--is-focus"),e.addClass("input-file--is-active")):(o.fileName=void 0,e.removeClass("input-file--is-active")),r.val(void 0)}var l,o=this,r=e.find("input");o.updateModel=function(){angular.isDefined(o.callback)&&o.callback({newFile:r[0].files[0]}),l=n(i)},t.$on("$destroy",function(){n.cancel(l)})}angular.module("lumx.file-input").directive("lxFileInput",function(){return{restrict:"E",templateUrl:"file-input.html",scope:{label:"@lxLabel",accept:"@lxAccept",callback:"&?lxCallback"},link:function(e,t,n,i){var l=t.find("input");l.on("change",i.updateModel).on("blur",function(){t.removeClass("input-file--is-focus")}),e.$on("$destroy",function(){l.off()})},controller:e,controllerAs:"lxFileInput",bindToController:!0,replace:!0}}),e.$inject=["$element","$scope","$timeout"]}()},function(e,t,n){"use strict";function i(){return{link:function(e,t,n){n.$observe("lxPath",function(e){t.addClass(l.a+"-icon--path"),t.find("path").attr("d",e)}),n.$observe("lxId",function(e){t.addClass(l.a+"-icon--font mdi mdi-"+e)}),n.$observe("lxColor",function(e){e&&t.removeClass(function(e,t){return(t.match(/(?:\S|-)*icon--color-\S+/g)||[]).join(" ")}).addClass(l.a+"-icon--color-"+e)}),n.$observe("lxColorVariant",function(e){e&&t.removeClass(function(e,t){return(t.match(/(?:\S|-)*icon--color-variant-\S+/g)||[]).join(" ")}).addClass(l.a+"-icon--color-variant-"+e)}),n.$observe("lxSize",function(e){e&&t.removeClass(function(e,t){return(t.match(/(?:\S|-)*icon--size-\S+/g)||[]).join(" ")}).addClass(l.a+"-icon--size-"+e)})},replace:!0,restrict:"E",template:r.a}}n.r(t),n.d(t,"IconDirective",function(){return i});n(5),n(30),n(14),n(31);var l=n(0),o=n(60),r=n.n(o);angular.module("lumx.icon").directive("lxIcon",i)},function(e,t,n){"use strict";function i(e,t){function n(n){var i,r;l.isClickable&&(n.keyCode===o.b?(r=e.find("."+o.a+"-list-item").eq(l.activeItemIndex+1),0===r.length?(l.activeItemIndex=0,r=e.find("."+o.a+"-list-item").eq(l.activeItemIndex).focus()):l.activeItemIndex++,r.focus(),t.$apply(),n.preventDefault(),n.stopPropagation()):n.keyCode===o.f?(i=e.find("."+o.a+"-list-item").eq(l.activeItemIndex-1),0===i.length?(l.activeItemIndex=e.find("."+o.a+"-list-item").length-1,i=e.find("."+o.a+"-list-item").eq(l.activeItemIndex).focus()):l.activeItemIndex--,i.focus(),t.$apply(),n.preventDefault(),n.stopPropagation()):n.keyCode===o.e&&(n.preventDefault(),n.stopPropagation()))}function i(){l.activeItemIndex=-1}var l=this;l.activeItemIndex=-1,e.on("keydown keypress",n).on("focus",i),t.$on("$destroy",function(){e.off("keydown keypress",n).off("focus",i)})}function l(){return{bindToController:!0,controller:i,controllerAs:"lx",replace:!0,restrict:"E",scope:{isClickable:"=?lxIsClickable"},template:a.a,transclude:!0}}n.r(t),n.d(t,"ListDirective",function(){return l});n(5);var o=n(0),r=n(61),a=n.n(r);i.$inject=["$element","$scope"],angular.module("lumx.list").directive("lxList",l)},function(e,t,n){"use strict";function i(){return{replace:!0,restrict:"E",template:'
  • '}}n.r(t),n.d(t,"ListDividerDirective",function(){return i});var l=n(0);angular.module("lumx.list").directive("lxListDivider",i)},function(e,t,n){"use strict";function i(e,t){function n(){angular.isUndefined(i.parentController)||(i.parentController.activeItemIndex=e.index("."+o.a+"-list-item"))}var i=this;i.hasAfter=!1,i.hasBefore=!1,i.hasContent=!1,i.parentController=void 0,e.on("focus",n),t.$on("$destroy",function(){e.off("focus",n)})}function l(){return{bindToController:!0,controller:i,controllerAs:"lx",link:function(e,t,n,i,l){l.isSlotFilled("before")&&(i[0].hasBefore=!0),l.isSlotFilled("content")&&(i[0].hasContent=!0),l.isSlotFilled("after")&&(i[0].hasAfter=!0),angular.isDefined(i[1])&&i[1]&&(i[0].parentController=i[1])},replace:!0,require:["lxListItem","?^lxList"],restrict:"E",scope:{isSelected:"=?lxIsSelected",size:"@?lxSize"},template:a.a,transclude:{after:"?lxListItemAfter",before:"?lxListItemBefore",content:"?lxListItemContent"}}}n.r(t),n.d(t,"ListItemDirective",function(){return l});var o=n(0),r=n(62),a=n.n(r);i.$inject=["$element","$scope"],angular.module("lumx.list").directive("lxListItem",l)},function(e,t,n){"use strict";function i(){return{replace:!0,restrict:"E",template:'
  • ',transclude:!0}}n.r(t),n.d(t,"ListSubheaderDirective",function(){return i});var l=n(0);angular.module("lumx.list").directive("lxListSubheader",i)},function(e,t,n){"use strict";n.r(t);n(22),n(52),n(19),n(147);!function(){function e(e,t,n,i,l){function o(e){return parseFloat(window.getComputedStyle(e,null).height)}function r(e,t){t=angular.isFunction(t)?t:angular.noop;for(var i=h.indexOf(e),l=angular.isDefined(h[i])?24+h[i].height:24,o=0;o1&&(h[o].margin-=l,h[o].elem.css("marginBottom",h[o].margin+"px"));e.elem.removeClass("notification--is-shown"),n(function(){e.elem.remove(),i=h.indexOf(e),-1!=i&&h.splice(i,1),t(g),g=!1},400)}function a(n,i,o){var r=e.get("$compile"),a=angular.element("
    ",{class:"dialog__footer"}),c=angular.element("`;\n }\n\n function link(scope, el, attrs) {\n if (\n (!attrs.lxVariant && !attrs.lxType) ||\n attrs.lxVariant === 'button' ||\n attrs.lxType === 'raised' ||\n attrs.lxType === 'flat'\n ) {\n const leftIcon = el.find('i:first-child');\n const rightIcon = el.find('i:last-child');\n const label = el.find('span');\n\n if (leftIcon.length > 0) {\n el.addClass(`${CSS_PREFIX}-button--has-left-icon`);\n }\n\n if (rightIcon.length > 0) {\n el.addClass(`${CSS_PREFIX}-button--has-right-icon`);\n }\n\n if (label.length === 0) {\n el.wrapInner('');\n }\n }\n\n const isDefaultEmphasis = !attrs.lxEmphasis || attrs.lxEmphasis === 'high';\n\n const defaultProps = {\n color: isDefaultEmphasis ? 'primary' : 'dark',\n emphasis: 'high',\n size: 'm',\n theme: 'light',\n variant: 'button',\n };\n\n if (!attrs.lxColor) {\n el.addClass(`${CSS_PREFIX}-button--color-${defaultProps.color}`);\n }\n\n attrs.$observe('lxColor', (color) => {\n if (!color) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--color-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--color-${color}`);\n });\n\n if (!attrs.lxEmphasis) {\n el.addClass(`${CSS_PREFIX}-button--emphasis-${defaultProps.emphasis}`);\n }\n\n attrs.$observe('lxEmphasis', (emphasis) => {\n if (!emphasis) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--emphasis-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--emphasis-${emphasis}`);\n });\n\n if (!attrs.lxSize) {\n el.addClass(`${CSS_PREFIX}-button--size-${defaultProps.size}`);\n }\n\n attrs.$observe('lxSize', (size) => {\n if (!size) {\n return;\n }\n\n const sizeFallback = {\n xs: 's',\n s: 's',\n m: 'm',\n l: 'm',\n xl: 'm',\n };\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--size-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--size-${sizeFallback[size]}`);\n });\n\n if (!attrs.lxTheme && isDefaultEmphasis) {\n el.addClass(`${CSS_PREFIX}-button--theme-${defaultProps.theme}`);\n }\n\n attrs.$observe('lxTheme', (theme) => {\n if (!theme) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--theme-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--theme-${theme}`);\n });\n\n if (!attrs.lxVariant) {\n el.addClass(`${CSS_PREFIX}-button--variant-${defaultProps.variant}`);\n }\n\n attrs.$observe('lxVariant', (variant) => {\n if (!variant) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--variant-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--variant-${variant}`);\n });\n\n attrs.$observe('lxType', (type) => {\n if (!type) {\n return;\n }\n\n const emphasisFallback = {\n raised: 'high',\n flat: 'low',\n fab: 'high',\n icon: 'low',\n };\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--emphasis-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--emphasis-${emphasisFallback[type]}`);\n\n if (type === 'fab' || type === 'icon') {\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--variant-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--variant-icon`);\n }\n });\n\n scope.$watch(attrs.lxIsSelected, (isSelected) => {\n if (isSelected) {\n el.addClass(`${CSS_PREFIX}-button--is-selected`);\n } else {\n el.removeClass(`${CSS_PREFIX}-button--is-selected`);\n }\n });\n }\n\n return {\n link,\n replace: true,\n restrict: 'E',\n template: getTemplate,\n transclude: true,\n };\n}\n\n/////////////////////////////\n\nangular.module('lumx.button').directive('lxButton', ButtonDirective);\n\n/////////////////////////////\n\nexport { ButtonDirective };\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.data-table')\n .directive('lxDataTable', lxDataTable);\n\n function lxDataTable()\n {\n return {\n restrict: 'E',\n templateUrl: 'data-table.html',\n scope:\n {\n activable: '=?lxActivable',\n border: '=?lxBorder',\n bulk: '=?lxBulk',\n selectable: '=?lxSelectable',\n thumbnail: '=?lxThumbnail',\n tbody: '=lxTbody',\n thead: '=lxThead'\n },\n link: link,\n controller: LxDataTableController,\n controllerAs: 'lxDataTable',\n bindToController: true,\n transclude: true,\n replace: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n attrs.$observe('id', function(_newId)\n {\n ctrl.id = _newId;\n });\n }\n }\n\n LxDataTableController.$inject = ['$rootScope', '$sce', '$scope'];\n\n function LxDataTableController($rootScope, $sce, $scope)\n {\n var lxDataTable = this;\n\n lxDataTable.areAllRowsSelected = areAllRowsSelected;\n lxDataTable.border = angular.isUndefined(lxDataTable.border) ? true : lxDataTable.border;\n lxDataTable.bulk = angular.isUndefined(lxDataTable.bulk) ? true : lxDataTable.bulk;\n lxDataTable.sort = sort;\n lxDataTable.toggleActivation = toggleActivation;\n lxDataTable.toggleAllSelected = toggleAllSelected;\n lxDataTable.toggleSelection = toggleSelection;\n\n lxDataTable.$sce = $sce;\n lxDataTable.allRowsSelected = false;\n lxDataTable.selectedRows = [];\n\n $scope.$on('lx-data-table__select', function(event, id, row)\n {\n if (id === lxDataTable.id && angular.isDefined(row))\n {\n _select((angular.isArray(row) && row.length > 0) ? row[0] : row);\n }\n });\n\n $scope.$on('lx-data-table__select-all', function(event, id)\n {\n if (id === lxDataTable.id)\n {\n _selectAll();\n }\n });\n\n $scope.$on('lx-data-table__unselect', function(event, id, row)\n {\n if (id === lxDataTable.id && angular.isDefined(row))\n {\n _unselect((angular.isArray(row) && row.length > 0) ? row[0] : row);\n }\n });\n\n $scope.$on('lx-data-table__unselect-all', function(event, id)\n {\n if (id === lxDataTable.id)\n {\n _unselectAll();\n }\n });\n\n $scope.$on('lx-data-table__activate', function(event, id, row)\n {\n if (id === lxDataTable.id && angular.isDefined(row))\n {\n _activate((angular.isArray(row) && row.length > 0) ? row[0] : row);\n }\n });\n\n $scope.$on('lx-data-table__deactivate', function(event, id, row)\n {\n if (id === lxDataTable.id && angular.isDefined(row))\n {\n _deactivate((angular.isArray(row) && row.length > 0) ? row[0] : row);\n }\n });\n\n ////////////\n\n function _activate(row)\n {\n toggleActivation(row, true);\n }\n\n function _deactivate(row)\n {\n toggleActivation(row, false);\n }\n\n function _select(row)\n {\n toggleSelection(row, true);\n }\n\n function _selectAll()\n {\n lxDataTable.selectedRows.length = 0;\n\n for (var i = 0, len = lxDataTable.tbody.length; i < len; i++)\n {\n if (!lxDataTable.tbody[i].lxDataTableDisabled)\n {\n lxDataTable.tbody[i].lxDataTableSelected = true;\n lxDataTable.selectedRows.push(lxDataTable.tbody[i]);\n }\n }\n\n lxDataTable.allRowsSelected = true;\n\n $rootScope.$broadcast('lx-data-table__unselected', lxDataTable.id, lxDataTable.selectedRows);\n }\n\n function _unselect(row)\n {\n toggleSelection(row, false);\n }\n\n function _unselectAll()\n {\n for (var i = 0, len = lxDataTable.tbody.length; i < len; i++)\n {\n if (!lxDataTable.tbody[i].lxDataTableDisabled)\n {\n lxDataTable.tbody[i].lxDataTableSelected = false;\n }\n }\n\n lxDataTable.allRowsSelected = false;\n lxDataTable.selectedRows.length = 0;\n\n $rootScope.$broadcast('lx-data-table__selected', lxDataTable.id, lxDataTable.selectedRows);\n }\n\n ////////////\n\n function areAllRowsSelected()\n {\n var displayedRows = 0;\n\n for (var i = 0, len = lxDataTable.tbody.length; i < len; i++)\n {\n if (!lxDataTable.tbody[i].lxDataTableDisabled)\n {\n displayedRows++;\n }\n }\n\n if (displayedRows === lxDataTable.selectedRows.length)\n {\n lxDataTable.allRowsSelected = true;\n }\n else\n {\n lxDataTable.allRowsSelected = false;\n }\n }\n\n function sort(_column)\n {\n if (!_column.sortable)\n {\n return;\n }\n\n for (var i = 0, len = lxDataTable.thead.length; i < len; i++)\n {\n if (lxDataTable.thead[i].sortable && lxDataTable.thead[i].name !== _column.name)\n {\n lxDataTable.thead[i].sort = undefined;\n }\n }\n\n if (!_column.sort || _column.sort === 'desc')\n {\n _column.sort = 'asc';\n }\n else\n {\n _column.sort = 'desc';\n }\n\n $rootScope.$broadcast('lx-data-table__sorted', lxDataTable.id, _column);\n }\n\n function toggleActivation(_row, _newActivatedStatus)\n {\n if (_row.lxDataTableDisabled || !lxDataTable.activable)\n {\n return;\n }\n\n for (var i = 0, len = lxDataTable.tbody.length; i < len; i++)\n {\n if (lxDataTable.tbody.indexOf(_row) !== i)\n {\n lxDataTable.tbody[i].lxDataTableActivated = false;\n }\n }\n\n _row.lxDataTableActivated = !_row.lxDataTableActivated;\n\n if (_row.lxDataTableActivated)\n {\n $rootScope.$broadcast('lx-data-table__activated', lxDataTable.id, _row);\n }\n else\n {\n $rootScope.$broadcast('lx-data-table__deactivated', lxDataTable.id, _row);\n }\n }\n\n function toggleAllSelected()\n {\n if (!lxDataTable.bulk)\n {\n return;\n }\n\n if (lxDataTable.allRowsSelected)\n {\n _unselectAll();\n }\n else\n {\n _selectAll();\n }\n }\n\n function toggleSelection(_row, _newSelectedStatus, _event)\n {\n if (_row.lxDataTableDisabled || !lxDataTable.selectable)\n {\n return;\n }\n\n if (angular.isDefined(_event)) {\n _event.stopPropagation();\n }\n\n _row.lxDataTableSelected = angular.isDefined(_newSelectedStatus) ? _newSelectedStatus : !_row.lxDataTableSelected;\n\n if (_row.lxDataTableSelected)\n {\n // Make sure it's not already in.\n if (lxDataTable.selectedRows.length === 0 || (lxDataTable.selectedRows.length && lxDataTable.selectedRows.indexOf(_row) === -1))\n {\n lxDataTable.selectedRows.push(_row);\n lxDataTable.areAllRowsSelected();\n\n $rootScope.$broadcast('lx-data-table__selected', lxDataTable.id, lxDataTable.selectedRows, _row);\n }\n }\n else\n {\n if (lxDataTable.selectedRows.length && lxDataTable.selectedRows.indexOf(_row) > -1)\n {\n lxDataTable.selectedRows.splice(lxDataTable.selectedRows.indexOf(_row), 1);\n lxDataTable.allRowsSelected = false;\n\n $rootScope.$broadcast('lx-data-table__unselected', lxDataTable.id, lxDataTable.selectedRows, _row);\n }\n }\n }\n }\n})();\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.data-table')\n .service('LxDataTableService', LxDataTableService);\n\n LxDataTableService.$inject = ['$rootScope'];\n\n function LxDataTableService($rootScope)\n {\n var service = this;\n\n service.select = select;\n service.selectAll = selectAll;\n service.unselect = unselect;\n service.unselectAll = unselectAll;\n service.activate = activate;\n service.deactivate = deactivate;\n\n ////////////\n\n function select(_dataTableId, row)\n {\n $rootScope.$broadcast('lx-data-table__select', _dataTableId, row);\n }\n\n function selectAll(_dataTableId)\n {\n $rootScope.$broadcast('lx-data-table__select-all', _dataTableId);\n }\n\n function unselect(_dataTableId, row)\n {\n $rootScope.$broadcast('lx-data-table__unselect', _dataTableId, row);\n }\n\n function unselectAll(_dataTableId)\n {\n $rootScope.$broadcast('lx-data-table__unselect-all', _dataTableId);\n }\n\n function activate(_dataTableId, row)\n {\n $rootScope.$broadcast('lx-data-table__activate', _dataTableId, row);\n }\n\n function deactivate(_dataTableId, row)\n {\n $rootScope.$broadcast('lx-data-table__deactivate', _dataTableId, row);\n }\n }\n})();\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.date-picker')\n .directive('lxDatePicker', lxDatePicker);\n\n lxDatePicker.$inject = ['LxDatePickerService', 'LxUtilsService'];\n\n function lxDatePicker(LxDatePickerService, LxUtilsService)\n {\n return {\n restrict: 'AE',\n templateUrl: 'date-picker.html',\n scope:\n {\n autoClose: '=?lxAutoClose',\n callback: '&?lxCallback',\n color: '@?lxColor',\n escapeClose: '=?lxEscapeClose',\n inputFormat: '@?lxInputFormat',\n maxDate: '=?lxMaxDate',\n ngModel: '=',\n minDate: '=?lxMinDate',\n locale: '@lxLocale'\n },\n link: link,\n controller: LxDatePickerController,\n controllerAs: 'lxDatePicker',\n bindToController: true,\n replace: true,\n transclude: true\n };\n\n function link(scope, element, attrs)\n {\n if (angular.isDefined(attrs.id))\n {\n attrs.$observe('id', function(_newId)\n {\n scope.lxDatePicker.pickerId = _newId;\n LxDatePickerService.registerScope(scope.lxDatePicker.pickerId, scope);\n });\n }\n else\n {\n scope.lxDatePicker.pickerId = LxUtilsService.generateUUID();\n LxDatePickerService.registerScope(scope.lxDatePicker.pickerId, scope);\n }\n }\n }\n\n LxDatePickerController.$inject = ['$element', '$scope', '$timeout', '$transclude', 'LxDatePickerService', 'LxUtilsService'];\n\n function LxDatePickerController($element, $scope, $timeout, $transclude, LxDatePickerService, LxUtilsService)\n {\n var lxDatePicker = this;\n var input;\n var modelController;\n var timer1;\n var timer2;\n var watcher1;\n var watcher2;\n\n lxDatePicker.closeDatePicker = closeDatePicker;\n lxDatePicker.displayYearSelection = displayYearSelection;\n lxDatePicker.hideYearSelection = hideYearSelection;\n lxDatePicker.getDateFormatted = getDateFormatted;\n lxDatePicker.nextMonth = nextMonth;\n lxDatePicker.openDatePicker = openDatePicker;\n lxDatePicker.previousMonth = previousMonth;\n lxDatePicker.select = select;\n lxDatePicker.selectYear = selectYear;\n\n lxDatePicker.autoClose = angular.isDefined(lxDatePicker.autoClose) ? lxDatePicker.autoClose : true;\n lxDatePicker.color = angular.isDefined(lxDatePicker.color) ? lxDatePicker.color : 'primary';\n lxDatePicker.element = $element.find('.lx-date-picker');\n lxDatePicker.escapeClose = angular.isDefined(lxDatePicker.escapeClose) ? lxDatePicker.escapeClose : true;\n lxDatePicker.isOpen = false;\n lxDatePicker.moment = moment;\n lxDatePicker.yearSelection = false;\n lxDatePicker.uuid = LxUtilsService.generateUUID();\n\n $transclude(function(clone)\n {\n if (clone.length)\n {\n lxDatePicker.hasInput = true;\n\n timer1 = $timeout(function()\n {\n input = $element.find('.lx-date-input input');\n modelController = input.data('$ngModelController');\n\n watcher2 = $scope.$watch(function()\n {\n return modelController.$viewValue;\n }, function(newValue, oldValue)\n {\n if (angular.isUndefined(newValue))\n {\n lxDatePicker.ngModel = undefined;\n }\n });\n });\n }\n });\n\n watcher1 = $scope.$watch(function()\n {\n return lxDatePicker.ngModel;\n }, init);\n\n $scope.$on('$destroy', function()\n {\n $timeout.cancel(timer1);\n $timeout.cancel(timer2);\n\n if (angular.isFunction(watcher1))\n {\n watcher1();\n }\n\n if (angular.isFunction(watcher2))\n {\n watcher2();\n }\n });\n\n ////////////\n\n function closeDatePicker()\n {\n LxDatePickerService.close(lxDatePicker.pickerId);\n }\n\n function displayYearSelection()\n {\n lxDatePicker.yearSelection = true;\n\n timer2 = $timeout(function()\n {\n var yearSelector = angular.element('.lx-date-picker__year-selector');\n var activeYear = yearSelector.find('.lx-date-picker__year--is-active');\n\n yearSelector.scrollTop(yearSelector.scrollTop() + activeYear.position().top - yearSelector.height() / 2 + activeYear.height() / 2);\n });\n }\n\n function hideYearSelection()\n {\n lxDatePicker.yearSelection = false;\n }\n\n function generateCalendar()\n {\n lxDatePicker.days = [];\n\n var previousDay = angular.copy(lxDatePicker.ngModelMoment).date(0);\n var firstDayOfMonth = angular.copy(lxDatePicker.ngModelMoment).date(1);\n var lastDayOfMonth = firstDayOfMonth.clone().endOf('month');\n var maxDays = lastDayOfMonth.date();\n\n lxDatePicker.emptyFirstDays = [];\n\n for (var i = firstDayOfMonth.day() === 0 ? 6 : firstDayOfMonth.day() - 1; i > 0; i--)\n {\n lxDatePicker.emptyFirstDays.push(\n {});\n }\n\n for (var j = 0; j < maxDays; j++)\n {\n var date = angular.copy(previousDay.add(1, 'days'));\n\n date.selected = angular.isDefined(lxDatePicker.ngModel) && date.isSame(lxDatePicker.ngModel, 'day');\n date.today = date.isSame(moment(), 'day');\n\n if (angular.isDefined(lxDatePicker.minDate))\n {\n var minDate = (angular.isString(lxDatePicker.minDate)) ? new Date(lxDatePicker.minDate) : lxDatePicker.minDate;\n if (date.toDate() < minDate)\n {\n date.disabled = true;\n }\n }\n\n if (angular.isDefined(lxDatePicker.maxDate))\n {\n var maxDate = (angular.isString(lxDatePicker.maxDate)) ? new Date(lxDatePicker.maxDate) : lxDatePicker.maxDate;\n if (date.toDate() > maxDate)\n {\n date.disabled = true;\n }\n }\n\n lxDatePicker.days.push(date);\n }\n\n lxDatePicker.emptyLastDays = [];\n\n for (var k = 7 - (lastDayOfMonth.day() === 0 ? 7 : lastDayOfMonth.day()); k > 0; k--)\n {\n lxDatePicker.emptyLastDays.push(\n {});\n }\n }\n\n function getDateFormatted()\n {\n var dateFormatted = lxDatePicker.ngModelMoment.format('llll').replace(lxDatePicker.ngModelMoment.format('LT'), '').trim().replace(lxDatePicker.ngModelMoment.format('YYYY'), '').trim();\n var dateFormattedLastChar = dateFormatted.slice(-1);\n\n if (dateFormattedLastChar === ',')\n {\n dateFormatted = dateFormatted.slice(0, -1);\n }\n\n return dateFormatted;\n }\n\n function init()\n {\n moment.locale(lxDatePicker.locale);\n\n lxDatePicker.ngModelMoment = angular.isDefined(lxDatePicker.ngModel) ? moment(angular.copy(lxDatePicker.ngModel)) : moment();\n lxDatePicker.days = [];\n lxDatePicker.daysOfWeek = [moment.weekdaysMin(1), moment.weekdaysMin(2), moment.weekdaysMin(3), moment.weekdaysMin(4), moment.weekdaysMin(5), moment.weekdaysMin(6), moment.weekdaysMin(0)];\n lxDatePicker.years = [];\n\n for (var y = moment().year() - 100; y <= moment().year() + 100; y++)\n {\n lxDatePicker.years.push(y);\n }\n\n generateCalendar();\n }\n\n function nextMonth()\n {\n lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.add(1, 'month');\n\n generateCalendar();\n }\n\n function openDatePicker()\n {\n LxDatePickerService.open(lxDatePicker.pickerId);\n\n generateCalendar();\n }\n\n function previousMonth()\n {\n lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.subtract(1, 'month');\n\n generateCalendar();\n }\n\n function select(_day)\n {\n if (!_day.disabled)\n {\n lxDatePicker.ngModel = _day.toDate();\n lxDatePicker.ngModelMoment = angular.copy(_day);\n\n if (angular.isDefined(lxDatePicker.callback))\n {\n lxDatePicker.callback(\n {\n newDate: lxDatePicker.ngModel\n });\n }\n\n if (angular.isDefined(modelController) && lxDatePicker.inputFormat)\n {\n modelController.$setViewValue(angular.copy(_day).format(lxDatePicker.inputFormat));\n modelController.$render();\n }\n\n generateCalendar();\n }\n }\n\n function selectYear(_year)\n {\n lxDatePicker.yearSelection = false;\n\n lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.year(_year);\n\n generateCalendar();\n }\n }\n})();\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/forced-string-trim-method');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.date-picker')\n .service('LxDatePickerService', LxDatePickerService);\n\n LxDatePickerService.$inject = ['$rootScope', '$timeout', 'LxDepthService', 'LxEventSchedulerService'];\n\n function LxDatePickerService($rootScope, $timeout, LxDepthService, LxEventSchedulerService)\n {\n var service = this;\n var activeDatePickerId;\n var datePickerFilter;\n var idEventScheduler;\n var scopeMap = {};\n\n service.close = closeDatePicker;\n service.open = openDatePicker;\n service.registerScope = registerScope;\n\n ////////////\n\n function closeDatePicker(_datePickerId)\n {\n if (angular.isDefined(idEventScheduler))\n {\n LxEventSchedulerService.unregister(idEventScheduler);\n idEventScheduler = undefined;\n }\n\n activeDatePickerId = undefined;\n\n $rootScope.$broadcast('lx-date-picker__close-start', _datePickerId);\n\n datePickerFilter.removeClass('lx-date-picker-filter--is-shown');\n scopeMap[_datePickerId].element.removeClass('lx-date-picker--is-shown');\n\n $timeout(function()\n {\n angular.element('body').removeClass('no-scroll-date-picker-' + scopeMap[_datePickerId].uuid);\n\n datePickerFilter.remove();\n\n scopeMap[_datePickerId].element\n .hide()\n .appendTo(scopeMap[_datePickerId].elementParent);\n\n scopeMap[_datePickerId].isOpen = false;\n $rootScope.$broadcast('lx-date-picker__close-end', _datePickerId);\n }, 600);\n }\n\n function onKeyUp(_event)\n {\n if (_event.keyCode == 27 && angular.isDefined(activeDatePickerId))\n {\n closeDatePicker(activeDatePickerId);\n }\n\n _event.stopPropagation();\n }\n\n function openDatePicker(_datePickerId)\n {\n LxDepthService.register();\n\n activeDatePickerId = _datePickerId;\n\n angular.element('body').addClass('no-scroll-date-picker-' + scopeMap[_datePickerId].uuid);\n\n datePickerFilter = angular.element('
    ',\n {\n class: 'lx-date-picker-filter'\n });\n\n datePickerFilter\n .css('z-index', LxDepthService.getDepth())\n .appendTo('body');\n\n if (scopeMap[activeDatePickerId].autoClose)\n {\n datePickerFilter.on('click', function()\n {\n closeDatePicker(activeDatePickerId);\n });\n }\n\n if (scopeMap[activeDatePickerId].escapeClose)\n {\n idEventScheduler = LxEventSchedulerService.register('keyup', onKeyUp);\n }\n\n scopeMap[activeDatePickerId].element\n .css('z-index', LxDepthService.getDepth() + 1)\n .appendTo('body')\n .show();\n\n $timeout(function()\n {\n $rootScope.$broadcast('lx-date-picker__open-start', activeDatePickerId);\n\n scopeMap[activeDatePickerId].isOpen = true;\n\n datePickerFilter.addClass('lx-date-picker-filter--is-shown');\n scopeMap[activeDatePickerId].element.addClass('lx-date-picker--is-shown');\n }, 100);\n\n $timeout(function()\n {\n $rootScope.$broadcast('lx-date-picker__open-end', activeDatePickerId);\n }, 700);\n }\n\n function registerScope(_datePickerId, _datePickerScope)\n {\n scopeMap[_datePickerId] = _datePickerScope.lxDatePicker;\n }\n }\n})();","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.dialog')\n .directive('lxDialog', lxDialog)\n .directive('lxDialogHeader', lxDialogHeader)\n .directive('lxDialogContent', lxDialogContent)\n .directive('lxDialogFooter', lxDialogFooter)\n .directive('lxDialogClose', lxDialogClose);\n\n function lxDialog()\n {\n return {\n restrict: 'E',\n template: '
    ',\n scope:\n {\n autoClose: '=?lxAutoClose',\n escapeClose: '=?lxEscapeClose',\n size: '@?lxSize'\n },\n link: link,\n controller: LxDialogController,\n controllerAs: 'lxDialog',\n bindToController: true,\n replace: true,\n transclude: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n attrs.$observe('id', function(_newId)\n {\n ctrl.id = _newId;\n });\n }\n }\n\n LxDialogController.$inject = ['$element', '$interval', '$rootScope', '$scope', '$timeout', '$window', 'LxDepthService', 'LxEventSchedulerService', 'LxUtilsService'];\n\n function LxDialogController($element, $interval, $rootScope, $scope, $timeout, $window, LxDepthService, LxEventSchedulerService, LxUtilsService)\n {\n var lxDialog = this;\n var dialogFilter = angular.element('
    ',\n {\n class: 'dialog-filter'\n });\n var dialogHeight;\n var dialogInterval;\n var dialogScrollable;\n var elementParent = $element.parent();\n var idEventScheduler;\n var resizeDebounce;\n var windowHeight;\n\n lxDialog.autoClose = angular.isDefined(lxDialog.autoClose) ? lxDialog.autoClose : true;\n lxDialog.escapeClose = angular.isDefined(lxDialog.escapeClose) ? lxDialog.escapeClose : true;\n lxDialog.isOpen = false;\n lxDialog.uuid = LxUtilsService.generateUUID();\n\n $scope.$on('lx-dialog__open', function(event, id, params)\n {\n if (id === lxDialog.id)\n {\n open(params);\n }\n });\n\n $scope.$on('lx-dialog__close', function(event, id, canceled, params)\n {\n if (id === lxDialog.id || id === undefined)\n {\n close(canceled, params);\n }\n });\n\n $scope.$on('$destroy', function()\n {\n close(true);\n });\n\n ////////////\n\n function checkDialogHeight()\n {\n var dialog = $element;\n var dialogHeader = dialog.find('.dialog__header');\n var dialogContent = dialog.find('.dialog__content');\n var dialogFooter = dialog.find('.dialog__footer');\n\n if (!dialogFooter.length)\n {\n dialogFooter = dialog.find('.dialog__actions');\n }\n\n if (angular.isUndefined(dialogHeader))\n {\n return;\n }\n\n var heightToCheck = 60 + dialogHeader.outerHeight() + dialogContent.outerHeight() + dialogFooter.outerHeight();\n\n if (dialogHeight === heightToCheck && windowHeight === $window.innerHeight)\n {\n return;\n }\n\n dialogHeight = heightToCheck;\n windowHeight = $window.innerHeight;\n\n if (heightToCheck >= $window.innerHeight)\n {\n dialog.addClass('dialog--is-fixed');\n\n dialogScrollable\n .css(\n {\n top: dialogHeader.outerHeight(),\n bottom: dialogFooter.outerHeight()\n })\n .off('scroll', checkScrollEnd)\n .on('scroll', checkScrollEnd);\n }\n else\n {\n dialog.removeClass('dialog--is-fixed');\n\n dialogScrollable\n .removeAttr('style')\n .off('scroll', checkScrollEnd);\n }\n }\n\n function checkDialogHeightOnResize()\n {\n if (resizeDebounce)\n {\n $timeout.cancel(resizeDebounce);\n }\n\n resizeDebounce = $timeout(function()\n {\n checkDialogHeight();\n }, 200);\n }\n\n function checkScrollEnd()\n {\n if (dialogScrollable.scrollTop() + dialogScrollable.innerHeight() >= dialogScrollable[0].scrollHeight)\n {\n $rootScope.$broadcast('lx-dialog__scroll-end', lxDialog.id);\n\n dialogScrollable.off('scroll', checkScrollEnd);\n\n $timeout(function()\n {\n dialogScrollable.on('scroll', checkScrollEnd);\n }, 500);\n }\n }\n\n function onKeyUp(_event)\n {\n if (_event.keyCode == 27)\n {\n close(true);\n }\n\n _event.stopPropagation();\n }\n\n function open(_params)\n {\n if (lxDialog.isOpen)\n {\n return;\n }\n\n LxDepthService.register();\n\n angular.element('body').addClass('no-scroll-dialog-' + lxDialog.uuid);\n\n dialogFilter\n .css('z-index', LxDepthService.getDepth())\n .appendTo('body');\n\n if (lxDialog.autoClose)\n {\n dialogFilter.on('click', function()\n {\n close(true);\n });\n }\n\n if (lxDialog.escapeClose)\n {\n idEventScheduler = LxEventSchedulerService.register('keyup', onKeyUp);\n }\n\n $element\n .css('z-index', LxDepthService.getDepth() + 1)\n .appendTo('body')\n .show();\n\n $timeout(function()\n {\n $rootScope.$broadcast('lx-dialog__open-start', lxDialog.id, _params);\n\n lxDialog.isOpen = true;\n\n dialogFilter.addClass('dialog-filter--is-shown');\n $element.addClass('dialog--is-shown');\n }, 100);\n\n $timeout(function()\n {\n if ($element.find('.dialog__scrollable').length === 0)\n {\n $element.find('.dialog__content').wrap(angular.element('
    ',\n {\n class: 'dialog__scrollable'\n }));\n }\n\n dialogScrollable = $element.find('.dialog__scrollable');\n }, 200);\n\n $timeout(function()\n {\n $rootScope.$broadcast('lx-dialog__open-end', lxDialog.id, _params);\n }, 700);\n\n dialogInterval = $interval(function()\n {\n checkDialogHeight();\n }, 500);\n\n angular.element($window).on('resize', checkDialogHeightOnResize);\n }\n\n function close(_canceled, _params)\n {\n if (!lxDialog.isOpen)\n {\n return;\n }\n\n _params = _params || {};\n\n if (angular.isDefined(idEventScheduler))\n {\n LxEventSchedulerService.unregister(idEventScheduler);\n idEventScheduler = undefined;\n }\n\n angular.element($window).off('resize', checkDialogHeightOnResize);\n $element.find('.dialog__scrollable').off('scroll', checkScrollEnd);\n\n $rootScope.$broadcast('lx-dialog__close-start', lxDialog.id, _canceled, _params);\n\n if (resizeDebounce)\n {\n $timeout.cancel(resizeDebounce);\n }\n\n $interval.cancel(dialogInterval);\n\n dialogFilter.removeClass('dialog-filter--is-shown');\n $element.removeClass('dialog--is-shown');\n\n $timeout(function()\n {\n angular.element('body').removeClass('no-scroll-dialog-' + lxDialog.uuid);\n\n dialogFilter.remove();\n\n $element\n .hide()\n .removeClass('dialog--is-fixed')\n .appendTo(elementParent);\n\n lxDialog.isOpen = false;\n dialogHeight = undefined;\n $rootScope.$broadcast('lx-dialog__close-end', lxDialog.id, _canceled, _params);\n }, 600);\n }\n }\n\n function lxDialogHeader()\n {\n return {\n restrict: 'E',\n template: '
    ',\n replace: true,\n transclude: true\n };\n }\n\n function lxDialogContent()\n {\n return {\n restrict: 'E',\n template: '
    ',\n replace: true,\n transclude: true\n };\n }\n\n function lxDialogFooter()\n {\n return {\n restrict: 'E',\n template: '
    ',\n replace: true,\n transclude: true\n };\n }\n\n lxDialogClose.$inject = ['LxDialogService'];\n\n function lxDialogClose(LxDialogService)\n {\n return {\n restrict: 'A',\n link: function(scope, element)\n {\n element.on('click', function()\n {\n LxDialogService.close(element.parents('.dialog').attr('id'), true);\n });\n\n scope.$on('$destroy', function()\n {\n element.off();\n });\n }\n };\n }\n})();\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.dialog')\n .service('LxDialogService', LxDialogService);\n\n LxDialogService.$inject = ['$rootScope'];\n\n function LxDialogService($rootScope)\n {\n var service = this;\n\n service.open = open;\n service.close = close;\n\n ////////////\n\n function open(_dialogId, _params)\n {\n $rootScope.$broadcast('lx-dialog__open', _dialogId, _params);\n }\n\n function close(_dialogId, _canceled, _params)\n {\n $rootScope.$broadcast('lx-dialog__close', _dialogId, _canceled, _params);\n }\n }\n})();\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.dropdown')\n .directive('lxDropdown', lxDropdown)\n .directive('lxDropdownToggle', lxDropdownToggle)\n .directive('lxDropdownMenu', lxDropdownMenu)\n .directive('lxDropdownFilter', lxDropdownFilter);\n\n function lxDropdown()\n {\n return {\n restrict: 'E',\n templateUrl: 'dropdown.html',\n scope:\n {\n closeOnClick: '=?lxCloseOnClick',\n effect: '@?lxEffect',\n escapeClose: '=?lxEscapeClose',\n hover: '=?lxHover',\n hoverDelay: '=?lxHoverDelay',\n minOffset: '=?lxMinOffset',\n offset: '@?lxOffset',\n overToggle: '=?lxOverToggle',\n position: '@?lxPosition',\n width: '@?lxWidth'\n },\n link: link,\n controller: LxDropdownController,\n controllerAs: 'lxDropdown',\n bindToController: true,\n transclude: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n var backwardOneWay = ['position', 'width'];\n var backwardTwoWay = ['escapeClose', 'overToggle'];\n\n angular.forEach(backwardOneWay, function(attribute)\n {\n if (angular.isDefined(attrs[attribute]))\n {\n attrs.$observe(attribute, function(newValue)\n {\n scope.lxDropdown[attribute] = newValue;\n });\n }\n });\n\n angular.forEach(backwardTwoWay, function(attribute)\n {\n if (angular.isDefined(attrs[attribute]))\n {\n scope.$watch(function()\n {\n return scope.$parent.$eval(attrs[attribute]);\n }, function(newValue)\n {\n scope.lxDropdown[attribute] = newValue;\n });\n }\n });\n\n attrs.$observe('id', function(_newId)\n {\n ctrl.uuid = _newId;\n });\n\n scope.$on('$destroy', function()\n {\n if (ctrl.isOpen)\n {\n ctrl.closeDropdownMenu();\n }\n });\n }\n }\n\n LxDropdownController.$inject = ['$document', '$element', '$interval', '$rootScope', '$scope', '$timeout', '$window',\n 'LxDepthService', 'LxDropdownService', 'LxEventSchedulerService', 'LxUtilsService'\n ];\n\n function LxDropdownController($document, $element, $interval, $rootScope, $scope, $timeout, $window, LxDepthService,\n LxDropdownService, LxEventSchedulerService, LxUtilsService)\n {\n var lxDropdown = this;\n var dropdownContentWatcher;\n var dropdownMenu;\n var dropdownToggle;\n var idEventScheduler;\n var openTimeout;\n var positionTarget;\n var scrollMask = angular.element('
    ',\n {\n class: 'scroll-mask'\n });\n var enableBodyScroll;\n\n lxDropdown.closeDropdownMenu = closeDropdownMenu;\n lxDropdown.openDropdownMenu = openDropdownMenu;\n lxDropdown.registerDropdownMenu = registerDropdownMenu;\n lxDropdown.registerDropdownToggle = registerDropdownToggle;\n lxDropdown.toggle = toggle;\n lxDropdown.uuid = LxUtilsService.generateUUID();\n\n lxDropdown.closeOnClick = angular.isDefined(lxDropdown.closeOnClick) ? lxDropdown.closeOnClick : true;\n lxDropdown.effect = angular.isDefined(lxDropdown.effect) ? lxDropdown.effect : 'expand';\n lxDropdown.escapeClose = angular.isDefined(lxDropdown.escapeClose) ? lxDropdown.escapeClose : true;\n lxDropdown.hasToggle = false;\n lxDropdown.isOpen = false;\n lxDropdown.overToggle = angular.isDefined(lxDropdown.overToggle) ? lxDropdown.overToggle : false;\n lxDropdown.position = angular.isDefined(lxDropdown.position) ? lxDropdown.position : 'left';\n lxDropdown.minOffset = (angular.isUndefined(lxDropdown.minOffset) || lxDropdown.minOffset < 0) ? 8 : lxDropdown.minOffset;\n\n $scope.$on('lx-dropdown__open', function(_event, _params)\n {\n if (_params.uuid === lxDropdown.uuid && !lxDropdown.isOpen)\n {\n LxDropdownService.closeActiveDropdown();\n LxDropdownService.registerActiveDropdownUuid(lxDropdown.uuid);\n positionTarget = _params.target;\n\n registerDropdownToggle(positionTarget);\n openDropdownMenu();\n }\n });\n\n $scope.$on('lx-dropdown__close', function(_event, _params)\n {\n if (_params.uuid === lxDropdown.uuid && lxDropdown.isOpen && (!_params.documentClick || (_params.documentClick && lxDropdown.closeOnClick)))\n {\n closeDropdownMenu();\n }\n });\n\n $scope.$on('$destroy', function()\n {\n $timeout.cancel(openTimeout);\n });\n\n ////////////\n\n function closeDropdownMenu()\n {\n $document.off('click touchend', onDocumentClick);\n\n $rootScope.$broadcast('lx-dropdown__close-start', $element.attr('id'));\n\n angular.element(window).off('resize', initDropdownPosition);\n\n if (angular.isFunction(dropdownContentWatcher)) {\n dropdownContentWatcher();\n dropdownContentWatcher = undefined;\n }\n\n LxDropdownService.resetActiveDropdownUuid();\n\n var velocityProperties;\n var velocityEasing;\n\n if (!lxDropdown.hover && angular.isDefined(scrollMask)) {\n scrollMask.remove();\n }\n if (angular.isFunction(enableBodyScroll)) {\n enableBodyScroll();\n }\n enableBodyScroll = undefined;\n\n var dropdownToggleElement;\n if (lxDropdown.hasToggle)\n {\n dropdownToggleElement = (angular.isString(dropdownToggle)) ? angular.element(dropdownToggle) : dropdownToggle;\n\n dropdownToggleElement\n .off('wheel')\n .css('z-index', '');\n }\n\n dropdownMenu\n .css(\n {\n overflow: 'hidden'\n });\n\n if (lxDropdown.effect === 'expand')\n {\n velocityProperties = {\n width: 0,\n height: 0\n };\n\n velocityEasing = 'easeOutQuint';\n }\n else if (lxDropdown.effect === 'fade')\n {\n velocityProperties = {\n opacity: 0\n };\n\n velocityEasing = 'linear';\n }\n\n if (lxDropdown.effect === 'expand' || lxDropdown.effect === 'fade')\n {\n dropdownMenu.velocity(velocityProperties,\n {\n duration: 200,\n easing: velocityEasing,\n complete: function()\n {\n dropdownMenu\n .removeAttr('style')\n .removeClass('dropdown-menu--is-open')\n .appendTo($element.find('.dropdown'));\n\n $scope.$apply(function()\n {\n lxDropdown.isOpen = false;\n\n if (lxDropdown.escapeClose)\n {\n LxEventSchedulerService.unregister(idEventScheduler);\n idEventScheduler = undefined;\n }\n });\n }\n });\n }\n else if (lxDropdown.effect === 'none')\n {\n dropdownMenu\n .removeAttr('style')\n .removeClass('dropdown-menu--is-open')\n .appendTo($element.find('.dropdown'));\n\n $scope.$apply(function()\n {\n lxDropdown.isOpen = false;\n\n if (lxDropdown.escapeClose)\n {\n LxEventSchedulerService.unregister(idEventScheduler);\n idEventScheduler = undefined;\n }\n });\n }\n\n dropdownMenu.off('scroll', checkScrollEnd);\n\n $rootScope.$broadcast('lx-dropdown__close-end', $element.attr('id'));\n }\n\n function getAvailableHeight()\n {\n var availableHeightOnTop;\n var availableHeightOnBottom;\n var direction;\n var dropdownToggleElement = (angular.isString(dropdownToggle)) ? angular.element(dropdownToggle) : dropdownToggle;\n var dropdownToggleHeight = dropdownToggleElement.outerHeight();\n var dropdownToggleTop = dropdownToggleElement.offset().top - angular.element($window).scrollTop();\n var windowHeight = $window.innerHeight;\n\n if (lxDropdown.overToggle)\n {\n availableHeightOnTop = dropdownToggleTop + dropdownToggleHeight;\n availableHeightOnBottom = windowHeight - dropdownToggleTop;\n }\n else\n {\n availableHeightOnTop = dropdownToggleTop;\n availableHeightOnBottom = windowHeight - (dropdownToggleTop + dropdownToggleHeight);\n }\n\n if (availableHeightOnTop > availableHeightOnBottom)\n {\n direction = 'top';\n }\n else\n {\n direction = 'bottom';\n }\n\n return {\n top: availableHeightOnTop,\n bottom: availableHeightOnBottom,\n direction: direction\n };\n }\n\n function initDropdownPosition()\n {\n var availableHeight = getAvailableHeight();\n var dropdownMenuWidth;\n var dropdownMenuLeft;\n var dropdownMenuRight;\n var dropdownToggleElement = (angular.isString(dropdownToggle)) ? angular.element(dropdownToggle) : dropdownToggle;\n var dropdownToggleWidth = dropdownToggleElement.outerWidth();\n var dropdownToggleHeight = dropdownToggleElement.outerHeight();\n var dropdownToggleTop = dropdownToggleElement.offset().top - angular.element($window).scrollTop();\n var windowWidth = $window.innerWidth;\n var windowHeight = $window.innerHeight;\n var cssProperties = {};\n\n if (angular.isDefined(lxDropdown.width))\n {\n if (lxDropdown.width.indexOf('%') > -1)\n {\n dropdownMenuWidth = dropdownToggleWidth * (lxDropdown.width.slice(0, -1) / 100);\n angular.extend(cssProperties,\n {\n minWidth: dropdownMenuWidth,\n });\n }\n else\n {\n dropdownMenuWidth = lxDropdown.width;\n angular.extend(cssProperties,\n {\n width: dropdownMenuWidth,\n });\n }\n }\n else\n {\n dropdownMenuWidth = 'auto';\n angular.extend(cssProperties,\n {\n width: dropdownMenuWidth,\n });\n }\n\n\n if (lxDropdown.position === 'left')\n {\n dropdownMenuLeft = dropdownToggleElement.offset().left;\n dropdownMenuLeft = (dropdownMenuLeft <= lxDropdown.minOffset) ? lxDropdown.minOffset : dropdownMenuLeft;\n dropdownMenuRight = 'auto';\n }\n else if (lxDropdown.position === 'right')\n {\n dropdownMenuLeft = 'auto';\n dropdownMenuRight = windowWidth - dropdownToggleElement.offset().left - dropdownToggleWidth;\n dropdownMenuRight = (dropdownMenuRight > (windowWidth - lxDropdown.minOffset)) ? (windowWidth - lxDropdown.minOffset) : dropdownMenuRight;\n }\n else if (lxDropdown.position === 'center')\n {\n dropdownMenuLeft = (dropdownToggleElement.offset().left + (dropdownToggleWidth / 2)) - (dropdownMenuWidth / 2);\n dropdownMenuLeft = (dropdownMenuLeft <= lxDropdown.minOffset) ? lxDropdown.minOffset : dropdownMenuLeft;\n dropdownMenuRight = 'auto';\n }\n\n angular.extend(cssProperties,\n {\n left: dropdownMenuLeft,\n right: dropdownMenuRight,\n });\n\n dropdownMenu.css(cssProperties);\n\n if (availableHeight.direction === 'top')\n {\n dropdownMenu.css(\n {\n bottom: lxDropdown.overToggle ? (windowHeight - dropdownToggleTop - dropdownToggleHeight) : (windowHeight - dropdownToggleTop + ~~lxDropdown.offset)\n });\n\n return availableHeight.top;\n }\n else if (availableHeight.direction === 'bottom')\n {\n dropdownMenu.css(\n {\n top: lxDropdown.overToggle ? dropdownToggleTop : (dropdownToggleTop + dropdownToggleHeight + ~~lxDropdown.offset)\n });\n\n return availableHeight.bottom;\n }\n }\n\n function onDocumentClick() {\n $timeout(function nextDigest() {\n LxDropdownService.close(lxDropdown.uuid, true);\n })\n }\n\n function openDropdownMenu()\n {\n $document.on('click touchend', onDocumentClick);\n\n $document.on('touchmove', function onTouchMove(evt) {\n $document.off('touchend', onDocumentClick);\n });\n\n $rootScope.$broadcast('lx-dropdown__open-start', $element.attr('id'));\n\n lxDropdown.isOpen = true;\n\n LxDepthService.register();\n\n if (!lxDropdown.hover) {\n scrollMask.css('z-index', LxDepthService.getDepth()).appendTo('body');\n\n // An action outside the dropdown triggers the close function.\n scrollMask.on('click wheel touchmove ontouchstart', closeDropdownMenu);\n }\n\n angular.element(window).on('resize', initDropdownPosition);\n\n enableBodyScroll = LxUtilsService.disableBodyScroll();\n\n var dropdownToggleElement;\n if (lxDropdown.hasToggle)\n {\n dropdownToggleElement = (angular.isString(dropdownToggle)) ? angular.element(dropdownToggle) : dropdownToggle;\n dropdownToggleElement\n .css('z-index', LxDepthService.getDepth() + 1)\n .on('wheel', function preventDefault(e) {\n e.preventDefault();\n });\n }\n\n dropdownMenu\n .addClass('dropdown-menu--is-open')\n .css('z-index', LxDepthService.getDepth() + 1)\n .appendTo('body');\n\n if (lxDropdown.escapeClose)\n {\n idEventScheduler = LxEventSchedulerService.register('keyup', onKeyUp);\n }\n\n openTimeout = $timeout(function()\n {\n var availableHeight = initDropdownPosition() - ~~lxDropdown.offset;\n var dropdownMenuHeight = dropdownMenu.outerHeight();\n var dropdownMenuWidth = dropdownMenu.outerWidth();\n var enoughHeight = true;\n\n if (availableHeight < dropdownMenuHeight)\n {\n enoughHeight = false;\n dropdownMenuHeight = availableHeight;\n }\n\n /*\n * Watch for any changes in the dropdown content.\n * Each time the content of the dropdown changes, recompute its height to be sure to stay inside of the\n * viewport (and make it scrollable when it overflows).\n */\n dropdownContentWatcher = $scope.$watch(function watcherDropdownContent() {\n return dropdownMenu.find('.dropdown-menu__content').html();\n }, function watchDropdownContent(newValue, oldValue) {\n if (newValue === oldValue) {\n return;\n }\n\n updateDropdownMenuHeight();\n });\n\n if (lxDropdown.effect === 'expand')\n {\n dropdownMenu.css(\n {\n width: 0,\n height: 0,\n opacity: 1,\n overflow: 'hidden'\n });\n\n dropdownMenu.find('.dropdown-menu__content').css(\n {\n width: dropdownMenuWidth,\n height: dropdownMenuHeight\n });\n\n dropdownMenu.velocity(\n {\n width: dropdownMenuWidth\n },\n {\n duration: 200,\n easing: 'easeOutQuint',\n queue: false\n });\n\n dropdownMenu.velocity(\n {\n height: dropdownMenuHeight\n },\n {\n duration: 500,\n easing: 'easeOutQuint',\n queue: false,\n complete: function()\n {\n dropdownMenu.css(\n {\n overflow: 'auto'\n });\n\n if (angular.isUndefined(lxDropdown.width))\n {\n dropdownMenu.css(\n {\n width: 'auto'\n });\n }\n\n $timeout(updateDropdownMenuHeight);\n\n dropdownMenu.find('.dropdown-menu__content').removeAttr('style');\n }\n });\n }\n else if (lxDropdown.effect === 'fade')\n {\n dropdownMenu.css(\n {\n height: dropdownMenuHeight\n });\n\n dropdownMenu.velocity(\n {\n opacity: 1,\n },\n {\n duration: 200,\n easing: 'linear',\n queue: false,\n complete: function()\n {\n $timeout(updateDropdownMenuHeight);\n }\n });\n }\n else if (lxDropdown.effect === 'none')\n {\n dropdownMenu.css(\n {\n opacity: 1\n });\n\n $timeout(updateDropdownMenuHeight);\n }\n\n dropdownMenu.on('scroll', checkScrollEnd);\n\n $rootScope.$broadcast('lx-dropdown__open-end', $element.attr('id'));\n });\n }\n\n function onKeyUp(_event)\n {\n if (_event.keyCode == 27)\n {\n closeDropdownMenu();\n }\n\n _event.stopPropagation();\n }\n\n function registerDropdownMenu(_dropdownMenu)\n {\n dropdownMenu = _dropdownMenu;\n }\n\n function registerDropdownToggle(_dropdownToggle)\n {\n if (!positionTarget)\n {\n lxDropdown.hasToggle = true;\n }\n\n dropdownToggle = _dropdownToggle;\n }\n\n function toggle()\n {\n if (!lxDropdown.isOpen)\n {\n openDropdownMenu();\n }\n else\n {\n closeDropdownMenu();\n }\n }\n\n /**\n * Update the height of the dropdown.\n * If the content is too large to fit in the remaining size of the screen (to the top or the bottom), then make\n * it scrollable.\n * This function is called everytime the content inside of the dropdown changes.\n */\n function updateDropdownMenuHeight() {\n if (positionTarget) {\n registerDropdownToggle(angular.element(positionTarget));\n }\n\n if (!angular.element(dropdownToggle).is(':visible')) {\n return;\n }\n\n var availableHeight = getAvailableHeight();\n var scrollPosition = dropdownMenu.scrollTop();\n\n dropdownMenu.css({\n height: 'auto',\n });\n dropdownMenu.css(availableHeight.direction, 'auto');\n\n var dropdownMenuHeight = dropdownMenu.find('.dropdown-menu__content').outerHeight();\n\n if ((availableHeight[availableHeight.direction] - ~~lxDropdown.offset) <= dropdownMenuHeight) {\n if (availableHeight.direction === 'top') {\n dropdownMenu.css({\n top: 0,\n });\n } else if (availableHeight.direction === 'bottom') {\n dropdownMenu.css({\n bottom: 0,\n });\n }\n } else {\n if (availableHeight.direction === 'top') {\n dropdownMenu.css({\n top: 'auto',\n });\n } else if (availableHeight.direction === 'bottom') {\n dropdownMenu.css({\n bottom: 'auto',\n });\n }\n }\n\n dropdownMenu.scrollTop(scrollPosition);\n }\n\n /**\n * Check if user has scrolled to the end of the dropdown.\n */\n function checkScrollEnd() {\n if (\n dropdownMenu.scrollTop() + dropdownMenu.innerHeight() >=\n dropdownMenu[0].scrollHeight\n ) {\n $rootScope.$broadcast(\n 'lx-dropdown__scroll-end',\n $element.attr('id')\n );\n }\n }\n }\n\n lxDropdownToggle.$inject = ['$timeout', '$window', 'LxDropdownService'];\n\n function lxDropdownToggle($timeout, $window, LxDropdownService)\n {\n return {\n restrict: 'AE',\n templateUrl: 'dropdown-toggle.html',\n require: '^lxDropdown',\n scope: true,\n link: link,\n replace: true,\n transclude: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n var hoverTimeout = [];\n var mouseEvent = ctrl.hover ? 'mouseenter' : 'click';\n\n ctrl.registerDropdownToggle(element);\n\n element.on(mouseEvent, function(_event)\n {\n // If we are in mobile, ignore the mouseenter event for hovering detection\n if (mouseEvent === 'mouseenter' && ('ontouchstart' in window && angular.element($window).outerWidth() <= 480)) {\n return;\n }\n\n if (!ctrl.hover)\n {\n _event.stopPropagation();\n }\n\n LxDropdownService.closeActiveDropdown();\n LxDropdownService.registerActiveDropdownUuid(ctrl.uuid);\n\n if (ctrl.hover)\n {\n ctrl.mouseOnToggle = true;\n\n if (!ctrl.isOpen)\n {\n hoverTimeout[0] = $timeout(function()\n {\n scope.$apply(function()\n {\n ctrl.openDropdownMenu();\n });\n }, ctrl.hoverDelay);\n }\n }\n else\n {\n scope.$apply(function()\n {\n ctrl.toggle();\n });\n }\n });\n\n if (ctrl.hover)\n {\n element.on('mouseleave', function()\n {\n ctrl.mouseOnToggle = false;\n\n $timeout.cancel(hoverTimeout[0]);\n\n hoverTimeout[1] = $timeout(function()\n {\n if (!ctrl.mouseOnMenu)\n {\n scope.$apply(function()\n {\n ctrl.closeDropdownMenu();\n });\n }\n }, ctrl.hoverDelay);\n });\n }\n\n scope.$on('$destroy', function()\n {\n element.off();\n\n if (ctrl.hover)\n {\n $timeout.cancel(hoverTimeout[0]);\n $timeout.cancel(hoverTimeout[1]);\n }\n });\n }\n }\n\n lxDropdownMenu.$inject = ['$timeout'];\n\n function lxDropdownMenu($timeout)\n {\n return {\n restrict: 'E',\n templateUrl: 'dropdown-menu.html',\n require: ['lxDropdownMenu', '^lxDropdown'],\n scope: true,\n link: link,\n controller: LxDropdownMenuController,\n controllerAs: 'lxDropdownMenu',\n bindToController: true,\n replace: true,\n transclude: true\n };\n\n function link(scope, element, attrs, ctrls)\n {\n var hoverTimeout;\n\n ctrls[1].registerDropdownMenu(element);\n ctrls[0].setParentController(ctrls[1]);\n\n if (ctrls[1].hover)\n {\n element.on('mouseenter', function()\n {\n ctrls[1].mouseOnMenu = true;\n });\n\n element.on('mouseleave', function()\n {\n ctrls[1].mouseOnMenu = false;\n\n hoverTimeout = $timeout(function()\n {\n if (!ctrls[1].mouseOnToggle)\n {\n scope.$apply(function()\n {\n ctrls[1].closeDropdownMenu();\n });\n }\n }, ctrls[1].hoverDelay);\n });\n }\n\n scope.$on('$destroy', function()\n {\n if (ctrls[1].hover)\n {\n element.off();\n $timeout.cancel(hoverTimeout);\n }\n });\n }\n }\n\n LxDropdownMenuController.$inject = ['$element'];\n\n function LxDropdownMenuController($element)\n {\n var lxDropdownMenu = this;\n\n lxDropdownMenu.setParentController = setParentController;\n\n ////////////\n\n function setParentController(_parentCtrl)\n {\n lxDropdownMenu.parentCtrl = _parentCtrl;\n }\n }\n\n lxDropdownFilter.$inject = ['$timeout'];\n\n function lxDropdownFilter($timeout)\n {\n return {\n restrict: 'A',\n link: link\n };\n\n function link(scope, element)\n {\n var focusTimeout;\n\n element.on('click', function(_event)\n {\n _event.stopPropagation();\n });\n\n focusTimeout = $timeout(function()\n {\n element.find('input').focus();\n }, 200);\n\n scope.$on('$destroy', function()\n {\n $timeout.cancel(focusTimeout);\n element.off();\n });\n }\n }\n})();\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.dropdown')\n .service('LxDropdownService', LxDropdownService);\n\n LxDropdownService.$inject = ['$document', '$rootScope'];\n\n function LxDropdownService($document, $rootScope)\n {\n var service = this;\n var activeDropdownUuid;\n\n service.close = close;\n service.closeActiveDropdown = closeActiveDropdown;\n service.open = open;\n service.isOpen = isOpen;\n service.registerActiveDropdownUuid = registerActiveDropdownUuid;\n service.resetActiveDropdownUuid = resetActiveDropdownUuid;\n\n ////////////\n\n function close(_uuid, isDocumentClick)\n {\n isDocumentClick = isDocumentClick || false;\n $rootScope.$broadcast('lx-dropdown__close',\n {\n documentClick: isDocumentClick,\n uuid: _uuid\n });\n }\n\n function closeActiveDropdown()\n {\n if (angular.isDefined(activeDropdownUuid) && activeDropdownUuid.length > 0) {\n $rootScope.$broadcast('lx-dropdown__close',\n {\n documentClick: true,\n uuid: activeDropdownUuid\n });\n }\n }\n\n function open(_uuid, _target)\n {\n $rootScope.$broadcast('lx-dropdown__open',\n {\n uuid: _uuid,\n target: _target\n });\n }\n\n function isOpen(_uuid)\n {\n return activeDropdownUuid === _uuid;\n }\n\n function registerActiveDropdownUuid(_uuid)\n {\n activeDropdownUuid = _uuid;\n }\n\n function resetActiveDropdownUuid()\n {\n activeDropdownUuid = undefined;\n }\n }\n})();\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.fab')\n .directive('lxFab', lxFab)\n .directive('lxFabTrigger', lxFabTrigger)\n .directive('lxFabActions', lxFabActions);\n\n function lxFab()\n {\n return {\n restrict: 'E',\n templateUrl: 'fab.html',\n scope: true,\n link: link,\n controller: LxFabController,\n controllerAs: 'lxFab',\n bindToController: true,\n transclude: true,\n replace: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n attrs.$observe('lxDirection', function(newDirection)\n {\n ctrl.setFabDirection(newDirection);\n });\n\n attrs.$observe('lxTriggerOnClick', function(isTriggeredOnClick)\n {\n ctrl.setFabTriggerMethod(scope.$eval(isTriggeredOnClick));\n });\n }\n }\n\n function LxFabController()\n {\n var lxFab = this;\n\n lxFab.setFabDirection = setFabDirection;\n lxFab.setFabTriggerMethod = setFabTriggerMethod;\n lxFab.toggleState = toggleState;\n\n lxFab.isOpen = false;\n\n ////////////\n\n function setFabDirection(_direction)\n {\n lxFab.lxDirection = _direction;\n }\n\n function setFabTriggerMethod(_isTriggeredOnClick)\n {\n lxFab.lxTriggerOnClick = _isTriggeredOnClick;\n }\n\n function toggleState()\n {\n if (lxFab.lxTriggerOnClick)\n {\n lxFab.isOpen = !lxFab.isOpen;\n }\n }\n }\n\n function lxFabTrigger()\n {\n return {\n restrict: 'E',\n require: '^lxFab',\n templateUrl: 'fab-trigger.html',\n transclude: true,\n replace: true\n };\n }\n\n function lxFabActions()\n {\n return {\n restrict: 'E',\n require: '^lxFab',\n templateUrl: 'fab-actions.html',\n link: link,\n transclude: true,\n replace: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n scope.parentCtrl = ctrl;\n }\n }\n})();\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.file-input')\n .directive('lxFileInput', lxFileInput);\n\n function lxFileInput()\n {\n return {\n restrict: 'E',\n templateUrl: 'file-input.html',\n scope:\n {\n label: '@lxLabel',\n accept: '@lxAccept',\n callback: '&?lxCallback'\n },\n link: link,\n controller: LxFileInputController,\n controllerAs: 'lxFileInput',\n bindToController: true,\n replace: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n var input = element.find('input');\n\n input\n .on('change', ctrl.updateModel)\n .on('blur', function()\n {\n element.removeClass('input-file--is-focus');\n });\n\n scope.$on('$destroy', function()\n {\n input.off();\n });\n }\n }\n\n LxFileInputController.$inject = ['$element', '$scope', '$timeout'];\n\n function LxFileInputController($element, $scope, $timeout)\n {\n var lxFileInput = this;\n var input = $element.find('input');\n var timer;\n\n lxFileInput.updateModel = updateModel;\n\n $scope.$on('$destroy', function()\n {\n $timeout.cancel(timer);\n });\n\n ////////////\n\n function setFileName()\n {\n if (input.val())\n {\n lxFileInput.fileName = input.val().replace(/C:\\\\fakepath\\\\/i, '');\n\n $element.addClass('input-file--is-focus');\n $element.addClass('input-file--is-active');\n }\n else\n {\n lxFileInput.fileName = undefined;\n\n $element.removeClass('input-file--is-active');\n }\n\n input.val(undefined);\n }\n\n function updateModel()\n {\n if (angular.isDefined(lxFileInput.callback))\n {\n lxFileInput.callback(\n {\n newFile: input[0].files[0]\n });\n }\n\n timer = $timeout(setFileName);\n }\n }\n})();","import { CSS_PREFIX } from '@lumx/core/js/constants';\n\nimport template from '../views/icon.html';\n\n/////////////////////////////\n\nfunction IconDirective() {\n 'ngInject';\n\n function link(scope, el, attrs) {\n attrs.$observe('lxPath', (path) => {\n el.addClass(`${CSS_PREFIX}-icon--path`);\n el.find('path').attr('d', path);\n });\n\n attrs.$observe('lxId', (font) => {\n el.addClass(`${CSS_PREFIX}-icon--font mdi mdi-${font}`);\n });\n\n attrs.$observe('lxColor', (color) => {\n if (!color) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*icon--color-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-icon--color-${color}`);\n });\n\n attrs.$observe('lxColorVariant', (colorVariant) => {\n if (!colorVariant) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*icon--color-variant-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-icon--color-variant-${colorVariant}`);\n });\n\n attrs.$observe('lxSize', (size) => {\n if (!size) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*icon--size-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-icon--size-${size}`);\n });\n }\n\n return {\n link,\n replace: true,\n restrict: 'E',\n template,\n };\n}\n\n/////////////////////////////\n\nangular.module('lumx.icon').directive('lxIcon', IconDirective);\n\n/////////////////////////////\n\nexport { IconDirective };\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.notification')\n .service('LxNotificationService', LxNotificationService);\n\n LxNotificationService.$inject = ['$injector', '$rootScope', '$timeout', 'LxDepthService', 'LxEventSchedulerService'];\n\n function LxNotificationService($injector, $rootScope, $timeout, LxDepthService, LxEventSchedulerService)\n {\n var service = this;\n var dialogFilter;\n var dialog;\n var idEventScheduler;\n var notificationList = [];\n var actionClicked = false;\n\n service.alert = showAlertDialog;\n service.confirm = showConfirmDialog;\n service.error = notifyError;\n service.info = notifyInfo;\n service.notify = notify;\n service.success = notifySuccess;\n service.warning = notifyWarning;\n service.getNotificationList = getNotificationList;\n service.reComputeElementsPosition = reComputeElementsPosition;\n service.deleteNotification = deleteNotification;\n service.buildNotification = buildNotification;\n\n ////////////\n\n //\n // NOTIFICATION\n //\n\n function getElementHeight(_elem)\n {\n return parseFloat(window.getComputedStyle(_elem, null).height);\n }\n\n function moveNotificationUp()\n {\n var newNotifIndex = notificationList.length - 1;\n notificationList[newNotifIndex].height = getElementHeight(notificationList[newNotifIndex].elem[0]);\n\n var upOffset = 0;\n\n for (var idx = newNotifIndex; idx >= 0; idx--)\n {\n if (notificationList.length > 1 && idx !== newNotifIndex)\n {\n upOffset = 24 + notificationList[newNotifIndex].height;\n\n notificationList[idx].margin += upOffset;\n notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px');\n }\n }\n }\n\n function deleteNotification(_notification, _callback)\n {\n _callback = (!angular.isFunction(_callback)) ? angular.noop : _callback;\n\n var notifIndex = notificationList.indexOf(_notification);\n\n var dnOffset = angular.isDefined(notificationList[notifIndex]) ? 24 + notificationList[notifIndex].height : 24;\n\n for (var idx = 0; idx < notifIndex; idx++)\n {\n if (notificationList.length > 1)\n {\n notificationList[idx].margin -= dnOffset;\n notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px');\n }\n }\n\n _notification.elem.removeClass('notification--is-shown');\n\n $timeout(function()\n {\n _notification.elem.remove();\n\n // Find index again because notificationList may have changed\n notifIndex = notificationList.indexOf(_notification);\n\n if (notifIndex != -1)\n {\n notificationList.splice(notifIndex, 1);\n }\n\n _callback(actionClicked);\n actionClicked = false;\n }, 400);\n }\n\n /**\n * Compute the notification list element new position.\n * Usefull when the height change programmatically and you need other notifications to fit.\n */\n function reComputeElementsPosition()\n {\n var baseOffset = 0;\n\n for (var idx = notificationList.length -1; idx >= 0; idx--)\n {\n notificationList[idx].height = getElementHeight(notificationList[idx].elem[0]);\n notificationList[idx].margin = baseOffset;\n\n notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px');\n\n baseOffset += notificationList[idx].height + 24;\n }\n }\n\n function buildNotification(_text, _icon, _color, _action)\n {\n var notification = angular.element('
    ',\n {\n class: 'notification'\n });\n var notificationText = angular.element('',\n {\n class: 'notification__content',\n html: _text\n });\n\n if (angular.isDefined(_icon))\n {\n var notificationIcon = angular.element('',\n {\n class: 'notification__icon mdi mdi-' + _icon\n });\n\n notification\n .addClass('notification--has-icon')\n .append(notificationIcon);\n }\n\n if (angular.isDefined(_color))\n {\n notification.addClass('notification--' + _color);\n }\n\n notification.append(notificationText);\n\n if (angular.isDefined(_action))\n {\n var $compile = $injector.get('$compile');\n var notificationAction = angular.element('`;\n }\n\n function link(scope, el, attrs) {\n if (\n (!attrs.lxVariant && !attrs.lxType) ||\n attrs.lxVariant === 'button' ||\n attrs.lxType === 'raised' ||\n attrs.lxType === 'flat'\n ) {\n const leftIcon = el.find('i:first-child');\n const rightIcon = el.find('i:last-child');\n const label = el.find('span');\n\n if (leftIcon.length > 0) {\n el.addClass(`${CSS_PREFIX}-button--has-left-icon`);\n }\n\n if (rightIcon.length > 0) {\n el.addClass(`${CSS_PREFIX}-button--has-right-icon`);\n }\n\n if (label.length === 0) {\n el.wrapInner('');\n }\n }\n\n const isDefaultEmphasis = !attrs.lxEmphasis || attrs.lxEmphasis === 'high';\n\n const defaultProps = {\n color: isDefaultEmphasis ? 'primary' : 'dark',\n emphasis: 'high',\n size: 'm',\n theme: 'light',\n variant: 'button',\n };\n\n if (!attrs.lxColor) {\n el.addClass(`${CSS_PREFIX}-button--color-${defaultProps.color}`);\n }\n\n attrs.$observe('lxColor', (color) => {\n if (!color) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--color-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--color-${color}`);\n });\n\n if (!attrs.lxEmphasis) {\n el.addClass(`${CSS_PREFIX}-button--emphasis-${defaultProps.emphasis}`);\n }\n\n attrs.$observe('lxEmphasis', (emphasis) => {\n if (!emphasis) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--emphasis-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--emphasis-${emphasis}`);\n });\n\n if (!attrs.lxSize) {\n el.addClass(`${CSS_PREFIX}-button--size-${defaultProps.size}`);\n }\n\n attrs.$observe('lxSize', (size) => {\n if (!size) {\n return;\n }\n\n const sizeFallback = {\n xs: 's',\n s: 's',\n m: 'm',\n l: 'm',\n xl: 'm',\n };\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--size-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--size-${sizeFallback[size]}`);\n });\n\n if (!attrs.lxTheme && isDefaultEmphasis) {\n el.addClass(`${CSS_PREFIX}-button--theme-${defaultProps.theme}`);\n }\n\n attrs.$observe('lxTheme', (theme) => {\n if (!theme) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--theme-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--theme-${theme}`);\n });\n\n if (!attrs.lxVariant) {\n el.addClass(`${CSS_PREFIX}-button--variant-${defaultProps.variant}`);\n }\n\n attrs.$observe('lxVariant', (variant) => {\n if (!variant) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--variant-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--variant-${variant}`);\n });\n\n attrs.$observe('lxType', (type) => {\n if (!type) {\n return;\n }\n\n const emphasisFallback = {\n raised: 'high',\n flat: 'low',\n fab: 'high',\n icon: 'low',\n };\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--emphasis-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--emphasis-${emphasisFallback[type]}`);\n\n if (type === 'fab' || type === 'icon') {\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*button--variant-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-button--variant-icon`);\n }\n });\n\n scope.$watch(attrs.lxIsSelected, (isSelected) => {\n if (isSelected) {\n el.addClass(`${CSS_PREFIX}-button--is-selected`);\n } else {\n el.removeClass(`${CSS_PREFIX}-button--is-selected`);\n }\n });\n }\n\n return {\n link,\n replace: true,\n restrict: 'E',\n template: getTemplate,\n transclude: true,\n };\n}\n\n/////////////////////////////\n\nangular.module('lumx.button').directive('lxButton', ButtonDirective);\n\n/////////////////////////////\n\nexport { ButtonDirective };\n","import { CSS_PREFIX } from '@lumx/core/js/constants';\n\nimport { mdiCheck } from '@lumx/icons';\n\nimport template from '../views/checkbox.html';\n\n/////////////////////////////\n\nfunction CheckboxController(LxUtilsService) {\n 'ngInject';\n\n // eslint-disable-next-line consistent-this\n const lx = this;\n\n /////////////////////////////\n // //\n // Private attributes //\n // //\n /////////////////////////////\n\n /**\n * The model controller.\n *\n * @type {Object}\n */\n let _modelController;\n\n /////////////////////////////\n // //\n // Public attributes //\n // //\n /////////////////////////////\n\n /**\n * The checkbox id.\n *\n * @type {string}\n */\n lx.checkboxId = LxUtilsService.generateUUID();\n\n /**\n * Whether the directive has helper slot filled or not.\n *\n * @type {boolean}\n */\n lx.hasHelper = false;\n\n /**\n * Whether the directive has label slot filled or not.\n *\n * @type {boolean}\n */\n lx.hasLabel = false;\n\n /**\n * Whether the directive has transcluded content if no transclude slot.\n *\n * @type {boolean}\n */\n lx.hasTranscluded = false;\n\n /**\n * The checkbox icons.\n *\n * @type {Object}\n */\n lx.icons = {\n mdiCheck,\n };\n\n /**\n * The model view value.\n *\n * @type {string}\n */\n lx.viewValue = undefined;\n\n /////////////////////////////\n // //\n // Public functions //\n // //\n /////////////////////////////\n\n /**\n * Set the model controller.\n *\n * @param {Object} modelController The model controller.\n */\n function setModelController(modelController) {\n _modelController = modelController;\n\n _modelController.$render = function onModelRender() {\n lx.viewValue = _modelController.$viewValue;\n };\n }\n\n /**\n * Update model controller view value on checkbox click.\n */\n function updateViewValue() {\n if (angular.isUndefined(_modelController)) {\n lx.viewValue = !lx.viewValue;\n\n return;\n }\n\n _modelController.$setViewValue(!_modelController.$viewValue);\n _modelController.$render();\n }\n\n /////////////////////////////\n\n lx.setModelController = setModelController;\n lx.updateViewValue = updateViewValue;\n}\n\n/////////////////////////////\n\nfunction CheckboxDirective() {\n 'ngInject';\n\n function link(scope, el, attrs, ctrls, transclude) {\n if (ctrls[1]) {\n ctrls[0].setModelController(ctrls[1]);\n }\n\n if (transclude.isSlotFilled('label')) {\n ctrls[0].hasLabel = true;\n }\n\n if (transclude.isSlotFilled('helper')) {\n ctrls[0].hasHelper = true;\n }\n\n if (!ctrls[0].hasLabel && !ctrls[0].hasHelper) {\n transclude((clone) => {\n if (clone.length > 0) {\n ctrls[0].hasTranscluded = true;\n }\n });\n }\n\n attrs.$observe('disabled', (isDisabled) => {\n el.find('input').attr('disabled', isDisabled);\n\n if (isDisabled) {\n el.addClass(`${CSS_PREFIX}-checkbox--is-disabled`);\n } else {\n el.removeClass(`${CSS_PREFIX}-checkbox--is-disabled`);\n }\n });\n\n attrs.$observe('checked', (isChecked) => {\n el.find('input').attr('checked', isChecked);\n\n ctrls[0].viewValue = isChecked;\n });\n }\n\n return {\n bindToController: true,\n controller: CheckboxController,\n controllerAs: 'lx',\n link,\n replace: true,\n require: ['lxCheckbox', '?ngModel'],\n restrict: 'E',\n scope: {\n theme: '@?lxTheme',\n },\n template,\n transclude: {\n helper: '?lxCheckboxHelp',\n label: '?lxCheckboxLabel',\n },\n };\n}\n\n/////////////////////////////\n\nangular.module('lumx.checkbox').directive('lxCheckbox', CheckboxDirective);\n\n/////////////////////////////\n\nexport { CheckboxDirective };\n","import { CSS_PREFIX } from '@lumx/core/js/constants';\n\nimport { mdiMenuDown } from '@lumx/icons';\n\nimport template from '../views/chip.html';\n\n/////////////////////////////\n\nfunction ChipController() {\n 'ngInject';\n\n // eslint-disable-next-line consistent-this\n const lx = this;\n\n /////////////////////////////\n // //\n // Public attributes //\n // //\n /////////////////////////////\n\n /**\n * Whether the directive has after slot filled or not.\n *\n * @type {boolean}\n */\n lx.hasAfter = false;\n\n /**\n * Whether the directive has before slot filled or not.\n *\n * @type {boolean}\n */\n lx.hasBefore = false;\n\n /**\n * Whether the directive has label slot filled or not.\n *\n * @type {boolean}\n */\n lx.hasLabel = false;\n\n /**\n * The chip icons.\n *\n * @type {Object}\n */\n lx.icons = {\n mdiMenuDown,\n };\n\n /////////////////////////////\n // //\n // Public functions //\n // //\n /////////////////////////////\n\n /**\n * Handle given function on after area click.\n *\n * @param {Event} evt The click event.\n */\n function handleOnAfterClick(evt) {\n if (!angular.isFunction(lx.onAfterClick)) {\n return;\n }\n\n evt.stopPropagation();\n\n lx.onAfterClick();\n }\n\n /**\n * Handle given function on before area click.\n *\n * @param {Event} evt The click event.\n */\n function handleOnBeforeClick(evt) {\n if (!angular.isFunction(lx.onBeforeClick)) {\n return;\n }\n\n evt.stopPropagation();\n\n lx.onBeforeClick();\n }\n\n /**\n * Handle given function on the whole area click.\n *\n * @param {Event} evt The click event.\n */\n function handleOnClick(evt) {\n if (!angular.isFunction(lx.onClick)) {\n return;\n }\n\n lx.onClick({ $event: evt });\n }\n\n /////////////////////////////\n\n lx.handleOnAfterClick = handleOnAfterClick;\n lx.handleOnBeforeClick = handleOnBeforeClick;\n lx.handleOnClick = handleOnClick;\n}\n\n/////////////////////////////\n\nfunction ChipDirective() {\n 'ngInject';\n\n function link(scope, el, attrs, ctrl, transclude) {\n if (transclude.isSlotFilled('after')) {\n ctrl.hasAfter = true;\n }\n\n if (transclude.isSlotFilled('before')) {\n ctrl.hasBefore = true;\n }\n\n if (transclude.isSlotFilled('label')) {\n ctrl.hasLabel = true;\n }\n\n const defaultProps = {\n color: 'dark',\n };\n\n if (!attrs.lxColor) {\n el.addClass(`${CSS_PREFIX}-chip--color-${defaultProps.color}`);\n }\n\n attrs.$observe('lxColor', (color) => {\n if (!color) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*chip--color-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-chip--color-${color}`);\n });\n }\n\n return {\n bindToController: true,\n controller: ChipController,\n controllerAs: 'lx',\n link,\n replace: true,\n restrict: 'E',\n scope: {\n color: '@?lxColor',\n hasDropdownIndicator: '=?lxHasDropdownIndicator',\n isDisabled: '=?ngDisabled',\n isSelected: '=?lxIsSelected',\n onAfterClick: '&?lxOnAfterClick',\n onBeforeClick: '&?lxOnBeforeClick',\n onClick: '&?lxOnClick',\n size: '@?lxSize',\n theme: '@?lxTheme',\n },\n template,\n transclude: {\n after: '?lxChipAfter',\n before: '?lxChipBefore',\n label: 'lxChipLabel',\n },\n };\n}\n\n/////////////////////////////\n\nangular.module('lumx.chip').directive('lxChip', ChipDirective);\n\n/////////////////////////////\n\nexport { ChipDirective };\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.data-table')\n .directive('lxDataTable', lxDataTable);\n\n function lxDataTable()\n {\n return {\n restrict: 'E',\n templateUrl: 'data-table.html',\n scope:\n {\n activable: '=?lxActivable',\n border: '=?lxBorder',\n bulk: '=?lxBulk',\n selectable: '=?lxSelectable',\n thumbnail: '=?lxThumbnail',\n tbody: '=lxTbody',\n thead: '=lxThead'\n },\n link: link,\n controller: LxDataTableController,\n controllerAs: 'lxDataTable',\n bindToController: true,\n transclude: true,\n replace: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n attrs.$observe('id', function(_newId)\n {\n ctrl.id = _newId;\n });\n }\n }\n\n LxDataTableController.$inject = ['$rootScope', '$sce', '$scope'];\n\n function LxDataTableController($rootScope, $sce, $scope)\n {\n var lxDataTable = this;\n\n lxDataTable.areAllRowsSelected = areAllRowsSelected;\n lxDataTable.border = angular.isUndefined(lxDataTable.border) ? true : lxDataTable.border;\n lxDataTable.bulk = angular.isUndefined(lxDataTable.bulk) ? true : lxDataTable.bulk;\n lxDataTable.sort = sort;\n lxDataTable.toggleActivation = toggleActivation;\n lxDataTable.toggleAllSelected = toggleAllSelected;\n lxDataTable.toggleSelection = toggleSelection;\n\n lxDataTable.$sce = $sce;\n lxDataTable.allRowsSelected = false;\n lxDataTable.selectedRows = [];\n\n $scope.$on('lx-data-table__select', function(event, id, row)\n {\n if (id === lxDataTable.id && angular.isDefined(row))\n {\n _select((angular.isArray(row) && row.length > 0) ? row[0] : row);\n }\n });\n\n $scope.$on('lx-data-table__select-all', function(event, id)\n {\n if (id === lxDataTable.id)\n {\n _selectAll();\n }\n });\n\n $scope.$on('lx-data-table__unselect', function(event, id, row)\n {\n if (id === lxDataTable.id && angular.isDefined(row))\n {\n _unselect((angular.isArray(row) && row.length > 0) ? row[0] : row);\n }\n });\n\n $scope.$on('lx-data-table__unselect-all', function(event, id)\n {\n if (id === lxDataTable.id)\n {\n _unselectAll();\n }\n });\n\n $scope.$on('lx-data-table__activate', function(event, id, row)\n {\n if (id === lxDataTable.id && angular.isDefined(row))\n {\n _activate((angular.isArray(row) && row.length > 0) ? row[0] : row);\n }\n });\n\n $scope.$on('lx-data-table__deactivate', function(event, id, row)\n {\n if (id === lxDataTable.id && angular.isDefined(row))\n {\n _deactivate((angular.isArray(row) && row.length > 0) ? row[0] : row);\n }\n });\n\n ////////////\n\n function _activate(row)\n {\n toggleActivation(row, true);\n }\n\n function _deactivate(row)\n {\n toggleActivation(row, false);\n }\n\n function _select(row)\n {\n toggleSelection(row, true);\n }\n\n function _selectAll()\n {\n lxDataTable.selectedRows.length = 0;\n\n for (var i = 0, len = lxDataTable.tbody.length; i < len; i++)\n {\n if (!lxDataTable.tbody[i].lxDataTableDisabled)\n {\n lxDataTable.tbody[i].lxDataTableSelected = true;\n lxDataTable.selectedRows.push(lxDataTable.tbody[i]);\n }\n }\n\n lxDataTable.allRowsSelected = true;\n\n $rootScope.$broadcast('lx-data-table__unselected', lxDataTable.id, lxDataTable.selectedRows);\n }\n\n function _unselect(row)\n {\n toggleSelection(row, false);\n }\n\n function _unselectAll()\n {\n for (var i = 0, len = lxDataTable.tbody.length; i < len; i++)\n {\n if (!lxDataTable.tbody[i].lxDataTableDisabled)\n {\n lxDataTable.tbody[i].lxDataTableSelected = false;\n }\n }\n\n lxDataTable.allRowsSelected = false;\n lxDataTable.selectedRows.length = 0;\n\n $rootScope.$broadcast('lx-data-table__selected', lxDataTable.id, lxDataTable.selectedRows);\n }\n\n ////////////\n\n function areAllRowsSelected()\n {\n var displayedRows = 0;\n\n for (var i = 0, len = lxDataTable.tbody.length; i < len; i++)\n {\n if (!lxDataTable.tbody[i].lxDataTableDisabled)\n {\n displayedRows++;\n }\n }\n\n if (displayedRows === lxDataTable.selectedRows.length)\n {\n lxDataTable.allRowsSelected = true;\n }\n else\n {\n lxDataTable.allRowsSelected = false;\n }\n }\n\n function sort(_column)\n {\n if (!_column.sortable)\n {\n return;\n }\n\n for (var i = 0, len = lxDataTable.thead.length; i < len; i++)\n {\n if (lxDataTable.thead[i].sortable && lxDataTable.thead[i].name !== _column.name)\n {\n lxDataTable.thead[i].sort = undefined;\n }\n }\n\n if (!_column.sort || _column.sort === 'desc')\n {\n _column.sort = 'asc';\n }\n else\n {\n _column.sort = 'desc';\n }\n\n $rootScope.$broadcast('lx-data-table__sorted', lxDataTable.id, _column);\n }\n\n function toggleActivation(_row, _newActivatedStatus)\n {\n if (_row.lxDataTableDisabled || !lxDataTable.activable)\n {\n return;\n }\n\n for (var i = 0, len = lxDataTable.tbody.length; i < len; i++)\n {\n if (lxDataTable.tbody.indexOf(_row) !== i)\n {\n lxDataTable.tbody[i].lxDataTableActivated = false;\n }\n }\n\n _row.lxDataTableActivated = !_row.lxDataTableActivated;\n\n if (_row.lxDataTableActivated)\n {\n $rootScope.$broadcast('lx-data-table__activated', lxDataTable.id, _row);\n }\n else\n {\n $rootScope.$broadcast('lx-data-table__deactivated', lxDataTable.id, _row);\n }\n }\n\n function toggleAllSelected()\n {\n if (!lxDataTable.bulk)\n {\n return;\n }\n\n if (lxDataTable.allRowsSelected)\n {\n _unselectAll();\n }\n else\n {\n _selectAll();\n }\n }\n\n function toggleSelection(_row, _newSelectedStatus, _event)\n {\n if (_row.lxDataTableDisabled || !lxDataTable.selectable)\n {\n return;\n }\n\n if (angular.isDefined(_event)) {\n _event.stopPropagation();\n }\n\n _row.lxDataTableSelected = angular.isDefined(_newSelectedStatus) ? _newSelectedStatus : !_row.lxDataTableSelected;\n\n if (_row.lxDataTableSelected)\n {\n // Make sure it's not already in.\n if (lxDataTable.selectedRows.length === 0 || (lxDataTable.selectedRows.length && lxDataTable.selectedRows.indexOf(_row) === -1))\n {\n lxDataTable.selectedRows.push(_row);\n lxDataTable.areAllRowsSelected();\n\n $rootScope.$broadcast('lx-data-table__selected', lxDataTable.id, lxDataTable.selectedRows, _row);\n }\n }\n else\n {\n if (lxDataTable.selectedRows.length && lxDataTable.selectedRows.indexOf(_row) > -1)\n {\n lxDataTable.selectedRows.splice(lxDataTable.selectedRows.indexOf(_row), 1);\n lxDataTable.allRowsSelected = false;\n\n $rootScope.$broadcast('lx-data-table__unselected', lxDataTable.id, lxDataTable.selectedRows, _row);\n }\n }\n }\n }\n})();\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.data-table')\n .service('LxDataTableService', LxDataTableService);\n\n LxDataTableService.$inject = ['$rootScope'];\n\n function LxDataTableService($rootScope)\n {\n var service = this;\n\n service.select = select;\n service.selectAll = selectAll;\n service.unselect = unselect;\n service.unselectAll = unselectAll;\n service.activate = activate;\n service.deactivate = deactivate;\n\n ////////////\n\n function select(_dataTableId, row)\n {\n $rootScope.$broadcast('lx-data-table__select', _dataTableId, row);\n }\n\n function selectAll(_dataTableId)\n {\n $rootScope.$broadcast('lx-data-table__select-all', _dataTableId);\n }\n\n function unselect(_dataTableId, row)\n {\n $rootScope.$broadcast('lx-data-table__unselect', _dataTableId, row);\n }\n\n function unselectAll(_dataTableId)\n {\n $rootScope.$broadcast('lx-data-table__unselect-all', _dataTableId);\n }\n\n function activate(_dataTableId, row)\n {\n $rootScope.$broadcast('lx-data-table__activate', _dataTableId, row);\n }\n\n function deactivate(_dataTableId, row)\n {\n $rootScope.$broadcast('lx-data-table__deactivate', _dataTableId, row);\n }\n }\n})();\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.date-picker')\n .directive('lxDatePicker', lxDatePicker);\n\n lxDatePicker.$inject = ['LxDatePickerService', 'LxUtilsService'];\n\n function lxDatePicker(LxDatePickerService, LxUtilsService)\n {\n return {\n restrict: 'AE',\n templateUrl: 'date-picker.html',\n scope:\n {\n autoClose: '=?lxAutoClose',\n callback: '&?lxCallback',\n color: '@?lxColor',\n escapeClose: '=?lxEscapeClose',\n inputFormat: '@?lxInputFormat',\n maxDate: '=?lxMaxDate',\n ngModel: '=',\n minDate: '=?lxMinDate',\n locale: '@lxLocale'\n },\n link: link,\n controller: LxDatePickerController,\n controllerAs: 'lxDatePicker',\n bindToController: true,\n replace: true,\n transclude: true\n };\n\n function link(scope, element, attrs)\n {\n if (angular.isDefined(attrs.id))\n {\n attrs.$observe('id', function(_newId)\n {\n scope.lxDatePicker.pickerId = _newId;\n LxDatePickerService.registerScope(scope.lxDatePicker.pickerId, scope);\n });\n }\n else\n {\n scope.lxDatePicker.pickerId = LxUtilsService.generateUUID();\n LxDatePickerService.registerScope(scope.lxDatePicker.pickerId, scope);\n }\n }\n }\n\n LxDatePickerController.$inject = ['$element', '$scope', '$timeout', '$transclude', 'LxDatePickerService', 'LxUtilsService'];\n\n function LxDatePickerController($element, $scope, $timeout, $transclude, LxDatePickerService, LxUtilsService)\n {\n var lxDatePicker = this;\n var input;\n var modelController;\n var timer1;\n var timer2;\n var watcher1;\n var watcher2;\n\n lxDatePicker.closeDatePicker = closeDatePicker;\n lxDatePicker.displayYearSelection = displayYearSelection;\n lxDatePicker.hideYearSelection = hideYearSelection;\n lxDatePicker.getDateFormatted = getDateFormatted;\n lxDatePicker.nextMonth = nextMonth;\n lxDatePicker.openDatePicker = openDatePicker;\n lxDatePicker.previousMonth = previousMonth;\n lxDatePicker.select = select;\n lxDatePicker.selectYear = selectYear;\n\n lxDatePicker.autoClose = angular.isDefined(lxDatePicker.autoClose) ? lxDatePicker.autoClose : true;\n lxDatePicker.color = angular.isDefined(lxDatePicker.color) ? lxDatePicker.color : 'primary';\n lxDatePicker.element = $element.find('.lx-date-picker');\n lxDatePicker.escapeClose = angular.isDefined(lxDatePicker.escapeClose) ? lxDatePicker.escapeClose : true;\n lxDatePicker.isOpen = false;\n lxDatePicker.moment = moment;\n lxDatePicker.yearSelection = false;\n lxDatePicker.uuid = LxUtilsService.generateUUID();\n\n $transclude(function(clone)\n {\n if (clone.length)\n {\n lxDatePicker.hasInput = true;\n\n timer1 = $timeout(function()\n {\n input = $element.find('.lx-date-input input');\n modelController = input.data('$ngModelController');\n\n watcher2 = $scope.$watch(function()\n {\n return modelController.$viewValue;\n }, function(newValue, oldValue)\n {\n if (angular.isUndefined(newValue))\n {\n lxDatePicker.ngModel = undefined;\n }\n });\n });\n }\n });\n\n watcher1 = $scope.$watch(function()\n {\n return lxDatePicker.ngModel;\n }, init);\n\n $scope.$on('$destroy', function()\n {\n $timeout.cancel(timer1);\n $timeout.cancel(timer2);\n\n if (angular.isFunction(watcher1))\n {\n watcher1();\n }\n\n if (angular.isFunction(watcher2))\n {\n watcher2();\n }\n });\n\n ////////////\n\n function closeDatePicker()\n {\n LxDatePickerService.close(lxDatePicker.pickerId);\n }\n\n function displayYearSelection()\n {\n lxDatePicker.yearSelection = true;\n\n timer2 = $timeout(function()\n {\n var yearSelector = angular.element('.lx-date-picker__year-selector');\n var activeYear = yearSelector.find('.lx-date-picker__year--is-active');\n\n yearSelector.scrollTop(yearSelector.scrollTop() + activeYear.position().top - yearSelector.height() / 2 + activeYear.height() / 2);\n });\n }\n\n function hideYearSelection()\n {\n lxDatePicker.yearSelection = false;\n }\n\n function generateCalendar()\n {\n lxDatePicker.days = [];\n\n var previousDay = angular.copy(lxDatePicker.ngModelMoment).date(0);\n var firstDayOfMonth = angular.copy(lxDatePicker.ngModelMoment).date(1);\n var lastDayOfMonth = firstDayOfMonth.clone().endOf('month');\n var maxDays = lastDayOfMonth.date();\n\n lxDatePicker.emptyFirstDays = [];\n\n for (var i = firstDayOfMonth.day() === 0 ? 6 : firstDayOfMonth.day() - 1; i > 0; i--)\n {\n lxDatePicker.emptyFirstDays.push(\n {});\n }\n\n for (var j = 0; j < maxDays; j++)\n {\n var date = angular.copy(previousDay.add(1, 'days'));\n\n date.selected = angular.isDefined(lxDatePicker.ngModel) && date.isSame(lxDatePicker.ngModel, 'day');\n date.today = date.isSame(moment(), 'day');\n\n if (angular.isDefined(lxDatePicker.minDate))\n {\n var minDate = (angular.isString(lxDatePicker.minDate)) ? new Date(lxDatePicker.minDate) : lxDatePicker.minDate;\n if (date.toDate() < minDate)\n {\n date.disabled = true;\n }\n }\n\n if (angular.isDefined(lxDatePicker.maxDate))\n {\n var maxDate = (angular.isString(lxDatePicker.maxDate)) ? new Date(lxDatePicker.maxDate) : lxDatePicker.maxDate;\n if (date.toDate() > maxDate)\n {\n date.disabled = true;\n }\n }\n\n lxDatePicker.days.push(date);\n }\n\n lxDatePicker.emptyLastDays = [];\n\n for (var k = 7 - (lastDayOfMonth.day() === 0 ? 7 : lastDayOfMonth.day()); k > 0; k--)\n {\n lxDatePicker.emptyLastDays.push(\n {});\n }\n }\n\n function getDateFormatted()\n {\n var dateFormatted = lxDatePicker.ngModelMoment.format('llll').replace(lxDatePicker.ngModelMoment.format('LT'), '').trim().replace(lxDatePicker.ngModelMoment.format('YYYY'), '').trim();\n var dateFormattedLastChar = dateFormatted.slice(-1);\n\n if (dateFormattedLastChar === ',')\n {\n dateFormatted = dateFormatted.slice(0, -1);\n }\n\n return dateFormatted;\n }\n\n function init()\n {\n moment.locale(lxDatePicker.locale);\n\n lxDatePicker.ngModelMoment = angular.isDefined(lxDatePicker.ngModel) ? moment(angular.copy(lxDatePicker.ngModel)) : moment();\n lxDatePicker.days = [];\n lxDatePicker.daysOfWeek = [moment.weekdaysMin(1), moment.weekdaysMin(2), moment.weekdaysMin(3), moment.weekdaysMin(4), moment.weekdaysMin(5), moment.weekdaysMin(6), moment.weekdaysMin(0)];\n lxDatePicker.years = [];\n\n for (var y = moment().year() - 100; y <= moment().year() + 100; y++)\n {\n lxDatePicker.years.push(y);\n }\n\n generateCalendar();\n }\n\n function nextMonth()\n {\n lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.add(1, 'month');\n\n generateCalendar();\n }\n\n function openDatePicker()\n {\n LxDatePickerService.open(lxDatePicker.pickerId);\n\n generateCalendar();\n }\n\n function previousMonth()\n {\n lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.subtract(1, 'month');\n\n generateCalendar();\n }\n\n function select(_day)\n {\n if (!_day.disabled)\n {\n lxDatePicker.ngModel = _day.toDate();\n lxDatePicker.ngModelMoment = angular.copy(_day);\n\n if (angular.isDefined(lxDatePicker.callback))\n {\n lxDatePicker.callback(\n {\n newDate: lxDatePicker.ngModel\n });\n }\n\n if (angular.isDefined(modelController) && lxDatePicker.inputFormat)\n {\n modelController.$setViewValue(angular.copy(_day).format(lxDatePicker.inputFormat));\n modelController.$render();\n }\n\n generateCalendar();\n }\n }\n\n function selectYear(_year)\n {\n lxDatePicker.yearSelection = false;\n\n lxDatePicker.ngModelMoment = lxDatePicker.ngModelMoment.year(_year);\n\n generateCalendar();\n }\n }\n})();\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/forced-string-trim-method');\n\n// `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.date-picker')\n .service('LxDatePickerService', LxDatePickerService);\n\n LxDatePickerService.$inject = ['$rootScope', '$timeout', 'LxDepthService', 'LxEventSchedulerService'];\n\n function LxDatePickerService($rootScope, $timeout, LxDepthService, LxEventSchedulerService)\n {\n var service = this;\n var activeDatePickerId;\n var datePickerFilter;\n var idEventScheduler;\n var scopeMap = {};\n\n service.close = closeDatePicker;\n service.open = openDatePicker;\n service.registerScope = registerScope;\n\n ////////////\n\n function closeDatePicker(_datePickerId)\n {\n if (angular.isDefined(idEventScheduler))\n {\n LxEventSchedulerService.unregister(idEventScheduler);\n idEventScheduler = undefined;\n }\n\n activeDatePickerId = undefined;\n\n $rootScope.$broadcast('lx-date-picker__close-start', _datePickerId);\n\n datePickerFilter.removeClass('lx-date-picker-filter--is-shown');\n scopeMap[_datePickerId].element.removeClass('lx-date-picker--is-shown');\n\n $timeout(function()\n {\n angular.element('body').removeClass('no-scroll-date-picker-' + scopeMap[_datePickerId].uuid);\n\n datePickerFilter.remove();\n\n scopeMap[_datePickerId].element\n .hide()\n .appendTo(scopeMap[_datePickerId].elementParent);\n\n scopeMap[_datePickerId].isOpen = false;\n $rootScope.$broadcast('lx-date-picker__close-end', _datePickerId);\n }, 600);\n }\n\n function onKeyUp(_event)\n {\n if (_event.keyCode == 27 && angular.isDefined(activeDatePickerId))\n {\n closeDatePicker(activeDatePickerId);\n }\n\n _event.stopPropagation();\n }\n\n function openDatePicker(_datePickerId)\n {\n LxDepthService.register();\n\n activeDatePickerId = _datePickerId;\n\n angular.element('body').addClass('no-scroll-date-picker-' + scopeMap[_datePickerId].uuid);\n\n datePickerFilter = angular.element('
    ',\n {\n class: 'lx-date-picker-filter'\n });\n\n datePickerFilter\n .css('z-index', LxDepthService.getDepth())\n .appendTo('body');\n\n if (scopeMap[activeDatePickerId].autoClose)\n {\n datePickerFilter.on('click', function()\n {\n closeDatePicker(activeDatePickerId);\n });\n }\n\n if (scopeMap[activeDatePickerId].escapeClose)\n {\n idEventScheduler = LxEventSchedulerService.register('keyup', onKeyUp);\n }\n\n scopeMap[activeDatePickerId].element\n .css('z-index', LxDepthService.getDepth() + 1)\n .appendTo('body')\n .show();\n\n $timeout(function()\n {\n $rootScope.$broadcast('lx-date-picker__open-start', activeDatePickerId);\n\n scopeMap[activeDatePickerId].isOpen = true;\n\n datePickerFilter.addClass('lx-date-picker-filter--is-shown');\n scopeMap[activeDatePickerId].element.addClass('lx-date-picker--is-shown');\n }, 100);\n\n $timeout(function()\n {\n $rootScope.$broadcast('lx-date-picker__open-end', activeDatePickerId);\n }, 700);\n }\n\n function registerScope(_datePickerId, _datePickerScope)\n {\n scopeMap[_datePickerId] = _datePickerScope.lxDatePicker;\n }\n }\n})();","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.dialog')\n .directive('lxDialog', lxDialog)\n .directive('lxDialogHeader', lxDialogHeader)\n .directive('lxDialogContent', lxDialogContent)\n .directive('lxDialogFooter', lxDialogFooter)\n .directive('lxDialogClose', lxDialogClose);\n\n function lxDialog()\n {\n return {\n restrict: 'E',\n template: '
    ',\n scope:\n {\n autoClose: '=?lxAutoClose',\n escapeClose: '=?lxEscapeClose',\n size: '@?lxSize'\n },\n link: link,\n controller: LxDialogController,\n controllerAs: 'lxDialog',\n bindToController: true,\n replace: true,\n transclude: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n attrs.$observe('id', function(_newId)\n {\n ctrl.id = _newId;\n });\n }\n }\n\n LxDialogController.$inject = ['$element', '$interval', '$rootScope', '$scope', '$timeout', '$window', 'LxDepthService', 'LxEventSchedulerService', 'LxUtilsService'];\n\n function LxDialogController($element, $interval, $rootScope, $scope, $timeout, $window, LxDepthService, LxEventSchedulerService, LxUtilsService)\n {\n var lxDialog = this;\n var dialogFilter = angular.element('
    ',\n {\n class: 'dialog-filter'\n });\n var dialogHeight;\n var dialogInterval;\n var dialogScrollable;\n var elementParent = $element.parent();\n var idEventScheduler;\n var resizeDebounce;\n var windowHeight;\n\n lxDialog.autoClose = angular.isDefined(lxDialog.autoClose) ? lxDialog.autoClose : true;\n lxDialog.escapeClose = angular.isDefined(lxDialog.escapeClose) ? lxDialog.escapeClose : true;\n lxDialog.isOpen = false;\n lxDialog.uuid = LxUtilsService.generateUUID();\n\n $scope.$on('lx-dialog__open', function(event, id, params)\n {\n if (id === lxDialog.id)\n {\n open(params);\n }\n });\n\n $scope.$on('lx-dialog__close', function(event, id, canceled, params)\n {\n if (id === lxDialog.id || id === undefined)\n {\n close(canceled, params);\n }\n });\n\n $scope.$on('$destroy', function()\n {\n close(true);\n });\n\n ////////////\n\n function checkDialogHeight()\n {\n var dialog = $element;\n var dialogHeader = dialog.find('.dialog__header');\n var dialogContent = dialog.find('.dialog__content');\n var dialogFooter = dialog.find('.dialog__footer');\n\n if (!dialogFooter.length)\n {\n dialogFooter = dialog.find('.dialog__actions');\n }\n\n if (angular.isUndefined(dialogHeader))\n {\n return;\n }\n\n var heightToCheck = 60 + dialogHeader.outerHeight() + dialogContent.outerHeight() + dialogFooter.outerHeight();\n\n if (dialogHeight === heightToCheck && windowHeight === $window.innerHeight)\n {\n return;\n }\n\n dialogHeight = heightToCheck;\n windowHeight = $window.innerHeight;\n\n if (heightToCheck >= $window.innerHeight)\n {\n dialog.addClass('dialog--is-fixed');\n\n dialogScrollable\n .css(\n {\n top: dialogHeader.outerHeight(),\n bottom: dialogFooter.outerHeight()\n })\n .off('scroll', checkScrollEnd)\n .on('scroll', checkScrollEnd);\n }\n else\n {\n dialog.removeClass('dialog--is-fixed');\n\n dialogScrollable\n .removeAttr('style')\n .off('scroll', checkScrollEnd);\n }\n }\n\n function checkDialogHeightOnResize()\n {\n if (resizeDebounce)\n {\n $timeout.cancel(resizeDebounce);\n }\n\n resizeDebounce = $timeout(function()\n {\n checkDialogHeight();\n }, 200);\n }\n\n function checkScrollEnd()\n {\n if (dialogScrollable.scrollTop() + dialogScrollable.innerHeight() >= dialogScrollable[0].scrollHeight)\n {\n $rootScope.$broadcast('lx-dialog__scroll-end', lxDialog.id);\n\n dialogScrollable.off('scroll', checkScrollEnd);\n\n $timeout(function()\n {\n dialogScrollable.on('scroll', checkScrollEnd);\n }, 500);\n }\n }\n\n function onKeyUp(_event)\n {\n if (_event.keyCode == 27)\n {\n close(true);\n }\n\n _event.stopPropagation();\n }\n\n function open(_params)\n {\n if (lxDialog.isOpen)\n {\n return;\n }\n\n LxDepthService.register();\n\n angular.element('body').addClass('no-scroll-dialog-' + lxDialog.uuid);\n\n dialogFilter\n .css('z-index', LxDepthService.getDepth())\n .appendTo('body');\n\n if (lxDialog.autoClose)\n {\n dialogFilter.on('click', function()\n {\n close(true);\n });\n }\n\n if (lxDialog.escapeClose)\n {\n idEventScheduler = LxEventSchedulerService.register('keyup', onKeyUp);\n }\n\n $element\n .css('z-index', LxDepthService.getDepth() + 1)\n .appendTo('body')\n .show();\n\n $timeout(function()\n {\n $rootScope.$broadcast('lx-dialog__open-start', lxDialog.id, _params);\n\n lxDialog.isOpen = true;\n\n dialogFilter.addClass('dialog-filter--is-shown');\n $element.addClass('dialog--is-shown');\n }, 100);\n\n $timeout(function()\n {\n if ($element.find('.dialog__scrollable').length === 0)\n {\n $element.find('.dialog__content').wrap(angular.element('
    ',\n {\n class: 'dialog__scrollable'\n }));\n }\n\n dialogScrollable = $element.find('.dialog__scrollable');\n }, 200);\n\n $timeout(function()\n {\n $rootScope.$broadcast('lx-dialog__open-end', lxDialog.id, _params);\n }, 700);\n\n dialogInterval = $interval(function()\n {\n checkDialogHeight();\n }, 500);\n\n angular.element($window).on('resize', checkDialogHeightOnResize);\n }\n\n function close(_canceled, _params)\n {\n if (!lxDialog.isOpen)\n {\n return;\n }\n\n _params = _params || {};\n\n if (angular.isDefined(idEventScheduler))\n {\n LxEventSchedulerService.unregister(idEventScheduler);\n idEventScheduler = undefined;\n }\n\n angular.element($window).off('resize', checkDialogHeightOnResize);\n $element.find('.dialog__scrollable').off('scroll', checkScrollEnd);\n\n $rootScope.$broadcast('lx-dialog__close-start', lxDialog.id, _canceled, _params);\n\n if (resizeDebounce)\n {\n $timeout.cancel(resizeDebounce);\n }\n\n $interval.cancel(dialogInterval);\n\n dialogFilter.removeClass('dialog-filter--is-shown');\n $element.removeClass('dialog--is-shown');\n\n $timeout(function()\n {\n angular.element('body').removeClass('no-scroll-dialog-' + lxDialog.uuid);\n\n dialogFilter.remove();\n\n $element\n .hide()\n .removeClass('dialog--is-fixed')\n .appendTo(elementParent);\n\n lxDialog.isOpen = false;\n dialogHeight = undefined;\n $rootScope.$broadcast('lx-dialog__close-end', lxDialog.id, _canceled, _params);\n }, 600);\n }\n }\n\n function lxDialogHeader()\n {\n return {\n restrict: 'E',\n template: '
    ',\n replace: true,\n transclude: true\n };\n }\n\n function lxDialogContent()\n {\n return {\n restrict: 'E',\n template: '
    ',\n replace: true,\n transclude: true\n };\n }\n\n function lxDialogFooter()\n {\n return {\n restrict: 'E',\n template: '
    ',\n replace: true,\n transclude: true\n };\n }\n\n lxDialogClose.$inject = ['LxDialogService'];\n\n function lxDialogClose(LxDialogService)\n {\n return {\n restrict: 'A',\n link: function(scope, element)\n {\n element.on('click', function()\n {\n LxDialogService.close(element.parents('.dialog').attr('id'), true);\n });\n\n scope.$on('$destroy', function()\n {\n element.off();\n });\n }\n };\n }\n})();\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.dialog')\n .service('LxDialogService', LxDialogService);\n\n LxDialogService.$inject = ['$rootScope'];\n\n function LxDialogService($rootScope)\n {\n var service = this;\n\n service.open = open;\n service.close = close;\n\n ////////////\n\n function open(_dialogId, _params)\n {\n $rootScope.$broadcast('lx-dialog__open', _dialogId, _params);\n }\n\n function close(_dialogId, _canceled, _params)\n {\n $rootScope.$broadcast('lx-dialog__close', _dialogId, _canceled, _params);\n }\n }\n})();\n","import { CSS_PREFIX, ESCAPE_KEY_CODE } from '@lumx/core/js/constants';\n\nimport template from '../views/dropdown.html';\n\n/////////////////////////////\n\nfunction DropdownController(\n $document,\n $rootScope,\n $scope,\n $timeout,\n $window,\n LxDepthService,\n LxDropdownService,\n LxEventSchedulerService,\n LxUtilsService,\n) {\n 'ngInject';\n\n // eslint-disable-next-line consistent-this\n const lx = this;\n\n /////////////////////////////\n // //\n // Private attributes //\n // //\n /////////////////////////////\n\n /**\n * Offset from the edge of the view port if dropdown is higher.\n *\n * @type {number}\n * @constant\n * @readonly\n */\n const _OFFSET_FROM_EDGE = 16;\n\n /**\n * The event scheduler id.\n *\n * @type {string}\n */\n // eslint-disable-next-line one-var\n let _idEventScheduler;\n\n /**\n * The menu element.\n *\n * @type {element}\n */\n // eslint-disable-next-line one-var\n let _menuEl;\n\n /**\n * The source element.\n *\n * @type {element}\n */\n // eslint-disable-next-line one-var\n let _sourceEl;\n\n /**\n * The toggle element.\n *\n * @type {element}\n */\n // eslint-disable-next-line one-var\n let _toggleEl;\n\n /////////////////////////////\n // //\n // Public attributes //\n // //\n /////////////////////////////\n\n /**\n * Whether the directive has toggle slot filled or not.\n *\n * @type {boolean}\n */\n lx.hasToggle = false;\n\n /**\n * Whether the dropdown is open or not.\n *\n * @type {boolean}\n */\n lx.isOpen = false;\n\n /**\n * The dropdown uuid.\n *\n * @type {string}\n */\n lx.uuid = LxUtilsService.generateUUID();\n\n /////////////////////////////\n // //\n // Private functions //\n // //\n /////////////////////////////\n\n /**\n * Close dropdown on document click/keydown/keypress.\n *\n * @param {Event} evt The click/keydown/keypress event.\n */\n function _onDocumentEvent(evt) {\n if (angular.isDefined(lx.escapeClose) && !lx.escapeClose) {\n return;\n }\n\n evt.stopPropagation();\n\n LxDropdownService.closeLastDropdown();\n }\n\n /**\n * Stop event propagation on menu click.\n *\n * @param {Event} evt The click event.\n */\n function _stopMenuPropagation(evt) {\n if (evt.keyCode === ESCAPE_KEY_CODE) {\n return;\n }\n\n evt.stopPropagation();\n }\n\n /**\n * Check if user has scrolled to the end of the dropdown.\n */\n function _checkScrollEnd() {\n if (_menuEl.scrollTop() + _menuEl.innerHeight() >= _menuEl[0].scrollHeight) {\n $rootScope.$broadcast('lx-dropdown__scroll-end', lx.uuid);\n }\n }\n\n /**\n * Close dropdown.\n */\n function _close() {\n lx.isOpen = false;\n\n LxDropdownService.unregisterDropdownId(lx.uuid);\n\n LxUtilsService.restoreBodyScroll();\n\n $timeout(() => {\n _menuEl\n .removeAttr('style')\n .hide()\n .off('scroll', _checkScrollEnd)\n .insertAfter(_toggleEl);\n\n if (angular.isDefined(lx.closeOnClick) && !lx.closeOnClick) {\n _menuEl.off('click keydown keypress', _stopMenuPropagation);\n }\n\n LxEventSchedulerService.unregister(_idEventScheduler);\n _idEventScheduler = undefined;\n\n if (angular.isDefined(_sourceEl)) {\n _sourceEl.focus();\n }\n });\n }\n\n /**\n * Get available height.\n *\n * @return {Object} Available height on top / bottom.\n */\n function _getAvailableHeight() {\n const availaibleHeight = {};\n const toggleProps = {\n height: _toggleEl.outerHeight(),\n top: _toggleEl.offset().top - angular.element($window).scrollTop(),\n };\n const windowProps = {\n height: $window.innerHeight,\n };\n\n if (lx.overToggle) {\n availaibleHeight.above = toggleProps.top;\n availaibleHeight.below = windowProps.height - toggleProps.top;\n } else {\n availaibleHeight.above = toggleProps.top;\n availaibleHeight.below = windowProps.height - (toggleProps.top + toggleProps.height);\n }\n\n return availaibleHeight;\n }\n\n /**\n * Initialize horizontal position.\n */\n function _initHorizontalPosition() {\n const menuProps = {};\n const toggleProps = {\n height: _toggleEl.outerHeight(),\n left: _toggleEl.offset().left,\n width: _toggleEl.outerWidth(),\n };\n const windowProps = {\n height: $window.innerHeight,\n width: $window.innerWidth,\n };\n\n if (angular.isDefined(lx.width)) {\n if (lx.width.indexOf('%') > -1) {\n // eslint-disable-next-line no-magic-numbers\n menuProps.minWidth = toggleProps.width * (lx.width.slice(0, -1) / 100);\n } else {\n menuProps.width = lx.width;\n }\n } else {\n menuProps.width = 'auto';\n }\n\n if (!lx.position || lx.position === 'left') {\n menuProps.left = toggleProps.left;\n menuProps.right = 'auto';\n } else if (lx.position === 'right') {\n menuProps.left = 'auto';\n menuProps.right = windowProps.width - toggleProps.width - toggleProps.left;\n }\n\n _menuEl.css({\n left: menuProps.left,\n right: menuProps.right,\n });\n\n if (angular.isDefined(menuProps.minWidth)) {\n _menuEl.css({\n minWidth: menuProps.minWidth,\n });\n } else {\n _menuEl.css({\n width: menuProps.width,\n });\n }\n }\n\n /**\n * Initialize vertical position.\n */\n function _initVerticalPosition() {\n const availaibleHeight = _getAvailableHeight();\n const menuProps = {};\n const windowProps = {\n height: $window.innerHeight,\n };\n\n if (availaibleHeight.below > availaibleHeight.above) {\n if (lx.overToggle) {\n menuProps.top = availaibleHeight.above;\n menuProps.maxHeight = availaibleHeight.below;\n } else {\n // eslint-disable-next-line no-bitwise\n menuProps.top = availaibleHeight.above + _toggleEl.outerHeight() + ~~lx.offset;\n menuProps.maxHeight = availaibleHeight.below;\n }\n } else if (lx.overToggle) {\n menuProps.bottom = windowProps.height - availaibleHeight.above - _toggleEl.outerHeight();\n menuProps.maxHeight = availaibleHeight.above + _toggleEl.outerHeight();\n } else {\n // eslint-disable-next-line no-bitwise\n menuProps.bottom = windowProps.height - availaibleHeight.above + ~~lx.offset;\n menuProps.maxHeight = availaibleHeight.above;\n }\n\n menuProps.maxHeight -= _OFFSET_FROM_EDGE;\n\n _menuEl.css(menuProps);\n }\n\n /**\n * Open dropdown.\n */\n function _open() {\n LxDropdownService.closeLastDropdown(true);\n LxDropdownService.registerDropdownId(lx.uuid);\n\n LxDepthService.increase();\n\n _menuEl\n .appendTo('body')\n .show()\n .css({ position: 'fixed', zIndex: LxDepthService.get() });\n\n $timeout(() => {\n _initHorizontalPosition();\n _initVerticalPosition();\n\n lx.isOpen = true;\n\n LxUtilsService.disableBodyScroll();\n\n _menuEl.on('scroll', _checkScrollEnd);\n\n if (angular.isDefined(lx.closeOnClick) && !lx.closeOnClick) {\n _menuEl.on('click keydown keypress', _stopMenuPropagation);\n }\n\n _idEventScheduler = LxEventSchedulerService.register('click keydown keypress', _onDocumentEvent);\n });\n }\n\n /**\n * Register the source element that triggered the dropdown.\n *\n * @param {element} sourceEl The source element that triggered the dropdown.\n */\n function _registerSource(sourceEl) {\n _sourceEl = sourceEl;\n }\n\n /////////////////////////////\n // //\n // Public functions //\n // //\n /////////////////////////////\n\n /**\n * Register menu.\n *\n * @param {element} menuEl The menu element.\n */\n function registerMenu(menuEl) {\n _menuEl = menuEl;\n _menuEl.hide();\n }\n\n /**\n * Register toggle.\n *\n * @param {element} toggleEl The toggle element.\n */\n function registerToggle(toggleEl) {\n _toggleEl = toggleEl;\n }\n\n /**\n * Toggle the dropdown on toggle click.\n *\n * @param {Event} evt The click event.\n */\n function toggle(evt) {\n if (angular.isDefined(evt.target)) {\n _registerSource(angular.element(evt.target));\n }\n\n if (lx.isOpen) {\n LxDropdownService.close(lx.uuid);\n } else {\n _open();\n }\n }\n\n /////////////////////////////\n\n lx.registerMenu = registerMenu;\n lx.registerToggle = registerToggle;\n lx.toggle = toggle;\n\n /////////////////////////////\n // //\n // Events //\n // //\n /////////////////////////////\n\n /**\n * Open a given dropdown.\n *\n * @param {Event} evt The dropdown open event.\n * @param {string} dropdownId The dropdown identifier.\n * @param {Object} params An optional object that holds extra parameters.\n */\n $scope.$on('lx-dropdown__open', (evt, dropdownId, params) => {\n if (dropdownId === lx.uuid && !lx.isOpen) {\n let toggleEl;\n\n if (angular.isElement(params)) {\n toggleEl = params;\n } else if (angular.isString(params)) {\n toggleEl = angular.element(params);\n } else if (angular.isObject(params)) {\n toggleEl = angular.element(params.target);\n }\n\n registerToggle(toggleEl);\n\n if (angular.isObject(params) && angular.isDefined(params.source)) {\n _registerSource(angular.element(params.source));\n } else {\n _registerSource(toggleEl);\n }\n\n _open();\n }\n });\n\n /**\n * Close a given dropdown.\n *\n * @param {Event} evt The dropdown open event.\n * @param {Object} dropdownId The dropdown identifier.\n * @param {boolean} onOpen Whether the order has been asked on dropdown open or not.\n */\n $scope.$on('lx-dropdown__close', (evt, dropdownId, onOpen) => {\n if (dropdownId === lx.uuid && lx.isOpen) {\n if (onOpen && angular.isDefined(lx.closeOnClick) && !lx.closeOnClick) {\n return;\n }\n\n _close();\n }\n });\n\n /**\n * Update the active dropdown position.\n */\n $scope.$on('lx-dropdown__update', () => {\n if (LxDropdownService.isOpen(lx.uuid)) {\n _initHorizontalPosition();\n _initVerticalPosition();\n }\n });\n\n /**\n * Close on destroy.\n */\n $scope.$on('$destroy', () => {\n if (!lx.isOpen) {\n return;\n }\n\n _close();\n });\n}\n\n/////////////////////////////\n\nfunction DropdownDirective() {\n 'ngInject';\n\n function link(scope, el, attrs, ctrl, transclude) {\n ctrl.registerToggle(el.find(`.${CSS_PREFIX}-dropdown__toggle`));\n ctrl.registerMenu(el.find(`.${CSS_PREFIX}-dropdown__menu`));\n\n if (transclude.isSlotFilled('toggle')) {\n ctrl.hasToggle = true;\n }\n\n attrs.$observe('id', (id) => {\n ctrl.uuid = id;\n });\n }\n\n return {\n bindToController: true,\n controller: DropdownController,\n controllerAs: 'lx',\n link,\n replace: true,\n restrict: 'E',\n scope: {\n closeOnClick: '=?lxCloseOnClick',\n escapeClose: '=?lxEscapeClose',\n offset: '@?lxOffset',\n overToggle: '=?lxOverToggle',\n position: '@?lxPosition',\n width: '@?lxWidth',\n },\n template,\n transclude: {\n menu: 'lxDropdownMenu',\n toggle: '?lxDropdownToggle',\n },\n };\n}\n\n/////////////////////////////\n\nangular.module('lumx.dropdown').directive('lxDropdown', DropdownDirective);\n\n/////////////////////////////\n\nexport { DropdownDirective };\n","function DropdownService($rootScope) {\n 'ngInject';\n\n const service = this;\n\n /////////////////////////////\n // //\n // Private attributes //\n // //\n /////////////////////////////\n\n /**\n * The active dropdown identifier.\n *\n * @type {string}\n */\n const _activeDropdownIds = [];\n\n /////////////////////////////\n // //\n // Public functions //\n // //\n /////////////////////////////\n\n /**\n * Close a given dropdown.\n *\n * @param {string} dropdownId The dropdown identifier.\n * @param {boolean} onOpen Whether the order has been asked on dropdown open or not.\n */\n function closeDropdown(dropdownId, onOpen) {\n $rootScope.$broadcast('lx-dropdown__close', dropdownId, onOpen);\n }\n\n /**\n * Close the last opened dropdown.\n *\n * @param {boolean} onOpen Whether the order has been asked on dropdown open or not.\n */\n function closeLastDropdown(onOpen) {\n if (_activeDropdownIds.length > 0) {\n closeDropdown(_activeDropdownIds[_activeDropdownIds.length - 1], onOpen);\n }\n }\n\n /**\n * Get last dropdown id.\n *\n * @return {string} The last dropdown id.\n */\n function getLastDropdownId() {\n return _activeDropdownIds[_activeDropdownIds.length - 1];\n }\n\n /**\n * Check if a given dropdown is open.\n *\n * @param {string} dropdownId The dropdown identifier.\n * @return {boolean} Whether the given dropdown is open or not.\n */\n function isOpen(dropdownId) {\n return _activeDropdownIds.includes(dropdownId);\n }\n\n /**\n * Open a given dropdown.\n *\n * @param {string} dropdownId The dropdown identifier.\n * @param {Object} params An optional object that holds extra parameters.\n */\n function openDropdown(dropdownId, params) {\n $rootScope.$broadcast('lx-dropdown__open', dropdownId, params);\n }\n\n /**\n * Register the given dropdown identifier.\n *\n * @param {string} dropdownId The dropdown identifier.\n */\n function registerDropdownId(dropdownId) {\n _activeDropdownIds.push(dropdownId);\n }\n\n /**\n * Unegister the given dropdown identifier.\n *\n * @param {string} dropdownId The dropdown identifier.\n */\n function unregisterDropdownId(dropdownId) {\n _activeDropdownIds.splice(_activeDropdownIds.indexOf(dropdownId), 1);\n }\n\n /**\n * Update the active dropdown position.\n */\n function updateActiveDropdownPosition() {\n $rootScope.$broadcast('lx-dropdown__update');\n }\n\n /////////////////////////////\n\n service.close = closeDropdown;\n service.closeLastDropdown = closeLastDropdown;\n service.getLastDropdownId = getLastDropdownId;\n service.isOpen = isOpen;\n service.open = openDropdown;\n service.registerDropdownId = registerDropdownId;\n service.unregisterDropdownId = unregisterDropdownId;\n service.updateActiveDropdownPosition = updateActiveDropdownPosition;\n}\n\n/////////////////////////////\n\nangular.module('lumx.dropdown').service('LxDropdownService', DropdownService);\n\n/////////////////////////////\n\nexport { DropdownService };\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.fab')\n .directive('lxFab', lxFab)\n .directive('lxFabTrigger', lxFabTrigger)\n .directive('lxFabActions', lxFabActions);\n\n function lxFab()\n {\n return {\n restrict: 'E',\n templateUrl: 'fab.html',\n scope: true,\n link: link,\n controller: LxFabController,\n controllerAs: 'lxFab',\n bindToController: true,\n transclude: true,\n replace: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n attrs.$observe('lxDirection', function(newDirection)\n {\n ctrl.setFabDirection(newDirection);\n });\n\n attrs.$observe('lxTriggerOnClick', function(isTriggeredOnClick)\n {\n ctrl.setFabTriggerMethod(scope.$eval(isTriggeredOnClick));\n });\n }\n }\n\n function LxFabController()\n {\n var lxFab = this;\n\n lxFab.setFabDirection = setFabDirection;\n lxFab.setFabTriggerMethod = setFabTriggerMethod;\n lxFab.toggleState = toggleState;\n\n lxFab.isOpen = false;\n\n ////////////\n\n function setFabDirection(_direction)\n {\n lxFab.lxDirection = _direction;\n }\n\n function setFabTriggerMethod(_isTriggeredOnClick)\n {\n lxFab.lxTriggerOnClick = _isTriggeredOnClick;\n }\n\n function toggleState()\n {\n if (lxFab.lxTriggerOnClick)\n {\n lxFab.isOpen = !lxFab.isOpen;\n }\n }\n }\n\n function lxFabTrigger()\n {\n return {\n restrict: 'E',\n require: '^lxFab',\n templateUrl: 'fab-trigger.html',\n transclude: true,\n replace: true\n };\n }\n\n function lxFabActions()\n {\n return {\n restrict: 'E',\n require: '^lxFab',\n templateUrl: 'fab-actions.html',\n link: link,\n transclude: true,\n replace: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n scope.parentCtrl = ctrl;\n }\n }\n})();\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.file-input')\n .directive('lxFileInput', lxFileInput);\n\n function lxFileInput()\n {\n return {\n restrict: 'E',\n templateUrl: 'file-input.html',\n scope:\n {\n label: '@lxLabel',\n accept: '@lxAccept',\n callback: '&?lxCallback'\n },\n link: link,\n controller: LxFileInputController,\n controllerAs: 'lxFileInput',\n bindToController: true,\n replace: true\n };\n\n function link(scope, element, attrs, ctrl)\n {\n var input = element.find('input');\n\n input\n .on('change', ctrl.updateModel)\n .on('blur', function()\n {\n element.removeClass('input-file--is-focus');\n });\n\n scope.$on('$destroy', function()\n {\n input.off();\n });\n }\n }\n\n LxFileInputController.$inject = ['$element', '$scope', '$timeout'];\n\n function LxFileInputController($element, $scope, $timeout)\n {\n var lxFileInput = this;\n var input = $element.find('input');\n var timer;\n\n lxFileInput.updateModel = updateModel;\n\n $scope.$on('$destroy', function()\n {\n $timeout.cancel(timer);\n });\n\n ////////////\n\n function setFileName()\n {\n if (input.val())\n {\n lxFileInput.fileName = input.val().replace(/C:\\\\fakepath\\\\/i, '');\n\n $element.addClass('input-file--is-focus');\n $element.addClass('input-file--is-active');\n }\n else\n {\n lxFileInput.fileName = undefined;\n\n $element.removeClass('input-file--is-active');\n }\n\n input.val(undefined);\n }\n\n function updateModel()\n {\n if (angular.isDefined(lxFileInput.callback))\n {\n lxFileInput.callback(\n {\n newFile: input[0].files[0]\n });\n }\n\n timer = $timeout(setFileName);\n }\n }\n})();","import { CSS_PREFIX } from '@lumx/core/js/constants';\n\nimport template from '../views/icon.html';\n\n/////////////////////////////\n\nfunction IconDirective() {\n 'ngInject';\n\n function link(scope, el, attrs) {\n attrs.$observe('lxPath', (path) => {\n el.addClass(`${CSS_PREFIX}-icon--path`);\n el.find('path').attr('d', path);\n });\n\n attrs.$observe('lxId', (font) => {\n el.addClass(`${CSS_PREFIX}-icon--font mdi mdi-${font}`);\n });\n\n attrs.$observe('lxColor', (color) => {\n if (!color) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*icon--color-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-icon--color-${color}`);\n });\n\n attrs.$observe('lxColorVariant', (colorVariant) => {\n if (!colorVariant) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*icon--color-variant-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-icon--color-variant-${colorVariant}`);\n });\n\n attrs.$observe('lxSize', (size) => {\n if (!size) {\n return;\n }\n\n el.removeClass((index, className) => {\n return (className.match(/(?:\\S|-)*icon--size-\\S+/g) || []).join(' ');\n }).addClass(`${CSS_PREFIX}-icon--size-${size}`);\n });\n }\n\n return {\n link,\n replace: true,\n restrict: 'E',\n template,\n };\n}\n\n/////////////////////////////\n\nangular.module('lumx.icon').directive('lxIcon', IconDirective);\n\n/////////////////////////////\n\nexport { IconDirective };\n","import { CSS_PREFIX, DOWN_KEY_CODE, TAB_KEY_CODE, UP_KEY_CODE } from '@lumx/core/js/constants';\n\nimport template from '../views/list.html';\n\n/////////////////////////////\n\nfunction ListController($element, $scope) {\n 'ngInject';\n\n // eslint-disable-next-line consistent-this, no-unused-vars\n const lx = this;\n\n /////////////////////////////\n // //\n // Public attributes //\n // //\n /////////////////////////////\n\n /**\n * The active item index useful when navigating with keybord arrow keys.\n *\n * @type {number}\n */\n lx.activeItemIndex = -1;\n\n /////////////////////////////\n // //\n // Private functions //\n // //\n /////////////////////////////\n\n /**\n * Increase active choice index on key down press.\n */\n function _nextItemOnKeyDown() {\n let nextItem = $element.find(`.${CSS_PREFIX}-list-item`).eq(lx.activeItemIndex + 1);\n\n if (nextItem.length === 0) {\n lx.activeItemIndex = 0;\n\n nextItem = $element\n .find(`.${CSS_PREFIX}-list-item`)\n .eq(lx.activeItemIndex)\n .focus();\n } else {\n lx.activeItemIndex++;\n }\n\n nextItem.focus();\n }\n\n /**\n * Decrease active choice index on key up press.\n */\n function _previousItemOnKeyUp() {\n let previousItem = $element.find(`.${CSS_PREFIX}-list-item`).eq(lx.activeItemIndex - 1);\n\n if (previousItem.length === 0) {\n lx.activeItemIndex = $element.find(`.${CSS_PREFIX}-list-item`).length - 1;\n\n previousItem = $element\n .find(`.${CSS_PREFIX}-list-item`)\n .eq(lx.activeItemIndex)\n .focus();\n } else {\n lx.activeItemIndex--;\n }\n\n previousItem.focus();\n }\n\n /**\n * Handle key events on list focus.\n *\n * @param {Event} evt The key event.\n */\n function _onKeyPress(evt) {\n if (!lx.isClickable) {\n return;\n }\n\n if (evt.keyCode === DOWN_KEY_CODE) {\n _nextItemOnKeyDown();\n $scope.$apply();\n\n evt.preventDefault();\n evt.stopPropagation();\n } else if (evt.keyCode === UP_KEY_CODE) {\n _previousItemOnKeyUp();\n $scope.$apply();\n\n evt.preventDefault();\n evt.stopPropagation();\n } else if (evt.keyCode === TAB_KEY_CODE) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n }\n\n /**\n * Reset active item index.\n */\n function _resetActiveItemIndex() {\n lx.activeItemIndex = -1;\n }\n\n /////////////////////////////\n // //\n // Events //\n // //\n /////////////////////////////\n\n /**\n * Navigate through items on up and down arrow key press.\n */\n $element.on('keydown keypress', _onKeyPress).on('focus', _resetActiveItemIndex);\n\n /**\n * Unbind event listeners on destroy.\n */\n $scope.$on('$destroy', () => {\n $element.off('keydown keypress', _onKeyPress).off('focus', _resetActiveItemIndex);\n });\n}\n\n/////////////////////////////\n\nfunction ListDirective() {\n return {\n bindToController: true,\n controller: ListController,\n controllerAs: 'lx',\n replace: true,\n restrict: 'E',\n scope: {\n isClickable: '=?lxIsClickable',\n },\n template,\n transclude: true,\n };\n}\n\n/////////////////////////////\n\nangular.module('lumx.list').directive('lxList', ListDirective);\n\n/////////////////////////////\n\nexport { ListDirective };\n","import { CSS_PREFIX } from '@lumx/core/js/constants';\n\n/////////////////////////////\n\nfunction ListDividerDirective() {\n 'ngInject';\n\n return {\n replace: true,\n restrict: 'E',\n template: `
  • `,\n };\n}\n\n/////////////////////////////\n\nangular.module('lumx.list').directive('lxListDivider', ListDividerDirective);\n\n/////////////////////////////\n\nexport { ListDividerDirective };\n","import { CSS_PREFIX } from '@lumx/core/js/constants';\n\nimport template from '../views/list-item.html';\n\n/////////////////////////////\n\nfunction ListItemController($element, $scope) {\n 'ngInject';\n\n // eslint-disable-next-line consistent-this\n const lx = this;\n\n /////////////////////////////\n // //\n // Public attributes //\n // //\n /////////////////////////////\n\n /**\n * Whether the directive has after slot filled or not.\n *\n * @type {boolean}\n */\n lx.hasAfter = false;\n\n /**\n * Whether the directive has before slot filled or not.\n *\n * @type {boolean}\n */\n lx.hasBefore = false;\n\n /**\n * Whether the directive has content slot filled or not.\n *\n * @type {boolean}\n */\n lx.hasContent = false;\n\n /**\n * The parent controller (list).\n *\n * @type {Object}\n */\n lx.parentController = undefined;\n\n /////////////////////////////\n // //\n // Private functions //\n // //\n /////////////////////////////\n\n /**\n * Register item index as active index to the list.\n */\n function _registerIndex() {\n if (angular.isUndefined(lx.parentController)) {\n return;\n }\n\n lx.parentController.activeItemIndex = $element.index(`.${CSS_PREFIX}-list-item`);\n }\n\n /////////////////////////////\n // //\n // Events //\n // //\n /////////////////////////////\n\n /**\n * Register item index as active index to the list on focus.\n */\n $element.on('focus', _registerIndex);\n\n /**\n * Unbind event listener on destroy.\n */\n $scope.$on('$destroy', () => {\n $element.off('focus', _registerIndex);\n });\n}\n\n/////////////////////////////\n\nfunction ListItemDirective() {\n 'ngInject';\n\n function link(scope, el, attrs, ctrls, transclude) {\n if (transclude.isSlotFilled('before')) {\n ctrls[0].hasBefore = true;\n }\n\n if (transclude.isSlotFilled('content')) {\n ctrls[0].hasContent = true;\n }\n\n if (transclude.isSlotFilled('after')) {\n ctrls[0].hasAfter = true;\n }\n\n if (angular.isDefined(ctrls[1]) && ctrls[1]) {\n // eslint-disable-next-line prefer-destructuring\n ctrls[0].parentController = ctrls[1];\n }\n }\n\n return {\n bindToController: true,\n controller: ListItemController,\n controllerAs: 'lx',\n link,\n replace: true,\n require: ['lxListItem', '?^lxList'],\n restrict: 'E',\n scope: {\n isSelected: '=?lxIsSelected',\n size: '@?lxSize',\n },\n template,\n transclude: {\n after: '?lxListItemAfter',\n before: '?lxListItemBefore',\n content: '?lxListItemContent',\n },\n };\n}\n\n/////////////////////////////\n\nangular.module('lumx.list').directive('lxListItem', ListItemDirective);\n\n/////////////////////////////\n\nexport { ListItemDirective };\n","import { CSS_PREFIX } from '@lumx/core/js/constants';\n\n/////////////////////////////\n\nfunction ListSubheaderDirective() {\n 'ngInject';\n\n return {\n replace: true,\n restrict: 'E',\n template: `
  • `,\n transclude: true,\n };\n}\n\n/////////////////////////////\n\nangular.module('lumx.list').directive('lxListSubheader', ListSubheaderDirective);\n\n/////////////////////////////\n\nexport { ListSubheaderDirective };\n","(function()\n{\n 'use strict';\n\n angular\n .module('lumx.notification')\n .service('LxNotificationService', LxNotificationService);\n\n LxNotificationService.$inject = ['$injector', '$rootScope', '$timeout', 'LxDepthService', 'LxEventSchedulerService'];\n\n function LxNotificationService($injector, $rootScope, $timeout, LxDepthService, LxEventSchedulerService)\n {\n var service = this;\n var dialogFilter;\n var dialog;\n var idEventScheduler;\n var notificationList = [];\n var actionClicked = false;\n\n service.alert = showAlertDialog;\n service.confirm = showConfirmDialog;\n service.error = notifyError;\n service.info = notifyInfo;\n service.notify = notify;\n service.success = notifySuccess;\n service.warning = notifyWarning;\n service.getNotificationList = getNotificationList;\n service.reComputeElementsPosition = reComputeElementsPosition;\n service.deleteNotification = deleteNotification;\n service.buildNotification = buildNotification;\n\n ////////////\n\n //\n // NOTIFICATION\n //\n\n function getElementHeight(_elem)\n {\n return parseFloat(window.getComputedStyle(_elem, null).height);\n }\n\n function moveNotificationUp()\n {\n var newNotifIndex = notificationList.length - 1;\n notificationList[newNotifIndex].height = getElementHeight(notificationList[newNotifIndex].elem[0]);\n\n var upOffset = 0;\n\n for (var idx = newNotifIndex; idx >= 0; idx--)\n {\n if (notificationList.length > 1 && idx !== newNotifIndex)\n {\n upOffset = 24 + notificationList[newNotifIndex].height;\n\n notificationList[idx].margin += upOffset;\n notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px');\n }\n }\n }\n\n function deleteNotification(_notification, _callback)\n {\n _callback = (!angular.isFunction(_callback)) ? angular.noop : _callback;\n\n var notifIndex = notificationList.indexOf(_notification);\n\n var dnOffset = angular.isDefined(notificationList[notifIndex]) ? 24 + notificationList[notifIndex].height : 24;\n\n for (var idx = 0; idx < notifIndex; idx++)\n {\n if (notificationList.length > 1)\n {\n notificationList[idx].margin -= dnOffset;\n notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px');\n }\n }\n\n _notification.elem.removeClass('notification--is-shown');\n\n $timeout(function()\n {\n _notification.elem.remove();\n\n // Find index again because notificationList may have changed\n notifIndex = notificationList.indexOf(_notification);\n\n if (notifIndex != -1)\n {\n notificationList.splice(notifIndex, 1);\n }\n\n _callback(actionClicked);\n actionClicked = false;\n }, 400);\n }\n\n /**\n * Compute the notification list element new position.\n * Usefull when the height change programmatically and you need other notifications to fit.\n */\n function reComputeElementsPosition()\n {\n var baseOffset = 0;\n\n for (var idx = notificationList.length -1; idx >= 0; idx--)\n {\n notificationList[idx].height = getElementHeight(notificationList[idx].elem[0]);\n notificationList[idx].margin = baseOffset;\n\n notificationList[idx].elem.css('marginBottom', notificationList[idx].margin + 'px');\n\n baseOffset += notificationList[idx].height + 24;\n }\n }\n\n function buildNotification(_text, _icon, _color, _action)\n {\n var notification = angular.element('
    ',\n {\n class: 'notification'\n });\n var notificationText = angular.element('',\n {\n class: 'notification__content',\n html: _text\n });\n\n if (angular.isDefined(_icon))\n {\n var notificationIcon = angular.element('',\n {\n class: 'notification__icon mdi mdi-' + _icon\n });\n\n notification\n .addClass('notification--has-icon')\n .append(notificationIcon);\n }\n\n if (angular.isDefined(_color))\n {\n notification.addClass('notification--' + _color);\n }\n\n notification.append(notificationText);\n\n if (angular.isDefined(_action))\n {\n var $compile = $injector.get('$compile');\n var notificationAction = angular.element('