@angular/material 14.0.0-next.0 → 14.0.0-next.11
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/_index.scss +20 -1
- package/autocomplete/autocomplete-trigger.d.ts +14 -3
- package/autocomplete/autocomplete.d.ts +7 -1
- package/badge/_badge-theme.scss +11 -2
- package/button-toggle/_button-toggle-theme.scss +14 -2
- package/checkbox/_checkbox-theme.scss +1 -1
- package/checkbox/checkbox.d.ts +1 -1
- package/checkbox/testing/checkbox-harness-filters.d.ts +2 -0
- package/chips/chip-input.d.ts +2 -5
- package/chips/chip-list.d.ts +21 -6
- package/chips/chip.d.ts +4 -4
- package/core/_core.scss +5 -7
- package/core/common-behaviors/error-state.d.ts +1 -2
- package/core/datetime/index.d.ts +1 -2
- package/core/ripple/_ripple.scss +2 -2
- package/core/ripple/index.d.ts +1 -2
- package/core/ripple/ripple-ref.d.ts +2 -1
- package/core/ripple/ripple-renderer.d.ts +16 -3
- package/core/style/_menu-common.scss +3 -2
- package/core/style/_vendor-prefixes.scss +1 -17
- package/core/theming/_theming.scss +9 -0
- package/core/typography/_typography.scss +51 -14
- package/datepicker/calendar-body.d.ts +34 -4
- package/datepicker/date-range-input-parts.d.ts +4 -1
- package/datepicker/datepicker-base.d.ts +2 -0
- package/datepicker/month-view.d.ts +18 -0
- package/datepicker/multi-year-view.d.ts +18 -0
- package/datepicker/year-view.d.ts +18 -0
- package/dialog/dialog-animations.d.ts +10 -0
- package/dialog/dialog-config.d.ts +12 -1
- package/dialog/dialog-container.d.ts +12 -4
- package/dialog/dialog-content-directives.d.ts +5 -1
- package/dialog/dialog.d.ts +12 -6
- package/dialog/public-api.d.ts +1 -1
- package/dialog/testing/dialog-opener.d.ts +33 -0
- package/dialog/testing/public-api.d.ts +1 -0
- package/esm2020/autocomplete/autocomplete-module.mjs +5 -5
- package/esm2020/autocomplete/autocomplete-origin.mjs +7 -7
- package/esm2020/autocomplete/autocomplete-trigger.mjs +96 -49
- package/esm2020/autocomplete/autocomplete.mjs +19 -9
- package/esm2020/autocomplete/testing/autocomplete-harness.mjs +7 -1
- package/esm2020/badge/badge-module.mjs +5 -5
- package/esm2020/badge/badge.mjs +4 -4
- package/esm2020/bottom-sheet/bottom-sheet-animations.mjs +10 -4
- package/esm2020/bottom-sheet/bottom-sheet-container.mjs +12 -7
- package/esm2020/bottom-sheet/bottom-sheet-module.mjs +5 -5
- package/esm2020/bottom-sheet/bottom-sheet.mjs +4 -4
- package/esm2020/button/button-module.mjs +5 -5
- package/esm2020/button/button.mjs +10 -10
- package/esm2020/button-toggle/button-toggle-module.mjs +5 -5
- package/esm2020/button-toggle/button-toggle.mjs +8 -8
- package/esm2020/card/card-module.mjs +5 -5
- package/esm2020/card/card.mjs +44 -44
- package/esm2020/checkbox/checkbox-module.mjs +9 -9
- package/esm2020/checkbox/checkbox-required-validator.mjs +4 -4
- package/esm2020/checkbox/checkbox.mjs +12 -8
- package/esm2020/checkbox/testing/checkbox-harness-filters.mjs +1 -1
- package/esm2020/checkbox/testing/checkbox-harness.mjs +3 -2
- package/esm2020/chips/chip-input.mjs +4 -4
- package/esm2020/chips/chip-list.mjs +34 -9
- package/esm2020/chips/chip.mjs +20 -17
- package/esm2020/chips/chips-module.mjs +5 -5
- package/esm2020/core/common-behaviors/common-module.mjs +5 -5
- package/esm2020/core/common-behaviors/error-state.mjs +1 -8
- package/esm2020/core/datetime/index.mjs +9 -11
- package/esm2020/core/datetime/native-date-adapter.mjs +4 -4
- package/esm2020/core/error/error-options.mjs +7 -7
- package/esm2020/core/line/line.mjs +8 -8
- package/esm2020/core/option/index.mjs +5 -5
- package/esm2020/core/option/optgroup.mjs +8 -8
- package/esm2020/core/option/option.mjs +8 -8
- package/esm2020/core/ripple/index.mjs +6 -7
- package/esm2020/core/ripple/ripple-ref.mjs +5 -2
- package/esm2020/core/ripple/ripple-renderer.mjs +112 -54
- package/esm2020/core/ripple/ripple.mjs +4 -4
- package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +5 -5
- package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +5 -5
- package/esm2020/core/version.mjs +1 -1
- package/esm2020/datepicker/calendar-body.mjs +57 -12
- package/esm2020/datepicker/calendar.mjs +26 -15
- package/esm2020/datepicker/date-range-input-parts.mjs +10 -10
- package/esm2020/datepicker/date-range-input.mjs +6 -6
- package/esm2020/datepicker/date-range-picker.mjs +4 -4
- package/esm2020/datepicker/date-range-selection-strategy.mjs +4 -4
- package/esm2020/datepicker/date-selection-model.mjs +10 -10
- package/esm2020/datepicker/datepicker-actions.mjs +12 -12
- package/esm2020/datepicker/datepicker-base.mjs +9 -17
- package/esm2020/datepicker/datepicker-input-base.mjs +12 -7
- package/esm2020/datepicker/datepicker-input.mjs +4 -4
- package/esm2020/datepicker/datepicker-intl.mjs +4 -4
- package/esm2020/datepicker/datepicker-module.mjs +5 -5
- package/esm2020/datepicker/datepicker-toggle.mjs +8 -8
- package/esm2020/datepicker/datepicker.mjs +4 -4
- package/esm2020/datepicker/month-view.mjs +36 -9
- package/esm2020/datepicker/multi-year-view.mjs +42 -10
- package/esm2020/datepicker/year-view.mjs +41 -10
- package/esm2020/dialog/dialog-animations.mjs +17 -4
- package/esm2020/dialog/dialog-config.mjs +8 -1
- package/esm2020/dialog/dialog-container.mjs +44 -26
- package/esm2020/dialog/dialog-content-directives.mjs +31 -15
- package/esm2020/dialog/dialog-module.mjs +5 -5
- package/esm2020/dialog/dialog.mjs +24 -40
- package/esm2020/dialog/public-api.mjs +2 -2
- package/esm2020/dialog/testing/dialog-opener.mjs +67 -0
- package/esm2020/dialog/testing/public-api.mjs +2 -1
- package/esm2020/divider/divider-module.mjs +5 -5
- package/esm2020/divider/divider.mjs +5 -5
- package/esm2020/expansion/accordion.mjs +4 -4
- package/esm2020/expansion/expansion-module.mjs +5 -5
- package/esm2020/expansion/expansion-panel-base.mjs +14 -0
- package/esm2020/expansion/expansion-panel-content.mjs +14 -7
- package/esm2020/expansion/expansion-panel-header.mjs +11 -11
- package/esm2020/expansion/expansion-panel.mjs +13 -10
- package/esm2020/expansion/public-api.mjs +2 -1
- package/esm2020/form-field/error.mjs +4 -4
- package/esm2020/form-field/form-field-control.mjs +4 -4
- package/esm2020/form-field/form-field-module.mjs +5 -5
- package/esm2020/form-field/form-field.mjs +22 -14
- package/esm2020/form-field/hint.mjs +4 -4
- package/esm2020/form-field/label.mjs +4 -4
- package/esm2020/form-field/placeholder.mjs +4 -4
- package/esm2020/form-field/prefix.mjs +4 -4
- package/esm2020/form-field/suffix.mjs +4 -4
- package/esm2020/form-field/testing/public-api.mjs +4 -4
- package/esm2020/grid-list/grid-list-module.mjs +5 -5
- package/esm2020/grid-list/grid-list.mjs +6 -6
- package/esm2020/grid-list/grid-tile.mjs +17 -17
- package/esm2020/icon/icon-module.mjs +5 -5
- package/esm2020/icon/icon-registry.mjs +12 -14
- package/esm2020/icon/icon.mjs +31 -28
- package/esm2020/icon/testing/fake-icon-registry.mjs +9 -9
- package/esm2020/input/input-module.mjs +5 -5
- package/esm2020/input/input.mjs +41 -24
- package/esm2020/list/list-module.mjs +5 -5
- package/esm2020/list/list.mjs +21 -23
- package/esm2020/list/selection-list.mjs +15 -38
- package/esm2020/list/testing/list-item-harness-base.mjs +1 -9
- package/esm2020/menu/menu-content.mjs +7 -7
- package/esm2020/menu/menu-errors.mjs +1 -12
- package/esm2020/menu/menu-item.mjs +8 -4
- package/esm2020/menu/menu-module.mjs +5 -5
- package/esm2020/menu/menu-trigger.mjs +79 -65
- package/esm2020/menu/menu.mjs +35 -14
- package/esm2020/paginator/paginator-intl.mjs +4 -4
- package/esm2020/paginator/paginator-module.mjs +5 -5
- package/esm2020/paginator/paginator.mjs +12 -8
- package/esm2020/paginator/testing/paginator-harness.mjs +11 -1
- package/esm2020/progress-bar/progress-bar-module.mjs +5 -5
- package/esm2020/progress-bar/progress-bar.mjs +8 -5
- package/esm2020/progress-spinner/progress-spinner-module.mjs +8 -8
- package/esm2020/progress-spinner/progress-spinner.mjs +14 -51
- package/esm2020/progress-spinner/public-api.mjs +10 -2
- package/esm2020/radio/radio-module.mjs +5 -5
- package/esm2020/radio/radio.mjs +42 -14
- package/esm2020/radio/testing/radio-harness-filters.mjs +1 -1
- package/esm2020/radio/testing/radio-harness.mjs +3 -2
- package/esm2020/select/select-module.mjs +5 -5
- package/esm2020/select/select.mjs +66 -28
- package/esm2020/sidenav/drawer.mjs +19 -14
- package/esm2020/sidenav/sidenav-module.mjs +7 -8
- package/esm2020/sidenav/sidenav.mjs +12 -12
- package/esm2020/slide-toggle/slide-toggle-module.mjs +9 -9
- package/esm2020/slide-toggle/slide-toggle-required-validator.mjs +4 -4
- package/esm2020/slide-toggle/slide-toggle.mjs +6 -5
- package/esm2020/slide-toggle/testing/slide-toggle-harness-filters.mjs +1 -1
- package/esm2020/slide-toggle/testing/slide-toggle-harness.mjs +4 -2
- package/esm2020/slider/slider-module.mjs +5 -5
- package/esm2020/slider/slider.mjs +15 -8
- package/esm2020/snack-bar/simple-snack-bar.mjs +5 -5
- package/esm2020/snack-bar/snack-bar-container.mjs +24 -18
- package/esm2020/snack-bar/snack-bar-module.mjs +5 -5
- package/esm2020/snack-bar/snack-bar.mjs +7 -7
- package/esm2020/sort/sort-header-intl.mjs +4 -4
- package/esm2020/sort/sort-header.mjs +16 -8
- package/esm2020/sort/sort-module.mjs +5 -5
- package/esm2020/sort/sort.mjs +4 -4
- package/esm2020/stepper/public-api.mjs +2 -2
- package/esm2020/stepper/step-content.mjs +4 -4
- package/esm2020/stepper/step-header.mjs +5 -5
- package/esm2020/stepper/step-label.mjs +4 -4
- package/esm2020/stepper/stepper-animations.mjs +9 -3
- package/esm2020/stepper/stepper-button.mjs +7 -7
- package/esm2020/stepper/stepper-icon.mjs +4 -4
- package/esm2020/stepper/stepper-intl.mjs +4 -4
- package/esm2020/stepper/stepper-module.mjs +6 -10
- package/esm2020/stepper/stepper.mjs +39 -63
- package/esm2020/table/cell.mjs +22 -22
- package/esm2020/table/row.mjs +22 -22
- package/esm2020/table/table-module.mjs +5 -5
- package/esm2020/table/table.mjs +9 -9
- package/esm2020/table/text-column.mjs +4 -4
- package/esm2020/tabs/ink-bar.mjs +11 -22
- package/esm2020/tabs/paginated-tab-header.mjs +27 -13
- package/esm2020/tabs/tab-body.mjs +18 -12
- package/esm2020/tabs/tab-config.mjs +1 -1
- package/esm2020/tabs/tab-content.mjs +4 -4
- package/esm2020/tabs/tab-group.mjs +55 -11
- package/esm2020/tabs/tab-header.mjs +8 -8
- package/esm2020/tabs/tab-label-wrapper.mjs +4 -4
- package/esm2020/tabs/tab-label.mjs +4 -4
- package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +18 -18
- package/esm2020/tabs/tab.mjs +4 -4
- package/esm2020/tabs/tabs-animations.mjs +16 -6
- package/esm2020/tabs/tabs-module.mjs +5 -5
- package/esm2020/toolbar/toolbar-module.mjs +5 -5
- package/esm2020/toolbar/toolbar.mjs +8 -8
- package/esm2020/tooltip/testing/tooltip-harness.mjs +12 -7
- package/esm2020/tooltip/tooltip-module.mjs +5 -5
- package/esm2020/tooltip/tooltip.mjs +126 -51
- package/esm2020/tree/node.mjs +10 -10
- package/esm2020/tree/outlet.mjs +4 -4
- package/esm2020/tree/padding.mjs +4 -4
- package/esm2020/tree/toggle.mjs +4 -4
- package/esm2020/tree/tree-module.mjs +5 -5
- package/esm2020/tree/tree.mjs +5 -5
- package/expansion/expansion-panel-base.d.ts +22 -0
- package/expansion/expansion-panel-content.d.ts +4 -2
- package/expansion/public-api.d.ts +1 -0
- package/fesm2015/autocomplete/testing.mjs +6 -0
- package/fesm2015/autocomplete/testing.mjs.map +1 -1
- package/fesm2015/autocomplete.mjs +125 -67
- package/fesm2015/autocomplete.mjs.map +1 -1
- package/fesm2015/badge/testing.mjs.map +1 -1
- package/fesm2015/badge.mjs +7 -7
- package/fesm2015/badge.mjs.map +1 -1
- package/fesm2015/bottom-sheet/testing.mjs.map +1 -1
- package/fesm2015/bottom-sheet.mjs +27 -16
- package/fesm2015/bottom-sheet.mjs.map +1 -1
- package/fesm2015/button/testing.mjs.map +1 -1
- package/fesm2015/button-toggle/testing.mjs.map +1 -1
- package/fesm2015/button-toggle.mjs +11 -11
- package/fesm2015/button-toggle.mjs.map +1 -1
- package/fesm2015/button.mjs +13 -13
- package/fesm2015/button.mjs.map +1 -1
- package/fesm2015/card/testing.mjs.map +1 -1
- package/fesm2015/card.mjs +47 -47
- package/fesm2015/card.mjs.map +1 -1
- package/fesm2015/checkbox/testing.mjs +2 -1
- package/fesm2015/checkbox/testing.mjs.map +1 -1
- package/fesm2015/checkbox.mjs +22 -18
- package/fesm2015/checkbox.mjs.map +1 -1
- package/fesm2015/chips/testing.mjs.map +1 -1
- package/fesm2015/chips.mjs +59 -31
- package/fesm2015/chips.mjs.map +1 -1
- package/fesm2015/core/testing.mjs.map +1 -1
- package/fesm2015/core.mjs +181 -126
- package/fesm2015/core.mjs.map +1 -1
- package/fesm2015/datepicker/testing.mjs.map +1 -1
- package/fesm2015/datepicker.mjs +273 -130
- package/fesm2015/datepicker.mjs.map +1 -1
- package/fesm2015/dialog/testing.mjs +65 -2
- package/fesm2015/dialog/testing.mjs.map +1 -1
- package/fesm2015/dialog.mjs +144 -106
- package/fesm2015/dialog.mjs.map +1 -1
- package/fesm2015/divider/testing.mjs.map +1 -1
- package/fesm2015/divider.mjs +8 -8
- package/fesm2015/divider.mjs.map +1 -1
- package/fesm2015/expansion/testing.mjs.map +1 -1
- package/fesm2015/expansion.mjs +56 -33
- package/fesm2015/expansion.mjs.map +1 -1
- package/fesm2015/form-field/testing/control.mjs.map +1 -1
- package/fesm2015/form-field/testing.mjs +1 -1
- package/fesm2015/form-field/testing.mjs.map +1 -1
- package/fesm2015/form-field.mjs +47 -38
- package/fesm2015/form-field.mjs.map +1 -1
- package/fesm2015/grid-list/testing.mjs.map +1 -1
- package/fesm2015/grid-list.mjs +25 -25
- package/fesm2015/grid-list.mjs.map +1 -1
- package/fesm2015/icon/testing.mjs +8 -8
- package/fesm2015/icon/testing.mjs.map +1 -1
- package/fesm2015/icon.mjs +45 -44
- package/fesm2015/icon.mjs.map +1 -1
- package/fesm2015/input/testing.mjs.map +1 -1
- package/fesm2015/input.mjs +45 -28
- package/fesm2015/input.mjs.map +1 -1
- package/fesm2015/list/testing.mjs +0 -10
- package/fesm2015/list/testing.mjs.map +1 -1
- package/fesm2015/list.mjs +41 -67
- package/fesm2015/list.mjs.map +1 -1
- package/fesm2015/material.mjs.map +1 -1
- package/fesm2015/menu/testing.mjs.map +1 -1
- package/fesm2015/menu.mjs +131 -99
- package/fesm2015/menu.mjs.map +1 -1
- package/fesm2015/paginator/testing.mjs +14 -0
- package/fesm2015/paginator/testing.mjs.map +1 -1
- package/fesm2015/paginator.mjs +18 -14
- package/fesm2015/paginator.mjs.map +1 -1
- package/fesm2015/progress-bar/testing.mjs.map +1 -1
- package/fesm2015/progress-bar.mjs +11 -8
- package/fesm2015/progress-bar.mjs.map +1 -1
- package/fesm2015/progress-spinner/testing.mjs.map +1 -1
- package/fesm2015/progress-spinner.mjs +31 -63
- package/fesm2015/progress-spinner.mjs.map +1 -1
- package/fesm2015/radio/testing.mjs +2 -1
- package/fesm2015/radio/testing.mjs.map +1 -1
- package/fesm2015/radio.mjs +46 -17
- package/fesm2015/radio.mjs.map +1 -1
- package/fesm2015/select/testing.mjs.map +1 -1
- package/fesm2015/select.mjs +70 -32
- package/fesm2015/select.mjs.map +1 -1
- package/fesm2015/sidenav/testing.mjs.map +1 -1
- package/fesm2015/sidenav.mjs +36 -32
- package/fesm2015/sidenav.mjs.map +1 -1
- package/fesm2015/slide-toggle/testing.mjs +3 -1
- package/fesm2015/slide-toggle/testing.mjs.map +1 -1
- package/fesm2015/slide-toggle.mjs +16 -15
- package/fesm2015/slide-toggle.mjs.map +1 -1
- package/fesm2015/slider/testing.mjs.map +1 -1
- package/fesm2015/slider.mjs +18 -11
- package/fesm2015/slider.mjs.map +1 -1
- package/fesm2015/snack-bar/testing.mjs.map +1 -1
- package/fesm2015/snack-bar.mjs +37 -31
- package/fesm2015/snack-bar.mjs.map +1 -1
- package/fesm2015/sort/testing.mjs.map +1 -1
- package/fesm2015/sort.mjs +128 -120
- package/fesm2015/sort.mjs.map +1 -1
- package/fesm2015/stepper/testing.mjs.map +1 -1
- package/fesm2015/stepper.mjs +72 -93
- package/fesm2015/stepper.mjs.map +1 -1
- package/fesm2015/table/testing.mjs.map +1 -1
- package/fesm2015/table.mjs +57 -57
- package/fesm2015/table.mjs.map +1 -1
- package/fesm2015/tabs/testing.mjs.map +1 -1
- package/fesm2015/tabs.mjs +162 -99
- package/fesm2015/tabs.mjs.map +1 -1
- package/fesm2015/toolbar/testing.mjs.map +1 -1
- package/fesm2015/toolbar.mjs +11 -11
- package/fesm2015/toolbar.mjs.map +1 -1
- package/fesm2015/tooltip/testing.mjs +11 -8
- package/fesm2015/tooltip/testing.mjs.map +1 -1
- package/fesm2015/tooltip.mjs +154 -79
- package/fesm2015/tooltip.mjs.map +1 -1
- package/fesm2015/tree/testing.mjs.map +1 -1
- package/fesm2015/tree.mjs +26 -26
- package/fesm2015/tree.mjs.map +1 -1
- package/fesm2020/autocomplete/testing.mjs +6 -0
- package/fesm2020/autocomplete/testing.mjs.map +1 -1
- package/fesm2020/autocomplete.mjs +124 -67
- package/fesm2020/autocomplete.mjs.map +1 -1
- package/fesm2020/badge/testing.mjs.map +1 -1
- package/fesm2020/badge.mjs +7 -7
- package/fesm2020/badge.mjs.map +1 -1
- package/fesm2020/bottom-sheet/testing.mjs.map +1 -1
- package/fesm2020/bottom-sheet.mjs +27 -16
- package/fesm2020/bottom-sheet.mjs.map +1 -1
- package/fesm2020/button/testing.mjs.map +1 -1
- package/fesm2020/button-toggle/testing.mjs.map +1 -1
- package/fesm2020/button-toggle.mjs +11 -11
- package/fesm2020/button-toggle.mjs.map +1 -1
- package/fesm2020/button.mjs +13 -13
- package/fesm2020/button.mjs.map +1 -1
- package/fesm2020/card/testing.mjs.map +1 -1
- package/fesm2020/card.mjs +47 -47
- package/fesm2020/card.mjs.map +1 -1
- package/fesm2020/checkbox/testing.mjs +2 -1
- package/fesm2020/checkbox/testing.mjs.map +1 -1
- package/fesm2020/checkbox.mjs +22 -18
- package/fesm2020/checkbox.mjs.map +1 -1
- package/fesm2020/chips/testing.mjs.map +1 -1
- package/fesm2020/chips.mjs +59 -31
- package/fesm2020/chips.mjs.map +1 -1
- package/fesm2020/core/testing.mjs.map +1 -1
- package/fesm2020/core.mjs +180 -126
- package/fesm2020/core.mjs.map +1 -1
- package/fesm2020/datepicker/testing.mjs.map +1 -1
- package/fesm2020/datepicker.mjs +273 -130
- package/fesm2020/datepicker.mjs.map +1 -1
- package/fesm2020/dialog/testing.mjs +65 -1
- package/fesm2020/dialog/testing.mjs.map +1 -1
- package/fesm2020/dialog.mjs +143 -106
- package/fesm2020/dialog.mjs.map +1 -1
- package/fesm2020/divider/testing.mjs.map +1 -1
- package/fesm2020/divider.mjs +8 -8
- package/fesm2020/divider.mjs.map +1 -1
- package/fesm2020/expansion/testing.mjs.map +1 -1
- package/fesm2020/expansion.mjs +54 -33
- package/fesm2020/expansion.mjs.map +1 -1
- package/fesm2020/form-field/testing/control.mjs.map +1 -1
- package/fesm2020/form-field/testing.mjs +1 -1
- package/fesm2020/form-field/testing.mjs.map +1 -1
- package/fesm2020/form-field.mjs +46 -38
- package/fesm2020/form-field.mjs.map +1 -1
- package/fesm2020/grid-list/testing.mjs.map +1 -1
- package/fesm2020/grid-list.mjs +25 -25
- package/fesm2020/grid-list.mjs.map +1 -1
- package/fesm2020/icon/testing.mjs +8 -8
- package/fesm2020/icon/testing.mjs.map +1 -1
- package/fesm2020/icon.mjs +45 -44
- package/fesm2020/icon.mjs.map +1 -1
- package/fesm2020/input/testing.mjs.map +1 -1
- package/fesm2020/input.mjs +44 -27
- package/fesm2020/input.mjs.map +1 -1
- package/fesm2020/list/testing.mjs +0 -8
- package/fesm2020/list/testing.mjs.map +1 -1
- package/fesm2020/list.mjs +38 -63
- package/fesm2020/list.mjs.map +1 -1
- package/fesm2020/material.mjs.map +1 -1
- package/fesm2020/menu/testing.mjs.map +1 -1
- package/fesm2020/menu.mjs +127 -99
- package/fesm2020/menu.mjs.map +1 -1
- package/fesm2020/paginator/testing.mjs +10 -0
- package/fesm2020/paginator/testing.mjs.map +1 -1
- package/fesm2020/paginator.mjs +18 -14
- package/fesm2020/paginator.mjs.map +1 -1
- package/fesm2020/progress-bar/testing.mjs.map +1 -1
- package/fesm2020/progress-bar.mjs +11 -8
- package/fesm2020/progress-bar.mjs.map +1 -1
- package/fesm2020/progress-spinner/testing.mjs.map +1 -1
- package/fesm2020/progress-spinner.mjs +31 -61
- package/fesm2020/progress-spinner.mjs.map +1 -1
- package/fesm2020/radio/testing.mjs +2 -1
- package/fesm2020/radio/testing.mjs.map +1 -1
- package/fesm2020/radio.mjs +45 -17
- package/fesm2020/radio.mjs.map +1 -1
- package/fesm2020/select/testing.mjs.map +1 -1
- package/fesm2020/select.mjs +70 -32
- package/fesm2020/select.mjs.map +1 -1
- package/fesm2020/sidenav/testing.mjs.map +1 -1
- package/fesm2020/sidenav.mjs +36 -32
- package/fesm2020/sidenav.mjs.map +1 -1
- package/fesm2020/slide-toggle/testing.mjs +3 -1
- package/fesm2020/slide-toggle/testing.mjs.map +1 -1
- package/fesm2020/slide-toggle.mjs +16 -15
- package/fesm2020/slide-toggle.mjs.map +1 -1
- package/fesm2020/slider/testing.mjs.map +1 -1
- package/fesm2020/slider.mjs +18 -11
- package/fesm2020/slider.mjs.map +1 -1
- package/fesm2020/snack-bar/testing.mjs.map +1 -1
- package/fesm2020/snack-bar.mjs +37 -31
- package/fesm2020/snack-bar.mjs.map +1 -1
- package/fesm2020/sort/testing.mjs.map +1 -1
- package/fesm2020/sort.mjs +24 -16
- package/fesm2020/sort.mjs.map +1 -1
- package/fesm2020/stepper/testing.mjs.map +1 -1
- package/fesm2020/stepper.mjs +72 -93
- package/fesm2020/stepper.mjs.map +1 -1
- package/fesm2020/table/testing.mjs.map +1 -1
- package/fesm2020/table.mjs +57 -57
- package/fesm2020/table.mjs.map +1 -1
- package/fesm2020/tabs/testing.mjs.map +1 -1
- package/fesm2020/tabs.mjs +161 -99
- package/fesm2020/tabs.mjs.map +1 -1
- package/fesm2020/toolbar/testing.mjs.map +1 -1
- package/fesm2020/toolbar.mjs +11 -11
- package/fesm2020/toolbar.mjs.map +1 -1
- package/fesm2020/tooltip/testing.mjs +11 -6
- package/fesm2020/tooltip/testing.mjs.map +1 -1
- package/fesm2020/tooltip.mjs +147 -71
- package/fesm2020/tooltip.mjs.map +1 -1
- package/fesm2020/tree/testing.mjs.map +1 -1
- package/fesm2020/tree.mjs +26 -26
- package/fesm2020/tree.mjs.map +1 -1
- package/form-field/form-field-control.d.ts +3 -3
- package/form-field/form-field.d.ts +15 -8
- package/form-field/testing/public-api.d.ts +1 -1
- package/icon/icon-registry.d.ts +7 -9
- package/icon/icon.d.ts +12 -3
- package/icon/testing/fake-icon-registry.d.ts +1 -1
- package/input/input.d.ts +12 -1
- package/list/selection-list.d.ts +4 -21
- package/list/testing/list-item-harness-base.d.ts +1 -7
- package/menu/menu-errors.d.ts +0 -5
- package/menu/menu-item.d.ts +3 -2
- package/menu/menu-trigger.d.ts +21 -11
- package/menu/menu.d.ts +8 -3
- package/package.json +7 -7
- package/paginator/paginator.d.ts +12 -1
- package/paginator/testing/paginator-harness.d.ts +3 -0
- package/prebuilt-themes/deeppurple-amber.css +1 -1
- package/prebuilt-themes/indigo-pink.css +1 -1
- package/prebuilt-themes/pink-bluegrey.css +1 -1
- package/prebuilt-themes/purple-green.css +1 -1
- package/progress-spinner/progress-spinner-module.d.ts +1 -1
- package/progress-spinner/progress-spinner.d.ts +4 -19
- package/progress-spinner/public-api.d.ts +8 -1
- package/radio/radio.d.ts +7 -2
- package/radio/testing/radio-harness-filters.d.ts +2 -0
- package/schematics/collection.json +4 -2
- package/schematics/migration.json +5 -0
- package/schematics/ng-add/fonts/material-fonts.js +4 -13
- package/schematics/ng-add/fonts/material-fonts.mjs +4 -13
- package/schematics/ng-add/index.js +2 -2
- package/schematics/ng-add/index.mjs +2 -2
- package/schematics/ng-add/schema.d.ts +2 -2
- package/schematics/ng-add/schema.js +1 -1
- package/schematics/ng-add/schema.json +29 -9
- package/schematics/ng-add/schema.mjs +1 -1
- package/schematics/ng-add/setup-project.js +16 -23
- package/schematics/ng-add/setup-project.mjs +16 -23
- package/schematics/ng-add/theming/theming.js +28 -39
- package/schematics/ng-add/theming/theming.mjs +28 -39
- package/schematics/ng-generate/address-form/index.js +5 -14
- package/schematics/ng-generate/address-form/index.mjs +5 -14
- package/schematics/ng-generate/address-form/schema.json +1 -1
- package/schematics/ng-generate/dashboard/index.js +5 -14
- package/schematics/ng-generate/dashboard/index.mjs +5 -14
- package/schematics/ng-generate/dashboard/schema.json +1 -1
- package/schematics/ng-generate/navigation/index.js +5 -14
- package/schematics/ng-generate/navigation/index.mjs +5 -14
- package/schematics/ng-generate/navigation/schema.json +1 -1
- package/schematics/ng-generate/table/index.js +5 -14
- package/schematics/ng-generate/table/index.mjs +5 -14
- package/schematics/ng-generate/table/schema.json +1 -1
- package/schematics/ng-generate/tree/index.js +5 -14
- package/schematics/ng-generate/tree/index.mjs +5 -14
- package/schematics/ng-generate/tree/schema.json +1 -1
- package/schematics/ng-update/data/constructor-checks.js +11 -1
- package/schematics/ng-update/data/constructor-checks.mjs +11 -1
- package/schematics/ng-update/data/css-selectors.js +7 -1
- package/schematics/ng-update/data/css-selectors.mjs +7 -1
- package/schematics/ng-update/data/index.js +6 -2
- package/schematics/ng-update/data/index.mjs +6 -2
- package/schematics/ng-update/index.d.ts +2 -0
- package/schematics/ng-update/index.js +7 -2
- package/schematics/ng-update/index.mjs +7 -2
- package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +4 -4
- package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.mjs +4 -4
- package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.js +14 -23
- package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.mjs +14 -23
- package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.js +3 -15
- package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.mjs +3 -15
- package/schematics/ng-update/migrations/theming-api-v12/migration.js +5 -5
- package/schematics/ng-update/migrations/theming-api-v12/migration.mjs +5 -5
- package/schematics/tsconfig.json +1 -4
- package/select/select.d.ts +25 -4
- package/sidenav/sidenav-module.d.ts +2 -3
- package/slide-toggle/testing/slide-toggle-harness-filters.d.ts +4 -0
- package/snack-bar/snack-bar.d.ts +1 -1
- package/sort/sort-header.d.ts +4 -4
- package/sort/sort.d.ts +4 -0
- package/stepper/public-api.d.ts +1 -1
- package/stepper/stepper-animations.d.ts +2 -0
- package/stepper/stepper-module.d.ts +1 -1
- package/stepper/stepper.d.ts +15 -38
- package/tabs/_tabs-common.scss +15 -5
- package/tabs/ink-bar.d.ts +0 -5
- package/tabs/paginated-tab-header.d.ts +4 -2
- package/tabs/tab-body.d.ts +3 -1
- package/tabs/tab-config.d.ts +6 -0
- package/tabs/tab-group.d.ts +15 -3
- package/tooltip/testing/tooltip-harness.d.ts +6 -0
- package/tooltip/tooltip.d.ts +36 -8
package/fesm2020/menu.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW, ESCAPE, hasModifierKey,
|
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
6
|
import { InjectionToken, Directive, Inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Input, QueryList, EventEmitter, TemplateRef, ContentChildren, ViewChild, ContentChild, Output, Self, NgModule } from '@angular/core';
|
|
7
7
|
import { Subject, Subscription, merge, of, asapScheduler } from 'rxjs';
|
|
8
|
-
import { startWith, switchMap, take,
|
|
8
|
+
import { startWith, switchMap, take, takeUntil, filter, delay } from 'rxjs/operators';
|
|
9
9
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
10
10
|
import { TemplatePortal, DomPortalOutlet } from '@angular/cdk/portal';
|
|
11
11
|
import * as i3 from '@angular/common';
|
|
@@ -145,9 +145,9 @@ class _MatMenuContentBase {
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
-
_MatMenuContentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
149
|
-
_MatMenuContentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
148
|
+
_MatMenuContentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: _MatMenuContentBase, deps: [{ token: i0.TemplateRef }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
149
|
+
_MatMenuContentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.13", type: _MatMenuContentBase, ngImport: i0 });
|
|
150
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: _MatMenuContentBase, decorators: [{
|
|
151
151
|
type: Directive
|
|
152
152
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
|
153
153
|
type: Inject,
|
|
@@ -158,9 +158,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0-rc.1", ng
|
|
|
158
158
|
*/
|
|
159
159
|
class MatMenuContent extends _MatMenuContentBase {
|
|
160
160
|
}
|
|
161
|
-
MatMenuContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
162
|
-
MatMenuContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "
|
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
161
|
+
MatMenuContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenuContent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
162
|
+
MatMenuContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.13", type: MatMenuContent, selector: "ng-template[matMenuContent]", providers: [{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }], usesInheritance: true, ngImport: i0 });
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenuContent, decorators: [{
|
|
164
164
|
type: Directive,
|
|
165
165
|
args: [{
|
|
166
166
|
selector: 'ng-template[matMenuContent]',
|
|
@@ -175,17 +175,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0-rc.1", ng
|
|
|
175
175
|
* Use of this source code is governed by an MIT-style license that can be
|
|
176
176
|
* found in the LICENSE file at https://angular.io/license
|
|
177
177
|
*/
|
|
178
|
-
/**
|
|
179
|
-
* Throws an exception for the case when menu trigger doesn't have a valid mat-menu instance
|
|
180
|
-
* @docs-private
|
|
181
|
-
*/
|
|
182
|
-
function throwMatMenuMissingError() {
|
|
183
|
-
throw Error(`matMenuTriggerFor: must pass in an mat-menu instance.
|
|
184
|
-
|
|
185
|
-
Example:
|
|
186
|
-
<mat-menu #menu="matMenu"></mat-menu>
|
|
187
|
-
<button [matMenuTriggerFor]="menu"></button>`);
|
|
188
|
-
}
|
|
189
178
|
/**
|
|
190
179
|
* Throws an exception for the case when menu's x-position value isn't valid.
|
|
191
180
|
* In other words, it doesn't match 'before' or 'after'.
|
|
@@ -245,6 +234,7 @@ class MatMenuItem extends _MatMenuItemBase {
|
|
|
245
234
|
constructor(_elementRef, _document, _focusMonitor, _parentMenu, _changeDetectorRef) {
|
|
246
235
|
super();
|
|
247
236
|
this._elementRef = _elementRef;
|
|
237
|
+
this._document = _document;
|
|
248
238
|
this._focusMonitor = _focusMonitor;
|
|
249
239
|
this._parentMenu = _parentMenu;
|
|
250
240
|
this._changeDetectorRef = _changeDetectorRef;
|
|
@@ -325,10 +315,13 @@ class MatMenuItem extends _MatMenuItemBase {
|
|
|
325
315
|
this._highlighted = isHighlighted;
|
|
326
316
|
this._changeDetectorRef?.markForCheck();
|
|
327
317
|
}
|
|
318
|
+
_hasFocus() {
|
|
319
|
+
return this._document && this._document.activeElement === this._getHostElement();
|
|
320
|
+
}
|
|
328
321
|
}
|
|
329
|
-
MatMenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
330
|
-
MatMenuItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
331
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
322
|
+
MatMenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenuItem, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i1.FocusMonitor }, { token: MAT_MENU_PANEL, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
323
|
+
MatMenuItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.13", type: MatMenuItem, selector: "[mat-menu-item]", inputs: { disabled: "disabled", disableRipple: "disableRipple", role: "role" }, host: { listeners: { "click": "_checkDisabled($event)", "mouseenter": "_handleMouseEnter()" }, properties: { "attr.role": "role", "class.mat-menu-item": "true", "class.mat-menu-item-highlighted": "_highlighted", "class.mat-menu-item-submenu-trigger": "_triggersSubmenu", "attr.tabindex": "_getTabIndex()", "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null" }, classAttribute: "mat-focus-indicator" }, exportAs: ["matMenuItem"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<div class=\"mat-menu-ripple\" matRipple\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleTrigger]=\"_getHostElement()\">\n</div>\n\n<svg\n *ngIf=\"_triggersSubmenu\"\n class=\"mat-menu-submenu-icon\"\n viewBox=\"0 0 5 10\"\n focusable=\"false\"><polygon points=\"0,0 5,5 0,10\"/></svg>\n", directives: [{ type: i2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
324
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenuItem, decorators: [{
|
|
332
325
|
type: Component,
|
|
333
326
|
args: [{ selector: '[mat-menu-item]', exportAs: 'matMenuItem', inputs: ['disabled', 'disableRipple'], host: {
|
|
334
327
|
'[attr.role]': 'role',
|
|
@@ -378,10 +371,13 @@ function MAT_MENU_DEFAULT_OPTIONS_FACTORY() {
|
|
|
378
371
|
let menuPanelUid = 0;
|
|
379
372
|
/** Base class with all of the `MatMenu` functionality. */
|
|
380
373
|
class _MatMenuBase {
|
|
381
|
-
constructor(_elementRef, _ngZone, _defaultOptions
|
|
374
|
+
constructor(_elementRef, _ngZone, _defaultOptions,
|
|
375
|
+
// @breaking-change 15.0.0 `_changeDetectorRef` to become a required parameter.
|
|
376
|
+
_changeDetectorRef) {
|
|
382
377
|
this._elementRef = _elementRef;
|
|
383
378
|
this._ngZone = _ngZone;
|
|
384
379
|
this._defaultOptions = _defaultOptions;
|
|
380
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
385
381
|
this._xPosition = this._defaultOptions.xPosition;
|
|
386
382
|
this._yPosition = this._defaultOptions.yPosition;
|
|
387
383
|
/** Only the direct descendant menu items. */
|
|
@@ -498,6 +494,22 @@ class _MatMenuBase {
|
|
|
498
494
|
this._directDescendantItems.changes
|
|
499
495
|
.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._focused))))
|
|
500
496
|
.subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem));
|
|
497
|
+
this._directDescendantItems.changes.subscribe((itemsList) => {
|
|
498
|
+
// Move focus to another item, if the active item is removed from the list.
|
|
499
|
+
// We need to debounce the callback, because multiple items might be removed
|
|
500
|
+
// in quick succession.
|
|
501
|
+
const manager = this._keyManager;
|
|
502
|
+
if (this._panelAnimationState === 'enter' && manager.activeItem?._hasFocus()) {
|
|
503
|
+
const items = itemsList.toArray();
|
|
504
|
+
const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));
|
|
505
|
+
if (items[index] && !items[index].disabled) {
|
|
506
|
+
manager.setActiveItem(index);
|
|
507
|
+
}
|
|
508
|
+
else {
|
|
509
|
+
manager.setNextItemActive();
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
});
|
|
501
513
|
}
|
|
502
514
|
ngOnDestroy() {
|
|
503
515
|
this._directDescendantItems.destroy();
|
|
@@ -636,6 +648,8 @@ class _MatMenuBase {
|
|
|
636
648
|
classes['mat-menu-after'] = posX === 'after';
|
|
637
649
|
classes['mat-menu-above'] = posY === 'above';
|
|
638
650
|
classes['mat-menu-below'] = posY === 'below';
|
|
651
|
+
// @breaking-change 15.0.0 Remove null check for `_changeDetectorRef`.
|
|
652
|
+
this._changeDetectorRef?.markForCheck();
|
|
639
653
|
}
|
|
640
654
|
/** Starts the enter animation. */
|
|
641
655
|
_startAnimation() {
|
|
@@ -679,14 +693,14 @@ class _MatMenuBase {
|
|
|
679
693
|
});
|
|
680
694
|
}
|
|
681
695
|
}
|
|
682
|
-
_MatMenuBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
683
|
-
_MatMenuBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "
|
|
684
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
696
|
+
_MatMenuBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: _MatMenuBase, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
697
|
+
_MatMenuBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.13", type: _MatMenuBase, inputs: { backdropClass: "backdropClass", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], xPosition: "xPosition", yPosition: "yPosition", overlapTrigger: "overlapTrigger", hasBackdrop: "hasBackdrop", panelClass: ["class", "panelClass"], classList: "classList" }, outputs: { closed: "closed", close: "close" }, queries: [{ propertyName: "lazyContent", first: true, predicate: MAT_MENU_CONTENT, descendants: true }, { propertyName: "_allItems", predicate: MatMenuItem, descendants: true }, { propertyName: "items", predicate: MatMenuItem }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
|
|
698
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: _MatMenuBase, decorators: [{
|
|
685
699
|
type: Directive
|
|
686
700
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
687
701
|
type: Inject,
|
|
688
702
|
args: [MAT_MENU_DEFAULT_OPTIONS]
|
|
689
|
-
}] }]; }, propDecorators: { _allItems: [{
|
|
703
|
+
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { _allItems: [{
|
|
690
704
|
type: ContentChildren,
|
|
691
705
|
args: [MatMenuItem, { descendants: true }]
|
|
692
706
|
}], backdropClass: [{
|
|
@@ -729,25 +743,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0-rc.1", ng
|
|
|
729
743
|
}] } });
|
|
730
744
|
/** @docs-public MatMenu */
|
|
731
745
|
class MatMenu extends _MatMenuBase {
|
|
732
|
-
constructor(elementRef, ngZone, defaultOptions) {
|
|
733
|
-
super(elementRef, ngZone, defaultOptions);
|
|
746
|
+
constructor(elementRef, ngZone, defaultOptions, changeDetectorRef) {
|
|
747
|
+
super(elementRef, ngZone, defaultOptions, changeDetectorRef);
|
|
734
748
|
this._elevationPrefix = 'mat-elevation-z';
|
|
735
749
|
this._baseElevation = 4;
|
|
736
750
|
}
|
|
737
751
|
}
|
|
738
|
-
MatMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
739
|
-
MatMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
740
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
752
|
+
MatMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenu, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
753
|
+
MatMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.13", type: MatMenu, selector: "mat-menu", host: { properties: { "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], exportAs: ["matMenu"], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <div\n class=\"mat-menu-panel\"\n [id]=\"panelId\"\n [ngClass]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px;position:relative}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]::before{display:block;position:absolute;content:\"\";top:0;left:0;bottom:0;right:0}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-menu-submenu-icon{fill:CanvasText}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}"], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
754
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenu, decorators: [{
|
|
741
755
|
type: Component,
|
|
742
756
|
args: [{ selector: 'mat-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'matMenu', host: {
|
|
743
757
|
'[attr.aria-label]': 'null',
|
|
744
758
|
'[attr.aria-labelledby]': 'null',
|
|
745
759
|
'[attr.aria-describedby]': 'null',
|
|
746
|
-
}, animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], template: "<ng-template>\n <div\n class=\"mat-menu-panel\"\n [id]=\"panelId\"\n [ngClass]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none
|
|
760
|
+
}, animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], template: "<ng-template>\n <div\n class=\"mat-menu-panel\"\n [id]=\"panelId\"\n [ngClass]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px;position:relative}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]::before{display:block;position:absolute;content:\"\";top:0;left:0;bottom:0;right:0}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-menu-submenu-icon{fill:CanvasText}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}"] }]
|
|
747
761
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
748
762
|
type: Inject,
|
|
749
763
|
args: [MAT_MENU_DEFAULT_OPTIONS]
|
|
750
|
-
}] }]; } });
|
|
764
|
+
}] }, { type: i0.ChangeDetectorRef }]; } });
|
|
751
765
|
|
|
752
766
|
/**
|
|
753
767
|
* @license
|
|
@@ -768,7 +782,11 @@ const MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {
|
|
|
768
782
|
deps: [Overlay],
|
|
769
783
|
useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY,
|
|
770
784
|
};
|
|
771
|
-
/**
|
|
785
|
+
/**
|
|
786
|
+
* Default top padding of the menu panel.
|
|
787
|
+
* @deprecated No longer being used. Will be removed.
|
|
788
|
+
* @breaking-change 15.0.0
|
|
789
|
+
*/
|
|
772
790
|
const MENU_PANEL_TOP_PADDING = 8;
|
|
773
791
|
/** Options for binding a passive event listener. */
|
|
774
792
|
const passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });
|
|
@@ -777,13 +795,14 @@ class _MatMenuTriggerBase {
|
|
|
777
795
|
constructor(_overlay, _element, _viewContainerRef, scrollStrategy, parentMenu,
|
|
778
796
|
// `MatMenuTrigger` is commonly used in combination with a `MatMenuItem`.
|
|
779
797
|
// tslint:disable-next-line: lightweight-tokens
|
|
780
|
-
_menuItemInstance, _dir, _focusMonitor) {
|
|
798
|
+
_menuItemInstance, _dir, _focusMonitor, _ngZone) {
|
|
781
799
|
this._overlay = _overlay;
|
|
782
800
|
this._element = _element;
|
|
783
801
|
this._viewContainerRef = _viewContainerRef;
|
|
784
802
|
this._menuItemInstance = _menuItemInstance;
|
|
785
803
|
this._dir = _dir;
|
|
786
804
|
this._focusMonitor = _focusMonitor;
|
|
805
|
+
this._ngZone = _ngZone;
|
|
787
806
|
this._overlayRef = null;
|
|
788
807
|
this._menuOpen = false;
|
|
789
808
|
this._closingActionsSubscription = Subscription.EMPTY;
|
|
@@ -866,7 +885,6 @@ class _MatMenuTriggerBase {
|
|
|
866
885
|
}
|
|
867
886
|
}
|
|
868
887
|
ngAfterContentInit() {
|
|
869
|
-
this._checkMenu();
|
|
870
888
|
this._handleHover();
|
|
871
889
|
}
|
|
872
890
|
ngOnDestroy() {
|
|
@@ -897,28 +915,35 @@ class _MatMenuTriggerBase {
|
|
|
897
915
|
}
|
|
898
916
|
/** Opens the menu. */
|
|
899
917
|
openMenu() {
|
|
900
|
-
|
|
918
|
+
const menu = this.menu;
|
|
919
|
+
if (this._menuOpen || !menu) {
|
|
901
920
|
return;
|
|
902
921
|
}
|
|
903
|
-
this.
|
|
904
|
-
const overlayRef = this._createOverlay();
|
|
922
|
+
const overlayRef = this._createOverlay(menu);
|
|
905
923
|
const overlayConfig = overlayRef.getConfig();
|
|
906
|
-
|
|
924
|
+
const positionStrategy = overlayConfig.positionStrategy;
|
|
925
|
+
this._setPosition(menu, positionStrategy);
|
|
907
926
|
overlayConfig.hasBackdrop =
|
|
908
|
-
|
|
909
|
-
overlayRef.attach(this._getPortal());
|
|
910
|
-
if (
|
|
911
|
-
|
|
927
|
+
menu.hasBackdrop == null ? !this.triggersSubmenu() : menu.hasBackdrop;
|
|
928
|
+
overlayRef.attach(this._getPortal(menu));
|
|
929
|
+
if (menu.lazyContent) {
|
|
930
|
+
menu.lazyContent.attach(this.menuData);
|
|
912
931
|
}
|
|
913
932
|
this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());
|
|
914
|
-
this._initMenu();
|
|
915
|
-
if (
|
|
916
|
-
|
|
933
|
+
this._initMenu(menu);
|
|
934
|
+
if (menu instanceof _MatMenuBase) {
|
|
935
|
+
menu._startAnimation();
|
|
936
|
+
menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => {
|
|
937
|
+
// Re-adjust the position without locking when the amount of items
|
|
938
|
+
// changes so that the overlay is allowed to pick a new optimal position.
|
|
939
|
+
positionStrategy.withLockedPosition(false).reapplyLastPosition();
|
|
940
|
+
positionStrategy.withLockedPosition(true);
|
|
941
|
+
});
|
|
917
942
|
}
|
|
918
943
|
}
|
|
919
944
|
/** Closes the menu. */
|
|
920
945
|
closeMenu() {
|
|
921
|
-
this.menu
|
|
946
|
+
this.menu?.close.emit();
|
|
922
947
|
}
|
|
923
948
|
/**
|
|
924
949
|
* Focuses the menu trigger.
|
|
@@ -974,32 +999,30 @@ class _MatMenuTriggerBase {
|
|
|
974
999
|
}
|
|
975
1000
|
else {
|
|
976
1001
|
this._setIsMenuOpen(false);
|
|
977
|
-
|
|
978
|
-
menu.lazyContent.detach();
|
|
979
|
-
}
|
|
1002
|
+
menu?.lazyContent?.detach();
|
|
980
1003
|
}
|
|
981
1004
|
}
|
|
982
1005
|
/**
|
|
983
1006
|
* This method sets the menu state to open and focuses the first item if
|
|
984
1007
|
* the menu was opened via the keyboard.
|
|
985
1008
|
*/
|
|
986
|
-
_initMenu() {
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
this._setMenuElevation();
|
|
990
|
-
|
|
1009
|
+
_initMenu(menu) {
|
|
1010
|
+
menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined;
|
|
1011
|
+
menu.direction = this.dir;
|
|
1012
|
+
this._setMenuElevation(menu);
|
|
1013
|
+
menu.focusFirstItem(this._openedBy || 'program');
|
|
991
1014
|
this._setIsMenuOpen(true);
|
|
992
1015
|
}
|
|
993
1016
|
/** Updates the menu elevation based on the amount of parent menus that it has. */
|
|
994
|
-
_setMenuElevation() {
|
|
995
|
-
if (
|
|
1017
|
+
_setMenuElevation(menu) {
|
|
1018
|
+
if (menu.setElevation) {
|
|
996
1019
|
let depth = 0;
|
|
997
|
-
let parentMenu =
|
|
1020
|
+
let parentMenu = menu.parentMenu;
|
|
998
1021
|
while (parentMenu) {
|
|
999
1022
|
depth++;
|
|
1000
1023
|
parentMenu = parentMenu.parentMenu;
|
|
1001
1024
|
}
|
|
1002
|
-
|
|
1025
|
+
menu.setElevation(depth);
|
|
1003
1026
|
}
|
|
1004
1027
|
}
|
|
1005
1028
|
// set state rather than toggle to support triggers sharing a menu
|
|
@@ -1010,23 +1033,14 @@ class _MatMenuTriggerBase {
|
|
|
1010
1033
|
this._menuItemInstance._setHighlighted(isOpen);
|
|
1011
1034
|
}
|
|
1012
1035
|
}
|
|
1013
|
-
/**
|
|
1014
|
-
* This method checks that a valid instance of MatMenu has been passed into
|
|
1015
|
-
* matMenuTriggerFor. If not, an exception is thrown.
|
|
1016
|
-
*/
|
|
1017
|
-
_checkMenu() {
|
|
1018
|
-
if (!this.menu && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
1019
|
-
throwMatMenuMissingError();
|
|
1020
|
-
}
|
|
1021
|
-
}
|
|
1022
1036
|
/**
|
|
1023
1037
|
* This method creates the overlay from the provided menu's template and saves its
|
|
1024
1038
|
* OverlayRef so that it can be attached to the DOM when openMenu is called.
|
|
1025
1039
|
*/
|
|
1026
|
-
_createOverlay() {
|
|
1040
|
+
_createOverlay(menu) {
|
|
1027
1041
|
if (!this._overlayRef) {
|
|
1028
|
-
const config = this._getOverlayConfig();
|
|
1029
|
-
this._subscribeToPositions(config.positionStrategy);
|
|
1042
|
+
const config = this._getOverlayConfig(menu);
|
|
1043
|
+
this._subscribeToPositions(menu, config.positionStrategy);
|
|
1030
1044
|
this._overlayRef = this._overlay.create(config);
|
|
1031
1045
|
// Consume the `keydownEvents` in order to prevent them from going to another overlay.
|
|
1032
1046
|
// Ideally we'd also have our keyboard event logic in here, however doing so will
|
|
@@ -1039,7 +1053,7 @@ class _MatMenuTriggerBase {
|
|
|
1039
1053
|
* This method builds the configuration object needed to create the overlay, the OverlayState.
|
|
1040
1054
|
* @returns OverlayConfig
|
|
1041
1055
|
*/
|
|
1042
|
-
_getOverlayConfig() {
|
|
1056
|
+
_getOverlayConfig(menu) {
|
|
1043
1057
|
return new OverlayConfig({
|
|
1044
1058
|
positionStrategy: this._overlay
|
|
1045
1059
|
.position()
|
|
@@ -1047,8 +1061,8 @@ class _MatMenuTriggerBase {
|
|
|
1047
1061
|
.withLockedPosition()
|
|
1048
1062
|
.withGrowAfterOpen()
|
|
1049
1063
|
.withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),
|
|
1050
|
-
backdropClass:
|
|
1051
|
-
panelClass:
|
|
1064
|
+
backdropClass: menu.backdropClass || 'cdk-overlay-transparent-backdrop',
|
|
1065
|
+
panelClass: menu.overlayPanelClass,
|
|
1052
1066
|
scrollStrategy: this._scrollStrategy(),
|
|
1053
1067
|
direction: this._dir,
|
|
1054
1068
|
});
|
|
@@ -1058,12 +1072,20 @@ class _MatMenuTriggerBase {
|
|
|
1058
1072
|
* on the menu based on the new position. This ensures the animation origin is always
|
|
1059
1073
|
* correct, even if a fallback position is used for the overlay.
|
|
1060
1074
|
*/
|
|
1061
|
-
_subscribeToPositions(position) {
|
|
1062
|
-
if (
|
|
1075
|
+
_subscribeToPositions(menu, position) {
|
|
1076
|
+
if (menu.setPositionClasses) {
|
|
1063
1077
|
position.positionChanges.subscribe(change => {
|
|
1064
1078
|
const posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';
|
|
1065
1079
|
const posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';
|
|
1066
|
-
|
|
1080
|
+
// @breaking-change 15.0.0 Remove null check for `ngZone`.
|
|
1081
|
+
// `positionChanges` fires outside of the `ngZone` and `setPositionClasses` might be
|
|
1082
|
+
// updating something in the view so we need to bring it back in.
|
|
1083
|
+
if (this._ngZone) {
|
|
1084
|
+
this._ngZone.run(() => menu.setPositionClasses(posX, posY));
|
|
1085
|
+
}
|
|
1086
|
+
else {
|
|
1087
|
+
menu.setPositionClasses(posX, posY);
|
|
1088
|
+
}
|
|
1067
1089
|
});
|
|
1068
1090
|
}
|
|
1069
1091
|
}
|
|
@@ -1072,20 +1094,26 @@ class _MatMenuTriggerBase {
|
|
|
1072
1094
|
* so the overlay connects with the trigger correctly.
|
|
1073
1095
|
* @param positionStrategy Strategy whose position to update.
|
|
1074
1096
|
*/
|
|
1075
|
-
_setPosition(positionStrategy) {
|
|
1076
|
-
let [originX, originFallbackX] =
|
|
1077
|
-
let [overlayY, overlayFallbackY] =
|
|
1097
|
+
_setPosition(menu, positionStrategy) {
|
|
1098
|
+
let [originX, originFallbackX] = menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];
|
|
1099
|
+
let [overlayY, overlayFallbackY] = menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];
|
|
1078
1100
|
let [originY, originFallbackY] = [overlayY, overlayFallbackY];
|
|
1079
1101
|
let [overlayX, overlayFallbackX] = [originX, originFallbackX];
|
|
1080
1102
|
let offsetY = 0;
|
|
1081
1103
|
if (this.triggersSubmenu()) {
|
|
1082
1104
|
// When the menu is a sub-menu, it should always align itself
|
|
1083
1105
|
// to the edges of the trigger, instead of overlapping it.
|
|
1084
|
-
overlayFallbackX = originX =
|
|
1106
|
+
overlayFallbackX = originX = menu.xPosition === 'before' ? 'start' : 'end';
|
|
1085
1107
|
originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';
|
|
1086
|
-
|
|
1108
|
+
if (this._parentMaterialMenu) {
|
|
1109
|
+
if (this._parentInnerPadding == null) {
|
|
1110
|
+
const firstItem = this._parentMaterialMenu.items.first;
|
|
1111
|
+
this._parentInnerPadding = firstItem ? firstItem._getHostElement().offsetTop : 0;
|
|
1112
|
+
}
|
|
1113
|
+
offsetY = overlayY === 'bottom' ? this._parentInnerPadding : -this._parentInnerPadding;
|
|
1114
|
+
}
|
|
1087
1115
|
}
|
|
1088
|
-
else if (!
|
|
1116
|
+
else if (!menu.overlapTrigger) {
|
|
1089
1117
|
originY = overlayY === 'top' ? 'bottom' : 'top';
|
|
1090
1118
|
originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';
|
|
1091
1119
|
}
|
|
@@ -1187,23 +1215,23 @@ class _MatMenuTriggerBase {
|
|
|
1187
1215
|
});
|
|
1188
1216
|
}
|
|
1189
1217
|
/** Gets the portal that should be attached to the overlay. */
|
|
1190
|
-
_getPortal() {
|
|
1218
|
+
_getPortal(menu) {
|
|
1191
1219
|
// Note that we can avoid this check by keeping the portal on the menu panel.
|
|
1192
1220
|
// While it would be cleaner, we'd have to introduce another required method on
|
|
1193
1221
|
// `MatMenuPanel`, making it harder to consume.
|
|
1194
|
-
if (!this._portal || this._portal.templateRef !==
|
|
1195
|
-
this._portal = new TemplatePortal(
|
|
1222
|
+
if (!this._portal || this._portal.templateRef !== menu.templateRef) {
|
|
1223
|
+
this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef);
|
|
1196
1224
|
}
|
|
1197
1225
|
return this._portal;
|
|
1198
1226
|
}
|
|
1199
1227
|
}
|
|
1200
|
-
_MatMenuTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1201
|
-
_MatMenuTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "
|
|
1202
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1228
|
+
_MatMenuTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: _MatMenuTriggerBase, deps: [{ token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: MAT_MENU_SCROLL_STRATEGY }, { token: MAT_MENU_PANEL, optional: true }, { token: MatMenuItem, optional: true, self: true }, { token: i3$1.Directionality, optional: true }, { token: i1.FocusMonitor }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1229
|
+
_MatMenuTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.13", type: _MatMenuTriggerBase, inputs: { _deprecatedMatMenuTriggerFor: ["mat-menu-trigger-for", "_deprecatedMatMenuTriggerFor"], menu: ["matMenuTriggerFor", "menu"], menuData: ["matMenuTriggerData", "menuData"], restoreFocus: ["matMenuTriggerRestoreFocus", "restoreFocus"] }, outputs: { menuOpened: "menuOpened", onMenuOpen: "onMenuOpen", menuClosed: "menuClosed", onMenuClose: "onMenuClose" }, host: { listeners: { "click": "_handleClick($event)", "mousedown": "_handleMousedown($event)", "keydown": "_handleKeydown($event)" }, properties: { "attr.aria-haspopup": "menu ? \"menu\" : null", "attr.aria-expanded": "menuOpen || null", "attr.aria-controls": "menuOpen ? menu.panelId : null" } }, ngImport: i0 });
|
|
1230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: _MatMenuTriggerBase, decorators: [{
|
|
1203
1231
|
type: Directive,
|
|
1204
1232
|
args: [{
|
|
1205
1233
|
host: {
|
|
1206
|
-
'aria-haspopup': '
|
|
1234
|
+
'[attr.aria-haspopup]': 'menu ? "menu" : null',
|
|
1207
1235
|
'[attr.aria-expanded]': 'menuOpen || null',
|
|
1208
1236
|
'[attr.aria-controls]': 'menuOpen ? menu.panelId : null',
|
|
1209
1237
|
'(click)': '_handleClick($event)',
|
|
@@ -1225,7 +1253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0-rc.1", ng
|
|
|
1225
1253
|
type: Self
|
|
1226
1254
|
}] }, { type: i3$1.Directionality, decorators: [{
|
|
1227
1255
|
type: Optional
|
|
1228
|
-
}] }, { type: i1.FocusMonitor }]; }, propDecorators: { _deprecatedMatMenuTriggerFor: [{
|
|
1256
|
+
}] }, { type: i1.FocusMonitor }, { type: i0.NgZone }]; }, propDecorators: { _deprecatedMatMenuTriggerFor: [{
|
|
1229
1257
|
type: Input,
|
|
1230
1258
|
args: ['mat-menu-trigger-for']
|
|
1231
1259
|
}], menu: [{
|
|
@@ -1249,9 +1277,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0-rc.1", ng
|
|
|
1249
1277
|
/** Directive applied to an element that should trigger a `mat-menu`. */
|
|
1250
1278
|
class MatMenuTrigger extends _MatMenuTriggerBase {
|
|
1251
1279
|
}
|
|
1252
|
-
MatMenuTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1253
|
-
MatMenuTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "
|
|
1254
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1280
|
+
MatMenuTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenuTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1281
|
+
MatMenuTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.13", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", host: { classAttribute: "mat-menu-trigger" }, exportAs: ["matMenuTrigger"], usesInheritance: true, ngImport: i0 });
|
|
1282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenuTrigger, decorators: [{
|
|
1255
1283
|
type: Directive,
|
|
1256
1284
|
args: [{
|
|
1257
1285
|
selector: `[mat-menu-trigger-for], [matMenuTriggerFor]`,
|
|
@@ -1271,16 +1299,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0-rc.1", ng
|
|
|
1271
1299
|
*/
|
|
1272
1300
|
class MatMenuModule {
|
|
1273
1301
|
}
|
|
1274
|
-
MatMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1275
|
-
MatMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
|
|
1302
|
+
MatMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1303
|
+
MatMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenuModule, declarations: [MatMenu, MatMenuItem, MatMenuTrigger, MatMenuContent], imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule], exports: [CdkScrollableModule,
|
|
1276
1304
|
MatCommonModule,
|
|
1277
1305
|
MatMenu,
|
|
1278
1306
|
MatMenuItem,
|
|
1279
1307
|
MatMenuTrigger,
|
|
1280
1308
|
MatMenuContent] });
|
|
1281
|
-
MatMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
1309
|
+
MatMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenuModule, providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[CommonModule, MatCommonModule, MatRippleModule, OverlayModule], CdkScrollableModule,
|
|
1282
1310
|
MatCommonModule] });
|
|
1283
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1311
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.13", ngImport: i0, type: MatMenuModule, decorators: [{
|
|
1284
1312
|
type: NgModule,
|
|
1285
1313
|
args: [{
|
|
1286
1314
|
imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule],
|