@angular/cdk 5.2.1 → 5.2.5

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.
Files changed (94) hide show
  1. package/_overlay.scss +6 -0
  2. package/a11y/typings/aria-describer/aria-describer.d.ts +2 -0
  3. package/a11y/typings/index.metadata.json +1 -1
  4. package/a11y/typings/key-manager/list-key-manager.d.ts +11 -0
  5. package/bundles/cdk-a11y.umd.js +65 -13
  6. package/bundles/cdk-a11y.umd.js.map +1 -1
  7. package/bundles/cdk-a11y.umd.min.js +1 -1
  8. package/bundles/cdk-a11y.umd.min.js.map +1 -1
  9. package/bundles/cdk-collections.umd.js +7 -11
  10. package/bundles/cdk-collections.umd.js.map +1 -1
  11. package/bundles/cdk-collections.umd.min.js +1 -1
  12. package/bundles/cdk-collections.umd.min.js.map +1 -1
  13. package/bundles/cdk-overlay.umd.js +24 -5
  14. package/bundles/cdk-overlay.umd.js.map +1 -1
  15. package/bundles/cdk-overlay.umd.min.js +2 -2
  16. package/bundles/cdk-overlay.umd.min.js.map +1 -1
  17. package/bundles/cdk-platform.umd.js +3 -3
  18. package/bundles/cdk-platform.umd.js.map +1 -1
  19. package/bundles/cdk-platform.umd.min.js +1 -1
  20. package/bundles/cdk-platform.umd.min.js.map +1 -1
  21. package/bundles/cdk-scrolling.umd.js +17 -4
  22. package/bundles/cdk-scrolling.umd.js.map +1 -1
  23. package/bundles/cdk-scrolling.umd.min.js +1 -1
  24. package/bundles/cdk-scrolling.umd.min.js.map +1 -1
  25. package/bundles/cdk-stepper.umd.js +3 -1
  26. package/bundles/cdk-stepper.umd.js.map +1 -1
  27. package/bundles/cdk-stepper.umd.min.js +1 -1
  28. package/bundles/cdk-stepper.umd.min.js.map +1 -1
  29. package/bundles/cdk.umd.js +1 -1
  30. package/bundles/cdk.umd.js.map +1 -1
  31. package/bundles/cdk.umd.min.js +1 -1
  32. package/bundles/cdk.umd.min.js.map +1 -1
  33. package/collections/typings/index.metadata.json +1 -1
  34. package/collections/typings/selection.d.ts +3 -10
  35. package/esm2015/a11y.js +48 -13
  36. package/esm2015/a11y.js.map +1 -1
  37. package/esm2015/cdk.js +1 -1
  38. package/esm2015/cdk.js.map +1 -1
  39. package/esm2015/collections.js +8 -15
  40. package/esm2015/collections.js.map +1 -1
  41. package/esm2015/overlay.js +20 -5
  42. package/esm2015/overlay.js.map +1 -1
  43. package/esm2015/platform.js +3 -3
  44. package/esm2015/platform.js.map +1 -1
  45. package/esm2015/scrolling.js +18 -5
  46. package/esm2015/scrolling.js.map +1 -1
  47. package/esm2015/stepper.js +3 -1
  48. package/esm2015/stepper.js.map +1 -1
  49. package/esm5/a11y.es5.js +65 -13
  50. package/esm5/a11y.es5.js.map +1 -1
  51. package/esm5/cdk.es5.js +1 -1
  52. package/esm5/cdk.es5.js.map +1 -1
  53. package/esm5/collections.es5.js +8 -11
  54. package/esm5/collections.es5.js.map +1 -1
  55. package/esm5/overlay.es5.js +24 -5
  56. package/esm5/overlay.es5.js.map +1 -1
  57. package/esm5/platform.es5.js +3 -3
  58. package/esm5/platform.es5.js.map +1 -1
  59. package/esm5/scrolling.es5.js +17 -4
  60. package/esm5/scrolling.es5.js.map +1 -1
  61. package/esm5/stepper.es5.js +3 -1
  62. package/esm5/stepper.es5.js.map +1 -1
  63. package/overlay/typings/index.metadata.json +1 -1
  64. package/overlay/typings/overlay-directives.d.ts +4 -1
  65. package/overlay/typings/overlay.d.ts +1 -1
  66. package/overlay/typings/position/connected-position-strategy.d.ts +0 -2
  67. package/overlay-prebuilt.css +1 -1
  68. package/package.json +3 -3
  69. package/scrolling/typings/index.metadata.json +1 -1
  70. package/scrolling/typings/viewport-ruler.d.ts +2 -1
  71. package/typings/a11y/aria-describer/aria-describer.d.ts +2 -0
  72. package/typings/a11y/index.metadata.json +1 -1
  73. package/typings/a11y/key-manager/list-key-manager.d.ts +11 -0
  74. package/typings/collections/index.metadata.json +1 -1
  75. package/typings/collections/selection.d.ts +3 -10
  76. package/typings/esm5/a11y/aria-describer/aria-describer.d.ts +2 -0
  77. package/typings/esm5/a11y/index.metadata.json +1 -1
  78. package/typings/esm5/a11y/key-manager/list-key-manager.d.ts +11 -0
  79. package/typings/esm5/collections/index.metadata.json +1 -1
  80. package/typings/esm5/collections/selection.d.ts +3 -10
  81. package/typings/esm5/index.metadata.json +1 -1
  82. package/typings/esm5/overlay/index.metadata.json +1 -1
  83. package/typings/esm5/overlay/overlay-directives.d.ts +4 -1
  84. package/typings/esm5/overlay/overlay.d.ts +1 -1
  85. package/typings/esm5/overlay/position/connected-position-strategy.d.ts +0 -2
  86. package/typings/esm5/scrolling/index.metadata.json +1 -1
  87. package/typings/esm5/scrolling/viewport-ruler.d.ts +2 -1
  88. package/typings/index.metadata.json +1 -1
  89. package/typings/overlay/index.metadata.json +1 -1
  90. package/typings/overlay/overlay-directives.d.ts +4 -1
  91. package/typings/overlay/overlay.d.ts +1 -1
  92. package/typings/overlay/position/connected-position-strategy.d.ts +0 -2
  93. package/typings/scrolling/index.metadata.json +1 -1
  94. package/typings/scrolling/viewport-ruler.d.ts +2 -1
package/_overlay.scss CHANGED
@@ -29,6 +29,12 @@ $backdrop-animation-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1) !default;
29
29
  .cdk-overlay-container {
30
30
  position: fixed;
31
31
  z-index: $cdk-z-index-overlay-container;
32
+
33
+ &:empty {
34
+ // Hide the element when it doesn't have any child nodes. This doesn't
35
+ // include overlays that have been detached, rather than disposed.
36
+ display: none;
37
+ }
32
38
  }
33
39
 
34
40
  // We use an extra wrapper element in order to use make the overlay itself a flex item.
@@ -66,6 +66,8 @@ export declare class AriaDescriber {
66
66
  private _removeMessageReference(element, message);
67
67
  /** Returns true if the element has been described by the provided message ID. */
68
68
  private _isElementDescribedByMessage(element, message);
69
+ /** Determines whether a message can be described on a particular element. */
70
+ private _canBeDescribed(element, message);
69
71
  }
70
72
  /** @docs-private */
71
73
  export declare function ARIA_DESCRIBER_PROVIDER_FACTORY(parentDispatcher: AriaDescriber, _document: any): AriaDescriber;
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"FocusTrapDirective":{"__symbolic":"reference","name":"CdkTrapFocus"},"RegisteredMessage":{"__symbolic":"interface"},"MESSAGES_CONTAINER_ID":"cdk-describedby-message-container","CDK_DESCRIBEDBY_ID_PREFIX":"cdk-describedby-message","CDK_DESCRIBEDBY_HOST_ATTRIBUTE":"cdk-describedby-host","AriaDescriber":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":48,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":52,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":52,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}],"describe":[{"__symbolic":"method"}],"removeDescription":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_createMessageElement":[{"__symbolic":"method"}],"_deleteMessageElement":[{"__symbolic":"method"}],"_createMessagesContainer":[{"__symbolic":"method"}],"_deleteMessagesContainer":[{"__symbolic":"method"}],"_removeCdkDescribedByReferenceIds":[{"__symbolic":"method"}],"_addMessageReference":[{"__symbolic":"method"}],"_removeMessageReference":[{"__symbolic":"method"}],"_isElementDescribedByMessage":[{"__symbolic":"method"}]}},"ARIA_DESCRIBER_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentDispatcher","_document"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentDispatcher"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"AriaDescriber"},"arguments":[{"__symbolic":"reference","name":"_document"}]}}},"ARIA_DESCRIBER_PROVIDER":{"provide":{"__symbolic":"reference","name":"AriaDescriber"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":210,"character":9}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":210,"character":25}},{"__symbolic":"reference","name":"AriaDescriber"}],{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":211,"character":4}],"useFactory":{"__symbolic":"reference","name":"ARIA_DESCRIBER_PROVIDER_FACTORY"}},"Highlightable":{"__symbolic":"interface"},"ActiveDescendantKeyManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ListKeyManager"},"members":{"setActiveItem":[{"__symbolic":"method"}]}},"FocusableOption":{"__symbolic":"interface"},"FocusKeyManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ListKeyManager"},"members":{"setFocusOrigin":[{"__symbolic":"method"}],"setActiveItem":[{"__symbolic":"method"}]}},"ListKeyManagerOption":{"__symbolic":"interface"},"ListKeyManager":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"QueryList","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":52,"character":40,"context":{"typeName":"T"},"module":"./key-manager/list-key-manager"}]}]}],"withWrap":[{"__symbolic":"method"}],"withVerticalOrientation":[{"__symbolic":"method"}],"withHorizontalOrientation":[{"__symbolic":"method"}],"withTypeAhead":[{"__symbolic":"method"}],"setActiveItem":[{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method"}],"setFirstItemActive":[{"__symbolic":"method"}],"setLastItemActive":[{"__symbolic":"method"}],"setNextItemActive":[{"__symbolic":"method"}],"setPreviousItemActive":[{"__symbolic":"method"}],"updateActiveItemIndex":[{"__symbolic":"method"}],"_setActiveItemByDelta":[{"__symbolic":"method"}],"_setActiveInWrapMode":[{"__symbolic":"method"}],"_setActiveInDefaultMode":[{"__symbolic":"method"}],"_setActiveItemByIndex":[{"__symbolic":"method"}]}},"FocusTrap":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":47,"character":22,"context":{"typeName":"HTMLElement"},"module":"./focus-trap/focus-trap"},{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":49,"character":21},{"__symbolic":"error","message":"Could not resolve type","line":50,"character":23,"context":{"typeName":"Document"},"module":"./focus-trap/focus-trap"},null]}],"destroy":[{"__symbolic":"method"}],"attachAnchors":[{"__symbolic":"method"}],"focusInitialElementWhenReady":[{"__symbolic":"method"}],"focusFirstTabbableElementWhenReady":[{"__symbolic":"method"}],"focusLastTabbableElementWhenReady":[{"__symbolic":"method"}],"_getRegionBoundary":[{"__symbolic":"method"}],"focusInitialElement":[{"__symbolic":"method"}],"focusFirstTabbableElement":[{"__symbolic":"method"}],"focusLastTabbableElement":[{"__symbolic":"method"}],"_getFirstTabbableElement":[{"__symbolic":"method"}],"_getLastTabbableElement":[{"__symbolic":"method"}],"_createAnchor":[{"__symbolic":"method"}],"_executeOnStable":[{"__symbolic":"method"}]}},"FocusTrapFactory":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":280,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":287,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":287,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":49,"character":21},{"__symbolic":"reference","name":"any"}]}],"create":[{"__symbolic":"method"}]}},"FocusTrapDeprecatedDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":312,"character":1},"arguments":[{"selector":"cdk-focus-trap"}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":319,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":325,"character":35},{"__symbolic":"reference","name":"FocusTrapFactory"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}]}},"CdkTrapFocus":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":340,"character":1},"arguments":[{"selector":"[cdkTrapFocus]","exportAs":"cdkTrapFocus"}]}],"members":{"enabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":354,"character":3},"arguments":["cdkTrapFocus"]}]}],"autoCapture":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":362,"character":3},"arguments":["cdkTrapFocusAutoCapture"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":370,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":370,"character":14}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":325,"character":35},{"__symbolic":"reference","name":"FocusTrapFactory"},{"__symbolic":"reference","name":"any"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}]}},"InteractivityChecker":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":23,"character":33}]}],"isDisabled":[{"__symbolic":"method"}],"isVisible":[{"__symbolic":"method"}],"isTabbable":[{"__symbolic":"method"}],"isFocusable":[{"__symbolic":"method"}]}},"LIVE_ANNOUNCER_ELEMENT_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":19,"character":48},"arguments":["liveAnnouncerElement"]},"AriaLivePoliteness":{"__symbolic":"interface"},"LiveAnnouncer":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":29,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":19},"arguments":[{"__symbolic":"reference","name":"LIVE_ANNOUNCER_ELEMENT_TOKEN"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":30,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}],"announce":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_createLiveElement":[{"__symbolic":"method"}]}},"LIVE_ANNOUNCER_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentDispatcher","liveElement","_document"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentDispatcher"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LiveAnnouncer"},"arguments":[{"__symbolic":"reference","name":"liveElement"},{"__symbolic":"reference","name":"_document"}]}}},"LIVE_ANNOUNCER_PROVIDER":{"provide":{"__symbolic":"reference","name":"LiveAnnouncer"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":94,"character":9}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":94,"character":25}},{"__symbolic":"reference","name":"LiveAnnouncer"}],[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":95,"character":9}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":95,"character":25},"arguments":[{"__symbolic":"reference","name":"LIVE_ANNOUNCER_ELEMENT_TOKEN"}]}],{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":96,"character":4}],"useFactory":{"__symbolic":"reference","name":"LIVE_ANNOUNCER_PROVIDER_FACTORY"}},"TOUCH_BUFFER_MS":650,"FocusOrigin":{"__symbolic":"interface"},"FocusMonitor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":42,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":74,"character":31},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":74,"character":58}]}],"monitor":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"stopMonitoring":[{"__symbolic":"method"}],"focusVia":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_registerGlobalListeners":[{"__symbolic":"method"}],"_toggleClass":[{"__symbolic":"method"}],"_setClasses":[{"__symbolic":"method"}],"_setOriginForCurrentEventQueue":[{"__symbolic":"method"}],"_wasCausedByTouch":[{"__symbolic":"method"}],"_onFocus":[{"__symbolic":"method"}],"_onBlur":[{"__symbolic":"method"}],"_incrementMonitoredElementCount":[{"__symbolic":"method"}],"_decrementMonitoredElementCount":[{"__symbolic":"method"}]}},"CdkMonitorFocus":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":380,"character":1},"arguments":[{"selector":"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]"}]}],"members":{"cdkFocusChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":385,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":387,"character":35},{"__symbolic":"reference","name":"FocusMonitor"}]}],"ngOnDestroy":[{"__symbolic":"method"}]}},"FOCUS_MONITOR_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentDispatcher","ngZone","platform"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentDispatcher"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"FocusMonitor"},"arguments":[{"__symbolic":"reference","name":"ngZone"},{"__symbolic":"reference","name":"platform"}]}}},"FOCUS_MONITOR_PROVIDER":{"provide":{"__symbolic":"reference","name":"FocusMonitor"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":410,"character":14}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":410,"character":30}},{"__symbolic":"reference","name":"FocusMonitor"}],{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":74,"character":31},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":74,"character":58}],"useFactory":{"__symbolic":"reference","name":"FOCUS_MONITOR_PROVIDER_FACTORY"}},"isFakeMousedownFromScreenReader":{"__symbolic":"function","parameters":["event"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"buttons"},"right":0}},"A11yModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":21,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":22,"character":12},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"PlatformModule","line":22,"character":26}],"declarations":[{"__symbolic":"reference","name":"CdkTrapFocus"},{"__symbolic":"reference","name":"FocusTrapDeprecatedDirective"},{"__symbolic":"reference","name":"CdkMonitorFocus"}],"exports":[{"__symbolic":"reference","name":"CdkTrapFocus"},{"__symbolic":"reference","name":"FocusTrapDeprecatedDirective"},{"__symbolic":"reference","name":"CdkMonitorFocus"}],"providers":[{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","name":"FocusTrapFactory"},{"__symbolic":"reference","name":"AriaDescriber"},{"__symbolic":"reference","name":"LIVE_ANNOUNCER_PROVIDER"},{"__symbolic":"reference","name":"ARIA_DESCRIBER_PROVIDER"},{"__symbolic":"reference","name":"FOCUS_MONITOR_PROVIDER"}]}]}],"members":{}}},"origins":{"FocusTrapDirective":"./focus-trap/focus-trap","RegisteredMessage":"./aria-describer/aria-describer","MESSAGES_CONTAINER_ID":"./aria-describer/aria-describer","CDK_DESCRIBEDBY_ID_PREFIX":"./aria-describer/aria-describer","CDK_DESCRIBEDBY_HOST_ATTRIBUTE":"./aria-describer/aria-describer","AriaDescriber":"./aria-describer/aria-describer","ARIA_DESCRIBER_PROVIDER_FACTORY":"./aria-describer/aria-describer","ARIA_DESCRIBER_PROVIDER":"./aria-describer/aria-describer","Highlightable":"./key-manager/activedescendant-key-manager","ActiveDescendantKeyManager":"./key-manager/activedescendant-key-manager","FocusableOption":"./key-manager/focus-key-manager","FocusKeyManager":"./key-manager/focus-key-manager","ListKeyManagerOption":"./key-manager/list-key-manager","ListKeyManager":"./key-manager/list-key-manager","FocusTrap":"./focus-trap/focus-trap","FocusTrapFactory":"./focus-trap/focus-trap","FocusTrapDeprecatedDirective":"./focus-trap/focus-trap","CdkTrapFocus":"./focus-trap/focus-trap","InteractivityChecker":"./interactivity-checker/interactivity-checker","LIVE_ANNOUNCER_ELEMENT_TOKEN":"./live-announcer/live-announcer","AriaLivePoliteness":"./live-announcer/live-announcer","LiveAnnouncer":"./live-announcer/live-announcer","LIVE_ANNOUNCER_PROVIDER_FACTORY":"./live-announcer/live-announcer","LIVE_ANNOUNCER_PROVIDER":"./live-announcer/live-announcer","TOUCH_BUFFER_MS":"./focus-monitor/focus-monitor","FocusOrigin":"./focus-monitor/focus-monitor","FocusMonitor":"./focus-monitor/focus-monitor","CdkMonitorFocus":"./focus-monitor/focus-monitor","FOCUS_MONITOR_PROVIDER_FACTORY":"./focus-monitor/focus-monitor","FOCUS_MONITOR_PROVIDER":"./focus-monitor/focus-monitor","isFakeMousedownFromScreenReader":"./fake-mousedown","A11yModule":"./a11y-module"},"importAs":"@angular/cdk/a11y"}
1
+ {"__symbolic":"module","version":4,"metadata":{"FocusTrapDirective":{"__symbolic":"reference","name":"CdkTrapFocus"},"RegisteredMessage":{"__symbolic":"interface"},"MESSAGES_CONTAINER_ID":"cdk-describedby-message-container","CDK_DESCRIBEDBY_ID_PREFIX":"cdk-describedby-message","CDK_DESCRIBEDBY_HOST_ATTRIBUTE":"cdk-describedby-host","AriaDescriber":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":48,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":52,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":52,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}],"describe":[{"__symbolic":"method"}],"removeDescription":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_createMessageElement":[{"__symbolic":"method"}],"_deleteMessageElement":[{"__symbolic":"method"}],"_createMessagesContainer":[{"__symbolic":"method"}],"_deleteMessagesContainer":[{"__symbolic":"method"}],"_removeCdkDescribedByReferenceIds":[{"__symbolic":"method"}],"_addMessageReference":[{"__symbolic":"method"}],"_removeMessageReference":[{"__symbolic":"method"}],"_isElementDescribedByMessage":[{"__symbolic":"method"}],"_canBeDescribed":[{"__symbolic":"method"}]}},"ARIA_DESCRIBER_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentDispatcher","_document"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentDispatcher"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"AriaDescriber"},"arguments":[{"__symbolic":"reference","name":"_document"}]}}},"ARIA_DESCRIBER_PROVIDER":{"provide":{"__symbolic":"reference","name":"AriaDescriber"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":216,"character":9}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":216,"character":25}},{"__symbolic":"reference","name":"AriaDescriber"}],{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":217,"character":4}],"useFactory":{"__symbolic":"reference","name":"ARIA_DESCRIBER_PROVIDER_FACTORY"}},"Highlightable":{"__symbolic":"interface"},"ActiveDescendantKeyManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ListKeyManager"},"members":{"setActiveItem":[{"__symbolic":"method"}]}},"FocusableOption":{"__symbolic":"interface"},"FocusKeyManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ListKeyManager"},"members":{"setFocusOrigin":[{"__symbolic":"method"}],"setActiveItem":[{"__symbolic":"method"}]}},"ListKeyManagerOption":{"__symbolic":"interface"},"ListKeyManager":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"QueryList","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":58,"character":40,"context":{"typeName":"T"},"module":"./key-manager/list-key-manager"}]}]}],"skipPredicate":[{"__symbolic":"method"}],"withWrap":[{"__symbolic":"method"}],"withVerticalOrientation":[{"__symbolic":"method"}],"withHorizontalOrientation":[{"__symbolic":"method"}],"withTypeAhead":[{"__symbolic":"method"}],"setActiveItem":[{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method"}],"setFirstItemActive":[{"__symbolic":"method"}],"setLastItemActive":[{"__symbolic":"method"}],"setNextItemActive":[{"__symbolic":"method"}],"setPreviousItemActive":[{"__symbolic":"method"}],"updateActiveItemIndex":[{"__symbolic":"method"}],"_setActiveItemByDelta":[{"__symbolic":"method"}],"_setActiveInWrapMode":[{"__symbolic":"method"}],"_setActiveInDefaultMode":[{"__symbolic":"method"}],"_setActiveItemByIndex":[{"__symbolic":"method"}]}},"FocusTrap":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":47,"character":22,"context":{"typeName":"HTMLElement"},"module":"./focus-trap/focus-trap"},{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":49,"character":21},{"__symbolic":"error","message":"Could not resolve type","line":50,"character":23,"context":{"typeName":"Document"},"module":"./focus-trap/focus-trap"},null]}],"destroy":[{"__symbolic":"method"}],"attachAnchors":[{"__symbolic":"method"}],"focusInitialElementWhenReady":[{"__symbolic":"method"}],"focusFirstTabbableElementWhenReady":[{"__symbolic":"method"}],"focusLastTabbableElementWhenReady":[{"__symbolic":"method"}],"_getRegionBoundary":[{"__symbolic":"method"}],"focusInitialElement":[{"__symbolic":"method"}],"focusFirstTabbableElement":[{"__symbolic":"method"}],"focusLastTabbableElement":[{"__symbolic":"method"}],"_getFirstTabbableElement":[{"__symbolic":"method"}],"_getLastTabbableElement":[{"__symbolic":"method"}],"_createAnchor":[{"__symbolic":"method"}],"_executeOnStable":[{"__symbolic":"method"}]}},"FocusTrapFactory":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":280,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":287,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":287,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":49,"character":21},{"__symbolic":"reference","name":"any"}]}],"create":[{"__symbolic":"method"}]}},"FocusTrapDeprecatedDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":312,"character":1},"arguments":[{"selector":"cdk-focus-trap"}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":319,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":325,"character":35},{"__symbolic":"reference","name":"FocusTrapFactory"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}]}},"CdkTrapFocus":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":340,"character":1},"arguments":[{"selector":"[cdkTrapFocus]","exportAs":"cdkTrapFocus"}]}],"members":{"enabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":354,"character":3},"arguments":["cdkTrapFocus"]}]}],"autoCapture":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":362,"character":3},"arguments":["cdkTrapFocusAutoCapture"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":370,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":370,"character":14}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":325,"character":35},{"__symbolic":"reference","name":"FocusTrapFactory"},{"__symbolic":"reference","name":"any"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}]}},"InteractivityChecker":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":23,"character":33}]}],"isDisabled":[{"__symbolic":"method"}],"isVisible":[{"__symbolic":"method"}],"isTabbable":[{"__symbolic":"method"}],"isFocusable":[{"__symbolic":"method"}]}},"LIVE_ANNOUNCER_ELEMENT_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":19,"character":48},"arguments":["liveAnnouncerElement"]},"AriaLivePoliteness":{"__symbolic":"interface"},"LiveAnnouncer":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":29,"character":7}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":19},"arguments":[{"__symbolic":"reference","name":"LIVE_ANNOUNCER_ELEMENT_TOKEN"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":30,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}],"announce":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_createLiveElement":[{"__symbolic":"method"}]}},"LIVE_ANNOUNCER_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentDispatcher","liveElement","_document"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentDispatcher"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"LiveAnnouncer"},"arguments":[{"__symbolic":"reference","name":"liveElement"},{"__symbolic":"reference","name":"_document"}]}}},"LIVE_ANNOUNCER_PROVIDER":{"provide":{"__symbolic":"reference","name":"LiveAnnouncer"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":94,"character":9}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":94,"character":25}},{"__symbolic":"reference","name":"LiveAnnouncer"}],[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":95,"character":9}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":95,"character":25},"arguments":[{"__symbolic":"reference","name":"LIVE_ANNOUNCER_ELEMENT_TOKEN"}]}],{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":96,"character":4}],"useFactory":{"__symbolic":"reference","name":"LIVE_ANNOUNCER_PROVIDER_FACTORY"}},"TOUCH_BUFFER_MS":650,"FocusOrigin":{"__symbolic":"interface"},"FocusMonitor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":42,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":74,"character":31},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":74,"character":58}]}],"monitor":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"stopMonitoring":[{"__symbolic":"method"}],"focusVia":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"_registerGlobalListeners":[{"__symbolic":"method"}],"_toggleClass":[{"__symbolic":"method"}],"_setClasses":[{"__symbolic":"method"}],"_setOriginForCurrentEventQueue":[{"__symbolic":"method"}],"_wasCausedByTouch":[{"__symbolic":"method"}],"_onFocus":[{"__symbolic":"method"}],"_onBlur":[{"__symbolic":"method"}],"_incrementMonitoredElementCount":[{"__symbolic":"method"}],"_decrementMonitoredElementCount":[{"__symbolic":"method"}]}},"CdkMonitorFocus":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":380,"character":1},"arguments":[{"selector":"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]"}]}],"members":{"cdkFocusChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":385,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":387,"character":35},{"__symbolic":"reference","name":"FocusMonitor"}]}],"ngOnDestroy":[{"__symbolic":"method"}]}},"FOCUS_MONITOR_PROVIDER_FACTORY":{"__symbolic":"function","parameters":["parentDispatcher","ngZone","platform"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"reference","name":"parentDispatcher"},"right":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"FocusMonitor"},"arguments":[{"__symbolic":"reference","name":"ngZone"},{"__symbolic":"reference","name":"platform"}]}}},"FOCUS_MONITOR_PROVIDER":{"provide":{"__symbolic":"reference","name":"FocusMonitor"},"deps":[[{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":410,"character":14}},{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":410,"character":30}},{"__symbolic":"reference","name":"FocusMonitor"}],{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":74,"character":31},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":74,"character":58}],"useFactory":{"__symbolic":"reference","name":"FOCUS_MONITOR_PROVIDER_FACTORY"}},"isFakeMousedownFromScreenReader":{"__symbolic":"function","parameters":["event"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"buttons"},"right":0}},"A11yModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":21,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":22,"character":12},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"PlatformModule","line":22,"character":26}],"declarations":[{"__symbolic":"reference","name":"CdkTrapFocus"},{"__symbolic":"reference","name":"FocusTrapDeprecatedDirective"},{"__symbolic":"reference","name":"CdkMonitorFocus"}],"exports":[{"__symbolic":"reference","name":"CdkTrapFocus"},{"__symbolic":"reference","name":"FocusTrapDeprecatedDirective"},{"__symbolic":"reference","name":"CdkMonitorFocus"}],"providers":[{"__symbolic":"reference","name":"InteractivityChecker"},{"__symbolic":"reference","name":"FocusTrapFactory"},{"__symbolic":"reference","name":"AriaDescriber"},{"__symbolic":"reference","name":"LIVE_ANNOUNCER_PROVIDER"},{"__symbolic":"reference","name":"ARIA_DESCRIBER_PROVIDER"},{"__symbolic":"reference","name":"FOCUS_MONITOR_PROVIDER"}]}]}],"members":{}}},"origins":{"FocusTrapDirective":"./focus-trap/focus-trap","RegisteredMessage":"./aria-describer/aria-describer","MESSAGES_CONTAINER_ID":"./aria-describer/aria-describer","CDK_DESCRIBEDBY_ID_PREFIX":"./aria-describer/aria-describer","CDK_DESCRIBEDBY_HOST_ATTRIBUTE":"./aria-describer/aria-describer","AriaDescriber":"./aria-describer/aria-describer","ARIA_DESCRIBER_PROVIDER_FACTORY":"./aria-describer/aria-describer","ARIA_DESCRIBER_PROVIDER":"./aria-describer/aria-describer","Highlightable":"./key-manager/activedescendant-key-manager","ActiveDescendantKeyManager":"./key-manager/activedescendant-key-manager","FocusableOption":"./key-manager/focus-key-manager","FocusKeyManager":"./key-manager/focus-key-manager","ListKeyManagerOption":"./key-manager/list-key-manager","ListKeyManager":"./key-manager/list-key-manager","FocusTrap":"./focus-trap/focus-trap","FocusTrapFactory":"./focus-trap/focus-trap","FocusTrapDeprecatedDirective":"./focus-trap/focus-trap","CdkTrapFocus":"./focus-trap/focus-trap","InteractivityChecker":"./interactivity-checker/interactivity-checker","LIVE_ANNOUNCER_ELEMENT_TOKEN":"./live-announcer/live-announcer","AriaLivePoliteness":"./live-announcer/live-announcer","LiveAnnouncer":"./live-announcer/live-announcer","LIVE_ANNOUNCER_PROVIDER_FACTORY":"./live-announcer/live-announcer","LIVE_ANNOUNCER_PROVIDER":"./live-announcer/live-announcer","TOUCH_BUFFER_MS":"./focus-monitor/focus-monitor","FocusOrigin":"./focus-monitor/focus-monitor","FocusMonitor":"./focus-monitor/focus-monitor","CdkMonitorFocus":"./focus-monitor/focus-monitor","FOCUS_MONITOR_PROVIDER_FACTORY":"./focus-monitor/focus-monitor","FOCUS_MONITOR_PROVIDER":"./focus-monitor/focus-monitor","isFakeMousedownFromScreenReader":"./fake-mousedown","A11yModule":"./a11y-module"},"importAs":"@angular/cdk/a11y"}
@@ -27,6 +27,11 @@ export declare class ListKeyManager<T extends ListKeyManagerOption> {
27
27
  private _typeaheadSubscription;
28
28
  private _vertical;
29
29
  private _horizontal;
30
+ /**
31
+ * Predicate function that can be used to check whether an item should be skipped
32
+ * by the key manager. By default, disabled items are skipped.
33
+ */
34
+ private _skipPredicateFn;
30
35
  private _pressedLetters;
31
36
  constructor(_items: QueryList<T>);
32
37
  /**
@@ -36,6 +41,12 @@ export declare class ListKeyManager<T extends ListKeyManagerOption> {
36
41
  tabOut: Subject<void>;
37
42
  /** Stream that emits whenever the active item of the list manager changes. */
38
43
  change: Subject<number>;
44
+ /**
45
+ * Sets the predicate function that determines which items should be skipped by the
46
+ * list key manager.
47
+ * @param predicate Function that determines whether the given item should be skipped.
48
+ */
49
+ skipPredicate(predicate: (item: T) => boolean): this;
39
50
  /**
40
51
  * Turns on wrapping mode, which ensures that the active item will wrap to
41
52
  * the other end of list when there are no more items in the given direction.
@@ -1019,7 +1019,7 @@ var AriaDescriber = /** @class */ (function () {
1019
1019
  * @return {?}
1020
1020
  */
1021
1021
  function (hostElement, message) {
1022
- if (hostElement.nodeType !== this._document.ELEMENT_NODE || !message.trim()) {
1022
+ if (!this._canBeDescribed(hostElement, message)) {
1023
1023
  return;
1024
1024
  }
1025
1025
  if (!messageRegistry.has(message)) {
@@ -1043,7 +1043,7 @@ var AriaDescriber = /** @class */ (function () {
1043
1043
  * @return {?}
1044
1044
  */
1045
1045
  function (hostElement, message) {
1046
- if (hostElement.nodeType !== this._document.ELEMENT_NODE || !message.trim()) {
1046
+ if (!this._canBeDescribed(hostElement, message)) {
1047
1047
  return;
1048
1048
  }
1049
1049
  if (this._isElementDescribedByMessage(hostElement, message)) {
@@ -1222,6 +1222,22 @@ var AriaDescriber = /** @class */ (function () {
1222
1222
  var /** @type {?} */ messageId = registeredMessage && registeredMessage.messageElement.id;
1223
1223
  return !!messageId && referenceIds.indexOf(messageId) != -1;
1224
1224
  };
1225
+ /**
1226
+ * Determines whether a message can be described on a particular element.
1227
+ * @param {?} element
1228
+ * @param {?} message
1229
+ * @return {?}
1230
+ */
1231
+ AriaDescriber.prototype._canBeDescribed = /**
1232
+ * Determines whether a message can be described on a particular element.
1233
+ * @param {?} element
1234
+ * @param {?} message
1235
+ * @return {?}
1236
+ */
1237
+ function (element, message) {
1238
+ return element.nodeType === this._document.ELEMENT_NODE && message != null &&
1239
+ !!("" + message).trim();
1240
+ };
1225
1241
  AriaDescriber.decorators = [
1226
1242
  { type: _angular_core.Injectable },
1227
1243
  ];
@@ -1276,6 +1292,11 @@ var ListKeyManager = /** @class */ (function () {
1276
1292
  this._letterKeyStream = new rxjs_Subject.Subject();
1277
1293
  this._typeaheadSubscription = rxjs_Subscription.Subscription.EMPTY;
1278
1294
  this._vertical = true;
1295
+ /**
1296
+ * Predicate function that can be used to check whether an item should be skipped
1297
+ * by the key manager. By default, disabled items are skipped.
1298
+ */
1299
+ this._skipPredicateFn = function (item) { return item.disabled; };
1279
1300
  this._pressedLetters = [];
1280
1301
  /**
1281
1302
  * Stream that emits any time the TAB key is pressed, so components can react
@@ -1296,6 +1317,27 @@ var ListKeyManager = /** @class */ (function () {
1296
1317
  }
1297
1318
  });
1298
1319
  }
1320
+ /**
1321
+ * Sets the predicate function that determines which items should be skipped by the
1322
+ * list key manager.
1323
+ * @param predicate Function that determines whether the given item should be skipped.
1324
+ */
1325
+ /**
1326
+ * Sets the predicate function that determines which items should be skipped by the
1327
+ * list key manager.
1328
+ * @param {?} predicate Function that determines whether the given item should be skipped.
1329
+ * @return {?}
1330
+ */
1331
+ ListKeyManager.prototype.skipPredicate = /**
1332
+ * Sets the predicate function that determines which items should be skipped by the
1333
+ * list key manager.
1334
+ * @param {?} predicate Function that determines whether the given item should be skipped.
1335
+ * @return {?}
1336
+ */
1337
+ function (predicate) {
1338
+ this._skipPredicateFn = predicate;
1339
+ return this;
1340
+ };
1299
1341
  /**
1300
1342
  * Turns on wrapping mode, which ensures that the active item will wrap to
1301
1343
  * the other end of list when there are no more items in the given direction.
@@ -1385,7 +1427,7 @@ var ListKeyManager = /** @class */ (function () {
1385
1427
  for (var /** @type {?} */ i = 1; i < items.length + 1; i++) {
1386
1428
  var /** @type {?} */ index = (_this._activeItemIndex + i) % items.length;
1387
1429
  var /** @type {?} */ item = items[index];
1388
- if (!item.disabled && /** @type {?} */ ((item.getLabel))().toUpperCase().trim().indexOf(inputString) === 0) {
1430
+ if (!_this._skipPredicateFn(item) && /** @type {?} */ ((item.getLabel))().toUpperCase().trim().indexOf(inputString) === 0) {
1389
1431
  _this.setActiveItem(index);
1390
1432
  break;
1391
1433
  }
@@ -1441,11 +1483,17 @@ var ListKeyManager = /** @class */ (function () {
1441
1483
  this.setNextItemActive();
1442
1484
  break;
1443
1485
  }
1486
+ else {
1487
+ return;
1488
+ }
1444
1489
  case _angular_cdk_keycodes.UP_ARROW:
1445
1490
  if (this._vertical) {
1446
1491
  this.setPreviousItemActive();
1447
1492
  break;
1448
1493
  }
1494
+ else {
1495
+ return;
1496
+ }
1449
1497
  case _angular_cdk_keycodes.RIGHT_ARROW:
1450
1498
  if (this._horizontal === 'ltr') {
1451
1499
  this.setNextItemActive();
@@ -1455,6 +1503,9 @@ var ListKeyManager = /** @class */ (function () {
1455
1503
  this.setPreviousItemActive();
1456
1504
  break;
1457
1505
  }
1506
+ else {
1507
+ return;
1508
+ }
1458
1509
  case _angular_cdk_keycodes.LEFT_ARROW:
1459
1510
  if (this._horizontal === 'ltr') {
1460
1511
  this.setPreviousItemActive();
@@ -1464,6 +1515,9 @@ var ListKeyManager = /** @class */ (function () {
1464
1515
  this.setNextItemActive();
1465
1516
  break;
1466
1517
  }
1518
+ else {
1519
+ return;
1520
+ }
1467
1521
  default:
1468
1522
  // Attempt to use the `event.key` which also maps it to the user's keyboard language,
1469
1523
  // otherwise fall back to resolving alphanumeric characters via the keyCode.
@@ -1608,15 +1662,13 @@ var ListKeyManager = /** @class */ (function () {
1608
1662
  * @return {?}
1609
1663
  */
1610
1664
  function (delta, items) {
1611
- // when active item would leave menu, wrap to beginning or end
1612
- this._activeItemIndex =
1613
- (this._activeItemIndex + delta + items.length) % items.length;
1614
- // skip all disabled menu items recursively until an enabled one is reached
1615
- if (items[this._activeItemIndex].disabled) {
1616
- this._setActiveInWrapMode(delta, items);
1617
- }
1618
- else {
1619
- this.setActiveItem(this._activeItemIndex);
1665
+ for (var /** @type {?} */ i = 1; i <= items.length; i++) {
1666
+ var /** @type {?} */ index = (this._activeItemIndex + (delta * i) + items.length) % items.length;
1667
+ var /** @type {?} */ item = items[index];
1668
+ if (!this._skipPredicateFn(item)) {
1669
+ this.setActiveItem(index);
1670
+ return;
1671
+ }
1620
1672
  }
1621
1673
  };
1622
1674
  /**
@@ -1661,7 +1713,7 @@ var ListKeyManager = /** @class */ (function () {
1661
1713
  if (!items[index]) {
1662
1714
  return;
1663
1715
  }
1664
- while (items[index].disabled) {
1716
+ while (this._skipPredicateFn(items[index])) {
1665
1717
  index += fallbackDelta;
1666
1718
  if (!items[index]) {
1667
1719
  return;