@angular/material-experimental 13.2.0-next.0 → 14.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +4 -4
- package/esm2020/column-resize/column-resize-directives/column-resize.mjs +4 -4
- package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize-flex.mjs +4 -4
- package/esm2020/column-resize/column-resize-directives/default-enabled-column-resize.mjs +4 -4
- package/esm2020/column-resize/column-resize-module.mjs +13 -13
- package/esm2020/column-resize/overlay-handle.mjs +4 -4
- package/esm2020/column-resize/resizable-directives/default-enabled-resizable.mjs +4 -4
- package/esm2020/column-resize/resizable-directives/resizable.mjs +4 -4
- package/esm2020/column-resize/resize-strategy.mjs +4 -4
- package/esm2020/mdc-autocomplete/autocomplete-origin.mjs +4 -4
- package/esm2020/mdc-autocomplete/autocomplete-trigger.mjs +4 -4
- package/esm2020/mdc-autocomplete/autocomplete.mjs +4 -4
- package/esm2020/mdc-autocomplete/module.mjs +5 -5
- package/esm2020/mdc-button/button-base.mjs +24 -21
- package/esm2020/mdc-button/button.mjs +9 -9
- package/esm2020/mdc-button/fab.mjs +18 -18
- package/esm2020/mdc-button/icon-button.mjs +11 -13
- package/esm2020/mdc-button/module.mjs +5 -5
- package/esm2020/mdc-card/card.mjs +43 -43
- package/esm2020/mdc-card/module.mjs +5 -5
- package/esm2020/mdc-checkbox/checkbox.mjs +9 -16
- package/esm2020/mdc-checkbox/module.mjs +6 -7
- package/esm2020/mdc-chips/chip-action.mjs +123 -0
- package/esm2020/mdc-chips/chip-edit-input.mjs +5 -5
- package/esm2020/mdc-chips/chip-grid.mjs +49 -99
- package/esm2020/mdc-chips/chip-icons.mjs +39 -101
- package/esm2020/mdc-chips/chip-input.mjs +6 -13
- package/esm2020/mdc-chips/chip-listbox.mjs +51 -156
- package/esm2020/mdc-chips/chip-option.mjs +84 -95
- package/esm2020/mdc-chips/chip-row.mjs +82 -90
- package/esm2020/mdc-chips/chip-set.mjs +119 -120
- package/esm2020/mdc-chips/chip.mjs +188 -180
- package/esm2020/mdc-chips/emit-event.mjs +27 -0
- package/esm2020/mdc-chips/module.mjs +8 -10
- package/esm2020/mdc-chips/testing/chip-harness.mjs +5 -1
- package/esm2020/mdc-chips/testing/chip-option-harness.mjs +2 -2
- package/esm2020/mdc-chips/testing/chip-row-harness.mjs +10 -1
- package/esm2020/mdc-core/option/index.mjs +5 -5
- package/esm2020/mdc-core/option/optgroup.mjs +4 -4
- package/esm2020/mdc-core/option/option.mjs +5 -5
- package/esm2020/mdc-core/public-api.mjs +2 -2
- package/esm2020/mdc-dialog/dialog-container.mjs +5 -5
- package/esm2020/mdc-dialog/dialog-content-directives.mjs +13 -13
- package/esm2020/mdc-dialog/dialog.mjs +4 -4
- package/esm2020/mdc-dialog/module.mjs +5 -5
- package/esm2020/mdc-form-field/directives/error.mjs +4 -4
- package/esm2020/mdc-form-field/directives/floating-label.mjs +4 -4
- package/esm2020/mdc-form-field/directives/hint.mjs +4 -4
- package/esm2020/mdc-form-field/directives/label.mjs +4 -4
- package/esm2020/mdc-form-field/directives/line-ripple.mjs +4 -4
- package/esm2020/mdc-form-field/directives/notched-outline.mjs +4 -4
- package/esm2020/mdc-form-field/directives/prefix.mjs +4 -4
- package/esm2020/mdc-form-field/directives/suffix.mjs +4 -4
- package/esm2020/mdc-form-field/form-field.mjs +21 -5
- package/esm2020/mdc-form-field/module.mjs +5 -5
- package/esm2020/mdc-input/input.mjs +5 -4
- package/esm2020/mdc-input/module.mjs +5 -5
- package/esm2020/mdc-list/action-list.mjs +5 -5
- package/esm2020/mdc-list/interactive-list-base.mjs +4 -4
- package/esm2020/mdc-list/list-base.mjs +138 -41
- package/esm2020/mdc-list/list-item-sections.mjs +138 -0
- package/esm2020/mdc-list/list-option.mjs +25 -17
- package/esm2020/mdc-list/list.mjs +24 -18
- package/esm2020/mdc-list/module.mjs +46 -23
- package/esm2020/mdc-list/nav-list.mjs +5 -5
- package/esm2020/mdc-list/public-api.mjs +3 -2
- package/esm2020/mdc-list/selection-list.mjs +8 -8
- package/esm2020/mdc-list/subheader.mjs +27 -0
- package/esm2020/mdc-list/testing/list-harness-filters.mjs +1 -1
- package/esm2020/mdc-list/testing/list-item-harness-base.mjs +100 -12
- package/esm2020/mdc-list/testing/public-api.mjs +2 -1
- package/esm2020/mdc-list/testing/selection-list-harness.mjs +1 -5
- package/esm2020/mdc-menu/directives.mjs +7 -7
- package/esm2020/mdc-menu/menu-item.mjs +4 -4
- package/esm2020/mdc-menu/menu.mjs +4 -4
- package/esm2020/mdc-menu/module.mjs +5 -5
- package/esm2020/mdc-paginator/module.mjs +5 -5
- package/esm2020/mdc-paginator/paginator.mjs +4 -4
- package/esm2020/mdc-progress-bar/module.mjs +5 -5
- package/esm2020/mdc-progress-bar/progress-bar.mjs +4 -4
- package/esm2020/mdc-progress-spinner/module.mjs +5 -5
- package/esm2020/mdc-progress-spinner/progress-spinner.mjs +4 -4
- package/esm2020/mdc-radio/module.mjs +5 -5
- package/esm2020/mdc-radio/radio.mjs +8 -8
- package/esm2020/mdc-select/module.mjs +5 -5
- package/esm2020/mdc-select/select.mjs +9 -9
- package/esm2020/mdc-sidenav/module.mjs +5 -5
- package/esm2020/mdc-slide-toggle/module.mjs +5 -5
- package/esm2020/mdc-slide-toggle/slide-toggle.mjs +5 -5
- package/esm2020/mdc-slider/global-change-and-input-listener.mjs +4 -4
- package/esm2020/mdc-slider/module.mjs +5 -5
- package/esm2020/mdc-slider/slider.mjs +33 -12
- package/esm2020/mdc-snack-bar/module.mjs +7 -7
- package/esm2020/mdc-snack-bar/public-api.mjs +2 -2
- package/esm2020/mdc-snack-bar/simple-snack-bar.mjs +7 -7
- package/esm2020/mdc-snack-bar/snack-bar-container.mjs +4 -4
- package/esm2020/mdc-snack-bar/snack-bar-content.mjs +10 -10
- package/esm2020/mdc-snack-bar/snack-bar.mjs +26 -12
- package/esm2020/mdc-table/cell.mjs +22 -22
- package/esm2020/mdc-table/module.mjs +5 -5
- package/esm2020/mdc-table/row.mjs +22 -22
- package/esm2020/mdc-table/table.mjs +9 -9
- package/esm2020/mdc-table/text-column.mjs +4 -4
- package/esm2020/mdc-tabs/module.mjs +10 -6
- package/esm2020/mdc-tabs/public-api.mjs +2 -2
- package/esm2020/mdc-tabs/tab-body.mjs +8 -8
- package/esm2020/mdc-tabs/tab-content.mjs +4 -4
- package/esm2020/mdc-tabs/tab-group.mjs +7 -7
- package/esm2020/mdc-tabs/tab-header.mjs +5 -5
- package/esm2020/mdc-tabs/tab-label-wrapper.mjs +4 -4
- package/esm2020/mdc-tabs/tab-label.mjs +4 -4
- package/esm2020/mdc-tabs/tab-nav-bar/tab-nav-bar.mjs +48 -11
- package/esm2020/mdc-tabs/tab.mjs +5 -5
- package/esm2020/mdc-tabs/testing/tab-harness-filters.mjs +1 -1
- package/esm2020/mdc-tabs/testing/tab-nav-bar-harness.mjs +13 -1
- package/esm2020/mdc-tabs/testing/tab-nav-panel-harness.mjs +27 -0
- package/esm2020/mdc-tooltip/module.mjs +5 -5
- package/esm2020/mdc-tooltip/tooltip.mjs +7 -7
- package/esm2020/menubar/menubar-item.mjs +4 -4
- package/esm2020/menubar/menubar-module.mjs +5 -5
- package/esm2020/menubar/menubar.mjs +4 -4
- package/esm2020/popover-edit/lens-directives.mjs +10 -10
- package/esm2020/popover-edit/popover-edit-module.mjs +5 -5
- package/esm2020/popover-edit/table-directives.mjs +13 -13
- package/esm2020/selection/row-selection.mjs +4 -4
- package/esm2020/selection/select-all.mjs +4 -4
- package/esm2020/selection/selection-column.mjs +4 -4
- package/esm2020/selection/selection-module.mjs +5 -5
- package/esm2020/selection/selection-toggle.mjs +4 -4
- package/esm2020/selection/selection.mjs +4 -4
- package/esm2020/version.mjs +1 -1
- package/fesm2015/column-resize.mjs +36 -36
- package/fesm2015/column-resize.mjs.map +1 -1
- package/fesm2015/material-experimental.mjs +1 -1
- package/fesm2015/material-experimental.mjs.map +1 -1
- package/fesm2015/mdc-autocomplete.mjs +13 -13
- package/fesm2015/mdc-autocomplete.mjs.map +1 -1
- package/fesm2015/mdc-button.mjs +61 -60
- package/fesm2015/mdc-button.mjs.map +1 -1
- package/fesm2015/mdc-card.mjs +46 -46
- package/fesm2015/mdc-card.mjs.map +1 -1
- package/fesm2015/mdc-checkbox.mjs +13 -21
- package/fesm2015/mdc-checkbox.mjs.map +1 -1
- package/fesm2015/mdc-chips/testing.mjs +18 -8
- package/fesm2015/mdc-chips/testing.mjs.map +1 -1
- package/fesm2015/mdc-chips.mjs +753 -1063
- package/fesm2015/mdc-chips.mjs.map +1 -1
- package/fesm2015/mdc-core.mjs +12 -12
- package/fesm2015/mdc-core.mjs.map +1 -1
- package/fesm2015/mdc-dialog.mjs +23 -23
- package/fesm2015/mdc-dialog.mjs.map +1 -1
- package/fesm2015/mdc-form-field.mjs +50 -32
- package/fesm2015/mdc-form-field.mjs.map +1 -1
- package/fesm2015/mdc-input.mjs +8 -7
- package/fesm2015/mdc-input.mjs.map +1 -1
- package/fesm2015/mdc-list/testing.mjs +110 -18
- package/fesm2015/mdc-list/testing.mjs.map +1 -1
- package/fesm2015/mdc-list.mjs +353 -148
- package/fesm2015/mdc-list.mjs.map +1 -1
- package/fesm2015/mdc-menu.mjs +16 -16
- package/fesm2015/mdc-menu.mjs.map +1 -1
- package/fesm2015/mdc-paginator.mjs +7 -7
- package/fesm2015/mdc-paginator.mjs.map +1 -1
- package/fesm2015/mdc-progress-bar.mjs +7 -7
- package/fesm2015/mdc-progress-bar.mjs.map +1 -1
- package/fesm2015/mdc-progress-spinner.mjs +7 -7
- package/fesm2015/mdc-progress-spinner.mjs.map +1 -1
- package/fesm2015/mdc-radio.mjs +11 -11
- package/fesm2015/mdc-radio.mjs.map +1 -1
- package/fesm2015/mdc-select.mjs +12 -12
- package/fesm2015/mdc-select.mjs.map +1 -1
- package/fesm2015/mdc-sidenav.mjs +4 -4
- package/fesm2015/mdc-sidenav.mjs.map +1 -1
- package/fesm2015/mdc-slide-toggle.mjs +8 -8
- package/fesm2015/mdc-slide-toggle.mjs.map +1 -1
- package/fesm2015/mdc-slider.mjs +39 -18
- package/fesm2015/mdc-slider.mjs.map +1 -1
- package/fesm2015/mdc-snack-bar.mjs +46 -41
- package/fesm2015/mdc-snack-bar.mjs.map +1 -1
- package/fesm2015/mdc-table.mjs +57 -57
- package/fesm2015/mdc-table.mjs.map +1 -1
- package/fesm2015/mdc-tabs/testing.mjs +34 -0
- package/fesm2015/mdc-tabs/testing.mjs.map +1 -1
- package/fesm2015/mdc-tabs.mjs +86 -45
- package/fesm2015/mdc-tabs.mjs.map +1 -1
- package/fesm2015/mdc-tooltip.mjs +10 -10
- package/fesm2015/mdc-tooltip.mjs.map +1 -1
- package/fesm2015/menubar.mjs +10 -10
- package/fesm2015/menubar.mjs.map +1 -1
- package/fesm2015/popover-edit.mjs +25 -25
- package/fesm2015/popover-edit.mjs.map +1 -1
- package/fesm2015/selection.mjs +19 -19
- package/fesm2015/selection.mjs.map +1 -1
- package/fesm2020/column-resize.mjs +36 -36
- package/fesm2020/column-resize.mjs.map +1 -1
- package/fesm2020/material-experimental.mjs +1 -1
- package/fesm2020/material-experimental.mjs.map +1 -1
- package/fesm2020/mdc-autocomplete.mjs +13 -13
- package/fesm2020/mdc-autocomplete.mjs.map +1 -1
- package/fesm2020/mdc-button.mjs +62 -61
- package/fesm2020/mdc-button.mjs.map +1 -1
- package/fesm2020/mdc-card.mjs +46 -46
- package/fesm2020/mdc-card.mjs.map +1 -1
- package/fesm2020/mdc-checkbox.mjs +13 -21
- package/fesm2020/mdc-checkbox.mjs.map +1 -1
- package/fesm2020/mdc-chips/testing.mjs +14 -1
- package/fesm2020/mdc-chips/testing.mjs.map +1 -1
- package/fesm2020/mdc-chips.mjs +733 -1068
- package/fesm2020/mdc-chips.mjs.map +1 -1
- package/fesm2020/mdc-core.mjs +12 -12
- package/fesm2020/mdc-core.mjs.map +1 -1
- package/fesm2020/mdc-dialog.mjs +23 -23
- package/fesm2020/mdc-dialog.mjs.map +1 -1
- package/fesm2020/mdc-form-field.mjs +48 -32
- package/fesm2020/mdc-form-field.mjs.map +1 -1
- package/fesm2020/mdc-input.mjs +8 -7
- package/fesm2020/mdc-input.mjs.map +1 -1
- package/fesm2020/mdc-list/testing.mjs +100 -16
- package/fesm2020/mdc-list/testing.mjs.map +1 -1
- package/fesm2020/mdc-list.mjs +351 -148
- package/fesm2020/mdc-list.mjs.map +1 -1
- package/fesm2020/mdc-menu.mjs +16 -16
- package/fesm2020/mdc-menu.mjs.map +1 -1
- package/fesm2020/mdc-paginator.mjs +7 -7
- package/fesm2020/mdc-paginator.mjs.map +1 -1
- package/fesm2020/mdc-progress-bar.mjs +7 -7
- package/fesm2020/mdc-progress-bar.mjs.map +1 -1
- package/fesm2020/mdc-progress-spinner.mjs +7 -7
- package/fesm2020/mdc-progress-spinner.mjs.map +1 -1
- package/fesm2020/mdc-radio.mjs +11 -11
- package/fesm2020/mdc-radio.mjs.map +1 -1
- package/fesm2020/mdc-select.mjs +12 -12
- package/fesm2020/mdc-select.mjs.map +1 -1
- package/fesm2020/mdc-sidenav.mjs +4 -4
- package/fesm2020/mdc-sidenav.mjs.map +1 -1
- package/fesm2020/mdc-slide-toggle.mjs +8 -8
- package/fesm2020/mdc-slide-toggle.mjs.map +1 -1
- package/fesm2020/mdc-slider.mjs +39 -18
- package/fesm2020/mdc-slider.mjs.map +1 -1
- package/fesm2020/mdc-snack-bar.mjs +44 -34
- package/fesm2020/mdc-snack-bar.mjs.map +1 -1
- package/fesm2020/mdc-table.mjs +57 -57
- package/fesm2020/mdc-table.mjs.map +1 -1
- package/fesm2020/mdc-tabs/testing.mjs +37 -0
- package/fesm2020/mdc-tabs/testing.mjs.map +1 -1
- package/fesm2020/mdc-tabs.mjs +86 -45
- package/fesm2020/mdc-tabs.mjs.map +1 -1
- package/fesm2020/mdc-tooltip.mjs +10 -10
- package/fesm2020/mdc-tooltip.mjs.map +1 -1
- package/fesm2020/menubar.mjs +10 -10
- package/fesm2020/menubar.mjs.map +1 -1
- package/fesm2020/popover-edit.mjs +25 -25
- package/fesm2020/popover-edit.mjs.map +1 -1
- package/fesm2020/selection.mjs +19 -19
- package/fesm2020/selection.mjs.map +1 -1
- package/mdc-button/_button-base.scss +28 -15
- package/mdc-button/_button-theme-private.scss +35 -28
- package/mdc-button/_button-theme.scss +115 -80
- package/mdc-button/_fab-theme.scss +31 -37
- package/mdc-button/_icon-button-theme.scss +15 -22
- package/mdc-button/button-base.d.ts +7 -5
- package/mdc-button/fab.d.ts +1 -1
- package/mdc-button/icon-button.d.ts +2 -2
- package/mdc-checkbox/_checkbox-theme.scss +39 -41
- package/mdc-checkbox/checkbox.d.ts +0 -6
- package/mdc-checkbox/module.d.ts +2 -3
- package/mdc-chips/_chips-theme.scss +53 -53
- package/mdc-chips/chip-action.d.ts +40 -0
- package/mdc-chips/chip-grid.d.ts +6 -24
- package/mdc-chips/chip-icons.d.ts +14 -37
- package/mdc-chips/chip-listbox.d.ts +4 -40
- package/mdc-chips/chip-option.d.ts +15 -11
- package/mdc-chips/chip-row.d.ts +13 -28
- package/mdc-chips/chip-set.d.ts +25 -42
- package/mdc-chips/chip.d.ts +37 -36
- package/mdc-chips/emit-event.d.ts +16 -0
- package/mdc-chips/module.d.ts +13 -12
- package/mdc-chips/testing/chip-harness.d.ts +1 -0
- package/mdc-chips/testing/chip-row-harness.d.ts +4 -0
- package/mdc-core/option/_option-theme.scss +3 -3
- package/mdc-core/option/option.d.ts +3 -3
- package/mdc-core/public-api.d.ts +1 -1
- package/mdc-form-field/_form-field-subscript.scss +11 -0
- package/mdc-form-field/form-field.d.ts +12 -1
- package/mdc-helpers/_focus-indicators.scss +15 -3
- package/mdc-list/_interactive-list-theme.scss +17 -11
- package/mdc-list/_list-option-theme.scss +2 -2
- package/mdc-list/_list-theme.scss +7 -3
- package/mdc-list/list-base.d.ts +56 -11
- package/mdc-list/list-item-sections.d.ts +77 -0
- package/mdc-list/list-option.d.ts +11 -8
- package/mdc-list/list.d.ts +6 -2
- package/mdc-list/module.d.ts +7 -5
- package/mdc-list/public-api.d.ts +2 -1
- package/mdc-list/subheader.d.ts +9 -0
- package/mdc-list/testing/list-harness-filters.d.ts +8 -0
- package/mdc-list/testing/list-item-harness-base.d.ts +36 -3
- package/mdc-list/testing/public-api.d.ts +1 -1
- package/mdc-list/testing/selection-list-harness.d.ts +0 -2
- package/mdc-radio/_radio-theme.scss +0 -6
- package/mdc-select/_select-theme.scss +6 -27
- package/mdc-slider/slider.d.ts +13 -1
- package/mdc-snack-bar/module.d.ts +1 -1
- package/mdc-snack-bar/public-api.d.ts +1 -1
- package/mdc-snack-bar/simple-snack-bar.d.ts +4 -4
- package/mdc-snack-bar/snack-bar.d.ts +17 -5
- package/mdc-table/_table-theme.scss +1 -1
- package/mdc-tabs/_tabs-common.scss +8 -1
- package/mdc-tabs/_tabs-theme.scss +8 -55
- package/mdc-tabs/module.d.ts +1 -1
- package/mdc-tabs/public-api.d.ts +1 -1
- package/mdc-tabs/tab-nav-bar/tab-nav-bar.d.ts +11 -0
- package/mdc-tabs/testing/tab-harness-filters.d.ts +3 -0
- package/mdc-tabs/testing/tab-nav-bar-harness.d.ts +3 -0
- package/mdc-tabs/testing/tab-nav-panel-harness.d.ts +23 -0
- package/mdc-theming/prebuilt/deeppurple-amber.css +1 -0
- package/mdc-theming/prebuilt/indigo-pink.css +1 -1
- package/mdc-theming/prebuilt/pink-bluegrey.css +1 -0
- package/mdc-theming/prebuilt/purple-green.css +1 -0
- package/mdc-tooltip/_tooltip-theme.scss +1 -1
- package/package.json +16 -2
- package/esm2020/mdc-chips/grid-focus-key-manager.mjs +0 -21
- package/esm2020/mdc-chips/grid-key-manager.mjs +0 -218
- package/esm2020/mdc-list/list-styling.mjs +0 -92
- package/mdc-chips/grid-focus-key-manager.d.ts +0 -28
- package/mdc-chips/grid-key-manager.d.ts +0 -116
- package/mdc-list/list-styling.d.ts +0 -40
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { QueryList } from '@angular/core';
|
|
9
|
-
import { Subject } from 'rxjs';
|
|
10
|
-
import { UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, HOME, END } from '@angular/cdk/keycodes';
|
|
11
|
-
/** The keys handled by the GridKeyManager keydown method. */
|
|
12
|
-
export const NAVIGATION_KEYS = [DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW];
|
|
13
|
-
/**
|
|
14
|
-
* This class manages keyboard events for grids. If you pass it a query list
|
|
15
|
-
* of GridKeyManagerRow, it will set the active cell correctly when arrow events occur.
|
|
16
|
-
*
|
|
17
|
-
* GridKeyManager expects that rows may change dynamically, but the cells for a given row are
|
|
18
|
-
* static. It also expects that all rows have the same number of cells.
|
|
19
|
-
*/
|
|
20
|
-
export class GridKeyManager {
|
|
21
|
-
constructor(_rows) {
|
|
22
|
-
this._rows = _rows;
|
|
23
|
-
this._activeRowIndex = -1;
|
|
24
|
-
this._activeColumnIndex = -1;
|
|
25
|
-
this._activeRow = null;
|
|
26
|
-
this._activeCell = null;
|
|
27
|
-
this._dir = 'ltr';
|
|
28
|
-
this._homeAndEnd = false;
|
|
29
|
-
/** Stream that emits whenever the active cell of the grid manager changes. */
|
|
30
|
-
this.change = new Subject();
|
|
31
|
-
// We allow for the rows to be an array because, in some cases, the consumer may
|
|
32
|
-
// not have access to a QueryList of the rows they want to manage (e.g. when the
|
|
33
|
-
// rows aren't being collected via `ViewChildren` or `ContentChildren`).
|
|
34
|
-
if (_rows instanceof QueryList) {
|
|
35
|
-
_rows.changes.subscribe((newRows) => {
|
|
36
|
-
if (this._activeRow) {
|
|
37
|
-
const newIndex = newRows.toArray().indexOf(this._activeRow);
|
|
38
|
-
if (newIndex > -1 && newIndex !== this._activeRowIndex) {
|
|
39
|
-
this._activeRowIndex = newIndex;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Configures the directionality of the key manager's horizontal movement.
|
|
47
|
-
* @param direction Direction which is considered forward movement across a row.
|
|
48
|
-
*
|
|
49
|
-
* If withDirectionality is not set, the default is 'ltr'.
|
|
50
|
-
*/
|
|
51
|
-
withDirectionality(direction) {
|
|
52
|
-
this._dir = direction;
|
|
53
|
-
return this;
|
|
54
|
-
}
|
|
55
|
-
setActiveCell(cell) {
|
|
56
|
-
const previousRowIndex = this._activeRowIndex;
|
|
57
|
-
const previousColumnIndex = this._activeColumnIndex;
|
|
58
|
-
this.updateActiveCell(cell);
|
|
59
|
-
if (this._activeRowIndex !== previousRowIndex ||
|
|
60
|
-
this._activeColumnIndex !== previousColumnIndex) {
|
|
61
|
-
this.change.next({ row: this._activeRowIndex, column: this._activeColumnIndex });
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Configures the key manager to activate the first and last items
|
|
66
|
-
* respectively when the Home or End key is pressed.
|
|
67
|
-
* @param enabled Whether pressing the Home or End key activates the first/last item.
|
|
68
|
-
*/
|
|
69
|
-
withHomeAndEnd(enabled = true) {
|
|
70
|
-
this._homeAndEnd = enabled;
|
|
71
|
-
return this;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Sets the active cell depending on the key event passed in.
|
|
75
|
-
* @param event Keyboard event to be used for determining which element should be active.
|
|
76
|
-
*/
|
|
77
|
-
onKeydown(event) {
|
|
78
|
-
const keyCode = event.keyCode;
|
|
79
|
-
switch (keyCode) {
|
|
80
|
-
case DOWN_ARROW:
|
|
81
|
-
this.setNextRowActive();
|
|
82
|
-
break;
|
|
83
|
-
case UP_ARROW:
|
|
84
|
-
this.setPreviousRowActive();
|
|
85
|
-
break;
|
|
86
|
-
case RIGHT_ARROW:
|
|
87
|
-
this._dir === 'rtl' ? this.setPreviousColumnActive() : this.setNextColumnActive();
|
|
88
|
-
break;
|
|
89
|
-
case LEFT_ARROW:
|
|
90
|
-
this._dir === 'rtl' ? this.setNextColumnActive() : this.setPreviousColumnActive();
|
|
91
|
-
break;
|
|
92
|
-
case HOME:
|
|
93
|
-
if (this._homeAndEnd) {
|
|
94
|
-
this.setFirstCellActive();
|
|
95
|
-
break;
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
case END:
|
|
101
|
-
if (this._homeAndEnd) {
|
|
102
|
-
this.setLastCellActive();
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
default:
|
|
109
|
-
// Note that we return here, in order to avoid preventing
|
|
110
|
-
// the default action of non-navigational keys.
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
event.preventDefault();
|
|
114
|
-
}
|
|
115
|
-
/** Index of the currently active row. */
|
|
116
|
-
get activeRowIndex() {
|
|
117
|
-
return this._activeRowIndex;
|
|
118
|
-
}
|
|
119
|
-
/** Index of the currently active column. */
|
|
120
|
-
get activeColumnIndex() {
|
|
121
|
-
return this._activeColumnIndex;
|
|
122
|
-
}
|
|
123
|
-
/** The active cell. */
|
|
124
|
-
get activeCell() {
|
|
125
|
-
return this._activeCell;
|
|
126
|
-
}
|
|
127
|
-
/** Sets the active cell to the first cell in the grid. */
|
|
128
|
-
setFirstCellActive() {
|
|
129
|
-
this._setActiveCellByIndex(0, 0);
|
|
130
|
-
}
|
|
131
|
-
/** Sets the active cell to the last cell in the grid. */
|
|
132
|
-
setLastCellActive() {
|
|
133
|
-
const lastRowIndex = this._rows.length - 1;
|
|
134
|
-
const lastRow = this._getRowsArray()[lastRowIndex];
|
|
135
|
-
this._setActiveCellByIndex(lastRowIndex, lastRow.cells.length - 1);
|
|
136
|
-
}
|
|
137
|
-
/** Sets the active row to the next row in the grid. Active column is unchanged. */
|
|
138
|
-
setNextRowActive() {
|
|
139
|
-
this._activeRowIndex < 0 ? this.setFirstCellActive() : this._setActiveCellByDelta(1, 0);
|
|
140
|
-
}
|
|
141
|
-
/** Sets the active row to the previous row in the grid. Active column is unchanged. */
|
|
142
|
-
setPreviousRowActive() {
|
|
143
|
-
this._setActiveCellByDelta(-1, 0);
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Sets the active column to the next column in the grid.
|
|
147
|
-
* Active row is unchanged, unless we reach the end of a row.
|
|
148
|
-
*/
|
|
149
|
-
setNextColumnActive() {
|
|
150
|
-
this._activeRowIndex < 0 ? this.setFirstCellActive() : this._setActiveCellByDelta(0, 1);
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Sets the active column to the previous column in the grid.
|
|
154
|
-
* Active row is unchanged, unless we reach the end of a row.
|
|
155
|
-
*/
|
|
156
|
-
setPreviousColumnActive() {
|
|
157
|
-
this._setActiveCellByDelta(0, -1);
|
|
158
|
-
}
|
|
159
|
-
updateActiveCell(cell) {
|
|
160
|
-
const rowArray = this._getRowsArray();
|
|
161
|
-
if (typeof cell === 'object' &&
|
|
162
|
-
typeof cell.row === 'number' &&
|
|
163
|
-
typeof cell.column === 'number') {
|
|
164
|
-
this._activeRowIndex = cell.row;
|
|
165
|
-
this._activeColumnIndex = cell.column;
|
|
166
|
-
this._activeRow = rowArray[cell.row] || null;
|
|
167
|
-
this._activeCell = this._activeRow ? this._activeRow.cells[cell.column] || null : null;
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
rowArray.forEach((row, rowIndex) => {
|
|
171
|
-
const columnIndex = row.cells.indexOf(cell);
|
|
172
|
-
if (columnIndex !== -1) {
|
|
173
|
-
this._activeRowIndex = rowIndex;
|
|
174
|
-
this._activeColumnIndex = columnIndex;
|
|
175
|
-
this._activeRow = row;
|
|
176
|
-
this._activeCell = row.cells[columnIndex];
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* This method sets the active cell, given the row and columns deltas
|
|
183
|
-
* between the currently active cell and the new active cell.
|
|
184
|
-
*/
|
|
185
|
-
_setActiveCellByDelta(rowDelta, columnDelta) {
|
|
186
|
-
// If delta puts us past the last cell in a row, move to the first cell of the next row.
|
|
187
|
-
if (this._activeRow && this._activeColumnIndex + columnDelta >= this._activeRow.cells.length) {
|
|
188
|
-
this._setActiveCellByIndex(this._activeRowIndex + 1, 0);
|
|
189
|
-
// If delta puts us prior to the first cell in a row, move to the last cell of the previous row.
|
|
190
|
-
}
|
|
191
|
-
else if (this._activeColumnIndex + columnDelta < 0) {
|
|
192
|
-
const previousRowIndex = this._activeRowIndex - 1;
|
|
193
|
-
const previousRow = this._getRowsArray()[previousRowIndex];
|
|
194
|
-
if (previousRow) {
|
|
195
|
-
this._setActiveCellByIndex(previousRowIndex, previousRow.cells.length - 1);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
this._setActiveCellByIndex(this._activeRowIndex + rowDelta, this._activeColumnIndex + columnDelta);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Sets the active cell to the cell at the indices specified, if they are valid.
|
|
204
|
-
*/
|
|
205
|
-
_setActiveCellByIndex(rowIndex, columnIndex) {
|
|
206
|
-
const rows = this._getRowsArray();
|
|
207
|
-
const targetRow = rows[rowIndex];
|
|
208
|
-
if (!targetRow || !targetRow.cells[columnIndex]) {
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
this.setActiveCell({ row: rowIndex, column: columnIndex });
|
|
212
|
-
}
|
|
213
|
-
/** Returns the rows as an array. */
|
|
214
|
-
_getRowsArray() {
|
|
215
|
-
return this._rows instanceof QueryList ? this._rows.toArray() : this._rows;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1rZXktbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWNoaXBzL2dyaWQta2V5LW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRS9GLDZEQUE2RDtBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQU8vRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQVF6QixZQUFvQixLQUErRDtRQUEvRCxVQUFLLEdBQUwsS0FBSyxDQUEwRDtRQVAzRSxvQkFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLHVCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLGVBQVUsR0FBZ0MsSUFBSSxDQUFDO1FBQy9DLGdCQUFXLEdBQWEsSUFBSSxDQUFDO1FBQzdCLFNBQUksR0FBa0IsS0FBSyxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBbUI1Qiw4RUFBOEU7UUFDOUUsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFpQyxDQUFDO1FBakJwRCxnRkFBZ0Y7UUFDaEYsZ0ZBQWdGO1FBQ2hGLHdFQUF3RTtRQUN4RSxJQUFJLEtBQUssWUFBWSxTQUFTLEVBQUU7WUFDOUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUF3QyxFQUFFLEVBQUU7Z0JBQ25FLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDbkIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBRTVELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFO3dCQUN0RCxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztxQkFDakM7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUtEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUMsU0FBd0I7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBY0QsYUFBYSxDQUFDLElBQVM7UUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzlDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBRXBELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QixJQUNFLElBQUksQ0FBQyxlQUFlLEtBQUssZ0JBQWdCO1lBQ3pDLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxtQkFBbUIsRUFDL0M7WUFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUMsQ0FBQyxDQUFDO1NBQ2hGO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsVUFBbUIsSUFBSTtRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsS0FBb0I7UUFDNUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUU5QixRQUFRLE9BQU8sRUFBRTtZQUNmLEtBQUssVUFBVTtnQkFDYixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDeEIsTUFBTTtZQUVSLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsTUFBTTtZQUVSLEtBQUssV0FBVztnQkFDZCxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUNsRixNQUFNO1lBRVIsS0FBSyxVQUFVO2dCQUNiLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQ2xGLE1BQU07WUFFUixLQUFLLElBQUk7Z0JBQ1AsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNwQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDMUIsTUFBTTtpQkFDUDtxQkFBTTtvQkFDTCxPQUFPO2lCQUNSO1lBRUgsS0FBSyxHQUFHO2dCQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBQ3pCLE1BQU07aUJBQ1A7cUJBQU07b0JBQ0wsT0FBTztpQkFDUjtZQUVIO2dCQUNFLHlEQUF5RDtnQkFDekQsK0NBQStDO2dCQUMvQyxPQUFPO1NBQ1Y7UUFFRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQseURBQXlEO0lBQ3pELGlCQUFpQjtRQUNmLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsbUZBQW1GO0lBQ25GLGdCQUFnQjtRQUNkLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQsdUZBQXVGO0lBQ3ZGLG9CQUFvQjtRQUNsQixJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1CQUFtQjtRQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7T0FHRztJQUNILHVCQUF1QjtRQUNyQixJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQWNELGdCQUFnQixDQUFDLElBQVM7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXRDLElBQ0UsT0FBTyxJQUFJLEtBQUssUUFBUTtZQUN4QixPQUFPLElBQUksQ0FBQyxHQUFHLEtBQUssUUFBUTtZQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUMvQjtZQUNBLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNoQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO1lBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3hGO2FBQU07WUFDTCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUNqQyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDO29CQUNoQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDO29CQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUMzQztZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0sscUJBQXFCLENBQUMsUUFBb0IsRUFBRSxXQUF1QjtRQUN6RSx3RkFBd0Y7UUFDeEYsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQzVGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUV4RCxnR0FBZ0c7U0FDakc7YUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLEdBQUcsQ0FBQyxFQUFFO1lBQ3BELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7WUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDM0QsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQzVFO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxxQkFBcUIsQ0FDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLEVBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQ3RDLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLHFCQUFxQixDQUFDLFFBQWdCLEVBQUUsV0FBbUI7UUFDakUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRWxDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMvQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsb0NBQW9DO0lBQzVCLGFBQWE7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxZQUFZLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUM3RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtRdWVyeUxpc3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7VVBfQVJST1csIERPV05fQVJST1csIExFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBIT01FLCBFTkR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbi8qKiBUaGUga2V5cyBoYW5kbGVkIGJ5IHRoZSBHcmlkS2V5TWFuYWdlciBrZXlkb3duIG1ldGhvZC4gKi9cbmV4cG9ydCBjb25zdCBOQVZJR0FUSU9OX0tFWVMgPSBbRE9XTl9BUlJPVywgVVBfQVJST1csIFJJR0hUX0FSUk9XLCBMRUZUX0FSUk9XXTtcblxuLyoqIFRoaXMgaW50ZXJmYWNlIGlzIGZvciByb3dzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBhIEdyaWRLZXlNYW5hZ2VyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmlkS2V5TWFuYWdlclJvdzxUPiB7XG4gIGNlbGxzOiBUW107XG59XG5cbi8qKlxuICogVGhpcyBjbGFzcyBtYW5hZ2VzIGtleWJvYXJkIGV2ZW50cyBmb3IgZ3JpZHMuIElmIHlvdSBwYXNzIGl0IGEgcXVlcnkgbGlzdFxuICogb2YgR3JpZEtleU1hbmFnZXJSb3csIGl0IHdpbGwgc2V0IHRoZSBhY3RpdmUgY2VsbCBjb3JyZWN0bHkgd2hlbiBhcnJvdyBldmVudHMgb2NjdXIuXG4gKlxuICogR3JpZEtleU1hbmFnZXIgZXhwZWN0cyB0aGF0IHJvd3MgbWF5IGNoYW5nZSBkeW5hbWljYWxseSwgYnV0IHRoZSBjZWxscyBmb3IgYSBnaXZlbiByb3cgYXJlXG4gKiBzdGF0aWMuIEl0IGFsc28gZXhwZWN0cyB0aGF0IGFsbCByb3dzIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGNlbGxzLlxuICovXG5leHBvcnQgY2xhc3MgR3JpZEtleU1hbmFnZXI8VD4ge1xuICBwcml2YXRlIF9hY3RpdmVSb3dJbmRleCA9IC0xO1xuICBwcml2YXRlIF9hY3RpdmVDb2x1bW5JbmRleCA9IC0xO1xuICBwcml2YXRlIF9hY3RpdmVSb3c6IEdyaWRLZXlNYW5hZ2VyUm93PFQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2FjdGl2ZUNlbGw6IFQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZGlyOiAnbHRyJyB8ICdydGwnID0gJ2x0cic7XG4gIHByaXZhdGUgX2hvbWVBbmRFbmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3dzOiBRdWVyeUxpc3Q8R3JpZEtleU1hbmFnZXJSb3c8VD4+IHwgR3JpZEtleU1hbmFnZXJSb3c8VD5bXSkge1xuICAgIC8vIFdlIGFsbG93IGZvciB0aGUgcm93cyB0byBiZSBhbiBhcnJheSBiZWNhdXNlLCBpbiBzb21lIGNhc2VzLCB0aGUgY29uc3VtZXIgbWF5XG4gICAgLy8gbm90IGhhdmUgYWNjZXNzIHRvIGEgUXVlcnlMaXN0IG9mIHRoZSByb3dzIHRoZXkgd2FudCB0byBtYW5hZ2UgKGUuZy4gd2hlbiB0aGVcbiAgICAvLyByb3dzIGFyZW4ndCBiZWluZyBjb2xsZWN0ZWQgdmlhIGBWaWV3Q2hpbGRyZW5gIG9yIGBDb250ZW50Q2hpbGRyZW5gKS5cbiAgICBpZiAoX3Jvd3MgaW5zdGFuY2VvZiBRdWVyeUxpc3QpIHtcbiAgICAgIF9yb3dzLmNoYW5nZXMuc3Vic2NyaWJlKChuZXdSb3dzOiBRdWVyeUxpc3Q8R3JpZEtleU1hbmFnZXJSb3c8VD4+KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVSb3cpIHtcbiAgICAgICAgICBjb25zdCBuZXdJbmRleCA9IG5ld1Jvd3MudG9BcnJheSgpLmluZGV4T2YodGhpcy5fYWN0aXZlUm93KTtcblxuICAgICAgICAgIGlmIChuZXdJbmRleCA+IC0xICYmIG5ld0luZGV4ICE9PSB0aGlzLl9hY3RpdmVSb3dJbmRleCkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlUm93SW5kZXggPSBuZXdJbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuZXZlciB0aGUgYWN0aXZlIGNlbGwgb2YgdGhlIGdyaWQgbWFuYWdlciBjaGFuZ2VzLiAqL1xuICBjaGFuZ2UgPSBuZXcgU3ViamVjdDx7cm93OiBudW1iZXI7IGNvbHVtbjogbnVtYmVyfT4oKTtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyB0aGUgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIGtleSBtYW5hZ2VyJ3MgaG9yaXpvbnRhbCBtb3ZlbWVudC5cbiAgICogQHBhcmFtIGRpcmVjdGlvbiBEaXJlY3Rpb24gd2hpY2ggaXMgY29uc2lkZXJlZCBmb3J3YXJkIG1vdmVtZW50IGFjcm9zcyBhIHJvdy5cbiAgICpcbiAgICogSWYgd2l0aERpcmVjdGlvbmFsaXR5IGlzIG5vdCBzZXQsIHRoZSBkZWZhdWx0IGlzICdsdHInLlxuICAgKi9cbiAgd2l0aERpcmVjdGlvbmFsaXR5KGRpcmVjdGlvbjogJ2x0cicgfCAncnRsJyk6IHRoaXMge1xuICAgIHRoaXMuX2RpciA9IGRpcmVjdGlvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY3RpdmUgY2VsbCB0byB0aGUgY2VsbCBhdCB0aGUgaW5kaWNlcyBzcGVjaWZpZWQuXG4gICAqIEBwYXJhbSBjZWxsIFRoZSByb3cgYW5kIGNvbHVtbiBjb250YWluaW5nIHRoZSBjZWxsIHRvIGJlIHNldCBhcyBhY3RpdmUuXG4gICAqL1xuICBzZXRBY3RpdmVDZWxsKGNlbGw6IHtyb3c6IG51bWJlcjsgY29sdW1uOiBudW1iZXJ9KTogdm9pZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYWN0aXZlIGNlbGwgdG8gdGhlIGNlbGwuXG4gICAqIEBwYXJhbSBjZWxsIFRoZSBjZWxsIHRvIGJlIHNldCBhcyBhY3RpdmUuXG4gICAqL1xuICBzZXRBY3RpdmVDZWxsKGNlbGw6IFQpOiB2b2lkO1xuXG4gIHNldEFjdGl2ZUNlbGwoY2VsbDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgcHJldmlvdXNSb3dJbmRleCA9IHRoaXMuX2FjdGl2ZVJvd0luZGV4O1xuICAgIGNvbnN0IHByZXZpb3VzQ29sdW1uSW5kZXggPSB0aGlzLl9hY3RpdmVDb2x1bW5JbmRleDtcblxuICAgIHRoaXMudXBkYXRlQWN0aXZlQ2VsbChjZWxsKTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuX2FjdGl2ZVJvd0luZGV4ICE9PSBwcmV2aW91c1Jvd0luZGV4IHx8XG4gICAgICB0aGlzLl9hY3RpdmVDb2x1bW5JbmRleCAhPT0gcHJldmlvdXNDb2x1bW5JbmRleFxuICAgICkge1xuICAgICAgdGhpcy5jaGFuZ2UubmV4dCh7cm93OiB0aGlzLl9hY3RpdmVSb3dJbmRleCwgY29sdW1uOiB0aGlzLl9hY3RpdmVDb2x1bW5JbmRleH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmVzIHRoZSBrZXkgbWFuYWdlciB0byBhY3RpdmF0ZSB0aGUgZmlyc3QgYW5kIGxhc3QgaXRlbXNcbiAgICogcmVzcGVjdGl2ZWx5IHdoZW4gdGhlIEhvbWUgb3IgRW5kIGtleSBpcyBwcmVzc2VkLlxuICAgKiBAcGFyYW0gZW5hYmxlZCBXaGV0aGVyIHByZXNzaW5nIHRoZSBIb21lIG9yIEVuZCBrZXkgYWN0aXZhdGVzIHRoZSBmaXJzdC9sYXN0IGl0ZW0uXG4gICAqL1xuICB3aXRoSG9tZUFuZEVuZChlbmFibGVkOiBib29sZWFuID0gdHJ1ZSk6IHRoaXMge1xuICAgIHRoaXMuX2hvbWVBbmRFbmQgPSBlbmFibGVkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFjdGl2ZSBjZWxsIGRlcGVuZGluZyBvbiB0aGUga2V5IGV2ZW50IHBhc3NlZCBpbi5cbiAgICogQHBhcmFtIGV2ZW50IEtleWJvYXJkIGV2ZW50IHRvIGJlIHVzZWQgZm9yIGRldGVybWluaW5nIHdoaWNoIGVsZW1lbnQgc2hvdWxkIGJlIGFjdGl2ZS5cbiAgICovXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuXG4gICAgc3dpdGNoIChrZXlDb2RlKSB7XG4gICAgICBjYXNlIERPV05fQVJST1c6XG4gICAgICAgIHRoaXMuc2V0TmV4dFJvd0FjdGl2ZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBVUF9BUlJPVzpcbiAgICAgICAgdGhpcy5zZXRQcmV2aW91c1Jvd0FjdGl2ZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSSUdIVF9BUlJPVzpcbiAgICAgICAgdGhpcy5fZGlyID09PSAncnRsJyA/IHRoaXMuc2V0UHJldmlvdXNDb2x1bW5BY3RpdmUoKSA6IHRoaXMuc2V0TmV4dENvbHVtbkFjdGl2ZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBMRUZUX0FSUk9XOlxuICAgICAgICB0aGlzLl9kaXIgPT09ICdydGwnID8gdGhpcy5zZXROZXh0Q29sdW1uQWN0aXZlKCkgOiB0aGlzLnNldFByZXZpb3VzQ29sdW1uQWN0aXZlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEhPTUU6XG4gICAgICAgIGlmICh0aGlzLl9ob21lQW5kRW5kKSB7XG4gICAgICAgICAgdGhpcy5zZXRGaXJzdENlbGxBY3RpdmUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBFTkQ6XG4gICAgICAgIGlmICh0aGlzLl9ob21lQW5kRW5kKSB7XG4gICAgICAgICAgdGhpcy5zZXRMYXN0Q2VsbEFjdGl2ZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBOb3RlIHRoYXQgd2UgcmV0dXJuIGhlcmUsIGluIG9yZGVyIHRvIGF2b2lkIHByZXZlbnRpbmdcbiAgICAgICAgLy8gdGhlIGRlZmF1bHQgYWN0aW9uIG9mIG5vbi1uYXZpZ2F0aW9uYWwga2V5cy5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKiogSW5kZXggb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgcm93LiAqL1xuICBnZXQgYWN0aXZlUm93SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUm93SW5kZXg7XG4gIH1cblxuICAvKiogSW5kZXggb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgY29sdW1uLiAqL1xuICBnZXQgYWN0aXZlQ29sdW1uSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlQ29sdW1uSW5kZXg7XG4gIH1cblxuICAvKiogVGhlIGFjdGl2ZSBjZWxsLiAqL1xuICBnZXQgYWN0aXZlQ2VsbCgpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUNlbGw7XG4gIH1cblxuICAvKiogU2V0cyB0aGUgYWN0aXZlIGNlbGwgdG8gdGhlIGZpcnN0IGNlbGwgaW4gdGhlIGdyaWQuICovXG4gIHNldEZpcnN0Q2VsbEFjdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXRBY3RpdmVDZWxsQnlJbmRleCgwLCAwKTtcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBhY3RpdmUgY2VsbCB0byB0aGUgbGFzdCBjZWxsIGluIHRoZSBncmlkLiAqL1xuICBzZXRMYXN0Q2VsbEFjdGl2ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBsYXN0Um93SW5kZXggPSB0aGlzLl9yb3dzLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgbGFzdFJvdyA9IHRoaXMuX2dldFJvd3NBcnJheSgpW2xhc3RSb3dJbmRleF07XG4gICAgdGhpcy5fc2V0QWN0aXZlQ2VsbEJ5SW5kZXgobGFzdFJvd0luZGV4LCBsYXN0Um93LmNlbGxzLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgLyoqIFNldHMgdGhlIGFjdGl2ZSByb3cgdG8gdGhlIG5leHQgcm93IGluIHRoZSBncmlkLiBBY3RpdmUgY29sdW1uIGlzIHVuY2hhbmdlZC4gKi9cbiAgc2V0TmV4dFJvd0FjdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3RpdmVSb3dJbmRleCA8IDAgPyB0aGlzLnNldEZpcnN0Q2VsbEFjdGl2ZSgpIDogdGhpcy5fc2V0QWN0aXZlQ2VsbEJ5RGVsdGEoMSwgMCk7XG4gIH1cblxuICAvKiogU2V0cyB0aGUgYWN0aXZlIHJvdyB0byB0aGUgcHJldmlvdXMgcm93IGluIHRoZSBncmlkLiBBY3RpdmUgY29sdW1uIGlzIHVuY2hhbmdlZC4gKi9cbiAgc2V0UHJldmlvdXNSb3dBY3RpdmUoKTogdm9pZCB7XG4gICAgdGhpcy5fc2V0QWN0aXZlQ2VsbEJ5RGVsdGEoLTEsIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFjdGl2ZSBjb2x1bW4gdG8gdGhlIG5leHQgY29sdW1uIGluIHRoZSBncmlkLlxuICAgKiBBY3RpdmUgcm93IGlzIHVuY2hhbmdlZCwgdW5sZXNzIHdlIHJlYWNoIHRoZSBlbmQgb2YgYSByb3cuXG4gICAqL1xuICBzZXROZXh0Q29sdW1uQWN0aXZlKCk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGl2ZVJvd0luZGV4IDwgMCA/IHRoaXMuc2V0Rmlyc3RDZWxsQWN0aXZlKCkgOiB0aGlzLl9zZXRBY3RpdmVDZWxsQnlEZWx0YSgwLCAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY3RpdmUgY29sdW1uIHRvIHRoZSBwcmV2aW91cyBjb2x1bW4gaW4gdGhlIGdyaWQuXG4gICAqIEFjdGl2ZSByb3cgaXMgdW5jaGFuZ2VkLCB1bmxlc3Mgd2UgcmVhY2ggdGhlIGVuZCBvZiBhIHJvdy5cbiAgICovXG4gIHNldFByZXZpb3VzQ29sdW1uQWN0aXZlKCk6IHZvaWQge1xuICAgIHRoaXMuX3NldEFjdGl2ZUNlbGxCeURlbHRhKDAsIC0xKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3Mgc2V0dGluZyB0aGUgYWN0aXZlIGNlbGwgd2l0aG91dCBhbnkgb3RoZXIgZWZmZWN0cy5cbiAgICogQHBhcmFtIGNlbGwgUm93IGFuZCBjb2x1bW4gb2YgdGhlIGNlbGwgdG8gYmUgc2V0IGFzIGFjdGl2ZS5cbiAgICovXG4gIHVwZGF0ZUFjdGl2ZUNlbGwoY2VsbDoge3JvdzogbnVtYmVyOyBjb2x1bW46IG51bWJlcn0pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBbGxvd3Mgc2V0dGluZyB0aGUgYWN0aXZlIGNlbGwgd2l0aG91dCBhbnkgb3RoZXIgZWZmZWN0cy5cbiAgICogQHBhcmFtIGNlbGwgQ2VsbCB0byBiZSBzZXQgYXMgYWN0aXZlLlxuICAgKi9cbiAgdXBkYXRlQWN0aXZlQ2VsbChjZWxsOiBUKTogdm9pZDtcblxuICB1cGRhdGVBY3RpdmVDZWxsKGNlbGw6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHJvd0FycmF5ID0gdGhpcy5fZ2V0Um93c0FycmF5KCk7XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgY2VsbCA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiBjZWxsLnJvdyA9PT0gJ251bWJlcicgJiZcbiAgICAgIHR5cGVvZiBjZWxsLmNvbHVtbiA9PT0gJ251bWJlcidcbiAgICApIHtcbiAgICAgIHRoaXMuX2FjdGl2ZVJvd0luZGV4ID0gY2VsbC5yb3c7XG4gICAgICB0aGlzLl9hY3RpdmVDb2x1bW5JbmRleCA9IGNlbGwuY29sdW1uO1xuICAgICAgdGhpcy5fYWN0aXZlUm93ID0gcm93QXJyYXlbY2VsbC5yb3ddIHx8IG51bGw7XG4gICAgICB0aGlzLl9hY3RpdmVDZWxsID0gdGhpcy5fYWN0aXZlUm93ID8gdGhpcy5fYWN0aXZlUm93LmNlbGxzW2NlbGwuY29sdW1uXSB8fCBudWxsIDogbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcm93QXJyYXkuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW5JbmRleCA9IHJvdy5jZWxscy5pbmRleE9mKGNlbGwpO1xuICAgICAgICBpZiAoY29sdW1uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5fYWN0aXZlUm93SW5kZXggPSByb3dJbmRleDtcbiAgICAgICAgICB0aGlzLl9hY3RpdmVDb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4O1xuICAgICAgICAgIHRoaXMuX2FjdGl2ZVJvdyA9IHJvdztcbiAgICAgICAgICB0aGlzLl9hY3RpdmVDZWxsID0gcm93LmNlbGxzW2NvbHVtbkluZGV4XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIGFjdGl2ZSBjZWxsLCBnaXZlbiB0aGUgcm93IGFuZCBjb2x1bW5zIGRlbHRhc1xuICAgKiBiZXR3ZWVuIHRoZSBjdXJyZW50bHkgYWN0aXZlIGNlbGwgYW5kIHRoZSBuZXcgYWN0aXZlIGNlbGwuXG4gICAqL1xuICBwcml2YXRlIF9zZXRBY3RpdmVDZWxsQnlEZWx0YShyb3dEZWx0YTogLTEgfCAwIHwgMSwgY29sdW1uRGVsdGE6IC0xIHwgMCB8IDEpOiB2b2lkIHtcbiAgICAvLyBJZiBkZWx0YSBwdXRzIHVzIHBhc3QgdGhlIGxhc3QgY2VsbCBpbiBhIHJvdywgbW92ZSB0byB0aGUgZmlyc3QgY2VsbCBvZiB0aGUgbmV4dCByb3cuXG4gICAgaWYgKHRoaXMuX2FjdGl2ZVJvdyAmJiB0aGlzLl9hY3RpdmVDb2x1bW5JbmRleCArIGNvbHVtbkRlbHRhID49IHRoaXMuX2FjdGl2ZVJvdy5jZWxscy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX3NldEFjdGl2ZUNlbGxCeUluZGV4KHRoaXMuX2FjdGl2ZVJvd0luZGV4ICsgMSwgMCk7XG5cbiAgICAgIC8vIElmIGRlbHRhIHB1dHMgdXMgcHJpb3IgdG8gdGhlIGZpcnN0IGNlbGwgaW4gYSByb3csIG1vdmUgdG8gdGhlIGxhc3QgY2VsbCBvZiB0aGUgcHJldmlvdXMgcm93LlxuICAgIH0gZWxzZSBpZiAodGhpcy5fYWN0aXZlQ29sdW1uSW5kZXggKyBjb2x1bW5EZWx0YSA8IDApIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzUm93SW5kZXggPSB0aGlzLl9hY3RpdmVSb3dJbmRleCAtIDE7XG4gICAgICBjb25zdCBwcmV2aW91c1JvdyA9IHRoaXMuX2dldFJvd3NBcnJheSgpW3ByZXZpb3VzUm93SW5kZXhdO1xuICAgICAgaWYgKHByZXZpb3VzUm93KSB7XG4gICAgICAgIHRoaXMuX3NldEFjdGl2ZUNlbGxCeUluZGV4KHByZXZpb3VzUm93SW5kZXgsIHByZXZpb3VzUm93LmNlbGxzLmxlbmd0aCAtIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRBY3RpdmVDZWxsQnlJbmRleChcbiAgICAgICAgdGhpcy5fYWN0aXZlUm93SW5kZXggKyByb3dEZWx0YSxcbiAgICAgICAgdGhpcy5fYWN0aXZlQ29sdW1uSW5kZXggKyBjb2x1bW5EZWx0YSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFjdGl2ZSBjZWxsIHRvIHRoZSBjZWxsIGF0IHRoZSBpbmRpY2VzIHNwZWNpZmllZCwgaWYgdGhleSBhcmUgdmFsaWQuXG4gICAqL1xuICBwcml2YXRlIF9zZXRBY3RpdmVDZWxsQnlJbmRleChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuX2dldFJvd3NBcnJheSgpO1xuXG4gICAgY29uc3QgdGFyZ2V0Um93ID0gcm93c1tyb3dJbmRleF07XG5cbiAgICBpZiAoIXRhcmdldFJvdyB8fCAhdGFyZ2V0Um93LmNlbGxzW2NvbHVtbkluZGV4XSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0QWN0aXZlQ2VsbCh7cm93OiByb3dJbmRleCwgY29sdW1uOiBjb2x1bW5JbmRleH0pO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHJvd3MgYXMgYW4gYXJyYXkuICovXG4gIHByaXZhdGUgX2dldFJvd3NBcnJheSgpOiBHcmlkS2V5TWFuYWdlclJvdzxUPltdIHtcbiAgICByZXR1cm4gdGhpcy5fcm93cyBpbnN0YW5jZW9mIFF1ZXJ5TGlzdCA/IHRoaXMuX3Jvd3MudG9BcnJheSgpIDogdGhpcy5fcm93cztcbiAgfVxufVxuIl19
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { Directive, Inject, Optional } from '@angular/core';
|
|
9
|
-
import { LIST_OPTION } from './list-option-types';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
/**
|
|
12
|
-
* MDC uses the very intuitively named classes `.mdc-list-item__start` and `.mat-list-item__end`
|
|
13
|
-
* to position content such as icons or checkboxes that comes either before or after the text
|
|
14
|
-
* content respectively. This directive detects the placement of the checkbox and applies the
|
|
15
|
-
* correct MDC class to position the icon/avatar on the opposite side.
|
|
16
|
-
* @docs-private
|
|
17
|
-
*/
|
|
18
|
-
export class MatListGraphicAlignmentStyler {
|
|
19
|
-
constructor(_listOption) {
|
|
20
|
-
this._listOption = _listOption;
|
|
21
|
-
}
|
|
22
|
-
_isAlignedAtStart() {
|
|
23
|
-
// By default, in all list items the graphic is aligned at start. In list options,
|
|
24
|
-
// the graphic is only aligned at start if the checkbox is at the end.
|
|
25
|
-
return !this._listOption || this._listOption?._getCheckboxPosition() === 'after';
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
MatListGraphicAlignmentStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MatListGraphicAlignmentStyler, deps: [{ token: LIST_OPTION, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
29
|
-
MatListGraphicAlignmentStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MatListGraphicAlignmentStyler, selector: "[mat-list-avatar], [matListAvatar], [mat-list-icon], [matListIcon]", host: { properties: { "class.mdc-list-item__start": "_isAlignedAtStart()", "class.mdc-list-item__end": "!_isAlignedAtStart()" } }, ngImport: i0 });
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MatListGraphicAlignmentStyler, decorators: [{
|
|
31
|
-
type: Directive,
|
|
32
|
-
args: [{
|
|
33
|
-
selector: '[mat-list-avatar], [matListAvatar], [mat-list-icon], [matListIcon]',
|
|
34
|
-
host: {
|
|
35
|
-
'[class.mdc-list-item__start]': '_isAlignedAtStart()',
|
|
36
|
-
'[class.mdc-list-item__end]': '!_isAlignedAtStart()',
|
|
37
|
-
},
|
|
38
|
-
}]
|
|
39
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
40
|
-
type: Optional
|
|
41
|
-
}, {
|
|
42
|
-
type: Inject,
|
|
43
|
-
args: [LIST_OPTION]
|
|
44
|
-
}] }]; } });
|
|
45
|
-
/**
|
|
46
|
-
* Directive whose purpose is to add the mat- CSS styling to this selector.
|
|
47
|
-
* @docs-private
|
|
48
|
-
*/
|
|
49
|
-
export class MatListAvatarCssMatStyler {
|
|
50
|
-
}
|
|
51
|
-
MatListAvatarCssMatStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MatListAvatarCssMatStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
52
|
-
MatListAvatarCssMatStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MatListAvatarCssMatStyler, selector: "[mat-list-avatar], [matListAvatar]", host: { classAttribute: "mat-mdc-list-avatar" }, ngImport: i0 });
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MatListAvatarCssMatStyler, decorators: [{
|
|
54
|
-
type: Directive,
|
|
55
|
-
args: [{
|
|
56
|
-
selector: '[mat-list-avatar], [matListAvatar]',
|
|
57
|
-
host: { 'class': 'mat-mdc-list-avatar' },
|
|
58
|
-
}]
|
|
59
|
-
}] });
|
|
60
|
-
/**
|
|
61
|
-
* Directive whose purpose is to add the mat- CSS styling to this selector.
|
|
62
|
-
* @docs-private
|
|
63
|
-
*/
|
|
64
|
-
export class MatListIconCssMatStyler {
|
|
65
|
-
}
|
|
66
|
-
MatListIconCssMatStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MatListIconCssMatStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
67
|
-
MatListIconCssMatStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]", host: { classAttribute: "mat-mdc-list-icon" }, ngImport: i0 });
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MatListIconCssMatStyler, decorators: [{
|
|
69
|
-
type: Directive,
|
|
70
|
-
args: [{
|
|
71
|
-
selector: '[mat-list-icon], [matListIcon]',
|
|
72
|
-
host: { 'class': 'mat-mdc-list-icon' },
|
|
73
|
-
}]
|
|
74
|
-
}] });
|
|
75
|
-
/**
|
|
76
|
-
* Directive whose purpose is to add the mat- CSS styling to this selector.
|
|
77
|
-
* @docs-private
|
|
78
|
-
*/
|
|
79
|
-
export class MatListSubheaderCssMatStyler {
|
|
80
|
-
}
|
|
81
|
-
MatListSubheaderCssMatStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MatListSubheaderCssMatStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
82
|
-
MatListSubheaderCssMatStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]", host: { classAttribute: "mat-mdc-subheader mdc-list-group__subheader" }, ngImport: i0 });
|
|
83
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MatListSubheaderCssMatStyler, decorators: [{
|
|
84
|
-
type: Directive,
|
|
85
|
-
args: [{
|
|
86
|
-
selector: '[mat-subheader], [matSubheader]',
|
|
87
|
-
// TODO(mmalerba): MDC's subheader font looks identical to the list item font, figure out why and
|
|
88
|
-
// make a change in one of the repos to visually distinguish.
|
|
89
|
-
host: { 'class': 'mat-mdc-subheader mdc-list-group__subheader' },
|
|
90
|
-
}]
|
|
91
|
-
}] });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1zdHlsaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWV4cGVyaW1lbnRhbC9tZGMtbGlzdC9saXN0LXN0eWxpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFNUQ7Ozs7OztHQU1HO0FBUUgsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxZQUFvRCxXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtJQUFHLENBQUM7SUFFL0UsaUJBQWlCO1FBQ2Ysa0ZBQWtGO1FBQ2xGLHNFQUFzRTtRQUN0RSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLG9CQUFvQixFQUFFLEtBQUssT0FBTyxDQUFDO0lBQ25GLENBQUM7OzBIQVBVLDZCQUE2QixrQkFDUixXQUFXOzhHQURoQyw2QkFBNkI7MkZBQTdCLDZCQUE2QjtrQkFQekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0VBQW9FO29CQUM5RSxJQUFJLEVBQUU7d0JBQ0osOEJBQThCLEVBQUUscUJBQXFCO3dCQUNyRCw0QkFBNEIsRUFBRSxzQkFBc0I7cUJBQ3JEO2lCQUNGOzswQkFFYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVc7O0FBUzdDOzs7R0FHRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7O3NIQUF6Qix5QkFBeUI7MEdBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQ0FBb0M7b0JBQzlDLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBQztpQkFDdkM7O0FBR0Q7OztHQUdHO0FBS0gsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1Qjt3R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsSUFBSSxFQUFFLEVBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFDO2lCQUNyQzs7QUFHRDs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sNEJBQTRCOzt5SEFBNUIsNEJBQTRCOzZHQUE1Qiw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFOeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUNBQWlDO29CQUMzQyxpR0FBaUc7b0JBQ2pHLDhEQUE4RDtvQkFDOUQsSUFBSSxFQUFFLEVBQUMsT0FBTyxFQUFFLDZDQUE2QyxFQUFDO2lCQUMvRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0RpcmVjdGl2ZSwgSW5qZWN0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xJU1RfT1BUSU9OLCBMaXN0T3B0aW9ufSBmcm9tICcuL2xpc3Qtb3B0aW9uLXR5cGVzJztcblxuLyoqXG4gKiBNREMgdXNlcyB0aGUgdmVyeSBpbnR1aXRpdmVseSBuYW1lZCBjbGFzc2VzIGAubWRjLWxpc3QtaXRlbV9fc3RhcnRgIGFuZCBgLm1hdC1saXN0LWl0ZW1fX2VuZGBcbiAqIHRvIHBvc2l0aW9uIGNvbnRlbnQgc3VjaCBhcyBpY29ucyBvciBjaGVja2JveGVzIHRoYXQgY29tZXMgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGUgdGV4dFxuICogY29udGVudCByZXNwZWN0aXZlbHkuIFRoaXMgZGlyZWN0aXZlIGRldGVjdHMgdGhlIHBsYWNlbWVudCBvZiB0aGUgY2hlY2tib3ggYW5kIGFwcGxpZXMgdGhlXG4gKiBjb3JyZWN0IE1EQyBjbGFzcyB0byBwb3NpdGlvbiB0aGUgaWNvbi9hdmF0YXIgb24gdGhlIG9wcG9zaXRlIHNpZGUuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXQtbGlzdC1hdmF0YXJdLCBbbWF0TGlzdEF2YXRhcl0sIFttYXQtbGlzdC1pY29uXSwgW21hdExpc3RJY29uXScsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm1kYy1saXN0LWl0ZW1fX3N0YXJ0XSc6ICdfaXNBbGlnbmVkQXRTdGFydCgpJyxcbiAgICAnW2NsYXNzLm1kYy1saXN0LWl0ZW1fX2VuZF0nOiAnIV9pc0FsaWduZWRBdFN0YXJ0KCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBNYXRMaXN0R3JhcGhpY0FsaWdubWVudFN0eWxlciB7XG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTElTVF9PUFRJT04pIHB1YmxpYyBfbGlzdE9wdGlvbjogTGlzdE9wdGlvbikge31cblxuICBfaXNBbGlnbmVkQXRTdGFydCgpIHtcbiAgICAvLyBCeSBkZWZhdWx0LCBpbiBhbGwgbGlzdCBpdGVtcyB0aGUgZ3JhcGhpYyBpcyBhbGlnbmVkIGF0IHN0YXJ0LiBJbiBsaXN0IG9wdGlvbnMsXG4gICAgLy8gdGhlIGdyYXBoaWMgaXMgb25seSBhbGlnbmVkIGF0IHN0YXJ0IGlmIHRoZSBjaGVja2JveCBpcyBhdCB0aGUgZW5kLlxuICAgIHJldHVybiAhdGhpcy5fbGlzdE9wdGlvbiB8fCB0aGlzLl9saXN0T3B0aW9uPy5fZ2V0Q2hlY2tib3hQb3NpdGlvbigpID09PSAnYWZ0ZXInO1xuICB9XG59XG5cbi8qKlxuICogRGlyZWN0aXZlIHdob3NlIHB1cnBvc2UgaXMgdG8gYWRkIHRoZSBtYXQtIENTUyBzdHlsaW5nIHRvIHRoaXMgc2VsZWN0b3IuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXQtbGlzdC1hdmF0YXJdLCBbbWF0TGlzdEF2YXRhcl0nLFxuICBob3N0OiB7J2NsYXNzJzogJ21hdC1tZGMtbGlzdC1hdmF0YXInfSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0TGlzdEF2YXRhckNzc01hdFN0eWxlciB7fVxuXG4vKipcbiAqIERpcmVjdGl2ZSB3aG9zZSBwdXJwb3NlIGlzIHRvIGFkZCB0aGUgbWF0LSBDU1Mgc3R5bGluZyB0byB0aGlzIHNlbGVjdG9yLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbWF0LWxpc3QtaWNvbl0sIFttYXRMaXN0SWNvbl0nLFxuICBob3N0OiB7J2NsYXNzJzogJ21hdC1tZGMtbGlzdC1pY29uJ30sXG59KVxuZXhwb3J0IGNsYXNzIE1hdExpc3RJY29uQ3NzTWF0U3R5bGVyIHt9XG5cbi8qKlxuICogRGlyZWN0aXZlIHdob3NlIHB1cnBvc2UgaXMgdG8gYWRkIHRoZSBtYXQtIENTUyBzdHlsaW5nIHRvIHRoaXMgc2VsZWN0b3IuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXQtc3ViaGVhZGVyXSwgW21hdFN1YmhlYWRlcl0nLFxuICAvLyBUT0RPKG1tYWxlcmJhKTogTURDJ3Mgc3ViaGVhZGVyIGZvbnQgbG9va3MgaWRlbnRpY2FsIHRvIHRoZSBsaXN0IGl0ZW0gZm9udCwgZmlndXJlIG91dCB3aHkgYW5kXG4gIC8vICBtYWtlIGEgY2hhbmdlIGluIG9uZSBvZiB0aGUgcmVwb3MgdG8gdmlzdWFsbHkgZGlzdGluZ3Vpc2guXG4gIGhvc3Q6IHsnY2xhc3MnOiAnbWF0LW1kYy1zdWJoZWFkZXIgbWRjLWxpc3QtZ3JvdXBfX3N1YmhlYWRlcid9LFxufSlcbmV4cG9ydCBjbGFzcyBNYXRMaXN0U3ViaGVhZGVyQ3NzTWF0U3R5bGVyIHt9XG4iXX0=
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { GridKeyManager } from './grid-key-manager';
|
|
9
|
-
/**
|
|
10
|
-
* A version of GridKeyManager where the cells are HTMLElements, and focus()
|
|
11
|
-
* is called on a cell when it becomes active.
|
|
12
|
-
*/
|
|
13
|
-
export declare class GridFocusKeyManager extends GridKeyManager<HTMLElement> {
|
|
14
|
-
/**
|
|
15
|
-
* Sets the active cell to the cell at the specified
|
|
16
|
-
* indices and focuses the newly active cell.
|
|
17
|
-
* @param cell Row and column indices of the cell to be set as active.
|
|
18
|
-
*/
|
|
19
|
-
setActiveCell(cell: {
|
|
20
|
-
row: number;
|
|
21
|
-
column: number;
|
|
22
|
-
}): void;
|
|
23
|
-
/**
|
|
24
|
-
* Sets the active cell to the cell that is specified and focuses it.
|
|
25
|
-
* @param cell Cell to be set as active.
|
|
26
|
-
*/
|
|
27
|
-
setActiveCell(cell: HTMLElement): void;
|
|
28
|
-
}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { QueryList } from '@angular/core';
|
|
9
|
-
import { Subject } from 'rxjs';
|
|
10
|
-
/** The keys handled by the GridKeyManager keydown method. */
|
|
11
|
-
export declare const NAVIGATION_KEYS: number[];
|
|
12
|
-
/** This interface is for rows that can be passed to a GridKeyManager. */
|
|
13
|
-
export interface GridKeyManagerRow<T> {
|
|
14
|
-
cells: T[];
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* This class manages keyboard events for grids. If you pass it a query list
|
|
18
|
-
* of GridKeyManagerRow, it will set the active cell correctly when arrow events occur.
|
|
19
|
-
*
|
|
20
|
-
* GridKeyManager expects that rows may change dynamically, but the cells for a given row are
|
|
21
|
-
* static. It also expects that all rows have the same number of cells.
|
|
22
|
-
*/
|
|
23
|
-
export declare class GridKeyManager<T> {
|
|
24
|
-
private _rows;
|
|
25
|
-
private _activeRowIndex;
|
|
26
|
-
private _activeColumnIndex;
|
|
27
|
-
private _activeRow;
|
|
28
|
-
private _activeCell;
|
|
29
|
-
private _dir;
|
|
30
|
-
private _homeAndEnd;
|
|
31
|
-
constructor(_rows: QueryList<GridKeyManagerRow<T>> | GridKeyManagerRow<T>[]);
|
|
32
|
-
/** Stream that emits whenever the active cell of the grid manager changes. */
|
|
33
|
-
change: Subject<{
|
|
34
|
-
row: number;
|
|
35
|
-
column: number;
|
|
36
|
-
}>;
|
|
37
|
-
/**
|
|
38
|
-
* Configures the directionality of the key manager's horizontal movement.
|
|
39
|
-
* @param direction Direction which is considered forward movement across a row.
|
|
40
|
-
*
|
|
41
|
-
* If withDirectionality is not set, the default is 'ltr'.
|
|
42
|
-
*/
|
|
43
|
-
withDirectionality(direction: 'ltr' | 'rtl'): this;
|
|
44
|
-
/**
|
|
45
|
-
* Sets the active cell to the cell at the indices specified.
|
|
46
|
-
* @param cell The row and column containing the cell to be set as active.
|
|
47
|
-
*/
|
|
48
|
-
setActiveCell(cell: {
|
|
49
|
-
row: number;
|
|
50
|
-
column: number;
|
|
51
|
-
}): void;
|
|
52
|
-
/**
|
|
53
|
-
* Sets the active cell to the cell.
|
|
54
|
-
* @param cell The cell to be set as active.
|
|
55
|
-
*/
|
|
56
|
-
setActiveCell(cell: T): void;
|
|
57
|
-
/**
|
|
58
|
-
* Configures the key manager to activate the first and last items
|
|
59
|
-
* respectively when the Home or End key is pressed.
|
|
60
|
-
* @param enabled Whether pressing the Home or End key activates the first/last item.
|
|
61
|
-
*/
|
|
62
|
-
withHomeAndEnd(enabled?: boolean): this;
|
|
63
|
-
/**
|
|
64
|
-
* Sets the active cell depending on the key event passed in.
|
|
65
|
-
* @param event Keyboard event to be used for determining which element should be active.
|
|
66
|
-
*/
|
|
67
|
-
onKeydown(event: KeyboardEvent): void;
|
|
68
|
-
/** Index of the currently active row. */
|
|
69
|
-
get activeRowIndex(): number;
|
|
70
|
-
/** Index of the currently active column. */
|
|
71
|
-
get activeColumnIndex(): number;
|
|
72
|
-
/** The active cell. */
|
|
73
|
-
get activeCell(): T | null;
|
|
74
|
-
/** Sets the active cell to the first cell in the grid. */
|
|
75
|
-
setFirstCellActive(): void;
|
|
76
|
-
/** Sets the active cell to the last cell in the grid. */
|
|
77
|
-
setLastCellActive(): void;
|
|
78
|
-
/** Sets the active row to the next row in the grid. Active column is unchanged. */
|
|
79
|
-
setNextRowActive(): void;
|
|
80
|
-
/** Sets the active row to the previous row in the grid. Active column is unchanged. */
|
|
81
|
-
setPreviousRowActive(): void;
|
|
82
|
-
/**
|
|
83
|
-
* Sets the active column to the next column in the grid.
|
|
84
|
-
* Active row is unchanged, unless we reach the end of a row.
|
|
85
|
-
*/
|
|
86
|
-
setNextColumnActive(): void;
|
|
87
|
-
/**
|
|
88
|
-
* Sets the active column to the previous column in the grid.
|
|
89
|
-
* Active row is unchanged, unless we reach the end of a row.
|
|
90
|
-
*/
|
|
91
|
-
setPreviousColumnActive(): void;
|
|
92
|
-
/**
|
|
93
|
-
* Allows setting the active cell without any other effects.
|
|
94
|
-
* @param cell Row and column of the cell to be set as active.
|
|
95
|
-
*/
|
|
96
|
-
updateActiveCell(cell: {
|
|
97
|
-
row: number;
|
|
98
|
-
column: number;
|
|
99
|
-
}): void;
|
|
100
|
-
/**
|
|
101
|
-
* Allows setting the active cell without any other effects.
|
|
102
|
-
* @param cell Cell to be set as active.
|
|
103
|
-
*/
|
|
104
|
-
updateActiveCell(cell: T): void;
|
|
105
|
-
/**
|
|
106
|
-
* This method sets the active cell, given the row and columns deltas
|
|
107
|
-
* between the currently active cell and the new active cell.
|
|
108
|
-
*/
|
|
109
|
-
private _setActiveCellByDelta;
|
|
110
|
-
/**
|
|
111
|
-
* Sets the active cell to the cell at the indices specified, if they are valid.
|
|
112
|
-
*/
|
|
113
|
-
private _setActiveCellByIndex;
|
|
114
|
-
/** Returns the rows as an array. */
|
|
115
|
-
private _getRowsArray;
|
|
116
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ListOption } from './list-option-types';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* MDC uses the very intuitively named classes `.mdc-list-item__start` and `.mat-list-item__end`
|
|
5
|
-
* to position content such as icons or checkboxes that comes either before or after the text
|
|
6
|
-
* content respectively. This directive detects the placement of the checkbox and applies the
|
|
7
|
-
* correct MDC class to position the icon/avatar on the opposite side.
|
|
8
|
-
* @docs-private
|
|
9
|
-
*/
|
|
10
|
-
export declare class MatListGraphicAlignmentStyler {
|
|
11
|
-
_listOption: ListOption;
|
|
12
|
-
constructor(_listOption: ListOption);
|
|
13
|
-
_isAlignedAtStart(): boolean;
|
|
14
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MatListGraphicAlignmentStyler, [{ optional: true; }]>;
|
|
15
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<MatListGraphicAlignmentStyler, "[mat-list-avatar], [matListAvatar], [mat-list-icon], [matListIcon]", never, {}, {}, never>;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Directive whose purpose is to add the mat- CSS styling to this selector.
|
|
19
|
-
* @docs-private
|
|
20
|
-
*/
|
|
21
|
-
export declare class MatListAvatarCssMatStyler {
|
|
22
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MatListAvatarCssMatStyler, never>;
|
|
23
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<MatListAvatarCssMatStyler, "[mat-list-avatar], [matListAvatar]", never, {}, {}, never>;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Directive whose purpose is to add the mat- CSS styling to this selector.
|
|
27
|
-
* @docs-private
|
|
28
|
-
*/
|
|
29
|
-
export declare class MatListIconCssMatStyler {
|
|
30
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MatListIconCssMatStyler, never>;
|
|
31
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<MatListIconCssMatStyler, "[mat-list-icon], [matListIcon]", never, {}, {}, never>;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Directive whose purpose is to add the mat- CSS styling to this selector.
|
|
35
|
-
* @docs-private
|
|
36
|
-
*/
|
|
37
|
-
export declare class MatListSubheaderCssMatStyler {
|
|
38
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MatListSubheaderCssMatStyler, never>;
|
|
39
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<MatListSubheaderCssMatStyler, "[mat-subheader], [matSubheader]", never, {}, {}, never>;
|
|
40
|
-
}
|