@angular/material 10.0.0-rc.3 → 10.1.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/_theming.scss +17 -17
- package/autocomplete/index.metadata.json +1 -1
- package/autocomplete/testing/autocomplete-harness.d.ts +2 -0
- package/bundles/material-autocomplete-testing.umd.js +11 -0
- package/bundles/material-autocomplete-testing.umd.js.map +1 -1
- package/bundles/material-autocomplete-testing.umd.min.js +2 -2
- package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
- package/bundles/material-autocomplete.umd.js +3 -1
- package/bundles/material-autocomplete.umd.js.map +1 -1
- package/bundles/material-autocomplete.umd.min.js +5 -5
- package/bundles/material-autocomplete.umd.min.js.map +1 -1
- package/bundles/material-badge-testing.umd.min.js +1 -1
- package/bundles/material-badge-testing.umd.min.js.map +1 -1
- package/bundles/material-bottom-sheet-testing.umd.min.js +1 -1
- package/bundles/material-bottom-sheet-testing.umd.min.js.map +1 -1
- package/bundles/material-button-testing.umd.js +11 -0
- package/bundles/material-button-testing.umd.js.map +1 -1
- package/bundles/material-button-testing.umd.min.js +2 -2
- package/bundles/material-button-testing.umd.min.js.map +1 -1
- package/bundles/material-button-toggle-testing.umd.js +11 -0
- package/bundles/material-button-toggle-testing.umd.js.map +1 -1
- package/bundles/material-button-toggle-testing.umd.min.js +3 -3
- package/bundles/material-button-toggle-testing.umd.min.js.map +1 -1
- package/bundles/material-button-toggle.umd.js +12 -3
- package/bundles/material-button-toggle.umd.js.map +1 -1
- package/bundles/material-button-toggle.umd.min.js +2 -2
- package/bundles/material-button-toggle.umd.min.js.map +1 -1
- package/bundles/material-button.umd.js +7 -2
- package/bundles/material-button.umd.js.map +1 -1
- package/bundles/material-button.umd.min.js +4 -4
- package/bundles/material-button.umd.min.js.map +1 -1
- package/bundles/material-card-testing.umd.js +335 -0
- package/bundles/material-card-testing.umd.js.map +1 -0
- package/bundles/material-card-testing.umd.min.js +44 -0
- package/bundles/material-card-testing.umd.min.js.map +1 -0
- package/bundles/material-checkbox-testing.umd.js +11 -0
- package/bundles/material-checkbox-testing.umd.js.map +1 -1
- package/bundles/material-checkbox-testing.umd.min.js +3 -3
- package/bundles/material-checkbox-testing.umd.min.js.map +1 -1
- package/bundles/material-checkbox.umd.js.map +1 -1
- package/bundles/material-chips.umd.js +36 -12
- package/bundles/material-chips.umd.js.map +1 -1
- package/bundles/material-chips.umd.min.js +4 -4
- package/bundles/material-chips.umd.min.js.map +1 -1
- package/bundles/material-core-testing.umd.min.js +1 -1
- package/bundles/material-core-testing.umd.min.js.map +1 -1
- package/bundles/material-core.umd.js +11 -3
- package/bundles/material-core.umd.js.map +1 -1
- package/bundles/material-core.umd.min.js +11 -11
- package/bundles/material-core.umd.min.js.map +1 -1
- package/bundles/material-datepicker.umd.js +20 -11
- package/bundles/material-datepicker.umd.js.map +1 -1
- package/bundles/material-datepicker.umd.min.js +5 -5
- package/bundles/material-datepicker.umd.min.js.map +1 -1
- package/bundles/material-dialog-testing.umd.min.js +1 -1
- package/bundles/material-dialog-testing.umd.min.js.map +1 -1
- package/bundles/material-dialog.umd.js +45 -8
- package/bundles/material-dialog.umd.js.map +1 -1
- package/bundles/material-dialog.umd.min.js +14 -7
- package/bundles/material-dialog.umd.min.js.map +1 -1
- package/bundles/material-divider-testing.umd.min.js +1 -1
- package/bundles/material-divider-testing.umd.min.js.map +1 -1
- package/bundles/material-expansion-testing.umd.js +11 -0
- package/bundles/material-expansion-testing.umd.js.map +1 -1
- package/bundles/material-expansion-testing.umd.min.js +3 -3
- package/bundles/material-expansion-testing.umd.min.js.map +1 -1
- package/bundles/material-form-field-testing.umd.js +32 -0
- package/bundles/material-form-field-testing.umd.js.map +1 -1
- package/bundles/material-form-field-testing.umd.min.js +4 -4
- package/bundles/material-form-field-testing.umd.min.js.map +1 -1
- package/bundles/material-form-field.umd.js +47 -21
- package/bundles/material-form-field.umd.js.map +1 -1
- package/bundles/material-form-field.umd.min.js +5 -5
- package/bundles/material-form-field.umd.min.js.map +1 -1
- package/bundles/material-grid-list-testing.umd.min.js +1 -1
- package/bundles/material-grid-list-testing.umd.min.js.map +1 -1
- package/bundles/material-grid-list.umd.js +2 -2
- package/bundles/material-grid-list.umd.js.map +1 -1
- package/bundles/material-grid-list.umd.min.js +2 -2
- package/bundles/material-grid-list.umd.min.js.map +1 -1
- package/bundles/material-input-testing.umd.js +23 -6
- package/bundles/material-input-testing.umd.js.map +1 -1
- package/bundles/material-input-testing.umd.min.js +3 -3
- package/bundles/material-input-testing.umd.min.js.map +1 -1
- package/bundles/material-input.umd.js +28 -3
- package/bundles/material-input.umd.js.map +1 -1
- package/bundles/material-input.umd.min.js +3 -3
- package/bundles/material-input.umd.min.js.map +1 -1
- package/bundles/material-list-testing.umd.js +33 -0
- package/bundles/material-list-testing.umd.js.map +1 -1
- package/bundles/material-list-testing.umd.min.js +2 -2
- package/bundles/material-list-testing.umd.min.js.map +1 -1
- package/bundles/material-list.umd.js +3 -3
- package/bundles/material-list.umd.min.js +1 -1
- package/bundles/material-list.umd.min.js.map +1 -1
- package/bundles/material-menu-testing.umd.js +22 -0
- package/bundles/material-menu-testing.umd.js.map +1 -1
- package/bundles/material-menu-testing.umd.min.js +2 -2
- package/bundles/material-menu-testing.umd.min.js.map +1 -1
- package/bundles/material-menu.umd.js +13 -2
- package/bundles/material-menu.umd.js.map +1 -1
- package/bundles/material-menu.umd.min.js +4 -4
- package/bundles/material-menu.umd.min.js.map +1 -1
- package/bundles/material-paginator-testing.umd.min.js +1 -1
- package/bundles/material-paginator-testing.umd.min.js.map +1 -1
- package/bundles/material-progress-bar-testing.umd.min.js +1 -1
- package/bundles/material-progress-bar-testing.umd.min.js.map +1 -1
- package/bundles/material-progress-spinner-testing.umd.js +1 -1
- package/bundles/material-progress-spinner-testing.umd.js.map +1 -1
- package/bundles/material-progress-spinner-testing.umd.min.js +2 -2
- package/bundles/material-progress-spinner-testing.umd.min.js.map +1 -1
- package/bundles/material-progress-spinner.umd.js +2 -2
- package/bundles/material-progress-spinner.umd.min.js +3 -3
- package/bundles/material-progress-spinner.umd.min.js.map +1 -1
- package/bundles/material-radio-testing.umd.js +11 -0
- package/bundles/material-radio-testing.umd.js.map +1 -1
- package/bundles/material-radio-testing.umd.min.js +3 -3
- package/bundles/material-radio-testing.umd.min.js.map +1 -1
- package/bundles/material-radio.umd.js +15 -5
- package/bundles/material-radio.umd.js.map +1 -1
- package/bundles/material-radio.umd.min.js +2 -2
- package/bundles/material-radio.umd.min.js.map +1 -1
- package/bundles/material-select-testing.umd.js +11 -0
- package/bundles/material-select-testing.umd.js.map +1 -1
- package/bundles/material-select-testing.umd.min.js +2 -2
- package/bundles/material-select-testing.umd.min.js.map +1 -1
- package/bundles/material-select.umd.js +11 -3
- package/bundles/material-select.umd.js.map +1 -1
- package/bundles/material-select.umd.min.js +4 -4
- package/bundles/material-select.umd.min.js.map +1 -1
- package/bundles/material-sidenav-testing.umd.min.js +1 -1
- package/bundles/material-sidenav-testing.umd.min.js.map +1 -1
- package/bundles/material-sidenav.umd.js +41 -17
- package/bundles/material-sidenav.umd.js.map +1 -1
- package/bundles/material-sidenav.umd.min.js +2 -2
- package/bundles/material-sidenav.umd.min.js.map +1 -1
- package/bundles/material-slide-toggle-testing.umd.js +11 -0
- package/bundles/material-slide-toggle-testing.umd.js.map +1 -1
- package/bundles/material-slide-toggle-testing.umd.min.js +2 -2
- package/bundles/material-slide-toggle-testing.umd.min.js.map +1 -1
- package/bundles/material-slide-toggle.umd.js.map +1 -1
- package/bundles/material-slider-testing.umd.js +11 -0
- package/bundles/material-slider-testing.umd.js.map +1 -1
- package/bundles/material-slider-testing.umd.min.js +2 -2
- package/bundles/material-slider-testing.umd.min.js.map +1 -1
- package/bundles/material-snack-bar-testing.umd.min.js +1 -1
- package/bundles/material-snack-bar-testing.umd.min.js.map +1 -1
- package/bundles/material-snack-bar.umd.js +47 -39
- package/bundles/material-snack-bar.umd.js.map +1 -1
- package/bundles/material-snack-bar.umd.min.js +2 -2
- package/bundles/material-snack-bar.umd.min.js.map +1 -1
- package/bundles/material-sort-testing.umd.js +10 -10
- package/bundles/material-sort-testing.umd.js.map +1 -1
- package/bundles/material-sort-testing.umd.min.js +3 -3
- package/bundles/material-sort-testing.umd.min.js.map +1 -1
- package/bundles/material-sort.umd.js +25 -12
- package/bundles/material-sort.umd.js.map +1 -1
- package/bundles/material-sort.umd.min.js +5 -5
- package/bundles/material-sort.umd.min.js.map +1 -1
- package/bundles/material-table-testing.umd.min.js +1 -1
- package/bundles/material-table-testing.umd.min.js.map +1 -1
- package/bundles/material-table.umd.min.js +2 -2
- package/bundles/material-table.umd.min.js.map +1 -1
- package/bundles/material-tabs-testing.umd.min.js +1 -1
- package/bundles/material-tabs-testing.umd.min.js.map +1 -1
- package/bundles/material-tabs.umd.js +23 -4
- package/bundles/material-tabs.umd.js.map +1 -1
- package/bundles/material-tabs.umd.min.js +5 -12
- package/bundles/material-tabs.umd.min.js.map +1 -1
- package/bundles/material-toolbar-testing.umd.js +330 -0
- package/bundles/material-toolbar-testing.umd.js.map +1 -0
- package/bundles/material-toolbar-testing.umd.min.js +44 -0
- package/bundles/material-toolbar-testing.umd.min.js.map +1 -0
- package/bundles/material-tooltip-testing.umd.min.js +1 -1
- package/bundles/material-tooltip-testing.umd.min.js.map +1 -1
- package/bundles/material-tooltip.umd.js +14 -1
- package/bundles/material-tooltip.umd.js.map +1 -1
- package/bundles/material-tooltip.umd.min.js +3 -3
- package/bundles/material-tooltip.umd.min.js.map +1 -1
- package/bundles/material-tree.umd.js.map +1 -1
- package/button/_button-base.scss +1 -1
- package/button/_button-theme.scss +8 -8
- package/button/index.metadata.json +1 -1
- package/button/testing/button-harness.d.ts +2 -0
- package/button-toggle/button-toggle.d.ts +10 -3
- package/button-toggle/index.metadata.json +1 -1
- package/button-toggle/testing/button-toggle-harness.d.ts +2 -0
- package/card/testing/card-harness-filters.d.ts +17 -0
- package/card/testing/card-harness.d.ts +36 -0
- package/card/testing/index.d.ts +8 -0
- package/card/testing/package.json +9 -0
- package/card/testing/public-api.d.ts +9 -0
- package/checkbox/index.metadata.json +1 -1
- package/checkbox/testing/checkbox-harness.d.ts +2 -0
- package/chips/chip.d.ts +19 -1
- package/chips/index.metadata.json +1 -1
- package/core/focus-indicators/_focus-indicators.scss +6 -6
- package/core/index.metadata.json +1 -1
- package/core/option/optgroup.d.ts +7 -0
- package/core/ripple/ripple-ref.d.ts +21 -2
- package/core/ripple/ripple-renderer.d.ts +1 -19
- package/core/ripple/ripple.d.ts +2 -2
- package/core/style/_list-common.scss +1 -1
- package/datepicker/date-range-input-parts.d.ts +2 -4
- package/datepicker/date-range-input.d.ts +4 -4
- package/datepicker/date-range-picker.d.ts +10 -3
- package/datepicker/datepicker.d.ts +2 -3
- package/datepicker/index.metadata.json +1 -1
- package/datepicker/public-api.d.ts +1 -1
- package/dialog/dialog-container.d.ts +9 -2
- package/dialog/dialog-content-directives.d.ts +1 -0
- package/dialog/dialog-ref.d.ts +7 -0
- package/dialog/index.metadata.json +1 -1
- package/esm2015/autocomplete/autocomplete-module.js +18 -22
- package/esm2015/autocomplete/autocomplete-origin.js +16 -20
- package/esm2015/autocomplete/autocomplete-trigger.js +519 -521
- package/esm2015/autocomplete/autocomplete.js +126 -130
- package/esm2015/autocomplete/testing/autocomplete-harness.js +99 -97
- package/esm2015/badge/badge-module.js +13 -17
- package/esm2015/badge/badge.js +184 -188
- package/esm2015/badge/testing/badge-harness.js +74 -78
- package/esm2015/bottom-sheet/bottom-sheet-container.js +161 -165
- package/esm2015/bottom-sheet/bottom-sheet-module.js +15 -19
- package/esm2015/bottom-sheet/bottom-sheet.js +124 -128
- package/esm2015/bottom-sheet/testing/bottom-sheet-harness.js +29 -33
- package/esm2015/button/button-module.js +20 -24
- package/esm2015/button/button.js +111 -114
- package/esm2015/button/testing/button-harness.js +60 -58
- package/esm2015/button-toggle/button-toggle-module.js +10 -14
- package/esm2015/button-toggle/button-toggle.js +368 -368
- package/esm2015/button-toggle/testing/button-toggle-group-harness.js +42 -46
- package/esm2015/button-toggle/testing/button-toggle-harness.js +113 -111
- package/esm2015/card/card-module.js +30 -34
- package/esm2015/card/card.js +147 -203
- package/esm2015/card/testing/card-harness-filters.js +8 -0
- package/esm2015/card/testing/card-harness.js +52 -0
- package/esm2015/card/testing/index.js +9 -0
- package/esm2015/card/testing/public-api.js +10 -0
- package/esm2015/card/testing/testing.externs.js +0 -0
- package/esm2015/checkbox/checkbox-module.js +21 -29
- package/esm2015/checkbox/checkbox-required-validator.js +9 -13
- package/esm2015/checkbox/checkbox.js +315 -319
- package/esm2015/checkbox/testing/checkbox-harness.js +150 -148
- package/esm2015/chips/chip-input.js +119 -123
- package/esm2015/chips/chip-list.js +572 -576
- package/esm2015/chips/chip.js +333 -328
- package/esm2015/chips/chips-module.js +16 -20
- package/esm2015/core/animation/animation.js +12 -20
- package/esm2015/core/common-behaviors/common-module.js +91 -95
- package/esm2015/core/datetime/index.js +19 -27
- package/esm2015/core/datetime/native-date-adapter.js +202 -206
- package/esm2015/core/error/error-options.js +16 -24
- package/esm2015/core/line/line.js +18 -26
- package/esm2015/core/option/index.js +10 -14
- package/esm2015/core/option/optgroup.js +36 -33
- package/esm2015/core/option/option.js +181 -185
- package/esm2015/core/ripple/index.js +10 -14
- package/esm2015/core/ripple/ripple-ref.js +1 -1
- package/esm2015/core/ripple/ripple-renderer.js +1 -1
- package/esm2015/core/ripple/ripple.js +102 -106
- package/esm2015/core/selection/index.js +9 -13
- package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +32 -36
- package/esm2015/core/testing/optgroup-harness.js +39 -43
- package/esm2015/core/testing/option-harness.js +51 -55
- package/esm2015/core/version.js +1 -1
- package/esm2015/datepicker/calendar-body.js +214 -218
- package/esm2015/datepicker/calendar.js +295 -303
- package/esm2015/datepicker/date-range-input-parts.js +214 -229
- package/esm2015/datepicker/date-range-input.js +244 -242
- package/esm2015/datepicker/date-range-picker.js +19 -23
- package/esm2015/datepicker/date-range-selection-strategy.js +31 -35
- package/esm2015/datepicker/date-selection-model.js +110 -122
- package/esm2015/datepicker/datepicker-base.js +418 -426
- package/esm2015/datepicker/datepicker-input-base.js +227 -224
- package/esm2015/datepicker/datepicker-input.js +111 -115
- package/esm2015/datepicker/datepicker-intl.js +37 -41
- package/esm2015/datepicker/datepicker-module.js +62 -66
- package/esm2015/datepicker/datepicker-toggle.js +81 -89
- package/esm2015/datepicker/datepicker.js +13 -17
- package/esm2015/datepicker/month-view.js +283 -287
- package/esm2015/datepicker/multi-year-view.js +198 -202
- package/esm2015/datepicker/public-api.js +2 -2
- package/esm2015/datepicker/year-view.js +220 -224
- package/esm2015/dialog/dialog-container.js +175 -164
- package/esm2015/dialog/dialog-content-directives.js +105 -114
- package/esm2015/dialog/dialog-module.js +32 -36
- package/esm2015/dialog/dialog-ref.js +17 -3
- package/esm2015/dialog/dialog.js +236 -240
- package/esm2015/dialog/testing/dialog-harness.js +58 -62
- package/esm2015/divider/divider-module.js +10 -14
- package/esm2015/divider/divider.js +33 -37
- package/esm2015/divider/testing/divider-harness.js +16 -20
- package/esm2015/expansion/accordion.js +73 -77
- package/esm2015/expansion/expansion-module.js +26 -30
- package/esm2015/expansion/expansion-panel-content.js +13 -17
- package/esm2015/expansion/expansion-panel-header.js +168 -180
- package/esm2015/expansion/expansion-panel.js +144 -152
- package/esm2015/expansion/testing/accordion-harness.js +24 -28
- package/esm2015/expansion/testing/expansion-harness.js +136 -134
- package/esm2015/form-field/error.js +26 -23
- package/esm2015/form-field/form-field-control.js +6 -10
- package/esm2015/form-field/form-field-module.js +31 -35
- package/esm2015/form-field/form-field.js +407 -409
- package/esm2015/form-field/hint.js +35 -29
- package/esm2015/form-field/label.js +8 -12
- package/esm2015/form-field/placeholder.js +8 -12
- package/esm2015/form-field/prefix.js +16 -13
- package/esm2015/form-field/suffix.js +16 -13
- package/esm2015/form-field/testing/form-field-harness.js +220 -206
- package/esm2015/grid-list/grid-list-module.js +26 -30
- package/esm2015/grid-list/grid-list.js +108 -112
- package/esm2015/grid-list/grid-tile.js +91 -111
- package/esm2015/grid-list/testing/grid-list-harness.js +62 -66
- package/esm2015/grid-list/testing/grid-tile-harness.js +69 -73
- package/esm2015/grid-list/tile-styler.js +1 -1
- package/esm2015/icon/icon-module.js +10 -14
- package/esm2015/icon/icon-registry.js +406 -410
- package/esm2015/icon/icon.js +228 -232
- package/esm2015/icon/testing/fake-icon-registry.js +66 -74
- package/esm2015/input/autosize.js +30 -34
- package/esm2015/input/input-module.js +21 -25
- package/esm2015/input/input.js +305 -284
- package/esm2015/input/testing/input-harness.js +129 -123
- package/esm2015/list/list-module.js +32 -36
- package/esm2015/list/list.js +165 -189
- package/esm2015/list/selection-list.js +503 -511
- package/esm2015/list/testing/action-list-harness.js +55 -57
- package/esm2015/list/testing/list-harness.js +31 -39
- package/esm2015/list/testing/list-item-harness-base.js +13 -17
- package/esm2015/list/testing/nav-list-harness.js +62 -64
- package/esm2015/list/testing/selection-list-harness.js +136 -138
- package/esm2015/menu/menu-content.js +74 -71
- package/esm2015/menu/menu-item.js +119 -123
- package/esm2015/menu/menu-module.js +29 -37
- package/esm2015/menu/menu-panel.js +1 -1
- package/esm2015/menu/menu-trigger.js +402 -405
- package/esm2015/menu/menu.js +329 -339
- package/esm2015/menu/testing/menu-harness.js +193 -189
- package/esm2015/paginator/paginator-intl.js +36 -40
- package/esm2015/paginator/paginator-module.js +16 -20
- package/esm2015/paginator/paginator.js +205 -209
- package/esm2015/paginator/testing/paginator-harness.js +91 -95
- package/esm2015/progress-bar/progress-bar-module.js +10 -14
- package/esm2015/progress-bar/progress-bar.js +114 -118
- package/esm2015/progress-bar/testing/progress-bar-harness.js +27 -31
- package/esm2015/progress-spinner/progress-spinner-module.js +17 -21
- package/esm2015/progress-spinner/progress-spinner.js +181 -189
- package/esm2015/progress-spinner/testing/progress-spinner-harness.js +28 -32
- package/esm2015/radio/radio-module.js +10 -14
- package/esm2015/radio/radio.js +437 -444
- package/esm2015/radio/testing/radio-harness.js +241 -243
- package/esm2015/select/select-module.js +23 -27
- package/esm2015/select/select.js +917 -918
- package/esm2015/select/testing/select-harness.js +138 -136
- package/esm2015/sidenav/drawer.js +632 -620
- package/esm2015/sidenav/sidenav-module.js +31 -35
- package/esm2015/sidenav/sidenav.js +104 -116
- package/esm2015/sidenav/testing/drawer-harness.js +40 -44
- package/esm2015/sidenav/testing/sidenav-harness.js +20 -24
- package/esm2015/slide-toggle/slide-toggle-module.js +27 -35
- package/esm2015/slide-toggle/slide-toggle-required-validator.js +9 -13
- package/esm2015/slide-toggle/slide-toggle.js +184 -188
- package/esm2015/slide-toggle/testing/slide-toggle-harness.js +123 -121
- package/esm2015/slider/slider-module.js +10 -14
- package/esm2015/slider/slider.js +640 -644
- package/esm2015/slider/testing/slider-harness.js +129 -127
- package/esm2015/snack-bar/simple-snack-bar.js +32 -36
- package/esm2015/snack-bar/snack-bar-container.js +144 -148
- package/esm2015/snack-bar/snack-bar-module.js +17 -21
- package/esm2015/snack-bar/snack-bar-ref.js +1 -1
- package/esm2015/snack-bar/snack-bar.js +208 -205
- package/esm2015/snack-bar/testing/snack-bar-harness.js +112 -116
- package/esm2015/sort/sort-header-intl.js +21 -21
- package/esm2015/sort/sort-header.js +200 -194
- package/esm2015/sort/sort-module.js +11 -15
- package/esm2015/sort/sort.js +92 -96
- package/esm2015/sort/testing/sort-harness.js +28 -32
- package/esm2015/sort/testing/sort-header-harness.js +66 -67
- package/esm2015/stepper/step-header.js +78 -82
- package/esm2015/stepper/step-label.js +8 -12
- package/esm2015/stepper/stepper-button.js +23 -31
- package/esm2015/stepper/stepper-icon.js +16 -20
- package/esm2015/stepper/stepper-intl.js +15 -19
- package/esm2015/stepper/stepper-module.js +40 -44
- package/esm2015/stepper/stepper.js +139 -155
- package/esm2015/table/cell.js +94 -122
- package/esm2015/table/row.js +90 -118
- package/esm2015/table/table-module.js +13 -17
- package/esm2015/table/table.js +26 -30
- package/esm2015/table/testing/cell-harness.js +56 -68
- package/esm2015/table/testing/row-harness.js +90 -102
- package/esm2015/table/testing/table-harness.js +65 -69
- package/esm2015/table/text-column.js +17 -21
- package/esm2015/tabs/index.js +4 -2
- package/esm2015/tabs/ink-bar.js +55 -59
- package/esm2015/tabs/paginated-tab-header.js +415 -419
- package/esm2015/tabs/tab-body.js +179 -191
- package/esm2015/tabs/tab-content.js +21 -16
- package/esm2015/tabs/tab-group.js +263 -271
- package/esm2015/tabs/tab-header.js +69 -77
- package/esm2015/tabs/tab-label-wrapper.js +29 -33
- package/esm2015/tabs/tab-label.js +16 -13
- package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +199 -215
- package/esm2015/tabs/tab.js +80 -83
- package/esm2015/tabs/tabs-module.js +38 -42
- package/esm2015/tabs/testing/tab-group-harness.js +52 -56
- package/esm2015/tabs/testing/tab-harness.js +78 -82
- package/esm2015/toolbar/testing/index.js +9 -0
- package/esm2015/toolbar/testing/public-api.js +10 -0
- package/esm2015/toolbar/testing/testing.externs.js +0 -0
- package/esm2015/toolbar/testing/toolbar-harness-filters.js +8 -0
- package/esm2015/toolbar/testing/toolbar-harness.js +47 -0
- package/esm2015/toolbar/toolbar-module.js +10 -14
- package/esm2015/toolbar/toolbar.js +61 -69
- package/esm2015/tooltip/testing/tooltip-harness.js +43 -47
- package/esm2015/tooltip/tooltip-module.js +17 -21
- package/esm2015/tooltip/tooltip.js +502 -497
- package/esm2015/tree/data-source/flat-data-source.js +1 -1
- package/esm2015/tree/node.js +99 -111
- package/esm2015/tree/outlet.js +19 -23
- package/esm2015/tree/padding.js +13 -17
- package/esm2015/tree/toggle.js +15 -19
- package/esm2015/tree/tree-module.js +10 -14
- package/esm2015/tree/tree.js +23 -27
- package/expansion/testing/expansion-harness.d.ts +2 -0
- package/fesm2015/autocomplete/testing.js +98 -95
- package/fesm2015/autocomplete/testing.js.map +1 -1
- package/fesm2015/autocomplete.js +677 -687
- package/fesm2015/autocomplete.js.map +1 -1
- package/fesm2015/badge/testing.js +73 -76
- package/fesm2015/badge/testing.js.map +1 -1
- package/fesm2015/badge.js +195 -201
- package/fesm2015/badge.js.map +1 -1
- package/fesm2015/bottom-sheet/testing.js +28 -31
- package/fesm2015/bottom-sheet/testing.js.map +1 -1
- package/fesm2015/bottom-sheet.js +297 -306
- package/fesm2015/bottom-sheet.js.map +1 -1
- package/fesm2015/button/testing.js +59 -56
- package/fesm2015/button/testing.js.map +1 -1
- package/fesm2015/button-toggle/testing.js +155 -155
- package/fesm2015/button-toggle/testing.js.map +1 -1
- package/fesm2015/button-toggle.js +377 -378
- package/fesm2015/button-toggle.js.map +1 -1
- package/fesm2015/button.js +129 -133
- package/fesm2015/button.js.map +1 -1
- package/fesm2015/card/testing.js +79 -0
- package/fesm2015/card/testing.js.map +1 -0
- package/fesm2015/card.js +175 -220
- package/fesm2015/card.js.map +1 -1
- package/fesm2015/checkbox/testing.js +149 -146
- package/fesm2015/checkbox/testing.js.map +1 -1
- package/fesm2015/checkbox.js +342 -354
- package/fesm2015/checkbox.js.map +1 -1
- package/fesm2015/chips.js +1039 -1039
- package/fesm2015/chips.js.map +1 -1
- package/fesm2015/core/testing.js +88 -94
- package/fesm2015/core/testing.js.map +1 -1
- package/fesm2015/core.js +729 -773
- package/fesm2015/core.js.map +1 -1
- package/fesm2015/datepicker.js +2821 -2884
- package/fesm2015/datepicker.js.map +1 -1
- package/fesm2015/dialog/testing.js +57 -60
- package/fesm2015/dialog/testing.js.map +1 -1
- package/fesm2015/dialog.js +564 -549
- package/fesm2015/dialog.js.map +1 -1
- package/fesm2015/divider/testing.js +15 -18
- package/fesm2015/divider/testing.js.map +1 -1
- package/fesm2015/divider.js +41 -47
- package/fesm2015/divider.js.map +1 -1
- package/fesm2015/expansion/testing.js +159 -159
- package/fesm2015/expansion/testing.js.map +1 -1
- package/fesm2015/expansion.js +422 -446
- package/fesm2015/expansion.js.map +1 -1
- package/fesm2015/form-field/testing.js +219 -204
- package/fesm2015/form-field/testing.js.map +1 -1
- package/fesm2015/form-field.js +538 -532
- package/fesm2015/form-field.js.map +1 -1
- package/fesm2015/grid-list/testing.js +129 -135
- package/fesm2015/grid-list/testing.js.map +1 -1
- package/fesm2015/grid-list.js +221 -242
- package/fesm2015/grid-list.js.map +1 -1
- package/fesm2015/icon/testing.js +65 -71
- package/fesm2015/icon/testing.js.map +1 -1
- package/fesm2015/icon.js +660 -669
- package/fesm2015/icon.js.map +1 -1
- package/fesm2015/input/testing.js +128 -121
- package/fesm2015/input/testing.js.map +1 -1
- package/fesm2015/input.js +353 -337
- package/fesm2015/input.js.map +1 -1
- package/fesm2015/list/testing.js +298 -307
- package/fesm2015/list/testing.js.map +1 -1
- package/fesm2015/list.js +698 -725
- package/fesm2015/list.js.map +1 -1
- package/fesm2015/menu/testing.js +192 -186
- package/fesm2015/menu/testing.js.map +1 -1
- package/fesm2015/menu.js +948 -962
- package/fesm2015/menu.js.map +1 -1
- package/fesm2015/paginator/testing.js +90 -93
- package/fesm2015/paginator/testing.js.map +1 -1
- package/fesm2015/paginator.js +247 -256
- package/fesm2015/paginator.js.map +1 -1
- package/fesm2015/progress-bar/testing.js +26 -29
- package/fesm2015/progress-bar/testing.js.map +1 -1
- package/fesm2015/progress-bar.js +122 -128
- package/fesm2015/progress-bar.js.map +1 -1
- package/fesm2015/progress-spinner/testing.js +27 -30
- package/fesm2015/progress-spinner/testing.js.map +1 -1
- package/fesm2015/progress-spinner.js +196 -205
- package/fesm2015/progress-spinner.js.map +1 -1
- package/fesm2015/radio/testing.js +240 -240
- package/fesm2015/radio/testing.js.map +1 -1
- package/fesm2015/radio.js +447 -453
- package/fesm2015/radio.js.map +1 -1
- package/fesm2015/select/testing.js +137 -134
- package/fesm2015/select/testing.js.map +1 -1
- package/fesm2015/select.js +939 -941
- package/fesm2015/select.js.map +1 -1
- package/fesm2015/sidenav/testing.js +58 -64
- package/fesm2015/sidenav/testing.js.map +1 -1
- package/fesm2015/sidenav.js +765 -762
- package/fesm2015/sidenav.js.map +1 -1
- package/fesm2015/slide-toggle/testing.js +122 -119
- package/fesm2015/slide-toggle/testing.js.map +1 -1
- package/fesm2015/slide-toggle.js +217 -229
- package/fesm2015/slide-toggle.js.map +1 -1
- package/fesm2015/slider/testing.js +128 -125
- package/fesm2015/slider/testing.js.map +1 -1
- package/fesm2015/slider.js +648 -654
- package/fesm2015/slider.js.map +1 -1
- package/fesm2015/snack-bar/testing.js +111 -114
- package/fesm2015/snack-bar/testing.js.map +1 -1
- package/fesm2015/snack-bar.js +426 -431
- package/fesm2015/snack-bar.js.map +1 -1
- package/fesm2015/sort/testing.js +92 -95
- package/fesm2015/sort/testing.js.map +1 -1
- package/fesm2015/sort.js +320 -318
- package/fesm2015/sort.js.map +1 -1
- package/fesm2015/stepper.js +312 -345
- package/fesm2015/stepper.js.map +1 -1
- package/fesm2015/table/testing.js +208 -229
- package/fesm2015/table/testing.js.map +1 -1
- package/fesm2015/table.js +235 -286
- package/fesm2015/table.js.map +1 -1
- package/fesm2015/tabs/testing.js +128 -134
- package/fesm2015/tabs/testing.js.map +1 -1
- package/fesm2015/tabs.js +1362 -1399
- package/fesm2015/tabs.js.map +1 -1
- package/fesm2015/toolbar/testing.js +74 -0
- package/fesm2015/toolbar/testing.js.map +1 -0
- package/fesm2015/toolbar.js +69 -78
- package/fesm2015/toolbar.js.map +1 -1
- package/fesm2015/tooltip/testing.js +42 -45
- package/fesm2015/tooltip/testing.js.map +1 -1
- package/fesm2015/tooltip.js +517 -513
- package/fesm2015/tooltip.js.map +1 -1
- package/fesm2015/tree.js +173 -197
- package/fesm2015/tree.js.map +1 -1
- package/form-field/error.d.ts +7 -0
- package/form-field/hint.d.ts +10 -0
- package/form-field/index.metadata.json +1 -1
- package/form-field/prefix.d.ts +7 -0
- package/form-field/suffix.d.ts +7 -0
- package/form-field/testing/form-field-harness.d.ts +8 -0
- package/grid-list/grid-list.d.ts +2 -1
- package/grid-list/index.metadata.json +1 -1
- package/grid-list/tile-styler.d.ts +10 -5
- package/input/_input-theme.scss +2 -2
- package/input/index.metadata.json +1 -1
- package/input/input.d.ts +6 -2
- package/input/testing/input-harness.d.ts +2 -0
- package/list/index.metadata.json +1 -1
- package/list/testing/action-list-harness.d.ts +2 -0
- package/list/testing/nav-list-harness.d.ts +2 -0
- package/list/testing/selection-list-harness.d.ts +2 -0
- package/menu/index.metadata.json +1 -1
- package/menu/menu-content.d.ts +7 -1
- package/menu/menu-panel.d.ts +1 -0
- package/menu/menu.d.ts +4 -0
- package/menu/testing/menu-harness.d.ts +4 -0
- package/package.json +6 -6
- 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/index.metadata.json +1 -1
- package/radio/index.metadata.json +1 -1
- package/radio/radio.d.ts +6 -0
- package/radio/testing/radio-harness.d.ts +2 -0
- package/schematics/migration.json +5 -0
- package/schematics/ng-add/index.js +2 -2
- package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +3 -3
- package/schematics/ng-generate/navigation/schema.json +5 -0
- package/schematics/ng-update/data/index.js +1 -1
- package/schematics/ng-update/index.d.ts +2 -0
- package/schematics/ng-update/index.js +7 -2
- package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +639 -639
- package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.js +1 -1
- package/select/index.metadata.json +1 -1
- package/select/select.d.ts +6 -0
- package/select/testing/select-harness.d.ts +2 -0
- package/sidenav/drawer.d.ts +15 -3
- package/sidenav/index.metadata.json +1 -1
- package/slide-toggle/index.metadata.json +1 -1
- package/slide-toggle/testing/slide-toggle-harness.d.ts +2 -0
- package/slider/testing/slider-harness.d.ts +2 -0
- package/snack-bar/index.metadata.json +1 -1
- package/snack-bar/simple-snack-bar.d.ts +13 -1
- package/snack-bar/snack-bar-container.d.ts +16 -3
- package/snack-bar/snack-bar-ref.d.ts +3 -3
- package/snack-bar/snack-bar.d.ts +10 -3
- package/sort/index.metadata.json +1 -1
- package/sort/sort-header-intl.d.ts +5 -1
- package/sort/sort-header.d.ts +3 -1
- package/sort/testing/sort-header-harness.d.ts +6 -2
- package/tabs/index.d.ts +3 -1
- package/tabs/index.metadata.json +1 -1
- package/tabs/tab-content.d.ts +7 -1
- package/tabs/tab-label.d.ts +7 -0
- package/toolbar/testing/index.d.ts +8 -0
- package/toolbar/testing/package.json +9 -0
- package/toolbar/testing/public-api.d.ts +9 -0
- package/toolbar/testing/toolbar-harness-filters.d.ts +13 -0
- package/toolbar/testing/toolbar-harness.d.ts +31 -0
- package/tooltip/index.metadata.json +1 -1
- package/tooltip/tooltip.d.ts +1 -0
- package/tree/data-source/flat-data-source.d.ts +4 -4
- package/tree/index.metadata.json +1 -1
package/fesm2015/dialog.js
CHANGED
|
@@ -7,7 +7,7 @@ import { DOCUMENT, Location } from '@angular/common';
|
|
|
7
7
|
import { Subject, defer, of } from 'rxjs';
|
|
8
8
|
import { filter, take, startWith } from 'rxjs/operators';
|
|
9
9
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
10
|
-
import { FocusTrapFactory } from '@angular/cdk/a11y';
|
|
10
|
+
import { FocusTrapFactory, FocusMonitor } from '@angular/cdk/a11y';
|
|
11
11
|
import { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -107,190 +107,202 @@ function throwMatDialogContentAlreadyAttachedError() {
|
|
|
107
107
|
* Animation is based on https://material.io/guidelines/motion/choreography.html.
|
|
108
108
|
* @docs-private
|
|
109
109
|
*/
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
/** State of the dialog animation. */
|
|
123
|
-
this._state = 'enter';
|
|
124
|
-
/** Emits when an animation state changes. */
|
|
125
|
-
this._animationStateChanged = new EventEmitter();
|
|
126
|
-
/**
|
|
127
|
-
* Attaches a DOM portal to the dialog container.
|
|
128
|
-
* @param portal Portal to be attached.
|
|
129
|
-
* @deprecated To be turned into a method.
|
|
130
|
-
* @breaking-change 10.0.0
|
|
131
|
-
*/
|
|
132
|
-
this.attachDomPortal = (portal) => {
|
|
133
|
-
if (this._portalOutlet.hasAttached()) {
|
|
134
|
-
throwMatDialogContentAlreadyAttachedError();
|
|
135
|
-
}
|
|
136
|
-
this._setupFocusTrap();
|
|
137
|
-
return this._portalOutlet.attachDomPortal(portal);
|
|
138
|
-
};
|
|
139
|
-
this._ariaLabelledBy = _config.ariaLabelledBy || null;
|
|
140
|
-
this._document = _document;
|
|
141
|
-
}
|
|
110
|
+
class MatDialogContainer extends BasePortalOutlet {
|
|
111
|
+
constructor(_elementRef, _focusTrapFactory, _changeDetectorRef, _document,
|
|
112
|
+
/** The dialog configuration. */
|
|
113
|
+
_config, _focusMonitor) {
|
|
114
|
+
super();
|
|
115
|
+
this._elementRef = _elementRef;
|
|
116
|
+
this._focusTrapFactory = _focusTrapFactory;
|
|
117
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
118
|
+
this._config = _config;
|
|
119
|
+
this._focusMonitor = _focusMonitor;
|
|
120
|
+
/** Element that was focused before the dialog was opened. Save this to restore upon close. */
|
|
121
|
+
this._elementFocusedBeforeDialogWasOpened = null;
|
|
142
122
|
/**
|
|
143
|
-
*
|
|
144
|
-
*
|
|
123
|
+
* Type of interaction that led to the dialog being closed. This is used to determine
|
|
124
|
+
* whether the focus style will be applied when returning focus to its original location
|
|
125
|
+
* after the dialog is closed.
|
|
145
126
|
*/
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return this._portalOutlet.attachComponentPortal(portal);
|
|
152
|
-
}
|
|
127
|
+
this._closeInteractionType = null;
|
|
128
|
+
/** State of the dialog animation. */
|
|
129
|
+
this._state = 'enter';
|
|
130
|
+
/** Emits when an animation state changes. */
|
|
131
|
+
this._animationStateChanged = new EventEmitter();
|
|
153
132
|
/**
|
|
154
|
-
*
|
|
155
|
-
* @param portal Portal to be attached
|
|
133
|
+
* Attaches a DOM portal to the dialog container.
|
|
134
|
+
* @param portal Portal to be attached.
|
|
135
|
+
* @deprecated To be turned into a method.
|
|
136
|
+
* @breaking-change 10.0.0
|
|
156
137
|
*/
|
|
157
|
-
|
|
138
|
+
this.attachDomPortal = (portal) => {
|
|
158
139
|
if (this._portalOutlet.hasAttached()) {
|
|
159
140
|
throwMatDialogContentAlreadyAttachedError();
|
|
160
141
|
}
|
|
161
142
|
this._setupFocusTrap();
|
|
162
|
-
return this._portalOutlet.
|
|
143
|
+
return this._portalOutlet.attachDomPortal(portal);
|
|
144
|
+
};
|
|
145
|
+
this._ariaLabelledBy = _config.ariaLabelledBy || null;
|
|
146
|
+
this._document = _document;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Attach a ComponentPortal as content to this dialog container.
|
|
150
|
+
* @param portal Portal to be attached as the dialog content.
|
|
151
|
+
*/
|
|
152
|
+
attachComponentPortal(portal) {
|
|
153
|
+
if (this._portalOutlet.hasAttached()) {
|
|
154
|
+
throwMatDialogContentAlreadyAttachedError();
|
|
163
155
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
156
|
+
this._setupFocusTrap();
|
|
157
|
+
return this._portalOutlet.attachComponentPortal(portal);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Attach a TemplatePortal as content to this dialog container.
|
|
161
|
+
* @param portal Portal to be attached as the dialog content.
|
|
162
|
+
*/
|
|
163
|
+
attachTemplatePortal(portal) {
|
|
164
|
+
if (this._portalOutlet.hasAttached()) {
|
|
165
|
+
throwMatDialogContentAlreadyAttachedError();
|
|
172
166
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
else if (!this._containsFocus()) {
|
|
182
|
-
// Otherwise ensure that focus is on the dialog container. It's possible that a different
|
|
183
|
-
// component tried to move focus while the open animation was running. See:
|
|
184
|
-
// https://github.com/angular/components/issues/16215. Note that we only want to do this
|
|
185
|
-
// if the focus isn't inside the dialog already, because it's possible that the consumer
|
|
186
|
-
// turned off `autoFocus` in order to move focus themselves.
|
|
167
|
+
this._setupFocusTrap();
|
|
168
|
+
return this._portalOutlet.attachTemplatePortal(portal);
|
|
169
|
+
}
|
|
170
|
+
/** Moves focus back into the dialog if it was moved out. */
|
|
171
|
+
_recaptureFocus() {
|
|
172
|
+
if (!this._containsFocus()) {
|
|
173
|
+
const focusContainer = !this._config.autoFocus || !this._focusTrap.focusInitialElement();
|
|
174
|
+
if (focusContainer) {
|
|
187
175
|
this._elementRef.nativeElement.focus();
|
|
188
176
|
}
|
|
189
177
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
if (this._focusTrap) {
|
|
207
|
-
this._focusTrap.destroy();
|
|
208
|
-
}
|
|
178
|
+
}
|
|
179
|
+
/** Moves the focus inside the focus trap. */
|
|
180
|
+
_trapFocus() {
|
|
181
|
+
// If we were to attempt to focus immediately, then the content of the dialog would not yet be
|
|
182
|
+
// ready in instances where change detection has to run first. To deal with this, we simply
|
|
183
|
+
// wait for the microtask queue to be empty.
|
|
184
|
+
if (this._config.autoFocus) {
|
|
185
|
+
this._focusTrap.focusInitialElementWhenReady();
|
|
186
|
+
}
|
|
187
|
+
else if (!this._containsFocus()) {
|
|
188
|
+
// Otherwise ensure that focus is on the dialog container. It's possible that a different
|
|
189
|
+
// component tried to move focus while the open animation was running. See:
|
|
190
|
+
// https://github.com/angular/components/issues/16215. Note that we only want to do this
|
|
191
|
+
// if the focus isn't inside the dialog already, because it's possible that the consumer
|
|
192
|
+
// turned off `autoFocus` in order to move focus themselves.
|
|
193
|
+
this._elementRef.nativeElement.focus();
|
|
209
194
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
195
|
+
}
|
|
196
|
+
/** Restores focus to the element that was focused before the dialog opened. */
|
|
197
|
+
_restoreFocus() {
|
|
198
|
+
const previousElement = this._elementFocusedBeforeDialogWasOpened;
|
|
199
|
+
// We need the extra check, because IE can set the `activeElement` to null in some cases.
|
|
200
|
+
if (this._config.restoreFocus && previousElement &&
|
|
201
|
+
typeof previousElement.focus === 'function') {
|
|
202
|
+
const activeElement = this._document.activeElement;
|
|
203
|
+
const element = this._elementRef.nativeElement;
|
|
204
|
+
// Make sure that focus is still inside the dialog or is on the body (usually because a
|
|
205
|
+
// non-focusable element like the backdrop was clicked) before moving it. It's possible that
|
|
206
|
+
// the consumer moved it themselves before the animation was done, in which case we shouldn't
|
|
207
|
+
// do anything.
|
|
208
|
+
if (!activeElement || activeElement === this._document.body || activeElement === element ||
|
|
209
|
+
element.contains(activeElement)) {
|
|
210
|
+
if (this._focusMonitor) {
|
|
211
|
+
this._focusMonitor.focusVia(previousElement, this._closeInteractionType);
|
|
212
|
+
this._closeInteractionType = null;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
previousElement.focus();
|
|
226
216
|
}
|
|
227
217
|
}
|
|
228
218
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
const element = this._elementRef.nativeElement;
|
|
232
|
-
const activeElement = this._document.activeElement;
|
|
233
|
-
return element === activeElement || element.contains(activeElement);
|
|
219
|
+
if (this._focusTrap) {
|
|
220
|
+
this._focusTrap.destroy();
|
|
234
221
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Sets up the focus trand and saves a reference to the
|
|
225
|
+
* element that was focused before the dialog was opened.
|
|
226
|
+
*/
|
|
227
|
+
_setupFocusTrap() {
|
|
228
|
+
if (!this._focusTrap) {
|
|
229
|
+
this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);
|
|
230
|
+
}
|
|
231
|
+
if (this._document) {
|
|
232
|
+
this._elementFocusedBeforeDialogWasOpened = this._document.activeElement;
|
|
233
|
+
// Note that there is no focus method when rendering on the server.
|
|
234
|
+
if (this._elementRef.nativeElement.focus) {
|
|
235
|
+
// Move focus onto the dialog immediately in order to prevent the user from accidentally
|
|
236
|
+
// opening multiple dialogs at the same time. Needs to be async, because the element
|
|
237
|
+
// may not be focusable immediately.
|
|
238
|
+
Promise.resolve().then(() => this._elementRef.nativeElement.focus());
|
|
242
239
|
}
|
|
243
|
-
this._animationStateChanged.emit(event);
|
|
244
240
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
241
|
+
}
|
|
242
|
+
/** Returns whether focus is inside the dialog. */
|
|
243
|
+
_containsFocus() {
|
|
244
|
+
const element = this._elementRef.nativeElement;
|
|
245
|
+
const activeElement = this._document.activeElement;
|
|
246
|
+
return element === activeElement || element.contains(activeElement);
|
|
247
|
+
}
|
|
248
|
+
/** Callback, invoked whenever an animation on the host completes. */
|
|
249
|
+
_onAnimationDone(event) {
|
|
250
|
+
if (event.toState === 'enter') {
|
|
251
|
+
this._trapFocus();
|
|
248
252
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
this._state = 'exit';
|
|
252
|
-
// Mark the container for check so it can react if the
|
|
253
|
-
// view container is using OnPush change detection.
|
|
254
|
-
this._changeDetectorRef.markForCheck();
|
|
253
|
+
else if (event.toState === 'exit') {
|
|
254
|
+
this._restoreFocus();
|
|
255
255
|
}
|
|
256
|
+
this._animationStateChanged.emit(event);
|
|
257
|
+
}
|
|
258
|
+
/** Callback, invoked when an animation on the host starts. */
|
|
259
|
+
_onAnimationStart(event) {
|
|
260
|
+
this._animationStateChanged.emit(event);
|
|
261
|
+
}
|
|
262
|
+
/** Starts the dialog exit animation. */
|
|
263
|
+
_startExitAnimation() {
|
|
264
|
+
this._state = 'exit';
|
|
265
|
+
// Mark the container for check so it can react if the
|
|
266
|
+
// view container is using OnPush change detection.
|
|
267
|
+
this._changeDetectorRef.markForCheck();
|
|
256
268
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
},] }
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
}
|
|
269
|
+
}
|
|
270
|
+
MatDialogContainer.decorators = [
|
|
271
|
+
{ type: Component, args: [{
|
|
272
|
+
selector: 'mat-dialog-container',
|
|
273
|
+
template: "<ng-template cdkPortalOutlet></ng-template>\n",
|
|
274
|
+
encapsulation: ViewEncapsulation.None,
|
|
275
|
+
// Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.
|
|
276
|
+
// tslint:disable-next-line:validate-decorators
|
|
277
|
+
changeDetection: ChangeDetectionStrategy.Default,
|
|
278
|
+
animations: [matDialogAnimations.dialogContainer],
|
|
279
|
+
host: {
|
|
280
|
+
'class': 'mat-dialog-container',
|
|
281
|
+
'tabindex': '-1',
|
|
282
|
+
'aria-modal': 'true',
|
|
283
|
+
'[attr.id]': '_id',
|
|
284
|
+
'[attr.role]': '_config.role',
|
|
285
|
+
'[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',
|
|
286
|
+
'[attr.aria-label]': '_config.ariaLabel',
|
|
287
|
+
'[attr.aria-describedby]': '_config.ariaDescribedBy || null',
|
|
288
|
+
'[@dialogContainer]': '_state',
|
|
289
|
+
'(@dialogContainer.start)': '_onAnimationStart($event)',
|
|
290
|
+
'(@dialogContainer.done)': '_onAnimationDone($event)',
|
|
291
|
+
},
|
|
292
|
+
styles: [".mat-dialog-container{display:block;padding:24px;border-radius:4px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.cdk-high-contrast-active .mat-dialog-container{outline:solid 1px}.mat-dialog-content{display:block;margin:0 -24px;padding:0 24px;max-height:65vh;overflow:auto;-webkit-overflow-scrolling:touch}.mat-dialog-title{margin:0 0 20px;display:block}.mat-dialog-actions{padding:8px 0;display:flex;flex-wrap:wrap;min-height:52px;align-items:center;margin-bottom:-24px}.mat-dialog-actions[align=end]{justify-content:flex-end}.mat-dialog-actions[align=center]{justify-content:center}.mat-dialog-actions .mat-button-base+.mat-button-base,.mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}\n"]
|
|
293
|
+
},] }
|
|
294
|
+
];
|
|
295
|
+
MatDialogContainer.ctorParameters = () => [
|
|
296
|
+
{ type: ElementRef },
|
|
297
|
+
{ type: FocusTrapFactory },
|
|
298
|
+
{ type: ChangeDetectorRef },
|
|
299
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },
|
|
300
|
+
{ type: MatDialogConfig },
|
|
301
|
+
{ type: FocusMonitor }
|
|
302
|
+
];
|
|
303
|
+
MatDialogContainer.propDecorators = {
|
|
304
|
+
_portalOutlet: [{ type: ViewChild, args: [CdkPortalOutlet, { static: true },] }]
|
|
305
|
+
};
|
|
294
306
|
|
|
295
307
|
/**
|
|
296
308
|
* @license
|
|
@@ -347,14 +359,14 @@ class MatDialogRef {
|
|
|
347
359
|
}))
|
|
348
360
|
.subscribe(event => {
|
|
349
361
|
event.preventDefault();
|
|
350
|
-
this
|
|
362
|
+
_closeDialogVia(this, 'keyboard');
|
|
351
363
|
});
|
|
352
364
|
_overlayRef.backdropClick().subscribe(() => {
|
|
353
365
|
if (this.disableClose) {
|
|
354
366
|
this._containerInstance._recaptureFocus();
|
|
355
367
|
}
|
|
356
368
|
else {
|
|
357
|
-
this
|
|
369
|
+
_closeDialogVia(this, 'mouse');
|
|
358
370
|
}
|
|
359
371
|
});
|
|
360
372
|
}
|
|
@@ -468,6 +480,20 @@ class MatDialogRef {
|
|
|
468
480
|
return this._overlayRef.getConfig().positionStrategy;
|
|
469
481
|
}
|
|
470
482
|
}
|
|
483
|
+
/**
|
|
484
|
+
* Closes the dialog with the specified interaction type. This is currently not part of
|
|
485
|
+
* `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.
|
|
486
|
+
* More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.
|
|
487
|
+
*/
|
|
488
|
+
// TODO: TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.
|
|
489
|
+
function _closeDialogVia(ref, interactionType, result) {
|
|
490
|
+
// Some mock dialog ref instances in tests do not have the `_containerInstance` property.
|
|
491
|
+
// For those, we keep the behavior as is and do not deal with the interaction type.
|
|
492
|
+
if (ref._containerInstance !== undefined) {
|
|
493
|
+
ref._containerInstance._closeInteractionType = interactionType;
|
|
494
|
+
}
|
|
495
|
+
return ref.close(result);
|
|
496
|
+
}
|
|
471
497
|
|
|
472
498
|
/**
|
|
473
499
|
* @license
|
|
@@ -499,261 +525,258 @@ const MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {
|
|
|
499
525
|
/**
|
|
500
526
|
* Service to open Material Design modal dialogs.
|
|
501
527
|
*/
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
// TODO (jelbourn): tighten the typing right-hand side of this expression.
|
|
520
|
-
/**
|
|
521
|
-
* Stream that emits when all open dialog have finished closing.
|
|
522
|
-
* Will emit on subscribe if there are no open dialogs to begin with.
|
|
523
|
-
*/
|
|
524
|
-
this.afterAllClosed = defer(() => this.openDialogs.length ?
|
|
525
|
-
this._afterAllClosed :
|
|
526
|
-
this._afterAllClosed.pipe(startWith(undefined)));
|
|
527
|
-
this._scrollStrategy = scrollStrategy;
|
|
528
|
-
}
|
|
529
|
-
/** Keeps track of the currently-open dialogs. */
|
|
530
|
-
get openDialogs() {
|
|
531
|
-
return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;
|
|
532
|
-
}
|
|
533
|
-
/** Stream that emits when a dialog has been opened. */
|
|
534
|
-
get afterOpened() {
|
|
535
|
-
return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;
|
|
536
|
-
}
|
|
537
|
-
get _afterAllClosed() {
|
|
538
|
-
const parent = this._parentDialog;
|
|
539
|
-
return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;
|
|
540
|
-
}
|
|
541
|
-
/**
|
|
542
|
-
* Opens a modal dialog containing the given component.
|
|
543
|
-
* @param componentOrTemplateRef Type of the component to load into the dialog,
|
|
544
|
-
* or a TemplateRef to instantiate as the dialog content.
|
|
545
|
-
* @param config Extra configuration options.
|
|
546
|
-
* @returns Reference to the newly-opened dialog.
|
|
547
|
-
*/
|
|
548
|
-
open(componentOrTemplateRef, config) {
|
|
549
|
-
config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());
|
|
550
|
-
if (config.id && this.getDialogById(config.id)) {
|
|
551
|
-
throw Error(`Dialog with id "${config.id}" exists already. The dialog id must be unique.`);
|
|
552
|
-
}
|
|
553
|
-
const overlayRef = this._createOverlay(config);
|
|
554
|
-
const dialogContainer = this._attachDialogContainer(overlayRef, config);
|
|
555
|
-
const dialogRef = this._attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config);
|
|
556
|
-
// If this is the first dialog that we're opening, hide all the non-overlay content.
|
|
557
|
-
if (!this.openDialogs.length) {
|
|
558
|
-
this._hideNonDialogContentFromAssistiveTechnology();
|
|
559
|
-
}
|
|
560
|
-
this.openDialogs.push(dialogRef);
|
|
561
|
-
dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));
|
|
562
|
-
this.afterOpened.next(dialogRef);
|
|
563
|
-
return dialogRef;
|
|
564
|
-
}
|
|
565
|
-
/**
|
|
566
|
-
* Closes all of the currently-open dialogs.
|
|
567
|
-
*/
|
|
568
|
-
closeAll() {
|
|
569
|
-
this._closeDialogs(this.openDialogs);
|
|
570
|
-
}
|
|
571
|
-
/**
|
|
572
|
-
* Finds an open dialog by its id.
|
|
573
|
-
* @param id ID to use when looking up the dialog.
|
|
574
|
-
*/
|
|
575
|
-
getDialogById(id) {
|
|
576
|
-
return this.openDialogs.find(dialog => dialog.id === id);
|
|
577
|
-
}
|
|
578
|
-
ngOnDestroy() {
|
|
579
|
-
// Only close the dialogs at this level on destroy
|
|
580
|
-
// since the parent service may still be active.
|
|
581
|
-
this._closeDialogs(this._openDialogsAtThisLevel);
|
|
582
|
-
this._afterAllClosedAtThisLevel.complete();
|
|
583
|
-
this._afterOpenedAtThisLevel.complete();
|
|
584
|
-
}
|
|
528
|
+
class MatDialog {
|
|
529
|
+
constructor(_overlay, _injector,
|
|
530
|
+
/**
|
|
531
|
+
* @deprecated `_location` parameter to be removed.
|
|
532
|
+
* @breaking-change 10.0.0
|
|
533
|
+
*/
|
|
534
|
+
_location, _defaultOptions, scrollStrategy, _parentDialog, _overlayContainer) {
|
|
535
|
+
this._overlay = _overlay;
|
|
536
|
+
this._injector = _injector;
|
|
537
|
+
this._defaultOptions = _defaultOptions;
|
|
538
|
+
this._parentDialog = _parentDialog;
|
|
539
|
+
this._overlayContainer = _overlayContainer;
|
|
540
|
+
this._openDialogsAtThisLevel = [];
|
|
541
|
+
this._afterAllClosedAtThisLevel = new Subject();
|
|
542
|
+
this._afterOpenedAtThisLevel = new Subject();
|
|
543
|
+
this._ariaHiddenElements = new Map();
|
|
544
|
+
// TODO (jelbourn): tighten the typing right-hand side of this expression.
|
|
585
545
|
/**
|
|
586
|
-
*
|
|
587
|
-
*
|
|
588
|
-
* @returns A promise resolving to the OverlayRef for the created overlay.
|
|
546
|
+
* Stream that emits when all open dialog have finished closing.
|
|
547
|
+
* Will emit on subscribe if there are no open dialogs to begin with.
|
|
589
548
|
*/
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
549
|
+
this.afterAllClosed = defer(() => this.openDialogs.length ?
|
|
550
|
+
this._afterAllClosed :
|
|
551
|
+
this._afterAllClosed.pipe(startWith(undefined)));
|
|
552
|
+
this._scrollStrategy = scrollStrategy;
|
|
553
|
+
}
|
|
554
|
+
/** Keeps track of the currently-open dialogs. */
|
|
555
|
+
get openDialogs() {
|
|
556
|
+
return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;
|
|
557
|
+
}
|
|
558
|
+
/** Stream that emits when a dialog has been opened. */
|
|
559
|
+
get afterOpened() {
|
|
560
|
+
return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;
|
|
561
|
+
}
|
|
562
|
+
get _afterAllClosed() {
|
|
563
|
+
const parent = this._parentDialog;
|
|
564
|
+
return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Opens a modal dialog containing the given component.
|
|
568
|
+
* @param componentOrTemplateRef Type of the component to load into the dialog,
|
|
569
|
+
* or a TemplateRef to instantiate as the dialog content.
|
|
570
|
+
* @param config Extra configuration options.
|
|
571
|
+
* @returns Reference to the newly-opened dialog.
|
|
572
|
+
*/
|
|
573
|
+
open(componentOrTemplateRef, config) {
|
|
574
|
+
config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());
|
|
575
|
+
if (config.id && this.getDialogById(config.id)) {
|
|
576
|
+
throw Error(`Dialog with id "${config.id}" exists already. The dialog id must be unique.`);
|
|
577
|
+
}
|
|
578
|
+
const overlayRef = this._createOverlay(config);
|
|
579
|
+
const dialogContainer = this._attachDialogContainer(overlayRef, config);
|
|
580
|
+
const dialogRef = this._attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config);
|
|
581
|
+
// If this is the first dialog that we're opening, hide all the non-overlay content.
|
|
582
|
+
if (!this.openDialogs.length) {
|
|
583
|
+
this._hideNonDialogContentFromAssistiveTechnology();
|
|
584
|
+
}
|
|
585
|
+
this.openDialogs.push(dialogRef);
|
|
586
|
+
dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));
|
|
587
|
+
this.afterOpened.next(dialogRef);
|
|
588
|
+
return dialogRef;
|
|
589
|
+
}
|
|
590
|
+
/**
|
|
591
|
+
* Closes all of the currently-open dialogs.
|
|
592
|
+
*/
|
|
593
|
+
closeAll() {
|
|
594
|
+
this._closeDialogs(this.openDialogs);
|
|
595
|
+
}
|
|
596
|
+
/**
|
|
597
|
+
* Finds an open dialog by its id.
|
|
598
|
+
* @param id ID to use when looking up the dialog.
|
|
599
|
+
*/
|
|
600
|
+
getDialogById(id) {
|
|
601
|
+
return this.openDialogs.find(dialog => dialog.id === id);
|
|
602
|
+
}
|
|
603
|
+
ngOnDestroy() {
|
|
604
|
+
// Only close the dialogs at this level on destroy
|
|
605
|
+
// since the parent service may still be active.
|
|
606
|
+
this._closeDialogs(this._openDialogsAtThisLevel);
|
|
607
|
+
this._afterAllClosedAtThisLevel.complete();
|
|
608
|
+
this._afterOpenedAtThisLevel.complete();
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* Creates the overlay into which the dialog will be loaded.
|
|
612
|
+
* @param config The dialog configuration.
|
|
613
|
+
* @returns A promise resolving to the OverlayRef for the created overlay.
|
|
614
|
+
*/
|
|
615
|
+
_createOverlay(config) {
|
|
616
|
+
const overlayConfig = this._getOverlayConfig(config);
|
|
617
|
+
return this._overlay.create(overlayConfig);
|
|
618
|
+
}
|
|
619
|
+
/**
|
|
620
|
+
* Creates an overlay config from a dialog config.
|
|
621
|
+
* @param dialogConfig The dialog configuration.
|
|
622
|
+
* @returns The overlay configuration.
|
|
623
|
+
*/
|
|
624
|
+
_getOverlayConfig(dialogConfig) {
|
|
625
|
+
const state = new OverlayConfig({
|
|
626
|
+
positionStrategy: this._overlay.position().global(),
|
|
627
|
+
scrollStrategy: dialogConfig.scrollStrategy || this._scrollStrategy(),
|
|
628
|
+
panelClass: dialogConfig.panelClass,
|
|
629
|
+
hasBackdrop: dialogConfig.hasBackdrop,
|
|
630
|
+
direction: dialogConfig.direction,
|
|
631
|
+
minWidth: dialogConfig.minWidth,
|
|
632
|
+
minHeight: dialogConfig.minHeight,
|
|
633
|
+
maxWidth: dialogConfig.maxWidth,
|
|
634
|
+
maxHeight: dialogConfig.maxHeight,
|
|
635
|
+
disposeOnNavigation: dialogConfig.closeOnNavigation
|
|
636
|
+
});
|
|
637
|
+
if (dialogConfig.backdropClass) {
|
|
638
|
+
state.backdropClass = dialogConfig.backdropClass;
|
|
593
639
|
}
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
640
|
+
return state;
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Attaches an MatDialogContainer to a dialog's already-created overlay.
|
|
644
|
+
* @param overlay Reference to the dialog's underlying overlay.
|
|
645
|
+
* @param config The dialog configuration.
|
|
646
|
+
* @returns A promise resolving to a ComponentRef for the attached container.
|
|
647
|
+
*/
|
|
648
|
+
_attachDialogContainer(overlay, config) {
|
|
649
|
+
const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
|
|
650
|
+
const injector = Injector.create({
|
|
651
|
+
parent: userInjector || this._injector,
|
|
652
|
+
providers: [{ provide: MatDialogConfig, useValue: config }]
|
|
653
|
+
});
|
|
654
|
+
const containerPortal = new ComponentPortal(MatDialogContainer, config.viewContainerRef, injector, config.componentFactoryResolver);
|
|
655
|
+
const containerRef = overlay.attach(containerPortal);
|
|
656
|
+
return containerRef.instance;
|
|
657
|
+
}
|
|
658
|
+
/**
|
|
659
|
+
* Attaches the user-provided component to the already-created MatDialogContainer.
|
|
660
|
+
* @param componentOrTemplateRef The type of component being loaded into the dialog,
|
|
661
|
+
* or a TemplateRef to instantiate as the content.
|
|
662
|
+
* @param dialogContainer Reference to the wrapping MatDialogContainer.
|
|
663
|
+
* @param overlayRef Reference to the overlay in which the dialog resides.
|
|
664
|
+
* @param config The dialog configuration.
|
|
665
|
+
* @returns A promise resolving to the MatDialogRef that should be returned to the user.
|
|
666
|
+
*/
|
|
667
|
+
_attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config) {
|
|
668
|
+
// Create a reference to the dialog we're creating in order to give the user a handle
|
|
669
|
+
// to modify and close it.
|
|
670
|
+
const dialogRef = new MatDialogRef(overlayRef, dialogContainer, config.id);
|
|
671
|
+
if (componentOrTemplateRef instanceof TemplateRef) {
|
|
672
|
+
dialogContainer.attachTemplatePortal(new TemplatePortal(componentOrTemplateRef, null, { $implicit: config.data, dialogRef }));
|
|
616
673
|
}
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
674
|
+
else {
|
|
675
|
+
const injector = this._createInjector(config, dialogRef, dialogContainer);
|
|
676
|
+
const contentRef = dialogContainer.attachComponentPortal(new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector));
|
|
677
|
+
dialogRef.componentInstance = contentRef.instance;
|
|
678
|
+
}
|
|
679
|
+
dialogRef
|
|
680
|
+
.updateSize(config.width, config.height)
|
|
681
|
+
.updatePosition(config.position);
|
|
682
|
+
return dialogRef;
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* Creates a custom injector to be used inside the dialog. This allows a component loaded inside
|
|
686
|
+
* of a dialog to close itself and, optionally, to return a value.
|
|
687
|
+
* @param config Config object that is used to construct the dialog.
|
|
688
|
+
* @param dialogRef Reference to the dialog.
|
|
689
|
+
* @param container Dialog container element that wraps all of the contents.
|
|
690
|
+
* @returns The custom injector that can be used inside the dialog.
|
|
691
|
+
*/
|
|
692
|
+
_createInjector(config, dialogRef, dialogContainer) {
|
|
693
|
+
const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
|
|
694
|
+
// The MatDialogContainer is injected in the portal as the MatDialogContainer and the dialog's
|
|
695
|
+
// content are created out of the same ViewContainerRef and as such, are siblings for injector
|
|
696
|
+
// purposes. To allow the hierarchy that is expected, the MatDialogContainer is explicitly
|
|
697
|
+
// added to the injection tokens.
|
|
698
|
+
const providers = [
|
|
699
|
+
{ provide: MatDialogContainer, useValue: dialogContainer },
|
|
700
|
+
{ provide: MAT_DIALOG_DATA, useValue: config.data },
|
|
701
|
+
{ provide: MatDialogRef, useValue: dialogRef }
|
|
702
|
+
];
|
|
703
|
+
if (config.direction &&
|
|
704
|
+
(!userInjector || !userInjector.get(Directionality, null))) {
|
|
705
|
+
providers.push({
|
|
706
|
+
provide: Directionality,
|
|
707
|
+
useValue: { value: config.direction, change: of() }
|
|
628
708
|
});
|
|
629
|
-
const containerPortal = new ComponentPortal(MatDialogContainer, config.viewContainerRef, injector, config.componentFactoryResolver);
|
|
630
|
-
const containerRef = overlay.attach(containerPortal);
|
|
631
|
-
return containerRef.instance;
|
|
632
709
|
}
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
//
|
|
644
|
-
// to
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
}
|
|
654
|
-
dialogRef
|
|
655
|
-
.updateSize(config.width, config.height)
|
|
656
|
-
.updatePosition(config.position);
|
|
657
|
-
return dialogRef;
|
|
658
|
-
}
|
|
659
|
-
/**
|
|
660
|
-
* Creates a custom injector to be used inside the dialog. This allows a component loaded inside
|
|
661
|
-
* of a dialog to close itself and, optionally, to return a value.
|
|
662
|
-
* @param config Config object that is used to construct the dialog.
|
|
663
|
-
* @param dialogRef Reference to the dialog.
|
|
664
|
-
* @param container Dialog container element that wraps all of the contents.
|
|
665
|
-
* @returns The custom injector that can be used inside the dialog.
|
|
666
|
-
*/
|
|
667
|
-
_createInjector(config, dialogRef, dialogContainer) {
|
|
668
|
-
const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
|
|
669
|
-
// The MatDialogContainer is injected in the portal as the MatDialogContainer and the dialog's
|
|
670
|
-
// content are created out of the same ViewContainerRef and as such, are siblings for injector
|
|
671
|
-
// purposes. To allow the hierarchy that is expected, the MatDialogContainer is explicitly
|
|
672
|
-
// added to the injection tokens.
|
|
673
|
-
const providers = [
|
|
674
|
-
{ provide: MatDialogContainer, useValue: dialogContainer },
|
|
675
|
-
{ provide: MAT_DIALOG_DATA, useValue: config.data },
|
|
676
|
-
{ provide: MatDialogRef, useValue: dialogRef }
|
|
677
|
-
];
|
|
678
|
-
if (config.direction &&
|
|
679
|
-
(!userInjector || !userInjector.get(Directionality, null))) {
|
|
680
|
-
providers.push({
|
|
681
|
-
provide: Directionality,
|
|
682
|
-
useValue: { value: config.direction, change: of() }
|
|
710
|
+
return Injector.create({ parent: userInjector || this._injector, providers });
|
|
711
|
+
}
|
|
712
|
+
/**
|
|
713
|
+
* Removes a dialog from the array of open dialogs.
|
|
714
|
+
* @param dialogRef Dialog to be removed.
|
|
715
|
+
*/
|
|
716
|
+
_removeOpenDialog(dialogRef) {
|
|
717
|
+
const index = this.openDialogs.indexOf(dialogRef);
|
|
718
|
+
if (index > -1) {
|
|
719
|
+
this.openDialogs.splice(index, 1);
|
|
720
|
+
// If all the dialogs were closed, remove/restore the `aria-hidden`
|
|
721
|
+
// to a the siblings and emit to the `afterAllClosed` stream.
|
|
722
|
+
if (!this.openDialogs.length) {
|
|
723
|
+
this._ariaHiddenElements.forEach((previousValue, element) => {
|
|
724
|
+
if (previousValue) {
|
|
725
|
+
element.setAttribute('aria-hidden', previousValue);
|
|
726
|
+
}
|
|
727
|
+
else {
|
|
728
|
+
element.removeAttribute('aria-hidden');
|
|
729
|
+
}
|
|
683
730
|
});
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
}
|
|
687
|
-
/**
|
|
688
|
-
* Removes a dialog from the array of open dialogs.
|
|
689
|
-
* @param dialogRef Dialog to be removed.
|
|
690
|
-
*/
|
|
691
|
-
_removeOpenDialog(dialogRef) {
|
|
692
|
-
const index = this.openDialogs.indexOf(dialogRef);
|
|
693
|
-
if (index > -1) {
|
|
694
|
-
this.openDialogs.splice(index, 1);
|
|
695
|
-
// If all the dialogs were closed, remove/restore the `aria-hidden`
|
|
696
|
-
// to a the siblings and emit to the `afterAllClosed` stream.
|
|
697
|
-
if (!this.openDialogs.length) {
|
|
698
|
-
this._ariaHiddenElements.forEach((previousValue, element) => {
|
|
699
|
-
if (previousValue) {
|
|
700
|
-
element.setAttribute('aria-hidden', previousValue);
|
|
701
|
-
}
|
|
702
|
-
else {
|
|
703
|
-
element.removeAttribute('aria-hidden');
|
|
704
|
-
}
|
|
705
|
-
});
|
|
706
|
-
this._ariaHiddenElements.clear();
|
|
707
|
-
this._afterAllClosed.next();
|
|
708
|
-
}
|
|
731
|
+
this._ariaHiddenElements.clear();
|
|
732
|
+
this._afterAllClosed.next();
|
|
709
733
|
}
|
|
710
734
|
}
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
735
|
+
}
|
|
736
|
+
/**
|
|
737
|
+
* Hides all of the content that isn't an overlay from assistive technology.
|
|
738
|
+
*/
|
|
739
|
+
_hideNonDialogContentFromAssistiveTechnology() {
|
|
740
|
+
const overlayContainer = this._overlayContainer.getContainerElement();
|
|
741
|
+
// Ensure that the overlay container is attached to the DOM.
|
|
742
|
+
if (overlayContainer.parentElement) {
|
|
743
|
+
const siblings = overlayContainer.parentElement.children;
|
|
744
|
+
for (let i = siblings.length - 1; i > -1; i--) {
|
|
745
|
+
let sibling = siblings[i];
|
|
746
|
+
if (sibling !== overlayContainer &&
|
|
747
|
+
sibling.nodeName !== 'SCRIPT' &&
|
|
748
|
+
sibling.nodeName !== 'STYLE' &&
|
|
749
|
+
!sibling.hasAttribute('aria-live')) {
|
|
750
|
+
this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));
|
|
751
|
+
sibling.setAttribute('aria-hidden', 'true');
|
|
728
752
|
}
|
|
729
753
|
}
|
|
730
754
|
}
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
755
|
+
}
|
|
756
|
+
/** Closes all of the dialogs in an array. */
|
|
757
|
+
_closeDialogs(dialogs) {
|
|
758
|
+
let i = dialogs.length;
|
|
759
|
+
while (i--) {
|
|
760
|
+
// The `_openDialogs` property isn't updated after close until the rxjs subscription
|
|
761
|
+
// runs on the next microtask, in addition to modifying the array as we're going
|
|
762
|
+
// through it. We loop through all of them and call close without assuming that
|
|
763
|
+
// they'll be removed from the list instantaneously.
|
|
764
|
+
dialogs[i].close();
|
|
741
765
|
}
|
|
742
766
|
}
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
})();
|
|
767
|
+
}
|
|
768
|
+
MatDialog.decorators = [
|
|
769
|
+
{ type: Injectable }
|
|
770
|
+
];
|
|
771
|
+
MatDialog.ctorParameters = () => [
|
|
772
|
+
{ type: Overlay },
|
|
773
|
+
{ type: Injector },
|
|
774
|
+
{ type: Location, decorators: [{ type: Optional }] },
|
|
775
|
+
{ type: MatDialogConfig, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DIALOG_DEFAULT_OPTIONS,] }] },
|
|
776
|
+
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_SCROLL_STRATEGY,] }] },
|
|
777
|
+
{ type: MatDialog, decorators: [{ type: Optional }, { type: SkipSelf }] },
|
|
778
|
+
{ type: OverlayContainer }
|
|
779
|
+
];
|
|
757
780
|
/**
|
|
758
781
|
* Applies default options to the dialog config.
|
|
759
782
|
* @param config Config to be modified.
|
|
@@ -776,130 +799,125 @@ let dialogElementUid = 0;
|
|
|
776
799
|
/**
|
|
777
800
|
* Button that will close the current dialog.
|
|
778
801
|
*/
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);
|
|
796
|
-
}
|
|
802
|
+
class MatDialogClose {
|
|
803
|
+
constructor(dialogRef, _elementRef, _dialog) {
|
|
804
|
+
this.dialogRef = dialogRef;
|
|
805
|
+
this._elementRef = _elementRef;
|
|
806
|
+
this._dialog = _dialog;
|
|
807
|
+
/** Default to "button" to prevents accidental form submits. */
|
|
808
|
+
this.type = 'button';
|
|
809
|
+
}
|
|
810
|
+
ngOnInit() {
|
|
811
|
+
if (!this.dialogRef) {
|
|
812
|
+
// When this directive is included in a dialog via TemplateRef (rather than being
|
|
813
|
+
// in a Component), the DialogRef isn't available via injection because embedded
|
|
814
|
+
// views cannot be given a custom injector. Instead, we look up the DialogRef by
|
|
815
|
+
// ID. This must occur in `onInit`, as the ID binding for the dialog container won't
|
|
816
|
+
// be resolved at constructor time.
|
|
817
|
+
this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);
|
|
797
818
|
}
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
819
|
+
}
|
|
820
|
+
ngOnChanges(changes) {
|
|
821
|
+
const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];
|
|
822
|
+
if (proxiedChange) {
|
|
823
|
+
this.dialogResult = proxiedChange.currentValue;
|
|
803
824
|
}
|
|
804
825
|
}
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
}
|
|
827
|
-
|
|
828
|
-
|
|
826
|
+
_onButtonClick(event) {
|
|
827
|
+
// Determinate the focus origin using the click event, because using the FocusMonitor will
|
|
828
|
+
// result in incorrect origins. Most of the time, close buttons will be auto focused in the
|
|
829
|
+
// dialog, and therefore clicking the button won't result in a focus change. This means that
|
|
830
|
+
// the FocusMonitor won't detect any origin change, and will always output `program`.
|
|
831
|
+
_closeDialogVia(this.dialogRef, event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
MatDialogClose.decorators = [
|
|
835
|
+
{ type: Directive, args: [{
|
|
836
|
+
selector: '[mat-dialog-close], [matDialogClose]',
|
|
837
|
+
exportAs: 'matDialogClose',
|
|
838
|
+
host: {
|
|
839
|
+
'(click)': '_onButtonClick($event)',
|
|
840
|
+
'[attr.aria-label]': 'ariaLabel || null',
|
|
841
|
+
'[attr.type]': 'type',
|
|
842
|
+
}
|
|
843
|
+
},] }
|
|
844
|
+
];
|
|
845
|
+
MatDialogClose.ctorParameters = () => [
|
|
846
|
+
{ type: MatDialogRef, decorators: [{ type: Optional }] },
|
|
847
|
+
{ type: ElementRef },
|
|
848
|
+
{ type: MatDialog }
|
|
849
|
+
];
|
|
850
|
+
MatDialogClose.propDecorators = {
|
|
851
|
+
ariaLabel: [{ type: Input, args: ['aria-label',] }],
|
|
852
|
+
type: [{ type: Input }],
|
|
853
|
+
dialogResult: [{ type: Input, args: ['mat-dialog-close',] }],
|
|
854
|
+
_matDialogClose: [{ type: Input, args: ['matDialogClose',] }]
|
|
855
|
+
};
|
|
829
856
|
/**
|
|
830
857
|
* Title of a dialog element. Stays fixed to the top of the dialog when scrolling.
|
|
831
858
|
*/
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
});
|
|
851
|
-
}
|
|
859
|
+
class MatDialogTitle {
|
|
860
|
+
constructor(_dialogRef, _elementRef, _dialog) {
|
|
861
|
+
this._dialogRef = _dialogRef;
|
|
862
|
+
this._elementRef = _elementRef;
|
|
863
|
+
this._dialog = _dialog;
|
|
864
|
+
this.id = `mat-dialog-title-${dialogElementUid++}`;
|
|
865
|
+
}
|
|
866
|
+
ngOnInit() {
|
|
867
|
+
if (!this._dialogRef) {
|
|
868
|
+
this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);
|
|
869
|
+
}
|
|
870
|
+
if (this._dialogRef) {
|
|
871
|
+
Promise.resolve().then(() => {
|
|
872
|
+
const container = this._dialogRef._containerInstance;
|
|
873
|
+
if (container && !container._ariaLabelledBy) {
|
|
874
|
+
container._ariaLabelledBy = this.id;
|
|
875
|
+
}
|
|
876
|
+
});
|
|
852
877
|
}
|
|
853
878
|
}
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
},
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
}
|
|
872
|
-
|
|
873
|
-
})();
|
|
879
|
+
}
|
|
880
|
+
MatDialogTitle.decorators = [
|
|
881
|
+
{ type: Directive, args: [{
|
|
882
|
+
selector: '[mat-dialog-title], [matDialogTitle]',
|
|
883
|
+
exportAs: 'matDialogTitle',
|
|
884
|
+
host: {
|
|
885
|
+
'class': 'mat-dialog-title',
|
|
886
|
+
'[id]': 'id',
|
|
887
|
+
},
|
|
888
|
+
},] }
|
|
889
|
+
];
|
|
890
|
+
MatDialogTitle.ctorParameters = () => [
|
|
891
|
+
{ type: MatDialogRef, decorators: [{ type: Optional }] },
|
|
892
|
+
{ type: ElementRef },
|
|
893
|
+
{ type: MatDialog }
|
|
894
|
+
];
|
|
895
|
+
MatDialogTitle.propDecorators = {
|
|
896
|
+
id: [{ type: Input }]
|
|
897
|
+
};
|
|
874
898
|
/**
|
|
875
899
|
* Scrollable content container of a dialog.
|
|
876
900
|
*/
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
];
|
|
886
|
-
return MatDialogContent;
|
|
887
|
-
})();
|
|
901
|
+
class MatDialogContent {
|
|
902
|
+
}
|
|
903
|
+
MatDialogContent.decorators = [
|
|
904
|
+
{ type: Directive, args: [{
|
|
905
|
+
selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,
|
|
906
|
+
host: { 'class': 'mat-dialog-content' }
|
|
907
|
+
},] }
|
|
908
|
+
];
|
|
888
909
|
/**
|
|
889
910
|
* Container for the bottom action buttons in a dialog.
|
|
890
911
|
* Stays fixed to the bottom when scrolling.
|
|
891
912
|
*/
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
];
|
|
901
|
-
return MatDialogActions;
|
|
902
|
-
})();
|
|
913
|
+
class MatDialogActions {
|
|
914
|
+
}
|
|
915
|
+
MatDialogActions.decorators = [
|
|
916
|
+
{ type: Directive, args: [{
|
|
917
|
+
selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,
|
|
918
|
+
host: { 'class': 'mat-dialog-actions' }
|
|
919
|
+
},] }
|
|
920
|
+
];
|
|
903
921
|
/**
|
|
904
922
|
* Finds the closest MatDialogRef to an element by looking at the DOM.
|
|
905
923
|
* @param element Element relative to which to look for a dialog.
|
|
@@ -920,40 +938,37 @@ function getClosestDialog(element, openDialogs) {
|
|
|
920
938
|
* Use of this source code is governed by an MIT-style license that can be
|
|
921
939
|
* found in the LICENSE file at https://angular.io/license
|
|
922
940
|
*/
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
];
|
|
955
|
-
return MatDialogModule;
|
|
956
|
-
})();
|
|
941
|
+
class MatDialogModule {
|
|
942
|
+
}
|
|
943
|
+
MatDialogModule.decorators = [
|
|
944
|
+
{ type: NgModule, args: [{
|
|
945
|
+
imports: [
|
|
946
|
+
OverlayModule,
|
|
947
|
+
PortalModule,
|
|
948
|
+
MatCommonModule,
|
|
949
|
+
],
|
|
950
|
+
exports: [
|
|
951
|
+
MatDialogContainer,
|
|
952
|
+
MatDialogClose,
|
|
953
|
+
MatDialogTitle,
|
|
954
|
+
MatDialogContent,
|
|
955
|
+
MatDialogActions,
|
|
956
|
+
MatCommonModule,
|
|
957
|
+
],
|
|
958
|
+
declarations: [
|
|
959
|
+
MatDialogContainer,
|
|
960
|
+
MatDialogClose,
|
|
961
|
+
MatDialogTitle,
|
|
962
|
+
MatDialogActions,
|
|
963
|
+
MatDialogContent,
|
|
964
|
+
],
|
|
965
|
+
providers: [
|
|
966
|
+
MatDialog,
|
|
967
|
+
MAT_DIALOG_SCROLL_STRATEGY_PROVIDER,
|
|
968
|
+
],
|
|
969
|
+
entryComponents: [MatDialogContainer],
|
|
970
|
+
},] }
|
|
971
|
+
];
|
|
957
972
|
|
|
958
973
|
/**
|
|
959
974
|
* @license
|
|
@@ -967,5 +982,5 @@ let MatDialogModule = /** @class */ (() => {
|
|
|
967
982
|
* Generated bundle index. Do not edit.
|
|
968
983
|
*/
|
|
969
984
|
|
|
970
|
-
export { MAT_DIALOG_DATA, MAT_DIALOG_DEFAULT_OPTIONS, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MatDialog, MatDialogActions, MatDialogClose, MatDialogConfig, MatDialogContainer, MatDialogContent, MatDialogModule, MatDialogRef, MatDialogTitle, matDialogAnimations, throwMatDialogContentAlreadyAttachedError };
|
|
985
|
+
export { MAT_DIALOG_DATA, MAT_DIALOG_DEFAULT_OPTIONS, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MatDialog, MatDialogActions, MatDialogClose, MatDialogConfig, MatDialogContainer, MatDialogContent, MatDialogModule, MatDialogRef, MatDialogTitle, _closeDialogVia, matDialogAnimations, throwMatDialogContentAlreadyAttachedError };
|
|
971
986
|
//# sourceMappingURL=dialog.js.map
|