@leanix/components 0.2.229 → 0.2.230
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2020/index.mjs +119 -0
- package/esm2020/leanix-components.mjs +5 -0
- package/esm2020/lib/core-ui/annotations/required.mjs +33 -0
- package/esm2020/lib/core-ui/components/badge/badge.component.mjs +25 -0
- package/esm2020/lib/core-ui/components/button/button.component.mjs +72 -0
- package/esm2020/lib/core-ui/components/button-group/button-group.component.mjs +28 -0
- package/esm2020/lib/core-ui/components/card/card.component.mjs +19 -0
- package/esm2020/lib/core-ui/components/collapsible/collapsible.component.mjs +53 -0
- package/esm2020/lib/core-ui/components/colored-label/colored-label.component.mjs +34 -0
- package/esm2020/lib/core-ui/components/ellipsis/ellipsis.component.mjs +70 -0
- package/esm2020/lib/core-ui/components/icon-scale/icon-scale.component.mjs +40 -0
- package/esm2020/lib/core-ui/components/spinner/spinner.component.mjs +26 -0
- package/esm2020/lib/core-ui/components/table/table-header/table-header.component.mjs +55 -0
- package/esm2020/lib/core-ui/components/table/table.component.mjs +69 -0
- package/esm2020/lib/core-ui/components/tiny-spinner/tiny-spinner.component.mjs +11 -0
- package/esm2020/lib/core-ui/core-ui.constants.mjs +13 -0
- package/esm2020/lib/core-ui/core-ui.module.mjs +177 -0
- package/esm2020/lib/core-ui/directives/after-view-init.directive.mjs +30 -0
- package/esm2020/lib/core-ui/directives/autoclose-group.service.mjs +38 -0
- package/esm2020/lib/core-ui/directives/autoclose.directive.mjs +40 -0
- package/esm2020/lib/core-ui/directives/autofocus.directive.mjs +27 -0
- package/esm2020/lib/core-ui/directives/html.directive.mjs +29 -0
- package/esm2020/lib/core-ui/functions/core-css.helpers.mjs +35 -0
- package/esm2020/lib/core-ui/pipes/br.pipe.mjs +23 -0
- package/esm2020/lib/core-ui/pipes/contrast-color.pipe.mjs +20 -0
- package/esm2020/lib/core-ui/pipes/custom-date.pipe.mjs +27 -0
- package/esm2020/lib/core-ui/pipes/highlight-range.pipe.mjs +21 -0
- package/esm2020/lib/core-ui/pipes/highlight-term.pipe.mjs +38 -0
- package/esm2020/lib/core-ui/pipes/lx-is-uuid.pipe.mjs +21 -0
- package/esm2020/lib/core-ui/pipes/lx-time-ago.pipe.mjs +25 -0
- package/esm2020/lib/core-ui/pipes/lx-translate.pipe.mjs +45 -0
- package/esm2020/lib/core-ui/pipes/markdown.pipe.mjs +29 -0
- package/esm2020/lib/core-ui/pipes/nbsp.pipe.mjs +14 -0
- package/esm2020/lib/core-ui/pipes/sort.pipe.mjs +52 -0
- package/esm2020/lib/core-ui/pipes/translation-after.pipe.mjs +28 -0
- package/esm2020/lib/core-ui/pipes/translation-before.pipe.mjs +53 -0
- package/esm2020/lib/core-ui/pipes/translation-between.pipe.mjs +67 -0
- package/esm2020/lib/core-ui/pipes/unescape-curly-braces.pipe.mjs +16 -0
- package/esm2020/lib/core-ui/tooltip/to-cdk-position.function.mjs +74 -0
- package/esm2020/lib/core-ui/tooltip/tooltip-position.interface.mjs +7 -0
- package/esm2020/lib/core-ui/tooltip/tooltip.component.mjs +26 -0
- package/esm2020/lib/core-ui/tooltip/tooltip.directive.mjs +102 -0
- package/esm2020/lib/core-ui/tooltip/tooltip.module.mjs +21 -0
- package/esm2020/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.mjs +103 -0
- package/esm2020/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.mjs +33 -0
- package/esm2020/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.mjs +216 -0
- package/esm2020/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.mjs +136 -0
- package/esm2020/lib/forms-ui/components/currency/currency-input.component.mjs +141 -0
- package/esm2020/lib/forms-ui/components/currency/currency-symbol-map.constant.mjs +105 -0
- package/esm2020/lib/forms-ui/components/currency/currency-symbol.component.mjs +25 -0
- package/esm2020/lib/forms-ui/components/date-input/date-input.component.mjs +270 -0
- package/esm2020/lib/forms-ui/components/drag-and-drop-list/constants.mjs +5 -0
- package/esm2020/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.mjs +49 -0
- package/esm2020/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.mjs +102 -0
- package/esm2020/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.mjs +25 -0
- package/esm2020/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.mjs +133 -0
- package/esm2020/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.mjs +37 -0
- package/esm2020/lib/forms-ui/components/error-message/error-message.component.mjs +24 -0
- package/esm2020/lib/forms-ui/components/form-error/form-error.component.mjs +40 -0
- package/esm2020/lib/forms-ui/components/icon/icon.component.mjs +44 -0
- package/esm2020/lib/forms-ui/components/input/input.component.mjs +44 -0
- package/esm2020/lib/forms-ui/components/keyboard-select.directive.mjs +116 -0
- package/esm2020/lib/forms-ui/components/multi-select/multi-select.component.mjs +251 -0
- package/esm2020/lib/forms-ui/components/option/option.component.mjs +81 -0
- package/esm2020/lib/forms-ui/components/option-group/option-group.component.mjs +29 -0
- package/esm2020/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.mjs +100 -0
- package/esm2020/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +163 -0
- package/esm2020/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.mjs +92 -0
- package/esm2020/lib/forms-ui/components/picker/picker-trigger.directive.mjs +36 -0
- package/esm2020/lib/forms-ui/components/picker/picker.component.mjs +201 -0
- package/esm2020/lib/forms-ui/components/picker-option/picker-option.component.mjs +118 -0
- package/esm2020/lib/forms-ui/components/pill-item/pill-item.component.mjs +33 -0
- package/esm2020/lib/forms-ui/components/pill-list/pill-list.component.mjs +59 -0
- package/esm2020/lib/forms-ui/components/responsive-input/responsive-input.component.mjs +97 -0
- package/esm2020/lib/forms-ui/components/single-select/single-select.component.mjs +274 -0
- package/esm2020/lib/forms-ui/components/slider-toggle/slider-toggle.component.mjs +42 -0
- package/esm2020/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.mjs +52 -0
- package/esm2020/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.mjs +21 -0
- package/esm2020/lib/forms-ui/directives/form-error.directive.mjs +109 -0
- package/esm2020/lib/forms-ui/directives/form-submit.directive.mjs +28 -0
- package/esm2020/lib/forms-ui/directives/keyboard-action-source.directive.mjs +53 -0
- package/esm2020/lib/forms-ui/directives/mark-invalid.directive.mjs +38 -0
- package/esm2020/lib/forms-ui/directives/select-dropdown.directive.mjs +31 -0
- package/esm2020/lib/forms-ui/directives/selectable-item.directive.mjs +33 -0
- package/esm2020/lib/forms-ui/directives/selected-option.directive.mjs +26 -0
- package/esm2020/lib/forms-ui/forms-ui.module.mjs +236 -0
- package/esm2020/lib/forms-ui/helpers/key-codes.constants.mjs +11 -0
- package/esm2020/lib/forms-ui/helpers/keyboard-navigation.helpers.mjs +38 -0
- package/esm2020/lib/forms-ui/models/base-select.directive.mjs +148 -0
- package/esm2020/lib/forms-ui/models/dropdown-item.interface.mjs +2 -0
- package/esm2020/lib/forms-ui/models/single-select-padding.interface.mjs +2 -0
- package/esm2020/lib/forms-ui/models/sorting.interface.mjs +7 -0
- package/esm2020/lib/forms-ui/pipes/filter-selection.pipe.mjs +30 -0
- package/esm2020/lib/forms-ui/pipes/filter-term.pipe.mjs +26 -0
- package/esm2020/lib/forms-ui/pipes/format-number.pipe.mjs +65 -0
- package/esm2020/lib/forms-ui/validators/date-in-foreseeable-future.validator.mjs +26 -0
- package/esm2020/lib/modal-ui/components/modal/modal.component.mjs +205 -0
- package/esm2020/lib/modal-ui/components/modal-footer/modal-footer.component.mjs +11 -0
- package/esm2020/lib/modal-ui/components/modal-header/modal-header.component.mjs +23 -0
- package/esm2020/lib/modal-ui/directives/modal-content.directive.mjs +13 -0
- package/esm2020/lib/modal-ui/modal.constants.mjs +3 -0
- package/esm2020/lib/modal-ui/modal.module.mjs +26 -0
- package/esm2020/lib/popover-ui/components/popover/popover.component.mjs +199 -0
- package/esm2020/lib/popover-ui/directives/popover-click.directive.mjs +51 -0
- package/esm2020/lib/popover-ui/directives/popover-content.directive.mjs +16 -0
- package/esm2020/lib/popover-ui/directives/popover-hover.directive.mjs +87 -0
- package/esm2020/lib/popover-ui/popover-ui.module.mjs +22 -0
- package/esm2020/lib/shared/date-helpers.mjs +35 -0
- package/esm2020/lib/shared/misc-helpers.mjs +34 -0
- package/esm2020/lib/shared/observe.mjs +40 -0
- package/esm2020/lib/tab-ui/components/tab/tab.component.mjs +70 -0
- package/esm2020/lib/tab-ui/components/tab-group/tab-group.component.mjs +71 -0
- package/esm2020/lib/tab-ui/tab-ui.module.mjs +22 -0
- package/fesm2015/{leanix-components.js → leanix-components.mjs} +436 -633
- package/fesm2015/leanix-components.mjs.map +1 -0
- package/fesm2020/leanix-components.mjs +6207 -0
- package/fesm2020/leanix-components.mjs.map +1 -0
- package/package.json +23 -9
- package/bundles/leanix-components.umd.js +0 -7364
- package/bundles/leanix-components.umd.js.map +0 -1
- package/esm2015/index.js +0 -119
- package/esm2015/index.js.map +0 -1
- package/esm2015/leanix-components.js +0 -5
- package/esm2015/leanix-components.js.map +0 -1
- package/esm2015/lib/core-ui/annotations/required.js +0 -33
- package/esm2015/lib/core-ui/annotations/required.js.map +0 -1
- package/esm2015/lib/core-ui/components/badge/badge.component.js +0 -29
- package/esm2015/lib/core-ui/components/badge/badge.component.js.map +0 -1
- package/esm2015/lib/core-ui/components/button/button.component.js +0 -78
- package/esm2015/lib/core-ui/components/button/button.component.js.map +0 -1
- package/esm2015/lib/core-ui/components/button-group/button-group.component.js +0 -32
- package/esm2015/lib/core-ui/components/button-group/button-group.component.js.map +0 -1
- package/esm2015/lib/core-ui/components/card/card.component.js +0 -23
- package/esm2015/lib/core-ui/components/card/card.component.js.map +0 -1
- package/esm2015/lib/core-ui/components/collapsible/collapsible.component.js +0 -58
- package/esm2015/lib/core-ui/components/collapsible/collapsible.component.js.map +0 -1
- package/esm2015/lib/core-ui/components/colored-label/colored-label.component.js +0 -39
- package/esm2015/lib/core-ui/components/colored-label/colored-label.component.js.map +0 -1
- package/esm2015/lib/core-ui/components/ellipsis/ellipsis.component.js +0 -74
- package/esm2015/lib/core-ui/components/ellipsis/ellipsis.component.js.map +0 -1
- package/esm2015/lib/core-ui/components/icon-scale/icon-scale.component.js +0 -46
- package/esm2015/lib/core-ui/components/icon-scale/icon-scale.component.js.map +0 -1
- package/esm2015/lib/core-ui/components/spinner/spinner.component.js +0 -30
- package/esm2015/lib/core-ui/components/spinner/spinner.component.js.map +0 -1
- package/esm2015/lib/core-ui/components/table/table-header/table-header.component.js +0 -60
- package/esm2015/lib/core-ui/components/table/table-header/table-header.component.js.map +0 -1
- package/esm2015/lib/core-ui/components/table/table.component.js +0 -70
- package/esm2015/lib/core-ui/components/table/table.component.js.map +0 -1
- package/esm2015/lib/core-ui/components/tiny-spinner/tiny-spinner.component.js +0 -14
- package/esm2015/lib/core-ui/components/tiny-spinner/tiny-spinner.component.js.map +0 -1
- package/esm2015/lib/core-ui/core-ui.constants.js +0 -13
- package/esm2015/lib/core-ui/core-ui.constants.js.map +0 -1
- package/esm2015/lib/core-ui/core-ui.module.js +0 -177
- package/esm2015/lib/core-ui/core-ui.module.js.map +0 -1
- package/esm2015/lib/core-ui/directives/after-view-init.directive.js +0 -30
- package/esm2015/lib/core-ui/directives/after-view-init.directive.js.map +0 -1
- package/esm2015/lib/core-ui/directives/autoclose-group.service.js +0 -38
- package/esm2015/lib/core-ui/directives/autoclose-group.service.js.map +0 -1
- package/esm2015/lib/core-ui/directives/autoclose.directive.js +0 -40
- package/esm2015/lib/core-ui/directives/autoclose.directive.js.map +0 -1
- package/esm2015/lib/core-ui/directives/autofocus.directive.js +0 -27
- package/esm2015/lib/core-ui/directives/autofocus.directive.js.map +0 -1
- package/esm2015/lib/core-ui/directives/html.directive.js +0 -30
- package/esm2015/lib/core-ui/directives/html.directive.js.map +0 -1
- package/esm2015/lib/core-ui/functions/core-css.helpers.js +0 -35
- package/esm2015/lib/core-ui/functions/core-css.helpers.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/br.pipe.js +0 -23
- package/esm2015/lib/core-ui/pipes/br.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/contrast-color.pipe.js +0 -20
- package/esm2015/lib/core-ui/pipes/contrast-color.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/custom-date.pipe.js +0 -27
- package/esm2015/lib/core-ui/pipes/custom-date.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/highlight-range.pipe.js +0 -21
- package/esm2015/lib/core-ui/pipes/highlight-range.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/highlight-term.pipe.js +0 -38
- package/esm2015/lib/core-ui/pipes/highlight-term.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/lx-is-uuid.pipe.js +0 -21
- package/esm2015/lib/core-ui/pipes/lx-is-uuid.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/lx-time-ago.pipe.js +0 -25
- package/esm2015/lib/core-ui/pipes/lx-time-ago.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/lx-translate.pipe.js +0 -46
- package/esm2015/lib/core-ui/pipes/lx-translate.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/markdown.pipe.js +0 -29
- package/esm2015/lib/core-ui/pipes/markdown.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/nbsp.pipe.js +0 -14
- package/esm2015/lib/core-ui/pipes/nbsp.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/sort.pipe.js +0 -52
- package/esm2015/lib/core-ui/pipes/sort.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/translation-after.pipe.js +0 -28
- package/esm2015/lib/core-ui/pipes/translation-after.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/translation-before.pipe.js +0 -53
- package/esm2015/lib/core-ui/pipes/translation-before.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/translation-between.pipe.js +0 -67
- package/esm2015/lib/core-ui/pipes/translation-between.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/pipes/unescape-curly-braces.pipe.js +0 -16
- package/esm2015/lib/core-ui/pipes/unescape-curly-braces.pipe.js.map +0 -1
- package/esm2015/lib/core-ui/tooltip/to-cdk-position.function.js +0 -74
- package/esm2015/lib/core-ui/tooltip/to-cdk-position.function.js.map +0 -1
- package/esm2015/lib/core-ui/tooltip/tooltip-position.interface.js +0 -7
- package/esm2015/lib/core-ui/tooltip/tooltip-position.interface.js.map +0 -1
- package/esm2015/lib/core-ui/tooltip/tooltip.component.js +0 -30
- package/esm2015/lib/core-ui/tooltip/tooltip.component.js.map +0 -1
- package/esm2015/lib/core-ui/tooltip/tooltip.directive.js +0 -107
- package/esm2015/lib/core-ui/tooltip/tooltip.directive.js.map +0 -1
- package/esm2015/lib/core-ui/tooltip/tooltip.module.js +0 -21
- package/esm2015/lib/core-ui/tooltip/tooltip.module.js.map +0 -1
- package/esm2015/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.js +0 -108
- package/esm2015/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.js +0 -38
- package/esm2015/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.js +0 -223
- package/esm2015/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.js +0 -140
- package/esm2015/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/currency/currency-input.component.js +0 -147
- package/esm2015/lib/forms-ui/components/currency/currency-input.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/currency/currency-symbol-map.constant.js +0 -105
- package/esm2015/lib/forms-ui/components/currency/currency-symbol-map.constant.js.map +0 -1
- package/esm2015/lib/forms-ui/components/currency/currency-symbol.component.js +0 -28
- package/esm2015/lib/forms-ui/components/currency/currency-symbol.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/date-input/date-input.component.js +0 -276
- package/esm2015/lib/forms-ui/components/date-input/date-input.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/constants.js +0 -5
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/constants.js.map +0 -1
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.js +0 -54
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.js +0 -107
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.js +0 -25
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.js.map +0 -1
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.js +0 -133
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.js +0 -37
- package/esm2015/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/components/error-message/error-message.component.js +0 -29
- package/esm2015/lib/forms-ui/components/error-message/error-message.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/form-error/form-error.component.js +0 -44
- package/esm2015/lib/forms-ui/components/form-error/form-error.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/icon/icon.component.js +0 -49
- package/esm2015/lib/forms-ui/components/icon/icon.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/input/input.component.js +0 -51
- package/esm2015/lib/forms-ui/components/input/input.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/keyboard-select.directive.js +0 -117
- package/esm2015/lib/forms-ui/components/keyboard-select.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/components/multi-select/multi-select.component.js +0 -257
- package/esm2015/lib/forms-ui/components/multi-select/multi-select.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/option/option.component.js +0 -85
- package/esm2015/lib/forms-ui/components/option/option.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/option-group/option-group.component.js +0 -34
- package/esm2015/lib/forms-ui/components/option-group/option-group.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.js +0 -105
- package/esm2015/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/options-dropdown/options-dropdown.component.js +0 -169
- package/esm2015/lib/forms-ui/components/options-dropdown/options-dropdown.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.js +0 -96
- package/esm2015/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/picker/picker-trigger.directive.js +0 -36
- package/esm2015/lib/forms-ui/components/picker/picker-trigger.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/components/picker/picker.component.js +0 -210
- package/esm2015/lib/forms-ui/components/picker/picker.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/picker-option/picker-option.component.js +0 -124
- package/esm2015/lib/forms-ui/components/picker-option/picker-option.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/pill-item/pill-item.component.js +0 -37
- package/esm2015/lib/forms-ui/components/pill-item/pill-item.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/pill-list/pill-list.component.js +0 -64
- package/esm2015/lib/forms-ui/components/pill-list/pill-list.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/responsive-input/responsive-input.component.js +0 -104
- package/esm2015/lib/forms-ui/components/responsive-input/responsive-input.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/single-select/single-select.component.js +0 -279
- package/esm2015/lib/forms-ui/components/single-select/single-select.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/slider-toggle/slider-toggle.component.js +0 -47
- package/esm2015/lib/forms-ui/components/slider-toggle/slider-toggle.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.js +0 -56
- package/esm2015/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.js.map +0 -1
- package/esm2015/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.js +0 -25
- package/esm2015/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.js.map +0 -1
- package/esm2015/lib/forms-ui/directives/form-error.directive.js +0 -111
- package/esm2015/lib/forms-ui/directives/form-error.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/directives/form-submit.directive.js +0 -28
- package/esm2015/lib/forms-ui/directives/form-submit.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/directives/keyboard-action-source.directive.js +0 -53
- package/esm2015/lib/forms-ui/directives/keyboard-action-source.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/directives/mark-invalid.directive.js +0 -38
- package/esm2015/lib/forms-ui/directives/mark-invalid.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/directives/select-dropdown.directive.js +0 -31
- package/esm2015/lib/forms-ui/directives/select-dropdown.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/directives/selectable-item.directive.js +0 -33
- package/esm2015/lib/forms-ui/directives/selectable-item.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/directives/selected-option.directive.js +0 -26
- package/esm2015/lib/forms-ui/directives/selected-option.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/forms-ui.module.js +0 -236
- package/esm2015/lib/forms-ui/forms-ui.module.js.map +0 -1
- package/esm2015/lib/forms-ui/helpers/key-codes.constants.js +0 -11
- package/esm2015/lib/forms-ui/helpers/key-codes.constants.js.map +0 -1
- package/esm2015/lib/forms-ui/helpers/keyboard-navigation.helpers.js +0 -38
- package/esm2015/lib/forms-ui/helpers/keyboard-navigation.helpers.js.map +0 -1
- package/esm2015/lib/forms-ui/models/base-select.directive.js +0 -148
- package/esm2015/lib/forms-ui/models/base-select.directive.js.map +0 -1
- package/esm2015/lib/forms-ui/models/dropdown-item.interface.js +0 -2
- package/esm2015/lib/forms-ui/models/dropdown-item.interface.js.map +0 -1
- package/esm2015/lib/forms-ui/models/single-select-padding.interface.js +0 -2
- package/esm2015/lib/forms-ui/models/single-select-padding.interface.js.map +0 -1
- package/esm2015/lib/forms-ui/models/sorting.interface.js +0 -7
- package/esm2015/lib/forms-ui/models/sorting.interface.js.map +0 -1
- package/esm2015/lib/forms-ui/pipes/filter-selection.pipe.js +0 -30
- package/esm2015/lib/forms-ui/pipes/filter-selection.pipe.js.map +0 -1
- package/esm2015/lib/forms-ui/pipes/filter-term.pipe.js +0 -26
- package/esm2015/lib/forms-ui/pipes/filter-term.pipe.js.map +0 -1
- package/esm2015/lib/forms-ui/pipes/format-number.pipe.js +0 -65
- package/esm2015/lib/forms-ui/pipes/format-number.pipe.js.map +0 -1
- package/esm2015/lib/forms-ui/validators/date-in-foreseeable-future.validator.js +0 -26
- package/esm2015/lib/forms-ui/validators/date-in-foreseeable-future.validator.js.map +0 -1
- package/esm2015/lib/modal-ui/components/modal/modal.component.js +0 -214
- package/esm2015/lib/modal-ui/components/modal/modal.component.js.map +0 -1
- package/esm2015/lib/modal-ui/components/modal-footer/modal-footer.component.js +0 -15
- package/esm2015/lib/modal-ui/components/modal-footer/modal-footer.component.js.map +0 -1
- package/esm2015/lib/modal-ui/components/modal-header/modal-header.component.js +0 -27
- package/esm2015/lib/modal-ui/components/modal-header/modal-header.component.js.map +0 -1
- package/esm2015/lib/modal-ui/directives/modal-content.directive.js +0 -13
- package/esm2015/lib/modal-ui/directives/modal-content.directive.js.map +0 -1
- package/esm2015/lib/modal-ui/modal.constants.js +0 -3
- package/esm2015/lib/modal-ui/modal.constants.js.map +0 -1
- package/esm2015/lib/modal-ui/modal.module.js +0 -26
- package/esm2015/lib/modal-ui/modal.module.js.map +0 -1
- package/esm2015/lib/popover-ui/components/popover/popover.component.js +0 -203
- package/esm2015/lib/popover-ui/components/popover/popover.component.js.map +0 -1
- package/esm2015/lib/popover-ui/directives/popover-click.directive.js +0 -51
- package/esm2015/lib/popover-ui/directives/popover-click.directive.js.map +0 -1
- package/esm2015/lib/popover-ui/directives/popover-content.directive.js +0 -16
- package/esm2015/lib/popover-ui/directives/popover-content.directive.js.map +0 -1
- package/esm2015/lib/popover-ui/directives/popover-hover.directive.js +0 -87
- package/esm2015/lib/popover-ui/directives/popover-hover.directive.js.map +0 -1
- package/esm2015/lib/popover-ui/popover-ui.module.js +0 -22
- package/esm2015/lib/popover-ui/popover-ui.module.js.map +0 -1
- package/esm2015/lib/shared/date-helpers.js +0 -35
- package/esm2015/lib/shared/date-helpers.js.map +0 -1
- package/esm2015/lib/shared/misc-helpers.js +0 -34
- package/esm2015/lib/shared/misc-helpers.js.map +0 -1
- package/esm2015/lib/shared/observe.js +0 -40
- package/esm2015/lib/shared/observe.js.map +0 -1
- package/esm2015/lib/tab-ui/components/tab/tab.component.js +0 -75
- package/esm2015/lib/tab-ui/components/tab/tab.component.js.map +0 -1
- package/esm2015/lib/tab-ui/components/tab-group/tab-group.component.js +0 -78
- package/esm2015/lib/tab-ui/components/tab-group/tab-group.component.js.map +0 -1
- package/esm2015/lib/tab-ui/tab-ui.module.js +0 -22
- package/esm2015/lib/tab-ui/tab-ui.module.js.map +0 -1
- package/fesm2015/leanix-components.js.map +0 -1
@@ -0,0 +1,116 @@
|
|
1
|
+
import { Directive, EventEmitter, Input, Output, ViewChild, ViewChildren } from '@angular/core';
|
2
|
+
import { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';
|
3
|
+
import { delay, distinctUntilChanged, filter, map, startWith, takeUntil, withLatestFrom } from 'rxjs/operators';
|
4
|
+
import { SelectableItemDirective } from '../directives/selectable-item.directive';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
export var KeyboardSelectAction;
|
7
|
+
(function (KeyboardSelectAction) {
|
8
|
+
KeyboardSelectAction["PREV"] = "PREV";
|
9
|
+
KeyboardSelectAction["NEXT"] = "NEXT";
|
10
|
+
KeyboardSelectAction["FIRST"] = "FIRST";
|
11
|
+
KeyboardSelectAction["LAST"] = "LAST";
|
12
|
+
KeyboardSelectAction["LEFT"] = "LEFT";
|
13
|
+
KeyboardSelectAction["RIGHT"] = "RIGHT";
|
14
|
+
KeyboardSelectAction["EXECUTE"] = "EXECUTE";
|
15
|
+
KeyboardSelectAction["UNSELECT"] = "UNSELECT";
|
16
|
+
KeyboardSelectAction["CLOSE"] = "CLOSE";
|
17
|
+
})(KeyboardSelectAction || (KeyboardSelectAction = {}));
|
18
|
+
export class KeyboardSelectDirective {
|
19
|
+
constructor() {
|
20
|
+
this.keyboardSelectAction = new Observable();
|
21
|
+
this.selectedItemIndexChange = new EventEmitter(true); // TODO: this is just index change from navigating (highlighting)
|
22
|
+
this.destroyed$ = new Subject();
|
23
|
+
// Beware: If the list of items is empty, there might not come a -1 because Angular only updates the ViewChildren lazily.
|
24
|
+
this.selectedItemIndex$ = new BehaviorSubject(-1);
|
25
|
+
this.selectedItemSubject$ = new BehaviorSubject(null);
|
26
|
+
}
|
27
|
+
get selectedItem$() {
|
28
|
+
return this.selectedItemSubject$.asObservable();
|
29
|
+
}
|
30
|
+
select(index) {
|
31
|
+
this.selectedItemIndex$.next(index);
|
32
|
+
}
|
33
|
+
ngAfterViewInit() {
|
34
|
+
const itemsChanges$ = this._items.changes.pipe(startWith(this._items));
|
35
|
+
this.keyboardSelectAction
|
36
|
+
.pipe(filter((action) => !!action), withLatestFrom(this.selectedItemIndex$, itemsChanges$), takeUntil(this.destroyed$))
|
37
|
+
.subscribe(([action, index, items]) => this.adaptSelectedIndexBasedOnKeyboardSelectAction(action, index, items));
|
38
|
+
this.keyboardSelectAction
|
39
|
+
.pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE), withLatestFrom(this.selectedItem$, (_, item) => item), takeUntil(this.destroyed$))
|
40
|
+
.subscribe((item) => item?.select?.emit());
|
41
|
+
this.selectedItemIndex$.pipe(takeUntil(this.destroyed$)).subscribe((index) => {
|
42
|
+
this.selectedItemIndexChange.emit(index);
|
43
|
+
});
|
44
|
+
combineLatest([itemsChanges$, this.selectedItemIndex$])
|
45
|
+
.pipe(delay(0), map(([items, index]) => {
|
46
|
+
if (index > -1) {
|
47
|
+
return items.toArray()[index] ?? null;
|
48
|
+
}
|
49
|
+
else {
|
50
|
+
return null;
|
51
|
+
}
|
52
|
+
}), takeUntil(this.destroyed$))
|
53
|
+
.subscribe(this.selectedItemSubject$);
|
54
|
+
this.selectedItem$
|
55
|
+
.pipe(filter((item) => !!item), distinctUntilChanged(), takeUntil(this.destroyed$))
|
56
|
+
.subscribe((item) => item?.scrollToItem());
|
57
|
+
}
|
58
|
+
isItemSelected(item, selectedItem) {
|
59
|
+
return selectedItem && item === selectedItem.nativeElement;
|
60
|
+
}
|
61
|
+
adaptSelectedIndexBasedOnKeyboardSelectAction(keyboardSelectAction, currentIndex, items) {
|
62
|
+
if (keyboardSelectAction === KeyboardSelectAction.PREV) {
|
63
|
+
this.selectedItemIndex$.next(this.prev(currentIndex));
|
64
|
+
}
|
65
|
+
else if (keyboardSelectAction === KeyboardSelectAction.NEXT) {
|
66
|
+
this.selectedItemIndex$.next(this.next(currentIndex, items));
|
67
|
+
}
|
68
|
+
else if (keyboardSelectAction === KeyboardSelectAction.LAST) {
|
69
|
+
this.selectedItemIndex$.next(this.last(items));
|
70
|
+
}
|
71
|
+
else if (keyboardSelectAction === KeyboardSelectAction.FIRST) {
|
72
|
+
this.selectedItemIndex$.next(0);
|
73
|
+
}
|
74
|
+
else if (keyboardSelectAction === KeyboardSelectAction.UNSELECT) {
|
75
|
+
this.selectedItemIndex$.next(-1);
|
76
|
+
}
|
77
|
+
}
|
78
|
+
prev(index) {
|
79
|
+
if (index > -1) {
|
80
|
+
return index - 1;
|
81
|
+
}
|
82
|
+
else {
|
83
|
+
return index;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
next(index, items) {
|
87
|
+
if (items.length - 1 > index) {
|
88
|
+
return index + 1;
|
89
|
+
}
|
90
|
+
else {
|
91
|
+
return index;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
last(items) {
|
95
|
+
return items.length - 1;
|
96
|
+
}
|
97
|
+
ngOnDestroy() {
|
98
|
+
this.destroyed$.next();
|
99
|
+
}
|
100
|
+
}
|
101
|
+
KeyboardSelectDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: KeyboardSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
102
|
+
KeyboardSelectDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.5", type: KeyboardSelectDirective, inputs: { keyboardSelectAction: "keyboardSelectAction" }, outputs: { selectedItemIndexChange: "selectedItemIndexChange" }, viewQueries: [{ propertyName: "keyboardSelectContainer", first: true, predicate: ["keyboardSelectContainer"], descendants: true, static: true }, { propertyName: "_items", predicate: SelectableItemDirective, descendants: true }], ngImport: i0 });
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: KeyboardSelectDirective, decorators: [{
|
104
|
+
type: Directive
|
105
|
+
}], propDecorators: { keyboardSelectAction: [{
|
106
|
+
type: Input
|
107
|
+
}], selectedItemIndexChange: [{
|
108
|
+
type: Output
|
109
|
+
}], _items: [{
|
110
|
+
type: ViewChildren,
|
111
|
+
args: [SelectableItemDirective]
|
112
|
+
}], keyboardSelectContainer: [{
|
113
|
+
type: ViewChild,
|
114
|
+
args: ['keyboardSelectContainer', { static: true }]
|
115
|
+
}] } });
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtc2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2NvbXBvbmVudHMva2V5Ym9hcmQtc2VsZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFHbEYsTUFBTSxDQUFOLElBQVksb0JBVVg7QUFWRCxXQUFZLG9CQUFvQjtJQUM5QixxQ0FBYSxDQUFBO0lBQ2IscUNBQWEsQ0FBQTtJQUNiLHVDQUFlLENBQUE7SUFDZixxQ0FBYSxDQUFBO0lBQ2IscUNBQWEsQ0FBQTtJQUNiLHVDQUFlLENBQUE7SUFDZiwyQ0FBbUIsQ0FBQTtJQUNuQiw2Q0FBcUIsQ0FBQTtJQUNyQix1Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFWVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBVS9CO0FBR0QsTUFBTSxPQUFPLHVCQUF1QjtJQURwQztRQUVXLHlCQUFvQixHQUFHLElBQUksVUFBVSxFQUErQixDQUFDO1FBQ3BFLDRCQUF1QixHQUFHLElBQUksWUFBWSxDQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsaUVBQWlFO1FBTTVILGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFB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QUNkO0lBQ0gsQ0FBQztJQUVPLElBQUksQ0FBQyxLQUFhLEVBQUUsS0FBOEI7UUFDeEQsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUU7WUFDNUIsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVPLElBQUksQ0FBQyxLQUE4QjtRQUN6QyxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDOztvSEFoSFUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsbVRBSXBCLHVCQUF1QjsyRkFKMUIsdUJBQXVCO2tCQURuQyxTQUFTOzhCQUVDLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDSSx1QkFBdUI7c0JBQWhDLE1BQU07Z0JBRWdDLE1BQU07c0JBQTVDLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUVtQix1QkFBdUI7c0JBQTlFLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3NlbGVjdGFibGUtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRHJvcGRvd25JdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2Ryb3Bkb3duLWl0ZW0uaW50ZXJmYWNlJztcblxuZXhwb3J0IGVudW0gS2V5Ym9hcmRTZWxlY3RBY3Rpb24ge1xuICBQUkVWID0gJ1BSRVYnLFxuICBORVhUID0gJ05FWFQnLFxuICBGSVJTVCA9ICdGSVJTVCcsXG4gIExBU1QgPSAnTEFTVCcsXG4gIExFRlQgPSAnTEVGVCcsXG4gIFJJR0hUID0gJ1JJR0hUJyxcbiAgRVhFQ1VURSA9ICdFWEVDVVRFJyxcbiAgVU5TRUxFQ1QgPSAnVU5TRUxFQ1QnLFxuICBDTE9TRSA9ICdDTE9TRSdcbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgS2V5Ym9hcmRTZWxlY3REaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBrZXlib2FyZFNlbGVjdEFjdGlvbiA9IG5ldyBPYnNlcnZhYmxlPEtleWJvYXJkU2VsZWN0QWN0aW9uIHwgbnVsbD4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbUluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KHRydWUpOyAvLyBUT0RPOiB0aGlzIGlzIGp1c3QgaW5kZXggY2hhbmdlIGZyb20gbmF2aWdhdGluZyAoaGlnaGxpZ2h0aW5nKVxuXG4gIEBWaWV3Q2hpbGRyZW4oU2VsZWN0YWJsZUl0ZW1EaXJlY3RpdmUpIF9pdGVtcyE6IFF1ZXJ5TGlzdDxEcm9wZG93bkl0ZW0+O1xuXG4gIEBWaWV3Q2hpbGQoJ2tleWJvYXJkU2VsZWN0Q29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkga2V5Ym9hcmRTZWxlY3RDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICByZWFkb25seSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBnZXQgc2VsZWN0ZWRJdGVtJCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLy8gQmV3YXJlOiBJZiB0aGUgbGlzdCBvZiBpdGVtcyBpcyBlbXB0eSwgdGhlcmUgbWlnaHQgbm90IGNvbWUgYSAtMSBiZWNhdXNlIEFuZ3VsYXIgb25seSB1cGRhdGVzIHRoZSBWaWV3Q2hpbGRyZW4gbGF6aWx5LlxuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGVkSXRlbUluZGV4JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtMSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERyb3Bkb3duSXRlbSB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyBzZWxlY3QoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXgkLm5leHQoaW5kZXgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1zQ2hhbmdlcyQgPSB0aGlzLl9pdGVtcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuX2l0ZW1zKSk7XG5cbiAgICB0aGlzLmtleWJvYXJkU2VsZWN0QWN0aW9uXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChhY3Rpb24pOiBhY3Rpb24gaXMgS2V5Ym9hcmRTZWxlY3RBY3Rpb24gPT4gISFhY3Rpb24pLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnNlbGVjdGVkSXRlbUluZGV4JCwgaXRlbXNDaGFuZ2VzJCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbYWN0aW9uLCBpbmRleCwgaXRlbXNdKSA9PiB0aGlzLmFkYXB0U2VsZWN0ZWRJbmRleEJhc2VkT25LZXlib2FyZFNlbGVjdEFjdGlvbihhY3Rpb24sIGluZGV4LCBpdGVtcykpO1xuXG4gICAgdGhpcy5rZXlib2FyZFNlbGVjdEFjdGlvblxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoa2V5Ym9hcmRTZWxlY3RBY3Rpb24pID0+IGtleWJvYXJkU2VsZWN0QWN0aW9uID09PSBLZXlib2FyZFNlbGVjdEFjdGlvbi5FWEVDVVRFKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zZWxlY3RlZEl0ZW0kLCAoXywgaXRlbSkgPT4gaXRlbSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChpdGVtKSA9PiBpdGVtPy5zZWxlY3Q/LmVtaXQoKSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGluZGV4KSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xuICAgIH0pO1xuXG4gICAgY29tYmluZUxhdGVzdChbaXRlbXNDaGFuZ2VzJCwgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCRdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlbGF5KDApLFxuICAgICAgICBtYXAoKFtpdGVtcywgaW5kZXhdOiBbUXVlcnlMaXN0PERyb3Bkb3duSXRlbT4sIG51bWJlcl0pID0+IHtcbiAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLnRvQXJyYXkoKVtpbmRleF0gPz8gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5zZWxlY3RlZEl0ZW1TdWJqZWN0JCk7XG5cbiAgICB0aGlzLnNlbGVjdGVkSXRlbSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGl0ZW0pID0+ICEhaXRlbSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChpdGVtKSA9PiBpdGVtPy5zY3JvbGxUb0l0ZW0oKSk7XG4gIH1cblxuICBwdWJsaWMgaXNJdGVtU2VsZWN0ZWQoaXRlbTogSFRNTEVsZW1lbnQsIHNlbGVjdGVkSXRlbTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRJdGVtICYmIGl0ZW0gPT09IHNlbGVjdGVkSXRlbS5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBhZGFwdFNlbGVjdGVkSW5kZXhCYXNlZE9uS2V5Ym9hcmRTZWxlY3RBY3Rpb24oXG4gICAga2V5Ym9hcmRTZWxlY3RBY3Rpb246IEtleWJvYXJkU2VsZWN0QWN0aW9uLFxuICAgIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAgIGl0ZW1zOiBRdWVyeUxpc3Q8RHJvcGRvd25JdGVtPlxuICApIHtcbiAgICBpZiAoa2V5Ym9hcmRTZWxlY3RBY3Rpb24gPT09IEtleWJvYXJkU2VsZWN0QWN0aW9uLlBSRVYpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXgkLm5leHQodGhpcy5wcmV2KGN1cnJlbnRJbmRleCkpO1xuICAgIH0gZWxzZSBpZiAoa2V5Ym9hcmRTZWxlY3RBY3Rpb24gPT09IEtleWJvYXJkU2VsZWN0QWN0aW9uLk5FWFQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXgkLm5leHQodGhpcy5uZXh0KGN1cnJlbnRJbmRleCwgaXRlbXMpKTtcbiAgICB9IGVsc2UgaWYgKGtleWJvYXJkU2VsZWN0QWN0aW9uID09PSBLZXlib2FyZFNlbGVjdEFjdGlvbi5MQVNUKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4JC5uZXh0KHRoaXMubGFzdChpdGVtcykpO1xuICAgIH0gZWxzZSBpZiAoa2V5Ym9hcmRTZWxlY3RBY3Rpb24gPT09IEtleWJvYXJkU2VsZWN0QWN0aW9uLkZJUlNUKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4JC5uZXh0KDApO1xuICAgIH0gZWxzZSBpZiAoa2V5Ym9hcmRTZWxlY3RBY3Rpb24gPT09IEtleWJvYXJkU2VsZWN0QWN0aW9uLlVOU0VMRUNUKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4JC5uZXh0KC0xKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByZXYoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleCAtIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5leHQoaW5kZXg6IG51bWJlciwgaXRlbXM6IFF1ZXJ5TGlzdDxEcm9wZG93bkl0ZW0+KTogbnVtYmVyIHtcbiAgICBpZiAoaXRlbXMubGVuZ3RoIC0gMSA+IGluZGV4KSB7XG4gICAgICByZXR1cm4gaW5kZXggKyAxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsYXN0KGl0ZW1zOiBRdWVyeUxpc3Q8RHJvcGRvd25JdGVtPik6IG51bWJlciB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCAtIDE7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG59XG4iXX0=
|
@@ -0,0 +1,251 @@
|
|
1
|
+
import { Component, ContentChild, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild } from '@angular/core';
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
3
|
+
import { filter as _filter, findIndex, includes, last } from 'lodash/fp';
|
4
|
+
import { fromEvent as observableFromEvent, Subject } from 'rxjs';
|
5
|
+
import { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';
|
6
|
+
import { SelectDropdownDirective } from '../../directives/select-dropdown.directive';
|
7
|
+
import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, ENTER, ESCAPE, TAB } from '../../helpers/key-codes.constants';
|
8
|
+
import { BaseSelectDirective } from '../../models/base-select.directive';
|
9
|
+
import { KeyboardSelectAction } from '../keyboard-select.directive';
|
10
|
+
import { ResponsiveInputComponent } from '../responsive-input/responsive-input.component';
|
11
|
+
import * as i0 from "@angular/core";
|
12
|
+
import * as i1 from "../responsive-input/responsive-input.component";
|
13
|
+
import * as i2 from "@angular/common";
|
14
|
+
import * as i3 from "../../directives/mark-invalid.directive";
|
15
|
+
import * as i4 from "@angular/forms";
|
16
|
+
export class MultiSelectComponent extends BaseSelectDirective {
|
17
|
+
constructor(cd) {
|
18
|
+
super();
|
19
|
+
this.cd = cd;
|
20
|
+
this.markInvalid = false;
|
21
|
+
this.selection = [];
|
22
|
+
this.size = 'default';
|
23
|
+
this.dropdownWidthScale = '1x';
|
24
|
+
this.selectionChange = new EventEmitter();
|
25
|
+
this.blur = new EventEmitter();
|
26
|
+
this.destroyed$ = new Subject();
|
27
|
+
}
|
28
|
+
static isStillPossibleMoveToLeft(eventSet) {
|
29
|
+
return (!(eventSet.virtualCursorPosition === 0 &&
|
30
|
+
eventSet.inputCursorPosition === 0 &&
|
31
|
+
eventSet.event.keyCode === ARROW_LEFT &&
|
32
|
+
eventSet.selectionLength === 0) &&
|
33
|
+
!(eventSet.event.keyCode === ARROW_LEFT &&
|
34
|
+
typeof eventSet.selectionLength === 'number' &&
|
35
|
+
eventSet.selectionLength > 0 &&
|
36
|
+
Math.abs(eventSet.virtualCursorPosition) === eventSet.selectionLength));
|
37
|
+
}
|
38
|
+
static isMovingfromZeroToRight(eventSet) {
|
39
|
+
return eventSet.virtualCursorPosition === 0 && eventSet.inputCursorPosition === 0 && eventSet.event.keyCode === ARROW_RIGHT;
|
40
|
+
}
|
41
|
+
static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition, keyCode) {
|
42
|
+
switch (keyCode) {
|
43
|
+
case ARROW_LEFT:
|
44
|
+
cursorPosition--;
|
45
|
+
break;
|
46
|
+
case ARROW_RIGHT:
|
47
|
+
cursorPosition++;
|
48
|
+
break;
|
49
|
+
}
|
50
|
+
return cursorPosition;
|
51
|
+
}
|
52
|
+
static getKeyboardSelectAction(cursorPosition, keyCode) {
|
53
|
+
if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {
|
54
|
+
return KeyboardSelectAction.NEXT;
|
55
|
+
}
|
56
|
+
if (cursorPosition === -1 && keyCode === ARROW_LEFT) {
|
57
|
+
return KeyboardSelectAction.LAST;
|
58
|
+
}
|
59
|
+
if (cursorPosition < -1 && keyCode === ARROW_LEFT) {
|
60
|
+
return KeyboardSelectAction.PREV;
|
61
|
+
}
|
62
|
+
if (cursorPosition <= -1 && keyCode === BACKSPACE) {
|
63
|
+
return KeyboardSelectAction.EXECUTE;
|
64
|
+
}
|
65
|
+
return undefined;
|
66
|
+
}
|
67
|
+
get dropdownTmpl() {
|
68
|
+
return this.explicitDropdown || this.implicitDropdown;
|
69
|
+
}
|
70
|
+
get dropdownWidth() {
|
71
|
+
switch (this.dropdownWidthScale) {
|
72
|
+
case '1x':
|
73
|
+
return undefined;
|
74
|
+
case '1.5x':
|
75
|
+
return '150%';
|
76
|
+
case '2x':
|
77
|
+
return '200%';
|
78
|
+
}
|
79
|
+
}
|
80
|
+
resetInput() {
|
81
|
+
this.queryInput.resetInput();
|
82
|
+
this.queryControl.setValue('');
|
83
|
+
}
|
84
|
+
focus() {
|
85
|
+
this.queryInput.focusInput();
|
86
|
+
}
|
87
|
+
focusAndOpen() {
|
88
|
+
this.queryInput.focusInput();
|
89
|
+
this.open.next(true);
|
90
|
+
}
|
91
|
+
ngAfterViewInit() {
|
92
|
+
super.ngAfterViewInit();
|
93
|
+
this.open
|
94
|
+
.pipe(distinctUntilChanged(), filter((open) => open), takeUntil(this.destroyed$))
|
95
|
+
.subscribe(() => {
|
96
|
+
this.selectFirstOption();
|
97
|
+
});
|
98
|
+
// keyboard event handling
|
99
|
+
const sourceElement = this.queryInput.responsiveInput.nativeElement;
|
100
|
+
observableFromEvent(sourceElement, 'keydown')
|
101
|
+
.pipe(filter((event) => includes(event.keyCode, [ARROW_DOWN])), takeUntil(this.destroyed$))
|
102
|
+
.subscribe(() => this.open.next(true));
|
103
|
+
// handle keyboard navigation for the selection
|
104
|
+
observableFromEvent(sourceElement, 'keydown')
|
105
|
+
.pipe(map((event) => this.mapToEventSet(event, this.queryInput.responsiveInput.nativeElement, this.virtualCursorPosition, this.selection ? this.selection.length : 0)), filter((eventSet) => {
|
106
|
+
return !MultiSelectComponent.isMovingfromZeroToRight(eventSet) && MultiSelectComponent.isStillPossibleMoveToLeft(eventSet);
|
107
|
+
}), tap((eventSet) => {
|
108
|
+
if (eventSet.virtualCursorPosition === 0 &&
|
109
|
+
eventSet.inputCursorPosition === 0 &&
|
110
|
+
eventSet.event.keyCode === BACKSPACE &&
|
111
|
+
typeof eventSet.selectionLength === 'number' &&
|
112
|
+
eventSet.selectionLength > 0) {
|
113
|
+
const lastItem = last(this.selection);
|
114
|
+
this.removeItem({ item: lastItem, isMouse: false });
|
115
|
+
eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream
|
116
|
+
}
|
117
|
+
if (typeof eventSet.inputCursorPosition === 'number' && eventSet.inputCursorPosition > 0) {
|
118
|
+
this.virtualCursorPosition = 0;
|
119
|
+
}
|
120
|
+
else if (eventSet.virtualCursorPosition === -1 && eventSet.event.keyCode === ARROW_RIGHT) {
|
121
|
+
eventSet.event.preventDefault();
|
122
|
+
this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);
|
123
|
+
this.virtualCursorPosition = 0;
|
124
|
+
eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream
|
125
|
+
}
|
126
|
+
}), filter((eventSet) => eventSet.inputCursorPosition === 0), map((eventSet) => eventSet.event), filter((event) => includes(event.keyCode, [ARROW_RIGHT, ARROW_LEFT, BACKSPACE])), map((event) => {
|
127
|
+
this.virtualCursorPosition = MultiSelectComponent.calculateNewCursorPostionOnKeyboardNavigation(this.virtualCursorPosition, event.keyCode);
|
128
|
+
return {
|
129
|
+
cursorPosition: this.virtualCursorPosition,
|
130
|
+
event
|
131
|
+
};
|
132
|
+
}), map((positionSet) => {
|
133
|
+
const action = MultiSelectComponent.getKeyboardSelectAction(positionSet.cursorPosition, positionSet.event.keyCode);
|
134
|
+
if (action === KeyboardSelectAction.NEXT) {
|
135
|
+
// prevent cursor from moving in the input field, while we are still in the selection items
|
136
|
+
positionSet.event.preventDefault();
|
137
|
+
}
|
138
|
+
return action;
|
139
|
+
}), takeUntil(this.destroyed$))
|
140
|
+
.subscribe(this.selectionKeyboardSelectAction$);
|
141
|
+
const inputKeyboardEvents$ = observableFromEvent(sourceElement, 'keydown');
|
142
|
+
inputKeyboardEvents$
|
143
|
+
.pipe(filter((event) => includes(event.keyCode, [ARROW_UP, ARROW_DOWN])), takeUntil(this.destroyed$))
|
144
|
+
.subscribe((event) => {
|
145
|
+
event.preventDefault();
|
146
|
+
});
|
147
|
+
inputKeyboardEvents$
|
148
|
+
.pipe(filter((event) => event.keyCode === ESCAPE || event.keyCode === TAB), takeUntil(this.destroyed$))
|
149
|
+
.subscribe((event) => {
|
150
|
+
if (event.keyCode === ESCAPE && this.dropdownOpen) {
|
151
|
+
event.preventDefault();
|
152
|
+
event.stopImmediatePropagation();
|
153
|
+
}
|
154
|
+
this.open.next(false);
|
155
|
+
});
|
156
|
+
inputKeyboardEvents$
|
157
|
+
.pipe(filter((event) => includes(event.keyCode, [ENTER, ARROW_UP, ARROW_DOWN])), map((event) => {
|
158
|
+
switch (event.keyCode) {
|
159
|
+
case ENTER:
|
160
|
+
return KeyboardSelectAction.EXECUTE;
|
161
|
+
case ARROW_UP:
|
162
|
+
return KeyboardSelectAction.PREV;
|
163
|
+
case ARROW_DOWN:
|
164
|
+
return KeyboardSelectAction.NEXT;
|
165
|
+
default:
|
166
|
+
return null;
|
167
|
+
}
|
168
|
+
}), takeUntil(this.destroyed$))
|
169
|
+
.subscribe(this.optionsKeyboardSelectAction$);
|
170
|
+
inputKeyboardEvents$
|
171
|
+
.pipe(filter((event) => includes(event.keyCode, [ENTER, ARROW_DOWN])), takeUntil(this.destroyed$))
|
172
|
+
.subscribe(() => this.open.next(true));
|
173
|
+
}
|
174
|
+
addItemToSelection(option) {
|
175
|
+
if (option !== null) {
|
176
|
+
this.selection = [...(this.selection || [])].concat(option);
|
177
|
+
this.selectionChange.emit([...this.selection]);
|
178
|
+
this.propagateChange([...this.selection]);
|
179
|
+
}
|
180
|
+
this.resetSelectState();
|
181
|
+
}
|
182
|
+
removeItem(optionToRemove) {
|
183
|
+
if (this.disabled) {
|
184
|
+
return;
|
185
|
+
}
|
186
|
+
const prevOptionIndex = findIndex((option) => option === optionToRemove.item, this.selection);
|
187
|
+
const prevSelectionLenght = this.selection?.length ?? 0;
|
188
|
+
this.selection = _filter((option) => option !== optionToRemove.item, this.selection);
|
189
|
+
this.cd.markForCheck();
|
190
|
+
this.cd.detectChanges();
|
191
|
+
this.selectionChange.emit([...this.selection]);
|
192
|
+
this.propagateChange([...this.selection]);
|
193
|
+
if (prevOptionIndex === prevSelectionLenght - 1 || optionToRemove.isMouse) {
|
194
|
+
this.resetSelectState();
|
195
|
+
}
|
196
|
+
else {
|
197
|
+
this.virtualCursorPosition++;
|
198
|
+
}
|
199
|
+
}
|
200
|
+
propagateChange(_value) { }
|
201
|
+
writeValue(value) {
|
202
|
+
this.selection = value;
|
203
|
+
}
|
204
|
+
registerOnChange(fn) {
|
205
|
+
this.propagateChange = fn;
|
206
|
+
}
|
207
|
+
registerOnTouched(_fn) { }
|
208
|
+
setDisabledState(isDisabled) {
|
209
|
+
this.disabled = isDisabled;
|
210
|
+
}
|
211
|
+
}
|
212
|
+
MultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: MultiSelectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
213
|
+
MultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: MultiSelectComponent, selector: "lx-multi-select", inputs: { markInvalid: "markInvalid", selection: "selection", size: "size", dropdownWidthScale: "dropdownWidthScale" }, outputs: { selectionChange: "selectionChange", blur: "blur" }, providers: [
|
214
|
+
{
|
215
|
+
provide: NG_VALUE_ACCESSOR,
|
216
|
+
useExisting: forwardRef(() => MultiSelectComponent),
|
217
|
+
multi: true
|
218
|
+
}
|
219
|
+
], queries: [{ propertyName: "explicitDropdown", first: true, predicate: SelectDropdownDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "queryInput", first: true, predicate: ResponsiveInputComponent, descendants: true, static: true }, { propertyName: "implicitDropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.focused]=\"isInputFocused\"\n [class.hasSelection]=\"selection && selection.length > 0\"\n [class.smallSize]=\"size === 'small'\"\n [class.disabled]=\"disabled\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectedChoicesContainer\">\n <div *ngIf=\"(selection?.length === 0 || !selection) && !queryControl?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n <div class=\"selection\">\n <ng-content select=\".pills\"></ng-content>\n </div>\n <lx-responsive-input\n (focus)=\"isInputFocused = true\"\n (blur)=\"isInputFocused = false; blur.emit()\"\n [formControl]=\"queryControl\"\n (keydown.enter)=\"$event.preventDefault()\"\n ></lx-responsive-input>\n <i #toggle [hidden]=\"disabled\" class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"optionsContainer\" [style.width]=\"dropdownWidth\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\"></ng-content>\n</ng-template>\n", styles: [".selectContainer{position:relative;height:auto;cursor:text;padding:0;box-sizing:border-box;border:1px solid #99a5bb;box-shadow:inset 0 1px 1px #00000012;border-radius:3px;background:white}.selectContainer.smallSize .selectedChoicesContainer{min-height:22px}.selectContainer.smallSize .selectedChoicesContainer .placeholder{line-height:24px}.selectContainer.smallSize lx-responsive-input{height:22px}.selectContainer.disabled{background-color:#eaedf1;cursor:not-allowed}.selectContainer.disabled lx-responsive-input{display:none}.selectContainer:not(.hasSelection){padding-left:12px}.selectContainer.open{z-index:1052;background:#fff;border:1px solid #e1e5eb}.selectContainer.open.bottom{box-shadow:0 6px 6px #21252933;border-bottom-color:#fff;border-bottom-left-radius:0;border-bottom-right-radius:0}.selectContainer.open.bottom .optionsContainer{border-bottom:solid 1px #e1e5eb;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;box-shadow:0 6px 6px #21252933;top:100%;border-top:0;margin-top:0}.selectContainer.open.top{box-shadow:0 -4px 6px #21252933;border-top-left-radius:0;border-top-right-radius:0}.selectContainer.open.top .optionsContainer{border-bottom:solid 1px #e1e5eb;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;box-shadow:0 -4px 6px #21252933;margin-bottom:0;border-bottom:0;top:none;bottom:100%}.selectContainer:not(.open).focused{outline:0;border:1px solid #5599ff}.selectContainer .selectedChoicesContainer{padding-right:25px;min-height:29px}.selectContainer .selectedChoicesContainer .placeholder{position:absolute;left:12px;right:25px;top:0;bottom:0;line-height:29px;color:#8594ad;overflow:hidden;word-break:break-all;white-space:nowrap;text-overflow:ellipsis;padding-left:4px}.selectContainer .selectedChoicesContainer>.fa-angle-down{position:absolute;right:10px;top:50%;transform:translateY(-50%);cursor:pointer}.selectContainer .selection{display:inline;cursor:default}.selectContainer .optionsContainer{position:absolute;left:-1px;right:-1px;padding:0;background:white;z-index:1}lx-responsive-input{height:29px;padding-left:4px}.backdrop{z-index:1051;position:fixed;top:0;bottom:0;left:0;right:0}\n"], components: [{ type: i1.ResponsiveInputComponent, selector: "lx-responsive-input", outputs: ["focus", "blur"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MarkInvalidDirective, selector: "[lxMarkInvalid]", inputs: ["lxMarkInvalid"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i2.AsyncPipe } });
|
220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: MultiSelectComponent, decorators: [{
|
221
|
+
type: Component,
|
222
|
+
args: [{ selector: 'lx-multi-select', providers: [
|
223
|
+
{
|
224
|
+
provide: NG_VALUE_ACCESSOR,
|
225
|
+
useExisting: forwardRef(() => MultiSelectComponent),
|
226
|
+
multi: true
|
227
|
+
}
|
228
|
+
], template: "<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.focused]=\"isInputFocused\"\n [class.hasSelection]=\"selection && selection.length > 0\"\n [class.smallSize]=\"size === 'small'\"\n [class.disabled]=\"disabled\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectedChoicesContainer\">\n <div *ngIf=\"(selection?.length === 0 || !selection) && !queryControl?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n <div class=\"selection\">\n <ng-content select=\".pills\"></ng-content>\n </div>\n <lx-responsive-input\n (focus)=\"isInputFocused = true\"\n (blur)=\"isInputFocused = false; blur.emit()\"\n [formControl]=\"queryControl\"\n (keydown.enter)=\"$event.preventDefault()\"\n ></lx-responsive-input>\n <i #toggle [hidden]=\"disabled\" class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"optionsContainer\" [style.width]=\"dropdownWidth\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\"></ng-content>\n</ng-template>\n", styles: [".selectContainer{position:relative;height:auto;cursor:text;padding:0;box-sizing:border-box;border:1px solid #99a5bb;box-shadow:inset 0 1px 1px #00000012;border-radius:3px;background:white}.selectContainer.smallSize .selectedChoicesContainer{min-height:22px}.selectContainer.smallSize .selectedChoicesContainer .placeholder{line-height:24px}.selectContainer.smallSize lx-responsive-input{height:22px}.selectContainer.disabled{background-color:#eaedf1;cursor:not-allowed}.selectContainer.disabled lx-responsive-input{display:none}.selectContainer:not(.hasSelection){padding-left:12px}.selectContainer.open{z-index:1052;background:#fff;border:1px solid #e1e5eb}.selectContainer.open.bottom{box-shadow:0 6px 6px #21252933;border-bottom-color:#fff;border-bottom-left-radius:0;border-bottom-right-radius:0}.selectContainer.open.bottom .optionsContainer{border-bottom:solid 1px #e1e5eb;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;box-shadow:0 6px 6px #21252933;top:100%;border-top:0;margin-top:0}.selectContainer.open.top{box-shadow:0 -4px 6px #21252933;border-top-left-radius:0;border-top-right-radius:0}.selectContainer.open.top .optionsContainer{border-bottom:solid 1px #e1e5eb;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;box-shadow:0 -4px 6px #21252933;margin-bottom:0;border-bottom:0;top:none;bottom:100%}.selectContainer:not(.open).focused{outline:0;border:1px solid #5599ff}.selectContainer .selectedChoicesContainer{padding-right:25px;min-height:29px}.selectContainer .selectedChoicesContainer .placeholder{position:absolute;left:12px;right:25px;top:0;bottom:0;line-height:29px;color:#8594ad;overflow:hidden;word-break:break-all;white-space:nowrap;text-overflow:ellipsis;padding-left:4px}.selectContainer .selectedChoicesContainer>.fa-angle-down{position:absolute;right:10px;top:50%;transform:translateY(-50%);cursor:pointer}.selectContainer .selection{display:inline;cursor:default}.selectContainer .optionsContainer{position:absolute;left:-1px;right:-1px;padding:0;background:white;z-index:1}lx-responsive-input{height:29px;padding-left:4px}.backdrop{z-index:1051;position:fixed;top:0;bottom:0;left:0;right:0}\n"] }]
|
229
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { markInvalid: [{
|
230
|
+
type: Input
|
231
|
+
}], selection: [{
|
232
|
+
type: Input
|
233
|
+
}], size: [{
|
234
|
+
type: Input
|
235
|
+
}], dropdownWidthScale: [{
|
236
|
+
type: Input
|
237
|
+
}], selectionChange: [{
|
238
|
+
type: Output
|
239
|
+
}], blur: [{
|
240
|
+
type: Output
|
241
|
+
}], explicitDropdown: [{
|
242
|
+
type: ContentChild,
|
243
|
+
args: [SelectDropdownDirective, { read: TemplateRef, static: true }]
|
244
|
+
}], queryInput: [{
|
245
|
+
type: ViewChild,
|
246
|
+
args: [ResponsiveInputComponent, { static: true }]
|
247
|
+
}], implicitDropdown: [{
|
248
|
+
type: ViewChild,
|
249
|
+
args: ['dropdown', { static: true }]
|
250
|
+
}] } });
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2NvbXBvbmVudHMvbXVsdGktc2VsZWN0L211bHRpLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLElBQUksbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxtQkFBbUIsRUFBWSxNQUFNLG9DQUFv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O2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFFcUUsZ0JBQWdCO3NCQUEzRixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVuQixVQUFVO3NCQUFoRSxTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDWixnQkFBZ0I7c0JBQXhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZmlsdGVyIGFzIF9maWx0ZXIsIGZpbmRJbmRleCwgaW5jbHVkZXMsIGxhc3QgfSBmcm9tICdsb2Rhc2gvZnAnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IGFzIG9ic2VydmFibGVGcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTZWxlY3REcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2VsZWN0LWRyb3Bkb3duLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBUlJPV19ET1dOLCBBUlJPV19MRUZULCBBUlJPV19SSUdIVCwgQVJST1dfVVAsIEJBQ0tTUEFDRSwgRU5URVIsIEVTQ0FQRSwgVEFCIH0gZnJvbSAnLi4vLi4vaGVscGVycy9rZXktY29kZXMuY29uc3RhbnRzJztcbmltcG9ydCB7IEJhc2VTZWxlY3REaXJlY3RpdmUsIEV2ZW50U2V0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Jhc2Utc2VsZWN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBLZXlib2FyZFNlbGVjdEFjdGlvbiB9IGZyb20gJy4uL2tleWJvYXJkLXNlbGVjdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmVzcG9uc2l2ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vcmVzcG9uc2l2ZS1pbnB1dC9yZXNwb25zaXZlLWlucHV0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIE11bHRpU2VsZWN0U2l6ZSA9ICdkZWZhdWx0JyB8ICdzbWFsbCc7XG5cbmV4cG9ydCB0eXBlIE11bHRpU2VsZWN0UmVtb3ZlSXRlbUV2ZW50ID0ge1xuICBpdGVtOiBhbnk7XG4gIC8qKlxuICAgKiBJcyB0cnVlIHdoZW4gdGhlIGl0ZW0gd2FzIG5vdCByZW1vdmVkIGJ5IHByZXNzaW5nIGJhY2tzcGFjZSBvbiB0aGUga2V5Ym9hcmQgcmF0aGVyIHRoYW4gY2xpY2tpbmcgdGhlICd4Jy5cbiAgICovXG4gIGlzTW91c2U6IGJvb2xlYW47XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1tdWx0aS1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJ211bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydtdWx0aS1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNdWx0aVNlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdENvbXBvbmVudCBleHRlbmRzIEJhc2VTZWxlY3REaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHB1YmxpYyBzdGF0aWMgaXNTdGlsbFBvc3NpYmxlTW92ZVRvTGVmdChldmVudFNldDogRXZlbnRTZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIShcbiAgICAgICAgZXZlbnRTZXQudmlydHVhbEN1cnNvclBvc2l0aW9uID09PSAwICYmXG4gICAgICAgIGV2ZW50U2V0LmlucHV0Q3Vyc29yUG9zaXRpb24gPT09IDAgJiZcbiAgICAgICAgZXZlbnRTZXQuZXZlbnQua2V5Q29kZSA9PT0gQVJST1dfTEVGVCAmJlxuICAgICAgICBldmVudFNldC5zZWxlY3Rpb25MZW5ndGggPT09IDBcbiAgICAgICkgJiZcbiAgICAgICEoXG4gICAgICAgIGV2ZW50U2V0LmV2ZW50LmtleUNvZGUgPT09IEFSUk9XX0xFRlQgJiZcbiAgICAgICAgdHlwZW9mIGV2ZW50U2V0LnNlbGVjdGlvbkxlbmd0aCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgZXZlbnRTZXQuc2VsZWN0aW9uTGVuZ3RoID4gMCAmJlxuICAgICAgICBNYXRoLmFicyhldmVudFNldC52aXJ0dWFsQ3Vyc29yUG9zaXRpb24pID09PSBldmVudFNldC5zZWxlY3Rpb25MZW5ndGhcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc01vdmluZ2Zyb21aZXJvVG9SaWdodChldmVudFNldDogRXZlbnRTZXQpIHtcbiAgICByZXR1cm4gZXZlbnRTZXQudmlydHVhbEN1cnNvclBvc2l0aW9uID09PSAwICYmIGV2ZW50U2V0LmlucHV0Q3Vyc29yUG9zaXRpb24gPT09IDAgJiYgZXZlbnRTZXQuZXZlbnQua2V5Q29kZSA9PT0gQVJST1dfUklHSFQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNhbGN1bGF0ZU5ld0N1cnNvclBvc3Rpb25PbktleWJvYXJkTmF2aWdhdGlvbihjdXJzb3JQb3NpdGlvbjogbnVtYmVyLCBrZXlDb2RlOiBudW1iZXIpIHtcbiAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgIGNhc2UgQVJST1dfTEVGVDpcbiAgICAgICAgY3Vyc29yUG9zaXRpb24tLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEFSUk9XX1JJR0hUOlxuICAgICAgICBjdXJzb3JQb3NpdGlvbisrO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGN1cnNvclBvc2l0aW9uO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRLZXlib2FyZFNlbGVjdEFjdGlvbihjdXJzb3JQb3NpdGlvbjogbnVtYmVyLCBrZXlDb2RlOiBudW1iZXIpOiBLZXlib2FyZFNlbGVjdEFjdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGN1cnNvclBvc2l0aW9uIDw9IC0xICYmIGtleUNvZGUgPT09IEFSUk9XX1JJR0hUKSB7XG4gICAgICByZXR1cm4gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uTkVYVDtcbiAgICB9XG4gICAgaWYgKGN1cnNvclBvc2l0aW9uID09PSAtMSAmJiBrZXlDb2RlID09PSBBUlJPV19MRUZUKSB7XG4gICAgICByZXR1cm4gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uTEFTVDtcbiAgICB9XG4gICAgaWYgKGN1cnNvclBvc2l0aW9uIDwgLTEgJiYga2V5Q29kZSA9PT0gQVJST1dfTEVGVCkge1xuICAgICAgcmV0dXJuIEtleWJvYXJkU2VsZWN0QWN0aW9uLlBSRVY7XG4gICAgfVxuICAgIGlmIChjdXJzb3JQb3NpdGlvbiA8PSAtMSAmJiBrZXlDb2RlID09PSBCQUNLU1BBQ0UpIHtcbiAgICAgIHJldHVybiBLZXlib2FyZFNlbGVjdEFjdGlvbi5FWEVDVVRFO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgQElucHV0KCkgbWFya0ludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0aW9uPzogYW55W10gfCBudWxsID0gW107XG4gIEBJbnB1dCgpIHNpemU6IE11bHRpU2VsZWN0U2l6ZSA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgZHJvcGRvd25XaWR0aFNjYWxlOiAnMXgnIHwgJzEuNXgnIHwgJzJ4JyA9ICcxeCc7XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoU2VsZWN0RHJvcGRvd25EaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSBleHBsaWNpdERyb3Bkb3duPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKFJlc3BvbnNpdmVJbnB1dENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgcXVlcnlJbnB1dCE6IFJlc3BvbnNpdmVJbnB1dENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbXBsaWNpdERyb3Bkb3duITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBnZXQgZHJvcGRvd25UbXBsKCkge1xuICAgIHJldHVybiB0aGlzLmV4cGxpY2l0RHJvcGRvd24gfHwgdGhpcy5pbXBsaWNpdERyb3Bkb3duO1xuICB9XG5cbiAgcmVhZG9ubHkgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IGRyb3Bkb3duV2lkdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKHRoaXMuZHJvcGRvd25XaWR0aFNjYWxlKSB7XG4gICAgICBjYXNlICcxeCc6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBjYXNlICcxLjV4JzpcbiAgICAgICAgcmV0dXJuICcxNTAlJztcbiAgICAgIGNhc2UgJzJ4JzpcbiAgICAgICAgcmV0dXJuICcyMDAlJztcbiAgICB9XG4gIH1cblxuICByZXNldElucHV0KCkge1xuICAgIHRoaXMucXVlcnlJbnB1dC5yZXNldElucHV0KCk7XG4gICAgdGhpcy5xdWVyeUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy5xdWVyeUlucHV0LmZvY3VzSW5wdXQoKTtcbiAgfVxuXG4gIGZvY3VzQW5kT3BlbigpIHtcbiAgICB0aGlzLnF1ZXJ5SW5wdXQuZm9jdXNJbnB1dCgpO1xuICAgIHRoaXMub3Blbi5uZXh0KHRydWUpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgdGhpcy5vcGVuXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgZmlsdGVyKChvcGVuKSA9PiBvcGVuKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdEZpcnN0T3B0aW9uKCk7XG4gICAgICB9KTtcblxuICAgIC8vIGtleWJvYXJkIGV2ZW50IGhhbmRsaW5nXG4gICAgY29uc3Qgc291cmNlRWxlbWVudCA9IHRoaXMucXVlcnlJbnB1dC5yZXNwb25zaXZlSW5wdXQubmF0aXZlRWxlbWVudDtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oc291cmNlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGluY2x1ZGVzKGV2ZW50LmtleUNvZGUsIFtBUlJPV19ET1dOXSkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9wZW4ubmV4dCh0cnVlKSk7XG5cbiAgICAvLyBoYW5kbGUga2V5Ym9hcmQgbmF2aWdhdGlvbiBmb3IgdGhlIHNlbGVjdGlvblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oc291cmNlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZXZlbnQpID0+XG4gICAgICAgICAgdGhpcy5tYXBUb0V2ZW50U2V0KFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5SW5wdXQucmVzcG9uc2l2ZUlucHV0Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxDdXJzb3JQb3NpdGlvbixcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID8gdGhpcy5zZWxlY3Rpb24ubGVuZ3RoIDogMFxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgZmlsdGVyKChldmVudFNldCkgPT4ge1xuICAgICAgICAgIHJldHVybiAhTXVsdGlTZWxlY3RDb21wb25lbnQuaXNNb3Zpbmdmcm9tWmVyb1RvUmlnaHQoZXZlbnRTZXQpICYmIE11bHRpU2VsZWN0Q29tcG9uZW50LmlzU3RpbGxQb3NzaWJsZU1vdmVUb0xlZnQoZXZlbnRTZXQpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChldmVudFNldCkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGV2ZW50U2V0LnZpcnR1YWxDdXJzb3JQb3NpdGlvbiA9PT0gMCAmJlxuICAgICAgICAgICAgZXZlbnRTZXQuaW5wdXRDdXJzb3JQb3NpdGlvbiA9PT0gMCAmJlxuICAgICAgICAgICAgZXZlbnRTZXQuZXZlbnQua2V5Q29kZSA9PT0gQkFDS1NQQUNFICYmXG4gICAgICAgICAgICB0eXBlb2YgZXZlbnRTZXQuc2VsZWN0aW9uTGVuZ3RoID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgZXZlbnRTZXQuc2VsZWN0aW9uTGVuZ3RoID4gMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgbGFzdEl0ZW0gPSBsYXN0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlSXRlbSh7IGl0ZW06IGxhc3RJdGVtLCBpc01vdXNlOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGV2ZW50U2V0LmlucHV0Q3Vyc29yUG9zaXRpb24gPSB1bmRlZmluZWQ7IC8vIHNldCB0byBudWxsIHRvIHByZXZlbnQgY29udGludWluZyBpbiB0aGUgc3RyZWFtXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eXBlb2YgZXZlbnRTZXQuaW5wdXRDdXJzb3JQb3NpdGlvbiA9PT0gJ251bWJlcicgJiYgZXZlbnRTZXQuaW5wdXRDdXJzb3JQb3NpdGlvbiA+IDApIHtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbEN1cnNvclBvc2l0aW9uID0gMDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50U2V0LnZpcnR1YWxDdXJzb3JQb3NpdGlvbiA9PT0gLTEgJiYgZXZlbnRTZXQuZXZlbnQua2V5Q29kZSA9PT0gQVJST1dfUklHSFQpIHtcbiAgICAgICAgICAgIGV2ZW50U2V0LmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbktleWJvYXJkU2VsZWN0QWN0aW9uJC5uZXh0KEtleWJvYXJkU2VsZWN0QWN0aW9uLlVOU0VMRUNUKTtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbEN1cnNvclBvc2l0aW9uID0gMDtcbiAgICAgICAgICAgIGV2ZW50U2V0LmlucHV0Q3Vyc29yUG9zaXRpb24gPSB1bmRlZmluZWQ7IC8vIHNldCB0byBudWxsIHRvIHByZXZlbnQgY29udGludWluZyBpbiB0aGUgc3RyZWFtXG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKChldmVudFNldCkgPT4gZXZlbnRTZXQuaW5wdXRDdXJzb3JQb3NpdGlvbiA9PT0gMCksXG4gICAgICAgIG1hcCgoZXZlbnRTZXQpID0+IGV2ZW50U2V0LmV2ZW50KSxcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gaW5jbHVkZXMoZXZlbnQua2V5Q29kZSwgW0FSUk9XX1JJR0hULCBBUlJPV19MRUZULCBCQUNLU1BBQ0VdKSksXG4gICAgICAgIG1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLnZpcnR1YWxDdXJzb3JQb3NpdGlvbiA9IE11bHRpU2VsZWN0Q29tcG9uZW50LmNhbGN1bGF0ZU5ld0N1cnNvclBvc3Rpb25PbktleWJvYXJkTmF2aWdhdGlvbihcbiAgICAgICAgICAgIHRoaXMudmlydHVhbEN1cnNvclBvc2l0aW9uLFxuICAgICAgICAgICAgZXZlbnQua2V5Q29kZVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGN1cnNvclBvc2l0aW9uOiB0aGlzLnZpcnR1YWxDdXJzb3JQb3NpdGlvbixcbiAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgocG9zaXRpb25TZXQpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3Rpb24gPSBNdWx0aVNlbGVjdENvbXBvbmVudC5nZXRLZXlib2FyZFNlbGVjdEFjdGlvbihwb3NpdGlvblNldC5jdXJzb3JQb3NpdGlvbiwgcG9zaXRpb25TZXQuZXZlbnQua2V5Q29kZSk7XG4gICAgICAgICAgaWYgKGFjdGlvbiA9PT0gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uTkVYVCkge1xuICAgICAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBtb3ZpbmcgaW4gdGhlIGlucHV0IGZpZWxkLCB3aGlsZSB3ZSBhcmUgc3RpbGwgaW4gdGhlIHNlbGVjdGlvbiBpdGVtc1xuICAgICAgICAgICAgcG9zaXRpb25TZXQuZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuc2VsZWN0aW9uS2V5Ym9hcmRTZWxlY3RBY3Rpb24kKTtcblxuICAgIGNvbnN0IGlucHV0S2V5Ym9hcmRFdmVudHMkID0gb2JzZXJ2YWJsZUZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihzb3VyY2VFbGVtZW50LCAna2V5ZG93bicpO1xuXG4gICAgaW5wdXRLZXlib2FyZEV2ZW50cyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBpbmNsdWRlcyhldmVudC5rZXlDb2RlLCBbQVJST1dfVVAsIEFSUk9XX0RPV05dKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfSk7XG5cbiAgICBpbnB1dEtleWJvYXJkRXZlbnRzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSB8fCBldmVudC5rZXlDb2RlID09PSBUQUIpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSAmJiB0aGlzLmRyb3Bkb3duT3Blbikge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVuLm5leHQoZmFsc2UpO1xuICAgICAgfSk7XG5cbiAgICBpbnB1dEtleWJvYXJkRXZlbnRzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGluY2x1ZGVzKGV2ZW50LmtleUNvZGUsIFtFTlRFUiwgQVJST1dfVVAsIEFSUk9XX0RPV05dKSksXG4gICAgICAgIG1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgICAgICAgIHJldHVybiBLZXlib2FyZFNlbGVjdEFjdGlvbi5FWEVDVVRFO1xuICAgICAgICAgICAgY2FzZSBBUlJPV19VUDpcbiAgICAgICAgICAgICAgcmV0dXJuIEtleWJvYXJkU2VsZWN0QWN0aW9uLlBSRVY7XG4gICAgICAgICAgICBjYXNlIEFSUk9XX0RPV046XG4gICAgICAgICAgICAgIHJldHVybiBLZXlib2FyZFNlbGVjdEFjdGlvbi5ORVhUO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5vcHRpb25zS2V5Ym9hcmRTZWxlY3RBY3Rpb24kKTtcblxuICAgIGlucHV0S2V5Ym9hcmRFdmVudHMkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gaW5jbHVkZXMoZXZlbnQua2V5Q29kZSwgW0VOVEVSLCBBUlJPV19ET1dOXSkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9wZW4ubmV4dCh0cnVlKSk7XG4gIH1cblxuICBhZGRJdGVtVG9TZWxlY3Rpb24ob3B0aW9uOiBhbnkpIHtcbiAgICBpZiAob3B0aW9uICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbiA9IFsuLi4odGhpcy5zZWxlY3Rpb24gfHwgW10pXS5jb25jYXQob3B0aW9uKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc2VsZWN0aW9uXSk7XG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShbLi4udGhpcy5zZWxlY3Rpb25dKTtcbiAgICB9XG4gICAgdGhpcy5yZXNldFNlbGVjdFN0YXRlKCk7XG4gIH1cblxuICByZW1vdmVJdGVtKG9wdGlvblRvUmVtb3ZlOiBNdWx0aVNlbGVjdFJlbW92ZUl0ZW1FdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHByZXZPcHRpb25JbmRleCA9IGZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24gPT09IG9wdGlvblRvUmVtb3ZlLml0ZW0sIHRoaXMuc2VsZWN0aW9uKTtcbiAgICBjb25zdCBwcmV2U2VsZWN0aW9uTGVuZ2h0ID0gdGhpcy5zZWxlY3Rpb24/Lmxlbmd0aCA/PyAwO1xuICAgIHRoaXMuc2VsZWN0aW9uID0gX2ZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24gIT09IG9wdGlvblRvUmVtb3ZlLml0ZW0sIHRoaXMuc2VsZWN0aW9uKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc2VsZWN0aW9uXSk7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoWy4uLnRoaXMuc2VsZWN0aW9uXSk7XG5cbiAgICBpZiAocHJldk9wdGlvbkluZGV4ID09PSBwcmV2U2VsZWN0aW9uTGVuZ2h0IC0gMSB8fCBvcHRpb25Ub1JlbW92ZS5pc01vdXNlKSB7XG4gICAgICB0aGlzLnJlc2V0U2VsZWN0U3RhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aXJ0dWFsQ3Vyc29yUG9zaXRpb24rKztcbiAgICB9XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UoX3ZhbHVlOiBhbnlbXSkge31cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnlbXSkge1xuICAgIHRoaXMuc2VsZWN0aW9uID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoX2ZuOiBhbnkpIHt9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJkcm9wZG93bk9wZW5cIiBjbGFzcz1cImJhY2tkcm9wXCIgKGNsaWNrKT1cImhhbmRsZUJhY2tkcm9wQ2xpY2soJGV2ZW50KVwiPjwvZGl2PlxuPGRpdlxuICBbbHhNYXJrSW52YWxpZF09XCJtYXJrSW52YWxpZFwiXG4gIGNsYXNzPVwic2VsZWN0Q29udGFpbmVyXCJcbiAgW2NsYXNzLm9wZW5dPVwiZHJvcGRvd25PcGVuXCJcbiAgW2NsYXNzLnRvcF09XCIoZHJvcGRvd25EaXJlY3Rpb24kIHwgYXN5bmMpID09PSAnVE9QJ1wiXG4gIFtjbGFzcy5ib3R0b21dPVwiKGRyb3Bkb3duRGlyZWN0aW9uJCB8IGFzeW5jKSA9PT0gJ0JPVFRPTSdcIlxuICBbY2xhc3MuZm9jdXNlZF09XCJpc0lucHV0Rm9jdXNlZFwiXG4gIFtjbGFzcy5oYXNTZWxlY3Rpb25dPVwic2VsZWN0aW9uICYmIHNlbGVjdGlvbi5sZW5ndGggPiAwXCJcbiAgW2NsYXNzLnNtYWxsU2l6ZV09XCJzaXplID09PSAnc21hbGwnXCJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudC50YXJnZXQgPT09IHRvZ2dsZSlcIlxuPlxuICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRDaG9pY2VzQ29udGFpbmVyXCI+XG4gICAgPGRpdiAqbmdJZj1cIihzZWxlY3Rpb24/Lmxlbmd0aCA9PT0gMCB8fCAhc2VsZWN0aW9uKSAmJiAhcXVlcnlDb250cm9sPy52YWx1ZVwiIGNsYXNzPVwicGxhY2Vob2xkZXJcIiBbYXR0ci50aXRsZV09XCJwbGFjZWhvbGRlclwiPlxuICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2VsZWN0aW9uXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCIucGlsbHNcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPGx4LXJlc3BvbnNpdmUtaW5wdXRcbiAgICAgIChmb2N1cyk9XCJpc0lucHV0Rm9jdXNlZCA9IHRydWVcIlxuICAgICAgKGJsdXIpPVwiaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTsgYmx1ci5lbWl0KClcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cInF1ZXJ5Q29udHJvbFwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgPjwvbHgtcmVzcG9uc2l2ZS1pbnB1dD5cbiAgICA8aSAjdG9nZ2xlIFtoaWRkZW5dPVwiZGlzYWJsZWRcIiBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm9wdGlvbnNDb250YWluZXJcIiBbc3R5bGUud2lkdGhdPVwiZHJvcGRvd25XaWR0aFwiICNvcHRpb25zQ29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkcm9wZG93bk9wZW5cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wZG93blRtcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkcm9wZG93bj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLmRyb3Bkb3duQ29tcG9uZW50XCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
@@ -0,0 +1,81 @@
|
|
1
|
+
import { Component, EventEmitter, forwardRef, HostListener, Inject, Input, Optional, Output } from '@angular/core';
|
2
|
+
import { OptionGroupComponent } from '../option-group/option-group.component';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "@angular/common";
|
5
|
+
import * as i2 from "../option-group/option-group.component";
|
6
|
+
export class OptionComponent {
|
7
|
+
constructor(group, elementRef) {
|
8
|
+
this.group = group;
|
9
|
+
this.elementRef = elementRef;
|
10
|
+
this.selected = false;
|
11
|
+
this.isHighlighted = false;
|
12
|
+
this.disabled = false;
|
13
|
+
/**
|
14
|
+
* Is true when option has a selection nature like sorting.
|
15
|
+
* In this case we show a check icon on the left to indicate selection.
|
16
|
+
*
|
17
|
+
* Is false when option represents a one time action like printing.
|
18
|
+
* Cannot have selectedState when Option has dropdown
|
19
|
+
*/
|
20
|
+
this.hasSelectedState = true;
|
21
|
+
this.select = new EventEmitter();
|
22
|
+
this.highlight = new EventEmitter();
|
23
|
+
this.selectedClick = new EventEmitter();
|
24
|
+
this.hasSubdropdown = false;
|
25
|
+
this.isSuboption = false;
|
26
|
+
}
|
27
|
+
selectOption(event) {
|
28
|
+
if (this.disabled || this.hasSubdropdown) {
|
29
|
+
if (event) {
|
30
|
+
event.stopImmediatePropagation();
|
31
|
+
}
|
32
|
+
}
|
33
|
+
else {
|
34
|
+
if (this.selected) {
|
35
|
+
return this.selectedClick.emit();
|
36
|
+
}
|
37
|
+
if (this.group) {
|
38
|
+
this.group.selectOption(this.value);
|
39
|
+
}
|
40
|
+
this.select.emit(this.value);
|
41
|
+
}
|
42
|
+
}
|
43
|
+
setSelected(value) {
|
44
|
+
this.selected = value;
|
45
|
+
}
|
46
|
+
setHighlighted(value) {
|
47
|
+
this.isHighlighted = value;
|
48
|
+
this.highlight.emit(this.isHighlighted);
|
49
|
+
}
|
50
|
+
}
|
51
|
+
OptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: OptionComponent, deps: [{ token: forwardRef(() => OptionGroupComponent), optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
52
|
+
OptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: OptionComponent, selector: "lx-option", inputs: { selected: "selected", isHighlighted: "isHighlighted", disabled: "disabled", value: "value", hasSelectedState: "hasSelectedState" }, outputs: { select: "select", highlight: "highlight", selectedClick: "selectedClick" }, host: { listeners: { "click": "selectOption($event)" } }, ngImport: i0, template: "<li\n class=\"option\"\n [class.selectedState]=\"hasSelectedState && !hasSubdropdown\"\n [class.highlighted]=\"isHighlighted\"\n [class.selected]=\"selected\"\n [class.disabled]=\"disabled\"\n [class.hasSubdropdown]=\"hasSubdropdown\"\n>\n <i *ngIf=\"hasSelectedState && selected\" class=\"far fa-check\"></i>\n <ng-content></ng-content>\n <i *ngIf=\"hasSubdropdown\" class=\"far fa-chevron-right\"></i>\n</li>\n", styles: [":host{display:block}.option{line-height:23px;padding:4px 12px;cursor:pointer;color:#2a303d}.option:hover{background-color:#e1e5eb}.option.selectedState{padding-left:28px}.option.selected{cursor:default;color:var(--lx-primarybutton-backgroundcolor)}.option.highlighted{background:#eaedf1}.option.disabled{opacity:.6}.option.hasSubdropdown{padding-right:28px}.fa-check{line-height:23px;position:absolute;left:8px}.fa-chevron-right{line-height:23px;position:absolute;right:8px;font-size:8px}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: OptionComponent, decorators: [{
|
54
|
+
type: Component,
|
55
|
+
args: [{ selector: 'lx-option', template: "<li\n class=\"option\"\n [class.selectedState]=\"hasSelectedState && !hasSubdropdown\"\n [class.highlighted]=\"isHighlighted\"\n [class.selected]=\"selected\"\n [class.disabled]=\"disabled\"\n [class.hasSubdropdown]=\"hasSubdropdown\"\n>\n <i *ngIf=\"hasSelectedState && selected\" class=\"far fa-check\"></i>\n <ng-content></ng-content>\n <i *ngIf=\"hasSubdropdown\" class=\"far fa-chevron-right\"></i>\n</li>\n", styles: [":host{display:block}.option{line-height:23px;padding:4px 12px;cursor:pointer;color:#2a303d}.option:hover{background-color:#e1e5eb}.option.selectedState{padding-left:28px}.option.selected{cursor:default;color:var(--lx-primarybutton-backgroundcolor)}.option.highlighted{background:#eaedf1}.option.disabled{opacity:.6}.option.hasSubdropdown{padding-right:28px}.fa-check{line-height:23px;position:absolute;left:8px}.fa-chevron-right{line-height:23px;position:absolute;right:8px;font-size:8px}\n"] }]
|
56
|
+
}], ctorParameters: function () { return [{ type: i2.OptionGroupComponent, decorators: [{
|
57
|
+
type: Optional
|
58
|
+
}, {
|
59
|
+
type: Inject,
|
60
|
+
args: [forwardRef(() => OptionGroupComponent)]
|
61
|
+
}] }, { type: i0.ElementRef }]; }, propDecorators: { selected: [{
|
62
|
+
type: Input
|
63
|
+
}], isHighlighted: [{
|
64
|
+
type: Input
|
65
|
+
}], disabled: [{
|
66
|
+
type: Input
|
67
|
+
}], value: [{
|
68
|
+
type: Input
|
69
|
+
}], hasSelectedState: [{
|
70
|
+
type: Input
|
71
|
+
}], select: [{
|
72
|
+
type: Output
|
73
|
+
}], highlight: [{
|
74
|
+
type: Output
|
75
|
+
}], selectedClick: [{
|
76
|
+
type: Output
|
77
|
+
}], selectOption: [{
|
78
|
+
type: HostListener,
|
79
|
+
args: ['click', ['$event']]
|
80
|
+
}] } });
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2NvbXBvbmVudHMvb3B0aW9uL29wdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL29wdGlvbi9vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7QUFPOUUsTUFBTSxPQUFPLGVBQWU7SUFzQzFCLFlBQ3NFLEtBQTJCLEVBQ3hGLFVBQW1DO1FBRDBCLFVBQUssR0FBTCxLQUFLLENBQXNCO1FBQ3hGLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBdkNuQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkM7Ozs7OztXQU1HO1FBQ00scUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBRWhDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU3QyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztJQXNCMUIsQ0FBQztJQW5CSixZQUFZLENBQUMsS0FBa0I7UUFDN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEMsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7YUFDbEM7U0FDRjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDbEM7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQU9ELFdBQVcsQ0FBQyxLQUFjO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7NEdBbERVLGVBQWUsa0JBdUNKLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnR0F2Q2pELGVBQWUsZ1ZDUjVCLHVhQVlBOzJGREphLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsV0FBVzs7MEJBMkNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztxRUF0Q25ELFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFRRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFNUCxZQUFZO3NCQURYLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3B0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9vcHRpb24tZ3JvdXAvb3B0aW9uLWdyb3VwLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LW9wdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnb3B0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ29wdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE9wdGlvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzSGlnaGxpZ2h0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdmFsdWU6IGFueTtcbiAgLyoqXG4gICAqIElzIHRydWUgd2hlbiBvcHRpb24gaGFzIGEgc2VsZWN0aW9uIG5hdHVyZSBsaWtlIHNvcnRpbmcuXG4gICAqIEluIHRoaXMgY2FzZSB3ZSBzaG93IGEgY2hlY2sgaWNvbiBvbiB0aGUgbGVmdCB0byBpbmRpY2F0ZSBzZWxlY3Rpb24uXG4gICAqXG4gICAqIElzIGZhbHNlIHdoZW4gb3B0aW9uIHJlcHJlc2VudHMgYSBvbmUgdGltZSBhY3Rpb24gbGlrZSBwcmludGluZy5cbiAgICogQ2Fubm90IGhhdmUgc2VsZWN0ZWRTdGF0ZSB3aGVuIE9wdGlvbiBoYXMgZHJvcGRvd25cbiAgICovXG4gIEBJbnB1dCgpIGhhc1NlbGVjdGVkU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBoaWdobGlnaHQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGhhc1N1YmRyb3Bkb3duOiBib29sZWFuID0gZmFsc2U7XG4gIGlzU3Vib3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBzZWxlY3RPcHRpb24oZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5oYXNTdWJkcm9wZG93bikge1xuICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENsaWNrLmVtaXQoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICAgIHRoaXMuZ3JvdXAuc2VsZWN0T3B0aW9uKHRoaXMudmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT3B0aW9uR3JvdXBDb21wb25lbnQpKSBwcml2YXRlIGdyb3VwOiBPcHRpb25Hcm91cENvbXBvbmVudCxcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7fVxuXG4gIHNldFNlbGVjdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHZhbHVlO1xuICB9XG5cbiAgc2V0SGlnaGxpZ2h0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzSGlnaGxpZ2h0ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLmhpZ2hsaWdodC5lbWl0KHRoaXMuaXNIaWdobGlnaHRlZCk7XG4gIH1cbn1cbiIsIjxsaVxuICBjbGFzcz1cIm9wdGlvblwiXG4gIFtjbGFzcy5zZWxlY3RlZFN0YXRlXT1cImhhc1NlbGVjdGVkU3RhdGUgJiYgIWhhc1N1YmRyb3Bkb3duXCJcbiAgW2NsYXNzLmhpZ2hsaWdodGVkXT1cImlzSGlnaGxpZ2h0ZWRcIlxuICBbY2xhc3Muc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3MuaGFzU3ViZHJvcGRvd25dPVwiaGFzU3ViZHJvcGRvd25cIlxuPlxuICA8aSAqbmdJZj1cImhhc1NlbGVjdGVkU3RhdGUgJiYgc2VsZWN0ZWRcIiBjbGFzcz1cImZhciBmYS1jaGVja1wiPjwvaT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8aSAqbmdJZj1cImhhc1N1YmRyb3Bkb3duXCIgY2xhc3M9XCJmYXIgZmEtY2hldnJvbi1yaWdodFwiPjwvaT5cbjwvbGk+XG4iXX0=
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "@angular/common";
|
4
|
+
export class OptionGroupComponent {
|
5
|
+
constructor() {
|
6
|
+
/**
|
7
|
+
* Is true when option children have a selected state.
|
8
|
+
* In this case we want to align the padding of the group label with the lx-options'.
|
9
|
+
*/
|
10
|
+
this.hasSelectedState = true;
|
11
|
+
this.select = new EventEmitter();
|
12
|
+
}
|
13
|
+
selectOption(value) {
|
14
|
+
this.select.emit(value);
|
15
|
+
}
|
16
|
+
}
|
17
|
+
OptionGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: OptionGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
18
|
+
OptionGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: OptionGroupComponent, selector: "lx-option-group", inputs: { hasSelectedState: "hasSelectedState", label: "label" }, outputs: { select: "select" }, ngImport: i0, template: "<li>\n <span *ngIf=\"label\" class=\"groupLabel\" [class.selectedState]=\"hasSelectedState\">{{ label }}</span>\n <ul>\n <ng-content></ng-content>\n </ul>\n</li>\n", styles: [":host{display:block}:host:not(:first-child){border-top:solid 1px #eaedf1}ul{list-style:none;margin:0;padding-left:0}.groupLabel{display:block;line-height:23px;padding:4px 12px;color:#99a5bb;letter-spacing:.5px;font-weight:700;text-transform:uppercase}.groupLabel.selectedState{padding-left:28px}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: OptionGroupComponent, decorators: [{
|
20
|
+
type: Component,
|
21
|
+
args: [{ selector: 'lx-option-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<li>\n <span *ngIf=\"label\" class=\"groupLabel\" [class.selectedState]=\"hasSelectedState\">{{ label }}</span>\n <ul>\n <ng-content></ng-content>\n </ul>\n</li>\n", styles: [":host{display:block}:host:not(:first-child){border-top:solid 1px #eaedf1}ul{list-style:none;margin:0;padding-left:0}.groupLabel{display:block;line-height:23px;padding:4px 12px;color:#99a5bb;letter-spacing:.5px;font-weight:700;text-transform:uppercase}.groupLabel.selectedState{padding-left:28px}\n"] }]
|
22
|
+
}], propDecorators: { hasSelectedState: [{
|
23
|
+
type: Input
|
24
|
+
}], label: [{
|
25
|
+
type: Input
|
26
|
+
}], select: [{
|
27
|
+
type: Output
|
28
|
+
}] } });
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2NvbXBvbmVudHMvb3B0aW9uLWdyb3VwL29wdGlvbi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL29wdGlvbi1ncm91cC9vcHRpb24tZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUWhHLE1BQU0sT0FBTyxvQkFBb0I7SUFOakM7UUFPRTs7O1dBR0c7UUFDTSxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFJaEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FLdkM7SUFIQyxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDOztpSEFiVSxvQkFBb0I7cUdBQXBCLG9CQUFvQix3SkNSakMsMktBTUE7MkZERWEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzhCQU90QyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1vcHRpb24tZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJ29wdGlvbi1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydvcHRpb24tZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uR3JvdXBDb21wb25lbnQge1xuICAvKipcbiAgICogSXMgdHJ1ZSB3aGVuIG9wdGlvbiBjaGlsZHJlbiBoYXZlIGEgc2VsZWN0ZWQgc3RhdGUuXG4gICAqIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIGFsaWduIHRoZSBwYWRkaW5nIG9mIHRoZSBncm91cCBsYWJlbCB3aXRoIHRoZSBseC1vcHRpb25zJy5cbiAgICovXG4gIEBJbnB1dCgpIGhhc1NlbGVjdGVkU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgc2VsZWN0T3B0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdC5lbWl0KHZhbHVlKTtcbiAgfVxufVxuIiwiPGxpPlxuICA8c3BhbiAqbmdJZj1cImxhYmVsXCIgY2xhc3M9XCJncm91cExhYmVsXCIgW2NsYXNzLnNlbGVjdGVkU3RhdGVdPVwiaGFzU2VsZWN0ZWRTdGF0ZVwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICA8dWw+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3VsPlxuPC9saT5cbiJdfQ==
|