@leanix/components 0.2.229 → 0.2.232
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,201 @@
|
|
1
|
+
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
2
|
+
import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, forwardRef, HostListener, Input } from '@angular/core';
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
4
|
+
import { Subject } from 'rxjs';
|
5
|
+
import { takeUntil } from 'rxjs/operators';
|
6
|
+
import { PickerOptionComponent } from '../picker-option/picker-option.component';
|
7
|
+
import { PickerTriggerDirective } from './picker-trigger.directive';
|
8
|
+
import * as i0 from "@angular/core";
|
9
|
+
import * as i1 from "@angular/cdk/bidi";
|
10
|
+
import * as i2 from "@angular/common";
|
11
|
+
import * as i3 from "../../../core-ui/directives/autoclose.directive";
|
12
|
+
/**
|
13
|
+
* How to use:
|
14
|
+
* Provide the lx-picker with two kinds of ContentChildren:
|
15
|
+
* 1. A lxPickerTrigger, preferably a button element, which we use to open the dropdown on click or enter.
|
16
|
+
* 2. A list of <li> elements with an lx-picker-option attribute that own the option template as content children.
|
17
|
+
*
|
18
|
+
* You can use this component as part of a FormGroup or wire it up yourself by listening on the (select) output of the options.
|
19
|
+
*
|
20
|
+
* Example usage (non FormGroup style):
|
21
|
+
* <lx-picker listBoxAriaLabel="Awesome picker">
|
22
|
+
* <button lxPickerTrigger lx-button mode="outline" size="large" [square]="true" aria-label="Awesome picker" title="Awesome picker">
|
23
|
+
* <lx-icon [name]="selection.label" [color]="selection.value" fontAwsomeStyle="solid"></lx-icon>
|
24
|
+
* </button>
|
25
|
+
* <li *ngFor="let option of options" lx-picker-option [value]="option.value" [selected]="selection === option" (select)="selection = option" [optionId]="option.id">
|
26
|
+
* <lx-icon lx-picker-option [name]="option.label" [color]="option.value" fontAwsomeStyle="solid"></lx-icon>
|
27
|
+
* </li>
|
28
|
+
* </lx-picker>
|
29
|
+
*/
|
30
|
+
export class PickerComponent {
|
31
|
+
constructor(dir, cdRef) {
|
32
|
+
this.dir = dir;
|
33
|
+
this.cdRef = cdRef;
|
34
|
+
this.openDirection = 'right';
|
35
|
+
this._isFormControl = false;
|
36
|
+
this._open = false;
|
37
|
+
this._lastSelectWasByKeyManager = false;
|
38
|
+
this.destroyed$ = new Subject();
|
39
|
+
}
|
40
|
+
get activeDescendantsId() {
|
41
|
+
return this._activeDescendantsId;
|
42
|
+
}
|
43
|
+
set activeDescendantsId(value) {
|
44
|
+
this._activeDescendantsId = value;
|
45
|
+
this.cdRef.markForCheck();
|
46
|
+
}
|
47
|
+
get open() {
|
48
|
+
return this._open;
|
49
|
+
}
|
50
|
+
set open(value) {
|
51
|
+
this._open = value;
|
52
|
+
this.cdRef.markForCheck();
|
53
|
+
}
|
54
|
+
/**
|
55
|
+
* Returns a negative margin, that is used to move the picker dropdown to the left side of the picker trigger.
|
56
|
+
*/
|
57
|
+
get leftOffset() {
|
58
|
+
const dropdownWidth = 185;
|
59
|
+
return this.openDirection === 'left' ? `-${dropdownWidth - this._trigger.width}px` : '0px';
|
60
|
+
}
|
61
|
+
manageKeyboardEvents(event) {
|
62
|
+
if (this.open) {
|
63
|
+
const activeIndex = this.keyManager.activeItemIndex || 0;
|
64
|
+
switch (event.key) {
|
65
|
+
case 'Enter':
|
66
|
+
setTimeout(() => {
|
67
|
+
this.closePicker();
|
68
|
+
});
|
69
|
+
break;
|
70
|
+
case 'Escape':
|
71
|
+
case 'Tab':
|
72
|
+
this.setActivePickerOption(-1);
|
73
|
+
this.closePicker();
|
74
|
+
break;
|
75
|
+
case 'ArrowDown':
|
76
|
+
event.preventDefault();
|
77
|
+
const newDownIndex = this.keyManager.activeItemIndex === -1 ? 0 : activeIndex + 5;
|
78
|
+
this.setActivePickerOption(newDownIndex < this.options.length ? newDownIndex : activeIndex);
|
79
|
+
break;
|
80
|
+
case 'ArrowUp':
|
81
|
+
event.preventDefault();
|
82
|
+
const newUpIndex = this.keyManager.activeItemIndex === -1 ? this.options.length - 1 : activeIndex - 5;
|
83
|
+
this.setActivePickerOption(newUpIndex >= 0 ? newUpIndex : activeIndex);
|
84
|
+
break;
|
85
|
+
case 'ArrowLeft':
|
86
|
+
if (this.keyManager.activeItemIndex === -1) {
|
87
|
+
this.setActivePickerOption(this.options.length - 1);
|
88
|
+
}
|
89
|
+
else {
|
90
|
+
this.keyManager.onKeydown(event);
|
91
|
+
this.activeDescendantsId = this.keyManager.activeItem?.optionId;
|
92
|
+
}
|
93
|
+
break;
|
94
|
+
case 'Home':
|
95
|
+
event.preventDefault();
|
96
|
+
this.setActivePickerOption(0);
|
97
|
+
break;
|
98
|
+
case 'End':
|
99
|
+
event.preventDefault();
|
100
|
+
this.setActivePickerOption(this.options.length - 1);
|
101
|
+
break;
|
102
|
+
default:
|
103
|
+
// matches ArrowRight
|
104
|
+
this.keyManager.onKeydown(event);
|
105
|
+
this.activeDescendantsId = this.keyManager.activeItem?.optionId;
|
106
|
+
}
|
107
|
+
if (this.keyManager.activeItem) {
|
108
|
+
this._lastSelectWasByKeyManager = true;
|
109
|
+
this.propagateChange(this.keyManager.activeItem.value);
|
110
|
+
if (!this._isFormControl) {
|
111
|
+
this.keyManager.activeItem.selectOption();
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
}
|
116
|
+
ngAfterViewInit() {
|
117
|
+
this.keyManager = new ActiveDescendantKeyManager(this.options).withHorizontalOrientation(this.dir.value).withVerticalOrientation(true);
|
118
|
+
this.options.map((item) => {
|
119
|
+
item.select.pipe(takeUntil(this.destroyed$)).subscribe((value) => {
|
120
|
+
this.propagateChange(value);
|
121
|
+
if (value !== this.keyManager.activeItem?.value || !this._lastSelectWasByKeyManager) {
|
122
|
+
this.closePicker();
|
123
|
+
}
|
124
|
+
this._lastSelectWasByKeyManager = false;
|
125
|
+
});
|
126
|
+
});
|
127
|
+
this._trigger.clickEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {
|
128
|
+
this.toggleOpen();
|
129
|
+
});
|
130
|
+
}
|
131
|
+
ngOnDestroy() {
|
132
|
+
this.destroyed$.next();
|
133
|
+
}
|
134
|
+
closePicker() {
|
135
|
+
this.setActivePickerOption(-1);
|
136
|
+
this.open = false;
|
137
|
+
}
|
138
|
+
toggleOpen() {
|
139
|
+
this.open = !this.open;
|
140
|
+
if (this.open) {
|
141
|
+
this.onTouched();
|
142
|
+
}
|
143
|
+
this.setActivePickerOption(this.open === false ? -1 : this.options.toArray().findIndex((option) => option.selected));
|
144
|
+
}
|
145
|
+
setActivePickerOption(index) {
|
146
|
+
this.keyManager.setActiveItem(index);
|
147
|
+
if (this.keyManager.activeItem) {
|
148
|
+
this.activeDescendantsId = this.keyManager.activeItem.optionId;
|
149
|
+
}
|
150
|
+
else {
|
151
|
+
this.activeDescendantsId = undefined;
|
152
|
+
}
|
153
|
+
}
|
154
|
+
//#region Angular Forms API. This is only used when using the Picker inside a FormGroup
|
155
|
+
writeValue(value) {
|
156
|
+
this.options?.toArray().forEach((option) => (option.selected = option.value === value));
|
157
|
+
}
|
158
|
+
registerOnChange(fn) {
|
159
|
+
this.propagateChange = fn;
|
160
|
+
this._isFormControl = true;
|
161
|
+
}
|
162
|
+
registerOnTouched(fn) {
|
163
|
+
this.onTouched = fn;
|
164
|
+
}
|
165
|
+
propagateChange(_value) { }
|
166
|
+
onTouched() { }
|
167
|
+
}
|
168
|
+
PickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PickerComponent, deps: [{ token: i1.Directionality }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
169
|
+
PickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: PickerComponent, selector: "lx-picker", inputs: { listBoxAriaLabel: "listBoxAriaLabel", listBoxAriaLabelledBy: "listBoxAriaLabelledBy", openDirection: "openDirection" }, host: { listeners: { "document:keydown": "manageKeyboardEvents($event)" } }, providers: [
|
170
|
+
{
|
171
|
+
provide: NG_VALUE_ACCESSOR,
|
172
|
+
multi: true,
|
173
|
+
useExisting: forwardRef(() => PickerComponent)
|
174
|
+
}
|
175
|
+
], queries: [{ propertyName: "_trigger", first: true, predicate: PickerTriggerDirective, descendants: true }, { propertyName: "options", predicate: PickerOptionComponent }], ngImport: i0, template: "<div class=\"pickerContainer\">\n <ng-content select=\"[lxPickerTrigger]\"></ng-content>\n <ul\n class=\"pickerOptions\"\n *ngIf=\"open\"\n lxAutoclose\n (autoclose)=\"closePicker()\"\n role=\"listbox\"\n [style.margin-left]=\"leftOffset\"\n [attr.aria-activedescendant]=\"activeDescendantsId\"\n [attr.aria-label]=\"listBoxAriaLabel\"\n [attr.aria-labelledby]=\"listBoxAriaLabelledBy\"\n >\n <ng-content></ng-content>\n </ul>\n</div>\n", styles: [":host{display:inline-block;width:100%;position:relative}.pickerOptions{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;padding:4px;z-index:20;width:185px}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.AutocloseDirective, selector: "[lxAutoclose]", inputs: ["autocloseGroup"], outputs: ["autoclose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
176
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PickerComponent, decorators: [{
|
177
|
+
type: Component,
|
178
|
+
args: [{ selector: 'lx-picker', providers: [
|
179
|
+
{
|
180
|
+
provide: NG_VALUE_ACCESSOR,
|
181
|
+
multi: true,
|
182
|
+
useExisting: forwardRef(() => PickerComponent)
|
183
|
+
}
|
184
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"pickerContainer\">\n <ng-content select=\"[lxPickerTrigger]\"></ng-content>\n <ul\n class=\"pickerOptions\"\n *ngIf=\"open\"\n lxAutoclose\n (autoclose)=\"closePicker()\"\n role=\"listbox\"\n [style.margin-left]=\"leftOffset\"\n [attr.aria-activedescendant]=\"activeDescendantsId\"\n [attr.aria-label]=\"listBoxAriaLabel\"\n [attr.aria-labelledby]=\"listBoxAriaLabelledBy\"\n >\n <ng-content></ng-content>\n </ul>\n</div>\n", styles: [":host{display:inline-block;width:100%;position:relative}.pickerOptions{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;padding:4px;z-index:20;width:185px}\n"] }]
|
185
|
+
}], ctorParameters: function () { return [{ type: i1.Directionality }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { listBoxAriaLabel: [{
|
186
|
+
type: Input
|
187
|
+
}], listBoxAriaLabelledBy: [{
|
188
|
+
type: Input
|
189
|
+
}], openDirection: [{
|
190
|
+
type: Input
|
191
|
+
}], options: [{
|
192
|
+
type: ContentChildren,
|
193
|
+
args: [PickerOptionComponent]
|
194
|
+
}], _trigger: [{
|
195
|
+
type: ContentChild,
|
196
|
+
args: [PickerTriggerDirective]
|
197
|
+
}], manageKeyboardEvents: [{
|
198
|
+
type: HostListener,
|
199
|
+
args: ['document:keydown', ['$event']]
|
200
|
+
}] } });
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2NvbXBvbmVudHMvcGlja2VyL3BpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3BpY2tlci9waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFL0QsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBRXBFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQWNILE1BQU0sT0FBTyxlQUFlO0lBa0QxQixZQUFvQixHQUFtQixFQUFVLEtBQXdCO1FBQXJELFFBQUcsR0FBSCxHQUFHLENBQWdCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUF2Q2hFLGtCQUFhLEdBQXFCLE9BQU8sQ0FBQztRQWdDM0MsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUVkLCtCQUEwQixHQUFHLEtBQUssQ0FB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QUFDLGVBQWUsQ0FBQztTQUMvQztLQUNGLGdFQTRDYSxzQkFBc0IsNkRBSm5CLHFCQUFxQiw2QkN6RnhDLHdkQWdCQTsyRkRvQ2EsZUFBZTtrQkFiM0IsU0FBUzsrQkFDRSxXQUFXLGFBR1Y7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7eUJBQy9DO3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO3FJQU90QyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBS0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBMkJFLE9BQU87c0JBRGQsZUFBZTt1QkFBQyxxQkFBcUI7Z0JBSzlCLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxzQkFBc0I7Z0JBWXBDLG9CQUFvQjtzQkFEbkIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGlja2VyT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vcGlja2VyLW9wdGlvbi9waWNrZXItb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaWNrZXJUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi9waWNrZXItdHJpZ2dlci5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEhvdyB0byB1c2U6XG4gKiBQcm92aWRlIHRoZSBseC1waWNrZXIgd2l0aCB0d28ga2luZHMgb2YgQ29udGVudENoaWxkcmVuOlxuICogMS4gQSBseFBpY2tlclRyaWdnZXIsIHByZWZlcmFibHkgYSBidXR0b24gZWxlbWVudCwgd2hpY2ggd2UgdXNlIHRvIG9wZW4gdGhlIGRyb3Bkb3duIG9uIGNsaWNrIG9yIGVudGVyLlxuICogMi4gQSBsaXN0IG9mIDxsaT4gZWxlbWVudHMgd2l0aCBhbiBseC1waWNrZXItb3B0aW9uIGF0dHJpYnV0ZSB0aGF0IG93biB0aGUgb3B0aW9uIHRlbXBsYXRlIGFzIGNvbnRlbnQgY2hpbGRyZW4uXG4gKlxuICogWW91IGNhbiB1c2UgdGhpcyBjb21wb25lbnQgYXMgcGFydCBvZiBhIEZvcm1Hcm91cCBvciB3aXJlIGl0IHVwIHlvdXJzZWxmIGJ5IGxpc3RlbmluZyBvbiB0aGUgKHNlbGVjdCkgb3V0cHV0IG9mIHRoZSBvcHRpb25zLlxuICpcbiAqIEV4YW1wbGUgdXNhZ2UgKG5vbiBGb3JtR3JvdXAgc3R5bGUpOlxuICogPGx4LXBpY2tlciBsaXN0Qm94QXJpYUxhYmVsPVwiQXdlc29tZSBwaWNrZXJcIj5cbiAqICAgPGJ1dHRvbiBseFBpY2tlclRyaWdnZXIgbHgtYnV0dG9uIG1vZGU9XCJvdXRsaW5lXCIgc2l6ZT1cImxhcmdlXCIgW3NxdWFyZV09XCJ0cnVlXCIgYXJpYS1sYWJlbD1cIkF3ZXNvbWUgcGlja2VyXCIgdGl0bGU9XCJBd2Vzb21lIHBpY2tlclwiPlxuICogICAgICAgPGx4LWljb24gW25hbWVdPVwic2VsZWN0aW9uLmxhYmVsXCIgW2NvbG9yXT1cInNlbGVjdGlvbi52YWx1ZVwiIGZvbnRBd3NvbWVTdHlsZT1cInNvbGlkXCI+PC9seC1pY29uPlxuICogICAgPC9idXR0b24+XG4gKiAgICA8bGkgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCIgbHgtcGlja2VyLW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCIgW3NlbGVjdGVkXT1cInNlbGVjdGlvbiA9PT0gb3B0aW9uXCIgKHNlbGVjdCk9XCJzZWxlY3Rpb24gPSBvcHRpb25cIiBbb3B0aW9uSWRdPVwib3B0aW9uLmlkXCI+XG4gKiAgICAgICA8bHgtaWNvbiBseC1waWNrZXItb3B0aW9uIFtuYW1lXT1cIm9wdGlvbi5sYWJlbFwiIFtjb2xvcl09XCJvcHRpb24udmFsdWVcIiBmb250QXdzb21lU3R5bGU9XCJzb2xpZFwiPjwvbHgtaWNvbj5cbiAqICAgIDwvbGk+XG4gKiA8L2x4LXBpY2tlcj5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICdwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsncGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQaWNrZXJDb21wb25lbnQpXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEEgaHVtYW4tcmVhZGFibGUgc3RyaW5nIHZhbHVlIHdoaWNoIGlkZW50aWZpZXMgdGhlIGxpc3Rib3guXG4gICAqIElmIHRoZXJlJ3MgYSB2aXNpYmxlIGxhYmVsLCB0aGVuIGFyaWEtbGFiZWxsZWRieSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIHRvIHJlZmVyIHRvIHRoYXQgbGFiZWwuXG4gICAqL1xuICBASW5wdXQoKSBsaXN0Qm94QXJpYUxhYmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgdmlzaWJsZSBlbGVtZW50IHdoaWNoIGlkZW50aWZpZXMgdGhlIGxpc3Rib3guXG4gICAqIElmIHRoZXJlJ3Mgbm8gdmlzaWJsZSBsYWJlbCwgdGhlbiBhcmlhLWxhYmVsIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgdG8gaW5jbHVkZSBhIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KCkgbGlzdEJveEFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nO1xuICBASW5wdXQoKSBvcGVuRGlyZWN0aW9uOiAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0JztcblxuICBnZXQgYWN0aXZlRGVzY2VuZGFudHNJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlRGVzY2VuZGFudHNJZDtcbiAgfVxuICBzZXQgYWN0aXZlRGVzY2VuZGFudHNJZCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYWN0aXZlRGVzY2VuZGFudHNJZCA9IHZhbHVlO1xuICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgb3BlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbjtcbiAgfVxuICBzZXQgb3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX29wZW4gPSB2YWx1ZTtcbiAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBuZWdhdGl2ZSBtYXJnaW4sIHRoYXQgaXMgdXNlZCB0byBtb3ZlIHRoZSBwaWNrZXIgZHJvcGRvd24gdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgcGlja2VyIHRyaWdnZXIuXG4gICAqL1xuICBnZXQgbGVmdE9mZnNldCgpIHtcbiAgICBjb25zdCBkcm9wZG93bldpZHRoID0gMTg1O1xuICAgIHJldHVybiB0aGlzLm9wZW5EaXJlY3Rpb24gPT09ICdsZWZ0JyA/IGAtJHtkcm9wZG93bldpZHRoIC0gdGhpcy5fdHJpZ2dlci53aWR0aH1weGAgOiAnMHB4JztcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oUGlja2VyT3B0aW9uQ29tcG9uZW50KVxuICBwcml2YXRlIG9wdGlvbnMhOiBRdWVyeUxpc3Q8UGlja2VyT3B0aW9uQ29tcG9uZW50PjtcbiAga2V5TWFuYWdlciE6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPFBpY2tlck9wdGlvbkNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZChQaWNrZXJUcmlnZ2VyRGlyZWN0aXZlKVxuICBwcml2YXRlIF90cmlnZ2VyITogUGlja2VyVHJpZ2dlckRpcmVjdGl2ZTtcbiAgcHJpdmF0ZSBfaXNGb3JtQ29udHJvbCA9IGZhbHNlO1xuICBwcml2YXRlIF9vcGVuID0gZmFsc2U7XG4gIHByaXZhdGUgX2FjdGl2ZURlc2NlbmRhbnRzSWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2xhc3RTZWxlY3RXYXNCeUtleU1hbmFnZXIgPSBmYWxzZTtcblxuICByZWFkb25seSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpcjogRGlyZWN0aW9uYWxpdHksIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBtYW5hZ2VLZXlib2FyZEV2ZW50cyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCB8fCAwO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICBjYXNlICdUYWInOlxuICAgICAgICAgIHRoaXMuc2V0QWN0aXZlUGlja2VyT3B0aW9uKC0xKTtcbiAgICAgICAgICB0aGlzLmNsb3NlUGlja2VyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjb25zdCBuZXdEb3duSW5kZXggPSB0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4ID09PSAtMSA/IDAgOiBhY3RpdmVJbmRleCArIDU7XG4gICAgICAgICAgdGhpcy5zZXRBY3RpdmVQaWNrZXJPcHRpb24obmV3RG93bkluZGV4IDwgdGhpcy5vcHRpb25zLmxlbmd0aCA/IG5ld0Rvd25JbmRleCA6IGFjdGl2ZUluZGV4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjb25zdCBuZXdVcEluZGV4ID0gdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCA9PT0gLTEgPyB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMSA6IGFjdGl2ZUluZGV4IC0gNTtcbiAgICAgICAgICB0aGlzLnNldEFjdGl2ZVBpY2tlck9wdGlvbihuZXdVcEluZGV4ID49IDAgPyBuZXdVcEluZGV4IDogYWN0aXZlSW5kZXgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgIGlmICh0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVQaWNrZXJPcHRpb24odGhpcy5vcHRpb25zLmxlbmd0aCAtIDEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudHNJZCA9IHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtPy5vcHRpb25JZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5zZXRBY3RpdmVQaWNrZXJPcHRpb24oMCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLnNldEFjdGl2ZVBpY2tlck9wdGlvbih0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgLy8gbWF0Y2hlcyBBcnJvd1JpZ2h0XG4gICAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50c0lkID0gdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/Lm9wdGlvbklkO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XG4gICAgICAgIHRoaXMuX2xhc3RTZWxlY3RXYXNCeUtleU1hbmFnZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbS52YWx1ZSk7XG4gICAgICAgIGlmICghdGhpcy5faXNGb3JtQ29udHJvbCkge1xuICAgICAgICAgIHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtLnNlbGVjdE9wdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMua2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcih0aGlzLm9wdGlvbnMpLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5kaXIudmFsdWUpLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKHRydWUpO1xuXG4gICAgdGhpcy5vcHRpb25zLm1hcCgoaXRlbTogUGlja2VyT3B0aW9uQ29tcG9uZW50KSA9PiB7XG4gICAgICBpdGVtLnNlbGVjdC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodmFsdWUpO1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtPy52YWx1ZSB8fCAhdGhpcy5fbGFzdFNlbGVjdFdhc0J5S2V5TWFuYWdlcikge1xuICAgICAgICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9sYXN0U2VsZWN0V2FzQnlLZXlNYW5hZ2VyID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3RyaWdnZXIuY2xpY2tFdmVudCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudG9nZ2xlT3BlbigpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgfVxuXG4gIGNsb3NlUGlja2VyKCkge1xuICAgIHRoaXMuc2V0QWN0aXZlUGlja2VyT3B0aW9uKC0xKTtcbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHRvZ2dsZU9wZW4oKSB7XG4gICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgICB0aGlzLnNldEFjdGl2ZVBpY2tlck9wdGlvbih0aGlzLm9wZW4gPT09IGZhbHNlID8gLTEgOiB0aGlzLm9wdGlvbnMudG9BcnJheSgpLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWQpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlUGlja2VyT3B0aW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShpbmRleCk7XG4gICAgaWYgKHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XG4gICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRzSWQgPSB0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbS5vcHRpb25JZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50c0lkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8vI3JlZ2lvbiBBbmd1bGFyIEZvcm1zIEFQSS4gVGhpcyBpcyBvbmx5IHVzZWQgd2hlbiB1c2luZyB0aGUgUGlja2VyIGluc2lkZSBhIEZvcm1Hcm91cFxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMub3B0aW9ucz8udG9BcnJheSgpLmZvckVhY2goKG9wdGlvbikgPT4gKG9wdGlvbi5zZWxlY3RlZCA9IG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gICAgdGhpcy5faXNGb3JtQ29udHJvbCA9IHRydWU7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlKF92YWx1ZTogYW55KSB7fVxuICBwcml2YXRlIG9uVG91Y2hlZCgpIHt9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iLCI8ZGl2IGNsYXNzPVwicGlja2VyQ29udGFpbmVyXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltseFBpY2tlclRyaWdnZXJdXCI+PC9uZy1jb250ZW50PlxuICA8dWxcbiAgICBjbGFzcz1cInBpY2tlck9wdGlvbnNcIlxuICAgICpuZ0lmPVwib3BlblwiXG4gICAgbHhBdXRvY2xvc2VcbiAgICAoYXV0b2Nsb3NlKT1cImNsb3NlUGlja2VyKClcIlxuICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICBbc3R5bGUubWFyZ2luLWxlZnRdPVwibGVmdE9mZnNldFwiXG4gICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImFjdGl2ZURlc2NlbmRhbnRzSWRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGlzdEJveEFyaWFMYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxpc3RCb3hBcmlhTGFiZWxsZWRCeVwiXG4gID5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
|
@@ -0,0 +1,118 @@
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "@ngx-translate/core";
|
4
|
+
import * as i2 from "../icon/icon.component";
|
5
|
+
import * as i3 from "@angular/common";
|
6
|
+
export class PickerOptionComponent {
|
7
|
+
constructor(cdRef, translateService) {
|
8
|
+
this.cdRef = cdRef;
|
9
|
+
this.translateService = translateService;
|
10
|
+
this.NAME = 'PickerOptionComponent';
|
11
|
+
this.role = 'option';
|
12
|
+
this.ariaSelected = false;
|
13
|
+
this.selected = false;
|
14
|
+
this.isClearOption = false;
|
15
|
+
/**
|
16
|
+
* Emits the value.
|
17
|
+
*/
|
18
|
+
this.select = new EventEmitter();
|
19
|
+
this._highlighted = false;
|
20
|
+
}
|
21
|
+
get ariaLabelValue() {
|
22
|
+
if (this.isClearOption) {
|
23
|
+
return this.translateService.instant(`${this.NAME}.clearOption.label`);
|
24
|
+
}
|
25
|
+
return this.ariaLabel;
|
26
|
+
}
|
27
|
+
get titleValue() {
|
28
|
+
if (this.isClearOption) {
|
29
|
+
return this.translateService.instant(`${this.NAME}.clearOption.label`);
|
30
|
+
}
|
31
|
+
return this.ariaLabel;
|
32
|
+
}
|
33
|
+
get id() {
|
34
|
+
return this.optionId;
|
35
|
+
}
|
36
|
+
/**
|
37
|
+
* This property is true, when the option was selected by mouse click or by the
|
38
|
+
* ActiveDescendantKeyManager calling setActiveStyles().
|
39
|
+
* It's false when the ActiveDescendantKeyManager calls setInactiveStyles().
|
40
|
+
* Is used by the PickerComponent to find the current active option.
|
41
|
+
*/
|
42
|
+
get highlighted() {
|
43
|
+
return this._highlighted;
|
44
|
+
}
|
45
|
+
set highlighted(value) {
|
46
|
+
this._highlighted = value;
|
47
|
+
this.cdRef.markForCheck();
|
48
|
+
}
|
49
|
+
ngOnInit() {
|
50
|
+
if (this.selected) {
|
51
|
+
this.ariaSelected = true;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
manageClickEvents() {
|
55
|
+
this.selectOption();
|
56
|
+
}
|
57
|
+
setActiveStyles() {
|
58
|
+
this.ariaSelected = true;
|
59
|
+
this.highlighted = true;
|
60
|
+
}
|
61
|
+
setInactiveStyles() {
|
62
|
+
this.ariaSelected = false;
|
63
|
+
this.highlighted = false;
|
64
|
+
}
|
65
|
+
/**
|
66
|
+
* Triggers the EventEmitter select() that should emit, when an option was selected.
|
67
|
+
* This function is used in the PickerComponent when an option was selected.
|
68
|
+
*/
|
69
|
+
selectOption() {
|
70
|
+
this.select.emit(this.value);
|
71
|
+
}
|
72
|
+
}
|
73
|
+
PickerOptionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PickerOptionComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
74
|
+
PickerOptionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: PickerOptionComponent, selector: "li[lx-picker-option]", inputs: { optionId: "optionId", ariaLabel: "ariaLabel", value: "value", selected: "selected", isClearOption: "isClearOption" }, outputs: { select: "select" }, host: { listeners: { "click": "manageClickEvents()" }, properties: { "attr.role": "this.role", "attr.aria-selected": "this.ariaSelected", "attr.aria-label": "this.ariaLabelValue", "attr.title": "this.titleValue", "id": "this.id", "class.selected": "this.selected", "class.clearOption": "this.isClearOption", "class.highlighted": "this.highlighted" } }, ngImport: i0, template: "<lx-icon *ngIf=\"isClearOption\" name=\"slash\" color=\"#d8d8d8\"></lx-icon>\n<ng-content *ngIf=\"!isClearOption\"></ng-content>\n", styles: [":host{display:inline-block;cursor:pointer;width:35px;height:35px;line-height:35px;text-align:center;border:1px solid transparent;border-radius:3px}:host.clearOption{border:1px solid #cfd5df}:host.highlighted,:host.selected{border:1px solid #b2bccc;cursor:default}:host:hover{border:1px solid #b2bccc}:host:focus{outline:0}\n"], components: [{ type: i2.IconComponent, selector: "lx-icon", inputs: ["name", "color", "fontAwsomeStyle", "size", "title"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PickerOptionComponent, decorators: [{
|
76
|
+
type: Component,
|
77
|
+
args: [{ selector: 'li[lx-picker-option]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<lx-icon *ngIf=\"isClearOption\" name=\"slash\" color=\"#d8d8d8\"></lx-icon>\n<ng-content *ngIf=\"!isClearOption\"></ng-content>\n", styles: [":host{display:inline-block;cursor:pointer;width:35px;height:35px;line-height:35px;text-align:center;border:1px solid transparent;border-radius:3px}:host.clearOption{border:1px solid #cfd5df}:host.highlighted,:host.selected{border:1px solid #b2bccc;cursor:default}:host:hover{border:1px solid #b2bccc}:host:focus{outline:0}\n"] }]
|
78
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateService }]; }, propDecorators: { role: [{
|
79
|
+
type: HostBinding,
|
80
|
+
args: ['attr.role']
|
81
|
+
}], ariaSelected: [{
|
82
|
+
type: HostBinding,
|
83
|
+
args: ['attr.aria-selected']
|
84
|
+
}], ariaLabelValue: [{
|
85
|
+
type: HostBinding,
|
86
|
+
args: ['attr.aria-label']
|
87
|
+
}], titleValue: [{
|
88
|
+
type: HostBinding,
|
89
|
+
args: ['attr.title']
|
90
|
+
}], id: [{
|
91
|
+
type: HostBinding,
|
92
|
+
args: ['id']
|
93
|
+
}], optionId: [{
|
94
|
+
type: Input
|
95
|
+
}], ariaLabel: [{
|
96
|
+
type: Input
|
97
|
+
}], value: [{
|
98
|
+
type: Input
|
99
|
+
}], selected: [{
|
100
|
+
type: HostBinding,
|
101
|
+
args: ['class.selected']
|
102
|
+
}, {
|
103
|
+
type: Input
|
104
|
+
}], isClearOption: [{
|
105
|
+
type: HostBinding,
|
106
|
+
args: ['class.clearOption']
|
107
|
+
}, {
|
108
|
+
type: Input
|
109
|
+
}], select: [{
|
110
|
+
type: Output
|
111
|
+
}], highlighted: [{
|
112
|
+
type: HostBinding,
|
113
|
+
args: ['class.highlighted']
|
114
|
+
}], manageClickEvents: [{
|
115
|
+
type: HostListener,
|
116
|
+
args: ['click']
|
117
|
+
}] } });
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3BpY2tlci1vcHRpb24vcGlja2VyLW9wdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3BpY2tlci1vcHRpb24vcGlja2VyLW9wdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDOzs7OztBQVN2QixNQUFNLE9BQU8scUJBQXFCO0lBb0RoQyxZQUFvQixLQUF3QixFQUFVLGdCQUFrQztRQUFwRSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFuRC9FLFNBQUksR0FBRyx1QkFBdUIsQ0FBQztRQUNkLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDUCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQTJCaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNkLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ2pFOztXQUVHO1FBQ08sV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFlbkMsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFFOEQsQ0FBQztJQWhENUYsSUFDVyxjQUFjO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUNXLFVBQVU7UUFDbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLG9CQUFvQixDQUFDLENBQUM7U0FDeEU7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQ1csRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBZUQ7Ozs7O09BS0c7SUFDSCxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEtBQWM7UUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBS0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztTQUMxQjtJQUNILENBQUM7SUFHRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7a0hBakZVLHFCQUFxQjtzR0FBckIscUJBQXFCLDRqQkNwQmxDLG9JQUVBOzJGRGtCYSxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBRUUsc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU07dUlBSXJCLElBQUk7c0JBQTdCLFdBQVc7dUJBQUMsV0FBVztnQkFDVyxZQUFZO3NCQUE5QyxXQUFXO3VCQUFDLG9CQUFvQjtnQkFFdEIsY0FBYztzQkFEeEIsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBUW5CLFVBQVU7c0JBRHBCLFdBQVc7dUJBQUMsWUFBWTtnQkFRZCxFQUFFO3NCQURaLFdBQVc7dUJBQUMsSUFBSTtnQkFTUixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNrQyxRQUFRO3NCQUEvQyxXQUFXO3VCQUFDLGdCQUFnQjs7c0JBQUcsS0FBSztnQkFDTSxhQUFhO3NCQUF2RCxXQUFXO3VCQUFDLG1CQUFtQjs7c0JBQUcsS0FBSztnQkFJOUIsTUFBTTtzQkFBZixNQUFNO2dCQVFILFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBbUJoQyxpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhpZ2hsaWdodGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaVtseC1waWNrZXItb3B0aW9uXScsXG4gIHRlbXBsYXRlVXJsOiAncGlja2VyLW9wdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydwaWNrZXItb3B0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tlck9wdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEhpZ2hsaWdodGFibGUsIE9uSW5pdCB7XG4gIHJlYWRvbmx5IE5BTUUgPSAnUGlja2VyT3B0aW9uQ29tcG9uZW50JztcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlID0gJ29wdGlvbic7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXNlbGVjdGVkJykgYXJpYVNlbGVjdGVkID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgcHVibGljIGdldCBhcmlhTGFiZWxWYWx1ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmlzQ2xlYXJPcHRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgJHt0aGlzLk5BTUV9LmNsZWFyT3B0aW9uLmxhYmVsYCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFyaWFMYWJlbDtcbiAgfVxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGl0bGUnKVxuICBwdWJsaWMgZ2V0IHRpdGxlVmFsdWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5pc0NsZWFyT3B0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYCR7dGhpcy5OQU1FfS5jbGVhck9wdGlvbi5sYWJlbGApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hcmlhTGFiZWw7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdpZCcpXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25JZDtcbiAgfVxuICAvKipcbiAgICogVGhlIG9wdGlvbklkIG11c3QgYmUgc2V0IHRvIGEgdW5pcXVlIHZhbHVlLiBJdCdzIHVzZWQgYXMgdmFsdWUgZm9yIHRoZSBpZCBwcm9wZXJ0eSBvZiBhbiBvcHRpb24uXG4gICAqIEFzIHRoZSB1c2VyIG5hdmlnYXRlcyB0aHJvdWdoIHRoZSBsaXN0IHZpYSBhcnJvdyBrZXlzLCB0aGUgYXJpYS1hY3RpdmVkZXNjZW5kYW50IHByb3BlcnR5IGZvciB0aGVcbiAgICogYnV0dG9uIGluIHRoZSBQaWNrZXJDb21wb25lbnQgaXMgYWRqdXN0ZWQgdG8gcmVmbGVjdCB0aGUgaWQgYXR0cmlidXRlIG9mIHRoZSBhY3RpdmUgb3B0aW9uLlxuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uSWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFyaWFMYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgdmFsdWUhOiBhbnk7XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2VsZWN0ZWQnKSBASW5wdXQoKSBzZWxlY3RlZCA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNsZWFyT3B0aW9uJykgQElucHV0KCkgaXNDbGVhck9wdGlvbiA9IGZhbHNlO1xuICAvKipcbiAgICogRW1pdHMgdGhlIHZhbHVlLlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBpcyB0cnVlLCB3aGVuIHRoZSBvcHRpb24gd2FzIHNlbGVjdGVkIGJ5IG1vdXNlIGNsaWNrIG9yIGJ5IHRoZVxuICAgKiBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciBjYWxsaW5nIHNldEFjdGl2ZVN0eWxlcygpLlxuICAgKiBJdCdzIGZhbHNlIHdoZW4gdGhlIEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIGNhbGxzIHNldEluYWN0aXZlU3R5bGVzKCkuXG4gICAqIElzIHVzZWQgYnkgdGhlIFBpY2tlckNvbXBvbmVudCB0byBmaW5kIHRoZSBjdXJyZW50IGFjdGl2ZSBvcHRpb24uXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhpZ2hsaWdodGVkJylcbiAgZ2V0IGhpZ2hsaWdodGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRlZDtcbiAgfVxuICBzZXQgaGlnaGxpZ2h0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oaWdobGlnaHRlZCA9IHZhbHVlO1xuICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLmFyaWFTZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBtYW5hZ2VDbGlja0V2ZW50cygpIHtcbiAgICB0aGlzLnNlbGVjdE9wdGlvbigpO1xuICB9XG5cbiAgc2V0QWN0aXZlU3R5bGVzKCkge1xuICAgIHRoaXMuYXJpYVNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLmhpZ2hsaWdodGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHNldEluYWN0aXZlU3R5bGVzKCkge1xuICAgIHRoaXMuYXJpYVNlbGVjdGVkID0gZmFsc2U7XG4gICAgdGhpcy5oaWdobGlnaHRlZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIHRoZSBFdmVudEVtaXR0ZXIgc2VsZWN0KCkgdGhhdCBzaG91bGQgZW1pdCwgd2hlbiBhbiBvcHRpb24gd2FzIHNlbGVjdGVkLlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gdGhlIFBpY2tlckNvbXBvbmVudCB3aGVuIGFuIG9wdGlvbiB3YXMgc2VsZWN0ZWQuXG4gICAqL1xuICBzZWxlY3RPcHRpb24oKSB7XG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxufVxuIiwiPGx4LWljb24gKm5nSWY9XCJpc0NsZWFyT3B0aW9uXCIgbmFtZT1cInNsYXNoXCIgY29sb3I9XCIjZDhkOGQ4XCI+PC9seC1pY29uPlxuPG5nLWNvbnRlbnQgKm5nSWY9XCIhaXNDbGVhck9wdGlvblwiPjwvbmctY29udGVudD5cbiJdfQ==
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "@angular/common";
|
4
|
+
export class PillItemComponent {
|
5
|
+
constructor() {
|
6
|
+
this.NAME = 'PillItemComponent';
|
7
|
+
this.disabled = false;
|
8
|
+
this.remove = new EventEmitter();
|
9
|
+
}
|
10
|
+
removePill(item, isMouse = false) {
|
11
|
+
if (!this.disabled) {
|
12
|
+
this.remove.emit({ item, isMouse });
|
13
|
+
}
|
14
|
+
}
|
15
|
+
}
|
16
|
+
PillItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PillItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
17
|
+
PillItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: PillItemComponent, selector: "lx-pill-item", inputs: { item: "item", label: "label", disabled: "disabled" }, outputs: { remove: "remove" }, host: { properties: { "class.disabled": "this.disabled" } }, ngImport: i0, template: "<span data-testid=\"pill-label\" class=\"pillLabel\">{{ label }}</span>\n<span *ngIf=\"!disabled\" data-testid=\"remove-pill-item\" (click)=\"removePill(item, true)\" class=\"remove far fa-times\"></span>\n", styles: [":host{margin:2px;border-radius:1px;border:solid 1px #e1e5eb;background-color:#e1e5eb;display:inline-block;padding:4px}:host:hover{background-color:#cfd5df;border:solid 1px #cfd5df;color:#526179}:host-context(.selected){background-color:#c2c9d6}.pillLabel{margin-left:4px;margin-right:4px;font-weight:400;font-style:normal;font-stretch:normal;line-height:normal;letter-spacing:normal;color:#526179;vertical-align:middle}.remove{vertical-align:middle;color:#8594ad;margin:0 4px}.remove:hover{cursor:pointer;color:#526179}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PillItemComponent, decorators: [{
|
19
|
+
type: Component,
|
20
|
+
args: [{ selector: 'lx-pill-item', template: "<span data-testid=\"pill-label\" class=\"pillLabel\">{{ label }}</span>\n<span *ngIf=\"!disabled\" data-testid=\"remove-pill-item\" (click)=\"removePill(item, true)\" class=\"remove far fa-times\"></span>\n", styles: [":host{margin:2px;border-radius:1px;border:solid 1px #e1e5eb;background-color:#e1e5eb;display:inline-block;padding:4px}:host:hover{background-color:#cfd5df;border:solid 1px #cfd5df;color:#526179}:host-context(.selected){background-color:#c2c9d6}.pillLabel{margin-left:4px;margin-right:4px;font-weight:400;font-style:normal;font-stretch:normal;line-height:normal;letter-spacing:normal;color:#526179;vertical-align:middle}.remove{vertical-align:middle;color:#8594ad;margin:0 4px}.remove:hover{cursor:pointer;color:#526179}\n"] }]
|
21
|
+
}], propDecorators: { item: [{
|
22
|
+
type: Input
|
23
|
+
}], label: [{
|
24
|
+
type: Input
|
25
|
+
}], disabled: [{
|
26
|
+
type: HostBinding,
|
27
|
+
args: ['class.disabled']
|
28
|
+
}, {
|
29
|
+
type: Input
|
30
|
+
}], remove: [{
|
31
|
+
type: Output
|
32
|
+
}] } });
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlsbC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2NvbXBvbmVudHMvcGlsbC1pdGVtL3BpbGwtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3BpbGwtaXRlbS9waWxsLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVFwRixNQUFNLE9BQU8saUJBQWlCO0lBTDlCO1FBTVcsU0FBSSxHQUFHLG1CQUFtQixDQUFDO1FBSUksYUFBUSxHQUFZLEtBQUssQ0FBQztRQUV4RCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQThCLENBQUM7S0FPbkU7SUFMQyxVQUFVLENBQUMsSUFBUyxFQUFFLFVBQW1CLEtBQUs7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7OzhHQWJVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGdOQ1I5QixnTkFFQTsyRkRNYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYzs4QkFPZixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNrQyxRQUFRO3NCQUEvQyxXQUFXO3VCQUFDLGdCQUFnQjs7c0JBQUcsS0FBSztnQkFFM0IsTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNdWx0aVNlbGVjdFJlbW92ZUl0ZW1FdmVudCB9IGZyb20gJy4uL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3QuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtcGlsbC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICdwaWxsLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsncGlsbC1pdGVtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGlsbEl0ZW1Db21wb25lbnQge1xuICByZWFkb25seSBOQU1FID0gJ1BpbGxJdGVtQ29tcG9uZW50JztcblxuICBASW5wdXQoKSBpdGVtITogYW55O1xuICBASW5wdXQoKSBsYWJlbCE6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXVsdGlTZWxlY3RSZW1vdmVJdGVtRXZlbnQ+KCk7XG5cbiAgcmVtb3ZlUGlsbChpdGVtOiBhbnksIGlzTW91c2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5yZW1vdmUuZW1pdCh7IGl0ZW0sIGlzTW91c2UgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8c3BhbiBkYXRhLXRlc3RpZD1cInBpbGwtbGFiZWxcIiBjbGFzcz1cInBpbGxMYWJlbFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuPHNwYW4gKm5nSWY9XCIhZGlzYWJsZWRcIiBkYXRhLXRlc3RpZD1cInJlbW92ZS1waWxsLWl0ZW1cIiAoY2xpY2spPVwicmVtb3ZlUGlsbChpdGVtLCB0cnVlKVwiIGNsYXNzPVwicmVtb3ZlIGZhciBmYS10aW1lc1wiPjwvc3Bhbj5cbiJdfQ==
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, EventEmitter, HostBinding, Input, Output, TemplateRef } from '@angular/core';
|
2
|
+
import { merge } from 'rxjs';
|
3
|
+
import { delay, startWith, switchMap, takeUntil } from 'rxjs/operators';
|
4
|
+
import { KeyboardSelectDirective } from '../keyboard-select.directive';
|
5
|
+
import { PillItemComponent } from '../pill-item/pill-item.component';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
import * as i1 from "../pill-item/pill-item.component";
|
8
|
+
import * as i2 from "@angular/common";
|
9
|
+
import * as i3 from "../../directives/selectable-item.directive";
|
10
|
+
export class PillListComponent extends KeyboardSelectDirective {
|
11
|
+
constructor() {
|
12
|
+
super(...arguments);
|
13
|
+
this.pills = [];
|
14
|
+
this.disabled = false;
|
15
|
+
this.remove = new EventEmitter();
|
16
|
+
}
|
17
|
+
ngAfterViewInit() {
|
18
|
+
super.ngAfterViewInit();
|
19
|
+
if (this.pillTemplate) {
|
20
|
+
const removePillEvents = this.contentItems.changes.pipe(startWith(this.contentItems), switchMap(() => merge(...this.contentItems.map((item) => item.remove))), delay(0), takeUntil(this.destroyed$));
|
21
|
+
removePillEvents.subscribe(this.removePill.bind(this));
|
22
|
+
}
|
23
|
+
}
|
24
|
+
removePill(event) {
|
25
|
+
this.remove.emit(event);
|
26
|
+
}
|
27
|
+
removePillViaKeyboard(pill) {
|
28
|
+
this.remove.emit({ item: pill, isMouse: false });
|
29
|
+
}
|
30
|
+
trackByProp(prop) {
|
31
|
+
return (index, pill) => (prop ? pill[prop] : index);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
PillListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PillListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
35
|
+
PillListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: PillListComponent, selector: "lx-pill-list", inputs: { pills: "pills", labelKey: "labelKey", itemKey: "itemKey", disabled: "disabled" }, outputs: { remove: "remove" }, host: { properties: { "class.disabled": "this.disabled" } }, queries: [{ propertyName: "pillTemplate", first: true, predicate: ["pillTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "contentItems", predicate: PillItemComponent }], usesInheritance: true, ngImport: i0, template: "<ul class=\"pills\" #keyboardSelectContainer>\n <li\n *ngFor=\"let pill of pills; let index = index; trackBy: trackByProp(itemKey)\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (select)=\"removePillViaKeyboard(pill)\"\n class=\"pill\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"pillTemplate; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"pillTemplate; context: { $implicit: pill, index: index }\"></ng-container>\n </ng-container>\n <ng-template #defaultTemplate>\n <lx-pill-item\n [item]=\"pill\"\n [label]=\"labelKey ? pill[labelKey] : pill\"\n [disabled]=\"disabled\"\n (remove)=\"removePill($event)\"\n ></lx-pill-item>\n </ng-template>\n </li>\n</ul>\n", styles: [":host .pill{display:inline}:host.disabled{cursor:not-allowed}:host .pills{display:inline;margin:0!important;padding:0!important}\n"], components: [{ type: i1.PillItemComponent, selector: "lx-pill-item", inputs: ["item", "label", "disabled"], outputs: ["remove"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.SelectableItemDirective, selector: "[lxSelectableItem]", inputs: ["scrollInContainer", "lxSelectableItem"], outputs: ["select"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: PillListComponent, decorators: [{
|
37
|
+
type: Component,
|
38
|
+
args: [{ selector: 'lx-pill-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul class=\"pills\" #keyboardSelectContainer>\n <li\n *ngFor=\"let pill of pills; let index = index; trackBy: trackByProp(itemKey)\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (select)=\"removePillViaKeyboard(pill)\"\n class=\"pill\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"pillTemplate; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"pillTemplate; context: { $implicit: pill, index: index }\"></ng-container>\n </ng-container>\n <ng-template #defaultTemplate>\n <lx-pill-item\n [item]=\"pill\"\n [label]=\"labelKey ? pill[labelKey] : pill\"\n [disabled]=\"disabled\"\n (remove)=\"removePill($event)\"\n ></lx-pill-item>\n </ng-template>\n </li>\n</ul>\n", styles: [":host .pill{display:inline}:host.disabled{cursor:not-allowed}:host .pills{display:inline;margin:0!important;padding:0!important}\n"] }]
|
39
|
+
}], propDecorators: { pills: [{
|
40
|
+
type: Input
|
41
|
+
}], labelKey: [{
|
42
|
+
type: Input
|
43
|
+
}], itemKey: [{
|
44
|
+
type: Input
|
45
|
+
}], disabled: [{
|
46
|
+
type: HostBinding,
|
47
|
+
args: ['class.disabled']
|
48
|
+
}, {
|
49
|
+
type: Input
|
50
|
+
}], remove: [{
|
51
|
+
type: Output
|
52
|
+
}], pillTemplate: [{
|
53
|
+
type: ContentChild,
|
54
|
+
args: ['pillTemplate', { read: TemplateRef, static: true }]
|
55
|
+
}], contentItems: [{
|
56
|
+
type: ContentChildren,
|
57
|
+
args: [PillItemComponent, { emitDistinctChangesOnly: true }]
|
58
|
+
}] } });
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlsbC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2NvbXBvbmVudHMvcGlsbC1saXN0L3BpbGwtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3BpbGwtbGlzdC9waWxsLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBRU4sV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7OztBQVFyRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsdUJBQXVCO0lBTjlEOztRQU9XLFVBQUssR0FBVSxFQUFFLENBQUM7UUFPYSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRXhELFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBOEIsQ0FBQztLQXFDbkU7SUF4QkMsZUFBZTtRQUNiLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsTUFBTSxnQkFBZ0IsR0FBMkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM3RixTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUM1QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ3ZFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUMzQixDQUFDO1lBQ0YsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWlDO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFTO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sV0FBVyxDQUFDLElBQWE7UUFDOUIsT0FBTyxDQUFDLEtBQWEsRUFBRSxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7OzhHQTlDVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixpVUFvQlUsV0FBVyw2REFDaEMsaUJBQWlCLG9EQzlDcEMsazFCQXVCQTsyRkRFYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsY0FBYyxtQkFFUCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUl0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ2tDLFFBQVE7c0JBQS9DLFdBQVc7dUJBQUMsZ0JBQWdCOztzQkFBRyxLQUFLO2dCQUUzQixNQUFNO3NCQUFmLE1BQU07Z0JBVTRELFlBQVk7c0JBQTlFLFlBQVk7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNNLFlBQVk7c0JBQWxGLGVBQWU7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEtleWJvYXJkU2VsZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi4va2V5Ym9hcmQtc2VsZWN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNdWx0aVNlbGVjdFJlbW92ZUl0ZW1FdmVudCB9IGZyb20gJy4uL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IFBpbGxJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vcGlsbC1pdGVtL3BpbGwtaXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1waWxsLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJ3BpbGwtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdHlsZVVybHM6IFsncGlsbC1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGlsbExpc3RDb21wb25lbnQgZXh0ZW5kcyBLZXlib2FyZFNlbGVjdERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBwaWxsczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgbGFiZWxLZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQcm92aWRlIGFuIGl0ZW1LZXkgd2hpY2ggY29udGFpbnMgdGhlIHByb3BlcnR5IG5hbWUgaW4gZWFjaCBvYmplY3QgdG8gdW5pcXVlbHkgaWRlbnRpZnkgaXQuXG4gICAqIFRoaXMgd2lsbCBiZSB1c2VkIGluIHRoZSB0cmFja0J5IGZ1bmN0aW9uLlxuICAgKi9cbiAgQElucHV0KCkgaXRlbUtleT86IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXVsdGlTZWxlY3RSZW1vdmVJdGVtRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIElmIHlvdSBwcm92aWRlIGFuIDxuZy10ZW1wbGF0ZSAjcGlsbFRlbXBsYXRlPiwgaXQgd2lsbCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgaW5kaXZpZHVhbCBwaWxscyBpbnNpZGUgb2YgdGhlIGx4LW11bHRpLXNlbGVjdC5cbiAgICogVGhpcyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gYXBwbHkgc3BlY2lhbCBhdHRyaWJ1dGVzIG9yIENTUyBzdHlsaW5nIHRvIGluZGl2aWR1YWwgcGlsbHMuXG4gICAqIEV4YW1wbGU6XG4gICAqIDxuZy10ZW1wbGF0ZSAjcGlsbFRlbXBsYXRlIGxldC1waWxsPlxuICAgKiAgICA8bHgtcGlsbC1pdGVtIFtjbGFzcy5yZWFkT25seV09XCJpdGVtLnJlYWRPbmx5XCIgW2xhYmVsXT1cIml0ZW0ubGFiZWxcIiBbaXRlbV09XCJpdGVtXCI+PC9seC1waWxsLWl0ZW0+XG4gICAqIDwvbmctdGVtcGxhdGU+XG4gICAqL1xuICBAQ29udGVudENoaWxkKCdwaWxsVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgcGlsbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZHJlbihQaWxsSXRlbUNvbXBvbmVudCwgeyBlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZSB9KSBjb250ZW50SXRlbXMhOiBRdWVyeUxpc3Q8UGlsbEl0ZW1Db21wb25lbnQ+O1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICBpZiAodGhpcy5waWxsVGVtcGxhdGUpIHtcbiAgICAgIGNvbnN0IHJlbW92ZVBpbGxFdmVudHM6IE9ic2VydmFibGU8TXVsdGlTZWxlY3RSZW1vdmVJdGVtRXZlbnQ+ID0gdGhpcy5jb250ZW50SXRlbXMuY2hhbmdlcy5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5jb250ZW50SXRlbXMpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gbWVyZ2UoLi4udGhpcy5jb250ZW50SXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLnJlbW92ZSkpKSxcbiAgICAgICAgZGVsYXkoMCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApO1xuICAgICAgcmVtb3ZlUGlsbEV2ZW50cy5zdWJzY3JpYmUodGhpcy5yZW1vdmVQaWxsLmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVBpbGwoZXZlbnQ6IE11bHRpU2VsZWN0UmVtb3ZlSXRlbUV2ZW50KSB7XG4gICAgdGhpcy5yZW1vdmUuZW1pdChldmVudCk7XG4gIH1cblxuICByZW1vdmVQaWxsVmlhS2V5Ym9hcmQocGlsbDogYW55KSB7XG4gICAgdGhpcy5yZW1vdmUuZW1pdCh7IGl0ZW06IHBpbGwsIGlzTW91c2U6IGZhbHNlIH0pO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlQcm9wKHByb3A/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKGluZGV4OiBudW1iZXIsIHBpbGw6IGFueSkgPT4gKHByb3AgPyBwaWxsW3Byb3BdIDogaW5kZXgpO1xuICB9XG59XG4iLCI8dWwgY2xhc3M9XCJwaWxsc1wiICNrZXlib2FyZFNlbGVjdENvbnRhaW5lcj5cbiAgPGxpXG4gICAgKm5nRm9yPVwibGV0IHBpbGwgb2YgcGlsbHM7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5UHJvcChpdGVtS2V5KVwiXG4gICAgbHhTZWxlY3RhYmxlSXRlbVxuICAgIFtzY3JvbGxJbkNvbnRhaW5lcl09XCJrZXlib2FyZFNlbGVjdENvbnRhaW5lclwiXG4gICAgI2l0ZW1cbiAgICAoc2VsZWN0KT1cInJlbW92ZVBpbGxWaWFLZXlib2FyZChwaWxsKVwiXG4gICAgY2xhc3M9XCJwaWxsXCJcbiAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSwgKHNlbGVjdGVkSXRlbSQgfCBhc3luYyk/LmVsZW1lbnQpXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwaWxsVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRlbXBsYXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGlsbFRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcGlsbCwgaW5kZXg6IGluZGV4IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZW1wbGF0ZT5cbiAgICAgIDxseC1waWxsLWl0ZW1cbiAgICAgICAgW2l0ZW1dPVwicGlsbFwiXG4gICAgICAgIFtsYWJlbF09XCJsYWJlbEtleSA/IHBpbGxbbGFiZWxLZXldIDogcGlsbFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChyZW1vdmUpPVwicmVtb3ZlUGlsbCgkZXZlbnQpXCJcbiAgICAgID48L2x4LXBpbGwtaXRlbT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2xpPlxuPC91bD5cbiJdfQ==
|
@@ -0,0 +1,97 @@
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Output, ViewChild } from '@angular/core';
|
2
|
+
import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
3
|
+
import { Subject } from 'rxjs';
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
import * as i1 from "@angular/forms";
|
7
|
+
import * as i2 from "@angular/common";
|
8
|
+
export class ResponsiveInputComponent {
|
9
|
+
constructor() {
|
10
|
+
this.focus = new EventEmitter();
|
11
|
+
this.blur = new EventEmitter();
|
12
|
+
this.inputWidth$ = new Subject();
|
13
|
+
this.inputControl = new FormControl();
|
14
|
+
this.destroyed$ = new Subject();
|
15
|
+
}
|
16
|
+
ngAfterViewInit() {
|
17
|
+
// calculate size of input dynamic
|
18
|
+
this.inputControl.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((value) => {
|
19
|
+
this.propagateChange(value);
|
20
|
+
try {
|
21
|
+
const width = this.computeSearchInputWidth(this.inputWidth.nativeElement, value) + 1 + 'px';
|
22
|
+
this.inputWidth$.next(width);
|
23
|
+
}
|
24
|
+
catch (_e) {
|
25
|
+
/* empty catch */
|
26
|
+
}
|
27
|
+
});
|
28
|
+
}
|
29
|
+
ngOnDestroy() {
|
30
|
+
this.destroyed$.next();
|
31
|
+
}
|
32
|
+
focusInput() {
|
33
|
+
this.responsiveInput.nativeElement.focus();
|
34
|
+
}
|
35
|
+
resetInput() {
|
36
|
+
if (this.inputControl.value?.length > 0) {
|
37
|
+
this.inputControl.reset('', { emitEvent: false });
|
38
|
+
const width = this.computeSearchInputWidth(this.inputWidth.nativeElement, ' ') + 1 + 'px';
|
39
|
+
this.inputWidth$.next(width);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
/**
|
43
|
+
* Based on https://github.com/Semantic-Org/Semantic-UI-React/
|
44
|
+
* blob/25e382e40bb3102bb39944612643c0289cd1956b/src/modules/Dropdown/Dropdown.js#L1035
|
45
|
+
*/
|
46
|
+
computeSearchInputWidth(sizerRef, searchQuery) {
|
47
|
+
if (sizerRef && searchQuery) {
|
48
|
+
sizerRef.style.display = 'inline-block';
|
49
|
+
sizerRef.textContent = searchQuery;
|
50
|
+
const searchWidth = Math.ceil(sizerRef.getBoundingClientRect().width);
|
51
|
+
sizerRef.style.removeProperty('display');
|
52
|
+
return searchWidth;
|
53
|
+
}
|
54
|
+
return 0;
|
55
|
+
}
|
56
|
+
//#region Angular Forms
|
57
|
+
propagateChange(_value) { }
|
58
|
+
writeValue(newValue) {
|
59
|
+
if (newValue) {
|
60
|
+
this.value = newValue;
|
61
|
+
this.propagateChange(this.value);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
registerOnChange(fn) {
|
65
|
+
this.propagateChange = fn;
|
66
|
+
}
|
67
|
+
registerOnTouched(_fn) { }
|
68
|
+
}
|
69
|
+
ResponsiveInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ResponsiveInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
70
|
+
ResponsiveInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: ResponsiveInputComponent, selector: "lx-responsive-input", outputs: { focus: "focus", blur: "blur" }, providers: [
|
71
|
+
{
|
72
|
+
provide: NG_VALUE_ACCESSOR,
|
73
|
+
multi: true,
|
74
|
+
useExisting: forwardRef(() => ResponsiveInputComponent)
|
75
|
+
}
|
76
|
+
], viewQueries: [{ propertyName: "responsiveInput", first: true, predicate: ["responsiveInput"], descendants: true, static: true }, { propertyName: "inputWidth", first: true, predicate: ["inputWidth"], descendants: true, static: true }], ngImport: i0, template: "<span #inputWidth class=\"inputWidth\"></span>\n<input\n type=\"text\"\n class=\"responsiveInput\"\n (focus)=\"focus.emit()\"\n (blur)=\"blur.emit()\"\n [formControl]=\"inputControl\"\n #responsiveInput\n [style.width]=\"inputWidth$ | async\"\n/>\n", styles: [":host{display:inline-block}.inputWidth{display:none;height:0;overflow:hidden;position:absolute;white-space:pre;max-width:100%}.responsiveInput{border:0;padding:0;height:100%;max-width:100%}.responsiveInput::-ms-clear{display:none}.responsiveInput:focus{outline:0}\n"], directives: [{ type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: ResponsiveInputComponent, decorators: [{
|
78
|
+
type: Component,
|
79
|
+
args: [{ selector: 'lx-responsive-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
80
|
+
{
|
81
|
+
provide: NG_VALUE_ACCESSOR,
|
82
|
+
multi: true,
|
83
|
+
useExisting: forwardRef(() => ResponsiveInputComponent)
|
84
|
+
}
|
85
|
+
], template: "<span #inputWidth class=\"inputWidth\"></span>\n<input\n type=\"text\"\n class=\"responsiveInput\"\n (focus)=\"focus.emit()\"\n (blur)=\"blur.emit()\"\n [formControl]=\"inputControl\"\n #responsiveInput\n [style.width]=\"inputWidth$ | async\"\n/>\n", styles: [":host{display:inline-block}.inputWidth{display:none;height:0;overflow:hidden;position:absolute;white-space:pre;max-width:100%}.responsiveInput{border:0;padding:0;height:100%;max-width:100%}.responsiveInput::-ms-clear{display:none}.responsiveInput:focus{outline:0}\n"] }]
|
86
|
+
}], propDecorators: { focus: [{
|
87
|
+
type: Output
|
88
|
+
}], blur: [{
|
89
|
+
type: Output
|
90
|
+
}], responsiveInput: [{
|
91
|
+
type: ViewChild,
|
92
|
+
args: ['responsiveInput', { static: true }]
|
93
|
+
}], inputWidth: [{
|
94
|
+
type: ViewChild,
|
95
|
+
args: ['inputWidth', { static: true }]
|
96
|
+
}] } });
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3Jlc3BvbnNpdmUtaW5wdXQvcmVzcG9uc2l2ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3Jlc3BvbnNpdmUtaW5wdXQvcmVzcG9uc2l2ZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUVWLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQWUzQyxNQUFNLE9BQU8sd0JBQXdCO0lBYnJDO1FBY1ksVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDakMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFJakMsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3BDLGlCQUFZLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNqQyxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztLQWdFM0M7SUE1REMsZUFBZTtRQUNiLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFD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QkFDeUMsZUFBZTtzQkFBOUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0gsVUFBVTtzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtcmVzcG9uc2l2ZS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAncmVzcG9uc2l2ZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydyZXNwb25zaXZlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmVzcG9uc2l2ZUlucHV0Q29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSZXNwb25zaXZlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQE91dHB1dCgpIGZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQFZpZXdDaGlsZCgncmVzcG9uc2l2ZUlucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgcmVzcG9uc2l2ZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRXaWR0aCcsIHsgc3RhdGljOiB0cnVlIH0pIGlucHV0V2lkdGghOiBFbGVtZW50UmVmPEhUTUxTcGFuRWxlbWVudD47XG5cbiAgcmVhZG9ubHkgaW5wdXRXaWR0aCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGlucHV0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICByZWFkb25seSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICB2YWx1ZTogYW55O1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyBjYWxjdWxhdGUgc2l6ZSBvZiBpbnB1dCBkeW5hbWljXG4gICAgdGhpcy5pbnB1dENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5jb21wdXRlU2VhcmNoSW5wdXRXaWR0aCh0aGlzLmlucHV0V2lkdGgubmF0aXZlRWxlbWVudCwgdmFsdWUpICsgMSArICdweCc7XG4gICAgICAgIHRoaXMuaW5wdXRXaWR0aCQubmV4dCh3aWR0aCk7XG4gICAgICB9IGNhdGNoIChfZSkge1xuICAgICAgICAvKiBlbXB0eSBjYXRjaCAqL1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1c0lucHV0KCkge1xuICAgIHRoaXMucmVzcG9uc2l2ZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHJlc2V0SW5wdXQoKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRDb250cm9sLnZhbHVlPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmlucHV0Q29udHJvbC5yZXNldCgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmNvbXB1dGVTZWFyY2hJbnB1dFdpZHRoKHRoaXMuaW5wdXRXaWR0aC5uYXRpdmVFbGVtZW50LCAnICcpICsgMSArICdweCc7XG4gICAgICB0aGlzLmlucHV0V2lkdGgkLm5leHQod2lkdGgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vU2VtYW50aWMtT3JnL1NlbWFudGljLVVJLVJlYWN0L1xuICAgKiBibG9iLzI1ZTM4MmU0MGJiMzEwMmJiMzk5NDQ2MTI2NDNjMDI4OWNkMTk1NmIvc3JjL21vZHVsZXMvRHJvcGRvd24vRHJvcGRvd24uanMjTDEwMzVcbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZVNlYXJjaElucHV0V2lkdGgoc2l6ZXJSZWY6IEhUTUxTcGFuRWxlbWVudCwgc2VhcmNoUXVlcnk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKHNpemVyUmVmICYmIHNlYXJjaFF1ZXJ5KSB7XG4gICAgICBzaXplclJlZi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgICBzaXplclJlZi50ZXh0Q29udGVudCA9IHNlYXJjaFF1ZXJ5O1xuICAgICAgY29uc3Qgc2VhcmNoV2lkdGggPSBNYXRoLmNlaWwoc2l6ZXJSZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuICAgICAgc2l6ZXJSZWYuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTtcbiAgICAgIHJldHVybiBzZWFyY2hXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICAvLyNyZWdpb24gQW5ndWxhciBGb3Jtc1xuICBwcm9wYWdhdGVDaGFuZ2UoX3ZhbHVlOiBhbnkpIHt9XG5cbiAgd3JpdGVWYWx1ZShuZXdWYWx1ZTogYW55KSB7XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoX2ZuOiBhbnkpIHt9XG4gIC8vI2VuZHJlZ2lvblxufVxuIiwiPHNwYW4gI2lucHV0V2lkdGggY2xhc3M9XCJpbnB1dFdpZHRoXCI+PC9zcGFuPlxuPGlucHV0XG4gIHR5cGU9XCJ0ZXh0XCJcbiAgY2xhc3M9XCJyZXNwb25zaXZlSW5wdXRcIlxuICAoZm9jdXMpPVwiZm9jdXMuZW1pdCgpXCJcbiAgKGJsdXIpPVwiYmx1ci5lbWl0KClcIlxuICBbZm9ybUNvbnRyb2xdPVwiaW5wdXRDb250cm9sXCJcbiAgI3Jlc3BvbnNpdmVJbnB1dFxuICBbc3R5bGUud2lkdGhdPVwiaW5wdXRXaWR0aCQgfCBhc3luY1wiXG4vPlxuIl19
|