@angular/material 7.1.1 → 7.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/_theming.scss +32 -13
- package/autocomplete/typings/index.d.ts +0 -1
- package/autocomplete/typings/index.metadata.json +1 -1
- package/autocomplete/typings/public-api.d.ts +1 -0
- package/badge/typings/index.metadata.json +1 -1
- package/bottom-sheet/typings/bottom-sheet-ref.d.ts +2 -0
- package/bottom-sheet/typings/index.metadata.json +1 -1
- package/bundles/material-autocomplete.umd.js +18 -12
- package/bundles/material-autocomplete.umd.js.map +1 -1
- package/bundles/material-autocomplete.umd.min.js +1 -1
- package/bundles/material-autocomplete.umd.min.js.map +1 -1
- package/bundles/material-badge.umd.js +6 -0
- package/bundles/material-badge.umd.js.map +1 -1
- package/bundles/material-badge.umd.min.js +1 -1
- package/bundles/material-badge.umd.min.js.map +1 -1
- package/bundles/material-bottom-sheet.umd.js +12 -6
- package/bundles/material-bottom-sheet.umd.js.map +1 -1
- package/bundles/material-bottom-sheet.umd.min.js +1 -1
- package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
- package/bundles/material-button-toggle.umd.js +10 -2
- package/bundles/material-button-toggle.umd.js.map +1 -1
- package/bundles/material-button-toggle.umd.min.js +1 -1
- package/bundles/material-button-toggle.umd.min.js.map +1 -1
- package/bundles/material-button.umd.js +8 -4
- package/bundles/material-button.umd.js.map +1 -1
- package/bundles/material-button.umd.min.js +1 -1
- package/bundles/material-button.umd.min.js.map +1 -1
- package/bundles/material-card.umd.js +1 -1
- package/bundles/material-card.umd.js.map +1 -1
- package/bundles/material-card.umd.min.js +1 -1
- package/bundles/material-card.umd.min.js.map +1 -1
- package/bundles/material-checkbox.umd.js +1 -1
- package/bundles/material-checkbox.umd.js.map +1 -1
- package/bundles/material-checkbox.umd.min.js +1 -1
- package/bundles/material-checkbox.umd.min.js.map +1 -1
- package/bundles/material-chips.umd.js +20 -28
- package/bundles/material-chips.umd.js.map +1 -1
- package/bundles/material-chips.umd.min.js +1 -1
- package/bundles/material-chips.umd.min.js.map +1 -1
- package/bundles/material-core.umd.js +6 -6
- package/bundles/material-core.umd.js.map +1 -1
- package/bundles/material-core.umd.min.js +1 -2
- package/bundles/material-core.umd.min.js.map +1 -1
- package/bundles/material-datepicker.umd.js +9 -6
- package/bundles/material-datepicker.umd.js.map +1 -1
- package/bundles/material-datepicker.umd.min.js +2 -2
- package/bundles/material-datepicker.umd.min.js.map +1 -1
- package/bundles/material-dialog.umd.js +41 -1
- package/bundles/material-dialog.umd.js.map +1 -1
- package/bundles/material-dialog.umd.min.js +1 -1
- package/bundles/material-dialog.umd.min.js.map +1 -1
- package/bundles/material-expansion.umd.js +21 -5
- package/bundles/material-expansion.umd.js.map +1 -1
- package/bundles/material-expansion.umd.min.js +1 -1
- package/bundles/material-expansion.umd.min.js.map +1 -1
- package/bundles/material-form-field.umd.js +68 -13
- package/bundles/material-form-field.umd.js.map +1 -1
- package/bundles/material-form-field.umd.min.js +1 -1
- package/bundles/material-form-field.umd.min.js.map +1 -1
- package/bundles/material-grid-list.umd.js +6 -4
- package/bundles/material-grid-list.umd.js.map +1 -1
- package/bundles/material-grid-list.umd.min.js +1 -1
- package/bundles/material-grid-list.umd.min.js.map +1 -1
- package/bundles/material-icon.umd.js +12 -0
- package/bundles/material-icon.umd.js.map +1 -1
- package/bundles/material-icon.umd.min.js +1 -1
- package/bundles/material-icon.umd.min.js.map +1 -1
- package/bundles/material-input.umd.js +8 -4
- package/bundles/material-input.umd.js.map +1 -1
- package/bundles/material-input.umd.min.js +1 -1
- package/bundles/material-input.umd.min.js.map +1 -1
- package/bundles/material-list.umd.js +98 -11
- package/bundles/material-list.umd.js.map +1 -1
- package/bundles/material-list.umd.min.js +2 -2
- package/bundles/material-list.umd.min.js.map +1 -1
- package/bundles/material-menu.umd.js +35 -20
- package/bundles/material-menu.umd.js.map +1 -1
- package/bundles/material-menu.umd.min.js +1 -1
- package/bundles/material-menu.umd.min.js.map +1 -1
- package/bundles/material-progress-bar.umd.js +2 -2
- package/bundles/material-progress-bar.umd.js.map +1 -1
- package/bundles/material-progress-bar.umd.min.js +1 -1
- package/bundles/material-progress-bar.umd.min.js.map +1 -1
- package/bundles/material-progress-spinner.umd.js +1 -1
- package/bundles/material-progress-spinner.umd.min.js +1 -1
- package/bundles/material-progress-spinner.umd.min.js.map +1 -1
- package/bundles/material-radio.umd.js +16 -37
- package/bundles/material-radio.umd.js.map +1 -1
- package/bundles/material-radio.umd.min.js +1 -1
- package/bundles/material-radio.umd.min.js.map +1 -1
- package/bundles/material-select.umd.js +13 -3
- package/bundles/material-select.umd.js.map +1 -1
- package/bundles/material-select.umd.min.js +1 -1
- package/bundles/material-select.umd.min.js.map +1 -1
- package/bundles/material-sidenav.umd.js +24 -5
- package/bundles/material-sidenav.umd.js.map +1 -1
- package/bundles/material-sidenav.umd.min.js +1 -1
- package/bundles/material-sidenav.umd.min.js.map +1 -1
- package/bundles/material-slide-toggle.umd.js +2 -2
- package/bundles/material-slide-toggle.umd.js.map +1 -1
- package/bundles/material-slide-toggle.umd.min.js +1 -1
- package/bundles/material-slide-toggle.umd.min.js.map +1 -1
- package/bundles/material-slider.umd.js +2 -2
- package/bundles/material-slider.umd.js.map +1 -1
- package/bundles/material-slider.umd.min.js +1 -1
- package/bundles/material-slider.umd.min.js.map +1 -1
- package/bundles/material-snack-bar.umd.js +2 -2
- package/bundles/material-snack-bar.umd.js.map +1 -1
- package/bundles/material-snack-bar.umd.min.js +1 -1
- package/bundles/material-snack-bar.umd.min.js.map +1 -1
- package/bundles/material-sort.umd.js +1 -1
- package/bundles/material-sort.umd.js.map +1 -1
- package/bundles/material-sort.umd.min.js +1 -1
- package/bundles/material-sort.umd.min.js.map +1 -1
- package/bundles/material-stepper.umd.js +26 -6
- package/bundles/material-stepper.umd.js.map +1 -1
- package/bundles/material-stepper.umd.min.js +1 -1
- package/bundles/material-stepper.umd.min.js.map +1 -1
- package/bundles/material-table.umd.js +20 -7
- package/bundles/material-table.umd.js.map +1 -1
- package/bundles/material-table.umd.min.js +1 -1
- package/bundles/material-table.umd.min.js.map +1 -1
- package/bundles/material-tabs.umd.js +214 -51
- package/bundles/material-tabs.umd.js.map +1 -1
- package/bundles/material-tabs.umd.min.js +2 -2
- package/bundles/material-tabs.umd.min.js.map +1 -1
- package/bundles/material-toolbar.umd.js +1 -1
- package/bundles/material-toolbar.umd.js.map +1 -1
- package/bundles/material-toolbar.umd.min.js +1 -1
- package/bundles/material-toolbar.umd.min.js.map +1 -1
- package/bundles/material-tooltip.umd.js +13 -1
- package/bundles/material-tooltip.umd.js.map +1 -1
- package/bundles/material-tooltip.umd.min.js +1 -1
- package/bundles/material-tooltip.umd.min.js.map +1 -1
- package/bundles/material-tree.umd.js +9 -7
- package/bundles/material-tree.umd.js.map +1 -1
- package/bundles/material-tree.umd.min.js +1 -1
- package/bundles/material-tree.umd.min.js.map +1 -1
- package/bundles/material.umd.js +715 -241
- package/bundles/material.umd.js.map +1 -1
- package/bundles/material.umd.min.js +19 -19
- package/bundles/material.umd.min.js.map +1 -1
- package/button/typings/button.d.ts +0 -5
- package/button/typings/index.metadata.json +1 -1
- package/button-toggle/typings/index.metadata.json +1 -1
- package/card/typings/index.metadata.json +1 -1
- package/checkbox/typings/index.metadata.json +1 -1
- package/chips/typings/chip-list.d.ts +1 -1
- package/chips/typings/chip.d.ts +5 -5
- package/chips/typings/index.metadata.json +1 -1
- package/core/typings/index.metadata.json +1 -1
- package/core/typings/ripple/ripple.d.ts +2 -2
- package/datepicker/typings/calendar.d.ts +2 -2
- package/datepicker/typings/index.metadata.json +1 -1
- package/dialog/typings/dialog-ref.d.ts +4 -0
- package/dialog/typings/index.metadata.json +1 -1
- package/esm2015/autocomplete.js +18 -12
- package/esm2015/autocomplete.js.map +1 -1
- package/esm2015/badge.js +6 -0
- package/esm2015/badge.js.map +1 -1
- package/esm2015/bottom-sheet.js +11 -5
- package/esm2015/bottom-sheet.js.map +1 -1
- package/esm2015/button-toggle.js +8 -1
- package/esm2015/button-toggle.js.map +1 -1
- package/esm2015/button.js +8 -4
- package/esm2015/button.js.map +1 -1
- package/esm2015/card.js +1 -1
- package/esm2015/card.js.map +1 -1
- package/esm2015/checkbox.js +1 -1
- package/esm2015/checkbox.js.map +1 -1
- package/esm2015/chips.js +19 -27
- package/esm2015/chips.js.map +1 -1
- package/esm2015/core.js +5 -5
- package/esm2015/core.js.map +1 -1
- package/esm2015/datepicker.js +7 -4
- package/esm2015/datepicker.js.map +1 -1
- package/esm2015/dialog.js +25 -1
- package/esm2015/dialog.js.map +1 -1
- package/esm2015/expansion.js +23 -6
- package/esm2015/expansion.js.map +1 -1
- package/esm2015/form-field.js +61 -13
- package/esm2015/form-field.js.map +1 -1
- package/esm2015/grid-list.js +5 -3
- package/esm2015/grid-list.js.map +1 -1
- package/esm2015/icon.js +9 -0
- package/esm2015/icon.js.map +1 -1
- package/esm2015/input.js +8 -4
- package/esm2015/input.js.map +1 -1
- package/esm2015/list.js +79 -8
- package/esm2015/list.js.map +1 -1
- package/esm2015/material.js +7 -7
- package/esm2015/material.js.map +1 -1
- package/esm2015/menu.js +26 -15
- package/esm2015/menu.js.map +1 -1
- package/esm2015/progress-bar.js +1 -1
- package/esm2015/progress-bar.js.map +1 -1
- package/esm2015/radio.js +6 -15
- package/esm2015/radio.js.map +1 -1
- package/esm2015/select.js +15 -4
- package/esm2015/select.js.map +1 -1
- package/esm2015/sidenav.js +26 -6
- package/esm2015/sidenav.js.map +1 -1
- package/esm2015/slide-toggle.js +1 -1
- package/esm2015/slide-toggle.js.map +1 -1
- package/esm2015/slider.js +4 -4
- package/esm2015/slider.js.map +1 -1
- package/esm2015/snack-bar.js +1 -1
- package/esm2015/snack-bar.js.map +1 -1
- package/esm2015/sort.js +1 -1
- package/esm2015/sort.js.map +1 -1
- package/esm2015/stepper.js +23 -7
- package/esm2015/stepper.js.map +1 -1
- package/esm2015/table.js +21 -8
- package/esm2015/table.js.map +1 -1
- package/esm2015/tabs.js +162 -43
- package/esm2015/tabs.js.map +1 -1
- package/esm2015/toolbar.js +1 -1
- package/esm2015/toolbar.js.map +1 -1
- package/esm2015/tooltip.js +10 -1
- package/esm2015/tooltip.js.map +1 -1
- package/esm2015/tree.js +9 -7
- package/esm2015/tree.js.map +1 -1
- package/esm5/autocomplete.es5.js +18 -12
- package/esm5/autocomplete.es5.js.map +1 -1
- package/esm5/badge.es5.js +6 -0
- package/esm5/badge.es5.js.map +1 -1
- package/esm5/bottom-sheet.es5.js +11 -5
- package/esm5/bottom-sheet.es5.js.map +1 -1
- package/esm5/button-toggle.es5.js +9 -1
- package/esm5/button-toggle.es5.js.map +1 -1
- package/esm5/button.es5.js +8 -4
- package/esm5/button.es5.js.map +1 -1
- package/esm5/card.es5.js +1 -1
- package/esm5/card.es5.js.map +1 -1
- package/esm5/checkbox.es5.js +1 -1
- package/esm5/checkbox.es5.js.map +1 -1
- package/esm5/chips.es5.js +21 -29
- package/esm5/chips.es5.js.map +1 -1
- package/esm5/core.es5.js +6 -6
- package/esm5/core.es5.js.map +1 -1
- package/esm5/datepicker.es5.js +9 -6
- package/esm5/datepicker.es5.js.map +1 -1
- package/esm5/dialog.es5.js +41 -1
- package/esm5/dialog.es5.js.map +1 -1
- package/esm5/expansion.es5.js +21 -6
- package/esm5/expansion.es5.js.map +1 -1
- package/esm5/form-field.es5.js +69 -14
- package/esm5/form-field.es5.js.map +1 -1
- package/esm5/grid-list.es5.js +5 -3
- package/esm5/grid-list.es5.js.map +1 -1
- package/esm5/icon.es5.js +12 -0
- package/esm5/icon.es5.js.map +1 -1
- package/esm5/input.es5.js +8 -4
- package/esm5/input.es5.js.map +1 -1
- package/esm5/list.es5.js +97 -9
- package/esm5/list.es5.js.map +1 -1
- package/esm5/material.es5.js +7 -7
- package/esm5/material.es5.js.map +1 -1
- package/esm5/menu.es5.js +30 -15
- package/esm5/menu.es5.js.map +1 -1
- package/esm5/progress-bar.es5.js +1 -1
- package/esm5/progress-bar.es5.js.map +1 -1
- package/esm5/radio.es5.js +18 -37
- package/esm5/radio.es5.js.map +1 -1
- package/esm5/select.es5.js +14 -4
- package/esm5/select.es5.js.map +1 -1
- package/esm5/sidenav.es5.js +25 -6
- package/esm5/sidenav.es5.js.map +1 -1
- package/esm5/slide-toggle.es5.js +1 -1
- package/esm5/slide-toggle.es5.js.map +1 -1
- package/esm5/slider.es5.js +3 -3
- package/esm5/slider.es5.js.map +1 -1
- package/esm5/snack-bar.es5.js +1 -1
- package/esm5/snack-bar.es5.js.map +1 -1
- package/esm5/sort.es5.js +1 -1
- package/esm5/sort.es5.js.map +1 -1
- package/esm5/stepper.es5.js +27 -7
- package/esm5/stepper.es5.js.map +1 -1
- package/esm5/table.es5.js +21 -8
- package/esm5/table.es5.js.map +1 -1
- package/esm5/tabs.es5.js +207 -44
- package/esm5/tabs.es5.js.map +1 -1
- package/esm5/toolbar.es5.js +1 -1
- package/esm5/toolbar.es5.js.map +1 -1
- package/esm5/tooltip.es5.js +13 -1
- package/esm5/tooltip.es5.js.map +1 -1
- package/esm5/tree.es5.js +9 -7
- package/esm5/tree.es5.js.map +1 -1
- package/expansion/typings/expansion-panel-header.d.ts +2 -2
- package/expansion/typings/expansion-panel.d.ts +19 -2
- package/expansion/typings/index.metadata.json +1 -1
- package/form-field/typings/form-field.d.ts +15 -4
- package/form-field/typings/index.metadata.json +1 -1
- package/form-field/typings/prefix.d.ts +1 -1
- package/grid-list/typings/index.d.ts +1 -1
- package/grid-list/typings/index.metadata.json +1 -1
- package/icon/typings/icon-registry.d.ts +3 -2
- package/icon/typings/index.metadata.json +1 -1
- package/list/typings/index.metadata.json +1 -1
- package/list/typings/list.d.ts +16 -5
- package/list/typings/selection-list.d.ts +1 -0
- package/menu/typings/index.d.ts +4 -4
- package/menu/typings/index.metadata.json +1 -1
- package/menu/typings/menu-directive.d.ts +1 -0
- package/menu/typings/menu-trigger.d.ts +1 -1
- package/package.json +5 -5
- 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-bar/typings/index.metadata.json +1 -1
- package/radio/typings/index.metadata.json +1 -1
- package/radio/typings/radio.d.ts +2 -6
- package/schematics/ng-add/theming/theming.js +10 -9
- package/schematics/ng-add/theming/theming.js.map +1 -1
- package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
- package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
- package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
- package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
- package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
- package/select/typings/index.metadata.json +1 -1
- package/select/typings/select.d.ts +12 -2
- package/sidenav/typings/drawer.d.ts +9 -2
- package/sidenav/typings/index.metadata.json +1 -1
- package/slide-toggle/typings/index.metadata.json +1 -1
- package/slider/typings/index.metadata.json +1 -1
- package/snack-bar/typings/index.metadata.json +1 -1
- package/sort/typings/index.metadata.json +1 -1
- package/stepper/typings/index.metadata.json +1 -1
- package/stepper/typings/step-header.d.ts +1 -0
- package/table/typings/index.metadata.json +1 -1
- package/table/typings/table-data-source.d.ts +2 -0
- package/tabs/typings/index.d.ts +5 -5
- package/tabs/typings/index.metadata.json +1 -1
- package/tabs/typings/tab-group.d.ts +2 -1
- package/tabs/typings/tab-header.d.ts +33 -6
- package/tabs/typings/tab-nav-bar/tab-nav-bar.d.ts +6 -6
- package/toolbar/typings/index.metadata.json +1 -1
- package/tooltip/typings/index.metadata.json +1 -1
- package/tooltip/typings/tooltip.d.ts +3 -1
- package/tree/typings/data-source/flat-data-source.d.ts +2 -2
- package/tree/typings/index.metadata.json +1 -1
- package/typings/autocomplete/index.d.ts +0 -1
- package/typings/autocomplete/index.metadata.json +1 -1
- package/typings/autocomplete/public-api.d.ts +1 -0
- package/typings/badge/index.metadata.json +1 -1
- package/typings/bottom-sheet/bottom-sheet-ref.d.ts +2 -0
- package/typings/bottom-sheet/index.metadata.json +1 -1
- package/typings/button/button.d.ts +0 -5
- package/typings/button/index.metadata.json +1 -1
- package/typings/button-toggle/index.metadata.json +1 -1
- package/typings/card/index.metadata.json +1 -1
- package/typings/checkbox/index.metadata.json +1 -1
- package/typings/chips/chip-list.d.ts +1 -1
- package/typings/chips/chip.d.ts +5 -5
- package/typings/chips/index.metadata.json +1 -1
- package/typings/core/index.metadata.json +1 -1
- package/typings/core/ripple/ripple.d.ts +2 -2
- package/typings/datepicker/calendar.d.ts +2 -2
- package/typings/datepicker/index.metadata.json +1 -1
- package/typings/dialog/dialog-ref.d.ts +4 -0
- package/typings/dialog/index.metadata.json +1 -1
- package/typings/esm5/autocomplete/index.d.ts +0 -1
- package/typings/esm5/autocomplete/index.metadata.json +1 -1
- package/typings/esm5/autocomplete/public-api.d.ts +1 -0
- package/typings/esm5/badge/index.metadata.json +1 -1
- package/typings/esm5/bottom-sheet/bottom-sheet-ref.d.ts +2 -0
- package/typings/esm5/bottom-sheet/index.metadata.json +1 -1
- package/typings/esm5/button/button.d.ts +0 -5
- package/typings/esm5/button/index.metadata.json +1 -1
- package/typings/esm5/button-toggle/index.metadata.json +1 -1
- package/typings/esm5/card/index.metadata.json +1 -1
- package/typings/esm5/checkbox/index.metadata.json +1 -1
- package/typings/esm5/chips/chip-list.d.ts +1 -1
- package/typings/esm5/chips/chip.d.ts +5 -5
- package/typings/esm5/chips/index.metadata.json +1 -1
- package/typings/esm5/core/index.metadata.json +1 -1
- package/typings/esm5/core/ripple/ripple.d.ts +2 -2
- package/typings/esm5/datepicker/calendar.d.ts +2 -2
- package/typings/esm5/datepicker/index.metadata.json +1 -1
- package/typings/esm5/dialog/dialog-ref.d.ts +4 -0
- package/typings/esm5/dialog/index.metadata.json +1 -1
- package/typings/esm5/expansion/expansion-panel-header.d.ts +2 -2
- package/typings/esm5/expansion/expansion-panel.d.ts +19 -2
- package/typings/esm5/expansion/index.metadata.json +1 -1
- package/typings/esm5/form-field/form-field.d.ts +15 -4
- package/typings/esm5/form-field/index.metadata.json +1 -1
- package/typings/esm5/form-field/prefix.d.ts +1 -1
- package/typings/esm5/grid-list/index.d.ts +1 -1
- package/typings/esm5/grid-list/index.metadata.json +1 -1
- package/typings/esm5/icon/icon-registry.d.ts +3 -2
- package/typings/esm5/icon/index.metadata.json +1 -1
- package/typings/esm5/index.metadata.json +1 -1
- package/typings/esm5/list/index.metadata.json +1 -1
- package/typings/esm5/list/list.d.ts +16 -5
- package/typings/esm5/list/selection-list.d.ts +1 -0
- package/typings/esm5/menu/index.d.ts +4 -4
- package/typings/esm5/menu/index.metadata.json +1 -1
- package/typings/esm5/menu/menu-directive.d.ts +1 -0
- package/typings/esm5/menu/menu-trigger.d.ts +1 -1
- package/typings/esm5/progress-bar/index.metadata.json +1 -1
- package/typings/esm5/radio/index.metadata.json +1 -1
- package/typings/esm5/radio/radio.d.ts +2 -6
- package/typings/esm5/select/index.metadata.json +1 -1
- package/typings/esm5/select/select.d.ts +12 -2
- package/typings/esm5/sidenav/drawer.d.ts +9 -2
- package/typings/esm5/sidenav/index.metadata.json +1 -1
- package/typings/esm5/slide-toggle/index.metadata.json +1 -1
- package/typings/esm5/slider/index.metadata.json +1 -1
- package/typings/esm5/snack-bar/index.metadata.json +1 -1
- package/typings/esm5/sort/index.metadata.json +1 -1
- package/typings/esm5/stepper/index.metadata.json +1 -1
- package/typings/esm5/stepper/step-header.d.ts +1 -0
- package/typings/esm5/table/index.metadata.json +1 -1
- package/typings/esm5/table/table-data-source.d.ts +2 -0
- package/typings/esm5/tabs/index.d.ts +5 -5
- package/typings/esm5/tabs/index.metadata.json +1 -1
- package/typings/esm5/tabs/tab-group.d.ts +2 -1
- package/typings/esm5/tabs/tab-header.d.ts +33 -6
- package/typings/esm5/tabs/tab-nav-bar/tab-nav-bar.d.ts +6 -6
- package/typings/esm5/toolbar/index.metadata.json +1 -1
- package/typings/esm5/tooltip/index.metadata.json +1 -1
- package/typings/esm5/tooltip/tooltip.d.ts +3 -1
- package/typings/esm5/tree/data-source/flat-data-source.d.ts +2 -2
- package/typings/esm5/tree/index.metadata.json +1 -1
- package/typings/expansion/expansion-panel-header.d.ts +2 -2
- package/typings/expansion/expansion-panel.d.ts +19 -2
- package/typings/expansion/index.metadata.json +1 -1
- package/typings/form-field/form-field.d.ts +15 -4
- package/typings/form-field/index.metadata.json +1 -1
- package/typings/form-field/prefix.d.ts +1 -1
- package/typings/grid-list/index.d.ts +1 -1
- package/typings/grid-list/index.metadata.json +1 -1
- package/typings/icon/icon-registry.d.ts +3 -2
- package/typings/icon/index.metadata.json +1 -1
- package/typings/index.metadata.json +1 -1
- package/typings/list/index.metadata.json +1 -1
- package/typings/list/list.d.ts +16 -5
- package/typings/list/selection-list.d.ts +1 -0
- package/typings/menu/index.d.ts +4 -4
- package/typings/menu/index.metadata.json +1 -1
- package/typings/menu/menu-directive.d.ts +1 -0
- package/typings/menu/menu-trigger.d.ts +1 -1
- package/typings/progress-bar/index.metadata.json +1 -1
- package/typings/radio/index.metadata.json +1 -1
- package/typings/radio/radio.d.ts +2 -6
- package/typings/select/index.metadata.json +1 -1
- package/typings/select/select.d.ts +12 -2
- package/typings/sidenav/drawer.d.ts +9 -2
- package/typings/sidenav/index.metadata.json +1 -1
- package/typings/slide-toggle/index.metadata.json +1 -1
- package/typings/slider/index.metadata.json +1 -1
- package/typings/snack-bar/index.metadata.json +1 -1
- package/typings/sort/index.metadata.json +1 -1
- package/typings/stepper/index.metadata.json +1 -1
- package/typings/stepper/step-header.d.ts +1 -0
- package/typings/table/index.metadata.json +1 -1
- package/typings/table/table-data-source.d.ts +2 -0
- package/typings/tabs/index.d.ts +5 -5
- package/typings/tabs/index.metadata.json +1 -1
- package/typings/tabs/tab-group.d.ts +2 -1
- package/typings/tabs/tab-header.d.ts +33 -6
- package/typings/tabs/tab-nav-bar/tab-nav-bar.d.ts +6 -6
- package/typings/toolbar/index.metadata.json +1 -1
- package/typings/tooltip/index.metadata.json +1 -1
- package/typings/tooltip/tooltip.d.ts +3 -1
- package/typings/tree/data-source/flat-data-source.d.ts +2 -2
- package/typings/tree/index.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-field.es5.js","sources":["../../../src/lib/form-field/form-field-module.ts","../../../src/lib/form-field/form-field.ts","../../../src/lib/form-field/suffix.ts","../../../src/lib/form-field/prefix.ts","../../../src/lib/form-field/placeholder.ts","../../../src/lib/form-field/label.ts","../../../src/lib/form-field/hint.ts","../../../src/lib/form-field/form-field-errors.ts","../../../src/lib/form-field/form-field-control.ts","../../../src/lib/form-field/form-field-animations.ts","../../../src/lib/form-field/error.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ObserversModule} from '@angular/cdk/observers';\nimport {MatError} from './error';\nimport {MatFormField} from './form-field';\nimport {MatHint} from './hint';\nimport {MatLabel} from './label';\nimport {MatPlaceholder} from './placeholder';\nimport {MatPrefix} from './prefix';\nimport {MatSuffix} from './suffix';\n\n\n@NgModule({\n declarations: [\n MatError,\n MatFormField,\n MatHint,\n MatLabel,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n ],\n imports: [\n CommonModule,\n ObserversModule,\n ],\n exports: [\n MatError,\n MatFormField,\n MatHint,\n MatLabel,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n ],\n})\nexport class MatFormFieldModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n CanColor, CanColorCtor,\n FloatLabelType,\n LabelOptions,\n MAT_LABEL_GLOBAL_OPTIONS,\n mixinColor,\n} from '@angular/material/core';\nimport {fromEvent, merge} from 'rxjs';\nimport {startWith, take} from 'rxjs/operators';\nimport {MatError} from './error';\nimport {matFormFieldAnimations} from './form-field-animations';\nimport {MatFormFieldControl} from './form-field-control';\nimport {\n getMatFormFieldDuplicatedHintError,\n getMatFormFieldMissingControlError,\n getMatFormFieldPlaceholderConflictError,\n} from './form-field-errors';\nimport {MatHint} from './hint';\nimport {MatLabel} from './label';\nimport {MatPlaceholder} from './placeholder';\nimport {MatPrefix} from './prefix';\nimport {MatSuffix} from './suffix';\nimport {Platform} from '@angular/cdk/platform';\nimport {NgControl} from '@angular/forms';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\nlet nextUniqueId = 0;\nconst floatingLabelScale = 0.75;\nconst outlineGapPadding = 5;\n\n\n/**\n * Boilerplate for applying mixins to MatFormField.\n * @docs-private\n */\nexport class MatFormFieldBase {\n constructor(public _elementRef: ElementRef) { }\n}\n\n/**\n * Base class to which we're applying the form field mixins.\n * @docs-private\n */\nexport const _MatFormFieldMixinBase: CanColorCtor & typeof MatFormFieldBase =\n mixinColor(MatFormFieldBase, 'primary');\n\n/** Possible appearance styles for the form field. */\nexport type MatFormFieldAppearance = 'legacy' | 'standard' | 'fill' | 'outline';\n\n/**\n * Represents the default options form the form field that can be configured\n * using the `MAT_FORM_FIELD_DEFAULT_OPTIONS` injection token.\n */\nexport interface MatFormFieldDefaultOptions {\n appearance?: MatFormFieldAppearance;\n}\n\n/**\n * Injection token that can be used to configure the\n * default options for all form field within an app.\n */\nexport const MAT_FORM_FIELD_DEFAULT_OPTIONS =\n new InjectionToken<MatFormFieldDefaultOptions>('MAT_FORM_FIELD_DEFAULT_OPTIONS');\n\n\n/** Container for form controls that applies Material Design styling and behavior. */\n@Component({\n moduleId: module.id,\n selector: 'mat-form-field',\n exportAs: 'matFormField',\n templateUrl: 'form-field.html',\n // MatInput is a directive and can't have styles, so we need to include its styles here\n // in form-field-input.css. The MatInput styles are fairly minimal so it shouldn't be a\n // big deal for people who aren't using MatInput.\n styleUrls: [\n 'form-field.css',\n 'form-field-fill.css',\n 'form-field-input.css',\n 'form-field-legacy.css',\n 'form-field-outline.css',\n 'form-field-standard.css',\n ],\n animations: [matFormFieldAnimations.transitionMessages],\n host: {\n 'class': 'mat-form-field',\n '[class.mat-form-field-appearance-standard]': 'appearance == \"standard\"',\n '[class.mat-form-field-appearance-fill]': 'appearance == \"fill\"',\n '[class.mat-form-field-appearance-outline]': 'appearance == \"outline\"',\n '[class.mat-form-field-appearance-legacy]': 'appearance == \"legacy\"',\n '[class.mat-form-field-invalid]': '_control.errorState',\n '[class.mat-form-field-can-float]': '_canLabelFloat',\n '[class.mat-form-field-should-float]': '_shouldLabelFloat()',\n '[class.mat-form-field-hide-placeholder]': '_hideControlPlaceholder()',\n '[class.mat-form-field-disabled]': '_control.disabled',\n '[class.mat-form-field-autofilled]': '_control.autofilled',\n '[class.mat-focused]': '_control.focused',\n '[class.mat-accent]': 'color == \"accent\"',\n '[class.mat-warn]': 'color == \"warn\"',\n '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n '[class.ng-touched]': '_shouldForward(\"touched\")',\n '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n '[class.ng-valid]': '_shouldForward(\"valid\")',\n '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n '[class.ng-pending]': '_shouldForward(\"pending\")',\n '[class._mat-animation-noopable]': '!_animationsEnabled',\n },\n inputs: ['color'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class MatFormField extends _MatFormFieldMixinBase\n implements AfterContentInit, AfterContentChecked, AfterViewInit, CanColor {\n private _labelOptions: LabelOptions;\n private _outlineGapCalculationNeeded = false;\n\n /** The form-field appearance style. */\n @Input()\n get appearance(): MatFormFieldAppearance { return this._appearance; }\n set appearance(value: MatFormFieldAppearance) {\n const oldValue = this._appearance;\n\n this._appearance = value || (this._defaults && this._defaults.appearance) || 'legacy';\n\n if (this._appearance === 'outline' && oldValue !== value) {\n this._updateOutlineGapOnStable();\n }\n }\n _appearance: MatFormFieldAppearance;\n\n /** Whether the required marker should be hidden. */\n @Input()\n get hideRequiredMarker(): boolean { return this._hideRequiredMarker; }\n set hideRequiredMarker(value: boolean) {\n this._hideRequiredMarker = coerceBooleanProperty(value);\n }\n private _hideRequiredMarker: boolean;\n\n /** Override for the logic that disables the label animation in certain cases. */\n private _showAlwaysAnimate = false;\n\n /** Whether the floating label should always float or not. */\n get _shouldAlwaysFloat(): boolean {\n return this.floatLabel === 'always' && !this._showAlwaysAnimate;\n }\n\n /** Whether the label can float or not. */\n get _canLabelFloat(): boolean { return this.floatLabel !== 'never'; }\n\n /** State of the mat-hint and mat-error animations. */\n _subscriptAnimationState: string = '';\n\n /** Text for the form field hint. */\n @Input()\n get hintLabel(): string { return this._hintLabel; }\n set hintLabel(value: string) {\n this._hintLabel = value;\n this._processHints();\n }\n private _hintLabel = '';\n\n // Unique id for the hint label.\n _hintLabelId: string = `mat-hint-${nextUniqueId++}`;\n\n // Unique id for the internal form field label.\n _labelId = `mat-form-field-label-${nextUniqueId++}`;\n\n /**\n * Whether the label should always float, never float or float as the user types.\n *\n * Note: only the legacy appearance supports the `never` option. `never` was originally added as a\n * way to make the floating label emulate the behavior of a standard input placeholder. However\n * the form field now supports both floating labels and placeholders. Therefore in the non-legacy\n * appearances the `never` option has been disabled in favor of just using the placeholder.\n */\n @Input()\n get floatLabel(): FloatLabelType {\n return this.appearance !== 'legacy' && this._floatLabel === 'never' ? 'auto' : this._floatLabel;\n }\n set floatLabel(value: FloatLabelType) {\n if (value !== this._floatLabel) {\n this._floatLabel = value || this._labelOptions.float || 'auto';\n this._changeDetectorRef.markForCheck();\n }\n }\n private _floatLabel: FloatLabelType;\n\n /** Whether the Angular animations are enabled. */\n _animationsEnabled: boolean;\n\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n @ViewChild('underline') underlineRef: ElementRef;\n\n @ViewChild('connectionContainer') _connectionContainerRef: ElementRef;\n @ViewChild('inputContainer') _inputContainerRef: ElementRef;\n @ViewChild('label') private _label: ElementRef;\n @ContentChild(MatFormFieldControl) _control: MatFormFieldControl<any>;\n @ContentChild(MatPlaceholder) _placeholderChild: MatPlaceholder;\n @ContentChild(MatLabel) _labelChild: MatLabel;\n @ContentChildren(MatError) _errorChildren: QueryList<MatError>;\n @ContentChildren(MatHint) _hintChildren: QueryList<MatHint>;\n @ContentChildren(MatPrefix) _prefixChildren: QueryList<MatPrefix>;\n @ContentChildren(MatSuffix) _suffixChildren: QueryList<MatSuffix>;\n\n constructor(\n public _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_LABEL_GLOBAL_OPTIONS) labelOptions: LabelOptions,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS)\n private _defaults: MatFormFieldDefaultOptions,\n // @breaking-change 8.0.0 _platform, _ngZone and _animationMode to be made required.\n private _platform?: Platform,\n private _ngZone?: NgZone,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) _animationMode?: string) {\n super(_elementRef);\n\n this._labelOptions = labelOptions ? labelOptions : {};\n this.floatLabel = this._labelOptions.float || 'auto';\n this._animationsEnabled = _animationMode !== 'NoopAnimations';\n\n // Set the default through here so we invoke the setter on the first run.\n this.appearance = (_defaults && _defaults.appearance) ? _defaults.appearance : 'legacy';\n }\n\n /**\n * Gets an ElementRef for the element that a overlay attached to the form-field should be\n * positioned relative to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._connectionContainerRef || this._elementRef;\n }\n\n ngAfterContentInit() {\n this._validateControlChild();\n\n const control = this._control;\n\n if (control.controlType) {\n this._elementRef.nativeElement.classList.add(`mat-form-field-type-${control.controlType}`);\n }\n\n // Subscribe to changes in the child control state in order to update the form field UI.\n control.stateChanges.pipe(startWith<void>(null!)).subscribe(() => {\n this._validatePlaceholders();\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n\n // Run change detection if the value changes.\n if (control.ngControl && control.ngControl.valueChanges) {\n control.ngControl.valueChanges.subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n // Run change detection and update the outline if the suffix or prefix changes.\n merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {\n this._updateOutlineGapOnStable();\n this._changeDetectorRef.markForCheck();\n });\n\n // Re-validate when the number of hints changes.\n this._hintChildren.changes.pipe(startWith(null)).subscribe(() => {\n this._processHints();\n this._changeDetectorRef.markForCheck();\n });\n\n // Update the aria-described by when the number of errors changes.\n this._errorChildren.changes.pipe(startWith(null)).subscribe(() => {\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n ngAfterContentChecked() {\n this._validateControlChild();\n if (this._outlineGapCalculationNeeded) {\n this.updateOutlineGap();\n }\n }\n\n ngAfterViewInit() {\n // Avoid animations on load.\n this._subscriptAnimationState = 'enter';\n this._changeDetectorRef.detectChanges();\n }\n\n /** Determines whether a class from the NgControl should be forwarded to the host element. */\n _shouldForward(prop: keyof NgControl): boolean {\n const ngControl = this._control ? this._control.ngControl : null;\n return ngControl && ngControl[prop];\n }\n\n _hasPlaceholder() {\n return !!(this._control && this._control.placeholder || this._placeholderChild);\n }\n\n _hasLabel() {\n return !!this._labelChild;\n }\n\n _shouldLabelFloat() {\n return this._canLabelFloat && (this._control.shouldLabelFloat || this._shouldAlwaysFloat);\n }\n\n _hideControlPlaceholder() {\n // In the legacy appearance the placeholder is promoted to a label if no label is given.\n return this.appearance === 'legacy' && !this._hasLabel() ||\n this._hasLabel() && !this._shouldLabelFloat();\n }\n\n _hasFloatingLabel() {\n // In the legacy appearance the placeholder is promoted to a label if no label is given.\n return this._hasLabel() || this.appearance === 'legacy' && this._hasPlaceholder();\n }\n\n /** Determines whether to display hints or errors. */\n _getDisplayedMessages(): 'error' | 'hint' {\n return (this._errorChildren && this._errorChildren.length > 0 &&\n this._control.errorState) ? 'error' : 'hint';\n }\n\n /** Animates the placeholder up and locks it in position. */\n _animateAndLockLabel(): void {\n if (this._hasFloatingLabel() && this._canLabelFloat) {\n // If animations are disabled, we shouldn't go in here,\n // because the `transitionend` will never fire.\n if (this._animationsEnabled) {\n this._showAlwaysAnimate = true;\n\n fromEvent(this._label.nativeElement, 'transitionend').pipe(take(1)).subscribe(() => {\n this._showAlwaysAnimate = false;\n });\n }\n\n this.floatLabel = 'always';\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Ensure that there is only one placeholder (either `placeholder` attribute on the child control\n * or child element with the `mat-placeholder` directive).\n */\n private _validatePlaceholders() {\n if (this._control.placeholder && this._placeholderChild) {\n throw getMatFormFieldPlaceholderConflictError();\n }\n }\n\n /** Does any extra processing that is required when handling the hints. */\n private _processHints() {\n this._validateHints();\n this._syncDescribedByIds();\n }\n\n /**\n * Ensure that there is a maximum of one of each `<mat-hint>` alignment specified, with the\n * attribute being considered as `align=\"start\"`.\n */\n private _validateHints() {\n if (this._hintChildren) {\n let startHint: MatHint;\n let endHint: MatHint;\n this._hintChildren.forEach((hint: MatHint) => {\n if (hint.align === 'start') {\n if (startHint || this.hintLabel) {\n throw getMatFormFieldDuplicatedHintError('start');\n }\n startHint = hint;\n } else if (hint.align === 'end') {\n if (endHint) {\n throw getMatFormFieldDuplicatedHintError('end');\n }\n endHint = hint;\n }\n });\n }\n }\n\n /**\n * Sets the list of element IDs that describe the child control. This allows the control to update\n * its `aria-describedby` attribute accordingly.\n */\n private _syncDescribedByIds() {\n if (this._control) {\n let ids: string[] = [];\n\n if (this._getDisplayedMessages() === 'hint') {\n const startHint = this._hintChildren ?\n this._hintChildren.find(hint => hint.align === 'start') : null;\n const endHint = this._hintChildren ?\n this._hintChildren.find(hint => hint.align === 'end') : null;\n\n if (startHint) {\n ids.push(startHint.id);\n } else if (this._hintLabel) {\n ids.push(this._hintLabelId);\n }\n\n if (endHint) {\n ids.push(endHint.id);\n }\n } else if (this._errorChildren) {\n ids = this._errorChildren.map(error => error.id);\n }\n\n this._control.setDescribedByIds(ids);\n }\n }\n\n /** Throws an error if the form field's control is missing. */\n protected _validateControlChild() {\n if (!this._control) {\n throw getMatFormFieldMissingControlError();\n }\n }\n\n /**\n * Updates the width and position of the gap in the outline. Only relevant for the outline\n * appearance.\n */\n updateOutlineGap() {\n const labelEl = this._label ? this._label.nativeElement : null;\n\n if (this.appearance !== 'outline' || !labelEl || !labelEl.children.length ||\n !labelEl.textContent.trim()) {\n return;\n }\n\n if (this._platform && !this._platform.isBrowser) {\n // getBoundingClientRect isn't available on the server.\n return;\n }\n // If the element is not present in the DOM, the outline gap will need to be calculated\n // the next time it is checked and in the DOM.\n if (!document.documentElement!.contains(this._elementRef.nativeElement)) {\n this._outlineGapCalculationNeeded = true;\n return;\n }\n\n let startWidth = 0;\n let gapWidth = 0;\n const startEls = this._connectionContainerRef.nativeElement.querySelectorAll(\n '.mat-form-field-outline-start');\n const gapEls = this._connectionContainerRef.nativeElement.querySelectorAll(\n '.mat-form-field-outline-gap');\n if (this._label && this._label.nativeElement.children.length) {\n const containerStart = this._getStartEnd(\n this._connectionContainerRef.nativeElement.getBoundingClientRect());\n const labelStart = this._getStartEnd(labelEl.children[0].getBoundingClientRect());\n let labelWidth = 0;\n\n for (const child of labelEl.children) {\n labelWidth += child.offsetWidth;\n }\n startWidth = labelStart - containerStart - outlineGapPadding;\n gapWidth = labelWidth > 0 ? labelWidth * floatingLabelScale + outlineGapPadding * 2 : 0;\n }\n\n for (let i = 0; i < startEls.length; i++) {\n startEls.item(i).style.width = `${startWidth}px`;\n }\n for (let i = 0; i < gapEls.length; i++) {\n gapEls.item(i).style.width = `${gapWidth}px`;\n }\n\n this._outlineGapCalculationNeeded = false;\n }\n\n /** Gets the start end of the rect considering the current directionality. */\n private _getStartEnd(rect: ClientRect): number {\n return this._dir && this._dir.value === 'rtl' ? rect.right : rect.left;\n }\n\n /** Updates the outline gap the new time the zone stabilizes. */\n private _updateOutlineGapOnStable() {\n // @breaking-change 8.0.0 Remove this check and else block once _ngZone is required.\n if (this._ngZone) {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => this.updateOutlineGap());\n } else {\n Promise.resolve().then(() => this.updateOutlineGap());\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive} from '@angular/core';\n\n\n/** Suffix to be placed at the end of the form field. */\n@Directive({\n selector: '[matSuffix]',\n})\nexport class MatSuffix {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive} from '@angular/core';\n\n\n/** Prefix to be placed the the front of the form field. */\n@Directive({\n selector: '[matPrefix]',\n})\nexport class MatPrefix {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive} from '@angular/core';\n\n\n/**\n * The placeholder text for an `MatFormField`.\n * @deprecated Use `<mat-label>` to specify the label and the `placeholder` attribute to specify the\n * placeholder.\n * @breaking-change 8.0.0\n */\n@Directive({\n selector: 'mat-placeholder'\n})\nexport class MatPlaceholder {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive} from '@angular/core';\n\n\n/** The floating label for a `mat-form-field`. */\n@Directive({\n selector: 'mat-label'\n})\nexport class MatLabel {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, Input} from '@angular/core';\n\n\nlet nextUniqueId = 0;\n\n\n/** Hint text to be shown underneath the form field control. */\n@Directive({\n selector: 'mat-hint',\n host: {\n 'class': 'mat-hint',\n '[class.mat-right]': 'align == \"end\"',\n '[attr.id]': 'id',\n // Remove align attribute to prevent it from interfering with layout.\n '[attr.align]': 'null',\n }\n})\nexport class MatHint {\n /** Whether to align the hint label at the start or end of the line. */\n @Input() align: 'start' | 'end' = 'start';\n\n /** Unique ID for the hint. Used for the aria-describedby on the form field control. */\n @Input() id: string = `mat-hint-${nextUniqueId++}`;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** @docs-private */\nexport function getMatFormFieldPlaceholderConflictError(): Error {\n return Error('Placeholder attribute and child element were both specified.');\n}\n\n/** @docs-private */\nexport function getMatFormFieldDuplicatedHintError(align: string): Error {\n return Error(`A hint was already declared for 'align=\"${align}\"'.`);\n}\n\n/** @docs-private */\nexport function getMatFormFieldMissingControlError(): Error {\n return Error('mat-form-field must contain a MatFormFieldControl.');\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Observable} from 'rxjs';\nimport {NgControl} from '@angular/forms';\n\n\n/** An interface which allows a control to work inside of a `MatFormField`. */\nexport abstract class MatFormFieldControl<T> {\n /** The value of the control. */\n value: T | null;\n\n /**\n * Stream that emits whenever the state of the control changes such that the parent `MatFormField`\n * needs to run change detection.\n */\n readonly stateChanges: Observable<void>;\n\n /** The element ID for this control. */\n readonly id: string;\n\n /** The placeholder for this control. */\n readonly placeholder: string;\n\n /** Gets the NgControl for this control. */\n readonly ngControl: NgControl | null;\n\n /** Whether the control is focused. */\n readonly focused: boolean;\n\n /** Whether the control is empty. */\n readonly empty: boolean;\n\n /** Whether the `MatFormField` label should try to float. */\n readonly shouldLabelFloat: boolean;\n\n /** Whether the control is required. */\n readonly required: boolean;\n\n /** Whether the control is disabled. */\n readonly disabled: boolean;\n\n /** Whether the control is in an error state. */\n readonly errorState: boolean;\n\n /**\n * An optional name for the control type that can be used to distinguish `mat-form-field` elements\n * based on their control type. The form field will add a class,\n * `mat-form-field-type-{{controlType}}` to its root element.\n */\n readonly controlType?: string;\n\n /**\n * Whether the input is currently in an autofilled state. If property is not present on the\n * control it is assumed to be false.\n */\n readonly autofilled?: boolean;\n\n /** Sets the list of element IDs that currently describe this control. */\n abstract setDescribedByIds(ids: string[]): void;\n\n /** Handles a click on the control's container. */\n abstract onContainerClick(event: MouseEvent): void;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the MatFormField.\n * @docs-private\n */\nexport const matFormFieldAnimations: {\n readonly transitionMessages: AnimationTriggerMetadata\n} = {\n /** Animation that transitions the form field's error and hint messages. */\n transitionMessages: trigger('transitionMessages', [\n // TODO(mmalerba): Use angular animations for label animation as well.\n state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n transition('void => enter', [\n style({ opacity: 0, transform: 'translateY(-100%)' }),\n animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\n ]),\n ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, Input} from '@angular/core';\n\n\nlet nextUniqueId = 0;\n\n\n/** Single error message to be shown underneath the form field. */\n@Directive({\n selector: 'mat-error',\n host: {\n 'class': 'mat-error',\n 'role': 'alert',\n '[attr.id]': 'id',\n }\n})\nexport class MatError {\n @Input() id: string = `mat-error-${nextUniqueId++}`;\n}\n"],"names":["nextUniqueId","tslib_1.__extends"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-field.es5.js","sources":["../../../src/lib/form-field/form-field-module.ts","../../../src/lib/form-field/form-field.ts","../../../src/lib/form-field/suffix.ts","../../../src/lib/form-field/prefix.ts","../../../src/lib/form-field/placeholder.ts","../../../src/lib/form-field/label.ts","../../../src/lib/form-field/hint.ts","../../../src/lib/form-field/form-field-errors.ts","../../../src/lib/form-field/form-field-control.ts","../../../src/lib/form-field/form-field-animations.ts","../../../src/lib/form-field/error.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ObserversModule} from '@angular/cdk/observers';\nimport {MatError} from './error';\nimport {MatFormField} from './form-field';\nimport {MatHint} from './hint';\nimport {MatLabel} from './label';\nimport {MatPlaceholder} from './placeholder';\nimport {MatPrefix} from './prefix';\nimport {MatSuffix} from './suffix';\n\n\n@NgModule({\n declarations: [\n MatError,\n MatFormField,\n MatHint,\n MatLabel,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n ],\n imports: [\n CommonModule,\n ObserversModule,\n ],\n exports: [\n MatError,\n MatFormField,\n MatHint,\n MatLabel,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n ],\n})\nexport class MatFormFieldModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n OnDestroy,\n} from '@angular/core';\nimport {\n CanColor, CanColorCtor,\n FloatLabelType,\n LabelOptions,\n MAT_LABEL_GLOBAL_OPTIONS,\n mixinColor,\n} from '@angular/material/core';\nimport {fromEvent, merge, Subject} from 'rxjs';\nimport {startWith, take, takeUntil} from 'rxjs/operators';\nimport {MatError} from './error';\nimport {matFormFieldAnimations} from './form-field-animations';\nimport {MatFormFieldControl} from './form-field-control';\nimport {\n getMatFormFieldDuplicatedHintError,\n getMatFormFieldMissingControlError,\n getMatFormFieldPlaceholderConflictError,\n} from './form-field-errors';\nimport {MatHint} from './hint';\nimport {MatLabel} from './label';\nimport {MatPlaceholder} from './placeholder';\nimport {MatPrefix} from './prefix';\nimport {MatSuffix} from './suffix';\nimport {Platform} from '@angular/cdk/platform';\nimport {NgControl} from '@angular/forms';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\nlet nextUniqueId = 0;\nconst floatingLabelScale = 0.75;\nconst outlineGapPadding = 5;\n\n\n/**\n * Boilerplate for applying mixins to MatFormField.\n * @docs-private\n */\nexport class MatFormFieldBase {\n constructor(public _elementRef: ElementRef) { }\n}\n\n/**\n * Base class to which we're applying the form field mixins.\n * @docs-private\n */\nexport const _MatFormFieldMixinBase: CanColorCtor & typeof MatFormFieldBase =\n mixinColor(MatFormFieldBase, 'primary');\n\n/** Possible appearance styles for the form field. */\nexport type MatFormFieldAppearance = 'legacy' | 'standard' | 'fill' | 'outline';\n\n/**\n * Represents the default options form the form field that can be configured\n * using the `MAT_FORM_FIELD_DEFAULT_OPTIONS` injection token.\n */\nexport interface MatFormFieldDefaultOptions {\n appearance?: MatFormFieldAppearance;\n}\n\n/**\n * Injection token that can be used to configure the\n * default options for all form field within an app.\n */\nexport const MAT_FORM_FIELD_DEFAULT_OPTIONS =\n new InjectionToken<MatFormFieldDefaultOptions>('MAT_FORM_FIELD_DEFAULT_OPTIONS');\n\n\n/** Container for form controls that applies Material Design styling and behavior. */\n@Component({\n moduleId: module.id,\n selector: 'mat-form-field',\n exportAs: 'matFormField',\n templateUrl: 'form-field.html',\n // MatInput is a directive and can't have styles, so we need to include its styles here\n // in form-field-input.css. The MatInput styles are fairly minimal so it shouldn't be a\n // big deal for people who aren't using MatInput.\n styleUrls: [\n 'form-field.css',\n 'form-field-fill.css',\n 'form-field-input.css',\n 'form-field-legacy.css',\n 'form-field-outline.css',\n 'form-field-standard.css',\n ],\n animations: [matFormFieldAnimations.transitionMessages],\n host: {\n 'class': 'mat-form-field',\n '[class.mat-form-field-appearance-standard]': 'appearance == \"standard\"',\n '[class.mat-form-field-appearance-fill]': 'appearance == \"fill\"',\n '[class.mat-form-field-appearance-outline]': 'appearance == \"outline\"',\n '[class.mat-form-field-appearance-legacy]': 'appearance == \"legacy\"',\n '[class.mat-form-field-invalid]': '_control.errorState',\n '[class.mat-form-field-can-float]': '_canLabelFloat',\n '[class.mat-form-field-should-float]': '_shouldLabelFloat()',\n '[class.mat-form-field-has-label]': '_hasFloatingLabel()',\n '[class.mat-form-field-hide-placeholder]': '_hideControlPlaceholder()',\n '[class.mat-form-field-disabled]': '_control.disabled',\n '[class.mat-form-field-autofilled]': '_control.autofilled',\n '[class.mat-focused]': '_control.focused',\n '[class.mat-accent]': 'color == \"accent\"',\n '[class.mat-warn]': 'color == \"warn\"',\n '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n '[class.ng-touched]': '_shouldForward(\"touched\")',\n '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n '[class.ng-valid]': '_shouldForward(\"valid\")',\n '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n '[class.ng-pending]': '_shouldForward(\"pending\")',\n '[class._mat-animation-noopable]': '!_animationsEnabled',\n },\n inputs: ['color'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class MatFormField extends _MatFormFieldMixinBase\n implements AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy, CanColor {\n private _labelOptions: LabelOptions;\n\n /**\n * Whether the outline gap needs to be calculated\n * immediately on the next change detection run.\n */\n private _outlineGapCalculationNeededImmediately = false;\n\n /** Whether the outline gap needs to be calculated next time the zone has stabilized. */\n private _outlineGapCalculationNeededOnStable = false;\n\n private _destroyed = new Subject<void>();\n\n /** The form-field appearance style. */\n @Input()\n get appearance(): MatFormFieldAppearance { return this._appearance; }\n set appearance(value: MatFormFieldAppearance) {\n const oldValue = this._appearance;\n\n this._appearance = value || (this._defaults && this._defaults.appearance) || 'legacy';\n\n if (this._appearance === 'outline' && oldValue !== value) {\n this._updateOutlineGapOnStable();\n }\n }\n _appearance: MatFormFieldAppearance;\n\n /** Whether the required marker should be hidden. */\n @Input()\n get hideRequiredMarker(): boolean { return this._hideRequiredMarker; }\n set hideRequiredMarker(value: boolean) {\n this._hideRequiredMarker = coerceBooleanProperty(value);\n }\n private _hideRequiredMarker: boolean;\n\n /** Override for the logic that disables the label animation in certain cases. */\n private _showAlwaysAnimate = false;\n\n /** Whether the floating label should always float or not. */\n get _shouldAlwaysFloat(): boolean {\n return this.floatLabel === 'always' && !this._showAlwaysAnimate;\n }\n\n /** Whether the label can float or not. */\n get _canLabelFloat(): boolean { return this.floatLabel !== 'never'; }\n\n /** State of the mat-hint and mat-error animations. */\n _subscriptAnimationState: string = '';\n\n /** Text for the form field hint. */\n @Input()\n get hintLabel(): string { return this._hintLabel; }\n set hintLabel(value: string) {\n this._hintLabel = value;\n this._processHints();\n }\n private _hintLabel = '';\n\n // Unique id for the hint label.\n _hintLabelId: string = `mat-hint-${nextUniqueId++}`;\n\n // Unique id for the internal form field label.\n _labelId = `mat-form-field-label-${nextUniqueId++}`;\n\n /**\n * Whether the label should always float, never float or float as the user types.\n *\n * Note: only the legacy appearance supports the `never` option. `never` was originally added as a\n * way to make the floating label emulate the behavior of a standard input placeholder. However\n * the form field now supports both floating labels and placeholders. Therefore in the non-legacy\n * appearances the `never` option has been disabled in favor of just using the placeholder.\n */\n @Input()\n get floatLabel(): FloatLabelType {\n return this.appearance !== 'legacy' && this._floatLabel === 'never' ? 'auto' : this._floatLabel;\n }\n set floatLabel(value: FloatLabelType) {\n if (value !== this._floatLabel) {\n this._floatLabel = value || this._labelOptions.float || 'auto';\n this._changeDetectorRef.markForCheck();\n }\n }\n private _floatLabel: FloatLabelType;\n\n /** Whether the Angular animations are enabled. */\n _animationsEnabled: boolean;\n\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n @ViewChild('underline') underlineRef: ElementRef;\n\n @ViewChild('connectionContainer') _connectionContainerRef: ElementRef;\n @ViewChild('inputContainer') _inputContainerRef: ElementRef;\n @ViewChild('label') private _label: ElementRef;\n @ContentChild(MatFormFieldControl) _control: MatFormFieldControl<any>;\n @ContentChild(MatPlaceholder) _placeholderChild: MatPlaceholder;\n @ContentChild(MatLabel) _labelChild: MatLabel;\n @ContentChildren(MatError) _errorChildren: QueryList<MatError>;\n @ContentChildren(MatHint) _hintChildren: QueryList<MatHint>;\n @ContentChildren(MatPrefix) _prefixChildren: QueryList<MatPrefix>;\n @ContentChildren(MatSuffix) _suffixChildren: QueryList<MatSuffix>;\n\n constructor(\n public _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MAT_LABEL_GLOBAL_OPTIONS) labelOptions: LabelOptions,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(MAT_FORM_FIELD_DEFAULT_OPTIONS)\n private _defaults: MatFormFieldDefaultOptions,\n // @breaking-change 8.0.0 _platform, _ngZone and _animationMode to be made required.\n private _platform?: Platform,\n private _ngZone?: NgZone,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) _animationMode?: string) {\n super(_elementRef);\n\n this._labelOptions = labelOptions ? labelOptions : {};\n this.floatLabel = this._labelOptions.float || 'auto';\n this._animationsEnabled = _animationMode !== 'NoopAnimations';\n\n // Set the default through here so we invoke the setter on the first run.\n this.appearance = (_defaults && _defaults.appearance) ? _defaults.appearance : 'legacy';\n }\n\n /**\n * Gets an ElementRef for the element that a overlay attached to the form-field should be\n * positioned relative to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._connectionContainerRef || this._elementRef;\n }\n\n ngAfterContentInit() {\n this._validateControlChild();\n\n const control = this._control;\n\n if (control.controlType) {\n this._elementRef.nativeElement.classList.add(`mat-form-field-type-${control.controlType}`);\n }\n\n // Subscribe to changes in the child control state in order to update the form field UI.\n control.stateChanges.pipe(startWith<void>(null!)).subscribe(() => {\n this._validatePlaceholders();\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n\n // Run change detection if the value changes.\n if (control.ngControl && control.ngControl.valueChanges) {\n control.ngControl.valueChanges\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n\n // @breaking-change 7.0.0 Remove this check once _ngZone is required. Also reconsider\n // whether the `ngAfterContentChecked` below is still necessary.\n if (this._ngZone) {\n this._ngZone.onStable.asObservable().pipe(takeUntil(this._destroyed)).subscribe(() => {\n if (this._outlineGapCalculationNeededOnStable) {\n this.updateOutlineGap();\n }\n });\n }\n\n // Run change detection and update the outline if the suffix or prefix changes.\n merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {\n this._updateOutlineGapOnStable();\n this._changeDetectorRef.markForCheck();\n });\n\n // Re-validate when the number of hints changes.\n this._hintChildren.changes.pipe(startWith(null)).subscribe(() => {\n this._processHints();\n this._changeDetectorRef.markForCheck();\n });\n\n // Update the aria-described by when the number of errors changes.\n this._errorChildren.changes.pipe(startWith(null)).subscribe(() => {\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n\n if (this._dir) {\n this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => this.updateOutlineGap());\n }\n }\n\n ngAfterContentChecked() {\n this._validateControlChild();\n if (this._outlineGapCalculationNeededImmediately) {\n this.updateOutlineGap();\n }\n }\n\n ngAfterViewInit() {\n // Avoid animations on load.\n this._subscriptAnimationState = 'enter';\n this._changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Determines whether a class from the NgControl should be forwarded to the host element. */\n _shouldForward(prop: keyof NgControl): boolean {\n const ngControl = this._control ? this._control.ngControl : null;\n return ngControl && ngControl[prop];\n }\n\n _hasPlaceholder() {\n return !!(this._control && this._control.placeholder || this._placeholderChild);\n }\n\n _hasLabel() {\n return !!this._labelChild;\n }\n\n _shouldLabelFloat() {\n return this._canLabelFloat && (this._control.shouldLabelFloat || this._shouldAlwaysFloat);\n }\n\n _hideControlPlaceholder() {\n // In the legacy appearance the placeholder is promoted to a label if no label is given.\n return this.appearance === 'legacy' && !this._hasLabel() ||\n this._hasLabel() && !this._shouldLabelFloat();\n }\n\n _hasFloatingLabel() {\n // In the legacy appearance the placeholder is promoted to a label if no label is given.\n return this._hasLabel() || this.appearance === 'legacy' && this._hasPlaceholder();\n }\n\n /** Determines whether to display hints or errors. */\n _getDisplayedMessages(): 'error' | 'hint' {\n return (this._errorChildren && this._errorChildren.length > 0 &&\n this._control.errorState) ? 'error' : 'hint';\n }\n\n /** Animates the placeholder up and locks it in position. */\n _animateAndLockLabel(): void {\n if (this._hasFloatingLabel() && this._canLabelFloat) {\n // If animations are disabled, we shouldn't go in here,\n // because the `transitionend` will never fire.\n if (this._animationsEnabled) {\n this._showAlwaysAnimate = true;\n\n fromEvent(this._label.nativeElement, 'transitionend').pipe(take(1)).subscribe(() => {\n this._showAlwaysAnimate = false;\n });\n }\n\n this.floatLabel = 'always';\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Ensure that there is only one placeholder (either `placeholder` attribute on the child control\n * or child element with the `mat-placeholder` directive).\n */\n private _validatePlaceholders() {\n if (this._control.placeholder && this._placeholderChild) {\n throw getMatFormFieldPlaceholderConflictError();\n }\n }\n\n /** Does any extra processing that is required when handling the hints. */\n private _processHints() {\n this._validateHints();\n this._syncDescribedByIds();\n }\n\n /**\n * Ensure that there is a maximum of one of each `<mat-hint>` alignment specified, with the\n * attribute being considered as `align=\"start\"`.\n */\n private _validateHints() {\n if (this._hintChildren) {\n let startHint: MatHint;\n let endHint: MatHint;\n this._hintChildren.forEach((hint: MatHint) => {\n if (hint.align === 'start') {\n if (startHint || this.hintLabel) {\n throw getMatFormFieldDuplicatedHintError('start');\n }\n startHint = hint;\n } else if (hint.align === 'end') {\n if (endHint) {\n throw getMatFormFieldDuplicatedHintError('end');\n }\n endHint = hint;\n }\n });\n }\n }\n\n /**\n * Sets the list of element IDs that describe the child control. This allows the control to update\n * its `aria-describedby` attribute accordingly.\n */\n private _syncDescribedByIds() {\n if (this._control) {\n let ids: string[] = [];\n\n if (this._getDisplayedMessages() === 'hint') {\n const startHint = this._hintChildren ?\n this._hintChildren.find(hint => hint.align === 'start') : null;\n const endHint = this._hintChildren ?\n this._hintChildren.find(hint => hint.align === 'end') : null;\n\n if (startHint) {\n ids.push(startHint.id);\n } else if (this._hintLabel) {\n ids.push(this._hintLabelId);\n }\n\n if (endHint) {\n ids.push(endHint.id);\n }\n } else if (this._errorChildren) {\n ids = this._errorChildren.map(error => error.id);\n }\n\n this._control.setDescribedByIds(ids);\n }\n }\n\n /** Throws an error if the form field's control is missing. */\n protected _validateControlChild() {\n if (!this._control) {\n throw getMatFormFieldMissingControlError();\n }\n }\n\n /**\n * Updates the width and position of the gap in the outline. Only relevant for the outline\n * appearance.\n */\n updateOutlineGap() {\n const labelEl = this._label ? this._label.nativeElement : null;\n\n if (this.appearance !== 'outline' || !labelEl || !labelEl.children.length ||\n !labelEl.textContent.trim()) {\n return;\n }\n\n if (this._platform && !this._platform.isBrowser) {\n // getBoundingClientRect isn't available on the server.\n return;\n }\n // If the element is not present in the DOM, the outline gap will need to be calculated\n // the next time it is checked and in the DOM.\n if (!document.documentElement!.contains(this._elementRef.nativeElement)) {\n this._outlineGapCalculationNeededImmediately = true;\n return;\n }\n\n let startWidth = 0;\n let gapWidth = 0;\n\n const container = this._connectionContainerRef.nativeElement;\n const startEls = container.querySelectorAll('.mat-form-field-outline-start');\n const gapEls = container.querySelectorAll('.mat-form-field-outline-gap');\n\n if (this._label && this._label.nativeElement.children.length) {\n const containerRect = container.getBoundingClientRect();\n\n // If the container's width and height are zero, it means that the element is\n // invisible and we can't calculate the outline gap. Mark the element as needing\n // to be checked the next time the zone stabilizes. We can't do this immediately\n // on the next change detection, because even if the element becomes visible,\n // the `ClientRect` won't be reclaculated immediately. We reset the\n // `_outlineGapCalculationNeededImmediately` flag some we don't run the checks twice.\n if (containerRect.width === 0 && containerRect.height === 0) {\n this._outlineGapCalculationNeededOnStable = true;\n this._outlineGapCalculationNeededImmediately = false;\n return;\n }\n\n const containerStart = this._getStartEnd(containerRect);\n const labelStart = this._getStartEnd(labelEl.children[0].getBoundingClientRect());\n let labelWidth = 0;\n\n for (const child of labelEl.children) {\n labelWidth += child.offsetWidth;\n }\n startWidth = labelStart - containerStart - outlineGapPadding;\n gapWidth = labelWidth > 0 ? labelWidth * floatingLabelScale + outlineGapPadding * 2 : 0;\n }\n\n for (let i = 0; i < startEls.length; i++) {\n startEls.item(i).style.width = `${startWidth}px`;\n }\n for (let i = 0; i < gapEls.length; i++) {\n gapEls.item(i).style.width = `${gapWidth}px`;\n }\n\n this._outlineGapCalculationNeededOnStable =\n this._outlineGapCalculationNeededImmediately = false;\n }\n\n /** Gets the start end of the rect considering the current directionality. */\n private _getStartEnd(rect: ClientRect): number {\n return this._dir && this._dir.value === 'rtl' ? rect.right : rect.left;\n }\n\n /**\n * Updates the outline gap the new time the zone stabilizes.\n * @breaking-change 7.0.0 Remove this method and only set the property once `_ngZone` is required.\n */\n private _updateOutlineGapOnStable() {\n // @breaking-change 8.0.0 Remove this check and else block once _ngZone is required.\n if (this._ngZone) {\n this._outlineGapCalculationNeededOnStable = true;\n } else {\n Promise.resolve().then(() => this.updateOutlineGap());\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive} from '@angular/core';\n\n\n/** Suffix to be placed at the end of the form field. */\n@Directive({\n selector: '[matSuffix]',\n})\nexport class MatSuffix {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive} from '@angular/core';\n\n\n/** Prefix to be placed in front of the form field. */\n@Directive({\n selector: '[matPrefix]',\n})\nexport class MatPrefix {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive} from '@angular/core';\n\n\n/**\n * The placeholder text for an `MatFormField`.\n * @deprecated Use `<mat-label>` to specify the label and the `placeholder` attribute to specify the\n * placeholder.\n * @breaking-change 8.0.0\n */\n@Directive({\n selector: 'mat-placeholder'\n})\nexport class MatPlaceholder {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive} from '@angular/core';\n\n\n/** The floating label for a `mat-form-field`. */\n@Directive({\n selector: 'mat-label'\n})\nexport class MatLabel {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, Input} from '@angular/core';\n\n\nlet nextUniqueId = 0;\n\n\n/** Hint text to be shown underneath the form field control. */\n@Directive({\n selector: 'mat-hint',\n host: {\n 'class': 'mat-hint',\n '[class.mat-right]': 'align == \"end\"',\n '[attr.id]': 'id',\n // Remove align attribute to prevent it from interfering with layout.\n '[attr.align]': 'null',\n }\n})\nexport class MatHint {\n /** Whether to align the hint label at the start or end of the line. */\n @Input() align: 'start' | 'end' = 'start';\n\n /** Unique ID for the hint. Used for the aria-describedby on the form field control. */\n @Input() id: string = `mat-hint-${nextUniqueId++}`;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** @docs-private */\nexport function getMatFormFieldPlaceholderConflictError(): Error {\n return Error('Placeholder attribute and child element were both specified.');\n}\n\n/** @docs-private */\nexport function getMatFormFieldDuplicatedHintError(align: string): Error {\n return Error(`A hint was already declared for 'align=\"${align}\"'.`);\n}\n\n/** @docs-private */\nexport function getMatFormFieldMissingControlError(): Error {\n return Error('mat-form-field must contain a MatFormFieldControl.');\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Observable} from 'rxjs';\nimport {NgControl} from '@angular/forms';\n\n\n/** An interface which allows a control to work inside of a `MatFormField`. */\nexport abstract class MatFormFieldControl<T> {\n /** The value of the control. */\n value: T | null;\n\n /**\n * Stream that emits whenever the state of the control changes such that the parent `MatFormField`\n * needs to run change detection.\n */\n readonly stateChanges: Observable<void>;\n\n /** The element ID for this control. */\n readonly id: string;\n\n /** The placeholder for this control. */\n readonly placeholder: string;\n\n /** Gets the NgControl for this control. */\n readonly ngControl: NgControl | null;\n\n /** Whether the control is focused. */\n readonly focused: boolean;\n\n /** Whether the control is empty. */\n readonly empty: boolean;\n\n /** Whether the `MatFormField` label should try to float. */\n readonly shouldLabelFloat: boolean;\n\n /** Whether the control is required. */\n readonly required: boolean;\n\n /** Whether the control is disabled. */\n readonly disabled: boolean;\n\n /** Whether the control is in an error state. */\n readonly errorState: boolean;\n\n /**\n * An optional name for the control type that can be used to distinguish `mat-form-field` elements\n * based on their control type. The form field will add a class,\n * `mat-form-field-type-{{controlType}}` to its root element.\n */\n readonly controlType?: string;\n\n /**\n * Whether the input is currently in an autofilled state. If property is not present on the\n * control it is assumed to be false.\n */\n readonly autofilled?: boolean;\n\n /** Sets the list of element IDs that currently describe this control. */\n abstract setDescribedByIds(ids: string[]): void;\n\n /** Handles a click on the control's container. */\n abstract onContainerClick(event: MouseEvent): void;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the MatFormField.\n * @docs-private\n */\nexport const matFormFieldAnimations: {\n readonly transitionMessages: AnimationTriggerMetadata\n} = {\n /** Animation that transitions the form field's error and hint messages. */\n transitionMessages: trigger('transitionMessages', [\n // TODO(mmalerba): Use angular animations for label animation as well.\n state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n transition('void => enter', [\n style({ opacity: 0, transform: 'translateY(-100%)' }),\n animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\n ]),\n ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, Input} from '@angular/core';\n\n\nlet nextUniqueId = 0;\n\n\n/** Single error message to be shown underneath the form field. */\n@Directive({\n selector: 'mat-error',\n host: {\n 'class': 'mat-error',\n 'role': 'alert',\n '[attr.id]': 'id',\n }\n})\nexport class MatError {\n @Input() id: string = `mat-error-${nextUniqueId++}`;\n}\n"],"names":["nextUniqueId","tslib_1.__extends"],"mappings":"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"}
|
package/esm5/grid-list.es5.js
CHANGED
|
@@ -926,14 +926,16 @@ FitTileStyler = /** @class */ (function (_super) {
|
|
|
926
926
|
* @param {?} exp
|
|
927
927
|
* @return {?}
|
|
928
928
|
*/
|
|
929
|
-
function calc(exp) {
|
|
929
|
+
function calc(exp) {
|
|
930
|
+
return "calc(" + exp + ")";
|
|
931
|
+
}
|
|
930
932
|
/**
|
|
931
933
|
* Appends pixels to a CSS string if no units are given.
|
|
932
934
|
* @param {?} value
|
|
933
935
|
* @return {?}
|
|
934
936
|
*/
|
|
935
937
|
function normalizeUnits(value) {
|
|
936
|
-
return
|
|
938
|
+
return value.match(/([A-Za-z%]+)$/) ? value : value + "px";
|
|
937
939
|
}
|
|
938
940
|
|
|
939
941
|
/**
|
|
@@ -1215,5 +1217,5 @@ var MatGridListModule = /** @class */ (function () {
|
|
|
1215
1217
|
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
1216
1218
|
*/
|
|
1217
1219
|
|
|
1218
|
-
export { MatGridListModule, MatGridList, MatGridTile, MatGridTileText, MatGridAvatarCssMatStyler, MatGridTileHeaderCssMatStyler, MatGridTileFooterCssMatStyler, MAT_GRID_LIST as ɵ
|
|
1220
|
+
export { MatGridListModule, MatGridList, MatGridTile, MatGridTileText, MatGridAvatarCssMatStyler, MatGridTileHeaderCssMatStyler, MatGridTileFooterCssMatStyler, MAT_GRID_LIST as ɵa3 };
|
|
1219
1221
|
//# sourceMappingURL=grid-list.es5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid-list.es5.js","sources":["../../../src/lib/grid-list/grid-list-module.ts","../../../src/lib/grid-list/grid-list.ts","../../../src/lib/grid-list/tile-styler.ts","../../../src/lib/grid-list/tile-coordinator.ts","../../../src/lib/grid-list/grid-tile.ts","../../../src/lib/grid-list/grid-list-base.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {MatLineModule, MatCommonModule} from '@angular/material/core';\nimport {\n MatGridTile, MatGridTileText, MatGridTileFooterCssMatStyler,\n MatGridTileHeaderCssMatStyler, MatGridAvatarCssMatStyler\n} from './grid-tile';\nimport {MatGridList} from './grid-list';\n\n\n@NgModule({\n imports: [MatLineModule, MatCommonModule],\n exports: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatCommonModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n declarations: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n})\nexport class MatGridListModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Component,\n ViewEncapsulation,\n AfterContentChecked,\n OnInit,\n Input,\n ContentChildren,\n QueryList,\n ElementRef,\n Optional,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport {MatGridTile} from './grid-tile';\nimport {TileCoordinator} from './tile-coordinator';\nimport {TileStyler, FitTileStyler, RatioTileStyler, FixedTileStyler} from './tile-styler';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {MAT_GRID_LIST, MatGridListBase} from './grid-list-base';\n\n\n// TODO(kara): Conditional (responsive) column count / row size.\n// TODO(kara): Re-layout on window resize / media change (debounced).\n// TODO(kara): gridTileHeader and gridTileFooter.\n\nconst MAT_FIT_MODE = 'fit';\n\n@Component({\n moduleId: module.id,\n selector: 'mat-grid-list',\n exportAs: 'matGridList',\n templateUrl: 'grid-list.html',\n styleUrls: ['grid-list.css'],\n host: {\n 'class': 'mat-grid-list',\n },\n providers: [{\n provide: MAT_GRID_LIST,\n useExisting: MatGridList\n }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatGridList implements MatGridListBase, OnInit, AfterContentChecked {\n /** Number of columns being rendered. */\n private _cols: number;\n\n /** Used for determiningthe position of each tile in the grid. */\n private _tileCoordinator: TileCoordinator;\n\n /**\n * Row height value passed in by user. This can be one of three types:\n * - Number value (ex: \"100px\"): sets a fixed row height to that value\n * - Ratio value (ex: \"4:3\"): sets the row height based on width:height ratio\n * - \"Fit\" mode (ex: \"fit\"): sets the row height to total height divided by number of rows\n */\n private _rowHeight: string;\n\n /** The amount of space between tiles. This will be something like '5px' or '2em'. */\n private _gutter: string = '1px';\n\n /** Sets position and size styles for a tile */\n private _tileStyler: TileStyler;\n\n /** Query list of tiles that are being rendered. */\n @ContentChildren(MatGridTile, {descendants: true}) _tiles: QueryList<MatGridTile>;\n\n constructor(private _element: ElementRef<HTMLElement>,\n @Optional() private _dir: Directionality) {}\n\n /** Amount of columns in the grid list. */\n @Input()\n get cols(): number { return this._cols; }\n set cols(value: number) {\n this._cols = Math.max(1, Math.round(coerceNumberProperty(value)));\n }\n\n /** Size of the grid list's gutter in pixels. */\n @Input()\n get gutterSize(): string { return this._gutter; }\n set gutterSize(value: string) { this._gutter = `${value == null ? '' : value}`; }\n\n /** Set internal representation of row height from the user-provided value. */\n @Input()\n get rowHeight(): string | number { return this._rowHeight; }\n set rowHeight(value: string | number) {\n const newValue = `${value == null ? '' : value}`;\n\n if (newValue !== this._rowHeight) {\n this._rowHeight = newValue;\n this._setTileStyler(this._rowHeight);\n }\n }\n\n ngOnInit() {\n this._checkCols();\n this._checkRowHeight();\n }\n\n /**\n * The layout calculation is fairly cheap if nothing changes, so there's little cost\n * to run it frequently.\n */\n ngAfterContentChecked() {\n this._layoutTiles();\n }\n\n /** Throw a friendly error if cols property is missing */\n private _checkCols() {\n if (!this.cols) {\n throw Error(`mat-grid-list: must pass in number of columns. ` +\n `Example: <mat-grid-list cols=\"3\">`);\n }\n }\n\n /** Default to equal width:height if rowHeight property is missing */\n private _checkRowHeight(): void {\n if (!this._rowHeight) {\n this._setTileStyler('1:1');\n }\n }\n\n /** Creates correct Tile Styler subtype based on rowHeight passed in by user */\n private _setTileStyler(rowHeight: string): void {\n if (this._tileStyler) {\n this._tileStyler.reset(this);\n }\n\n if (rowHeight === MAT_FIT_MODE) {\n this._tileStyler = new FitTileStyler();\n } else if (rowHeight && rowHeight.indexOf(':') > -1) {\n this._tileStyler = new RatioTileStyler(rowHeight);\n } else {\n this._tileStyler = new FixedTileStyler(rowHeight);\n }\n }\n\n /** Computes and applies the size and position for all children grid tiles. */\n private _layoutTiles(): void {\n if (!this._tileCoordinator) {\n this._tileCoordinator = new TileCoordinator();\n }\n\n\n const tracker = this._tileCoordinator;\n const tiles = this._tiles.filter(tile => !tile._gridList || tile._gridList === this);\n const direction = this._dir ? this._dir.value : 'ltr';\n\n this._tileCoordinator.update(this.cols, tiles);\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n\n tiles.forEach((tile, index) => {\n const pos = tracker.positions[index];\n this._tileStyler.setStyle(tile, pos.row, pos.col);\n });\n\n this._setListStyle(this._tileStyler.getComputedHeight());\n }\n\n /** Sets style on the main grid-list element, given the style name and value. */\n _setListStyle(style: [string, string | null] | null): void {\n if (style) {\n (this._element.nativeElement.style as any)[style[0]] = style[1];\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {MatGridList} from './grid-list';\nimport {MatGridTile} from './grid-tile';\nimport {TileCoordinator} from './tile-coordinator';\n\n/**\n * RegExp that can be used to check whether a value will\n * be allowed inside a CSS `calc()` expression.\n */\nconst cssCalcAllowedValue = /^-?\\d+((\\.\\d+)?[A-Za-z%$]?)+$/;\n\n/**\n * Sets the style properties for an individual tile, given the position calculated by the\n * Tile Coordinator.\n * @docs-private\n */\nexport abstract class TileStyler {\n _gutterSize: string;\n _rows: number = 0;\n _rowspan: number = 0;\n _cols: number;\n _direction: string;\n\n /**\n * Adds grid-list layout info once it is available. Cannot be processed in the constructor\n * because these properties haven't been calculated by that point.\n *\n * @param gutterSize Size of the grid's gutter.\n * @param tracker Instance of the TileCoordinator.\n * @param cols Amount of columns in the grid.\n * @param direction Layout direction of the grid.\n */\n init(gutterSize: string, tracker: TileCoordinator, cols: number, direction: string): void {\n this._gutterSize = normalizeUnits(gutterSize);\n this._rows = tracker.rowCount;\n this._rowspan = tracker.rowspan;\n this._cols = cols;\n this._direction = direction;\n }\n\n /**\n * Computes the amount of space a single 1x1 tile would take up (width or height).\n * Used as a basis for other calculations.\n * @param sizePercent Percent of the total grid-list space that one 1x1 tile would take up.\n * @param gutterFraction Fraction of the gutter size taken up by one 1x1 tile.\n * @return The size of a 1x1 tile as an expression that can be evaluated via CSS calc().\n */\n getBaseTileSize(sizePercent: number, gutterFraction: number): string {\n // Take the base size percent (as would be if evenly dividing the size between cells),\n // and then subtracting the size of one gutter. However, since there are no gutters on the\n // edges, each tile only uses a fraction (gutterShare = numGutters / numCells) of the gutter\n // size. (Imagine having one gutter per tile, and then breaking up the extra gutter on the\n // edge evenly among the cells).\n return `(${sizePercent}% - (${this._gutterSize} * ${gutterFraction}))`;\n }\n\n\n /**\n * Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.\n * @param offset Number of tiles that have already been rendered in the row/column.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @return Position of the tile as a CSS calc() expression.\n */\n getTilePosition(baseSize: string, offset: number): string {\n // The position comes the size of a 1x1 tile plus gutter for each previous tile in the\n // row/column (offset).\n return offset === 0 ? '0' : calc(`(${baseSize} + ${this._gutterSize}) * ${offset}`);\n }\n\n\n /**\n * Gets the actual size of a tile, e.g., width or height, taking rowspan or colspan into account.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param span The tile's rowspan or colspan.\n * @return Size of the tile as a CSS calc() expression.\n */\n getTileSize(baseSize: string, span: number): string {\n return `(${baseSize} * ${span}) + (${span - 1} * ${this._gutterSize})`;\n }\n\n\n /**\n * Sets the style properties to be applied to a tile for the given row and column index.\n * @param tile Tile to which to apply the styling.\n * @param rowIndex Index of the tile's row.\n * @param colIndex Index of the tile's column.\n */\n setStyle(tile: MatGridTile, rowIndex: number, colIndex: number): void {\n // Percent of the available horizontal space that one column takes up.\n let percentWidthPerTile = 100 / this._cols;\n\n // Fraction of the vertical gutter size that each column takes up.\n // For example, if there are 5 columns, each column uses 4/5 = 0.8 times the gutter width.\n let gutterWidthFractionPerTile = (this._cols - 1) / this._cols;\n\n this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n }\n\n /** Sets the horizontal placement of the tile in the list. */\n setColStyles(tile: MatGridTile, colIndex: number, percentWidth: number,\n gutterWidth: number) {\n // Base horizontal size of a column.\n let baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);\n\n // The width and horizontal position of each tile is always calculated the same way, but the\n // height and vertical position depends on the rowMode.\n let side = this._direction === 'rtl' ? 'right' : 'left';\n tile._setStyle(side, this.getTilePosition(baseTileWidth, colIndex));\n tile._setStyle('width', calc(this.getTileSize(baseTileWidth, tile.colspan)));\n }\n\n /**\n * Calculates the total size taken up by gutters across one axis of a list.\n */\n getGutterSpan(): string {\n return `${this._gutterSize} * (${this._rowspan} - 1)`;\n }\n\n /**\n * Calculates the total size taken up by tiles across one axis of a list.\n * @param tileHeight Height of the tile.\n */\n getTileSpan(tileHeight: string): string {\n return `${this._rowspan} * ${this.getTileSize(tileHeight, 1)}`;\n }\n\n /**\n * Sets the vertical placement of the tile in the list.\n * This method will be implemented by each type of TileStyler.\n * @docs-private\n */\n abstract setRowStyles(tile: MatGridTile, rowIndex: number, percentWidth: number,\n gutterWidth: number): void;\n\n /**\n * Calculates the computed height and returns the correct style property to set.\n * This method can be implemented by each type of TileStyler.\n * @docs-private\n */\n getComputedHeight(): [string, string] | null { return null; }\n\n /**\n * Called when the tile styler is swapped out with a different one. To be used for cleanup.\n * @param list Grid list that the styler was attached to.\n * @docs-private\n */\n abstract reset(list: MatGridList): void;\n}\n\n\n/**\n * This type of styler is instantiated when the user passes in a fixed row height.\n * Example `<mat-grid-list cols=\"3\" rowHeight=\"100px\">`\n * @docs-private\n */\nexport class FixedTileStyler extends TileStyler {\n\n constructor(public fixedRowHeight: string) { super(); }\n\n init(gutterSize: string, tracker: TileCoordinator, cols: number, direction: string) {\n super.init(gutterSize, tracker, cols, direction);\n this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);\n\n if (!cssCalcAllowedValue.test(this.fixedRowHeight)) {\n throw Error(`Invalid value \"${this.fixedRowHeight}\" set as rowHeight.`);\n }\n }\n\n setRowStyles(tile: MatGridTile, rowIndex: number): void {\n tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));\n }\n\n getComputedHeight(): [string, string] {\n return [\n 'height', calc(`${this.getTileSpan(this.fixedRowHeight)} + ${this.getGutterSpan()}`)\n ];\n }\n\n reset(list: MatGridList) {\n list._setListStyle(['height', null]);\n\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n\n\n/**\n * This type of styler is instantiated when the user passes in a width:height ratio\n * for the row height. Example `<mat-grid-list cols=\"3\" rowHeight=\"3:1\">`\n * @docs-private\n */\nexport class RatioTileStyler extends TileStyler {\n\n /** Ratio width:height given by user to determine row height. */\n rowHeightRatio: number;\n baseTileHeight: string;\n\n constructor(value: string) {\n super();\n this._parseRatio(value);\n }\n\n setRowStyles(tile: MatGridTile, rowIndex: number, percentWidth: number,\n gutterWidth: number): void {\n let percentHeightPerTile = percentWidth / this.rowHeightRatio;\n this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);\n\n // Use padding-top and margin-top to maintain the given aspect ratio, as\n // a percentage-based value for these properties is applied versus the *width* of the\n // containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties\n tile._setStyle('marginTop', this.getTilePosition(this.baseTileHeight, rowIndex));\n tile._setStyle('paddingTop', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));\n }\n\n getComputedHeight(): [string, string] {\n return [\n 'paddingBottom', calc(`${this.getTileSpan(this.baseTileHeight)} + ${this.getGutterSpan()}`)\n ];\n }\n\n reset(list: MatGridList) {\n list._setListStyle(['paddingBottom', null]);\n\n list._tiles.forEach(tile => {\n tile._setStyle('marginTop', null);\n tile._setStyle('paddingTop', null);\n });\n }\n\n private _parseRatio(value: string): void {\n const ratioParts = value.split(':');\n\n if (ratioParts.length !== 2) {\n throw Error(`mat-grid-list: invalid ratio given for row-height: \"${value}\"`);\n }\n\n this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);\n }\n}\n\n/**\n * This type of styler is instantiated when the user selects a \"fit\" row height mode.\n * In other words, the row height will reflect the total height of the container divided\n * by the number of rows. Example `<mat-grid-list cols=\"3\" rowHeight=\"fit\">`\n *\n * @docs-private\n */\nexport class FitTileStyler extends TileStyler {\n setRowStyles(tile: MatGridTile, rowIndex: number): void {\n // Percent of the available vertical space that one row takes up.\n let percentHeightPerTile = 100 / this._rowspan;\n\n // Fraction of the horizontal gutter size that each column takes up.\n let gutterHeightPerTile = (this._rows - 1) / this._rows;\n\n // Base vertical size of a column.\n let baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);\n\n tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));\n }\n\n reset(list: MatGridList) {\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n\n\n/** Wraps a CSS string in a calc function */\nfunction calc(exp: string): string { return `calc(${exp})`; }\n\n\n/** Appends pixels to a CSS string if no units are given. */\nfunction normalizeUnits(value: string): string {\n return (value.match(/px|em|rem/)) ? value : value + 'px';\n}\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {MatGridTile} from './grid-tile';\n\n/**\n * Class for determining, from a list of tiles, the (row, col) position of each of those tiles\n * in the grid. This is necessary (rather than just rendering the tiles in normal document flow)\n * because the tiles can have a rowspan.\n *\n * The positioning algorithm greedily places each tile as soon as it encounters a gap in the grid\n * large enough to accommodate it so that the tiles still render in the same order in which they\n * are given.\n *\n * The basis of the algorithm is the use of an array to track the already placed tiles. Each\n * element of the array corresponds to a column, and the value indicates how many cells in that\n * column are already occupied; zero indicates an empty cell. Moving \"down\" to the next row\n * decrements each value in the tracking array (indicating that the column is one cell closer to\n * being free).\n *\n * @docs-private\n */\nexport class TileCoordinator {\n /** Tracking array (see class description). */\n tracker: number[];\n\n /** Index at which the search for the next gap will start. */\n columnIndex: number = 0;\n\n /** The current row index. */\n rowIndex: number = 0;\n\n /** Gets the total number of rows occupied by tiles */\n get rowCount(): number { return this.rowIndex + 1; }\n\n /**\n * Gets the total span of rows occupied by tiles.\n * Ex: A list with 1 row that contains a tile with rowspan 2 will have a total rowspan of 2.\n */\n get rowspan() {\n const lastRowMax = Math.max(...this.tracker);\n // if any of the tiles has a rowspan that pushes it beyond the total row count,\n // add the difference to the rowcount\n return lastRowMax > 1 ? this.rowCount + lastRowMax - 1 : this.rowCount;\n }\n\n /** The computed (row, col) position of each tile (the output). */\n positions: TilePosition[];\n\n /**\n * Updates the tile positions.\n * @param numColumns Amount of columns in the grid.\n */\n update(numColumns: number, tiles: MatGridTile[]) {\n this.columnIndex = 0;\n this.rowIndex = 0;\n\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n this.positions = tiles.map(tile => this._trackTile(tile));\n }\n\n /** Calculates the row and col position of a tile. */\n private _trackTile(tile: MatGridTile): TilePosition {\n // Find a gap large enough for this tile.\n const gapStartIndex = this._findMatchingGap(tile.colspan);\n\n // Place tile in the resulting gap.\n this._markTilePosition(gapStartIndex, tile);\n\n // The next time we look for a gap, the search will start at columnIndex, which should be\n // immediately after the tile that has just been placed.\n this.columnIndex = gapStartIndex + tile.colspan;\n\n return new TilePosition(this.rowIndex, gapStartIndex);\n }\n\n /** Finds the next available space large enough to fit the tile. */\n private _findMatchingGap(tileCols: number): number {\n if (tileCols > this.tracker.length) {\n throw Error(`mat-grid-list: tile with colspan ${tileCols} is wider than ` +\n `grid with cols=\"${this.tracker.length}\".`);\n }\n\n // Start index is inclusive, end index is exclusive.\n let gapStartIndex = -1;\n let gapEndIndex = -1;\n\n // Look for a gap large enough to fit the given tile. Empty spaces are marked with a zero.\n do {\n // If we've reached the end of the row, go to the next row.\n if (this.columnIndex + tileCols > this.tracker.length) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n\n // If there are no more empty spaces in this row at all, move on to the next row.\n if (gapStartIndex == -1) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n\n // If a gap large enough isn't found, we want to start looking immediately after the current\n // gap on the next iteration.\n this.columnIndex = gapStartIndex + 1;\n\n // Continue iterating until we find a gap wide enough for this tile. Since gapEndIndex is\n // exclusive, gapEndIndex is 0 means we didn't find a gap and should continue.\n } while ((gapEndIndex - gapStartIndex < tileCols) || (gapEndIndex == 0));\n\n // If we still didn't manage to find a gap, ensure that the index is\n // at least zero so the tile doesn't get pulled out of the grid.\n return Math.max(gapStartIndex, 0);\n }\n\n /** Move \"down\" to the next row. */\n private _nextRow(): void {\n this.columnIndex = 0;\n this.rowIndex++;\n\n // Decrement all spaces by one to reflect moving down one row.\n for (let i = 0; i < this.tracker.length; i++) {\n this.tracker[i] = Math.max(0, this.tracker[i] - 1);\n }\n }\n\n /**\n * Finds the end index (exclusive) of a gap given the index from which to start looking.\n * The gap ends when a non-zero value is found.\n */\n private _findGapEndIndex(gapStartIndex: number): number {\n for (let i = gapStartIndex + 1; i < this.tracker.length; i++) {\n if (this.tracker[i] != 0) {\n return i;\n }\n }\n\n // The gap ends with the end of the row.\n return this.tracker.length;\n }\n\n /** Update the tile tracker to account for the given tile in the given space. */\n private _markTilePosition(start: number, tile: MatGridTile): void {\n for (let i = 0; i < tile.colspan; i++) {\n this.tracker[start + i] = tile.rowspan;\n }\n }\n}\n\n/**\n * Simple data structure for tile position (row, col).\n * @docs-private\n */\nexport class TilePosition {\n constructor(public row: number, public col: number) {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Component,\n ViewEncapsulation,\n ElementRef,\n Input,\n Optional,\n ContentChildren,\n QueryList,\n AfterContentInit,\n Directive,\n ChangeDetectionStrategy,\n Inject,\n} from '@angular/core';\nimport {MatLine, setLines} from '@angular/material/core';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {MAT_GRID_LIST, MatGridListBase} from './grid-list-base';\n\n@Component({\n moduleId: module.id,\n selector: 'mat-grid-tile',\n exportAs: 'matGridTile',\n host: {\n 'class': 'mat-grid-tile',\n },\n templateUrl: 'grid-tile.html',\n styleUrls: ['grid-list.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatGridTile {\n _rowspan: number = 1;\n _colspan: number = 1;\n\n constructor(\n private _element: ElementRef<HTMLElement>,\n @Optional() @Inject(MAT_GRID_LIST) public _gridList?: MatGridListBase) {}\n\n /** Amount of rows that the grid tile takes up. */\n @Input()\n get rowspan(): number { return this._rowspan; }\n set rowspan(value: number) { this._rowspan = Math.round(coerceNumberProperty(value)); }\n\n /** Amount of columns that the grid tile takes up. */\n @Input()\n get colspan(): number { return this._colspan; }\n set colspan(value: number) { this._colspan = Math.round(coerceNumberProperty(value)); }\n\n /**\n * Sets the style of the grid-tile element. Needs to be set manually to avoid\n * \"Changed after checked\" errors that would occur with HostBinding.\n */\n _setStyle(property: string, value: any): void {\n (this._element.nativeElement.style as any)[property] = value;\n }\n}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-grid-tile-header, mat-grid-tile-footer',\n templateUrl: 'grid-tile-text.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatGridTileText implements AfterContentInit {\n @ContentChildren(MatLine) _lines: QueryList<MatLine>;\n\n constructor(private _element: ElementRef<HTMLElement>) {}\n\n ngAfterContentInit() {\n setLines(this._lines, this._element);\n }\n}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: '[mat-grid-avatar], [matGridAvatar]',\n host: {'class': 'mat-grid-avatar'}\n})\nexport class MatGridAvatarCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'mat-grid-tile-header',\n host: {'class': 'mat-grid-tile-header'}\n})\nexport class MatGridTileHeaderCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'mat-grid-tile-footer',\n host: {'class': 'mat-grid-tile-footer'}\n})\nexport class MatGridTileFooterCssMatStyler {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Injection token used to provide a grid list to a tile and to avoid circular imports.\n * @docs-private\n */\nexport const MAT_GRID_LIST = new InjectionToken<MatGridListBase>('MAT_GRID_LIST');\n\n/**\n * Base interface for a `MatGridList`.\n * @docs-private\n */\nexport interface MatGridListBase {\n cols: number;\n gutterSize: string;\n rowHeight: number | string;\n}\n"],"names":["tslib_1.__extends"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"grid-list.es5.js","sources":["../../../src/lib/grid-list/grid-list-module.ts","../../../src/lib/grid-list/grid-list.ts","../../../src/lib/grid-list/tile-styler.ts","../../../src/lib/grid-list/tile-coordinator.ts","../../../src/lib/grid-list/grid-tile.ts","../../../src/lib/grid-list/grid-list-base.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {MatLineModule, MatCommonModule} from '@angular/material/core';\nimport {\n MatGridTile, MatGridTileText, MatGridTileFooterCssMatStyler,\n MatGridTileHeaderCssMatStyler, MatGridAvatarCssMatStyler\n} from './grid-tile';\nimport {MatGridList} from './grid-list';\n\n\n@NgModule({\n imports: [MatLineModule, MatCommonModule],\n exports: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatCommonModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n declarations: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler\n ],\n})\nexport class MatGridListModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Component,\n ViewEncapsulation,\n AfterContentChecked,\n OnInit,\n Input,\n ContentChildren,\n QueryList,\n ElementRef,\n Optional,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport {MatGridTile} from './grid-tile';\nimport {TileCoordinator} from './tile-coordinator';\nimport {TileStyler, FitTileStyler, RatioTileStyler, FixedTileStyler} from './tile-styler';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {MAT_GRID_LIST, MatGridListBase} from './grid-list-base';\n\n\n// TODO(kara): Conditional (responsive) column count / row size.\n// TODO(kara): Re-layout on window resize / media change (debounced).\n// TODO(kara): gridTileHeader and gridTileFooter.\n\nconst MAT_FIT_MODE = 'fit';\n\n@Component({\n moduleId: module.id,\n selector: 'mat-grid-list',\n exportAs: 'matGridList',\n templateUrl: 'grid-list.html',\n styleUrls: ['grid-list.css'],\n host: {\n 'class': 'mat-grid-list',\n },\n providers: [{\n provide: MAT_GRID_LIST,\n useExisting: MatGridList\n }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatGridList implements MatGridListBase, OnInit, AfterContentChecked {\n /** Number of columns being rendered. */\n private _cols: number;\n\n /** Used for determiningthe position of each tile in the grid. */\n private _tileCoordinator: TileCoordinator;\n\n /**\n * Row height value passed in by user. This can be one of three types:\n * - Number value (ex: \"100px\"): sets a fixed row height to that value\n * - Ratio value (ex: \"4:3\"): sets the row height based on width:height ratio\n * - \"Fit\" mode (ex: \"fit\"): sets the row height to total height divided by number of rows\n */\n private _rowHeight: string;\n\n /** The amount of space between tiles. This will be something like '5px' or '2em'. */\n private _gutter: string = '1px';\n\n /** Sets position and size styles for a tile */\n private _tileStyler: TileStyler;\n\n /** Query list of tiles that are being rendered. */\n @ContentChildren(MatGridTile, {descendants: true}) _tiles: QueryList<MatGridTile>;\n\n constructor(private _element: ElementRef<HTMLElement>,\n @Optional() private _dir: Directionality) {}\n\n /** Amount of columns in the grid list. */\n @Input()\n get cols(): number { return this._cols; }\n set cols(value: number) {\n this._cols = Math.max(1, Math.round(coerceNumberProperty(value)));\n }\n\n /** Size of the grid list's gutter in pixels. */\n @Input()\n get gutterSize(): string { return this._gutter; }\n set gutterSize(value: string) { this._gutter = `${value == null ? '' : value}`; }\n\n /** Set internal representation of row height from the user-provided value. */\n @Input()\n get rowHeight(): string | number { return this._rowHeight; }\n set rowHeight(value: string | number) {\n const newValue = `${value == null ? '' : value}`;\n\n if (newValue !== this._rowHeight) {\n this._rowHeight = newValue;\n this._setTileStyler(this._rowHeight);\n }\n }\n\n ngOnInit() {\n this._checkCols();\n this._checkRowHeight();\n }\n\n /**\n * The layout calculation is fairly cheap if nothing changes, so there's little cost\n * to run it frequently.\n */\n ngAfterContentChecked() {\n this._layoutTiles();\n }\n\n /** Throw a friendly error if cols property is missing */\n private _checkCols() {\n if (!this.cols) {\n throw Error(`mat-grid-list: must pass in number of columns. ` +\n `Example: <mat-grid-list cols=\"3\">`);\n }\n }\n\n /** Default to equal width:height if rowHeight property is missing */\n private _checkRowHeight(): void {\n if (!this._rowHeight) {\n this._setTileStyler('1:1');\n }\n }\n\n /** Creates correct Tile Styler subtype based on rowHeight passed in by user */\n private _setTileStyler(rowHeight: string): void {\n if (this._tileStyler) {\n this._tileStyler.reset(this);\n }\n\n if (rowHeight === MAT_FIT_MODE) {\n this._tileStyler = new FitTileStyler();\n } else if (rowHeight && rowHeight.indexOf(':') > -1) {\n this._tileStyler = new RatioTileStyler(rowHeight);\n } else {\n this._tileStyler = new FixedTileStyler(rowHeight);\n }\n }\n\n /** Computes and applies the size and position for all children grid tiles. */\n private _layoutTiles(): void {\n if (!this._tileCoordinator) {\n this._tileCoordinator = new TileCoordinator();\n }\n\n\n const tracker = this._tileCoordinator;\n const tiles = this._tiles.filter(tile => !tile._gridList || tile._gridList === this);\n const direction = this._dir ? this._dir.value : 'ltr';\n\n this._tileCoordinator.update(this.cols, tiles);\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n\n tiles.forEach((tile, index) => {\n const pos = tracker.positions[index];\n this._tileStyler.setStyle(tile, pos.row, pos.col);\n });\n\n this._setListStyle(this._tileStyler.getComputedHeight());\n }\n\n /** Sets style on the main grid-list element, given the style name and value. */\n _setListStyle(style: [string, string | null] | null): void {\n if (style) {\n (this._element.nativeElement.style as any)[style[0]] = style[1];\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {MatGridList} from './grid-list';\nimport {MatGridTile} from './grid-tile';\nimport {TileCoordinator} from './tile-coordinator';\n\n/**\n * RegExp that can be used to check whether a value will\n * be allowed inside a CSS `calc()` expression.\n */\nconst cssCalcAllowedValue = /^-?\\d+((\\.\\d+)?[A-Za-z%$]?)+$/;\n\n/**\n * Sets the style properties for an individual tile, given the position calculated by the\n * Tile Coordinator.\n * @docs-private\n */\nexport abstract class TileStyler {\n _gutterSize: string;\n _rows: number = 0;\n _rowspan: number = 0;\n _cols: number;\n _direction: string;\n\n /**\n * Adds grid-list layout info once it is available. Cannot be processed in the constructor\n * because these properties haven't been calculated by that point.\n *\n * @param gutterSize Size of the grid's gutter.\n * @param tracker Instance of the TileCoordinator.\n * @param cols Amount of columns in the grid.\n * @param direction Layout direction of the grid.\n */\n init(gutterSize: string, tracker: TileCoordinator, cols: number, direction: string): void {\n this._gutterSize = normalizeUnits(gutterSize);\n this._rows = tracker.rowCount;\n this._rowspan = tracker.rowspan;\n this._cols = cols;\n this._direction = direction;\n }\n\n /**\n * Computes the amount of space a single 1x1 tile would take up (width or height).\n * Used as a basis for other calculations.\n * @param sizePercent Percent of the total grid-list space that one 1x1 tile would take up.\n * @param gutterFraction Fraction of the gutter size taken up by one 1x1 tile.\n * @return The size of a 1x1 tile as an expression that can be evaluated via CSS calc().\n */\n getBaseTileSize(sizePercent: number, gutterFraction: number): string {\n // Take the base size percent (as would be if evenly dividing the size between cells),\n // and then subtracting the size of one gutter. However, since there are no gutters on the\n // edges, each tile only uses a fraction (gutterShare = numGutters / numCells) of the gutter\n // size. (Imagine having one gutter per tile, and then breaking up the extra gutter on the\n // edge evenly among the cells).\n return `(${sizePercent}% - (${this._gutterSize} * ${gutterFraction}))`;\n }\n\n\n /**\n * Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.\n * @param offset Number of tiles that have already been rendered in the row/column.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @return Position of the tile as a CSS calc() expression.\n */\n getTilePosition(baseSize: string, offset: number): string {\n // The position comes the size of a 1x1 tile plus gutter for each previous tile in the\n // row/column (offset).\n return offset === 0 ? '0' : calc(`(${baseSize} + ${this._gutterSize}) * ${offset}`);\n }\n\n\n /**\n * Gets the actual size of a tile, e.g., width or height, taking rowspan or colspan into account.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param span The tile's rowspan or colspan.\n * @return Size of the tile as a CSS calc() expression.\n */\n getTileSize(baseSize: string, span: number): string {\n return `(${baseSize} * ${span}) + (${span - 1} * ${this._gutterSize})`;\n }\n\n\n /**\n * Sets the style properties to be applied to a tile for the given row and column index.\n * @param tile Tile to which to apply the styling.\n * @param rowIndex Index of the tile's row.\n * @param colIndex Index of the tile's column.\n */\n setStyle(tile: MatGridTile, rowIndex: number, colIndex: number): void {\n // Percent of the available horizontal space that one column takes up.\n let percentWidthPerTile = 100 / this._cols;\n\n // Fraction of the vertical gutter size that each column takes up.\n // For example, if there are 5 columns, each column uses 4/5 = 0.8 times the gutter width.\n let gutterWidthFractionPerTile = (this._cols - 1) / this._cols;\n\n this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n }\n\n /** Sets the horizontal placement of the tile in the list. */\n setColStyles(tile: MatGridTile, colIndex: number, percentWidth: number,\n gutterWidth: number) {\n // Base horizontal size of a column.\n let baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);\n\n // The width and horizontal position of each tile is always calculated the same way, but the\n // height and vertical position depends on the rowMode.\n let side = this._direction === 'rtl' ? 'right' : 'left';\n tile._setStyle(side, this.getTilePosition(baseTileWidth, colIndex));\n tile._setStyle('width', calc(this.getTileSize(baseTileWidth, tile.colspan)));\n }\n\n /**\n * Calculates the total size taken up by gutters across one axis of a list.\n */\n getGutterSpan(): string {\n return `${this._gutterSize} * (${this._rowspan} - 1)`;\n }\n\n /**\n * Calculates the total size taken up by tiles across one axis of a list.\n * @param tileHeight Height of the tile.\n */\n getTileSpan(tileHeight: string): string {\n return `${this._rowspan} * ${this.getTileSize(tileHeight, 1)}`;\n }\n\n /**\n * Sets the vertical placement of the tile in the list.\n * This method will be implemented by each type of TileStyler.\n * @docs-private\n */\n abstract setRowStyles(tile: MatGridTile, rowIndex: number, percentWidth: number,\n gutterWidth: number): void;\n\n /**\n * Calculates the computed height and returns the correct style property to set.\n * This method can be implemented by each type of TileStyler.\n * @docs-private\n */\n getComputedHeight(): [string, string] | null { return null; }\n\n /**\n * Called when the tile styler is swapped out with a different one. To be used for cleanup.\n * @param list Grid list that the styler was attached to.\n * @docs-private\n */\n abstract reset(list: MatGridList): void;\n}\n\n\n/**\n * This type of styler is instantiated when the user passes in a fixed row height.\n * Example `<mat-grid-list cols=\"3\" rowHeight=\"100px\">`\n * @docs-private\n */\nexport class FixedTileStyler extends TileStyler {\n\n constructor(public fixedRowHeight: string) { super(); }\n\n init(gutterSize: string, tracker: TileCoordinator, cols: number, direction: string) {\n super.init(gutterSize, tracker, cols, direction);\n this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);\n\n if (!cssCalcAllowedValue.test(this.fixedRowHeight)) {\n throw Error(`Invalid value \"${this.fixedRowHeight}\" set as rowHeight.`);\n }\n }\n\n setRowStyles(tile: MatGridTile, rowIndex: number): void {\n tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));\n }\n\n getComputedHeight(): [string, string] {\n return [\n 'height', calc(`${this.getTileSpan(this.fixedRowHeight)} + ${this.getGutterSpan()}`)\n ];\n }\n\n reset(list: MatGridList) {\n list._setListStyle(['height', null]);\n\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n\n\n/**\n * This type of styler is instantiated when the user passes in a width:height ratio\n * for the row height. Example `<mat-grid-list cols=\"3\" rowHeight=\"3:1\">`\n * @docs-private\n */\nexport class RatioTileStyler extends TileStyler {\n\n /** Ratio width:height given by user to determine row height. */\n rowHeightRatio: number;\n baseTileHeight: string;\n\n constructor(value: string) {\n super();\n this._parseRatio(value);\n }\n\n setRowStyles(tile: MatGridTile, rowIndex: number, percentWidth: number,\n gutterWidth: number): void {\n let percentHeightPerTile = percentWidth / this.rowHeightRatio;\n this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);\n\n // Use padding-top and margin-top to maintain the given aspect ratio, as\n // a percentage-based value for these properties is applied versus the *width* of the\n // containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties\n tile._setStyle('marginTop', this.getTilePosition(this.baseTileHeight, rowIndex));\n tile._setStyle('paddingTop', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));\n }\n\n getComputedHeight(): [string, string] {\n return [\n 'paddingBottom', calc(`${this.getTileSpan(this.baseTileHeight)} + ${this.getGutterSpan()}`)\n ];\n }\n\n reset(list: MatGridList) {\n list._setListStyle(['paddingBottom', null]);\n\n list._tiles.forEach(tile => {\n tile._setStyle('marginTop', null);\n tile._setStyle('paddingTop', null);\n });\n }\n\n private _parseRatio(value: string): void {\n const ratioParts = value.split(':');\n\n if (ratioParts.length !== 2) {\n throw Error(`mat-grid-list: invalid ratio given for row-height: \"${value}\"`);\n }\n\n this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);\n }\n}\n\n/**\n * This type of styler is instantiated when the user selects a \"fit\" row height mode.\n * In other words, the row height will reflect the total height of the container divided\n * by the number of rows. Example `<mat-grid-list cols=\"3\" rowHeight=\"fit\">`\n *\n * @docs-private\n */\nexport class FitTileStyler extends TileStyler {\n setRowStyles(tile: MatGridTile, rowIndex: number): void {\n // Percent of the available vertical space that one row takes up.\n let percentHeightPerTile = 100 / this._rowspan;\n\n // Fraction of the horizontal gutter size that each column takes up.\n let gutterHeightPerTile = (this._rows - 1) / this._rows;\n\n // Base vertical size of a column.\n let baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);\n\n tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));\n }\n\n reset(list: MatGridList) {\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n\n\n/** Wraps a CSS string in a calc function */\nfunction calc(exp: string): string {\n return `calc(${exp})`;\n}\n\n\n/** Appends pixels to a CSS string if no units are given. */\nfunction normalizeUnits(value: string): string {\n return value.match(/([A-Za-z%]+)$/) ? value : `${value}px`;\n}\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {MatGridTile} from './grid-tile';\n\n/**\n * Class for determining, from a list of tiles, the (row, col) position of each of those tiles\n * in the grid. This is necessary (rather than just rendering the tiles in normal document flow)\n * because the tiles can have a rowspan.\n *\n * The positioning algorithm greedily places each tile as soon as it encounters a gap in the grid\n * large enough to accommodate it so that the tiles still render in the same order in which they\n * are given.\n *\n * The basis of the algorithm is the use of an array to track the already placed tiles. Each\n * element of the array corresponds to a column, and the value indicates how many cells in that\n * column are already occupied; zero indicates an empty cell. Moving \"down\" to the next row\n * decrements each value in the tracking array (indicating that the column is one cell closer to\n * being free).\n *\n * @docs-private\n */\nexport class TileCoordinator {\n /** Tracking array (see class description). */\n tracker: number[];\n\n /** Index at which the search for the next gap will start. */\n columnIndex: number = 0;\n\n /** The current row index. */\n rowIndex: number = 0;\n\n /** Gets the total number of rows occupied by tiles */\n get rowCount(): number { return this.rowIndex + 1; }\n\n /**\n * Gets the total span of rows occupied by tiles.\n * Ex: A list with 1 row that contains a tile with rowspan 2 will have a total rowspan of 2.\n */\n get rowspan() {\n const lastRowMax = Math.max(...this.tracker);\n // if any of the tiles has a rowspan that pushes it beyond the total row count,\n // add the difference to the rowcount\n return lastRowMax > 1 ? this.rowCount + lastRowMax - 1 : this.rowCount;\n }\n\n /** The computed (row, col) position of each tile (the output). */\n positions: TilePosition[];\n\n /**\n * Updates the tile positions.\n * @param numColumns Amount of columns in the grid.\n */\n update(numColumns: number, tiles: MatGridTile[]) {\n this.columnIndex = 0;\n this.rowIndex = 0;\n\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n this.positions = tiles.map(tile => this._trackTile(tile));\n }\n\n /** Calculates the row and col position of a tile. */\n private _trackTile(tile: MatGridTile): TilePosition {\n // Find a gap large enough for this tile.\n const gapStartIndex = this._findMatchingGap(tile.colspan);\n\n // Place tile in the resulting gap.\n this._markTilePosition(gapStartIndex, tile);\n\n // The next time we look for a gap, the search will start at columnIndex, which should be\n // immediately after the tile that has just been placed.\n this.columnIndex = gapStartIndex + tile.colspan;\n\n return new TilePosition(this.rowIndex, gapStartIndex);\n }\n\n /** Finds the next available space large enough to fit the tile. */\n private _findMatchingGap(tileCols: number): number {\n if (tileCols > this.tracker.length) {\n throw Error(`mat-grid-list: tile with colspan ${tileCols} is wider than ` +\n `grid with cols=\"${this.tracker.length}\".`);\n }\n\n // Start index is inclusive, end index is exclusive.\n let gapStartIndex = -1;\n let gapEndIndex = -1;\n\n // Look for a gap large enough to fit the given tile. Empty spaces are marked with a zero.\n do {\n // If we've reached the end of the row, go to the next row.\n if (this.columnIndex + tileCols > this.tracker.length) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n\n // If there are no more empty spaces in this row at all, move on to the next row.\n if (gapStartIndex == -1) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n\n // If a gap large enough isn't found, we want to start looking immediately after the current\n // gap on the next iteration.\n this.columnIndex = gapStartIndex + 1;\n\n // Continue iterating until we find a gap wide enough for this tile. Since gapEndIndex is\n // exclusive, gapEndIndex is 0 means we didn't find a gap and should continue.\n } while ((gapEndIndex - gapStartIndex < tileCols) || (gapEndIndex == 0));\n\n // If we still didn't manage to find a gap, ensure that the index is\n // at least zero so the tile doesn't get pulled out of the grid.\n return Math.max(gapStartIndex, 0);\n }\n\n /** Move \"down\" to the next row. */\n private _nextRow(): void {\n this.columnIndex = 0;\n this.rowIndex++;\n\n // Decrement all spaces by one to reflect moving down one row.\n for (let i = 0; i < this.tracker.length; i++) {\n this.tracker[i] = Math.max(0, this.tracker[i] - 1);\n }\n }\n\n /**\n * Finds the end index (exclusive) of a gap given the index from which to start looking.\n * The gap ends when a non-zero value is found.\n */\n private _findGapEndIndex(gapStartIndex: number): number {\n for (let i = gapStartIndex + 1; i < this.tracker.length; i++) {\n if (this.tracker[i] != 0) {\n return i;\n }\n }\n\n // The gap ends with the end of the row.\n return this.tracker.length;\n }\n\n /** Update the tile tracker to account for the given tile in the given space. */\n private _markTilePosition(start: number, tile: MatGridTile): void {\n for (let i = 0; i < tile.colspan; i++) {\n this.tracker[start + i] = tile.rowspan;\n }\n }\n}\n\n/**\n * Simple data structure for tile position (row, col).\n * @docs-private\n */\nexport class TilePosition {\n constructor(public row: number, public col: number) {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n Component,\n ViewEncapsulation,\n ElementRef,\n Input,\n Optional,\n ContentChildren,\n QueryList,\n AfterContentInit,\n Directive,\n ChangeDetectionStrategy,\n Inject,\n} from '@angular/core';\nimport {MatLine, setLines} from '@angular/material/core';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {MAT_GRID_LIST, MatGridListBase} from './grid-list-base';\n\n@Component({\n moduleId: module.id,\n selector: 'mat-grid-tile',\n exportAs: 'matGridTile',\n host: {\n 'class': 'mat-grid-tile',\n },\n templateUrl: 'grid-tile.html',\n styleUrls: ['grid-list.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatGridTile {\n _rowspan: number = 1;\n _colspan: number = 1;\n\n constructor(\n private _element: ElementRef<HTMLElement>,\n @Optional() @Inject(MAT_GRID_LIST) public _gridList?: MatGridListBase) {}\n\n /** Amount of rows that the grid tile takes up. */\n @Input()\n get rowspan(): number { return this._rowspan; }\n set rowspan(value: number) { this._rowspan = Math.round(coerceNumberProperty(value)); }\n\n /** Amount of columns that the grid tile takes up. */\n @Input()\n get colspan(): number { return this._colspan; }\n set colspan(value: number) { this._colspan = Math.round(coerceNumberProperty(value)); }\n\n /**\n * Sets the style of the grid-tile element. Needs to be set manually to avoid\n * \"Changed after checked\" errors that would occur with HostBinding.\n */\n _setStyle(property: string, value: any): void {\n (this._element.nativeElement.style as any)[property] = value;\n }\n}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-grid-tile-header, mat-grid-tile-footer',\n templateUrl: 'grid-tile-text.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatGridTileText implements AfterContentInit {\n @ContentChildren(MatLine) _lines: QueryList<MatLine>;\n\n constructor(private _element: ElementRef<HTMLElement>) {}\n\n ngAfterContentInit() {\n setLines(this._lines, this._element);\n }\n}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: '[mat-grid-avatar], [matGridAvatar]',\n host: {'class': 'mat-grid-avatar'}\n})\nexport class MatGridAvatarCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'mat-grid-tile-header',\n host: {'class': 'mat-grid-tile-header'}\n})\nexport class MatGridTileHeaderCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: 'mat-grid-tile-footer',\n host: {'class': 'mat-grid-tile-footer'}\n})\nexport class MatGridTileFooterCssMatStyler {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Injection token used to provide a grid list to a tile and to avoid circular imports.\n * @docs-private\n */\nexport const MAT_GRID_LIST = new InjectionToken<MatGridListBase>('MAT_GRID_LIST');\n\n/**\n * Base interface for a `MatGridList`.\n * @docs-private\n */\nexport interface MatGridListBase {\n cols: number;\n gutterSize: string;\n rowHeight: number | string;\n}\n"],"names":["tslib_1.__extends"],"mappings":"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"}
|
package/esm5/icon.es5.js
CHANGED
|
@@ -510,6 +510,17 @@ var MatIconRegistry = /** @class */ (function () {
|
|
|
510
510
|
}
|
|
511
511
|
return throwError(getMatIconNameNotFoundError(key));
|
|
512
512
|
};
|
|
513
|
+
/**
|
|
514
|
+
* @return {?}
|
|
515
|
+
*/
|
|
516
|
+
MatIconRegistry.prototype.ngOnDestroy = /**
|
|
517
|
+
* @return {?}
|
|
518
|
+
*/
|
|
519
|
+
function () {
|
|
520
|
+
this._svgIconConfigs.clear();
|
|
521
|
+
this._iconSetConfigs.clear();
|
|
522
|
+
this._cachedIconsByUrl.clear();
|
|
523
|
+
};
|
|
513
524
|
/**
|
|
514
525
|
* Returns the cached icon for a SvgIconConfig if available, or fetches it from its URL if not.
|
|
515
526
|
*/
|
|
@@ -1538,6 +1549,7 @@ var MatIcon = /** @class */ (function (_super) {
|
|
|
1538
1549
|
'role': 'img',
|
|
1539
1550
|
'class': 'mat-icon',
|
|
1540
1551
|
'[class.mat-icon-inline]': 'inline',
|
|
1552
|
+
'[class.mat-icon-no-color]': 'color !== "primary" && color !== "accent" && color !== "warn"',
|
|
1541
1553
|
},
|
|
1542
1554
|
encapsulation: ViewEncapsulation.None,
|
|
1543
1555
|
changeDetection: ChangeDetectionStrategy.OnPush,
|