{"version":3,"file":"gsa-sam-ngx-uswds.mjs","sources":["../../../projects/uswds-components/src/lib/accordion/accordion-items.ts","../../../projects/uswds-components/src/lib/util/key.ts","../../../projects/uswds-components/src/lib/util/util.ts","../../../projects/uswds-components/src/lib/accordion/accordion-animations.ts","../../../projects/uswds-components/src/lib/accordion/accordion.config.ts","../../../projects/uswds-components/src/lib/accordion/accordion.component.ts","../../../projects/uswds-components/src/lib/accordion/accordion.component.html","../../../projects/uswds-components/src/lib/accordion/accordion.module.ts","../../../projects/uswds-components/src/lib/button-group/button-group.component.ts","../../../projects/uswds-components/src/lib/button-group/button-group-item.component.ts","../../../projects/uswds-components/src/lib/button-group/button-group.module.ts","../../../projects/uswds-components/src/lib/util/navigation.ts","../../../projects/uswds-components/src/lib/shared/link-template/link-template.component.ts","../../../projects/uswds-components/src/lib/shared/link-template/link-template.component.html","../../../projects/uswds-components/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/uswds-components/src/lib/breadcrumb/breadcrumb.component.html","../../../projects/uswds-components/src/lib/shared/link-template/link-template.module.ts","../../../projects/uswds-components/src/lib/breadcrumb/breadcrumb.module.ts","../../../projects/uswds-components/src/lib/card/card-body.component.ts","../../../projects/uswds-components/src/lib/card/card-footer.component.ts","../../../projects/uswds-components/src/lib/card/card-group.component.ts","../../../projects/uswds-components/src/lib/card/card-header.component.ts","../../../projects/uswds-components/src/lib/card/card-media.component.ts","../../../projects/uswds-components/src/lib/card/card.component.ts","../../../projects/uswds-components/src/lib/card/card.module.ts","../../../projects/uswds-components/src/lib/checkbox/checkbox.component.ts","../../../projects/uswds-components/src/lib/checkbox/checkbox.component.html","../../../projects/uswds-components/src/lib/checkbox/checkbox.module.ts","../../../projects/uswds-components/src/lib/combo-box-list/combo-box-list.component.ts","../../../projects/uswds-components/src/lib/combo-box-list/combo-box-list.component.html","../../../projects/uswds-components/src/lib/combo-box/combo-box.component.ts","../../../projects/uswds-components/src/lib/combo-box/combo-box.component.html","../../../projects/uswds-components/src/lib/combo-box-list/combo-box-list.module.ts","../../../projects/uswds-components/src/lib/combo-box/combo-box.module.ts","../../../projects/uswds-components/src/lib/dropdown/dropdown.component.ts","../../../projects/uswds-components/src/lib/dropdown/dropdown.component.html","../../../projects/uswds-components/src/lib/dropdown/dropdown.module.ts","../../../projects/uswds-components/src/lib/file-input/file-input.config.ts","../../../projects/uswds-components/src/lib/file-input/file-preview.directive.ts","../../../projects/uswds-components/src/lib/file-input/file-input.component.ts","../../../projects/uswds-components/src/lib/file-input/file-input.component.html","../../../projects/uswds-components/src/lib/file-input/file-input.module.ts","../../../projects/uswds-components/src/lib/modal/modal-dismiss-reasons.ts","../../../projects/uswds-components/src/lib/modal/modal-ref.ts","../../../projects/uswds-components/src/lib/util/focus-trap.ts","../../../projects/uswds-components/src/lib/util/transition/util.ts","../../../projects/uswds-components/src/lib/environment.ts","../../../projects/uswds-components/src/lib/util/transition/usaTransition.ts","../../../projects/uswds-components/src/lib/util/popup.ts","../../../projects/uswds-components/src/lib/modal/modal-wrapper.ts","../../../projects/uswds-components/src/lib/modal/modal-animations.ts","../../../projects/uswds-components/src/lib/modal/modal-window.ts","../../../projects/uswds-components/src/lib/util/scrollbar.ts","../../../projects/uswds-components/src/lib/modal/modal-stack.ts","../../../projects/uswds-components/src/lib/modal/modal-config.ts","../../../projects/uswds-components/src/lib/modal/modal.ts","../../../projects/uswds-components/src/lib/modal/modal.module.ts","../../../projects/uswds-components/src/lib/sidenav/sidenav.component.ts","../../../projects/uswds-components/src/lib/sidenav/sidenav.component.html","../../../projects/uswds-components/src/lib/sidenav/sidenav.module.ts","../../../projects/uswds-components/src/lib/search/search.component.ts","../../../projects/uswds-components/src/lib/search/search.component.html","../../../projects/uswds-components/src/lib/search/search.module.ts","../../../projects/uswds-components/src/lib/step-indicator/step-indicator.config.ts","../../../projects/uswds-components/src/lib/step-indicator/step-indicator.component.ts","../../../projects/uswds-components/src/lib/step-indicator/step-indicator.component.html","../../../projects/uswds-components/src/lib/step-indicator/step-indicator-header.component.ts","../../../projects/uswds-components/src/lib/step-indicator/step-indicator.module.ts","../../../projects/uswds-components/src/lib/table/table-data.ts","../../../projects/uswds-components/src/lib/table/table-sort.component.ts","../../../projects/uswds-components/src/lib/table/table-header.ts","../../../projects/uswds-components/src/lib/table/table.config.ts","../../../projects/uswds-components/src/lib/table/highlight-on-hover.directive.ts","../../../projects/uswds-components/src/lib/table/table.component.ts","../../../projects/uswds-components/src/lib/table/table.component.html","../../../projects/uswds-components/src/lib/table/table.module.ts","../../../projects/uswds-components/src/lib/textarea/textarea.component.ts","../../../projects/uswds-components/src/lib/textarea/textarea.component.html","../../../projects/uswds-components/src/lib/form-field/form-field.component.ts","../../../projects/uswds-components/src/lib/form-field/form-field.component.html","../../../projects/uswds-components/src/lib/form-field/form-field.module.ts","../../../projects/uswds-components/src/lib/textarea/textarea.module.ts","../../../projects/uswds-components/src/lib/tooltip/tooltip.directive.ts","../../../projects/uswds-components/src/lib/tooltip/tooltip.module.ts","../../../projects/uswds-components/src/lib/datepicker/date-picker-errors.ts","../../../projects/uswds-components/src/lib/util/hover-class.ts","../../../projects/uswds-components/src/lib/datepicker/calendar/calendar-body.ts","../../../projects/uswds-components/src/lib/datepicker/calendar/calendar-body.html","../../../projects/uswds-components/src/lib/datepicker/dateadapter/date-adapter.ts","../../../projects/uswds-components/src/lib/datepicker/date-selection-model.ts","../../../projects/uswds-components/src/lib/datepicker/date-range-selection-strategy.ts","../../../projects/uswds-components/src/lib/datepicker/dateadapter/date-formats.ts","../../../projects/uswds-components/src/lib/datepicker/calendar/month-view.ts","../../../projects/uswds-components/src/lib/datepicker/calendar/month-view.html","../../../projects/uswds-components/src/lib/datepicker/calendar/multi-year-view.ts","../../../projects/uswds-components/src/lib/datepicker/calendar/multi-year-view.html","../../../projects/uswds-components/src/lib/datepicker/calendar/year-view.ts","../../../projects/uswds-components/src/lib/datepicker/calendar/year-view.html","../../../projects/uswds-components/src/lib/datepicker/calendar/calendar.ts","../../../projects/uswds-components/src/lib/datepicker/calendar/calendar-header.html","../../../projects/uswds-components/src/lib/datepicker/calendar/calendar.html","../../../projects/uswds-components/src/lib/util/boolean-property.ts","../../../projects/uswds-components/src/lib/datepicker/date-picker-base.ts","../../../projects/uswds-components/src/lib/datepicker/date-picker-content.html","../../../projects/uswds-components/src/lib/datepicker/date-picker.ts","../../../projects/uswds-components/src/lib/datepicker/date-picker-input-base.ts","../../../projects/uswds-components/src/lib/datepicker/date-picker-input.ts","../../../projects/uswds-components/src/lib/datepicker/date-picker-button.ts","../../../projects/uswds-components/src/lib/datepicker/date-picker-button.html","../../../projects/uswds-components/src/lib/datepicker/dateadapter/native-date-adapter.ts","../../../projects/uswds-components/src/lib/datepicker/dateadapter/native-date-formats.ts","../../../projects/uswds-components/src/lib/datepicker/date-picker.module.ts","../../../projects/uswds-components/src/lib/character-count/character-count.directive.ts","../../../projects/uswds-components/src/lib/character-count/character-count.module.ts","../../../projects/uswds-components/src/lib/radio/radio.component.ts","../../../projects/uswds-components/src/lib/radio/radio.component.html","../../../projects/uswds-components/src/lib/radio/radio-group.component.ts","../../../projects/uswds-components/src/lib/radio/radio.module.ts","../../../projects/uswds-components/src/lib/header/header-selectors.ts","../../../projects/uswds-components/src/lib/header/header.component.ts","../../../projects/uswds-components/src/lib/header/header.component.html","../../../projects/uswds-components/src/lib/header/header-submenu.component.ts","../../../projects/uswds-components/src/lib/header/header.module.ts","../../../projects/uswds-components/src/lib/time-picker/time-picker.ts","../../../projects/uswds-components/src/lib/time-picker/time-picker.module.ts","../../../projects/uswds-components/src/lib/input/affix.directive.ts","../../../projects/uswds-components/src/lib/input/affix.module.ts","../../../projects/uswds-components/src/public-api.ts","../../../projects/uswds-components/src/gsa-sam-ngx-uswds.ts"],"sourcesContent":["import { \n  AfterContentChecked, \n  ContentChildren, \n  Directive, \n  EventEmitter, \n  Input, \n  Output, \n  QueryList, \n  TemplateRef } from \"@angular/core\";\n\nlet nextId = 0;\n\n\n/**\n * An event emitted right before toggling an accordion panel.\n */\n export interface UsaAccordionChangeEvent {\n  /**\n   * The id of the accordion panel being toggled.\n   */\n  panelId: string;\n\n  /**\n   * The next state of the panel.\n   *\n   * `true` if it will be opened, `false` if closed.\n   */\n  nextState: boolean;\n\n  /**\n   * Calling this function will prevent panel toggling.\n   */\n  preventDefault: () => void;\n}\n\n/**\n * A directive that wraps the accordion panel content.\n */\n@Directive({ selector: 'ng-template[UsaAccordionContent]' })\nexport class UsaAccordionContent {\n  constructor(public templateRef: TemplateRef<any>) { }\n}\n\n/**\n * A directive that wraps the accordion header content.\n */\n@Directive({ \n  selector: 'ng-template[UsaAccordionHeader]',\n})\nexport class UsaAccordionHeader {\n  constructor(public templateRef: TemplateRef<any>) { }\n}\n\n/**\n * A directive that wraps an individual accordion panel with title and collapsible content.\n */\n@Directive({ selector: 'usa-accordion-item' })\nexport class UsaAccordionItem implements AfterContentChecked {\n  /**\n   *  If `true`, the panel is disabled an can't be toggled.\n   */\n  @Input() disabled = false;\n\n  /**\n   *  An optional id for the panel that must be unique on the page.\n   *\n   *  If not provided, it will be auto-generated in the `usa-panel-xxx` format.\n   */\n  @Input() id = `usa-accordion-item-${nextId++}`;\n\n  /** Defines whether the accordion is in expanded or collapsed state */\n  @Input() expanded = false;\n\n  /** A flag to specified that the transition panel classes have been initialized */\n  initClassDone = false;\n\n  /**\n   *  The panel header.\n   */\n  @Input() header: string;\n\n\n  /**\n   * An optional class applied to the accordion card element that wraps both panel title and content.\n   *\n   * @since 5.3.0\n   */\n  @Input() cardClass: string;\n\n  /**\n   * Defines the aria label for accordion header button. Generally if the header is a text, then this is\n   * not needed as screen readers can announce the text. However, if the header is a custom template\n   * with items that screen readers cannot compute (icons / images), then having a descriptive label can\n   * help\n   */\n  @Input() ariaLabel: string;\n\n  /**\n   * An event emitted when the panel is shown, after the transition. It has no payload.\n   *\n   * @since 8.0.0\n   */\n  @Output() shown = new EventEmitter<void>();\n\n  /**\n   * An event emitted when the panel is hidden, after the transition. It has no payload.\n   *\n   * @since 8.0.0\n   */\n  @Output() hidden = new EventEmitter<void>();\n\n\n  /** Provided template for Accordion header */\n  headerTpl: UsaAccordionHeader;\n\n  /** Provided template for Accordion content */\n  contentTpl: UsaAccordionContent;\n\n  @ContentChildren(UsaAccordionHeader, { descendants: false }) headerTpls: QueryList<UsaAccordionHeader>;\n  @ContentChildren(UsaAccordionContent, { descendants: false }) contentTpls: QueryList<UsaAccordionContent>;\n\n  constructor() {}\n\n\n  ngAfterContentChecked() {\n    // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n    // only @ContentChildren allows us to specify the {descendants: false} option.\n    // Without {descendants: false} there are issues when accordions are wrapped inside accordions\n    this.headerTpl = this.headerTpls.first;\n    this.contentTpl = this.contentTpls.first;\n  }\n}","export enum Key {\n  Tab = 'Tab',\n  Enter = 'Enter',\n  Escape = 'Escape',\n  Space = 'Space',\n  PageUp = 'PageUp',\n  PageDown = 'PageDown',\n  End = 'End',\n  Home = 'Home',\n  ArrowLeft = 'ArrowLeft',\n  ArrowUp = 'ArrowUp',\n  ArrowRight = 'ArrowRight',\n  ArrowDown = 'ArrowDown',\n}\n\n// Key values in IE/EDGE\nexport enum MicrosfotKeys {\n  Tab = 'Tab',\n  Enter = 'Enter',\n  Escape = 'Esc',\n  Space = 'Spacebar',\n  PageUp = 'PageUp',\n  PageDown = 'PageDown',\n  End = 'End',\n  Home = 'Home',\n  ArrowLeft = 'Left',\n  ArrowUp = 'Up',\n  ArrowRight = 'Right',\n  ArrowDown = 'Down',\n}\n\n// Deprecated ascii values\nexport enum KeyCode {\n  Tab = 9,\n  Enter = 13,\n  Escape = 27,\n  Space = 32,\n  PageUp = 33,\n  PageDown = 34,\n  End = 35,\n  Home = 36,\n  ArrowLeft = 37,\n  ArrowUp = 38,\n  ArrowRight = 39,\n  ArrowDown = 40\n}\n\ntype ModifierKey = 'altKey' | 'shiftKey' | 'ctrlKey' | 'metaKey';\n\nexport function isArrowDown(event: KeyboardEvent) {\n  return event.key === Key.ArrowDown || event.key === MicrosfotKeys.ArrowDown || event.keyCode === KeyCode.ArrowDown;\n}\n\nexport function isArrowUp(event: KeyboardEvent) {\n  return event.key === Key.ArrowUp || event.key === MicrosfotKeys.ArrowUp || event.keyCode === KeyCode.ArrowUp;\n}\n\nexport function isArrowRight(event: KeyboardEvent) {\n  return event.key === Key.ArrowRight || event.key === MicrosfotKeys.ArrowRight || event.keyCode === KeyCode.ArrowRight;\n}\n\nexport function isArrowLeft(event: KeyboardEvent) {\n  return event.key === Key.ArrowLeft || event.key === MicrosfotKeys.ArrowLeft || event.keyCode === KeyCode.ArrowLeft;\n}\n\nexport function isHome(event: KeyboardEvent) {\n  return event.key === Key.Home || event.key === MicrosfotKeys.Home || event.keyCode === KeyCode.Home;\n}\n\nexport function isEnd(event: KeyboardEvent) {\n  return event.key === Key.End || event.key === MicrosfotKeys.End || event.keyCode === KeyCode.End;\n}\n\nexport function isEscape(event: KeyboardEvent) {\n  return event.key === Key.Escape || event.key === MicrosfotKeys.Escape || event.keyCode === KeyCode.Escape;\n}\n\nexport function isPageDown(event: KeyboardEvent) {\n  return event.key === Key.PageDown || event.key === MicrosfotKeys.PageDown || event.keyCode === KeyCode.PageDown;\n}\n\nexport function isPageUp(event: KeyboardEvent) {\n  return event.key === Key.PageUp || event.key === MicrosfotKeys.PageUp || event.keyCode === KeyCode.PageUp;\n} \n\nexport function isEnter(event: KeyboardEvent) {\n  return event.key === Key.Enter || event.key === MicrosfotKeys.Enter || event.keyCode === KeyCode.Enter;\n}\n\nexport function isTab(event: KeyboardEvent) {\n  return !hasModifierKey(event) && (event.key === Key.Tab || event.key === MicrosfotKeys.Tab || event.keyCode === KeyCode.Tab);\n}\n\nexport function isSpace(event: KeyboardEvent) {\n  return event.key === Key.Space || event.key === MicrosfotKeys.Space || event.keyCode === KeyCode.Space;\n}\n\n/**\n * Checks whether a modifier key is pressed.\n * @param event Event to be checked.\n */\nexport function hasModifierKey(event: KeyboardEvent, ...modifiers: ModifierKey[]): boolean {\n  if (modifiers.length) {\n    return modifiers.some(modifier => event[modifier]);\n  }\n\n  return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\n}\n","import {NgZone} from '@angular/core';\nimport {Observable, OperatorFunction} from 'rxjs';\n\nexport function toInteger(value: any): number {\n  return parseInt(`${value}`, 10);\n}\n\nexport function toString(value: any): string {\n  return (value !== undefined && value !== null) ? `${value}` : '';\n}\n\nexport function getValueInRange(value: number, max: number, min = 0): number {\n  return Math.max(Math.min(value, max), min);\n}\n\nexport function isString(value: any): value is string {\n  return typeof value === 'string';\n}\n\nexport function isNumber(value: any): value is number {\n  return !isNaN(toInteger(value));\n}\n\nexport function isInteger(value: any): value is number {\n  return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n\nexport function isDefined(value: any): boolean {\n  return value !== undefined && value !== null;\n}\n\nexport function padNumber(value: number) {\n  if (isNumber(value)) {\n    return `0${value}`.slice(-2);\n  } else {\n    return '';\n  }\n}\n\nexport function regExpEscape(text) {\n  return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nexport function hasClassName(element: any, className: string): boolean {\n  return element && element.className && element.className.split &&\n      element.className.split(/\\s+/).indexOf(className) >= 0;\n}\n\nif (typeof Element !== 'undefined' && !Element.prototype.closest) {\n  // Polyfill for ie10+\n\n  if (!Element.prototype.matches) {\n    // IE uses the non-standard name: msMatchesSelector\n    Element.prototype.matches = (Element.prototype as any).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n  }\n\n  Element.prototype.closest = function(s: string) {\n    let el = this;\n    if (!document.documentElement.contains(el)) {\n      return null;\n    }\n    do {\n      if (el.matches(s)) {\n        return el;\n      }\n      el = el.parentElement || el.parentNode;\n    } while (el !== null && el.nodeType === 1);\n    return null;\n  };\n}\n\nexport function closest(element: HTMLElement, selector?: string): HTMLElement | null {\n  if (!selector) {\n    return null;\n  }\n\n  /*\n   * In certain browsers (e.g. Edge 44.18362.449.0) HTMLDocument does\n   * not support `Element.prototype.closest`. To emulate the correct behaviour\n   * we return null when the method is missing.\n   *\n   * Note that in evergreen browsers `closest(document.documentElement, 'html')`\n   * will return the document element whilst in Edge null will be returned. This\n   * compromise was deemed good enough.\n   */\n  if (typeof element.closest === 'undefined') {\n    return null;\n  }\n\n  return element.closest(selector);\n}\n\n/**\n * Force a browser reflow\n * @param element element where to apply the reflow\n */\nexport function reflow(element: HTMLElement) {\n  return (element || document.body).getBoundingClientRect();\n}\n\n/**\n * Creates an observable where all callbacks are executed inside a given zone\n *\n * @param zone\n */\nexport function runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n  return (source) => {\n    return new Observable(observer => {\n      const onNext = (value: T) => zone.run(() => observer.next(value));\n      const onError = (e: any) => zone.run(() => observer.error(e));\n      const onComplete = () => zone.run(() => observer.complete());\n      return source.subscribe(onNext, onError, onComplete);\n    });\n  };\n}\n\nexport function removeAccents(str: string): string {\n  return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n\n/**\n* Returns the the last element in the array where predicate is true, and null\n* otherwise.\n* @param array The source array to search in\n* @param predicate find calls predicate once for each element of the array, in descending\n* order, until it finds one where predicate returns true. If such an element is found,\n* findLast immediately returns that element. Otherwise, findLast returns null.\n*/\nexport function findLast<T>(array: Array<T>, predicate: (value: T, index: number, obj: T[]) => boolean): T {\n  let l = array.length;\n  while (l--) {\n      if (predicate(array[l], l, array))\n          return array[l];\n  }\n  return null;\n}\n\n/**\n* Returns the the last element's index in the array where predicate is true, and null\n* otherwise.\n* @param array The source array to search in\n* @param predicate calls predicate once for each element of the array, in descending\n* order, until it finds one where predicate returns true. If such an element is found,\n* findLastIndex immediately returns that element's index. Otherwise, findLast returns -1.\n*/\nexport function findLastIndex<T>(array: Array<T>, predicate: (value: T, index: number, obj: T[]) => boolean): number {\n  let l = array.length;\n  while (l--) {\n      if (predicate(array[l], l, array))\n          return l;\n  }\n  return -1;\n}\n\n/**\n * Gets the next focusable item in a list. It is expected that the items in the given list contain\n * a disabled property such that disabled items are skipped when calculating next focusable item.\n * @param currentIndex - Starting point from where to start checking\n * @param allItems - all items in list\n * @param delta - either 1 to get next item in positive direction or -1 to get next item in previous direction\n * @returns next item\n */\nexport function getNextItemInList<T extends {disabled: boolean}>(currentIndex: number, allItems: T[], delta: 1 | -1) {\n  let nextItemIndex = ((currentIndex + delta) + allItems.length) % allItems.length;\n\n  while(nextItemIndex != currentIndex) {\n    if (!allItems[nextItemIndex].disabled) {\n      break;\n    }\n    \n    nextItemIndex = ((nextItemIndex + delta) + allItems.length) % allItems.length;    \n  }\n\n  return allItems[nextItemIndex];\n}\n\n/**\n * Gets the next focusable item's index in a list. It is expected that the items in the given list contain\n * a disabled property such that disabled items are skipped when calculating next focusable item.\n * @param currentIndex - Starting point from where to start checking\n * @param allItems - all items in list\n * @param delta - either 1 to get next item in positive direction or -1 to get next item in previous direction\n * @returns next focusable item's index\n */\n export function getNextItemIndexInList<T extends {disabled?: boolean}>(currentIndex: number, allItems: T[], delta: 1 | -1) {\n  let nextItemIndex = ((currentIndex + delta) + allItems.length) % allItems.length;\n\n  while(nextItemIndex != currentIndex) {\n    if (!allItems[nextItemIndex].disabled) {\n      break;\n    }\n    \n    nextItemIndex = ((nextItemIndex + delta) + allItems.length) % allItems.length;    \n  }\n\n  return nextItemIndex;\n}\n\n/**\n * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -&gt; `[]`\n * - `[null]` -&gt; `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -&gt; `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -&gt; `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -&gt; `[\"[object Object]\"]`\n * - `{ a: 0 }` -&gt; `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\n export function coerceStringArray(value: any, separator: string | RegExp = /\\s+/): string[] {\n  const result = [];\n\n  if (value != null) {\n    const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n    for (const sourceValue of sourceValues) {\n      const trimmedString = `${sourceValue}`.trim();\n      if (trimmedString) {\n        result.push(trimmedString);\n      }\n    }\n  }\n\n  return result;\n}\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/** Time and timing curve for accordion item animations. */\nexport const ACCORDION_ITEM_ANIMATION_TIMING = '150ms linear';\n\nexport const UsaExpansionAnimations: {\n  readonly bodyExpansion: AnimationTriggerMetadata;\n} = {\n  /** Animation that expands and collapses the accordion item content. */\n  bodyExpansion: trigger('bodyExpansion', [\n    state('collapsed, void', style({height: '0px', display: 'none', 'padding-top': 0, 'padding-bottom': 0})),\n    state('expanded', style({height: '*'})),\n    transition('expanded <=> collapsed, void => collapsed',\n      animate(ACCORDION_ITEM_ANIMATION_TIMING)),\n  ])\n};","import {Injectable} from '@angular/core';\n\n/**\n * A configuration service for the UsaAccordion component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all accordions used in the application.\n */\n@Injectable({providedIn: 'root'})\nexport class UsaAccordionConfig {\n  singleSelect = false;\n  bordered: boolean;\n  headerLevel: 2 | 3 | 4 | 5 | 6 = 4;\n  private _animation: boolean = true;\n\n  get animation(): boolean { return this._animation; }\n  set animation(animation: boolean) { this._animation = animation; }\n}\n","import {\n  Component,\n  ContentChildren,\n  Input,\n  QueryList,\n  ElementRef,\n  AfterContentChecked,\n  EventEmitter,\n  Output,\n  Renderer2,\n  Directive,\n  Host,\n  Optional,\n} from '@angular/core';\nimport { Key, KeyCode, MicrosfotKeys } from '../util/key';\nimport { isString, findLast, getNextItemInList } from '../util/util';\nimport { UsaAccordionItem, UsaAccordionChangeEvent } from './accordion-items';\nimport { UsaAccordionConfig } from './accordion.config';\nimport { AnimationEvent } from '@angular/animations';\nimport { UsaExpansionAnimations } from './accordion-animations';\n\n@Component({\n  selector: 'usa-accordion',\n  exportAs: 'usaAccordion',\n  templateUrl: './accordion.component.html',\n  animations: [UsaExpansionAnimations.bodyExpansion],\n  host: {\n    class: 'display-block',\n  },\n})\nexport class UsaAccordionComponent implements AfterContentChecked {\n  @ContentChildren(UsaAccordionItem) panels: QueryList<UsaAccordionItem>;\n\n  /**\n   * If `true`, accordion will be animated.\n   * @default true\n   */\n  @Input() animation: boolean = true;\n\n  /**\n   * An array or comma separated strings of panel ids that should be opened **initially**.\n   *\n   * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n   * the `(panelChange)` event.\n   */\n  @Input() activeIds: string[] = [];\n\n  /**\n   *  If `true`, only one panel could be opened at a time.\n   *\n   *  Opening a new panel will close others.\n   */\n  @Input() singleSelect: boolean;\n\n  /**\n   *\n   *  Apply the classes to the accordion.\n   */\n  @Input() class: string = '';\n\n  /**\n   * Type of panels.\n   *\n   * Bootstrap provides styles for the following types: `'success'`, `'info'`, `'warning'`, `'danger'`, `'primary'`,\n   * `'secondary'`, `'light'` and `'dark'`.\n   */\n  @Input() bordered: boolean;\n\n  /**\n   * Heading level to use for accordion headers - possible inputs are anywhere from heading level 2 to 6.\n   */\n  @Input() headerLevel: 2 | 3 | 4 | 5 | 6 = 4;\n\n  /**\n   * Event emitted right before the panel toggle happens.\n   */\n  @Output() panelChange = new EventEmitter<UsaAccordionChangeEvent>();\n\n  /**\n   * An event emitted when the expanding animation is finished on the panel. The payload is the panel id.\n   */\n  @Output() shown = new EventEmitter<string>();\n\n  /**\n   * An event emitted when the collapsing animation is finished on the panel, and before the panel element is removed.\n   * The payload is the panel id.\n   *\n   * @since 8.0.0\n   */\n  @Output() hidden = new EventEmitter<string>();\n\n  constructor(\n    config: UsaAccordionConfig,\n    private _element: ElementRef,\n    private _renderer: Renderer2\n  ) {\n    this.animation = config.animation;\n    this.bordered = config.bordered;\n    this.singleSelect = config.singleSelect;\n    this.headerLevel = config.headerLevel;\n  }\n\n  /**\n   * Checks if a panel with a given id is expanded.\n   */\n  isExpanded(panelId: string): boolean {\n    return this.activeIds.indexOf(panelId) > -1;\n  }\n\n  /**\n   * Expands a panel with a given id.\n   *\n   * Has no effect if the panel is already expanded or disabled.\n   */\n  expand(panelId: string): void {\n    this._changeOpenState(this._findPanelById(panelId), true);\n  }\n\n  /**\n   * Expands all panels, if `[closeOthers]` is `false`.\n   *\n   * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n   */\n  expandAll(): void {\n    if (this.singleSelect) {\n      if (this.activeIds.length === 0 && this.panels.length) {\n        this._changeOpenState(this.panels.first, true);\n      }\n    } else {\n      this.panels.forEach((panel) => this._changeOpenState(panel, true));\n    }\n  }\n\n  /**\n   * Collapses a panel with the given id.\n   *\n   * Has no effect if the panel is already collapsed or disabled.\n   */\n  collapse(panelId: string) {\n    this._changeOpenState(this._findPanelById(panelId), false);\n  }\n\n  /**\n   * Collapses all opened panels.\n   */\n  collapseAll() {\n    this.panels.forEach((panel) => {\n      this._changeOpenState(panel, false);\n    });\n  }\n\n  /**\n   * Toggles a panel with the given id.\n   *\n   * Has no effect if the panel is disabled.\n   */\n  toggle(panelId: string) {\n    const panel = this._findPanelById(panelId);\n    if (panel) {\n      this._changeOpenState(panel, !panel.expanded);\n    }\n  }\n\n  /** Gets the expanded state string. */\n  _getExpandedState(panel: UsaAccordionItem) {\n    return panel.expanded ? 'expanded' : 'collapsed';\n  }\n\n  ngAfterContentChecked() {\n    // active id updates\n    if (isString(this.activeIds)) {\n      this.activeIds = this.activeIds.split(/\\s*,\\s*/);\n    }\n    if (this.activeIds.length > 1) {\n      // update panels open states\n      this.panels.forEach((panel) => {\n        panel.expanded =\n          panel.expanded ||\n          (!panel.disabled && this.activeIds.indexOf(panel.id) > -1);\n      });\n    }\n    // closeOthers updates\n    if (this.activeIds.length > 1 && this.singleSelect) {\n      this._closeOthers(this.activeIds[0]);\n      this._updateActiveIds();\n    }\n  }\n\n  onKeyDown($event: KeyboardEvent, panel: UsaAccordionItem) {\n    const keyPressed = $event.key || $event.keyCode;\n    switch (keyPressed) {\n      case Key.ArrowDown:\n      case MicrosfotKeys.ArrowDown:\n      case KeyCode.ArrowDown:\n        this._getPanelElementHeaderButton(\n          this._getNextAccordion(panel, 1).id\n        ).focus();\n        $event.preventDefault();\n        break;\n      case Key.ArrowUp:\n      case MicrosfotKeys.ArrowUp:\n      case KeyCode.ArrowUp:\n        this._getPanelElementHeaderButton(\n          this._getNextAccordion(panel, -1).id\n        ).focus();\n        $event.preventDefault();\n        break;\n      case Key.Home:\n      case MicrosfotKeys.Home:\n      case KeyCode.Home:\n        const firstPanel = this.panels.find((panel) => !panel.disabled);\n        if (firstPanel) {\n          this._getPanelElementHeaderButton(firstPanel.id).focus();\n        }\n        $event.preventDefault();\n        break;\n      case Key.End:\n      case MicrosfotKeys.End:\n      case KeyCode.End:\n        const lastFocusablePanel = findLast(\n          this.panels.toArray(),\n          (panel) => !panel.disabled\n        );\n        if (lastFocusablePanel) {\n          this._getPanelElementHeaderButton(lastFocusablePanel.id).focus();\n        }\n        $event.preventDefault();\n        break;\n    }\n  }\n\n  onBodyExpansionStart(event: AnimationEvent, panel: HTMLDivElement) {\n    if (event.fromState === 'collapsed' && event.toState === 'expanded') {\n      this._renderer.removeStyle(panel, 'display');\n    }\n  }\n\n  onBodyExpansionEnd(event: AnimationEvent, panel: HTMLDivElement) {\n    if (event.fromState !== 'void') {\n      if (event.toState === 'expanded') {\n        this.shown.emit(panel.id);\n      } else if (event.toState === 'collapsed') {\n        this._renderer.setStyle(panel, 'display', 'none');\n        this.hidden.emit(panel.id);\n      }\n    }\n  }\n\n  private _getNextAccordion(currentPanel: UsaAccordionItem, delta: 1 | -1) {\n    const allPanels = this.panels.toArray();\n    const currentIndex = allPanels.indexOf(currentPanel);\n    const nextPanel = getNextItemInList(currentIndex, allPanels, delta);\n    return nextPanel;\n  }\n\n  private _changeOpenState(panel: UsaAccordionItem | null, nextState: boolean) {\n    if (panel != null && !panel.disabled) {\n      let defaultPrevented = false;\n\n      this.panelChange.emit({\n        panelId: panel.id,\n        nextState: nextState,\n        preventDefault: () => {\n          defaultPrevented = true;\n        },\n      });\n\n      if (!defaultPrevented) {\n        panel.expanded = nextState;\n\n        if (nextState && this.singleSelect) {\n          this._closeOthers(panel.id);\n        }\n        this._updateActiveIds();\n      }\n    }\n  }\n\n  private _closeOthers(panelId: string) {\n    this.panels.forEach((panel) => {\n      if (panel.id !== panelId && panel.expanded) {\n        panel.expanded = false;\n      }\n    });\n  }\n\n  private _findPanelById(panelId: string): UsaAccordionItem | null {\n    return this.panels.find((p) => p.id === panelId) || null;\n  }\n\n  private _updateActiveIds() {\n    this.activeIds = this.panels\n      .filter((panel) => panel.expanded && !panel.disabled)\n      .map((panel) => panel.id);\n  }\n\n  private _getPanelElementHeaderButton(panelId: string): HTMLElement | null {\n    return this._element.nativeElement.querySelector(\n      '#' + panelId + '-header button'\n    );\n  }\n}\n\n@Directive({\n  selector: 'button[UsaAccordionToggle]',\n  host: {\n    type: 'button',\n    '[disabled]': 'panel.disabled',\n    class: 'usa-accordion__button',\n    '[class.collapsed]': '!panel.expanded',\n    '[attr.aria-expanded]': 'panel.expanded',\n    '[attr.aria-controls]': 'panel.expanded ? panel.id : undefined',\n    '[attr.aria-disabled]':\n      'panel.disabled && panel.expanded ? true : undefined',\n    '[attr.aria-label]': 'panel.ariaLabel',\n    '(click)': 'accordion.toggle(panel.id)',\n  },\n})\nexport class UsaAccordionToggle {\n  static ngAcceptInputType_UsaAccordionToggle: UsaAccordionItem | '';\n\n  @Input()\n  set UsaAccordionToggle(panel: UsaAccordionItem) {\n    if (panel) {\n      this.panel = panel;\n    }\n  }\n\n  constructor(\n    public accordion: UsaAccordionComponent,\n    @Optional() @Host() public panel: UsaAccordionItem\n  ) {}\n}\n"," <div class=\"usa-accordion\" [ngClass]=\"class\" [class.usa-accordion--bordered]= \"bordered\" [attr.aria-multiselectable]=\"singleSelect ? true : 'undefined'\">\n  <ng-template ngFor let-panel [ngForOf]=\"panels\">\n    <div role=\"heading\" id=\"{{panel.id}}-header\" class=\"usa-accordion__heading\" [attr.aria-level]=\"headerLevel\">\n      <button class=\"usa-accordion__button\" [UsaAccordionToggle]=\"panel\" (keydown)=\"onKeyDown($event, panel)\">\n        {{panel.header}}\n        <ng-template [ngTemplateOutlet]=\"panel.headerTpl?.templateRef\"></ng-template>\n      </button>\n    </div>\n    <section #panelContent id=\"{{panel.id}}\" class=\"usa-accordion__content overflow-hidden\" [@.disabled]=\"!animation\"\n      [@bodyExpansion]=\"panel.expanded ? 'expanded' : 'collapsed'\"\n      (@bodyExpansion.start)=\"onBodyExpansionStart($event, panelContent)\"\n      (@bodyExpansion.done)=\"onBodyExpansionEnd($event, panelContent)\" [attr.aria-labelledby]=\"panel.id + '-header'\">\n      <ng-template [ngTemplateOutlet]=\"panel.contentTpl?.templateRef || null\"></ng-template>\n    </section>\n  </ng-template>\n </div> ","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport {\n  UsaAccordionContent,\n  UsaAccordionHeader,\n  UsaAccordionItem\n} from \"./accordion-items\";\nimport { UsaAccordionComponent, UsaAccordionToggle } from \"./accordion.component\";\n\n@NgModule({\n  imports: [\n    CommonModule,\n  ],\n  declarations: [\n    UsaAccordionComponent,\n    UsaAccordionHeader,\n    UsaAccordionContent,\n    UsaAccordionToggle,\n    UsaAccordionItem\n  ],\n  exports: [\n    UsaAccordionComponent,\n    UsaAccordionHeader,\n    UsaAccordionContent,\n    UsaAccordionToggle,\n    UsaAccordionItem\n  ]\n})\nexport class UsaAccordionModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'uswds-button-group',\n  template: `\n  <ul class=\"usa-button-group\" [ngClass]=\"{'usa-button-group--segmented': isSegmented}\">\n    <ng-content></ng-content>\n  </ul>`\n})\nexport class USWDSButtonGroupComponent {  \n  @Input() isSegmented = false;\n}\n","import { Component } from \"@angular/core\";\n\n\n@Component({\n  selector: `uswds-button-group-item`,\n  template: `\n    <ng-content></ng-content>\n  `,\n  host: {\n    'class': 'usa-button-group__item'\n  }\n})\nexport class USWDSButtonGroupItemComponent {}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { USWDSButtonGroupItemComponent } from \"./button-group-item.component\";\nimport { USWDSButtonGroupComponent } from \"./button-group.component\";\n\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [\n    USWDSButtonGroupComponent,\n    USWDSButtonGroupItemComponent\n  ],\n  exports: [\n    USWDSButtonGroupComponent,\n    USWDSButtonGroupItemComponent,\n  ]\n})\nexport class USWDSButtonGroupModule {};\n","import { QueryParamsHandling } from \"@angular/router\";\n\nexport enum UsaNavigationMode {\n  /** \n   * Navigation within a known route of the application. Navigation will be done through\n   * Angular's routerLink directive\n   */\n   INTERNAL, \n\n   /**\n    * Navigation to external url outside of the application. Navigation will be done through href attribute\n    */\n   EXTERNAL, \n \n   /**\n    * No Navigation should occur. Only an event will be emitted when use clicks on a navigation item with this mode\n    */\n   EVENT,\n \n   /**\n    * No Navigation and no event on user click. Link will be uninteractive\n    */\n   LABEL,\n}\n\nexport interface UsaNavigationLink<T = any> {\n  /**\n   * Text to be displayed in the link or button\n  */\n   text: string;\n\n   /**\n    * Identifier to use for the item\n    */\n   id: string;\n\n\n  /** \n   * Define navigation behavior for the link\n   * \n   * NavigationMode.INTERNAL - Use angular routerlinks\n   * \n   * NavigationMode.EXTERNAL - use anchor tag's href attribute\n   * \n   * NavigationMode.EVENT - Do not route, simply fire an event on click\n   * \n   * NavigationMode.LABEL - Non interactive label. Do not route, do not fire event\n   */\n   mode?: UsaNavigationMode;\n\n   /**\n    * Selected items have visual indicators that separate\n    * then from non-selected links\n    */\n   selected?: boolean;\n\n   /** \n    * Defines route to navigate to on click. The route will be attached to an href attribute\n    * of an anchor tag. If you'd like to control navigation application side, please leave this value\n    * undefined\n    */\n   path?: string;\n\n   /** \n    * Defines additional query parameters to add for angular routing\n    * Only relevent when routing is internal\n    */\n   queryParams?: {[key: string]: any};\n\n  /** \n   * Defines query param strategy to use for angular routing\n   * Only relevent when routing is internal\n   */\n   queryParamsHandling?: QueryParamsHandling;\n\n   /** Additional sub routes for the navigation link */\n   children?: T[] & UsaNavigationLink[];\n\n   /** Any additional data to add into the model */\n   [key: string]: any;\n}","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { UsaNavigationLink, UsaNavigationMode } from \"../../util/navigation\";\n\n\n@Component({\n  selector: `usa-link-template`,\n  templateUrl: './link-template.component.html'\n})\nexport class UsaLinkTemplateComponent {\n\n  NavigationMode = UsaNavigationMode;\n\n  @Input() link: UsaNavigationLink;\n\n  /**\n   * Class to apply to anchor tag element when\n   * displaying link.\n   * @default - empty string\n   */\n  @Input() class: string = '';\n\n  /** \n   * Class to apply for selected item. \n   * Use empty string to not apply any class for selected item\n   * @default 'usa-current'\n   * */\n  @Input() currentClass: string = 'usa-current';\n\n\n  @Output() linkClicked = new EventEmitter<UsaNavigationLink>();\n\n  /**\n   * creates url from provided route and query params\n   * @param item - Link to use when building url\n   */\n  urlBuilder(item: UsaNavigationLink): string {\n    let url = item.path;\n    const queryParams = this.queryStringBuilder(item);\n    if (queryParams) {\n      if (url.indexOf('?') === -1) {\n        url += '?' + queryParams;\n      } else if (url.indexOf('?') === url.length - 1) {\n        url += queryParams;\n      } else {\n        url += '&' + queryParams;\n      }\n    }\n    return url;\n  }\n\n  private queryStringBuilder(item: UsaNavigationLink): string {\n    const ret = [];\n    let keys = [];\n    if (item.queryParams) {\n      keys = Object.keys(item.queryParams);\n    }\n    for (const d of keys) {\n      ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(item.queryParams[d]));\n    }\n    return ret.join('&');\n  }\n}","<ng-container [ngSwitch]=\"link.mode\">\n  <ng-container *ngSwitchCase=\"NavigationMode.EXTERNAL\">\n    <ng-container [ngTemplateOutlet]=\"sideNavExternalLinkTemplate\" [ngTemplateOutletContext]=\"{$implicit:link}\">\n    </ng-container>\n  </ng-container>\n  <ng-container *ngSwitchCase=\"NavigationMode.INTERNAL\">\n    <ng-container [ngTemplateOutlet]=\"sideNavInternalLinkTemplate\" [ngTemplateOutletContext]=\"{$implicit:link}\">\n    </ng-container>\n  </ng-container>\n  <ng-container *ngSwitchCase=\"NavigationMode.EVENT\">\n    <ng-container [ngTemplateOutlet]=\"sideNavEventLinkTemplate\" [ngTemplateOutletContext]=\"{$implicit:link}\">\n    </ng-container>\n  </ng-container>\n  <ng-container *ngSwitchCase=\"NavigationMode.LABEL\">\n    <ng-container [ngTemplateOutlet]=\"sideNavEventLabelTemplate\" [ngTemplateOutletContext]=\"{$implicit:link}\">\n    </ng-container>\n  </ng-container>\n  <ng-container *ngSwitchDefault>\n    <ng-container [ngTemplateOutlet]=\"sideNavEventLinkTemplate\" [ngTemplateOutletContext]=\"{$implicit:link}\">\n    </ng-container>\n  </ng-container>\n</ng-container>\n\n<ng-template #sideNavInternalLinkTemplate let-link>\n  <a [attr.class]=\"link.selected ? class + ' ' + currentClass : class\" [routerLink]=\"[link.path]\" \n    (click)=\"linkClicked.emit(link)\" [queryParams]=\"link.queryParams\" \n    [queryParamsHandling]=\"link.queryParamsHandling\" href=\"javascript:void(0)\">\n    <span>{{link.text}}</span>\n  </a>\n</ng-template>\n\n<ng-template #sideNavExternalLinkTemplate let-link>\n  <a [attr.class]=\"link.selected ? class + ' ' + currentClass : class\"[attr.href]=\"urlBuilder(link)\"\n    (click)=\"linkClicked.emit(link)\">\n    <span>{{link.text}}</span>\n  </a>\n</ng-template>\n\n<ng-template #sideNavEventLinkTemplate let-link>\n  <a [attr.class]=\"link.selected ? class + ' ' + currentClass : class\" (click)=\"linkClicked.emit(link)\" \n    href=\"javascript:void(0)\">\n    <span>{{link.text}}</span>\n  </a>\n</ng-template>\n\n<ng-template #sideNavEventLabelTemplate let-link>\n  <span>{{link.text}}</span>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  Directive,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { UsaNavigationLink } from '../util/navigation';\n\n/**\n * Selector for custom link template for displaying breadcrumbs.\n * Usage:\n * <usa-breadcrumb [items]=\"items\">\n *  <a *usaBreadcrumbLinkTemplate=\"let breadcrumb\" href=\"myHref\">{{breadcrumb.text}}</a>\n * </usa-breadcrumbs>\n */\n@Directive({\n  selector: `[usaBreadcrumbLinkTemplate]`,\n})\nexport class UsaBreadcrumbLinkTemplate {\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Component({\n  selector: 'usa-breadcrumb',\n  templateUrl: './breadcrumb.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['./breadcrumb.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class UsaBreadcrumbComponent implements OnInit, OnChanges {\n  @ContentChild(UsaBreadcrumbLinkTemplate)\n  breadcrumbLinkTemplate: UsaBreadcrumbLinkTemplate;\n\n  /**\n   * Toggles whether to wrap breadcrumb trail into new line on responsive\n   * view or to truncate breadcrumb text. Value of true indicates breadcrumb\n   * will wrap to new line, false will allow text to truncate\n   * @default false\n   */\n  @Input() wrap: boolean = false;\n\n  /**\n   * Hides breadcrumbs when there is only one item to show for\n   * breadcrumb trail. This occurs whenever the user is on the root\n   * level page of the breadcrumb trail\n   */\n  @Input() hideSingleCrumb: boolean = false;\n\n  /** List of breadcrumb items */\n  @Input() items: UsaNavigationLink[];\n\n  @Output() selected = new EventEmitter<UsaNavigationLink>();\n\n  _displayedCrumbs: UsaNavigationLink[];\n  _showBreadcrumbs: boolean = true;\n  _selectedBreadcrumb: UsaNavigationLink;\n\n  constructor(\n    /**\n     * For public component usage if parents ever want to programatically\n     * invoke change detection on component\n     */\n    public cdr: ChangeDetectorRef\n  ) {}\n\n  /**\n   * Initialize internal data within the component\n   */\n  ngOnInit(): void {\n    this.updateShownCrumbs();\n  }\n\n  /**\n   * Update data when relevant input reference changes\n   */\n  ngOnChanges(changes: SimpleChanges) {\n    if (!changes.items && !changes.hideSingleCrumb) return;\n\n    if (this._selectedBreadcrumb) {\n      this._selectedBreadcrumb.selected = false;\n    }\n\n    this.updateShownCrumbs();\n  }\n\n  /**\n   * Called whenever we need to update selected breadcrum to\n   * another item. Normally occurs if user clicks on the breadcrum\n   * @param breadcrumb\n   */\n  updateSelectedBreadcrumb(breadcrumb: UsaNavigationLink) {\n    this._selectedBreadcrumb.selected = false;\n    breadcrumb.selected = true;\n    this.updateShownCrumbs();\n    this.selected.emit(breadcrumb);\n  }\n\n  /**\n   * Internal function to update the list of breadcrumbs currently shown as well\n   * as other component fields\n   */\n  private updateShownCrumbs() {\n    if (!this.items || !this.items.length) {\n      this._showBreadcrumbs = false;\n      return;\n    }\n\n    let truncateIndex = this.items.findIndex(\n      (breadcrumb) => breadcrumb.selected\n    );\n\n    if (truncateIndex < 0) {\n      truncateIndex = this.items.length - 1;\n      this.items[truncateIndex].selected = true;\n    }\n\n    this._selectedBreadcrumb = this.items[truncateIndex];\n\n    if (truncateIndex === 0 && this.hideSingleCrumb) {\n      this._showBreadcrumbs = false;\n    } else {\n      this._showBreadcrumbs = true;\n    }\n\n    this._displayedCrumbs = this.items.slice(0, truncateIndex);\n  }\n}\n","<nav *ngIf=\"_showBreadcrumbs\" class=\"usa-breadcrumb\" aria-label=\"Breadcrumbs\" [ngClass]=\"{'usa-breadcrumb--wrap': wrap}\">\n  <ol class=\"usa-breadcrumb__list\">\n    <li *ngFor=\"let breadcrumb of _displayedCrumbs\" class=\"usa-breadcrumb__list-item\">\n        <ng-container *ngIf=\"breadcrumbLinkTemplate; else defaultLinkTemplate\" [ngTemplateOutlet]=\"breadcrumbLinkTemplate.templateRef\"\n          [ngTemplateOutletContext]=\"{$implicit: breadcrumb}\"\n        ></ng-container>\n        \n        <ng-template #defaultLinkTemplate>\n          <usa-link-template \n            [link]=\"breadcrumb\" \n            [currentClass]=\"''\" \n            [class]=\"'usa-breadcrumb__link'\"\n            (linkClicked)=\"updateSelectedBreadcrumb($event)\">\n          </usa-link-template>\n        </ng-template>\n    </li>\n    <li class=\"usa-breadcrumb__list-item usa-current\" aria-current=\"page\">\n      <span>{{_selectedBreadcrumb.text}}</span>\n    </li>\n  </ol>\n</nav>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { RouterModule } from \"@angular/router\";\nimport { UsaLinkTemplateComponent } from \"./link-template.component\";\n\n\n@NgModule({\n  declarations: [\n    UsaLinkTemplateComponent\n  ],\n  imports: [\n    CommonModule,\n    RouterModule,\n  ],\n  exports: [\n    UsaLinkTemplateComponent\n  ]\n})\nexport class UsaLinkTemplateModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  UsaBreadcrumbComponent,\n  UsaBreadcrumbLinkTemplate,\n} from './breadcrumb.component';\nimport { UsaLinkTemplateModule } from '../shared/link-template/link-template.module';\n// import { UsaBreadcrumbLinkTemplate } from './breadcrumb.component';\n\n@NgModule({\n  declarations: [UsaBreadcrumbComponent, UsaBreadcrumbLinkTemplate],\n  imports: [CommonModule, UsaLinkTemplateModule],\n  exports: [UsaBreadcrumbComponent, UsaBreadcrumbLinkTemplate],\n})\nexport class UsaBreadcrumbModule {}\n","import { Component } from '@angular/core';\n\n\n@Component({\n  selector: `uswds-card-body`,\n  template: `\n    <ng-content></ng-content>\n  `,\n  host: {\n    'class': 'usa-card__body'\n  },\n})\nexport class USWDSCardBodyComponent {}\n","import { Component } from '@angular/core';\n\n\n@Component({\n  selector: `uswds-card-footer`,\n  template: `\n    <ng-content></ng-content>\n  `,\n  host: {\n    'class': 'usa-card__footer'\n  }\n})\nexport class USWDSCardFooterComponent {}\n","import { Component } from '@angular/core';\n\n\n@Component({\n  selector: `uswds-card-group`,\n  template: `\n  <ul class=\"usa-card-group\">\n    <ng-content></ng-content>\n  </ul>`\n})\nexport class USWDSCardGroupComponent {\n  \n}\n","import { Component } from '@angular/core';\n\n\n@Component({\n  selector: `uswds-card-header`,\n  template: `\n    <ng-content></ng-content>\n  `,\n  host: {\n    'class': 'usa-card__header'\n  }\n})\nexport class USWDSCardHeaderComponent {}\n","import { Component, Input } from '@angular/core';\n\n\n@Component({\n  selector: `uswds-card-media`,\n  template: `\n  <header>\n    <div class=\"usa-card__img\">\n      <ng-content></ng-content>\n    </div>\n  </header>`,\n  host: {\n    'class': 'usa-card__media',\n    '[class.usa-card__inset]': 'inset',\n    '[class.usa-card__exdent]': 'exdent',\n  }\n})\nexport class USWDSCardMediaComponent {\n  // Inset media content - aligns media within the card's padding\n  @Input() inset = false;\n\n  // Stretch media content to card border\n  @Input() exdent = false;\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: '[uswds-card]',\n  template: `\n    <div class=\"usa-card__container\">\n      <ng-content></ng-content>\n    </div>\n  `,\n  host: {\n    'class': 'usa-card',\n    '[class.usa-card--header-first]': 'headerFirst',\n    '[class.usa-card--flag]': 'flagView',\n    '[class.usa-card--media-right]': 'flagMediaRight',\n  }\n})\nexport class USWDSCardComponent {\n  @Input() flagView = false;\n  @Input() headerFirst = false;\n  @Input() flagMediaRight = false;\n\n  // Additional classes to add to card item eg: 'tablet:grid-col-6 desktop:grid-col-9'\n  @Input() additionalStyles: string;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { USWDSCardComponent } from './card.component';\nimport { USWDSCardBodyComponent } from './card-body.component';\nimport { USWDSCardFooterComponent } from './card-footer.component';\nimport { USWDSCardGroupComponent } from './card-group.component';\nimport { USWDSCardHeaderComponent } from './card-header.component';\nimport { USWDSCardMediaComponent } from './card-media.component';\n\n\n\n@NgModule({\n  declarations: [\n    USWDSCardComponent,\n    USWDSCardBodyComponent,\n    USWDSCardFooterComponent,\n    USWDSCardGroupComponent,\n    USWDSCardHeaderComponent,\n    USWDSCardMediaComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    USWDSCardComponent,\n    USWDSCardBodyComponent,\n    USWDSCardFooterComponent,\n    USWDSCardGroupComponent,\n    USWDSCardHeaderComponent,\n    USWDSCardMediaComponent\n  ]\n})\nexport class USWDSCardModule { }\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet nextId = 0;\n\n@Directive({\n  selector: '[usaCheckboxDescription]',\n  host: {\n    class: 'usa-checkbox__label-description'\n  }\n})\nexport class UsaCheckboxLabelDescription {}\n@Component({\n  selector: 'usa-checkbox',\n  templateUrl: './checkbox.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => UsaCheckboxComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaCheckboxComponent implements ControlValueAccessor {\n\n  @ViewChild('input') nativeInput: ElementRef<HTMLInputElement>;\n\n  @Input() tile: boolean;\n\n  @Input() checked: boolean;\n\n  @Input() disabled: boolean;\n\n  @Input('aria-label') ariaLabel: string = '';\n\n  @Input('aria-labelledby') ariaLabelledby: string;\n\n  @Input('aria-describedby') ariaDescribedby: string;\n\n  @Input() id = `usa-checkbox-${nextId++}`;\n\n  @Input() required: boolean = false;\n\n  /** Name value will be applied to the input element if present */\n  @Input() name: string;\n\n  @Input()\n  get indeterminate() { return this._indeterminate};\n  set indeterminate(value: boolean) {\n    if (!this.nativeInput) {\n      return;\n    }\n    this._indeterminate = value;\n    this.nativeInput.nativeElement.indeterminate = value;\n  }\n\n  private _indeterminate: boolean\n\n  @Output() change = new EventEmitter<boolean>();\n\n  /**\n  * Invoked when the model has been changed\n  */\n  onChange: (_: any) => void = (_: any) => {};\n\n /**\n  * Invoked when the model has been touched\n  */\n  onTouched: () => void = () => {};\n\n\n  constructor(public cdr: ChangeDetectorRef) { }\n\n  writeValue(value: any): void {\n    this.checked = !!value;\n    this.cdr.markForCheck();\n  }\n\n /**\n  * Registers a callback function that should be called when the control's value changes in the UI.\n  * @param fn\n  */\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  /**\n    * Registers a callback function that should be called when the control receives a blur event.\n    * @param fn\n    */\n  registerOnTouched(fn: any): void {\n     this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  _getAriaChecked(): 'true' | 'false' | 'mixed' {\n    if (this.checked) {\n      return 'true';\n    }\n\n    return this.indeterminate ? 'mixed' : 'false';\n  }\n\n  onCheckboxClick($event: PointerEvent) {\n    $event.stopPropagation();\n    this.checked = !this.checked;\n    this.onChange(this.checked);\n    this.change.emit(this.checked);\n  }\n\n  preventChangePropogation($event: Event) {\n    $event.stopPropagation();\n  }\n\n}\n","<div class=\"usa-checkbox\">\n  <input #input\n  class=\"usa-checkbox__input\" type=\"checkbox\"\n  [ngClass]=\"{'usa-checkbox__input--tile': tile}\"\n  [id]=\"id\"\n  [required]=\"required\"\n  [checked]=\"checked\"\n  [indeterminate]=\"indeterminate\"\n  [disabled]=\"disabled\"\n  [attr.name]=\"name\"\n  [attr.aria-label]=\"ariaLabel || null\"\n  [attr.aria-labelledby]=\"ariaLabelledby\"\n  [attr.aria-checked]=\"_getAriaChecked()\"\n  [attr.aria-describedby]=\"ariaDescribedby\"\n  (change)=\"preventChangePropogation($event)\"\n  (click)=\"onCheckboxClick($event)\">\n  <label class=\"usa-checkbox__label\" [for]=\"id\">\n    <ng-content></ng-content>\n    <ng-content select=\"usaCheckboxDescription\"></ng-content>\n  </label>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UsaCheckboxComponent, UsaCheckboxLabelDescription } from './checkbox.component';\n\n\n\n@NgModule({\n  declarations: [\n    UsaCheckboxComponent, \n    UsaCheckboxLabelDescription\n  ],\n  imports: [\n    CommonModule,\n  ],\n  exports: [\n    UsaCheckboxComponent,\n    UsaCheckboxLabelDescription\n  ]\n})\nexport class UsaCheckboxModule { }\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport {\n  isArrowDown,\n  isArrowUp,\n  isEnd,\n  isEnter,\n  isHome,\n  isPageDown,\n  isPageUp,\n  isTab,\n} from '../util/key';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n  selector: `[usa-combo-box-item-template]`,\n})\nexport class UsaComboBoxItemTemplate {\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Component({\n  selector: `usa-combo-box-list`,\n  templateUrl: './combo-box-list.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaComboboxList implements AfterViewInit, OnDestroy, OnChanges {\n  @ViewChild('dropdownListbox') dropdownListBox: ElementRef<HTMLUListElement>;\n\n  /** List of items to display in dropdown */\n  @Input() items: any[];\n\n  @Input() labelField: string;\n  @Input() valueField: string;\n\n  /** Provided custom template for displaying each item.\n   * If none provided, then the label property of each item will be shown */\n  @Input() customItemTemplate: UsaComboBoxItemTemplate;\n\n  /**\n   * HTML id value to attach to container element\n   */\n  @Input() listId: string;\n\n  /**\n   * If virtualScroll is enabled, a scrollEnd event\n   * will be fired when user scrolls to last item in the list,\n   * allowing clients to load in more data\n   */\n  @Input() virtualScroll = true;\n\n  /**\n   * Direction to display the dropdown box\n   */\n  @Input() direction: 'top' | 'bottom';\n\n  /** Id of label for listbox */\n  @Input() ariaLabelledBy: string;\n\n  @Input() selectedItem: any;\n\n  /**\n   * Emitted when a value is selected from the dropdown list\n   */\n  @Output() selected = new EventEmitter<any>();\n\n  /**\n   * Emitted when the user presses the up arrow key and focus\n   * is on first item in dropdown list. This indicates to the client\n   * that the dropdown list should close and focus should move\n   * back to the combo box input field\n   */\n  @Output() focusInput = new EventEmitter();\n\n  /**\n   * Emitted when user has scrolled to the end of the dropdown list.\n   * This event only fires if virtual scroll is enabled\n   */\n  @Output() scrollEnd = new EventEmitter();\n\n  // Reference to currently focused item\n  _focusedItem: { item: any; index: number; itemHtml: HTMLDataListElement };\n\n  /**\n   * Referenced to currently highlighted item. Highlighted items have a dark\n   * border around to draw attention to it, but do not necessarily have focus.\n   * This can occur if focus is on input and the highlighted item is the item\n   * that best matches input query.\n   */\n  _highlightedItem: { item: any; index: number; itemHtml: HTMLDataListElement };\n\n  /** List of functions to call to un-bind events registered through renderer.listen call */\n  _eventListeners: (() => void)[] = [];\n\n  constructor(\n    private el: ElementRef,\n    private cdr: ChangeDetectorRef,\n    private renderer: Renderer2,\n    @Inject(DOCUMENT) private document\n  ) {}\n\n  trackByFn(index: number) {\n    return index;\n  }\n\n  ngAfterViewInit() {\n    this.setDropdownDirection();\n    this.registerEventHandlers();\n\n    if (this.selectedItem) {\n      const index = this.items.findIndex((item) => item === this.selectedItem);\n      this.highlightItem(index);\n    }\n  }\n\n  ngOnDestroy() {\n    this._eventListeners.forEach((listener) => listener());\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!changes.items) {\n      return;\n    }\n\n    /**\n     * New list of items is provided. Remove listeners to old item list, and attach listeners\n     * to the new items\n     */\n    this._eventListeners.forEach((unlistener) => unlistener());\n    this._eventListeners = [];\n    this.cdr.detectChanges();\n    this.registerEventHandlers();\n  }\n\n  selectItem(item) {\n    if (item.disabled) return;\n\n    this.selected.emit(item);\n  }\n\n  onFocus(item: any, index: number, itemHtml: HTMLDataListElement) {\n    this._focusedItem = { item, index, itemHtml };\n  }\n\n  /**\n   * Handles keypress on combobox dropdown items\n   * @param $event\n   * @returns\n   */\n  onKeyDown($event: KeyboardEvent) {\n    switch (true) {\n      case isArrowDown($event):\n        if (this._focusedItem?.index === this.items.length - 1) return;\n        const nextSibling = this._focusedItem.itemHtml\n          .nextElementSibling as HTMLDataListElement;\n        this.updateFocusedItem(this._focusedItem.index + 1, nextSibling);\n        $event.preventDefault();\n        break;\n\n      case isArrowUp($event):\n        if (this._focusedItem?.index === 0) {\n          this.focusInput.emit();\n          return;\n        }\n\n        const previousSibling = this._focusedItem.itemHtml\n          .previousElementSibling as HTMLDataListElement;\n        this.updateFocusedItem(this._focusedItem.index - 1, previousSibling);\n        $event.preventDefault();\n        break;\n\n      case isPageUp($event):\n      case isPageDown($event):\n        const dropdownNativeElement = this.dropdownListBox.nativeElement;\n\n        if (\n          !dropdownNativeElement.firstElementChild ||\n          !dropdownNativeElement.firstElementChild.clientHeight\n        ) {\n          return;\n        }\n\n        const numItemsToScrollPast = Math.ceil(\n          dropdownNativeElement.clientHeight /\n            dropdownNativeElement.firstElementChild.clientHeight\n        );\n        let newIndex = Math.min(\n          this._focusedItem.index + numItemsToScrollPast,\n          this.items.length - 1\n        );\n        if (isPageUp($event)) {\n          newIndex = Math.max(\n            this._focusedItem.index - numItemsToScrollPast,\n            0\n          );\n        }\n\n        const newFocusedElement = this.el.nativeElement.querySelector(\n          `#${this.listId}-${newIndex}`\n        );\n        this.updateFocusedItem(newIndex, newFocusedElement);\n        $event.preventDefault();\n        break;\n\n      case isHome($event):\n        this.focusFirstElement();\n        $event.preventDefault();\n        break;\n\n      case isEnd($event):\n        this.focusLastElement();\n        $event.preventDefault();\n        break;\n\n      case isEnter($event):\n      case isTab($event):\n        this.selectItem(this._focusedItem.item);\n        $event.preventDefault();\n        break;\n    }\n  }\n\n  /**\n   * Focus on first element of combo-box dropdown\n   */\n  focusFirstElement() {\n    const firstElement = this.dropdownListBox.nativeElement\n      .firstElementChild as HTMLDataListElement;\n    this.updateFocusedItem(0, firstElement);\n    this.cdr.detectChanges();\n  }\n\n  focusLastElement() {\n    const lastIndex = this.items.length - 1;\n    const lastElement = this.dropdownListBox.nativeElement\n      .lastElementChild as HTMLDataListElement;\n    this.updateFocusedItem(lastIndex, lastElement);\n    this.cdr.detectChanges();\n  }\n\n  focusHighlightedElement() {\n    if (!this._highlightedItem) {\n      this.focusFirstElement();\n    } else {\n      this.updateFocusedItem(\n        this._highlightedItem.index,\n        this._highlightedItem.itemHtml\n      );\n    }\n  }\n\n  /**\n   * Used by default template for rendering display value. If each item is\n   * an object, get its given value property, otherwise, simply display the item\n   */\n  getRenderValue(item: any) {\n    if (typeof item === 'object') {\n      return item[this.labelField];\n    }\n\n    return item;\n  }\n\n  /**\n   * Public interface that allows components to highlight an item in dropdown\n   * without moving focus to it. This simply adds a visible border to the item\n   * and moves it to visible area of the dropdown\n   */\n  highlightItem(index: number) {\n    if (index < 0 || index >= this.items.length) return;\n\n    const itemId = `${this.listId}-${index}`;\n    const itemHtml: HTMLDataListElement = this.el.nativeElement.querySelector(\n      `#${itemId}`\n    );\n\n    this._highlightedItem = { item: this.items[index], index, itemHtml };\n    itemHtml.scrollIntoView({ block: 'end' });\n    this.cdr.detectChanges();\n  }\n\n  private registerEventHandlers() {\n    this.bindMouseOverListeners();\n    this.bindScrollListener();\n  }\n\n  /**\n   * Attaches mouseover event to each list element in the dropdown. Since the mouseover\n   * event fires quite often, we attach it this way in the ts rather than through HTML\n   * This coupled with changeDetectionStrategy of OnPush minimizes the amount\n   * of necessary change detection triggers\n   */\n  private bindMouseOverListeners() {\n    const children = Array.from(this.dropdownListBox.nativeElement.children);\n    children.forEach((child: HTMLDataListElement, index: number) => {\n      const listener = this.renderer.listen(child, 'mouseover', () => {\n        if (this.document.activeElement === child) {\n          return;\n        }\n\n        this.updateFocusedItem(index, child);\n        this.cdr.detectChanges();\n      });\n\n      this._eventListeners.push(listener);\n    });\n  }\n\n  /**\n   * Adds scroll event binding if virtual scrolling is enabled.\n   * This event listens for whether the user has scrolled to the last\n   * item in the list or not. If so, it will fire an event\n   * indicating that the user has scrolled to the end and more data\n   * should be fetched\n   * @returns\n   */\n  private bindScrollListener() {\n    if (!this.virtualScroll) return;\n\n    const dropdownElement = this.dropdownListBox.nativeElement;\n    const scrollListener = this.renderer.listen(\n      dropdownElement,\n      'scroll',\n      () => {\n        const currentScrolledAmount =\n          dropdownElement.offsetHeight + dropdownElement.scrollTop;\n        const totalScrollAmount = dropdownElement.scrollHeight;\n        if (currentScrolledAmount >= totalScrollAmount) {\n          this.scrollEnd.emit();\n        }\n      }\n    );\n\n    this._eventListeners.push(scrollListener);\n  }\n\n  private setDropdownDirection() {\n    const dropdownRect = this.dropdownListBox.nativeElement\n      .getClientRects()\n      .item(0);\n    /**\n     * If there isn't enough room to display dropdown above the input, then simply display dropdown\n     * below regardless of space\n     */\n    if (this.direction === 'bottom' || dropdownRect.height > dropdownRect.top)\n      return;\n\n    const dropdownY = dropdownRect.height + dropdownRect.top;\n\n    /**\n     * If there is no space to display dropdown below the input, then display dropdown above the input\n     */\n    if (this.direction === 'top' || dropdownY >= window.innerHeight) {\n      this.dropdownListBox.nativeElement.style.bottom = '100%';\n      this.dropdownListBox.nativeElement.style.borderBottomWidth = '0';\n      this.dropdownListBox.nativeElement.style.borderTop = '1px solid';\n    }\n  }\n\n  private updateFocusedItem(index: number, itemHtml: HTMLDataListElement) {\n    const item = this.items[index];\n\n    this._focusedItem = { item, index, itemHtml };\n\n    this._highlightedItem = { item, index, itemHtml };\n\n    itemHtml.focus();\n  }\n}\n","<ul #dropdownListbox [attr.id]=\"listId\" class=\"usa-combo-box__list\" role=\"listbox\"\n  [attr.aria-labelledby]=\"ariaLabelledBy\">\n\n  <li *ngFor=\"let item of items; index as i; trackBy: trackByFn\" #itemHtml class=\"usa-combo-box__list-option\"\n    [attr.tabindex]=\"_highlightedItem?.item === item ? 0 : -1\" [attr.aria-setsize]=\"items.length\" [attr.aria-posinset]=\"i\"\n    [attr.aria-selected]=\"selectedItem === item\" role=\"option\" value=\"{{item[valueField]}}\" [attr.id]=\"listId + '-' + i\"\n    [ngClass]=\"{\n      'usa-combo-box__list-option--focused': _highlightedItem?.item === item,\n      'usa-combo-box__list-option--selected': selectedItem === item,\n      'text-base cursor-default': item.disabled\n    }\" \n    (click)=\"selectItem(item)\"\n    (focus)=\"onFocus(item, i, itemHtml)\"\n    (keydown)=\"onKeyDown($event)\">\n    <ng-container [ngTemplateOutlet]=\"customItemTemplate?.templateRef || defaultOptionTemplate\"\n      [ngTemplateOutletContext]=\"{$implicit: item}\"></ng-container>\n\n  </li>\n</ul>\n\n<ng-template #defaultOptionTemplate let-item>\n  {{getRenderValue(item)}}\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { UsaComboboxList, UsaComboBoxItemTemplate } from '../combo-box-list/combo-box-list.component';\nimport { Key, KeyCode, MicrosfotKeys } from '../util/key';\n\nlet comboBoxId = 0;\nlet listBoxId = 0;\n@Component({\n  selector: 'usa-combobox',\n  templateUrl: './combo-box.component.html',\n  providers: [{       \n    provide: NG_VALUE_ACCESSOR, \n    useExisting: forwardRef(() => UsaComboBoxComponent),\n    multi: true     \n  }],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaComboBoxComponent implements ControlValueAccessor {\n\n  @ViewChild('comboBoxInput') comboBoxInput: ElementRef<HTMLInputElement>;\n  @ViewChild(UsaComboboxList) comboBoxDropdown: UsaComboboxList;\n\n  /** List of items to display in dropdown */\n  @Input() items: any[];\n\n  /** ID to use for html input. One will be auto generated if not provided */\n  @Input() id = `usa-combo-box-${comboBoxId++}`;\n\n  /** Id to use for html list box. One will be auto generated if not provided */\n  @Input() listId = `usa-combo-box__list-${listBoxId++}`;\n\n  /** Defines which property of each item to display to the user */\n  @Input() labelField: string;\n\n  /** Defines which property to consider as internal value for each item */\n  @Input() valueField: string;\n\n  /** Currently present value in the combo box's input field */\n  @Input() value: string = '';\n\n  /** Whether the input field can be written to or not */\n  @Input() readonly: boolean = undefined;\n\n  /** \n   * Toggles whether or not to emit scrollEnd event when a user scrolls to the\n   * bottom of the current item list\n   */\n  @Input() virtualScroll = true;\n\n  @Input() disabled: boolean = false;\n\n  /** Emitted with a value change occurs in user input */\n  @Output('change') changeEvent = new EventEmitter();\n\n  /** Emitted when an item is selected */\n  @Output() selected = new EventEmitter<any>();\n\n  /** \n   * Emitted when a user scrolls to the bottom of the current item list.\n   * This event signals clients to fetch additional data to append to current items\n   * list if additional data exists.\n   */\n  @Output() scrollEnd = new EventEmitter();\n\n  /** Custom template to use for rendering each item in items list */\n  @ContentChild(UsaComboBoxItemTemplate) itemTemplate: UsaComboBoxItemTemplate;\n\n  private _onChange = (_: any) => { };\n  private _onTouched = () => { };\n\n  _displayDropdown = false;\n  _selectedItem: any;\n\n  @HostListener('document:click', ['$event'])\n  onDocumentClick($event) {\n    if (this.el.nativeElement.contains($event.target)) {\n      return;\n    }\n\n    this._displayDropdown = false;\n    if (this._selectedItem) {\n      this.updateValue(this._selectedItem);\n    } else {\n      this.updateValue('');\n    }\n  }\n\n  constructor(\n    public el: ElementRef,\n    public cdr: ChangeDetectorRef,\n  ) { }\n\n  writeValue(obj: any): void {\n    this.value = obj;\n  }\n\n  registerOnChange(fn: any): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this._onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  onValueChange($event: string) {\n    this.updateValue($event);\n    this._displayDropdown = true;\n  }\n\n  selectItem(item: any) {\n    this.comboBoxInput.nativeElement.focus();\n    this._displayDropdown = false;\n\n    if (this._selectedItem === item) return;\n\n    this._selectedItem = item;\n    this.updateValue(item);\n    this.selected.emit();\n  }\n\n  clearInput() {\n    this.updateValue('');\n    this._selectedItem = undefined;\n    this.comboBoxInput?.nativeElement.focus();\n  }\n\n  onFocus() {\n    this._onTouched();\n  }\n\n  onScrollEnd() {\n    this.scrollEnd.emit();\n  }\n\n  /**\n   * Move focus to combo box input and close dropdown\n   */\n  focusInput() {\n    this.comboBoxInput.nativeElement.focus();\n    this._displayDropdown = false;\n  }\n\n  /**\n   * Handles keypress on combobox input field\n   * @param $event \n   * @returns \n   */\n  onInputKeyDown($event: KeyboardEvent) {\n    const keyPressed = $event.key || $event.keyCode;\n\n    switch(keyPressed) {\n      case Key.ArrowDown:\n      case MicrosfotKeys.ArrowDown:\n      case KeyCode.ArrowDown:\n        if (!this._displayDropdown) {\n          this._displayDropdown = true;\n          this.cdr.detectChanges();\n        }\n        \n        if (this.comboBoxDropdown) {\n          this.comboBoxDropdown.focusHighlightedElement();\n        }\n\n        $event.preventDefault();\n        break;\n\n      case Key.ArrowUp:\n      case MicrosfotKeys.ArrowUp:\n      case KeyCode.ArrowUp:\n        this._displayDropdown = false;\n        $event.preventDefault();\n        break;\n    }\n  }\n\n  private updateValue(value: any) {\n    if (this.value === value || this.value === value[this.labelField]) return;\n\n    if (typeof value === 'object') {\n      this.value = value[this.labelField];\n    } else {\n      this.value = value;\n    }\n\n    this._onChange(this.value);\n    this.changeEvent.emit(this.value);\n  }\n}\n","<div class=\"usa-combo-box\" [ngClass]=\"{'usa-combo-box--pristine': value?.length}\">\n  <input #comboBoxInput \n    [attr.id]=\"id\" [attr.aria-owns]=\"listId\" aria-autocomplete=\"list\" [attr.aria-describedby]=\"id + '--assistiveHint'\"\n    [attr.aria-expanded]=\"_displayDropdown\" autocapitalize=\"off\" autocomplete=\"off\" class=\"usa-combo-box__input\" type=\"text\"\n    role=\"combobox\" [attr.aria-activedescendant]=\"comboBoxDropdown?._focusedItem?.id\" \n    (focus)=\"onFocus()\" (input)=\"onValueChange($event.target.value)\" (keydown)=\"onInputKeyDown($event)\" \n    (click)=\"disabled ? '' : _displayDropdown = true\"\n    [value]=\"value\" [disabled]=\"disabled\" [attr.readonly]=\"readonly === true ? true : undefined\">\n\n  <span class=\"usa-combo-box__clear-input__wrapper\" tabindex=\"-1\">\n    <button type=\"button\" class=\"usa-combo-box__clear-input\" aria-label=\"Clear the select contents\" (click)=\"clearInput()\">&nbsp;</button>\n  </span>\n  <span class=\"usa-combo-box__input-button-separator\">&nbsp;</span>\n  <span class=\"usa-combo-box__toggle-list__wrapper\" tabindex=\"-1\">\n    <button type=\"button\" (click)=\"disabled ? '' : _displayDropdown = !_displayDropdown\" tabindex=\"-1\" class=\"usa-combo-box__toggle-list\"\n      aria-label=\"Toggle the dropdown list\">&nbsp;</button>\n  </span>\n\n  <usa-combo-box-list *ngIf=\"_displayDropdown\"\n    #comboBoxList\n    [items]=\"items\"\n    [labelField]=\"labelField\"\n    [valueField]=\"valueField\"\n    [customItemTemplate]=\"itemTemplate\"\n    [listId]=\"listId\"\n    [virtualScroll]=\"virtualScroll\"\n    [selectedItem]=\"_selectedItem\"\n    (selected)=\"selectItem($event)\"\n    (focusInput)=\"focusInput()\"\n    (scrollEnd)=\"onScrollEnd()\"\n  >\n  </usa-combo-box-list>\n\n  <div class=\"usa-combo-box__status usa-sr-only\" role=\"status\"></div>\n  <span [attr.id]=\"id + '--assistiveHint'\" class=\"usa-sr-only\">\n    When autocomplete results are available use up and down arrows to review and enter to select.\n    Touch device users, explore by touch or with swipe gestures.\n  </span>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { UsaComboBoxItemTemplate, UsaComboboxList } from \"./combo-box-list.component\";\n\n\n@NgModule({\n  imports: [ CommonModule ],\n  declarations: [\n    UsaComboboxList,\n    UsaComboBoxItemTemplate\n  ],\n  exports: [\n    UsaComboboxList,\n    UsaComboBoxItemTemplate\n  ]\n})\nexport class UsaComboBoxListModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UsaComboBoxComponent } from './combo-box.component';\nimport { UsaComboBoxListModule } from '../combo-box-list/combo-box-list.module';\n\n@NgModule({\n  declarations: [UsaComboBoxComponent],\n  imports: [CommonModule, UsaComboBoxListModule],\n  exports: [UsaComboBoxComponent, UsaComboBoxListModule],\n})\nexport class UsaComboboxModule {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { DropdownOptionsModel } from './dropdown-options.model';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet dropdownId = 0;\n@Component({\n  selector: 'usa-dropdown',\n  templateUrl: './dropdown.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => UsaDropdownComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UsaDropdownComponent implements ControlValueAccessor {\n\n  model: DropdownOptionsModel;\n\n  /** Id of dropdown field */\n  @Input() id: string = `usa-dropdown-${dropdownId++}`;\n\n  /** HTML name attribute for dropdown */\n  @Input() name: string;\n\n  /** List of selectable options */\n  @Input() options: DropdownOptionsModel[];\n\n  @Input() disabled = false;\n\n  @Output() optionChange = new EventEmitter<DropdownOptionsModel>();\n\n  private onChange = (v: any) => { };\n  private onTouched = () => { };\n\n  constructor(public cdr: ChangeDetectorRef) { }\n\n  onOptionSelected($event) {\n    const options: HTMLOptionsCollection = $event.target.options;\n    const selectedOption = options.item(options.selectedIndex);\n    this.model = { label: selectedOption.label, value: selectedOption.value };\n\n    this.onChange(this.model);\n    this.optionChange.emit(this.model);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  writeValue(value: any): void {\n    this.model = value;\n    this.cdr.markForCheck();\n  }\n}\n","<select class=\"usa-select\" [attr.name]=\"name\" [attr.id]=\"id\" (change)=\"onOptionSelected($event)\" [disabled]=\"disabled\">\n  <option *ngFor=\"let option of options\" [value]=\"option.value\" [disabled]=\"option.disabled\">{{option.label}}</option>\n</select>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { UsaDropdownComponent } from \"./dropdown.component\";\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [\n    UsaDropdownComponent\n  ],\n  exports: [\n    UsaDropdownComponent\n  ]\n})\nexport class UsaDropdownModule { }\n","import { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nexport interface FileInputOptions {\n  \n  /**\n   * Accept multiple files in a single file dropbox\n   * @default - false\n   */\n  multiple?: boolean;\n\n  /**\n   * File types to accept for file input\n   * @default - accept all\n   */\n  acceptFileType: string;\n\n  /**\n   * Applicable when multiple flies are accepted. Clears current list of files\n   * when new files are dragged or added when true. A value of false will simply\n   * append the added files to pre-existing uploaded files instead of clearing\n   * @default true\n   */\n  clearFilesOnAdd: boolean;\n\n  /**\n   * Whether or not to display information (name / file type icon) about files uploaded.\n   * This can be disabled if users want to use their own interface to display uploaded files,\n   * such as custom tables\n   * @default true\n   */\n  displayFileInfo: boolean;\n\n  /**\n   * Method for making backend calls when files are uploaded. When multiple files are uploaded\n   * at once, this method is called multiple times - one for each file. If no method is provided,\n   * then the files will simply be uploaded browser side only\n   * @default undefined\n   */\n  uploadRequest?: (file: File) => Observable<any>;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FileInputConfig implements Required<FileInputOptions> {\n  multiple = false;\n  acceptFileType = undefined;\n  clearFilesOnAdd = true;\n  displayFileInfo = true;\n  uploadRequest = undefined;\n}","import { HttpResponse } from \"@angular/common/http\";\nimport { Directive, ElementRef, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\n@Directive({\n  selector: `[usaFilePreview]`\n})\nexport class UsaFilePreviewDirective implements OnInit {\n\n  @Input() file: File;\n\n  @Input() uploadRequest: (file: File) => Observable<any>;\n\n  @Output() uploadError = new EventEmitter<File>();\n\n  imageElement: HTMLImageElement;\n\n  constructor(\n    private el: ElementRef\n  ) {}\n  \n  ngOnInit() {\n    this.imageElement = this.el.nativeElement;\n    this.imageElement.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n    this.imageElement.classList.add('is-loading');\n    \n    if (!this.uploadRequest) {\n      this.removeLoading(this.file, this.imageElement);\n      return;\n    }\n\n    this.uploadRequest(this.file).toPromise()\n      .then(() => {\n        this.removeLoading(this.file, this.imageElement);\n      })\n      .catch(() => {\n        this.uploadError.emit(this.file);\n        this.imageElement.classList.remove('is-loading');\n        this.imageElement.src = '';\n      });\n  }\n\n  private removeLoading(file: File, imageElement: HTMLImageElement) {\n    const filePreviewClass = this._getFilePreviewClass(this.file.name);  \n    imageElement.classList.remove('is-loading');\n    if (file.type.indexOf('image') > -1) {\n      imageElement.src = URL.createObjectURL(file);\n    } else {\n      imageElement.classList.add(filePreviewClass);\n    }\n  }\n\n\n  private _getFilePreviewClass(fileName: string) {\n    if (fileName.indexOf(\".pdf\") > 0) {\n      return 'usa-file-input__preview-image--pdf';\n    } else if (\n      fileName.indexOf(\".doc\") > 0 ||\n      fileName.indexOf(\".pages\") > 0\n    ) {\n      return 'usa-file-input__preview-image--word';\n    } else if (\n      fileName.indexOf(\".xls\") > 0 ||\n      fileName.indexOf(\".numbers\") > 0\n    ) {\n      return 'usa-file-input__preview-image--excel';\n    } else if (fileName.indexOf(\".mov\") > 0 || fileName.indexOf(\".mp4\") > 0) {\n      return 'usa-file-input__preview-image--video';\n    } else {\n      return 'usa-file-input__preview-image--generic';\n    }\n  }\n  \n}","import { \n  Component, \n  ElementRef, \n  Input, \n  TemplateRef, \n  ViewChild, \n  forwardRef,\n  Output,\n  EventEmitter, \n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { FileInputConfig } from './file-input.config';\n\nexport interface UploadedFile {\n  isLoading?: boolean, \n  imageId: string, \n  file: File\n}\n@Component({\n  selector: 'usa-file-input',\n  templateUrl: './file-input.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => UsaFileInputComponent),\n      multi: true,\n    },\n  ],\n})\nexport class UsaFileInputComponent implements ControlValueAccessor {\n\n  @ViewChild('fileInputEl') fileInputElement: ElementRef;\n\n  @Input() multiple = false;\n\n  @Input() acceptFileType: string = '';\n\n  @Input() id: string;\n\n  @Input() hint: string | TemplateRef<any>;\n\n  @Input() disabled: boolean;\n\n  @Input() selectedFiles: File[] = [];\n\n  @Input() clearFilesOnAdd: boolean;\n\n  @Input() displayFileInfo: boolean;\n\n  @Input() uploadRequest: (file: File) => Observable<any>;\n\n  @Output() selectedFilesChange = new EventEmitter<File[]>();\n\n  @Output() uploadError = new EventEmitter<File>();\n\n  DRAG_OVER_STATE = false;\n  ERROR_STATE = false;\n\n  inputFiles: UploadedFile[] = [];\n\n  // Save the callbacks, make sure to have a default so your app\n  // doesn't crash when one isn't (yet) registered\n  private onChange = (v: any) => {};\n  private onTouched = () => {};\n\n\n  constructor(\n    private fileInputConfig: FileInputConfig,\n  ) { \n    this.multiple = this.fileInputConfig.multiple;\n    this.acceptFileType = this.fileInputConfig.acceptFileType;\n    this.clearFilesOnAdd = this.fileInputConfig.clearFilesOnAdd;\n    this.displayFileInfo = this.fileInputConfig.displayFileInfo;\n    this.uploadRequest = this.fileInputConfig.uploadRequest;\n  }\n\n  onDragLeave() {\n    this.DRAG_OVER_STATE = false;\n  }\n\n  onDragOver() {\n    this.DRAG_OVER_STATE = true;\n  }\n\n  onFileDrop() {\n    this.DRAG_OVER_STATE = false;\n  }\n\n  onNewFilesUpload($event) {\n    const newFiles: File[] = Array.from($event.target.files);\n    this.fileInputElement.nativeElement.value = null;\n    \n    if (newFiles.length === 0) {\n      return;\n    }\n\n    // Validate new files match expected types\n    let areValidFiles = this.validateFileType(newFiles);\n\n    if (areValidFiles) {\n      this.ERROR_STATE = false;\n    } else {\n      this.ERROR_STATE = true;\n      this.selectedFiles = [];\n      this.inputFiles = [];\n      return;\n    }\n    \n    // Clear current files OR append to existing based on user config\n    if (!this.multiple || this.clearFilesOnAdd) {\n      this.inputFiles = [];\n      this.selectedFiles = newFiles;\n    } else {\n      this.selectedFiles = this.selectedFiles.concat(newFiles);\n    }\n\n    // Read file data and add laoding / preview states\n    newFiles.forEach(file => {\n      const imageId = this.getImageId(file, this.inputFiles);\n      const inputFile = {\n        isLoading: true, imageId, file\n      };\n      this.inputFiles.push(inputFile);\n    });\n\n    this.selectedFilesChange.emit(this.selectedFiles);\n\n    // Notify Angular to update its model\n    this.onChange(this.selectedFiles);\n    this.onTouched();\n  }\n\n  removeFile(file: File) {\n    const index = this.selectedFiles.indexOf(file);\n    let inputFileIndex = -1;\n    this.inputFiles.forEach((inputFile, index) => {\n      if (inputFile.file === file) {\n        inputFileIndex = index;\n      }\n    });\n\n    if (index === -1 || inputFileIndex === -1) {\n      return;\n    }\n\n    this.selectedFiles.splice(index, 1);\n    this.selectedFilesChange.emit(this.selectedFiles);\n    this.writeValue(this.selectedFiles);\n    this.onChange(this.selectedFiles);\n    this.onTouched();\n  }\n\n  clearFiles() {\n    this.selectedFiles = [];\n    this.selectedFilesChange.emit(this.selectedFiles);\n    this.writeValue(this.selectedFiles);\n    this.onChange(this.selectedFiles);\n    this.onTouched();\n  }\n\n  onUploadError(file: File) {\n    this.uploadError.emit(file);\n  }\n\n  trackLoadedFilesBy(index: number, item: UploadedFile) {\n    return item.imageId;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  writeValue(files: File[]): void {\n    if (this.disabled || !files) {\n      return;\n    }\n    let areValidFiles = this.validateFileType(files);\n\n    if (areValidFiles) {\n      this.ERROR_STATE = false;\n    } else {\n      this.ERROR_STATE = true;\n      return;\n    }\n\n    this.inputFiles = [];\n    this.selectedFiles = files;\n    // Read file data and add laoding / preview states\n    files.forEach(file => {\n      const imageId = this.getImageId(file, this.inputFiles);\n      const inputFile = {\n        isLoading: true, imageId, file\n      };\n      this.inputFiles.push(inputFile);\n    });\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n\n  private validateFileType(files: File[]) {\n    if (!this.acceptFileType) {\n      return true;\n    }\n\n    const acceptedFiles = this.acceptFileType.split(',');\n\n    for(let i = 0; i < files.length; i++) {\n      const isValidFileType = acceptedFiles.some(acceptedFileType => {\n        const endsWithFileType = new RegExp(acceptedFileType + '$', 'i').test(files[i].name);\n        return endsWithFileType || files[i].type.includes(acceptedFileType.replace(/\\*/g, \"\"))\n      });\n\n      if (!isValidFileType) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n\n\n  /**\n   * Given a file and list of pre-uploaded files, generates and returns an id for the file.\n   * If file already exists in pre-uploaded files list, then the id will simply be appended with\n   * a counter to ensure uniqueness\n   * @param file - File to generate id for\n   * @param preExistingFiles - List of files that are uploaded and already have an id\n   * @returns An id for the image\n   */\n  private getImageId(file: File, preUploadedFiles: UploadedFile[]) {\n    let imageId = this._makeSafeForID(file.name);\n\n    imageId = `a${imageId}`;\n    let numExisting = 0;\n    preUploadedFiles.forEach(file => {\n      if (file.imageId === imageId) {\n        numExisting++;\n      }\n    });\n\n    if (numExisting > 0) {\n      imageId = `${imageId}${numExisting}`;\n    }\n    return imageId;\n  }\n\n  /**\n   * Creates an ID name for each file that strips all invalid characters.\n   * @param {string} name - name of the file added to file input\n   * @returns {string} same characters as the name with invalid chars removed\n   */\n  private _makeSafeForID(name: string) {\n    return name.replace(/[^a-z0-9]/g, function replaceName(s) {\n      const c = s.charCodeAt(0);\n      if (c === 32) return \"-\";\n      if (c >= 65 && c <= 90) return `img_${s.toLowerCase()}`;\n      return `__000${(c.toString(16)).slice(-4)}`;\n    });\n  }\n}\n","<span class=\"usa-hint\" [attr.id]=\"id + '-hint'\">{{hint}}</span>\n<div class=\"usa-file-input grid-row\">\n  <div class=\"usa-file-input__target\" [ngClass]=\"{\n      'usa-file-input--drag': DRAG_OVER_STATE,\n      'has-invalid-file': ERROR_STATE\n    }\">\n    <ng-container *ngIf=\"displayFileInfo && (inputFiles && inputFiles.length); else selectFiles\">\n      <div class=\"usa-file-input__preview-heading\">\n        <ng-container *ngIf=\"inputFiles.length > 1; else singleFileSelected\">\n          {{inputFiles.length}} files selected\n          <span class=\"usa-file-input__choose\">Change files</span>\n        </ng-container>\n        <ng-template #singleFileSelected>\n          Selected file\n          <span class=\"usa-file-input__choose\">Change file</span>\n        </ng-template>\n      </div>\n      <div class=\"usa-file-input__preview\"\n        *ngFor=\"let inputFile of inputFiles; trackBy:trackLoadedFilesBy\">\n        <img usaFilePreview [attr.id]=\"inputFile.imageId\" [file]=\"inputFile.file\" [uploadRequest]=\"uploadRequest\" (uploadError)=\"onUploadError($event)\"\n          class=\"usa-file-input__preview-image \" />\n        {{inputFile.file.name}}\n      </div>\n    </ng-container>\n\n    <div class=\"usa-file-input__box\"></div>\n    <div *ngIf=\"ERROR_STATE === true\" class=\"usa-file-input__accepted-files-message\">This is not a valid file type.\n    </div>\n    <input #fileInputEl [attr.id]=\"id\" class=\"usa-file-input__input\" type=\"file\" [attr.name]=\"id\" [attr.files]=\"selectedFiles\"\n      [attr.aria-describedby]=\"id + '-hint'\" [attr.accept]=\"acceptFileType\"\n      [attr.multiple]=\"multiple ? multiple : undefined\" [disabled]=\"disabled\" (dragover)=\"onDragOver()\"\n      (dragleave)=\"onDragLeave()\" (drop)=\"onFileDrop()\" (change)=\"onNewFilesUpload($event)\">\n  </div>\n</div>\n\n<ng-template #selectFiles>\n  <div class=\"usa-file-input__instructions\">\n    <span class=\"usa-file-input__drag-text\">Drag file here or </span>\n    <span class=\"usa-file-input__choose\">choose from folder</span>\n  </div>\n</ng-template>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { UsaFileInputComponent } from './file-input.component';\nimport { FileInputConfig } from \"./file-input.config\";\nimport { UsaFilePreviewDirective } from \"./file-preview.directive\";\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n  ],\n  declarations: [\n    UsaFileInputComponent,\n    UsaFilePreviewDirective,\n  ],\n  exports: [\n    UsaFileInputComponent,\n    UsaFilePreviewDirective\n  ],\n  providers: [\n    FileInputConfig\n  ]\n})\nexport class UsaFileInputModule {}\n","export enum ModalDismissReasons {\n  BACKDROP_CLICK,\n  CLOSE_CLICKED,\n  ESC\n}\n","import {ComponentRef} from '@angular/core';\n\nimport {Observable, of, Subject, zip} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport { UsaModalWrapper } from './modal-wrapper';\nimport {UsaModalWindow} from './modal-window';\n\nimport {ContentRef} from '../util/popup';\n\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\nexport class UsaActiveModal {\n  /**\n   * Closes the modal with an optional `result` value.\n   *\n   * The `UsaModalRef.result` promise will be resolved with the provided value.\n   */\n  close(result?: any): void {}\n\n  /**\n   * Dismisses the modal with an optional `reason` value.\n   *\n   * The `UsaModalRef.result` promise will be rejected with the provided value.\n   */\n  dismiss(reason?: any): void {}\n}\n\n/**\n * A reference to the newly opened modal returned by the `UsaModal.open()` method.\n */\nexport class UsaModalRef {\n  private _closed = new Subject<any>();\n  private _dismissed = new Subject<any>();\n  private _hidden = new Subject<void>();\n  private _resolve: (result?: any) => void;\n  private _reject: (reason?: any) => void;\n\n  /**\n   * The instance of a component used for the modal content.\n   *\n   * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n   */\n  get componentInstance(): any {\n    if (this._contentRef && this._contentRef.componentRef) {\n      return this._contentRef.componentRef.instance;\n    }\n  }\n\n  /**\n   * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n   */\n  result: Promise<any>;\n\n  /**\n   * The observable that emits when the modal is closed via the `.close()` method.\n   *\n   * It will emit the result passed to the `.close()` method.\n   *\n   * @since 8.0.0\n   */\n  get closed(): Observable<any> { return this._closed.asObservable().pipe(takeUntil(this._hidden)); }\n\n  /**\n   * The observable that emits when the modal is dismissed via the `.dismiss()` method.\n   *\n   * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n   * reasons like backdrop click or ESC key press.\n   *\n   * @since 8.0.0\n   */\n  get dismissed(): Observable<any> { return this._dismissed.asObservable().pipe(takeUntil(this._hidden)); }\n\n  /**\n   * The observable that emits when both modal window and backdrop are closed and animations were finished.\n   * At this point modal and backdrop elements will be removed from the DOM tree.\n   *\n   * This observable will be completed after emitting.\n   *\n   * @since 8.0.0\n   */\n  get hidden(): Observable<void> { return this._hidden.asObservable(); }\n\n  /**\n   * The observable that emits when modal is fully visible and animation was finished.\n   * Modal DOM element is always available synchronously after calling 'modal.open()' service.\n   *\n   * This observable will be completed after emitting.\n   * It will not emit, if modal is closed before open animation is finished.\n   *\n   * @since 8.0.0\n   */\n  get shown(): Observable<void> { return this._windowCmptRef.instance.shown.asObservable(); }\n\n  constructor(\n      private _windowCmptRef: ComponentRef<UsaModalWindow>, private _contentRef: ContentRef,\n      private _backdropCmptRef?: ComponentRef<UsaModalWrapper>, private _beforeDismiss?: Function) {\n    _windowCmptRef.instance.dismissEvent.subscribe((reason: any) => { this.dismiss(reason); });\n\n    this.result = new Promise((resolve, reject) => {\n      this._resolve = resolve;\n      this._reject = reject;\n    });\n    this.result.then(null, () => {});\n  }\n\n  /**\n   * Closes the modal with an optional `result` value.\n   *\n   * The `UsaMobalRef.result` promise will be resolved with the provided value.\n   */\n  close(result?: any): void {\n    if (this._windowCmptRef) {\n      this._closed.next(result);\n      this._resolve(result);\n      this._removeModalElements();\n    }\n  }\n\n  private _dismiss(reason?: any) {\n    this._dismissed.next(reason);\n    this._reject(reason);\n    this._removeModalElements();\n  }\n\n  /**\n   * Dismisses the modal with an optional `reason` value.\n   *\n   * The `UsaModalRef.result` promise will be rejected with the provided value.\n   */\n  dismiss(reason?: any): void {\n    if (this._windowCmptRef) {\n      if (!this._beforeDismiss) {\n        this._dismiss(reason);\n      } else {\n        const dismiss = this._beforeDismiss();\n        if (dismiss && dismiss.then) {\n          dismiss.then(\n              result => {\n                if (result !== false) {\n                  this._dismiss(reason);\n                }\n              },\n              () => {});\n        } else if (dismiss !== false) {\n          this._dismiss(reason);\n        }\n      }\n    }\n  }\n\n  private _removeModalElements() {\n    this._windowCmptRef.instance.hide().subscribe(() => {\n      if (this._backdropCmptRef) {\n        const {nativeElement} = this._backdropCmptRef.location;\n        nativeElement.parentNode.removeChild(nativeElement);\n        this._backdropCmptRef.destroy();\n        this._backdropCmptRef = <any>null;\n      }\n\n      const nativeElement = this._windowCmptRef.location.nativeElement;\n      nativeElement.parentNode.removeChild(nativeElement);\n      this._windowCmptRef.destroy();\n  \n      if (this._contentRef && this._contentRef.viewRef) {\n        this._contentRef.viewRef.destroy();\n      }\n      this._windowCmptRef = <any>null;\n      this._contentRef = <any>null;\n\n      this._hidden.next();\n      this._hidden.complete();\n    });\n  }\n}\n","import {NgZone} from '@angular/core';\n\nimport {fromEvent, Observable} from 'rxjs';\nimport {filter, map, takeUntil, withLatestFrom} from 'rxjs/operators';\n\nimport {Key, KeyCode, MicrosfotKeys} from './key';\n\n\nexport const FOCUSABLE_ELEMENTS_SELECTOR = [\n  'a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])',\n  'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nexport function getFocusableBoundaryElements(element: HTMLElement): HTMLElement[] {\n  const list: HTMLElement[] =\n      Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR) as NodeListOf<HTMLElement>)\n          .filter(el => el.tabIndex !== -1);\n  return [list[0], list[list.length - 1]];\n}\n\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param zone Angular zone\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nexport const usaFocusTrap =\n    (zone: NgZone, element: HTMLElement, stopFocusTrap$: Observable<any>, refocusOnClick = false) => {\n      zone.runOutsideAngular(() => {\n        // last focused element\n        const lastFocusedElement$ =\n            fromEvent<FocusEvent>(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map(e => e.target));\n\n        // 'tab' / 'shift+tab' stream\n        fromEvent<KeyboardEvent>(element, 'keydown')\n            .pipe(\n                takeUntil(stopFocusTrap$),\n                // tslint:disable:deprecation\n                filter(e => e.key === Key.Tab || e.key === MicrosfotKeys.Tab || e.which === KeyCode.Tab),\n                // tslint:enable:deprecation\n                withLatestFrom(lastFocusedElement$))\n            .subscribe(([tabEvent, focusedElement]) => {\n              const[first, last] = getFocusableBoundaryElements(element);\n\n              if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n                last.focus();\n                tabEvent.preventDefault();\n              }\n\n              if (focusedElement === last && !tabEvent.shiftKey) {\n                first.focus();\n                tabEvent.preventDefault();\n              }\n            });\n\n        // inside click\n        if (refocusOnClick) {\n          fromEvent(element, 'click')\n              .pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map(arr => arr[1] as HTMLElement))\n              .subscribe(lastFocusedElement => lastFocusedElement.focus());\n        }\n      });\n    };\n","export function getTransitionDurationMs(element: HTMLElement) {\n  const {transitionDelay, transitionDuration} = window.getComputedStyle(element);\n  const transitionDelaySec = parseFloat(transitionDelay);\n  const transitionDurationSec = parseFloat(transitionDuration);\n\n  return (transitionDelaySec + transitionDurationSec) * 1000;\n}\n","\nexport const environment = {\n  transitionTimerDelayMs: 5,\n}","import {NgZone} from '@angular/core';\nimport {EMPTY, fromEvent, Observable, of, race, Subject, timer} from 'rxjs';\nimport {endWith, filter, takeUntil} from 'rxjs/operators';\nimport {getTransitionDurationMs} from './util';\nimport {environment} from '../../environment';\nimport {runInZone} from '../util';\n\nexport type UsaTransitionStartFn<T = any> = (element: HTMLElement, animation: boolean, context: T) =>\n    UsaTransitionEndFn | void;\nexport type UsaTransitionEndFn = () => void;\n\nexport interface UsaTransitionOptions<T> {\n  animation: boolean;\n  runningTransition: 'continue' | 'stop';\n  context?: T;\n}\n\nexport interface UsaTransitionCtx<T> {\n  transition$: Subject<any>;\n  complete: () => void;\n  context: T;\n}\n\nconst noopFn: UsaTransitionEndFn = () => {};\n\nconst {transitionTimerDelayMs} = environment;\nconst runningTransitions = new Map<HTMLElement, UsaTransitionCtx<any>>();\n\nexport const usaRunTransition =\n    <T>(zone: NgZone, element: HTMLElement, startFn: UsaTransitionStartFn<T>, options: UsaTransitionOptions<T>):\n        Observable<undefined> => {\n\n          // Getting initial context from options\n          let context = options.context || <T>{};\n\n          // Checking if there are already running transitions on the given element.\n          const running = runningTransitions.get(element);\n          if (running) {\n            switch (options.runningTransition) {\n              // If there is one running and we want for it to 'continue' to run, we have to cancel the new one.\n              // We're not emitting any values, but simply completing the observable (EMPTY).\n              case 'continue':\n                return EMPTY;\n              // If there is one running and we want for it to 'stop', we have to complete the running one.\n              // We're simply completing the running one and not emitting any values and merging newly provided context\n              // with the one coming from currently running transition.\n              case 'stop':\n                zone.run(() => running.transition$.complete());\n                context = Object.assign(running.context, context);\n                runningTransitions.delete(element);\n            }\n          }\n\n          // Running the start function\n          const endFn = startFn(element, options.animation, context) || noopFn;\n\n          // If 'prefer-reduced-motion' is enabled, the 'transition' will be set to 'none'.\n          // If animations are disabled, we have to emit a value and complete the observable\n          // In this case we have to call the end function, but can finish immediately by emitting a value,\n          // completing the observable and executing end functions synchronously.\n          if (!options.animation || window.getComputedStyle(element).transitionProperty === 'none') {\n            zone.run(() => endFn());\n            return of(undefined).pipe(runInZone(zone));\n          }\n\n          // Starting a new transition\n          const transition$ = new Subject<any>();\n          const finishTransition$ = new Subject<any>();\n          const stop$ = transition$.pipe(endWith(true));\n          runningTransitions.set(element, {\n            transition$,\n            complete: () => {\n              finishTransition$.next();\n              finishTransition$.complete();\n            },\n            context\n          });\n\n          const transitionDurationMs = getTransitionDurationMs(element);\n\n          // 1. We have to both listen for the 'transitionend' event and have a 'just-in-case' timer,\n          // because 'transitionend' event might not be fired in some browsers, if the transitioning\n          // element becomes invisible (ex. when scrolling, making browser tab inactive, etc.). The timer\n          // guarantees, that we'll release the DOM element and complete 'usaRunTransition'.\n          // 2. We need to filter transition end events, because they might bubble from shorter transitions\n          // on inner DOM elements. We're only interested in the transition on the 'element' itself.\n          zone.runOutsideAngular(() => {\n            const transitionEnd$ =\n                fromEvent(element, 'transitionend').pipe(takeUntil(stop$), filter(({target}) => target === element));\n            const timer$ = timer(transitionDurationMs + transitionTimerDelayMs).pipe(takeUntil(stop$));\n\n            race(timer$, transitionEnd$, finishTransition$).pipe(takeUntil(stop$)).subscribe(() => {\n              runningTransitions.delete(element);\n              zone.run(() => {\n                endFn();\n                transition$.next();\n                transition$.complete();\n              });\n            });\n          });\n\n          return transition$.asObservable();\n        };\n\nexport const usaCompleteTransition = (element: HTMLElement) => {\n  runningTransitions.get(element) ?.complete();\n};\n","import {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Injector,\n  NgZone,\n  Renderer2,\n  TemplateRef,\n  ViewContainerRef,\n  ViewRef\n} from '@angular/core';\n\nimport {Observable, of} from 'rxjs';\nimport {mergeMap, take, tap} from 'rxjs/operators';\n\nimport {usaRunTransition} from './transition/usaTransition';\n\nexport class ContentRef {\n  constructor(public nodes: any[], public viewRef?: ViewRef, public componentRef?: ComponentRef<any>) {}\n}\n\nexport class PopupService<T> {\n  private _windowRef: ComponentRef<T>| null = null;\n  private _contentRef: ContentRef | null = null;\n\n  constructor(\n      private _type: any, private _injector: Injector, private _viewContainerRef: ViewContainerRef,\n      private _renderer: Renderer2, private _ngZone: NgZone,\n      private _componentFactoryResolver: ComponentFactoryResolver, private _applicationRef: ApplicationRef) {}\n\n  open(content?: string | TemplateRef<any>, context?: any, animation = false):\n      {windowRef: ComponentRef<T>, transition$: Observable<void>} {\n    if (!this._windowRef) {\n      this._contentRef = this._getContentRef(content, context);\n      this._windowRef = this._viewContainerRef.createComponent(\n          this._componentFactoryResolver.resolveComponentFactory<T>(this._type), this._viewContainerRef.length,\n          this._injector, this._contentRef.nodes);\n    }\n\n    const {nativeElement} = this._windowRef.location;\n    const transition$ = this._ngZone.onStable.pipe(\n        take(1), mergeMap(\n                     () => usaRunTransition(\n                         this._ngZone, nativeElement, ({classList}) => classList.add('show'),\n                         {animation, runningTransition: 'continue'})));\n\n    return {windowRef: this._windowRef, transition$};\n  }\n\n  close(animation = false): Observable<void> {\n    if (!this._windowRef) {\n      return of(undefined);\n    }\n\n    return usaRunTransition(\n               this._ngZone, this._windowRef.location.nativeElement, ({classList}) => classList.remove('show'),\n               {animation, runningTransition: 'stop'})\n        .pipe(tap(() => {\n          if (this._windowRef) {\n            // this is required because of the container='body' option\n            this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n            this._windowRef = null;\n          }\n          if (this._contentRef?.viewRef) {\n            this._applicationRef.detachView(this._contentRef.viewRef);\n            this._contentRef.viewRef.destroy();\n            this._contentRef = null;\n          }\n        }));\n  }\n\n  private _getContentRef(content?: string | TemplateRef<any>, context?: any): ContentRef {\n    if (!content) {\n      return new ContentRef([]);\n    } else if (content instanceof TemplateRef) {\n      const viewRef = content.createEmbeddedView(context);\n      this._applicationRef.attachView(viewRef);\n      return new ContentRef([viewRef.rootNodes], viewRef);\n    } else {\n      return new ContentRef([[this._renderer.createText(`${content}`)]]);\n    }\n  }\n}\n","import {Component, ElementRef, ViewEncapsulation} from '@angular/core';\n\n@Component({\n  selector: 'usa-modal-wrapper',\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div class=\"usa-modal-overlay\"></div>\n  `,\n  host: {\n    'class': 'usa-modal-wrapper',\n    'style': 'z-index: 1050'\n  }\n})\nexport class UsaModalWrapper {\n  constructor(public _el: ElementRef<HTMLElement>) {}\n}\n","import {\n  animate,\n  style,\n  transition,\n  trigger,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\nconst animationBody = [\n  transition('* => enter',\n    [\n      style({opacity: 0, transform: 'scale(0.7)'}),\n      animate('150ms cubic-bezier(0, 0, 0.2, 1)',\n        style({transform: 'none', opacity: 1}))\n    ]\n  ),\n  transition('* => slideEnter', [\n    style({right: '-15rem'}),\n    animate('150ms', style({right: '0rem'}))\n  ]),\n\n  transition('* => void, * => exit', [\n    style({transform: 'none'}),\n    animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)',\n      style({opacity: 0})\n    )\n  ]),\n  transition('* => slideExit', [\n    style({right: '0rem'}),\n    animate('150ms', style({right: '-15rem'}))\n  ]),\n];\n\n/**\n * Animations used by SdsDialog.\n * @docs-private\n */\nexport const usaDialogAnimations: {\n  readonly dialogContainer: AnimationTriggerMetadata;\n} = {\n  /** Animation that is applied on the dialog container by defalt. */\n  dialogContainer: trigger('dialogContainer', animationBody)\n};\n","import {DOCUMENT} from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\n\nimport {fromEvent, Observable, Subject} from 'rxjs';\nimport {filter, switchMap, take, takeUntil, tap} from 'rxjs/operators';\n\nimport {getFocusableBoundaryElements} from '../util/focus-trap';\nimport { Key, KeyCode, MicrosfotKeys} from '../util/key';\nimport {ModalDismissReasons} from './modal-dismiss-reasons';\nimport { usaDialogAnimations } from './modal-animations';\nimport { AnimationEvent } from '@angular/animations';\n\nlet nextId = 0;\n@Component({\n  selector: 'usa-modal-window',\n  animations: [usaDialogAnimations.dialogContainer],\n  host: {\n    '[class]': '\"usa-modal\" + (modalDialogClass ? \" \" + modalDialogClass : \"\")',\n    '[class.usa-modal--lg]': 'size === \\'lg\\'',\n    'role': 'dialog',\n    'tabindex': '-1',\n    '[attr.id]': 'id',\n    '[attr.aria-modal]': 'true',\n    '[attr.aria-labelledby]': 'ariaLabelledBy',\n    '[attr.aria-describedby]': 'ariaDescribedBy',\n    '[@.disabled]': '!animation',\n    '[@dialogContainer]': '_state',\n    '(@dialogContainer.done)': '_onAnimationDone($event)',\n  },\n  template: `\n    <div #dialog class=\"usa-modal__content\">\n      <div class=\"usa-modal__main\">\n        <ng-content></ng-content>\n      </div>\n\n      <button *ngIf=\"showClose\" class=\"usa-button usa-modal__close\" aria-label=\"Close this window\" (click)=\"onCloseClicked()\">\n        <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" class=\"usa-icon\">\n          <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n          <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n        </svg>\n      </button>\n    </div>\n    `,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class UsaModalWindow implements OnInit,\n    AfterViewInit, OnDestroy {\n  private _closed$ = new Subject<void>();\n  private _elWithFocus: Element | null = null;  // element that is focused prior to modal opening\n\n  /** State of the dialog animation. */\n  _state: 'void' | 'enter' | 'slideEnter' | 'exit' | 'slideExit';\n\n  @ViewChild('dialog', {static: true}) private _dialogEl: ElementRef<HTMLElement>;\n\n  @Input() animation: boolean;\n  @Input() ariaLabelledBy: string;\n  @Input() ariaDescribedBy: string;\n  @Input() backdrop: boolean | string = true;\n  @Input() keyboard = true;\n  @Input() size: string;\n  @Input() modalDialogClass: string;\n  @Input() overlayElement: Element;\n  @Input() showClose: boolean = true;\n  @Input() id: string = `usa-modal-${nextId++}`;\n\n  @Output('dismiss') dismissEvent = new EventEmitter();\n\n  shown = new Subject<void>();\n  hidden = new Subject<void>();\n\n  _animationStateChanged = new Subject<void>();\n\n  constructor(\n      @Inject(DOCUMENT) private _document: any,\n      private _elRef: ElementRef<HTMLElement>,\n      private _zone: NgZone,\n    ) {}\n\n  dismiss(reason): void { this.dismissEvent.emit(reason); }\n\n  ngOnInit() {\n    this._elWithFocus = this._document.activeElement;\n    this._state = this.animation ? 'slideEnter' : 'enter';\n  }\n\n  ngAfterViewInit() { this._show(); }\n\n  ngOnDestroy() { this._disableEventHandling(); }\n\n  hide(): Observable<any> {\n\n    const exitAnimation$ = this._startExitAnimation();\n    exitAnimation$.subscribe(() => {\n      this.hidden.next();\n      this.hidden.complete();\n    });\n\n    this._disableEventHandling();\n    this._restoreFocus();\n    return exitAnimation$;\n  }\n\n  onCloseClicked() {\n    this.dismiss(ModalDismissReasons.CLOSE_CLICKED);\n  }\n\n  private _show() {\n    this._enableEventHandling();\n    this._setFocus();\n  }\n\n  private _enableEventHandling() {\n    const {nativeElement} = this._elRef;\n    this._zone.runOutsideAngular(() => {\n      fromEvent<KeyboardEvent>(nativeElement, 'keydown')\n          .pipe(\n              takeUntil(this._closed$),\n              filter(e => e.key === Key.Escape || e.key === MicrosfotKeys.Escape || e.which === KeyCode.Escape))\n          .subscribe(event => {\n            if (this.keyboard) {\n              requestAnimationFrame(() => {\n                if (!event.defaultPrevented) {\n                  this._zone.run(() => this.dismiss(ModalDismissReasons.ESC));\n                }\n              });\n            }\n          });\n\n      let preventClose = false;\n      fromEvent<MouseEvent>(this._dialogEl.nativeElement, 'mousedown')\n          .pipe(\n              takeUntil(this._closed$), tap(() => preventClose = false),\n              switchMap(() => fromEvent<MouseEvent>(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))),\n              filter(({target}) => nativeElement === target))\n          .subscribe(() => { preventClose = true; });\n\n      fromEvent<MouseEvent>(this.overlayElement, 'click').pipe(takeUntil(this._closed$)).subscribe(({target}) => {\n        if (this.overlayElement === target) {\n          if (this.backdrop === true && !preventClose) {\n            this._zone.run(() => this.dismiss(ModalDismissReasons.BACKDROP_CLICK));\n          }\n        }\n\n        preventClose = false;\n      });\n    });\n  }\n\n  private _disableEventHandling() { this._closed$.next(); }\n\n  private _setFocus() {\n    const {nativeElement} = this._elRef;\n    if (!nativeElement.contains(document.activeElement)) {\n      const autoFocusable = nativeElement.querySelector(`[usaAutofocus]`) as HTMLElement;\n      const firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n\n      const elementToFocus = autoFocusable || firstFocusable || nativeElement;\n      elementToFocus.focus();\n    }\n  }\n\n  private _restoreFocus() {\n    const body = this._document.body;\n    const elWithFocus = this._elWithFocus;\n\n    let elementToFocus;\n    if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n      elementToFocus = elWithFocus;\n    } else {\n      elementToFocus = body;\n    }\n    this._zone.runOutsideAngular(() => {\n      setTimeout(() => elementToFocus.focus());\n      this._elWithFocus = null;\n    });\n  }\n\n  private _startExitAnimation() {\n    this._state = this.animation ? 'slideExit' : 'exit';\n    return this._animationStateChanged.asObservable();\n  }\n\n  /** Callback, invoked whenever an animation on the host completes. */\n  private _onAnimationDone(event: AnimationEvent) {\n    if (event.toState === 'exit' || event.toState === 'slideExit') {\n      this._animationStateChanged.next();\n      this._animationStateChanged.complete();\n    }\n\n    if (event.toState === 'enter' || event.toState === 'slideEnter') {\n      this.shown.next();\n      this.shown.complete();\n    }\n  }\n}\n","import {Injectable, Inject} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\n\n\nconst noop = () => {};\n\n\n\n/** Type for the callback used to revert the scrollbar compensation. */\nexport type CompensationReverter = () => void;\n\n\n\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to compensate the lack of a vertical scrollbar by adding an\n * equivalent padding on the right of the body, and to remove this compensation.\n */\n@Injectable({providedIn: 'root'})\nexport class ScrollBar {\n  constructor(@Inject(DOCUMENT) private _document: any) {}\n\n  /**\n   * To be called right before a potential vertical scrollbar would be removed:\n   *\n   * - if there was a scrollbar, adds some compensation padding to the body\n   * to keep the same layout as when the scrollbar is there\n   * - if there was none, there is nothing to do\n   *\n   * @return a callback used to revert the compensation (noop if there was none,\n   * otherwise a function removing the padding)\n   */\n  compensate(): CompensationReverter {\n    const width = this._getWidth();\n    return !this._isPresent(width) ? noop : this._adjustBody(width);\n  }\n\n  /**\n   * Adds a padding of the given width on the right of the body.\n   *\n   * @return a callback used to revert the padding to its previous value\n   */\n  private _adjustBody(scrollbarWidth: number): CompensationReverter {\n    const body = this._document.body;\n    const userSetPaddingStyle = body.style.paddingRight;\n    const actualPadding = parseFloat(window.getComputedStyle(body)['padding-right']);\n    body.style['padding-right'] = `${actualPadding + scrollbarWidth}px`;\n    return () => body.style['padding-right'] = userSetPaddingStyle;\n  }\n\n  /**\n   * Tells whether a scrollbar is currently present on the body.\n   *\n   * @return true if scrollbar is present, false otherwise\n   */\n  private _isPresent(scrollbarWidth: number): boolean {\n    const rect = this._document.body.getBoundingClientRect();\n    const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);\n    const uncertainty = 0.1 * scrollbarWidth;\n    return bodyToViewportGap >= scrollbarWidth - uncertainty;\n  }\n\n  /**\n   * Calculates and returns the width of a scrollbar.\n   *\n   * @return the width of a scrollbar on this page\n   */\n  private _getWidth(): number {\n    const measurer = this._document.createElement('div');\n    measurer.className = 'modal-scrollbar-measure';\n\n    const body = this._document.body;\n    body.appendChild(measurer);\n    const width = measurer.getBoundingClientRect().width - measurer.clientWidth;\n    body.removeChild(measurer);\n\n    return width;\n  }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  EventEmitter,\n  Inject,\n  Injectable,\n  Injector,\n  NgZone,\n  RendererFactory2,\n  TemplateRef\n} from '@angular/core';\nimport {Subject} from 'rxjs';\n\nimport { usaFocusTrap } from '../util/focus-trap';\nimport {ContentRef} from '../util/popup';\nimport {ScrollBar} from '../util/scrollbar';\nimport {isDefined, isString} from '../util/util';\nimport {UsaModalWrapper} from './modal-wrapper';\nimport {UsaActiveModal, UsaModalRef} from './modal-ref';\nimport {UsaModalWindow} from './modal-window';\n\n@Injectable({providedIn: 'root'})\nexport class UsaModalStack {\n  private _activeWindowCmptHasChanged = new Subject();\n  private _ariaHiddenValues: Map<Element, string | null> = new Map();\n  private _modalRefs: UsaModalRef[] = [];\n  private _windowAttributes = [\n    'animation', 'ariaLabelledBy', 'ariaDescribedBy', 'backdrop', 'keyboard', 'size',\n    'modalDialogClass', 'overlayElement', 'showClose', 'id'\n  ];\n  private _windowCmpts: ComponentRef<UsaModalWindow>[] = [];\n  private _activeInstances: EventEmitter<UsaModalRef[]> = new EventEmitter();\n\n  constructor(\n      private _applicationRef: ApplicationRef, \n      private _injector: Injector, \n      @Inject(DOCUMENT) private _document: any,\n      private _scrollBar: ScrollBar, \n      private _rendererFactory: RendererFactory2, \n      private _ngZone: NgZone) {\n    // Trap focus on active WindowCmpt\n    this._activeWindowCmptHasChanged.subscribe(() => {\n      if (this._windowCmpts.length) {\n        const activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\n        usaFocusTrap(this._ngZone, activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\n        this._revertAriaHidden();\n        this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n      }\n    });\n  }\n\n  open(moduleCFR: ComponentFactoryResolver, contentInjector: Injector, content: any, options): UsaModalRef {\n\n    const renderer = this._rendererFactory.createRenderer(null, null);\n    let containerEl: Element = this._document.body;\n\n    const revertPaddingForScrollBar = this._scrollBar.compensate();\n    \n    const removeBodyClass = () => {\n      if (!this._modalRefs.length) {\n        renderer.removeClass(this._document.body, 'usa-js-modal--active');\n        this._revertAriaHidden();\n      }\n    };\n\n    const activeModal = new UsaActiveModal();\n    const contentRef =\n        this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeModal);\n\n    let backdropCmptRef: ComponentRef<UsaModalWrapper> = this._attachBackdrop(moduleCFR, containerEl);\n\n    const overlayRef: HTMLDivElement = backdropCmptRef.instance._el.nativeElement.querySelector('.usa-modal-overlay');\n\n    let windowCmptRef: ComponentRef<UsaModalWindow> = this._attachWindowComponent(moduleCFR, overlayRef, contentRef);\n    let usaModalRef: UsaModalRef = new UsaModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n\n    this._registerModalRef(usaModalRef);\n    this._registerWindowCmpt(windowCmptRef);\n    usaModalRef.result.then(revertPaddingForScrollBar, revertPaddingForScrollBar);\n    usaModalRef.result.then(removeBodyClass, removeBodyClass);\n    \n    activeModal.close = (result: any) => { usaModalRef.close(result); };\n    activeModal.dismiss = (reason: any) => { usaModalRef.dismiss(reason); };\n\n    this._applyWindowOptions(windowCmptRef.instance, options);\n    if (this._modalRefs.length === 1) {\n      renderer.addClass(this._document.body, 'usa-js-modal--active');\n    }\n\n    return usaModalRef;\n  }\n\n  get activeInstances() { return this._activeInstances; }\n\n  dismissAll(reason?: any) { this._modalRefs.forEach(usaModalRef => usaModalRef.dismiss(reason)); }\n\n  hasOpenModals(): boolean { return this._modalRefs.length > 0; }\n\n  private _attachBackdrop(moduleCFR: ComponentFactoryResolver, containerEl: any): ComponentRef<UsaModalWrapper> {\n    let backdropFactory = moduleCFR.resolveComponentFactory(UsaModalWrapper);\n    let backdropCmptRef = backdropFactory.create(this._injector);\n    this._applicationRef.attachView(backdropCmptRef.hostView);\n    containerEl.appendChild(backdropCmptRef.location.nativeElement);\n    return backdropCmptRef;\n  }\n\n  private _attachWindowComponent(moduleCFR: ComponentFactoryResolver, containerEl: any, contentRef: any):\n      ComponentRef<UsaModalWindow> {\n    let windowFactory = moduleCFR.resolveComponentFactory(UsaModalWindow);\n    let windowCmptRef = windowFactory.create(this._injector, contentRef.nodes);\n    windowCmptRef.instance.overlayElement = containerEl;\n    this._applicationRef.attachView(windowCmptRef.hostView);\n    containerEl.appendChild(windowCmptRef.location.nativeElement);\n    return windowCmptRef;\n  }\n\n  private _applyWindowOptions(windowInstance: UsaModalWindow, options: Object): void {\n    this._windowAttributes.forEach((optionName: string) => {\n      if (isDefined(options[optionName])) {\n        windowInstance[optionName] = options[optionName];\n      }\n    });\n  }\n\n  private _getContentRef(\n      moduleCFR: ComponentFactoryResolver, contentInjector: Injector, content: any, activeModal: UsaActiveModal): ContentRef {\n    if (!content) {\n      return new ContentRef([]);\n    } else if (content instanceof TemplateRef) {\n      return this._createFromTemplateRef(content, activeModal);\n    } else if (isString(content)) {\n      return this._createFromString(content);\n    } else {\n      return this._createFromComponent(moduleCFR, contentInjector, content, activeModal);\n    }\n  }\n\n  private _createFromTemplateRef(content: TemplateRef<any>, activeModal: UsaActiveModal): ContentRef {\n    const context = {\n      $implicit: activeModal,\n      close(result) { activeModal.close(result); },\n      dismiss(reason) { activeModal.dismiss(reason); }\n    };\n    const viewRef = content.createEmbeddedView(context);\n    this._applicationRef.attachView(viewRef);\n    return new ContentRef([viewRef.rootNodes], viewRef);\n  }\n\n  private _createFromString(content: string): ContentRef {\n    const component = this._document.createTextNode(`${content}`);\n    return new ContentRef([[component]]);\n  }\n\n  private _createFromComponent(\n      moduleCFR: ComponentFactoryResolver, contentInjector: Injector, content: any, context: UsaActiveModal): ContentRef {\n    const contentCmptFactory = moduleCFR.resolveComponentFactory(content);\n    const modalContentInjector =\n        Injector.create({providers: [{provide: UsaActiveModal, useValue: context}], parent: contentInjector});\n    const componentRef = contentCmptFactory.create(modalContentInjector);\n    const componentNativeEl = componentRef.location.nativeElement;\n    this._applicationRef.attachView(componentRef.hostView);\n    // FIXME: we should here get rid of the component nativeElement\n    // and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n    return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n  }\n\n  private _setAriaHidden(element: Element) {\n    const parent = element.parentElement;\n    if (parent && element !== this._document.body) {\n      Array.from(parent.children).forEach(sibling => {\n        if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n          this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n          sibling.setAttribute('aria-hidden', 'true');\n        }\n      });\n\n      this._setAriaHidden(parent);\n    }\n  }\n\n  private _revertAriaHidden() {\n    this._ariaHiddenValues.forEach((value, element) => {\n      if (value) {\n        element.setAttribute('aria-hidden', value);\n      } else {\n        element.removeAttribute('aria-hidden');\n      }\n    });\n    this._ariaHiddenValues.clear();\n  }\n\n  private _registerModalRef(usaModalRef: UsaModalRef) {\n    const unregisterModalRef = () => {\n      const index = this._modalRefs.indexOf(usaModalRef);\n      if (index > -1) {\n        this._modalRefs.splice(index, 1);\n        this._activeInstances.emit(this._modalRefs);\n      }\n    };\n    this._modalRefs.push(usaModalRef);\n    this._activeInstances.emit(this._modalRefs);\n    usaModalRef.result.then(unregisterModalRef, unregisterModalRef);\n  }\n\n  private _registerWindowCmpt(usaWindowCmpt: ComponentRef<UsaModalWindow>) {\n    this._windowCmpts.push(usaWindowCmpt);\n    this._activeWindowCmptHasChanged.next();\n\n    usaWindowCmpt.onDestroy(() => {\n      const index = this._windowCmpts.indexOf(usaWindowCmpt);\n      if (index > -1) {\n        this._windowCmpts.splice(index, 1);\n        this._activeWindowCmptHasChanged.next();\n      }\n    });\n  }\n}\n","import {Injectable, Injector} from '@angular/core';\n\n/**\n * Options available when opening new modal windows with `UsaModal.open()` method.\n */\nexport interface UsaModalOptions {\n  /**\n   * If `true`, modal opening and closing will be animated.\n   *\n   * @since 8.0.0\n   */\n  animation?: boolean;\n\n  /**\n   * `aria-labelledby` attribute value to set on the modal window.\n   *\n   * @since 2.2.0\n   */\n  ariaLabelledBy?: string;\n\n  /**\n   * `aria-describedby` attribute value to set on the modal window.\n   *\n   * @since 6.1.0\n   */\n  ariaDescribedBy?: string;\n\n  /**\n   * If `true`, the modal will close on backdrop click.\n   *\n   * A value of false indicates the modal will remain open on backdrop click\n   *\n   * Default value is `true`.\n   */\n  backdrop?: boolean;\n\n  /**\n   * Callback right before the modal will be dismissed.\n   *\n   * If this function returns:\n   * * `false`\n   * * a promise resolved with `false`\n   * * a promise that is rejected\n   *\n   * then the modal won't be dismissed.\n   */\n  beforeDismiss?: () => boolean | Promise<boolean>;\n\n  /**\n   * The `Injector` to use for modal content.\n   */\n  injector?: Injector;\n\n  /**\n   * If `true`, the modal will be closed when `Escape` key is pressed\n   *\n   * Default value is `true`.\n   */\n  keyboard?: boolean;\n\n  /**\n   * Size of a new modal window. Default is 'sm'\n   */\n  size?: 'sm' | 'lg';\n\n\n  /**\n   * A custom class to append to the modal dialog.\n   *\n   * @since 9.1.0\n   */\n  modalDialogClass?: string;\n\n  /**\n   * Display close button (true by default)\n   */\n  showClose?: boolean;\n\n  /**\n   * Modal Id\n   */\n  id?: string;\n}\n\n/**\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n*\n* @since 3.1.0\n*/\n@Injectable({providedIn: 'root'})\nexport class UsaModalConfig implements Required<UsaModalOptions> {\n  ariaLabelledBy: string;\n  ariaDescribedBy: string;\n  backdrop: boolean = true;\n  beforeDismiss: () => boolean | Promise<boolean>;\n  injector: Injector;\n  keyboard = true;\n  size: 'sm' | 'lg';\n  modalDialogClass: string;\n  showClose: boolean = true;\n  animation: boolean = true;\n  id: string;\n}\n","import {Injectable, Injector, ComponentFactoryResolver} from '@angular/core';\n\nimport {UsaModalOptions, UsaModalConfig} from './modal-config';\nimport {UsaModalRef} from './modal-ref';\nimport {UsaModalStack} from './modal-stack';\n\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\n@Injectable({providedIn: 'root'})\nexport class UsaModalService {\n  constructor(\n    private _moduleCFR: ComponentFactoryResolver, \n    private _injector: Injector, \n    private _modalStack: UsaModalStack,\n    private _config: UsaModalConfig\n  ) {}\n\n  /**\n   * Opens a new modal window with the specified content and supplied options.\n   *\n   * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n   * then instances of those components can be injected with an instance of the `UsaActiveModal` class. You can then\n   * use `UsaActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n   */\n  open(content: any, options: UsaModalOptions = {}): UsaModalRef {\n    const combinedOptions = {...this._config, animation: this._config.animation, ...options};\n    return this._modalStack.open(this._moduleCFR, this._injector, content, combinedOptions);\n  }\n\n  /**\n   * Returns an observable that holds the active modal instances.\n   */\n  get activeInstances() { return this._modalStack.activeInstances; }\n\n  /**\n   * Dismisses all currently displayed modal windows with the supplied reason.\n   *\n   * @since 3.1.0\n   */\n  dismissAll(reason?: any) { this._modalStack.dismissAll(reason); }\n\n  /**\n   * Indicates if there are currently any open modal windows in the application.\n   *\n   * @since 3.3.0\n   */\n  hasOpenModals(): boolean { return this._modalStack.hasOpenModals(); }\n}\n","import { CommonModule } from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nimport {UsaModalWrapper} from './modal-wrapper';\nimport {UsaModalWindow} from './modal-window';\n@NgModule({\n    imports: [\n        CommonModule,\n    ],\n    declarations: [UsaModalWrapper, UsaModalWindow],\n    exports: [\n        UsaModalWrapper,\n        UsaModalWindow,\n    ]\n})\nexport class UsaModalModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UsaNavigationMode } from '../util/navigation';\nimport { SidenavModel } from './sidenav.model';\n\n@Component({\n  selector: `usa-sidenav`,\n  templateUrl: `sidenav.component.html`,\n})\nexport class UsaSidenavComponent implements OnInit {\n  NavigationMode = UsaNavigationMode;\n\n  @Input() sidenavContent: SidenavModel[];\n\n  /**\n   * Enables navigation items to be toggled. By default all EXTERNAL and INTERNAL links are fully collapsed unless specified in sidenavContent.\n   *\n   * 'single' will allow only one branch to be expanded at a time. If a new branch is expanded, all open branches will collapse\n   *\n   * 'multiple' will allow all branches to be expanded independently of each other.\n   */\n  @Input() expandType: 'single' | 'multiple';\n\n  /**\n   * Collapse the children of LABEL by default. Setting to false has no effect on behavior of single-select. This behavior can be overriden on a link by link basis via configuation\n   */\n  @Input() autoCollapseLabels: boolean = true;\n\n  /**\n   * Enables links with a mode of NavigationMode.LABEL to be collapsed, by default they are expanded and locked.\n   */\n  @Input() enableLabelCollapse = false;\n\n  /**\n   * If true, the first child of the first label in the side nav will be selected by default\n   */\n  @Input() selectFirstLabelChild = false;\n\n  @Output() sidenavClicked = new EventEmitter<SidenavModel>();\n\n  ngOnInit(): void {\n    // If collapse is enabled, collapse all children by default. If label, expand to show children and select the first child of the first label\n    if (this.expandType) {\n      this.sidenavContent.map((link) => {\n        if (link.mode !== UsaNavigationMode.LABEL) {\n          // By default, link will not be expanded to show children. But this can be overridden for a given link based on configuration\n          link.collapsed = link.collapsed === undefined ? true : link.collapsed;\n        } else {\n          link.collapsed =\n            link.collapsed === undefined\n              ? !this.autoCollapseLabels && this.expandType !== 'multiple'\n              : link.collapsed;\n        }\n        if (link.children) {\n          this.collapseChildren(link);\n        }\n      });\n    }\n  }\n\n  private collapseChildren(link: SidenavModel): void {\n    link.children = link.children.map((childLink) => {\n      childLink.collapsed = true;\n      return childLink;\n    });\n  }\n\n  onSidenavItemClicked(item: SidenavModel): void {\n    this.deselectSideNav(this.sidenavContent);\n    this.selectSideNav(item, this.sidenavContent);\n    if (item.children && this.canCollapseLabel(item)) {\n      item.collapsed = !item.collapsed;\n      this.toggleBasedOnSelected(item.children);\n    }\n    if (this.expandType === 'single') {\n      this.toggleBasedOnSelected(this.sidenavContent);\n    }\n    this.sidenavClicked.emit(item);\n  }\n\n  /**\n   *\n   * @param link - Link which has been clicked on\n   * @returns true if either link is not a label, or it is a label and label collapse is enabled\n   */\n  private canCollapseLabel(link: SidenavModel): boolean {\n    return link.mode === UsaNavigationMode.LABEL\n      ? this.enableLabelCollapse\n      : true;\n  }\n\n  private toggleBasedOnSelected(links: SidenavModel[]): void {\n    links.forEach((link) => {\n      link.collapsed = link.selected ? false : true;\n      if (link.children) {\n        this.toggleBasedOnSelected(link.children);\n      }\n      return;\n    });\n  }\n\n  /**\n   * Deselects any previously selected sidenav item\n   * @param sidenavItems\n   */\n  private deselectSideNav(sidenavItems: SidenavModel[]): void {\n    sidenavItems.forEach((sideNavItem) => {\n      if (sideNavItem.children) {\n        this.deselectSideNav(sideNavItem.children);\n      }\n      sideNavItem.selected = false;\n    });\n  }\n\n  /**\n   * Selects the clicked sidenav item as we as any parent\n   * @param selectedItem\n   * @param allNavItems\n   */\n  private selectSideNav(\n    selectedItem: SidenavModel,\n    allNavItems: SidenavModel[]\n  ): boolean {\n    for (const item of allNavItems) {\n      if (item === selectedItem) {\n        item.selected = true;\n        return true;\n      } else if (item.children) {\n        const isChildSelected = this.selectSideNav(selectedItem, item.children);\n        if (isChildSelected) {\n          item.selected = true;\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  /**\n   * When expandType is multiple, expands all collapseable links in sidenav\n   */\n  public expandAll(): void {\n    if (this.expandType === 'multiple') {\n      this.sidenavContent.forEach((link) => this.expandChildren(link, false));\n    }\n  }\n\n  /**\n   * Collapses all links\n   */\n  public collapseAll(): void {\n    this.sidenavContent.forEach((link) => this.expandChildren(link, true));\n  }\n\n  private expandChildren(link: SidenavModel, collapsedValue: boolean): void {\n    if (link.children) {\n      link.collapsed = collapsedValue;\n      link.children.forEach((childLink) =>\n        childLink.children\n          ? this.expandChildren(childLink, collapsedValue)\n          : null\n      );\n    }\n  }\n  private queryStringBuilder(item: SidenavModel): string {\n    const ret = [];\n    let keys = [];\n    if (item.queryParams) {\n      keys = Object.keys(item.queryParams);\n    }\n    for (const d of keys) {\n      ret.push(\n        encodeURIComponent(d) + '=' + encodeURIComponent(item.queryParams[d])\n      );\n    }\n    return ret.join('&');\n  }\n\n  /**\n   * creates url from provided route and query params\n   * @param item - Link to use when building url\n   */\n  urlBuilder(item: SidenavModel): string {\n    let url = item.path;\n    const queryParams = this.queryStringBuilder(item);\n    if (queryParams) {\n      if (url.indexOf('?') === -1) {\n        url += '?' + queryParams;\n      } else if (url.indexOf('?') === url.length - 1) {\n        url += queryParams;\n      } else {\n        url += '&' + queryParams;\n      }\n    }\n    return url;\n  }\n}\n","<ul class=\"usa-sidenav\">\n  <li *ngFor=\"let link of sidenavContent\" class=\"usa-sidenav__item\">\n    <ng-container [ngTemplateOutlet]=\"sideNavLinkTemplate\" [ngTemplateOutletContext]=\"{$implicit:link}\">\n    </ng-container>\n  </li>\n</ul>\n\n<ng-template #sideNavLinkTemplate let-link>\n  <usa-link-template [link]=\"link\" (linkClicked)=\"onSidenavItemClicked($event)\"></usa-link-template>\n  <div *ngIf=\"!expandType || (expandType && !link.collapsed)\">\n    <ul class=\"usa-sidenav__sublist\">\n      <li *ngFor=\"let link of link.children\" class=\"sidenav__item\">\n        <ng-container [ngTemplateOutlet]=\"sideNavLinkTemplate\" [ngTemplateOutletContext]=\"{$implicit:link}\">\n        </ng-container>\n      </li>\n    </ul>\n  </div>\n</ng-template>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { UsaLinkTemplateModule } from \"../shared/link-template/link-template.module\";\nimport { UsaSidenavComponent } from \"./sidenav.component\";\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n    UsaLinkTemplateModule\n  ],\n  declarations: [\n    UsaSidenavComponent\n  ],\n  exports: [\n    UsaSidenavComponent\n  ]\n})\nexport class UsaSidenavModule {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Key } from '../util/key';\n\nlet nextId = 0;\n\n@Component({\n  selector: 'usa-search',\n  templateUrl: './search.component.html',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => UsaSearchComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaSearchComponent {\n\n  model: string = '';\n\n  private _onChange = (_: any) => { };\n  private _onTouched = () => { };\n\n  @Input() ariaLabel = 'search component'\n  @Input() id = `usa-search-${nextId++}`;\n  @Input() size: 'big' | 'small' | null;\n  @Input() buttonText = 'Search';\n  @Input() placeholder = '';\n  @Input() name = \"search\";\n\n  @Output() onBlur: EventEmitter<string> = new EventEmitter(null);\n\n  @Output() searchTextChange: EventEmitter<string> = new EventEmitter(null);\n\n  @Output() onTextSubmit: EventEmitter<string> = new EventEmitter(null);\n\n  constructor(public cdr: ChangeDetectorRef) { }\n\n  focusChange(event) {\n    this.onBlur.emit(event.target.value)\n  }\n\n  onKeydown(event): void {\n    if (event.code == Key.Enter) {\n      this.model = event.target.value;\n      this.updateModel();\n      event.preventDefault();\n    }\n  }\n\n  onValueChange(event) {\n    this.searchTextChange.emit(event);\n  }\n\n  // Helper method to programatically update the search value to the model\n  onSubmit(val, ev) {\n    this.model = val;\n    this.updateModel();\n    ev.preventDefault();\n    this.onTextSubmit.emit(val);\n  }\n\n  // Helper method that gets a new instance of the model and notifies ControlValueAccessor that we have a new model for this FormControl (our custom component)\n  updateModel() {\n    this._onChange(this.model);\n  }\n\n  // ControlValueAccessor (and Formly) is trying to update the value of the FormControl (our custom component) programatically\n  // If there is a value we will just overwrite items\n  // If there is no value we reset the items array to be empty\n  writeValue(value: any) {\n    if (value) {\n      this.model = value;\n\n      this.cdr.markForCheck();\n    } else {\n      this.model = '';\n      this.cdr.markForCheck();\n    }\n  }\n\n  // ControlValueAccessor hook that lets us call this._onChange(var) to let the form know our variable has changed (in this case model)\n  registerOnChange(fn: any): void {\n    this._onChange = fn;\n  }\n\n  // ControlValueAccessor hook (not used)\n  registerOnTouched(fn: any) {\n    this._onTouched = fn;\n  }\n}\n\n"," <section [attr.aria-label]=\"ariaLabel\">\n   <form class=\"usa-search\" role=\"search\" [ngClass]=\"{\n    'usa-search--big': size === 'big',\n    'usa-search--small':size == 'small'\n   }\">\n     <label class=\"usa-sr-only\" [attr.for]=\"id\">Search</label>\n     <input class=\"usa-input\" [attr.id]=\"id\" type=\"search\" [attr.name]=\"name\" [placeholder]=\"placeholder\" #searchInput\n       [value]=\"model\" (blur)=\"focusChange($event)\" (input)=\"onValueChange($event.target.value)\"\n       (keydown)=\"onKeydown($event)\" />\n     <button class=\"usa-button\" type=\"submit\" (click)=\"onSubmit(searchInput.value, $event);\">\n       <span [ngClass]=\"[size === 'small' ? 'usa-sr-only' : 'usa-search__submit-text']\">\n         {{ buttonText }}\n       </span>\n     </button>\n   </form>\n </section>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UsaSearchComponent } from './search.component';\n\n\n\n@NgModule({\n  declarations: [UsaSearchComponent],\n  imports: [\n    CommonModule\n  ],\n  exports: [UsaSearchComponent]\n})\nexport class UsaSearchModule { }\n","import {Injectable} from '@angular/core';\n\n/**\n * A configuration service for the Step Indeicator component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all accordions used in the application.\n */\n@Injectable({providedIn: 'root'})\nexport class UsaStepIndicatorConfig {\n  /**\n   * Hides labels on each step when set to true\n   * @default false\n   */\n  hideLabels: boolean = false;\n\n  /**\n   * Centers labels on each step when set to true - \n   * if hideLabels is also true, then labels will be hidden\n   * @default false\n   */\n  centerLabels: boolean = false\n\n  /**\n   * Displays step counters in between each step\n   * @default true\n   */\n  displayCounters: boolean = false;\n\n  /**\n   * Shrinks the size of counters if they are displayed\n   * @default false\n   */\n  smallCounters: boolean = false;\n\n  /**\n   * Defines whether to place the header above or below the steps.\n   * String value of 'top' represents above while 'bottom' represents below\n   * @default bottom\n   */\n  headerPosition: 'top' | 'bottom' = 'bottom';\n\n  /**\n   * Disable the ability to click on specific step segments in step indicator\n   */\n  disableStepSelection = false;\n}","import { Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { UsaStepIndicatorConfig } from './step-indicator.config';\nimport { Key, KeyCode, MicrosfotKeys } from '../util/key';\nimport { getNextItemIndexInList, findLastIndex } from '../util/util';\nimport { UsaStepIndicatorModel } from './step-indicator.model';\n\nlet stepIndicatorId = 0;\n\n@Component({\n  selector: 'usa-step-indicator',\n  templateUrl: './step-indicator.component.html',\n  host: {\n    'class': 'usa-step-indicator',\n    '[class.usa-step-indicator--no-labels]': 'hideLabels',\n    '[class.usa-step-indicator--center]': 'centerLabels && !hideLabels',\n    '[class.usa-step-indicator--counters]': 'displayCounters && !smallCounters',\n    '[class.usa-step-indicator--counters-sm]': 'smallCounters',\n\n  },\n  styleUrls: ['./step-indicator.component.scss'],\n})\nexport class UsaStepIndicatorComponent implements OnChanges {\n\n  /**\n   * Hides labels on each step when set to true\n   */\n  @Input() hideLabels: boolean = false\n\n  /**\n   * Centers label with the step bar when set to true\n   */\n  @Input() centerLabels: boolean = false\n\n  /**\n   * Displays step counter\n   */\n  @Input() displayCounters: boolean = false\n\n  /**\n   * Shrinks size of displayed step counter\n   */\n  @Input() smallCounters: boolean = false\n\n  /**\n   * Whether to place the header above or below the step indicator\n   */\n  @Input() headerPosition: 'top' | 'bottom' = 'bottom';\n\n  /**\n   * Disables the ability to navigate to steps by clicking on the step bar\n   */\n  @Input() disableStepSelection: boolean = false;\n\n\n  @Input() id: string = `usa-step-indicator-${stepIndicatorId++}`;\n\n  /**\n   * Currently selected step\n   */\n  @Input() currentStep: number = 0;\n\n  /**\n   * All possible steps\n   */\n  @Input() steps: UsaStepIndicatorModel[] = [];\n\n  @Output() currentStepChange = new EventEmitter<number>();\n\n  constructor(\n    config: UsaStepIndicatorConfig,\n    private elementRef: ElementRef,\n  ) {\n    this.hideLabels = config.hideLabels;\n    this.centerLabels = config.centerLabels;\n    this.displayCounters = config.displayCounters;\n    this.smallCounters = config.smallCounters;\n    this.headerPosition = config.headerPosition;\n    this.disableStepSelection = config.disableStepSelection;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.currentStep) {\n      if (this.currentStep > this.steps.length - 1 || this.currentStep < 0) {\n        throw new Error(`Steps in step indicator is out of bounds.\n          Current Step: ${this.currentStep}, Step Range: 0 - ${this.steps.length - 1}`);\n      }\n    }\n  }\n\n  onStepClicked(stepIndex: number, step: any) {\n    if (step.disabled || this.disableStepSelection) {\n      return;\n    }\n\n    this.currentStepChange.emit(stepIndex);\n  }\n\n  onKeyDown(event: KeyboardEvent, index: number) {\n    const keyPressed = event.key || event.keyCode;\n    let nextStepIndex: number;\n    switch(keyPressed) {\n      case Key.ArrowRight:\n      case MicrosfotKeys.ArrowRight:\n      case KeyCode.ArrowRight:\n        nextStepIndex = getNextItemIndexInList(index, this.steps, 1);\n        this._getAllStepListElements()[nextStepIndex].focus();\n        event.preventDefault();\n        break;\n      case Key.ArrowLeft:\n      case MicrosfotKeys.ArrowLeft:\n      case KeyCode.ArrowLeft:\n        nextStepIndex = getNextItemIndexInList(index, this.steps, -1);\n        this._getAllStepListElements()[nextStepIndex].focus();\n        event.preventDefault();\n        break;\n      case Key.Home:\n      case MicrosfotKeys.Home:\n      case KeyCode.Home:\n        nextStepIndex = this.steps.findIndex(step => !step.disabled);\n        this._getAllStepListElements()[nextStepIndex].focus();\n        event.preventDefault();\n        break;\n      case Key.End:\n      case MicrosfotKeys.End:\n      case KeyCode.End:\n        nextStepIndex= findLastIndex(this.steps, (step => !step.disabled));\n        this._getAllStepListElements()[nextStepIndex].focus();\n        event.preventDefault();\n        break;\n      }\n  }\n\n  getFillPercentage(step: UsaStepIndicatorModel) {\n    if (step.completionPercent === undefined || step != this.steps[this.currentStep]) {\n      return undefined;\n    }\n\n    if (step.completionPercent % 25 === 0 || step.completionPercent % 33 === 0) {\n      return `fill-${step.completionPercent}`;\n    }\n\n    const roundedStep = Math.round(step.completionPercent / 10) * 10;\n    return `fill-${roundedStep}`\n  }\n\n  getSegmentScale(step: UsaStepIndicatorModel) {\n    if (step.segmentScale === undefined) return undefined;\n    const segmentPercentage = Math.max(0.5, Math.min(4, step.segmentScale)) * 100;\n    return `scale-percent-${segmentPercentage}`;\n  }\n\n  private _getAllStepListElements() {\n    const listElements: NodeList = this.elementRef.nativeElement.querySelectorAll(`#${this.id} .usa-step-indicator__segment`);\n    return Array.prototype.slice.call(listElements);\n  }\n\n}\n","<div class=\"usa-step-indicator\" aria-label=\"progress\">\n\n  <div class=\"usa-sr-only\">Step {{ currentStep + 1 }} out of\n    {{ steps.length }} ,\n    {{ steps[currentStep].label }}</div>\n  <div *ngIf=\"headerPosition === 'top'\" class=\"usa-step-indicator__header\">\n    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n  </div>\n\n  <ol class=\"usa-step-indicator__segments\" role=\"tablist\" [attr.id]=\"id\">\n    <li *ngFor=\"let step of steps; index as i\" role=\"tab\" [attr.tabindex]=\"0\"\n      [attr.aria-disabled]=\"step.disabled || disableStepSelection ? true : undefined\"\n      class=\"usa-step-indicator__segment {{getFillPercentage(step)}} {{getSegmentScale(step)}}\" [attr.id]=\"id + '-' + i\"\n      (click)=\"onStepClicked(i, step)\" (keyup.enter)=\"onStepClicked(i, step)\" (keydown)=\"onKeyDown($event, i)\"\n      [ngClass]=\"{\n        'usa-step-indicator__segment--complete': i < currentStep,\n        'usa-step-indicator__segment--current': i === currentStep,\n        'usa-step-indicator__segment--no-counter': displayCounters && !step.label,\n        'cursor-pointer': !step.disabled && !disableStepSelection\n      }\" [attr.aria-current]=\"i == currentStep ? true : undefined\"\n      [attr.aria-selected]=\"i == currentStep ? true : undefined\">\n      <span class=\"usa-step-indicator__segment-label\">{{step.label}}\n        <span class=\"usa-sr-only\">{{i < currentStep ? 'completed' : i > currentStep ? 'not completed' : ''}}</span>\n      </span>\n    </li>\n  </ol>\n\n  <div *ngIf=\"headerPosition === 'bottom'\" class=\"usa-step-indicator__header\">\n    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n  </div>\n</div>\n\n<ng-template #headerTemplate>\n  <ng-content select=\"[UsaStepHeader]\"></ng-content>\n</ng-template>\n","import { Component, Host, Input, TemplateRef } from \"@angular/core\";\nimport { UsaStepIndicatorComponent } from \"./step-indicator.component\";\n\n@Component({\n  selector: `[UsaStepHeader]`,\n  template: `\n    <ng-container *ngIf=\"template; else default\">\n      <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n    </ng-container>\n\n    <ng-template #default>\n      <span class=\"usa-step-indicator__heading-counter\">\n        <span class=\"usa-step-indicator__current-step\">{{\n          stepIndicator?.currentStep + 1\n        }}</span>\n        <span class=\"usa-step-indicator__total-steps\">\n          of {{ stepIndicator?.steps.length }}</span\n        >\n      </span>\n      <span class=\"usa-step-indicator__heading-text\">{{\n        stepIndicator?.steps[stepIndicator?.currentStep].label\n      }}</span>\n    </ng-template>\n  `,\n  host: {\n    class: 'usa-step-indicator__heading',\n    '[class.margin-top-0]': \"stepIndicator.headerPosition === 'top'\",\n    '[class.margin-bottom-4]': \"stepIndicator.headerPosition === 'top'\",\n  },\n})\nexport class UsaStepIndicatorHeaderComponent {\n  @Input() template: TemplateRef<any>;\n\n  constructor(@Host() public stepIndicator: UsaStepIndicatorComponent) {}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UsaStepIndicatorComponent } from './step-indicator.component';\nimport { UsaStepIndicatorHeaderComponent } from './step-indicator-header.component';\n\n\n\n@NgModule({\n  declarations: [\n    UsaStepIndicatorComponent,\n    UsaStepIndicatorHeaderComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    UsaStepIndicatorComponent,\n    UsaStepIndicatorHeaderComponent\n  ]\n})\nexport class UsaStepIndicatorModule { }\n","\nimport { ChangeDetectorRef, Directive, ElementRef, Input, OnChanges, TemplateRef } from \"@angular/core\";\n\n@Directive({\n  selector: `[usaTableDataDef]`,\n})\nexport class UsaTableDataDef {\n  constructor(\n    public templateRef: TemplateRef<any>,\n  ) {}\n}\n\n\n@Directive({\n  selector: `[usa-table-data]`,\n  host: {\n    '[attr.data-sort-active]': '_isSortActive ? _isSortActive : undefined',\n  }\n})\nexport class UsaTableData {\n  _isSortActive = false;\n\n  constructor(\n    public el: ElementRef\n   ) {}\n\n   setSortActive() {\n     this._isSortActive = true;\n   }\n\n   setSortInactive() {\n     this._isSortActive = false;\n   }\n}\n\n/**\n * Represents one row of table data\n */\n@Directive({\n  selector: `[usaDataRowDef]`,\n})\nexport class UsaDataRowDef implements OnChanges {\n\n  @Input()\n  usaDataRowDefColumns: Iterable<string>;\n\n  ngOnChanges() {\n    this.cdr.detectChanges();\n  }\n  \n  constructor(\n    public templateRef: TemplateRef<any>,\n    private cdr: ChangeDetectorRef,\n  ) {}\n}","import { DOCUMENT } from \"@angular/common\";\nimport { Component, ElementRef, EventEmitter, Inject, Input, Output } from \"@angular/core\";\n\n@Component({\n  selector: `button[usa-sort]`,\n  host: {\n    class: 'usa-table__header__button',\n    '[attr.aria-label]': 'ariaLabel',\n    '(click)': 'onClick($event)',\n  },\n  template: `\n        <svg\n          [ngSwitch]=\"ariaSort\"\n          class=\"usa-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n          <g *ngSwitchCase=\"'descending'\" class=\"descending\">\n            <path d=\"M17 17L15.59 15.59L12.9999 18.17V2H10.9999V18.17L8.41 15.58L7 17L11.9999 22L17 17Z\"></path>\n          </g>\n          <g *ngSwitchCase=\"'ascending'\" class=\"ascending\">\n            <path transform=\"rotate(180, 12, 12)\" d=\"M17 17L15.59 15.59L12.9999 18.17V2H10.9999V18.17L8.41 15.58L7 17L11.9999 22L17 17Z\"></path>\n          </g>\n          <g *ngSwitchCase=\"'none'\" class=\"unsorted\">\n            <polygon points=\"15.17 15 13 17.17 13 6.83 15.17 9 16.58 7.59 12 3 7.41 7.59 8.83 9 11 6.83 11 17.17 8.83 15 7.42 16.41 12 21 16.59 16.41 15.17 15\"></polygon>\n          </g>\n        </svg>\n  `\n})\nexport class UsaSort {\n  @Input() sortFn: (a: any, b: any) => number;\n\n  @Output() sortClicked = new EventEmitter();\n\n  ariaSort: 'ascending' | 'descending' | 'none' = 'none';\n  ariaLabel: string;\n\n  private _columnHeaderText: string;\n\n  constructor(\n    public _el: ElementRef,\n    @Inject(DOCUMENT) private _document\n  ) {}\n\n  onClick() {\n    this.toggleAriaSort();\n    const sortFn = this.sortFn ? this.sortFn : this.defaultSortFunction;\n    const eventDetails = {\n      sortFn,\n      sortState: this.ariaSort,\n      columnHeaderText: this._columnHeaderText\n    };\n\n    let event: CustomEvent;\n    if (typeof(Event) === 'function') {\n      event = new CustomEvent('sort', {bubbles: true, detail: eventDetails});\n    } else {\n      // IE11 support\n      event = this._document.createEvent('CustomEvent');\n      event.initCustomEvent('sort', true, true, eventDetails);\n    }\n\n    this._el.nativeElement.dispatchEvent(event);\n    this.sortClicked.emit(this.ariaSort);\n  }\n\n  setColumnHeader(columnHeaderText: string) {\n    this._columnHeaderText = columnHeaderText;\n    this.ariaLabel = `Click to sort ${this._columnHeaderText}`;\n  }\n\n  toggleAriaSort() {\n    this.ariaSort = this.ariaSort === 'none' || this.ariaSort === 'descending' ? 'ascending' : 'descending';\n    const sortOrder = this.ariaSort === 'ascending' ? 'in descending order' : 'in ascending order';\n    this.ariaLabel = `Click to sort ${this._columnHeaderText} ${this.ariaSort ? sortOrder : ''}`;\n  }\n\n  disableSort() {\n    this.ariaSort = 'none';\n    this.ariaLabel = `Click to sort ${this._columnHeaderText}`;\n  }\n\n  private defaultSortFunction(value1: any, value2: any) {\n    // if neither value is empty, and if both values are already numbers, compare numerically\n    if (\n      value1 &&\n      value2 &&\n      !Number.isNaN(Number(value1)) &&\n      !Number.isNaN(Number(value2))\n    ) {\n      return value1 - value2;\n    }\n\n    if (!value1 || !value2) {\n      return value1 ? 1 : value2 ? -1 : 0;\n    }\n\n    // Otherwise, compare alphabetically based on current user locale\n    return value1\n      .toString()\n      .localeCompare(value2, navigator.language, {\n        numeric: true,\n        ignorePunctuation: true,\n      });\n  }\n}\n","import { AfterViewInit, ContentChild, Directive, ElementRef, Input, TemplateRef } from \"@angular/core\";\nimport { UsaSort } from \"./table-sort.component\";\n\n\n/**\n * Structural Directive to extract table header template\n * from user\n */\n@Directive({\n  selector: `[usaTableHeaderDef]`,\n})\nexport class UsaTableHeaderDef {\n\n  constructor(\n    public templateRef: TemplateRef<any>,\n  ) {}\n}\n\n/**\n * Directive to apply certain styles and/or attribute to table header\n */\n@Directive({\n  selector: `[usa-table-header]`,\n  host: {\n    '[attr.role]': '\\'columnheader\\'',\n    '[attr.scope]': '\\'col\\'',\n    '[attr.data-sortable]': 'usaSort ? true : undefined',\n    '[attr.aria-sort]': 'ariaSort ? ariaSort : undefined',\n    '[attr.aria-label]': 'ariaLabel'\n  }\n})\nexport class UsaTableHeader implements AfterViewInit{\n  @ContentChild(UsaSort) usaSort: UsaSort;\n\n  @Input() ariaLabel: string;\n\n  ariaSort: 'ascending' | 'descending';\n\n  _defaultAriaLabel: string;\n\n  constructor(\n    public elementRef: ElementRef\n  ) {}\n\n  ngAfterViewInit() {\n    if (this.ariaLabel) {\n      this.usaSort.setColumnHeader(this.ariaLabel);\n      return;\n    }\n\n    let ariaLabel  = (this.elementRef.nativeElement as HTMLTableHeaderCellElement).innerText;\n    this._defaultAriaLabel = ariaLabel;\n\n    if (this.usaSort) {\n      this.usaSort.setColumnHeader(this._defaultAriaLabel);\n      ariaLabel = this._defaultAriaLabel + ', sortable column, currently unsorted'\n    }\n\n    this.ariaLabel = ariaLabel;\n  }\n\n  setSortState(sortState: 'ascending' | 'descending' | 'none') {\n    if (sortState === 'none') {\n      this.setSortInactive();\n      return;\n    }\n    this.ariaSort = sortState;\n\n    if (this._defaultAriaLabel) {\n      this.ariaLabel = this._defaultAriaLabel  + ', sortable column, currently sorted ' + this.ariaSort;\n    }\n  }\n\n  setSortInactive() {\n    this.ariaSort = undefined;\n    this.usaSort.disableSort();\n    if (this._defaultAriaLabel) {\n      this.ariaLabel = this._defaultAriaLabel  + ', sortable column, currently unsorted';\n    }\n  }\n}\n\n/**\n * Represents one row of table headers. Multiple rows of\n * table headers can exist in one table\n */\n@Directive({\n  selector: `[usaHeaderRowDef]`,\n})\nexport class UsaHeaderRowDef {\n  \n  @Input() usaHeaderRowDef: string[];\n\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class UsaTableConfig {\n  /**\n   * Display table without column borders\n   * @default false\n   */\n  borderless = false;\n\n  /**\n   * Allow table to scroll horizontally when content expand view width\n   * @default false\n   */\n  scrollable = false;\n\n  /**\n   * Add alternating light/grey background color when displaying table rows\n   * @default false\n   */\n  striped = false;\n\n  /**\n   * Minimize table cell padding\n   * @default false\n   */\n  compact = false;\n\n  /**\n   * Stack table when in mobile sized view\n   * @default true\n   */\n  stacked = true;\n\n  /**\n   * Displays first column as header when in stacked mode\n   * @default false\n   */\n  stackedHeader = false;\n\n  /**\n   * Whether or not the data is sorted server side. If set to true, then\n   * the table will not perform sort operations on given data, but simply\n   * handle bookkeeping of sort state and event emission\n   * @default false\n   */\n  serverSideSort = false;\n}","import {\n  Directive,\n  ElementRef,\n  HostListener,\n  Input,\n  Renderer2,\n} from '@angular/core';\n\n@Directive({\n  selector: 'tr[usaHighlightOnHover]',\n})\nexport class HighlightOnHoverDirective {\n  private readonly hoverClass = 'usa-table__row--hovered';\n\n  @Input()\n  usaHighlightOnHover = false;\n\n  constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n  @HostListener('mouseenter') onMouseEnter() {\n    if (this.usaHighlightOnHover) {\n      this.addHoverClass();\n    }\n  }\n\n  @HostListener('mouseleave') onMouseLeave() {\n    if (this.usaHighlightOnHover) {\n      this.removeHoverClass();\n    }\n  }\n\n  addHoverClass() {\n    this.renderer.addClass(this.el.nativeElement, this.hoverClass);\n  }\n  removeHoverClass() {\n    this.renderer.removeClass(this.el.nativeElement, this.hoverClass);\n  }\n}\n","import {\n  AfterContentChecked,\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  Directive,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  TemplateRef,\n  TrackByFunction,\n} from '@angular/core';\nimport { TableDataSource } from './models';\nimport { UsaDataRowDef, UsaTableData, UsaTableDataDef } from './table-data';\nimport {\n  UsaHeaderRowDef,\n  UsaTableHeader,\n  UsaTableHeaderDef,\n} from './table-header';\nimport { UsaSort } from './table-sort.component';\nimport { UsaTableConfig } from './table.config';\n\n@Directive({\n  selector: `[usaColumnDef]`,\n})\nexport class UsaColumnDef {\n  @ContentChild(UsaTableHeaderDef) tableHeaderTemplate: UsaTableHeaderDef;\n  @ContentChild(UsaTableHeader) tableHeader: UsaTableHeader;\n\n  @ContentChild(UsaTableDataDef) tableDataTemplate: UsaTableDataDef;\n  @ContentChildren(UsaTableData) tableData: QueryList<UsaTableData>;\n\n  @ContentChild(UsaSort) tableSort: UsaSort;\n\n  @Input() usaColumnDef: string;\n\n  isSortActive = false;\n\n  setSortActive(sortState: 'ascending' | 'descending') {\n    this.tableHeader.setSortState(sortState);\n    this.tableData.forEach((data) => data.setSortActive());\n    this.isSortActive = true;\n  }\n\n  setSortInactive() {\n    this.tableHeader.setSortState('none');\n    this.tableData.forEach((data) => data.setSortInactive());\n    this.isSortActive = false;\n  }\n}\n\n@Component({\n  selector: 'usa-table',\n  templateUrl: './table.component.html',\n  styleUrls: ['./table.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaTableComponent\n  implements AfterContentInit, OnChanges, AfterContentChecked\n{\n  /**\n   * Display table without column borders\n   * @default false\n   */\n  @Input() borderless: boolean;\n\n  /**\n   * Allow table to scroll horizontally when content expand view width\n   * @default true\n   */\n  @Input() scrollable: boolean;\n\n  /**\n   * Add alternating light/grey background color when displaying table rows\n   * @default false\n   */\n  @Input() striped: boolean;\n\n  /**\n   * Minimize table cell padding\n   * @default false\n   */\n  @Input() compact: boolean;\n\n  /**\n   * Stack table when in mobile sized view\n   */\n  @Input() stacked: boolean;\n\n  /**\n   * Displays first column as header when in stacked mode\n   */\n  @Input() stackedHeader: boolean;\n\n  /**\n   * Tracking function that will be used to check the differences in data changes.\n   * Used similarly to ngFor trackBy function Optimize row operations by identifying\n   * a row based on its data relative to the function to know if a row should be\n   * added/removed/moved. Accepts a function that takes two parameters, index and item.\n   */\n  @Input() trackBy: TrackByFunction<TableDataSource>;\n\n  /**\n   * Whether or not the data is sorted server side. If set to true, then\n   * the table will not perform sort operations on given data, but simply\n   * handle bookkeeping of sort state and event emission\n   */\n  @Input() serverSideSort: boolean;\n\n  /**\n   * Highlight row which is currently being hovered by cursor\n   */\n  @Input() highlightRowOnHover: boolean;\n\n  /**\n   * Emitted whenever a column's sort button is clicked. Emits columns name and\n   * sort state (ascending/descending) value\n   */\n  @Output() sortClicked = new EventEmitter<{\n    column: string;\n    sortState: 'ascending' | 'descending';\n  }>();\n\n  @Output()\n  rowClicked = new EventEmitter<number>();\n\n  /**\n   * The column definitions provided by the user that contain what the header, data, and footer\n   * cells should render for each column.\n   */\n  @ContentChildren(UsaColumnDef, { descendants: true })\n  _contentColumnDefs: QueryList<UsaColumnDef>;\n\n  /** Set of data row definitions that were provided to the table as content children. */\n  @ContentChild(UsaDataRowDef) _tableDataDefs: UsaDataRowDef;\n\n  /** Set of header row definitions that were provided to the table as content children. */\n  @ContentChildren(UsaHeaderRowDef, {\n    descendants: true,\n  })\n  _contentHeaderRowDefs: QueryList<UsaHeaderRowDef>;\n\n  /** Array Populated by Content Childern of UsaHeaderRowDef */\n  _headerRowDefs: UsaHeaderRowDef[];\n\n  @Input() displayedData: TableDataSource[];\n\n  _columnHeaderMap: Map<string, UsaColumnDef> = new Map();\n  _columnDataMap: Map<string, TemplateRef<UsaTableDataDef>> = new Map();\n\n  /**\n   * Reference of table sort info if new data is dynamically added / removed\n   */\n  _sortedColumnInfo: {\n    sortState: 'ascending' | 'descending';\n    sortFn: Function;\n    sortColumn: UsaColumnDef;\n  } = {\n    sortState: undefined,\n    sortFn: undefined,\n    sortColumn: undefined,\n  };\n\n  _ariaLiveSortMessage: string;\n\n  /**\n   * Internal flag that gets raised anytime input data reference changes to indicate\n   * next content check cycle, we need to re-evaluate the column with data sort active\n   */\n  _resortAfterContentCheck: boolean = false;\n\n  /**\n   * Event bubbled up from sort button on click. Sorts the table based on\n   * sort function for the given column\n   * @param $event\n   */\n  @HostListener('sort', ['$event'])\n  onSortClicked($event: CustomEvent) {\n    let isColumnFound = false;\n    this._contentColumnDefs.forEach((column) => {\n      if (!column.tableSort) {\n        return;\n      }\n      const tableSortEl = column.tableSort._el.nativeElement;\n      if (column.isSortActive && $event.target != tableSortEl) {\n        column.setSortInactive();\n      } else if (tableSortEl === $event.target) {\n        this._sortColumnData(\n          column,\n          $event.detail.sortFn,\n          $event.detail.sortState\n        );\n        isColumnFound = true;\n      }\n    });\n\n    this.setAriaLiveOnSort();\n    $event?.stopImmediatePropagation();\n\n    if (!isColumnFound) {\n      return;\n    }\n\n    const sortEvent = {\n      column: this._sortedColumnInfo.sortColumn.usaColumnDef,\n      sortState: this._sortedColumnInfo.sortState,\n    };\n\n    this.sortClicked.emit(sortEvent);\n  }\n\n  constructor(private config: UsaTableConfig, public cdr: ChangeDetectorRef) {\n    this.borderless = this.config.borderless;\n    this.compact = this.config.compact;\n    this.scrollable = this.config.scrollable;\n    this.striped = this.config.striped;\n    this.stacked = this.config.stacked;\n    this.stackedHeader = this.config.stackedHeader;\n    this.serverSideSort = this.config.serverSideSort;\n  }\n\n  ngAfterContentInit(): void {\n    this._contentColumnDefs.forEach((column) => {\n      this._columnHeaderMap.set(column.usaColumnDef, column);\n      this._columnDataMap.set(\n        column.usaColumnDef,\n        column.tableDataTemplate?.templateRef\n      );\n    });\n\n    this._headerRowDefs = this._contentHeaderRowDefs.toArray();\n  }\n\n  ngOnChanges(changes) {\n    if (!changes.displayedData || !this._sortedColumnInfo.sortColumn) {\n      return;\n    }\n\n    this._resortAfterContentCheck = true;\n    this.cdr.detectChanges();\n  }\n\n  ngAfterContentChecked() {\n    if (!this._resortAfterContentCheck) {\n      return;\n    }\n\n    this._sortColumnData(\n      this._sortedColumnInfo.sortColumn,\n      this._sortedColumnInfo.sortFn,\n      this._sortedColumnInfo.sortState\n    );\n    this.cdr.detectChanges();\n    this._resortAfterContentCheck = false;\n  }\n\n  private _sortColumnData(\n    sortColumn: UsaColumnDef,\n    sortFn: Function,\n    sortState: 'ascending' | 'descending'\n  ) {\n    sortColumn.setSortActive(sortState);\n\n    this._sortedColumnInfo = {\n      sortFn,\n      sortState,\n      sortColumn,\n    };\n\n    /**\n     * Sorting done from server side - omit front end side sorting\n     */\n    if (this.serverSideSort) {\n      return;\n    }\n\n    this.displayedData.sort((a, b) => {\n      const valueA = a[sortColumn.usaColumnDef];\n      const valueB = b[sortColumn.usaColumnDef];\n\n      // Invert sorting if state is descending\n      return sortState === 'ascending'\n        ? sortFn(valueA, valueB)\n        : -1 * sortFn(valueA, valueB);\n    });\n  }\n\n  private setAriaLiveOnSort() {\n    if (\n      !this._sortedColumnInfo.sortColumn ||\n      !this._sortedColumnInfo.sortState\n    ) {\n      return;\n    }\n\n    const sortedColumn =\n      this._sortedColumnInfo.sortColumn.tableHeader._defaultAriaLabel;\n    this._ariaLiveSortMessage = `The column ${sortedColumn} is now sorted in ${this._sortedColumnInfo.sortState} order`;\n  }\n}\n","<div [ngClass]=\"{'usa-table-container--scrollable': scrollable}\">\n  <table role=\"table\" class=\"usa-table\" \n    [ngClass]=\"{\n      'usa-table--borderless': borderless, \n      'usa-table--striped': striped, \n      'usa-table--compact': compact,\n      'usa-table--stacked': stacked,\n      'usa-table--stacked-header': stackedHeader\n    }\">\n    <ng-content select=\"caption\"></ng-content>\n    <thead>\n      <ng-container *ngFor=\"let headerRowDef of _headerRowDefs\"\n        [ngTemplateOutlet]=\"headerTmpl\" [ngTemplateOutletContext]=\"{tableHeaders: headerRowDef.usaHeaderRowDef}\"></ng-container>\n    </thead>\n    <tbody>\n      <ng-container *ngFor=\"let data of displayedData; index as i; trackBy: trackBy ? trackBy : undefined\" \n        [ngTemplateOutlet]=\"dataTmpl\" [ngTemplateOutletContext]=\"{data: data, index: i}\"> </ng-container>\n    </tbody>\n  </table>\n</div>\n\n<div class=\"usa-sr-only usa-table__announcement-region\" aria-live=\"polite\">\n  {{_ariaLiveSortMessage}}\n</div>\n\n\n<!-- Table Header Template-->\n<ng-template #headerTmpl let-tableHeaders=\"tableHeaders\">\n  <tr>\n    <ng-container *ngFor=\"let header of tableHeaders\">\n      <ng-container [ngTemplateOutlet]=\"_columnHeaderMap?.get(header)?.tableHeaderTemplate?.templateRef\"></ng-container>\n    </ng-container>\n  </tr>\n</ng-template>\n\n\n<!-- Table Data Template -->\n<ng-template #dataTmpl let-data=\"data\" let-index=\"index\" >\n  <tr [usaHighlightOnHover]=\"highlightRowOnHover\" (click)=\"rowClicked.emit(data)\">\n    <th *ngIf=\"data.rowHeader\" scope=\"row\">{{data.rowHeader}}</th>\n    <ng-container \n      *ngFor=\"let header of _tableDataDefs.usaDataRowDefColumns\"\n      [ngTemplateOutlet]=\"_columnDataMap.get(header)\"\n      [ngTemplateOutletContext]=\"{\n        $implicit: data, \n        index: index\n      }\">\n    </ng-container>\n  </tr>\n</ng-template>\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UsaColumnDef, UsaTableComponent } from './table.component';\nimport { UsaHeaderRowDef, UsaTableHeader, UsaTableHeaderDef } from './table-header';\nimport { UsaTableDataDef, UsaDataRowDef, UsaTableData } from './table-data';\nimport { UsaSort } from './table-sort.component';\nimport { HighlightOnHoverDirective } from './highlight-on-hover.directive';\n\n@NgModule({\n  declarations: [\n    UsaTableComponent,\n    UsaColumnDef,\n    UsaTableHeader,\n    UsaTableHeaderDef,\n    UsaHeaderRowDef,\n    UsaTableDataDef,\n    UsaDataRowDef,\n    UsaSort,\n    UsaTableData,\n    HighlightOnHoverDirective,\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    UsaTableComponent,\n    UsaColumnDef,\n    UsaTableHeader,\n    UsaHeaderRowDef,\n    UsaTableHeaderDef,\n    UsaTableDataDef,\n    UsaDataRowDef,\n    UsaSort,\n    UsaTableData,\n    HighlightOnHoverDirective,\n  ],\n})\nexport class UsaTableModule { }\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Optional,\n  Output,\n  Self,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { FormFieldComponent } from '../form-field/form-field.component';\nimport { Key } from '../util/key';\n\nlet nextId = 0;\n\n@Component({\n  selector: 'usa-textarea',\n  templateUrl: './textarea.component.html',\n})\nexport class UsaTextareaComponent implements ControlValueAccessor {\n  model: string = '';\n\n  private _onChange = (_: any) => {};\n  private _onTouched = () => {};\n  /**\n   * Sets the ariaLabel attribute\n   */\n  @Input() ariaLabel = 'Textarea component';\n  /**\n   * Sets the rowHeight\n   */\n  @Input() rowHeight: number;\n  /**\n   * Sets the maxLength attribute\n   */\n  @Input() maxlength: number;\n\n  /**\n   * Sets the maxLength attribute\n   */\n  @Input() minlength: number;\n\n  /**\n   * Sets the id attribute\n   */\n  @Input() id = `usa-textarea-${nextId++}`;\n  /**\n   * Sets the placeholder attribute\n   */\n  @Input() placeholder = '';\n  /**\n   * Sets the name attribute\n   */\n  @Input() name = 'textarea';\n\n  /**\n   * Optional assistance text to be set when placeholder attribute is used\n   */\n  @Input() title: string;\n\n  /**\n   * Sets the disabled attribute\n   */\n  @Input() disabled: boolean;\n\n  /**\n   * Emits focus/blur  event\n   */\n  @Output() onBlur: EventEmitter<string> = new EventEmitter(null);\n\n  /**\n   *  emits the new value when the model value changes.\n   */\n  @Output() valueChange: EventEmitter<string> = new EventEmitter<string>();\n\n  /**\n   * Sets the required attribute\n   */\n  @Input() required: boolean; // deprecated\n  /**\n   * Sets the required attribute\n   */\n  @Input() requiredFlag: boolean;\n\n  /**\n   * Sets the label text\n   */\n  @Input() label: string;\n\n  /**\n   * Sets the helpful description text\n   */\n  @Input() description: string;\n  /**\n   * Sets the general error message\n   */\n  @Input() errorMessage: string;\n\n  @Input() wrapperRef: FormFieldComponent;\n\n  constructor(@Self() @Optional() public control: NgControl) {\n    this.control && (this.control.valueAccessor = this);\n  }\n\n  onInputChange(value) {\n    this._onTouched();\n    this.model = value;\n    this._onChange(value);\n    this.valueChange.emit(value);\n  }\n\n  focusChange(event) {\n    this.model = event.target.value;\n    this.updateModel();\n    this.onBlur.emit(this.model);\n    this._onTouched();\n  }\n\n  onValueChange(event) {\n    this.model = event.target.value;\n    this.updateModel();\n  }\n\n  onKeydown(event): void {\n    if (event.code == Key.Enter) {\n      this.model = event.target.value;\n      this.updateModel();\n      event.preventDefault();\n    }\n  }\n\n  // Helper method that gets a new instance of the model and notifies ControlValueAccessor that we have a new model for this FormControl (our custom component)\n  updateModel() {\n    this._onChange(this.model);\n    if (this.wrapperRef) this.wrapperRef.formatErrors(this.control);\n  }\n\n  // ControlValueAccessor (and Formly) is trying to update the value of the FormControl (our custom component) programatically\n  // If there is a value we will just overwrite items\n  // If there is no value we reset the items array to be empty\n  writeValue(value: any) {\n    this.model = value;\n  }\n\n  // ControlValueAccessor hook that lets us call this._onChange(var) to let the form know our variable has changed (in this case model)\n  registerOnChange(fn: any): void {\n    this._onChange = fn;\n  }\n\n  // ControlValueAccessor hook (not used)\n  registerOnTouched(fn: any) {\n    this._onTouched = fn;\n  }\n\n  // Set disable state\n  public setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  // Check for invalid\n  public get invalid(): boolean {\n    return this.control ? this.control.invalid : false;\n  }\n\n  // To apply the error/success class for the textarea\n  public get showError(): boolean {\n    if (!this.control) {\n      return false;\n    }\n    const { dirty, touched } = this.control;\n    return this.invalid ? dirty || touched : false;\n  }\n}\n","<textarea [ngClass]=\"{'usa-input--error': showError, 'usa-input--success': !showError && control && control.valid}\"\n  [ngModel]=\"model\" type=\"textarea\" class=\"usa-textarea\" [attr.id]=\"id\" [attr.name]=\"name\"\n  [attr.placeholder]=\"placeholder\" #textarea [attr.title]=\"title\" [rows]=\"rowHeight\" [minlength]=\"minlength\"\n  [attr.maxlength]=\"maxlength ? maxlength : 524288\" [disabled]=\"disabled\" (ngModelChange)=\"onInputChange($event)\"\n  (focus)=\"focusChange($event)\" (blur)=\"focusChange($event)\" (input)=\"onValueChange($event)\"\n  (keydown)=\"onKeydown($event)\" [ngModelOptions]=\"{standalone: true}\">\n  </textarea>\n","import { Component, Input, ChangeDetectorRef } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'usa-form-field',\r\n  templateUrl: 'form-field.component.html',\r\n})\r\nexport class FormFieldComponent {\r\n  /**\r\n   * sets the label text\r\n   */\r\n  @Input() public label: string;\r\n  /**\r\n   * sets the id attribute value\r\n   */\r\n  @Input() public id: string;\r\n  /**\r\n   * sets the description text\r\n   */\r\n  @Input() public description: string;\r\n  /**\r\n   * deprecated, toggles the required text\r\n   */\r\n  @Input() public required: boolean = false;\r\n  /**\r\n   * toggles the required text\r\n   */\r\n  @Input() public requiredFlag: boolean = false;\r\n\r\n  /**\r\n   * set the error message\r\n   */\r\n  @Input() public set errorMessage(message: string) {\r\n    this._errorMessage = message;\r\n  }\r\n\r\n  public get errorMessage(): string {\r\n    return this._errorMessage;\r\n  }\r\n\r\n  public input: HTMLElement;\r\n\r\n  public errorElId: string;\r\n  public descriptionElId: string;\r\n\r\n  private _errorMessage = '';\r\n\r\n  constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n  public formatErrors(control: NgControl) {\r\n    if (!control) {\r\n      return;\r\n    }\r\n\r\n    if (control.pristine || !control.errors) {\r\n      this.errorMessage = '';\r\n      return;\r\n    }\r\n\r\n    if (control.invalid && control.errors) {\r\n      for (const k in control.errors) {\r\n        const errorObject = control.errors[k];\r\n\r\n        // to check if it's not null & is object\r\n        if (\r\n          errorObject.message !== null &&\r\n          typeof errorObject.message === 'object'\r\n        ) {\r\n          this.errorMessage = errorObject.message;\r\n          return;\r\n        }\r\n        this.setInvalidErrors(k, errorObject);\r\n      }\r\n    }\r\n  }\r\n\r\n  public clearError() {\r\n    this.errorMessage = '';\r\n  }\r\n\r\n  private setInvalidErrors(error, errorObject) {\r\n    const actualLength = errorObject.actualLength;\r\n    const requiredLength = errorObject.requiredLength;\r\n\r\n    switch (error) {\r\n      case 'minlength':\r\n        this.errorMessage = `The number of characters should not be less than ${requiredLength}`;\r\n        return;\r\n      case 'maxlength':\r\n        this.errorMessage =\r\n          actualLength +\r\n          ' characters input but max length is ' +\r\n          requiredLength;\r\n        return;\r\n      case 'required':\r\n        this.errorMessage = 'This field is required';\r\n        return;\r\n      case 'isNotBeforeToday':\r\n        this.errorMessage = 'Date must not be before today';\r\n        return;\r\n    }\r\n  }\r\n}\r\n","<div #labelDiv [class.usa-form-group--error]=\"!!errorMessage\" class=\"usa-form-group \">\n  <label *ngIf=\"!!label\" [attr.for]=\"id\" class=\"usa-label\" [class.usa-input-error-label]=\"errorMessage\">\n    {{ label || '' }}\n    <span *ngIf=\"required || requiredFlag\">\n      (Required)\n    </span>\n  </label>\n  <div *ngIf=\"description\" [attr.id]=\"id\" class=\"usa-label--description form-text text-muted\" [innerHTML]=\"description\">\n  </div>\n  <div *ngIf=\"!!errorMessage\" class=\"usa-error-message\" [style.display]=\"'block'\" [attr.id]=\"errorElId\">\n    {{errorMessage}}\n  </div>\n  <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormFieldComponent } from './form-field.component';\n\n@NgModule({\n  declarations: [FormFieldComponent],\n  exports: [FormFieldComponent],\n  imports: [CommonModule],\n})\nexport class USWDSFormFieldModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UsaTextareaComponent } from './textarea.component';\nimport { USWDSFormFieldModule } from '../form-field/form-field.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n  declarations: [UsaTextareaComponent],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    USWDSFormFieldModule,\n    FormsModule,\n  ],\n  exports: [UsaTextareaComponent],\n})\nexport class UsaTextareaModule {}\n","import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  Input,\n  Renderer2,\n} from '@angular/core';\n\n@Directive({\n  selector: '[usaTooltip]',\n  host: {\n    class: 'usa-tooltip__trigger',\n    '(mouseenter)': 'show()',\n    '(focus)': 'show()',\n    '(mouseleave)': 'hide()',\n    '(blur)': 'hide()',\n  },\n})\nexport class UsaTooltipDirective implements AfterViewInit {\n  // Span which contains the tooltip text\n  tooltipBody: HTMLElement;\n  // Element which causes tooltip to be shown, tooltip apppears relative to this\n  tooltipTrigger: HTMLElement;\n  // Element which wraps tooltip and trigger\n  tooltipWrapper: HTMLElement;\n\n  readonly TRIANGLE_SIZE = 5;\n\n  @Input()\n  position: 'top' | 'bottom' | 'left' | 'right' = 'top';\n\n  /**\n   * Value to be displayed in tooltip\n   */\n  @Input()\n  title: string;\n\n  /**\n   * Additional classes to be applied to wrapper\n   */\n  @Input()\n  classes: string;\n\n  constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    const tooltipID = `tooltip-${Math.floor(Math.random() * 900000) + 100000}`;\n\n    this.tooltipTrigger = this.el.nativeElement;\n    this.tooltipWrapper = document.createElement('span');\n    this.tooltipBody = document.createElement('span');\n\n    this.tooltipTrigger.setAttribute('aria-describedby', tooltipID);\n    this.tooltipTrigger.setAttribute('tabindex', '0');\n    this.tooltipTrigger.classList.remove('usa-tooltip');\n\n    const parent = this.renderer.parentNode(this.el.nativeElement);\n    parent.replaceChild(this.tooltipWrapper, this.el.nativeElement);\n    this.renderer.appendChild(this.tooltipWrapper, this.tooltipTrigger);\n    this.renderer.appendChild(this.tooltipWrapper, this.tooltipBody);\n    this.renderer.addClass(this.tooltipWrapper, 'usa-tooltip');\n\n    if (this.classes) {\n      this.classes\n        .split(' ')\n        .forEach((className) => this.tooltipWrapper.classList.add(className));\n    }\n\n    this.renderer.addClass(this.tooltipBody, 'usa-tooltip__body');\n    this.renderer.setAttribute(this.tooltipBody, 'id', tooltipID);\n    this.renderer.setAttribute(this.tooltipBody, 'role', 'tooltip');\n    this.renderer.setAttribute(this.tooltipBody, 'aria-hidden', 'true');\n\n    const text = this.renderer.createText(this.title);\n    this.renderer.appendChild(this.tooltipBody, text);\n  }\n\n  positionTop(): void {\n    this.resetPositionStyles(this.tooltipBody);\n\n    const top = this.calculateMarginOffset(\n      'top',\n      this.tooltipBody.offsetHeight,\n      this.tooltipTrigger\n    );\n    const left = this.calculateMarginOffset(\n      'left',\n      this.tooltipBody.offsetWidth,\n      this.tooltipTrigger\n    );\n\n    this.setPositionClass('top');\n\n    this.tooltipBody.style.left = '50%';\n    this.tooltipBody.style.top = `-${this.TRIANGLE_SIZE}px`;\n    this.tooltipBody.style.margin = `-${top}px 0 0 -${left / 2}px`;\n  }\n\n  positionBottom(): void {\n    this.resetPositionStyles(this.tooltipBody);\n\n    const left = this.calculateMarginOffset(\n      'left',\n      this.tooltipBody.offsetWidth,\n      this.tooltipTrigger\n    );\n\n    this.setPositionClass('bottom');\n\n    this.tooltipBody.style.left = '50%';\n    this.tooltipBody.style.margin = `${this.TRIANGLE_SIZE}px 0 0 -${\n      left / 2\n    }px`;\n  }\n\n  positionLeft(): void {\n    this.resetPositionStyles(this.tooltipBody);\n\n    const top = this.calculateMarginOffset(\n      'top',\n      this.tooltipBody.offsetHeight,\n      this.tooltipTrigger\n    );\n    const left = this.calculateMarginOffset(\n      'left',\n      this.tooltipTrigger.offsetLeft > this.tooltipBody.offsetWidth\n        ? this.tooltipTrigger.offsetLeft - this.tooltipBody.offsetWidth\n        : this.tooltipBody.offsetWidth,\n      this.tooltipTrigger\n    );\n\n    this.setPositionClass('left');\n\n    this.tooltipBody.style.top = `50%`;\n    this.tooltipBody.style.left = `-${this.TRIANGLE_SIZE}px`;\n    this.tooltipBody.style.margin = `-${top / 2}px 0 0 ${\n      this.tooltipTrigger.offsetLeft > this.tooltipBody.offsetWidth\n        ? left\n        : -left\n    }px`;\n  }\n  positionRight(): void {\n    this.resetPositionStyles(this.tooltipBody);\n\n    const top = this.calculateMarginOffset(\n      'top',\n      this.tooltipBody.offsetHeight,\n      this.tooltipTrigger\n    );\n\n    this.setPositionClass('right');\n\n    this.tooltipBody.style.top = '50%';\n    this.tooltipBody.style.left = `${\n      this.tooltipTrigger.offsetLeft +\n      this.tooltipTrigger.offsetWidth +\n      this.TRIANGLE_SIZE\n    }px`;\n    this.tooltipBody.style.margin = `-${top / 2}px 0 0 0`;\n  }\n\n  setPositionClass(position: string): void {\n    this.renderer.removeClass(this.tooltipBody, 'usa-tooltip__body--top');\n    this.renderer.removeClass(this.tooltipBody, 'usa-tooltip__body--bottom');\n    this.renderer.removeClass(this.tooltipBody, 'usa-tooltip__body--left');\n    this.renderer.removeClass(this.tooltipBody, 'usa-tooltip__body--right');\n    this.renderer.addClass(this.tooltipBody, `usa-tooltip__body--${position}`);\n  }\n\n  show() {\n    this.tooltipBody.setAttribute('aria-hidden', 'false');\n    this.renderer.addClass(this.tooltipBody, 'is-set');\n    this.renderer.addClass(this.tooltipBody, 'is-visible');\n\n    switch (this.position) {\n      case 'top': {\n        this.positionTop();\n        if (!this.isInViewport(this.tooltipBody)) {\n          this.positionBottom();\n        }\n        break;\n      }\n      case 'bottom': {\n        this.positionBottom();\n        if (!this.isInViewport(this.tooltipBody)) {\n          this.positionTop();\n        }\n        break;\n      }\n      case 'left':\n        this.positionLeft();\n        if (!this.isInViewport(this.tooltipBody)) {\n          this.positionRight();\n          if (!this.isInViewport(this.tooltipBody)) {\n            this.positionTop();\n          }\n        }\n        break;\n      case 'right':\n        this.positionRight();\n        if (!this.isInViewport(this.tooltipBody)) {\n          this.positionLeft();\n          if (!this.isInViewport(this.tooltipBody)) {\n            this.positionTop();\n          }\n        }\n        break;\n    }\n  }\n\n  hide() {\n    this.renderer.removeClass(this.tooltipBody, 'is-set');\n    this.renderer.removeClass(this.tooltipBody, 'is-visible');\n    this.tooltipBody.setAttribute('aria-hidden', 'true');\n  }\n\n  isInViewport(elementToCheck): boolean {\n    const rect = elementToCheck.getBoundingClientRect();\n    return (\n      rect.top >= 0 &&\n      rect.left >= 0 &&\n      rect.bottom <=\n        (window.innerHeight || document.documentElement.clientHeight) &&\n      rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n    );\n  }\n\n  offsetMargin(target, propertyToCheck): number {\n    return parseInt(\n      window.getComputedStyle(target).getPropertyValue(propertyToCheck),\n      10\n    );\n  }\n\n  calculateMarginOffset(positionToCheck, bodyOffset, trigger) {\n    return this.offsetMargin(trigger, `margin-${positionToCheck}`) > 0\n      ? bodyOffset - this.offsetMargin(trigger, `margin-${positionToCheck}`)\n      : bodyOffset;\n  }\n\n  resetPositionStyles(target): void {\n    target.style.top = null;\n    target.style.bottom = null;\n    target.style.right = null;\n    target.style.left = null;\n    target.style.margin = null;\n  }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { UsaTooltipDirective } from './tooltip.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n  ],\n  declarations: [\n    UsaTooltipDirective\n  ],\n  exports: [\n    UsaTooltipDirective\n  ]\n})\nexport class UsaTooltipModule {}\n","\n/** @docs-private */\nexport function createMissingDateImplError(provider: string) {\n  return Error(\n    `UsaDatePicker: No provider found for ${provider}. You must import one of the following ` +\n    `modules at your application root: UsaNativeDateModule, UsaMomentDateModule, or provide a ` +\n    `custom implementation.`);\n}\n","import { CommonModule } from '@angular/common';\nimport { Directive, HostListener, ElementRef, Input, NgModule } from '@angular/core';\n\n/** For internal use - directive that adds or removes class based on hover */\n@Directive({\n  selector: '[hover-class]'\n})\nexport class HoverClassDirective {\n\n  constructor(public elementRef: ElementRef) { }\n  @Input('hover-class') hoverClass:any;  \n\n  @HostListener('mouseenter') onMouseEnter() {\n    this.elementRef.nativeElement.classList.add(this.hoverClass);\n }\n\n  @HostListener('mouseleave') onMouseLeave() {\n    this.elementRef.nativeElement.classList.remove(this.hoverClass);\n  }\n\n}\n\n\n@NgModule({\n  declarations: [HoverClassDirective],\n  imports: [CommonModule],\n  exports: [HoverClassDirective]\n})\nexport class HoverClassModule {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  NgZone,\n  OnChanges,\n  SimpleChanges,\n  OnDestroy,\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\n\n/** Extra CSS classes that can be associated with a calendar cell. */\nexport type UsaCalendarCellCssClasses = string | string[] | Set<string> | { [key: string]: any };\n\n/** Function that can generate the extra classes that should be added to a calendar cell. */\nexport type UsaCalendarCellClassFunction<D> =\n  (date: D, view: 'month' | 'year' | 'multi-year') => UsaCalendarCellCssClasses;\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * @docs-private\n */\nexport class UsaCalendarCell<D = any> {\n  constructor(public value: number,\n    public displayValue: string,\n    public ariaLabel: string,\n    public enabled: boolean,\n    public cssClasses: UsaCalendarCellCssClasses = {},\n    public compareValue = value,\n    public rawValue?: D) { }\n}\n\n/** Event emitted when a date inside the calendar is triggered as a result of a user action. */\nexport interface UsaCalendarUserEvent<D> {\n  value: D;\n  event: Event;\n}\n\n/**\n * An internal component used to display calendar data in a table.\n * @docs-private\n */\n@Component({\n  selector: '[usa-calendar-body]',\n  templateUrl: './calendar-body.html',\n  exportAs: 'usaCalendarBody',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaCalendarBody implements OnChanges, OnDestroy {\n  /**\n   * Used to skip the next focus event when rendering the preview range.\n   * We need a flag like this, because some browsers fire focus events asynchronously.\n   */\n  private _skipNextFocus: boolean;\n\n  @Input() view: 'month' | 'year' | 'multi-year';\n\n  /** The label for the table. (e.g. \"Jan 2017\"). */\n  @Input() label: string;\n\n  /** The cells to display in the table. */\n  @Input() rows: UsaCalendarCell[][];\n\n  @Input() prevMonthRow: UsaCalendarCell[];\n\n  @Input() nextMonthRow: UsaCalendarCell[];\n\n  /** The value in the table that corresponds to today. */\n  @Input() todayValue: number;\n\n  /** Start value of the selected date range. */\n  @Input() startValue: number;\n\n  /** End value of the selected date range. */\n  @Input() endValue: number;\n\n  /** The minimum number of free cells needed to fit the label in the first row. */\n  @Input() labelMinRequiredCells: number;\n\n  /** The number of columns in the table. */\n  @Input() numCols: number = 7;\n\n  /** The cell number of the active cell in the table. */\n  @Input() activeCell: number = 0;\n\n  /** Whether a range is being selected. */\n  @Input() isRange: boolean = false;\n\n  /**\n   * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n   * maintained even as the table resizes.\n   */\n  @Input() cellAspectRatio: number = 1;\n\n  /** Start of the comparison range. */\n  @Input() comparisonStart: number | null;\n\n  /** End of the comparison range. */\n  @Input() comparisonEnd: number | null;\n\n  /** Start of the preview range. */\n  @Input() previewStart: number | null = null;\n\n  /** End of the preview range. */\n  @Input() previewEnd: number | null = null;\n\n  /** Emits when a new value is selected. */\n  @Output() readonly selectedValueChange = new EventEmitter<UsaCalendarUserEvent<number>>();\n\n  /** Emits when the preview has changed as a result of a user action. */\n  @Output() readonly previewChange =\n    new EventEmitter<UsaCalendarUserEvent<UsaCalendarCell | null>>();\n\n  /** The number of blank cells to put at the beginning for the first row. */\n  _firstRowOffset: number;\n\n  /** Padding for the individual date cells. */\n  _cellPadding: string;\n\n  /** Width of an individual cell. */\n  _cellWidth: string;\n\n  constructor(private _elementRef: ElementRef<HTMLElement>, private _ngZone: NgZone) {\n    _ngZone.runOutsideAngular(() => {\n      const element = _elementRef.nativeElement;\n      element.addEventListener('mouseenter', this._enterHandler, true);\n      element.addEventListener('focus', this._enterHandler, true);\n      element.addEventListener('mouseleave', this._leaveHandler, true);\n      element.addEventListener('blur', this._leaveHandler, true);\n    });\n  }\n\n  /** Called when a cell is clicked. */\n  _cellClicked(cell: UsaCalendarCell, event: MouseEvent): void {\n    if (cell.enabled) {\n      this.selectedValueChange.emit({ value: cell.compareValue, event });\n    }\n  }\n\n  /** Returns whether a cell should be marked as selected. */\n  _isSelected(value: number) {\n    return this.startValue === value || this.endValue === value;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const columnChanges = changes['numCols'];\n    const { rows, numCols } = this;\n\n    if (changes['rows'] || columnChanges) {\n      this._firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n    }\n\n    if (changes['cellAspectRatio'] || columnChanges || !this._cellPadding) {\n      this._cellPadding = `${50 * this.cellAspectRatio / numCols}%`;\n    }\n\n    if (columnChanges || !this._cellWidth) {\n      this._cellWidth = `${100 / numCols}%`;\n    }\n  }\n\n  ngOnDestroy() {\n    const element = this._elementRef.nativeElement;\n    element.removeEventListener('mouseenter', this._enterHandler, true);\n    element.removeEventListener('focus', this._enterHandler, true);\n    element.removeEventListener('mouseleave', this._leaveHandler, true);\n    element.removeEventListener('blur', this._leaveHandler, true);\n  }\n\n  /** Returns whether a cell is active. */\n  _isActiveCell(rowIndex: number, colIndex: number): boolean {\n    let cellNumber = rowIndex * this.numCols + colIndex;\n\n    // Account for the fact that the first row may not have as many cells.\n    if (rowIndex) {\n      cellNumber -= this._firstRowOffset;\n    }\n\n    return cellNumber == this.activeCell;\n  }\n\n  /** Focuses the active cell after the microtask queue is empty. */\n  _focusActiveCell(movePreview = true) {\n    this._ngZone.runOutsideAngular(() => {\n      this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n        const activeCell: HTMLElement | null =\n          this._elementRef.nativeElement.querySelector('.usa-date-picker__calendar__date--focused');\n\n        if (activeCell) {\n          if (!movePreview) {\n            this._skipNextFocus = true;\n          }\n\n          activeCell.focus();\n        }\n      });\n    });\n  }\n\n  /** Gets whether a value is the start of the main range. */\n  _isRangeStart(value: number) {\n    return isStart(value, this.startValue, this.endValue);\n  }\n\n  /** Gets whether a value is the end of the main range. */\n  _isRangeEnd(value: number) {\n    return isEnd(value, this.startValue, this.endValue);\n  }\n\n  /** Gets whether a value is within the currently-selected range. */\n  _isInRange(value: number): boolean {\n    return isInRange(value, this.startValue, this.endValue, this.isRange);\n  }\n\n  /** Gets whether a value is the start of the comparison range. */\n  _isComparisonStart(value: number) {\n    return isStart(value, this.comparisonStart, this.comparisonEnd);\n  }\n\n  /** Whether the cell is a start bridge cell between the main and comparison ranges. */\n  _isComparisonBridgeStart(value: number, rowIndex: number, colIndex: number) {\n    if (!this._isComparisonStart(value) || this._isRangeStart(value) || !this._isInRange(value)) {\n      return false;\n    }\n\n    let previousCell: UsaCalendarCell | undefined = this.rows[rowIndex][colIndex - 1];\n\n    if (!previousCell) {\n      const previousRow = this.rows[rowIndex - 1];\n      previousCell = previousRow && previousRow[previousRow.length - 1];\n    }\n\n    return previousCell && !this._isRangeEnd(previousCell.compareValue);\n  }\n\n  /** Whether the cell is an end bridge cell between the main and comparison ranges. */\n  _isComparisonBridgeEnd(value: number, rowIndex: number, colIndex: number) {\n    if (!this._isComparisonEnd(value) || this._isRangeEnd(value) || !this._isInRange(value)) {\n      return false;\n    }\n\n    let nextCell: UsaCalendarCell | undefined = this.rows[rowIndex][colIndex + 1];\n\n    if (!nextCell) {\n      const nextRow = this.rows[rowIndex + 1];\n      nextCell = nextRow && nextRow[0];\n    }\n\n    return nextCell && !this._isRangeStart(nextCell.compareValue);\n  }\n\n  /** Gets whether a value is the end of the comparison range. */\n  _isComparisonEnd(value: number) {\n    return isEnd(value, this.comparisonStart, this.comparisonEnd);\n  }\n\n  /** Gets whether a value is within the current comparison range. */\n  _isInComparisonRange(value: number) {\n    return isInRange(value, this.comparisonStart, this.comparisonEnd, this.isRange);\n  }\n\n  /**\n   * Gets whether a value is the same as the start and end of the comparison range.\n   * For context, the functions that we use to determine whether something is the start/end of\n   * a range don't allow for the start and end to be on the same day, because we'd have to use\n   * much more specific CSS selectors to style them correctly in all scenarios. This is fine for\n   * the regular range, because when it happens, the selected styles take over and still show where\n   * the range would've been, however we don't have these selected styles for a comparison range.\n   * This function is used to apply a class that serves the same purpose as the one for selected\n   * dates, but it only applies in the context of a comparison range.\n   */\n  _isComparisonIdentical(value: number) {\n    // Note that we don't need to null check the start/end\n    // here, because the `value` will always be defined.\n    return this.comparisonStart === this.comparisonEnd && value === this.comparisonStart;\n  }\n\n  /** Gets whether a value is the start of the preview range. */\n  _isPreviewStart(value: number) {\n    return isStart(value, this.previewStart, this.previewEnd);\n  }\n\n  /** Gets whether a value is the end of the preview range. */\n  _isPreviewEnd(value: number) {\n    return isEnd(value, this.previewStart, this.previewEnd);\n  }\n\n  /** Gets whether a value is inside the preview range. */\n  _isInPreview(value: number) {\n    return isInRange(value, this.previewStart, this.previewEnd, this.isRange);\n  }\n\n  /**\n   * Event handler for when the user enters an element\n   * inside the calendar body (e.g. by hovering in or focus).\n   */\n  private _enterHandler = (event: Event) => {\n    if (this._skipNextFocus && event.type === 'focus') {\n      this._skipNextFocus = false;\n      return;\n    }\n\n    // We only need to hit the zone when we're selecting a range.\n    if (event.target && this.isRange) {\n      const cell = this._getCellFromElement(event.target as HTMLElement);\n\n      if (cell) {\n        this._ngZone.run(() => this.previewChange.emit({ value: cell.enabled ? cell : null, event }));\n      }\n    }\n  }\n\n  /**\n   * Event handler for when the user's pointer leaves an element\n   * inside the calendar body (e.g. by hovering out or blurring).\n   */\n  private _leaveHandler = (event: Event) => {\n    // We only need to hit the zone when we're selecting a range.\n    if (this.previewEnd !== null && this.isRange) {\n      // Only reset the preview end value when leaving cells. This looks better, because\n      // we have a gap between the cells and the rows and we don't want to remove the\n      // range just for it to show up again when the user moves a few pixels to the side.\n      if (event.target && isTableCell(event.target as HTMLElement)) {\n        this._ngZone.run(() => this.previewChange.emit({ value: null, event }));\n      }\n    }\n  }\n\n  /** Finds the UsaCalendarCell that corresponds to a DOM node. */\n  private _getCellFromElement(element: HTMLElement): UsaCalendarCell | null {\n    let cell: HTMLElement | undefined;\n\n    if (isTableCell(element)) {\n      cell = element;\n    } else if (isTableCell(element.parentNode!)) {\n      cell = element.parentNode as HTMLElement;\n    }\n\n    if (cell) {\n      const row = cell.getAttribute('data-mat-row');\n      const col = cell.getAttribute('data-mat-col');\n\n      if (row && col) {\n        return this.rows[parseInt(row)][parseInt(col)];\n      }\n    }\n\n    return null;\n  }\n\n}\n\n/** Checks whether a node is a table cell element. */\nfunction isTableCell(node: Node): node is HTMLTableCellElement {\n  return node.nodeName === 'TD';\n}\n\n/** Checks whether a value is the start of a range. */\nfunction isStart(value: number, start: number | null, end: number | null): boolean {\n  return end !== null && start !== end && value < end && value === start;\n}\n\n/** Checks whether a value is the end of a range. */\nfunction isEnd(value: number, start: number | null, end: number | null): boolean {\n  return start !== null && start !== end && value >= start && value === end;\n}\n\n/** Checks whether a value is inside of a range. */\nfunction isInRange(value: number,\n  start: number | null,\n  end: number | null,\n  rangeEnabled: boolean): boolean {\n  return rangeEnabled && start !== null && end !== null && start !== end &&\n    value >= start && value <= end;\n}\n","\n<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n  <!-- First Row -->\n  <ng-container *ngIf=\"rowIndex === 0\">\n    <td *ngFor=\"let item of prevMonthRow; let colIndex = index\">\n      <ng-container [ngTemplateOutlet]=\"cellButton\" \n        [ngTemplateOutletContext]=\"{$implicit: {item: item, prevMonth: true}}\"></ng-container>\n    </td>\n    <td *ngFor=\"let item of rows[0]; let colIndex = index\">\n      <ng-container [ngTemplateOutlet]=\"cellButton\" \n        [ngTemplateOutletContext]=\"{$implicit: {item: item, rowIndex: rowIndex, colIndex: colIndex}}\">\n      </ng-container>\n    </td>\n  </ng-container>\n\n  <!-- Middle rows -->\n  <ng-container *ngIf=\"rowIndex > 0 && rowIndex < rows.length - 1\">\n    <td *ngFor=\"let item of row; let colIndex = index\">\n      <ng-container [ngTemplateOutlet]=\"cellButton\" [ngTemplateOutletContext]=\"{$implicit: {item: item, rowIndex: rowIndex, colIndex: colIndex}}\"></ng-container>\n    </td>\n  </ng-container>\n\n  <ng-container *ngIf=\"rowIndex === rows.length - 1\">\n    <td *ngFor=\"let item of rows[rows.length - 1]; let colIndex = index\">\n      <ng-container [ngTemplateOutlet]=\"cellButton\" [ngTemplateOutletContext]=\"{$implicit: {item: item, rowIndex: rowIndex, colIndex: colIndex}}\"></ng-container>\n    </td>\n    <td *ngFor=\"let item of nextMonthRow; let colIndex = index\">\n      <ng-container [ngTemplateOutlet]=\"cellButton\" \n        [ngTemplateOutletContext]=\"{$implicit: {item: item, nextMonth: true}}\">\n      </ng-container>\n    </td>\n  </ng-container>\n</tr>\n\n<ng-template #cellButton let-data>\n  <button\n  role=\"gridcell\"\n  class=\"usa-date-picker__calendar__date\"\n  [hover-class]=\"'usa-date-picker__calendar__date--focused'\"\n  [ngClass]=\"data.item.cssClasses\"\n  [tabindex]=\"_isActiveCell(data.rowIndex, data.colIndex) ? 0 : -1\"\n  [attr.aria-disabled]=\"!data.item.enabled\"\n  [class.text-base-light]=\"data.item.enabled ? undefined : true\"\n  [class.usa-date-picker__calendar__date--selected]=\"_isSelected(data.item.compareValue)\"\n  [class.usa-date-picker__calendar__date--current-month]=\"view === 'month' && !data.prevMonth && !data.nextMonth && data.item.enabled\"\n  [class.usa-date-picker__calendar__date--previous-month]=\"view === 'month' &&  data.prevMonth && data.item.enabled\"\n  [class.usa-date-picker__calendar__date--next-month]=\"view === 'month' && data.nextMonth && data.item.enabled\"\n  [class.usa-date-picker__calendar__date--today]=\"!data.prevMonth && !data.nextMonth && todayValue === data.item.compareValue\"\n  [class.usa-date-picker__calendar__date--focused]=\"_isActiveCell(data.rowIndex, data.colIndex)\"\n  [class.usa-date-picker__calendar__year]=\"view === 'multi-year'\"\n  [attr.aria-label]=\"data.item.ariaLabel\"\n  [attr.aria-disabled]=\"!data.item.enabled || null\"\n  [attr.aria-selected]=\"_isSelected(data.item.compareValue)\"\n  (click)=\"_cellClicked(data.item, $event)\">\n    {{data.item.displayValue}}\n</button>\n</ng-template>","import { inject, InjectionToken, LOCALE_ID } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/** InjectionToken for datePicker that can be used to override default locale code. */\nexport const USA_DATE_LOCALE = new InjectionToken<{}>('USA_DATE_LOCALE', {\n  providedIn: 'root',\n  factory: USA_DATE_LOCALE_FACTORY,\n});\n\n/** @docs-private */\nexport function USA_DATE_LOCALE_FACTORY(): {} {\n  return inject(LOCALE_ID);\n}\n\n/** Adapts type `D` to be usable as a date by components that work with dates. */\nexport abstract class DateAdapter<D, L = any> {\n  /** The locale to use for all dates. */\n  protected locale: L;\n  protected readonly _localeChanges = new Subject<void>();\n\n  /** A stream that emits when the locale changes. */\n  readonly localeChanges: Observable<void> = this._localeChanges;\n\n  /**\n   * Gets the year component of the given date.\n   * @param date The date to extract the year from.\n   * @returns The year component.\n   */\n  abstract getYear(date: D): number;\n\n  /**\n   * Gets the month component of the given date.\n   * @param date The date to extract the month from.\n   * @returns The month component (0-indexed, 0 = January).\n   */\n  abstract getMonth(date: D): number;\n\n  /**\n   * Gets the date of the month component of the given date.\n   * @param date The date to extract the date of the month from.\n   * @returns The month component (1-indexed, 1 = first of month).\n   */\n  abstract getDate(date: D): number;\n\n  /**\n   * Gets the day of the week component of the given date.\n   * @param date The date to extract the day of the week from.\n   * @returns The month component (0-indexed, 0 = Sunday).\n   */\n  abstract getDayOfWeek(date: D): number;\n\n  /**\n   * Gets a list of names for the months.\n   * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n   * @returns An ordered list of all month names, starting with January.\n   */\n  abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets a list of names for the dates of the month.\n   * @returns An ordered list of all date of the month names, starting with '1'.\n   */\n  abstract getDateNames(): string[];\n\n  /**\n   * Gets a list of names for the days of the week.\n   * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n   * @returns An ordered list of all weekday names, starting with Sunday.\n   */\n  abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n  /**\n   * Gets the name for the year of the given date.\n   * @param date The date to get the year name for.\n   * @returns The name of the given year (e.g. '2017').\n   */\n  abstract getYearName(date: D): string;\n\n  /**\n   * Gets the first day of the week.\n   * @returns The first day of the week (0-indexed, 0 = Sunday).\n   */\n  abstract getFirstDayOfWeek(): number;\n\n  /**\n   * Gets the number of days in the month of the given date.\n   * @param date The date whose month should be checked.\n   * @returns The number of days in the month of the given date.\n   */\n  abstract getNumDaysInMonth(date: D): number;\n\n  /**\n   * Clones the given date.\n   * @param date The date to clone\n   * @returns A new date equal to the given date.\n   */\n  abstract clone(date: D): D;\n\n  /**\n   * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n   * month and date.\n   * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n   * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n   * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n   * @returns The new date, or null if invalid.\n   */\n  abstract createDate(year: number, month: number, date: number): D;\n\n  /**\n   * Gets today's date.\n   * @returns Today's date.\n   */\n  abstract today(): D;\n\n  /**\n   * Parses a date from a user-provided value.\n   * @param value The value to parse.\n   * @param parseFormat The expected format of the value being parsed\n   *     (type is implementation-dependent).\n   * @returns The parsed date.\n   */\n  abstract parse(value: any, parseFormat: any): D | null;\n\n  /**\n   * Formats a date as a string according to the given format.\n   * @param date The value to format.\n   * @param displayFormat The format to use to display the date as a string.\n   * @returns The formatted date string.\n   */\n  abstract format(date: D, displayFormat: any): string;\n\n  /**\n   * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n   * calendar for each year and then finding the closest date in the new month. For example when\n   * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n   * @param date The date to add years to.\n   * @param years The number of years to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of years added.\n   */\n  abstract addCalendarYears(date: D, years: number): D;\n\n  /**\n   * Adds the given number of months to the date. Months are counted as if flipping a page on the\n   * calendar for each month and then finding the closest date in the new month. For example when\n   * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n   * @param date The date to add months to.\n   * @param months The number of months to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of months added.\n   */\n  abstract addCalendarMonths(date: D, months: number): D;\n\n  /**\n   * Adds the given number of days to the date. Days are counted as if moving one cell on the\n   * calendar for each day.\n   * @param date The date to add days to.\n   * @param days The number of days to add (may be negative).\n   * @returns A new date equal to the given one with the specified number of days added.\n   */\n  abstract addCalendarDays(date: D, days: number): D;\n\n  /**\n   * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n   * This method is used to generate date strings that are compatible with native HTML attributes\n   * such as the `min` or `max` attribute of an `<input>`.\n   * @param date The date to get the ISO date string for.\n   * @returns The ISO date string date string.\n   */\n  abstract toIso8601(date: D): string;\n\n  /**\n   * Checks whether the given object is considered a date instance by this DateAdapter.\n   * @param obj The object to check\n   * @returns Whether the object is a date instance.\n   */\n  abstract isDateInstance(obj: any): boolean;\n\n  /**\n   * Checks whether the given date is valid.\n   * @param date The date to check.\n   * @returns Whether the date is valid.\n   */\n  abstract isValid(date: D): boolean;\n\n  /**\n   * Gets date instance that is not valid.\n   * @returns An invalid date.\n   */\n  abstract invalid(): D;\n\n  /**\n   * Given a potential date object, returns that same date object if it is\n   * a valid date, or `null` if it's not a valid date.\n   * @param obj The object to check.\n   * @returns A date or `null`.\n   */\n  getValidDateOrNull(obj: unknown): D | null {\n    return this.isDateInstance(obj) && this.isValid(obj as D) ? obj as D : null;\n  }\n\n  /**\n   * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n   * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n   * string). The default implementation does not allow any deserialization, it simply checks that\n   * the given value is already a valid date object or null. The `<usa-datePicker>` will call this\n   * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n   * support passing values from your backend directly to these properties by overriding this method\n   * to also deserialize the format used by your backend.\n   * @param value The value to be deserialized into a date object.\n   * @returns The deserialized date object, either a valid date, null if the value can be\n   *     deserialized into a null date (e.g. the empty string), or an invalid date.\n   */\n  deserialize(value: any): D | null {\n    if (value == null || this.isDateInstance(value) && this.isValid(value)) {\n      return value;\n    }\n    return this.invalid();\n  }\n\n  /**\n   * Sets the locale used for all dates.\n   * @param locale The new locale.\n   */\n  setLocale(locale: L) {\n    this.locale = locale;\n    this._localeChanges.next();\n  }\n\n  /**\n   * Compares two dates.\n   * @param first The first date to compare.\n   * @param second The second date to compare.\n   * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n   *     a number greater than 0 if the first date is later.\n   */\n  compareDate(first: D, second: D): number {\n    return this.getYear(first) - this.getYear(second) ||\n      this.getMonth(first) - this.getMonth(second) ||\n      this.getDate(first) - this.getDate(second);\n  }\n\n  /**\n   * Checks if two dates are equal.\n   * @param first The first date to check.\n   * @param second The second date to check.\n   * @returns Whether the two dates are equal.\n   *     Null dates are considered equal to other null dates.\n   */\n  sameDate(first: D | null, second: D | null): boolean {\n    if (first && second) {\n      let firstValid = this.isValid(first);\n      let secondValid = this.isValid(second);\n      if (firstValid && secondValid) {\n        return !this.compareDate(first, second);\n      }\n      return firstValid == secondValid;\n    }\n    return first == second;\n  }\n\n  /**\n   * Clamp the given date between min and max dates.\n   * @param date The date to clamp.\n   * @param min The minimum value to allow. If null or omitted no min is enforced.\n   * @param max The maximum value to allow. If null or omitted no max is enforced.\n   * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n   *     otherwise `date`.\n   */\n  clampDate(date: D, min?: D | null, max?: D | null): D {\n    if (min && this.compareDate(date, min) < 0) {\n      return min;\n    }\n    if (max && this.compareDate(date, max) > 0) {\n      return max;\n    }\n    return date;\n  }\n}","import { FactoryProvider, Injectable, Optional, SkipSelf, OnDestroy } from '@angular/core';\nimport { DateAdapter } from './dateadapter/date-adapter';\nimport { Observable, Subject } from 'rxjs';\n\n/** A class representing a range of dates. */\nexport class DateRange<D> {\n  /**\n   * Ensures that objects with a `start` and `end` property can't be assigned to a variable that\n   * expects a `DateRange`\n   */\n  // tslint:disable-next-line:no-unused-variable\n  private _disableStructuralEquivalency: never;\n\n  constructor(\n    /** The start date of the range. */\n    readonly start: D | null,\n    /** The end date of the range. */\n    readonly end: D | null) { }\n}\n\n/**\n * Conditionally picks the date type, if a DateRange is passed in.\n * @docs-private\n */\nexport type ExtractDateTypeFromSelection<T> = T extends DateRange<infer D> ? D : NonNullable<T>;\n\n/**\n * Event emitted by the date selection model when its selection changes.\n * @docs-private\n */\nexport interface DateSelectionModelChange<S> {\n  /** New value for the selection. */\n  selection: S;\n\n  /** Object that triggered the change. */\n  source: unknown;\n\n  /** Previous value */\n  oldValue?: S;\n}\n\n/**\n * A selection model containing a date selection.\n * @docs-private\n * @dynamic\n */\n@Injectable()\nexport abstract class UsaDateSelectionModel<S, D = ExtractDateTypeFromSelection<S>>\n  implements OnDestroy {\n  private readonly _selectionChanged = new Subject<DateSelectionModelChange<S>>();\n\n  /** Emits when the selection has changed. */\n  selectionChanged: Observable<DateSelectionModelChange<S>> = this._selectionChanged;\n\n  protected constructor(\n    /** The current selection. */\n    readonly selection: S,\n    protected _adapter: DateAdapter<D>) {\n    this.selection = selection;\n  }\n\n  /**\n   * Updates the current selection in the model.\n   * @param value New selection that should be assigned.\n   * @param source Object that triggered the selection change.\n   */\n  updateSelection(value: S, source: unknown) {\n    const oldValue = (this as { selection: S }).selection;\n    (this as { selection: S }).selection = value;\n    this._selectionChanged.next({ selection: value, source, oldValue });\n  }\n\n  ngOnDestroy() {\n    this._selectionChanged.complete();\n  }\n\n  protected _isValidDateInstance(date: D): boolean {\n    return this._adapter.isDateInstance(date) && this._adapter.isValid(date);\n  }\n\n  /** Adds a date to the current selection. */\n  abstract add(date: D | null): void;\n\n  /** Checks whether the current selection is valid. */\n  abstract isValid(): boolean;\n\n  /** Checks whether the current selection is complete. */\n  abstract isComplete(): boolean;\n\n  /** Clones the selection model. */\n  abstract clone(): UsaDateSelectionModel<S, D>;\n}\n\n/**\n * A selection model that contains a single date.\n * @docs-private\n */\n@Injectable()\nexport class UsaSingleDateSelectionModel<D> extends UsaDateSelectionModel<D | null, D> {\n  constructor(adapter: DateAdapter<D>) {\n    super(null, adapter);\n  }\n\n  /**\n   * Adds a date to the current selection. In the case of a single date selection, the added date\n   * simply overwrites the previous selection\n   */\n  add(date: D | null) {\n    super.updateSelection(date, this);\n  }\n\n  /** Checks whether the current selection is valid. */\n  isValid(): boolean {\n    return this.selection != null && this._isValidDateInstance(this.selection);\n  }\n\n  /**\n   * Checks whether the current selection is complete. In the case of a single date selection, this\n   * is true if the current selection is not null.\n   */\n  isComplete() {\n    return this.selection != null;\n  }\n\n  /** Clones the selection model. */\n  clone() {\n    const clone = new UsaSingleDateSelectionModel<D>(this._adapter);\n    clone.updateSelection(this.selection, this);\n    return clone;\n  }\n}\n\n/**\n * A selection model that contains a date range.\n * @docs-private\n */\n@Injectable()\nexport class UsaRangeDateSelectionModel<D> extends UsaDateSelectionModel<DateRange<D>, D> {\n  constructor(adapter: DateAdapter<D>) {\n    super(new DateRange<D>(null, null), adapter);\n  }\n\n  /**\n   * Adds a date to the current selection. In the case of a date range selection, the added date\n   * fills in the next `null` value in the range. If both the start and the end already have a date,\n   * the selection is reset so that the given date is the new `start` and the `end` is null.\n   */\n  add(date: D | null): void {\n    let { start, end } = this.selection;\n\n    if (start == null) {\n      start = date;\n    } else if (end == null) {\n      end = date;\n    } else {\n      start = date;\n      end = null;\n    }\n\n    super.updateSelection(new DateRange<D>(start, end), this);\n  }\n\n  /** Checks whether the current selection is valid. */\n  isValid(): boolean {\n    const { start, end } = this.selection;\n\n    // Empty ranges are valid.\n    if (start == null && end == null) {\n      return true;\n    }\n\n    // Complete ranges are only valid if both dates are valid and the start is before the end.\n    if (start != null && end != null) {\n      return this._isValidDateInstance(start) && this._isValidDateInstance(end) &&\n        this._adapter.compareDate(start, end) <= 0;\n    }\n\n    // Partial ranges are valid if the start/end is valid.\n    return (start == null || this._isValidDateInstance(start)) &&\n      (end == null || this._isValidDateInstance(end));\n  }\n\n  /**\n   * Checks whether the current selection is complete. In the case of a date range selection, this\n   * is true if the current selection has a non-null `start` and `end`.\n   */\n  isComplete(): boolean {\n    return this.selection.start != null && this.selection.end != null;\n  }\n\n  /** Clones the selection model. */\n  clone() {\n    const clone = new UsaRangeDateSelectionModel<D>(this._adapter);\n    clone.updateSelection(this.selection, this);\n    return clone;\n  }\n}\n\n/** @docs-private */\nexport function USA_SINGLE_DATE_SELECTION_MODEL_FACTORY(\n  parent: UsaSingleDateSelectionModel<unknown>, adapter: DateAdapter<unknown>) {\n  return parent || new UsaSingleDateSelectionModel(adapter);\n}\n\n/**\n * Used to provide a single selection model to a component.\n * @docs-private\n */\nexport const USA_SINGLE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider = {\n  provide: UsaDateSelectionModel,\n  deps: [[new Optional(), new SkipSelf(), UsaDateSelectionModel], DateAdapter],\n  useFactory: USA_SINGLE_DATE_SELECTION_MODEL_FACTORY,\n};\n\n\n/** @docs-private */\nexport function USA_RANGE_DATE_SELECTION_MODEL_FACTORY(\n  parent: UsaSingleDateSelectionModel<unknown>, adapter: DateAdapter<unknown>) {\n  return parent || new UsaRangeDateSelectionModel(adapter);\n}\n\n/**\n * Used to provide a range selection model to a component.\n * @docs-private\n */\nexport const USA_RANGE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider = {\n  provide: UsaDateSelectionModel,\n  deps: [[new Optional(), new SkipSelf(), UsaDateSelectionModel], DateAdapter],\n  useFactory: USA_RANGE_DATE_SELECTION_MODEL_FACTORY,\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 import {Injectable, InjectionToken, Optional, SkipSelf, FactoryProvider} from '@angular/core';\n import {DateAdapter} from './dateadapter/date-adapter';\n import {DateRange} from './date-selection-model';\n \n /** Injection token used to customize the date range selection behavior. */\n export const USA_DATE_RANGE_SELECTION_STRATEGY =\n     new InjectionToken<UsaDateRangeSelectionStrategy<any>>('USA_DATE_RANGE_SELECTION_STRATEGY');\n \n /** Object that can be provided in order to customize the date range selection behavior. */\n export interface UsaDateRangeSelectionStrategy<D> {\n   /**\n    * Called when the user has finished selecting a value.\n    * @param date Date that was selected. Will be null if the user cleared the selection.\n    * @param currentRange Range that is currently show in the calendar.\n    * @param event DOM event that triggered the selection. Currently only corresponds to a `click`\n    *    event, but it may get expanded in the future.\n    */\n   selectionFinished(date: D | null, currentRange: DateRange<D>, event: Event): DateRange<D>;\n \n   /**\n    * Called when the user has activated a new date (e.g. by hovering over\n    * it or moving focus) and the calendar tries to display a date range.\n    *\n    * @param activeDate Date that the user has activated. Will be null if the user moved\n    *    focus to an element that's no a calendar cell.\n    * @param currentRange Range that is currently shown in the calendar.\n    * @param event DOM event that caused the preview to be changed. Will be either a\n    *    `mouseenter`/`mouseleave` or `focus`/`blur` depending on how the user is navigating.\n    */\n   createPreview(activeDate: D | null, currentRange: DateRange<D>, event: Event): DateRange<D>;\n }\n \n /** Provides the default date range selection behavior. */\n @Injectable()\n export class DefaultUsaCalendarRangeStrategy<D> implements UsaDateRangeSelectionStrategy<D> {\n   constructor(private _dateAdapter: DateAdapter<D>) {}\n \n   selectionFinished(date: D, currentRange: DateRange<D>) {\n     let {start, end} = currentRange;\n \n     if (start == null) {\n       start = date;\n     } else if (end == null && date && this._dateAdapter.compareDate(date, start) >= 0) {\n       end = date;\n     } else {\n       start = date;\n       end = null;\n     }\n \n     return new DateRange<D>(start, end);\n   }\n \n   createPreview(activeDate: D | null, currentRange: DateRange<D>) {\n     let start: D | null = null;\n     let end: D | null = null;\n \n     if (currentRange.start && !currentRange.end && activeDate) {\n       start = currentRange.start;\n       end = activeDate;\n     }\n \n     return new DateRange<D>(start, end);\n   }\n }\n \n \n /** @docs-private */\n export function USA_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY(\n   parent: UsaDateRangeSelectionStrategy<unknown>, adapter: DateAdapter<unknown>) {\n   return parent || new DefaultUsaCalendarRangeStrategy(adapter);\n }\n \n /** @docs-private */\n export const USA_CALENDAR_RANGE_STRATEGY_PROVIDER: FactoryProvider = {\n   provide: USA_DATE_RANGE_SELECTION_STRATEGY,\n   deps: [[new Optional(), new SkipSelf(), USA_DATE_RANGE_SELECTION_STRATEGY], DateAdapter],\n   useFactory: USA_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY,\n };\n","import { InjectionToken } from '@angular/core';\n\nexport type UsaDateFormats = {\n  parse: {\n    dateInput: any\n  },\n  display: {\n    dateInput: any,\n    monthLabel?: any,\n    monthYearLabel: any,\n    dateA11yLabel: any,\n    monthYearA11yLabel: any,\n  }\n};\n\n\nexport const USA_DATE_FORMATS = new InjectionToken<UsaDateFormats>('usa-date-formats');","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  Optional,\n  Output,\n  ViewChild,\n  OnDestroy,\n  SimpleChanges,\n  OnChanges,\n  isDevMode,\n} from '@angular/core';\nimport {\n  UsaCalendarBody,\n  UsaCalendarCell,\n  UsaCalendarUserEvent,\n  UsaCalendarCellClassFunction,\n} from './calendar-body';\nimport { createMissingDateImplError } from '../date-picker-errors';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { DateRange } from '../date-selection-model';\nimport {\n  UsaDateRangeSelectionStrategy,\n  USA_DATE_RANGE_SELECTION_STRATEGY,\n} from '../date-range-selection-strategy';\nimport { hasModifierKey, KeyCode } from '../../util/key';\nimport { DateAdapter } from '../dateadapter/date-adapter';\nimport { UsaDateFormats, USA_DATE_FORMATS } from '../dateadapter/date-formats';\n\n\nconst DAYS_PER_WEEK = 7;\n\n\n/**\n * An internal component used to display a single month in the datePicker.\n * @docs-private\n */\n@Component({\n  selector: 'usa-month-view',\n  templateUrl: './month-view.html',\n  exportAs: 'usaMonthView',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UsaMonthView<D> implements AfterContentInit, OnChanges, OnDestroy {\n  private _rerenderSubscription = Subscription.EMPTY;\n\n  /** Flag used to filter out space/enter keyup events that originated outside of the view. */\n  private _selectionKeyPressed: boolean;\n\n  /**\n   * The date to display in this month view (everything other than the month and year is ignored).\n   */\n  @Input()\n  get activeDate(): D { return this._activeDate; }\n  set activeDate(value: D) {\n    const oldActiveDate = this._activeDate;\n    const validDate =\n      this._dateAdapter.getValidDateOrNull(\n        this._dateAdapter.deserialize(value)\n      ) || this._dateAdapter.today();\n    this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n    if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n      this._init();\n    }\n  }\n  private _activeDate: D;\n\n  /** The currently selected date. */\n  @Input()\n  get selected(): DateRange<D> | D | null { return this._selected; }\n  set selected(value: DateRange<D> | D | null) {\n    if (value instanceof DateRange) {\n      this._selected = value;\n    } else {\n      this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n\n    this._setRanges(this._selected);\n  }\n  private _selected: DateRange<D> | D | null;\n\n  /** The minimum selectable date. */\n  @Input()\n  get minDate(): D | null { return this._minDate; }\n  set minDate(value: D | null) {\n    this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n  }\n  private _minDate: D | null;\n\n  /** The maximum selectable date. */\n  @Input()\n  get maxDate(): D | null { return this._maxDate; }\n  set maxDate(value: D | null) {\n    this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n  }\n  private _maxDate: D | null;\n\n  /** Function used to filter which dates are selectable. */\n  @Input() dateFilter: (date: D) => boolean;\n\n  /** Function that can be used to add custom CSS classes to dates. */\n  @Input() dateClass: UsaCalendarCellClassFunction<D>;\n\n  /** Start of the comparison range. */\n  @Input() comparisonStart: D | null;\n\n  /** End of the comparison range. */\n  @Input() comparisonEnd: D | null;\n\n  /** Emits when a new date is selected. */\n  @Output() readonly selectedChange: EventEmitter<D | null> = new EventEmitter<D | null>();\n\n  /** Emits when any date is selected. */\n  @Output() readonly _userSelection: EventEmitter<UsaCalendarUserEvent<D | null>> =\n    new EventEmitter<UsaCalendarUserEvent<D | null>>();\n\n  /** Emits when any date is activated. */\n  @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n  /** The body of calendar table */\n  @ViewChild(UsaCalendarBody) _usaCalendarBody: UsaCalendarBody;\n\n  /** The label for this month (e.g. \"January 2017\"). */\n  _monthLabel: string;\n\n  /** Grid of calendar cells representing the dates of the month. */\n  _weeks: UsaCalendarCell[][];\n\n  /** Last few dates for previous month to place in first row  if there is offset space */\n  _prevMonthDays: UsaCalendarCell[];\n\n  /** First few dates for next month to place in last row if there is offset space */\n  _nextMonthDays: UsaCalendarCell[];\n\n  /** The number of blank cells in the first row before the 1st of the month. */\n  _firstWeekOffset: number;\n\n  /** Start value of the currently-shown date range. */\n  _rangeStart: number | null;\n\n  /** End value of the currently-shown date range. */\n  _rangeEnd: number | null;\n\n  /** Start value of the currently-shown comparison date range. */\n  _comparisonRangeStart: number | null;\n\n  /** End value of the currently-shown comparison date range. */\n  _comparisonRangeEnd: number | null;\n\n  /** Start of the preview range. */\n  _previewStart: number | null;\n\n  /** End of the preview range. */\n  _previewEnd: number | null;\n\n  /** Whether the user is currently selecting a range of dates. */\n  _isRange: boolean;\n\n  /** The date of the month that today falls on. Null if today is in another month. */\n  _todayDate: number | null;\n\n  /** The names of the weekdays. */\n  _weekdays: { long: string, narrow: string }[];\n\n  constructor(readonly _changeDetectorRef: ChangeDetectorRef,\n    @Optional() @Inject(USA_DATE_FORMATS) private _dateFormats: UsaDateFormats,\n    @Optional() public _dateAdapter: DateAdapter<D>,\n    @Inject(USA_DATE_RANGE_SELECTION_STRATEGY) @Optional()\n    private _rangeStrategy?: UsaDateRangeSelectionStrategy<D>) {\n\n    if (isDevMode()) {\n      if (!this._dateAdapter) {\n        throw createMissingDateImplError('DateAdapter');\n      }\n      if (!this._dateFormats) {\n        throw createMissingDateImplError('USA_DATE_FORMATS');\n      }\n    }\n\n    this._activeDate = this._dateAdapter.today();\n  }\n\n  ngAfterContentInit() {\n    this._rerenderSubscription = this._dateAdapter.localeChanges\n      .pipe(startWith(null))\n      .subscribe(() => this._init());\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const comparisonChange = changes['comparisonStart'] || changes['comparisonEnd'];\n\n    if (comparisonChange && !comparisonChange.firstChange) {\n      this._setRanges(this.selected);\n    }\n  }\n\n  ngOnDestroy() {\n    this._rerenderSubscription.unsubscribe();\n  }\n\n  /** Handles when a new date is selected. */\n  _dateSelected(event: UsaCalendarUserEvent<number>) {\n    const date = new Date(event.value).getDate();\n    const selectedYear = this._dateAdapter.getYear(this.activeDate);\n    const selectedMonth = new Date(event.value).getMonth();\n    const selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\n    let rangeStartDate: number | null;\n    let rangeEndDate: number | null;\n\n    if (this._selected instanceof DateRange) {\n      rangeStartDate = this._getDateInCurrentMonth(this._selected.start);\n      rangeEndDate = this._getDateInCurrentMonth(this._selected.end);\n    } else {\n      rangeStartDate = rangeEndDate = this._getDateInCurrentMonth(this._selected);\n    }\n\n    if (rangeStartDate !== date || rangeEndDate !== date) {\n      this.selectedChange.emit(selectedDate);\n    }\n\n    this._userSelection.emit({ value: selectedDate, event: event.event });\n    this._previewStart = this._previewEnd = null;\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Handles keydown events on the calendar body when calendar is in month view. */\n  _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n    // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n    // disabled ones from being selected. This may not be ideal, we should look into whether\n    // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n    const oldActiveDate = this._activeDate;\n\n    switch (event.keyCode) {\n      case KeyCode.ArrowLeft:\n        this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -1);\n        break;\n      case KeyCode.ArrowRight:\n        this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1);\n        break;\n      case KeyCode.ArrowUp:\n        this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\n        break;\n      case KeyCode.ArrowDown:\n        this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\n        break;\n      case KeyCode.Home:\n        this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate,\n          1 - this._dateAdapter.getDate(this._activeDate));\n        break;\n      case KeyCode.End:\n        this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate,\n          (this._dateAdapter.getNumDaysInMonth(this._activeDate) -\n            this._dateAdapter.getDate(this._activeDate)));\n        break;\n      case KeyCode.PageUp:\n        this.activeDate = event.altKey ?\n          this._dateAdapter.addCalendarYears(this._activeDate, -1) :\n          this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n        break;\n      case KeyCode.PageDown:\n        this.activeDate = event.altKey ?\n          this._dateAdapter.addCalendarYears(this._activeDate, 1) :\n          this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n        break;\n      case KeyCode.Enter:\n      case KeyCode.Space:\n        this._selectionKeyPressed = true;\n\n        if (this._canSelect(this._activeDate)) {\n          // Prevent unexpected default actions such as form submission.\n          // Note that we only prevent the default action here while the selection happens in\n          // `keyup` below. We can't do the selection here, because it can cause the calendar to\n          // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n          // because it's too late (see #23305).\n          event.preventDefault();\n        }\n        return;\n      case KeyCode.Escape:\n        // Abort the current range selection if the user presses escape mid-selection.\n        if (this._previewEnd != null && !hasModifierKey(event)) {\n          this._previewStart = this._previewEnd = null;\n          this.selectedChange.emit(null);\n          this._userSelection.emit({ value: null, event });\n          event.preventDefault();\n          event.stopPropagation(); // Prevents the overlay from closing.\n        }\n        return;\n      default:\n        // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n        return;\n    }\n\n    if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n      this.activeDateChange.emit(this.activeDate);\n    }\n\n    this._focusActiveCell();\n    // Prevent unexpected default actions such as form submission.\n    event.preventDefault();\n  }\n\n  /** Handles keyup events on the calendar body when calendar is in month view. */\n  _handleCalendarBodyKeyup(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCode.Space || event.keyCode === KeyCode.Enter) {\n      if (this._selectionKeyPressed && this._canSelect(this._activeDate)) {\n        this._dateSelected({ value: this._getCellCompareValue(this._activeDate), event });\n      }\n\n      this._selectionKeyPressed = false;\n    }\n  }\n\n  /** Initializes this month view. */\n  _init() {\n    this._setRanges(this.selected);\n    this._todayDate = this._getCellCompareValue(this._dateAdapter.today());\n    this._monthLabel = this._dateFormats.display.monthLabel\n      ? this._dateAdapter.format(this.activeDate, this._dateFormats.display.monthLabel)\n      : this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)]\n        .toLocaleUpperCase();\n\n    let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),\n      this._dateAdapter.getMonth(this.activeDate), 1);\n    this._firstWeekOffset =\n      (DAYS_PER_WEEK + this._dateAdapter.getDayOfWeek(firstOfMonth) -\n        this._dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n\n    this._initWeekdays();\n    this._createWeekCells();\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Focuses the active cell after the microtask queue is empty. */\n  _focusActiveCell(movePreview?: boolean) {\n    this._usaCalendarBody._focusActiveCell(movePreview);\n  }\n\n  /** Called when the user has activated a new cell and the preview needs to be updated. */\n  _previewChanged({ event, value: cell }: UsaCalendarUserEvent<UsaCalendarCell<D> | null>) {\n    if (this._rangeStrategy) {\n      // We can assume that this will be a range, because preview\n      // events aren't fired for single date selections.\n      const value = cell ? cell.rawValue! : null;\n      const previewRange =\n        this._rangeStrategy.createPreview(value, this.selected as DateRange<D>, event);\n      this._previewStart = this._getCellCompareValue(previewRange.start);\n      this._previewEnd = this._getCellCompareValue(previewRange.end);\n\n      // Note that here we need to use `detectChanges`, rather than `markForCheck`, because\n      // the way `_focusActiveCell` is set up at the moment makes it fire at the wrong time\n      // when navigating one month back using the keyboard which will cause this handler\n      // to throw a \"changed after checked\" error when updating the preview state.\n      this._changeDetectorRef.detectChanges();\n    }\n  }\n\n  /** Initializes the weekdays. */\n  private _initWeekdays() {\n    const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n    const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n    const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n\n    // Rotate the labels for days of the week based on the configured first day of the week.\n    let weekdays = longWeekdays.map((long, i) => {\n      return { long, narrow: narrowWeekdays[i] };\n    });\n    this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n  }\n\n  /** Creates UsaCalendarCells for the dates in this month. */\n  private _createWeekCells() {\n    this._createCellForPrevMonth();\n\n    const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n    const prevMonth = this._dateAdapter.addCalendarMonths(this.activeDate, -1);\n    const daysInPrevMonth = this._dateAdapter.getNumDaysInMonth(prevMonth);\n    this._prevMonthDays = [];\n    for (let i = daysInPrevMonth - this._firstWeekOffset; i < daysInPrevMonth; i++) {\n      this._prevMonthDays.push(this.getCalendarCell(prevMonth, i));\n    }\n\n    this._weeks = [[]];\n    for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n      if (cell == DAYS_PER_WEEK) {\n        this._weeks.push([]);\n        cell = 0;\n      }\n      this._weeks[this._weeks.length - 1].push(this.getCalendarCell(this.activeDate, i));\n    }\n\n    this._createCellForNextMonth();\n  }\n\n  /**\n   * Creates filler cells of previous month date to display in first row of current month view\n   */\n  private _createCellForPrevMonth() {\n    const prevMonth = this._dateAdapter.addCalendarMonths(this.activeDate, -1);\n    const daysInPrevMonth = this._dateAdapter.getNumDaysInMonth(prevMonth);\n    this._prevMonthDays = [];\n    for (let i = daysInPrevMonth - this._firstWeekOffset; i < daysInPrevMonth; i++) {\n      this._prevMonthDays.push(this.getCalendarCell(prevMonth, i));\n    }\n  }\n\n  /**\n   * Creates filler cells of next month date to display in last row of current month view\n   */\n  private _createCellForNextMonth() {\n    const remainingDaysInLastRow = this._dateAdapter.getDayOfWeekNames('long').length - this._weeks[this._weeks.length - 1].length;\n    const nextMonth = this._dateAdapter.addCalendarMonths(this.activeDate, 1);\n    this._nextMonthDays = [];\n    for (let i = 0; i < remainingDaysInLastRow; i++) {\n      this._nextMonthDays.push(this.getCalendarCell(nextMonth, i));\n    }\n  }\n\n  /** Creates a calender cell object for each cell of the calender */\n  private getCalendarCell(date: D, dateNum: number) {\n    const dateNames = this._dateAdapter.getDateNames();\n    const cellDate = this._dateAdapter.createDate(\n      this._dateAdapter.getYear(date),\n      this._dateAdapter.getMonth(date), dateNum + 1);\n    const enabled = this._shouldEnableDate(cellDate);\n    const ariaLabel = this._dateAdapter.format(cellDate, this._dateFormats.display.dateA11yLabel);\n    const cellClasses = this.dateClass ? this.dateClass(cellDate, 'month') : undefined;\n    return new UsaCalendarCell<D>(dateNum + 1, dateNames[dateNum],\n      ariaLabel, enabled, cellClasses, this._getCellCompareValue(cellDate)!, cellDate)\n  }\n\n  /** Date filter for the month */\n  private _shouldEnableDate(date: D): boolean {\n    return !!date &&\n      (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\n      (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0) &&\n      (!this.dateFilter || this.dateFilter(date));\n  }\n\n  /**\n   * Gets the date in this month that the given Date falls on.\n   * Returns null if the given Date is in another month.\n   */\n  private _getDateInCurrentMonth(date: D | null): number | null {\n    return date && this._hasSameMonthAndYear(date, this.activeDate) ?\n      this._dateAdapter.getDate(date) : null;\n  }\n\n  /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n  private _hasSameMonthAndYear(d1: D | null, d2: D | null): boolean {\n    return !!(d1 && d2 && this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\n      this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\n  }\n\n  /** Gets the value that will be used to one cell to another. */\n  private _getCellCompareValue(date: D | null): number | null {\n    if (date) {\n      // We use the time since the Unix epoch to compare dates in this view, rather than the\n      // cell values, because we need to support ranges that span across multiple months/years.\n      const year = this._dateAdapter.getYear(date);\n      const month = this._dateAdapter.getMonth(date);\n      const day = this._dateAdapter.getDate(date);\n      return new Date(year, month, day).getTime();\n    }\n\n    return null;\n  }\n\n\n  /** Sets the current range based on a model value. */\n  private _setRanges(selectedValue: DateRange<D> | D | null) {\n    if (selectedValue instanceof DateRange) {\n      this._rangeStart = this._getCellCompareValue(selectedValue.start);\n      this._rangeEnd = this._getCellCompareValue(selectedValue.end);\n      this._isRange = true;\n    } else {\n      this._rangeStart = this._rangeEnd = this._getCellCompareValue(selectedValue);\n      this._isRange = false;\n    }\n\n    this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);\n    this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);\n  }\n\n  /** Gets whether a date can be selected in the month view. */\n  private _canSelect(date: D) {\n    return !this.dateFilter || this.dateFilter(date);\n  }\n}\n","<table class=\"usa-date-picker__calendar__table\">\n  <thead>\n    <tr>\n      <!-- For the day-of-the-week column header, we use an `<abbr>` element because VoiceOver\n           ignores the `aria-label`. ChromeVox, however, does not read the full name\n           for the `<abbr>`, so we still set `aria-label` on the header element. -->\n      <th scope=\"col\" *ngFor=\"let day of _weekdays\" [attr.aria-label]=\"day.long\" class=\"usa-date-picker__calendar__day-of-week\">\n        <span [attr.title]=\"day.long\">{{day.narrow}}</span>\n      </th>\n    </tr>\n  </thead>\n  <tbody usa-calendar-body\n         [label]=\"_monthLabel\"\n         [rows]=\"_weeks\"\n         [view]=\"'month'\"\n         [prevMonthRow]=\"_prevMonthDays\"\n         [nextMonthRow]=\"_nextMonthDays\"\n         [todayValue]=\"_todayDate!\"\n         [startValue]=\"_rangeStart!\"\n         [endValue]=\"_rangeEnd!\"\n         [comparisonStart]=\"_comparisonRangeStart\"\n         [comparisonEnd]=\"_comparisonRangeEnd\"\n         [previewStart]=\"_previewStart\"\n         [previewEnd]=\"_previewEnd\"\n         [isRange]=\"_isRange\"\n         [labelMinRequiredCells]=\"3\"\n         [activeCell]=\"_dateAdapter.getDate(activeDate) - 1\"\n         (selectedValueChange)=\"_dateSelected($event)\"\n         (previewChange)=\"_previewChanged($event)\"\n         (keyup)=\"_handleCalendarBodyKeyup($event)\"\n         (keydown)=\"_handleCalendarBodyKeydown($event)\">\n  </tbody>\n</table>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  Optional,\n  Output,\n  ViewChild,\n  OnDestroy,\n  isDevMode,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { KeyCode } from '../../util/key';\nimport { DateAdapter } from '../dateadapter/date-adapter';\nimport { DateRange } from '../date-selection-model';\nimport { createMissingDateImplError } from '../date-picker-errors';\nimport { UsaCalendarUserEvent, UsaCalendarBody, UsaCalendarCell, UsaCalendarCellClassFunction } from './calendar-body';\n\nexport const yearsPerPage = 12;\n\nexport const yearsPerRow = 4;\n\n/**\n * An internal component used to display a year selector in the datePicker.\n * @docs-private\n */\n@Component({\n  selector: 'usa-multi-year-view',\n  templateUrl: './multi-year-view.html',\n  exportAs: 'usaMultiYearView',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UsaMultiYearView<D> implements AfterContentInit, OnDestroy {\n  private _rerenderSubscription = Subscription.EMPTY;\n\n  /** Flag used to filter out space/enter keyup events that originated outside of the view. */\n  private _selectionKeyPressed: boolean;\n\n  /** The date to display in this multi-year view (everything other than the year is ignored). */\n  @Input()\n  get activeDate(): D { return this._activeDate; }\n  set activeDate(value: D) {\n    let oldActiveDate = this._activeDate;\n    const validDate =\n      this._dateAdapter.getValidDateOrNull(\n        this._dateAdapter.deserialize(value)\n      ) || this._dateAdapter.today();\n    this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n    if (!isSameMultiYearView(\n      this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\n      this._init();\n    }\n  }\n  private _activeDate: D;\n\n  /** The currently selected date. */\n  @Input()\n  get selected(): DateRange<D> | D | null { return this._selected; }\n  set selected(value: DateRange<D> | D | null) {\n    if (value instanceof DateRange) {\n      this._selected = value;\n    } else {\n      this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n\n    this._setSelectedYear(value);\n  }\n  private _selected: DateRange<D> | D | null;\n\n\n  /** The minimum selectable date. */\n  @Input()\n  get minDate(): D | null { return this._minDate; }\n  set minDate(value: D | null) {\n    this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n  }\n  private _minDate: D | null;\n\n  /** The maximum selectable date. */\n  @Input()\n  get maxDate(): D | null { return this._maxDate; }\n  set maxDate(value: D | null) {\n    this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n  }\n  private _maxDate: D | null;\n\n  /** A function used to filter which dates are selectable. */\n  @Input() dateFilter: (date: D) => boolean;\n\n  /** Function that can be used to add custom CSS classes to date cells. */\n  @Input() dateClass: UsaCalendarCellClassFunction<D>;\n\n  /** Emits when a new year is selected. */\n  @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n  /** Emits the selected year. This doesn't imply a change on the selected date */\n  @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /** Emits when any date is activated. */\n  @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n  /** The body of calendar table */\n  @ViewChild(UsaCalendarBody) _usaCalendarBody: UsaCalendarBody;\n\n  /** Grid of calendar cells representing the currently displayed years. */\n  _years: UsaCalendarCell[][];\n\n  /** The year that today falls on. */\n  _todayYear: number;\n\n  /** The year of the selected date. Null if the selected date is null. */\n  _selectedYear: number | null;\n\n  constructor(\n    private _changeDetectorRef: ChangeDetectorRef,\n    @Optional() public _dateAdapter: DateAdapter<D>,\n  ) {\n    if (!this._dateAdapter && isDevMode()) {\n      throw createMissingDateImplError('DateAdapter');\n    }\n\n    this._activeDate = this._dateAdapter.today();\n  }\n\n  ngAfterContentInit() {\n    this._rerenderSubscription = this._dateAdapter.localeChanges\n      .pipe(startWith(null))\n      .subscribe(() => this._init());\n  }\n\n  ngOnDestroy() {\n    this._rerenderSubscription.unsubscribe();\n  }\n\n  /** Initializes this multi-year view. */\n  _init() {\n    this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\n\n    // We want a range years such that we maximize the number of\n    // enabled dates visible at once. This prevents issues where the minimum year\n    // is the last item of a page OR the maximum year is the first item of a page.\n\n    // The offset from the active year to the \"slot\" for the starting year is the\n    // *actual* first rendered year in the multi-year view.\n    const activeYear = this._dateAdapter.getYear(this._activeDate);\n    const minYearOfPage = activeYear - getActiveOffset(\n      this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n\n    this._years = [];\n    for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\n      row.push(minYearOfPage + i);\n      if (row.length == yearsPerRow) {\n        this._years.push(row.map(year => this._createCellForYear(year)));\n        row = [];\n      }\n    }\n    this._changeDetectorRef.markForCheck();\n  }\n\n  // TODO\n  getNextYears() {\n    this.activeDate = this._dateAdapter.addCalendarYears(this.activeDate, yearsPerPage);\n  }\n\n  getPreviousYears() {\n    this.activeDate = this._dateAdapter.addCalendarYears(this.activeDate, -yearsPerPage);\n  }\n\n  /** Handles when a new year is selected. */\n  _yearSelected(event: UsaCalendarUserEvent<number>) {\n    const year = event.value;\n    this.yearSelected.emit(this._dateAdapter.createDate(year, 0, 1));\n    let month = this._dateAdapter.getMonth(this.activeDate);\n    let daysInMonth =\n      this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(year, month, 1));\n    this.selectedChange.emit(this._dateAdapter.createDate(year, month,\n      Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n  }\n\n  /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n  _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n    const oldActiveDate = this._activeDate;\n    switch (event.keyCode) {\n      case KeyCode.ArrowLeft:\n        this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -1);\n        break;\n      case KeyCode.ArrowRight:\n        this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, 1);\n        break;\n      case KeyCode.ArrowUp:\n        this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n        break;\n      case KeyCode.ArrowDown:\n        this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n        break;\n      case KeyCode.Home:\n        this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate,\n          -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));\n        break;\n      case KeyCode.End:\n        this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate,\n          yearsPerPage - getActiveOffset(\n            this._dateAdapter, this.activeDate, this.minDate, this.maxDate) - 1);\n        break;\n      case KeyCode.PageUp:\n        this.activeDate =\n          this._dateAdapter.addCalendarYears(\n            this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n        break;\n      case KeyCode.PageDown:\n        this.activeDate =\n          this._dateAdapter.addCalendarYears(\n            this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n        break;\n      case KeyCode.Enter:\n      case KeyCode.Space:\n        // Note that we only prevent the default action here while the selection happens in\n        // `keyup` below. We can't do the selection here, because it can cause the calendar to\n        // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n        // because it's too late (see #23305).\n        this._selectionKeyPressed = true;\n        break;\n      default:\n        // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n        return;\n    }\n    if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n      this.activeDateChange.emit(this.activeDate);\n    }\n\n    this._focusActiveCell();\n    // Prevent unexpected default actions such as form submission.\n    event.preventDefault();\n  }\n\n  /** Handles keyup events on the calendar body when calendar is in multi-year view. */\n  _handleCalendarBodyKeyup(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCode.Space || event.keyCode === KeyCode.Enter) {\n      if (this._selectionKeyPressed) {\n        this._yearSelected({ value: this._dateAdapter.getYear(this._activeDate), event });\n      }\n\n      this._selectionKeyPressed = false;\n    }\n  }\n\n  _getActiveCell(): number {\n    return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n  }\n\n  /** Focuses the active cell after the microtask queue is empty. */\n  _focusActiveCell() {\n    this._usaCalendarBody._focusActiveCell();\n  }\n\n  /** Creates an UsaCalendarCell for the given year. */\n  private _createCellForYear(year: number) {\n    const date = this._dateAdapter.createDate(year, 0, 1);\n    const yearName = this._dateAdapter.getYearName(date);\n    const cellClasses = this.dateClass ? this.dateClass(date, 'multi-year') : undefined;\n\n    return new UsaCalendarCell(year, yearName, yearName, this._shouldEnableYear(year), cellClasses);\n  }\n\n  /** Whether the given year is enabled. */\n  private _shouldEnableYear(year: number) {\n    // disable if the year is greater than maxDate lower than minDate\n    if (year === undefined || year === null ||\n      (this.maxDate && year > this._dateAdapter.getYear(this.maxDate)) ||\n      (this.minDate && year < this._dateAdapter.getYear(this.minDate))) {\n      return false;\n    }\n\n    // enable if it reaches here and there's no filter defined\n    if (!this.dateFilter) {\n      return true;\n    }\n\n    const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\n\n    // If any date in the year is enabled count the year as enabled.\n    for (let date = firstOfYear; this._dateAdapter.getYear(date) == year;\n      date = this._dateAdapter.addCalendarDays(date, 1)) {\n      if (this.dateFilter(date)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /** Sets the currently-highlighted year based on a model value. */\n  private _setSelectedYear(value: DateRange<D> | D | null) {\n    this._selectedYear = null;\n\n    if (value instanceof DateRange) {\n      const displayValue = value.start || value.end;\n\n      if (displayValue) {\n        this._selectedYear = this._dateAdapter.getYear(displayValue);\n      }\n    } else if (value) {\n      this._selectedYear = this._dateAdapter.getYear(value);\n    }\n  }\n}\n\nexport function isSameMultiYearView<D>(\n  dateAdapter: DateAdapter<D>, date1: D, date2: D, minDate: D | null, maxDate: D | null): boolean {\n  const year1 = dateAdapter.getYear(date1);\n  const year2 = dateAdapter.getYear(date2);\n  const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\n  return Math.floor((year1 - startingYear) / yearsPerPage) ===\n    Math.floor((year2 - startingYear) / yearsPerPage);\n}\n\n/**\n * When the multi-year view is first opened, the active year will be in view.\n * So we compute how many years are between the active year and the *slot* where our\n * \"startingYear\" will render when paged into view.\n */\nexport function getActiveOffset<D>(\n  dateAdapter: DateAdapter<D>, activeDate: D, minDate: D | null, maxDate: D | null): number {\n  const activeYear = dateAdapter.getYear(activeDate);\n  return euclideanModulo((activeYear - getStartingYear(dateAdapter, minDate, maxDate)),\n    yearsPerPage);\n}\n\n/**\n * We pick a \"starting\" year such that either the maximum year would be at the end\n * or the minimum year would be at the beginning of a page.\n */\nfunction getStartingYear<D>(\n  dateAdapter: DateAdapter<D>, minDate: D | null, maxDate: D | null): number {\n  let startingYear = 0;\n  if (maxDate) {\n    const maxYear = dateAdapter.getYear(maxDate);\n    startingYear = maxYear - yearsPerPage + 1;\n  } else if (minDate) {\n    startingYear = dateAdapter.getYear(minDate);\n  }\n  return startingYear;\n}\n\n/** Gets remainder that is non-negative, even if first number is negative */\nfunction euclideanModulo(a: number, b: number): number {\n  return (a % b + b) % b;\n}\n","<div class=\"usa-date-picker__calendar__year-picker\">\n  <table class=\"usa-date-picker__calendar__table\">\n    <tbody>\n      <tr>\n        <td>\n          <button type=\"button\" (click)=\"getPreviousYears()\"\n            class=\"usa-date-picker__calendar__previous-year-chunk\" aria-label=\"Navigate back 12 years\">&nbsp;</button>\n        </td>\n        <td colspan=\"3\">\n          <table class=\"usa-date-picker__calendar__table\" role=\"grid\">\n            <tbody usa-calendar-body\n                   [view]=\"'multi-year'\"\n                   [rows]=\"_years\"\n                   [todayValue]=\"_todayYear\"\n                   [startValue]=\"_selectedYear!\"\n                   [endValue]=\"_selectedYear!\"\n                   [numCols]=\"4\"\n                   [cellAspectRatio]=\"4 / 7\"\n                   [activeCell]=\"_getActiveCell()\"\n                   (selectedValueChange)=\"_yearSelected($event)\"\n                   (keyup)=\"_handleCalendarBodyKeyup($event)\"\n                   (keydown)=\"_handleCalendarBodyKeydown($event)\">\n            </tbody>\n          </table>\n        </td>\n        <td>\n          <button type=\"button\" (click)=\"getNextYears()\"\n            class=\"usa-date-picker__calendar__next-year-chunk\" aria-label=\"Navigate forward 12 years\">&nbsp;</button>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</div>\n\n\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  Optional,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n  OnDestroy,\n  isDevMode,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { KeyCode } from '../../util/key';\nimport { DateAdapter } from '../dateadapter/date-adapter';\nimport { UsaDateFormats, USA_DATE_FORMATS } from '../dateadapter/date-formats';\nimport { DateRange } from '../date-selection-model';\nimport { createMissingDateImplError } from '../date-picker-errors';\nimport { UsaCalendarUserEvent, UsaCalendarBody, UsaCalendarCell, UsaCalendarCellClassFunction } from './calendar-body';\n\n/**\n * An internal component used to display a single year in the datePicker.\n * @docs-private\n */\n@Component({\n  selector: 'usa-year-view',\n  templateUrl: './year-view.html',\n  exportAs: 'usaYearView',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UsaYearView<D> implements AfterContentInit, OnDestroy {\n  private _rerenderSubscription = Subscription.EMPTY;\n\n  /** Flag used to filter out space/enter keyup events that originated outside of the view. */\n  private _selectionKeyPressed: boolean;\n\n  /** The date to display in this year view (everything other than the year is ignored). */\n  @Input()\n  get activeDate(): D { return this._activeDate; }\n  set activeDate(value: D) {\n    let oldActiveDate = this._activeDate;\n    const validDate =\n      this._dateAdapter.getValidDateOrNull(\n        this._dateAdapter.deserialize(value)\n      ) || this._dateAdapter.today();\n    this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n    if (this._dateAdapter.getYear(oldActiveDate) !== this._dateAdapter.getYear(this._activeDate)) {\n      this._init();\n    }\n  }\n  private _activeDate: D;\n\n  /** The currently selected date. */\n  @Input()\n  get selected(): DateRange<D> | D | null { return this._selected; }\n  set selected(value: DateRange<D> | D | null) {\n    if (value instanceof DateRange) {\n      this._selected = value;\n    } else {\n      this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n\n    this._setSelectedMonth(value);\n  }\n  private _selected: DateRange<D> | D | null;\n\n  /** The minimum selectable date. */\n  @Input()\n  get minDate(): D | null { return this._minDate; }\n  set minDate(value: D | null) {\n    this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n  }\n  private _minDate: D | null;\n\n  /** The maximum selectable date. */\n  @Input()\n  get maxDate(): D | null { return this._maxDate; }\n  set maxDate(value: D | null) {\n    this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n  }\n  private _maxDate: D | null;\n\n  /** A function used to filter which dates are selectable. */\n  @Input() dateFilter: (date: D) => boolean;\n\n  /** Function that can be used to add custom CSS classes to date cells. */\n  @Input() dateClass: UsaCalendarCellClassFunction<D>;\n\n  /** Emits when a new month is selected. */\n  @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n  /** Emits the selected month. This doesn't imply a change on the selected date */\n  @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /** Emits when any date is activated. */\n  @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n  /** The body of calendar table */\n  @ViewChild(UsaCalendarBody) _usaCalendarBody: UsaCalendarBody;\n\n  /** Grid of calendar cells representing the months of the year. */\n  _months: UsaCalendarCell[][];\n\n  /** The label for this year (e.g. \"2017\"). */\n  _yearLabel: string;\n\n  /** The month in this year that today falls on. Null if today is in a different year. */\n  _todayMonth: number | null;\n\n  /**\n   * The month in this year that the selected Date falls on.\n   * Null if the selected Date is in a different year.\n   */\n  _selectedMonth: number | null;\n\n  constructor(readonly _changeDetectorRef: ChangeDetectorRef,\n    @Optional() @Inject(USA_DATE_FORMATS) private _dateFormats: UsaDateFormats,\n    @Optional() public _dateAdapter: DateAdapter<D>\n  ) {\n\n    if (isDevMode()) {\n      if (!this._dateAdapter) {\n        throw createMissingDateImplError('DateAdapter');\n      }\n      if (!this._dateFormats) {\n        throw createMissingDateImplError('USA_DATE_FORMATS');\n      }\n    }\n\n    this._activeDate = this._dateAdapter.today();\n  }\n\n  ngAfterContentInit() {\n    this._rerenderSubscription = this._dateAdapter.localeChanges\n      .pipe(startWith(null))\n      .subscribe(() => this._init());\n  }\n\n  ngOnDestroy() {\n    this._rerenderSubscription.unsubscribe();\n  }\n\n  /** Handles when a new month is selected. */\n  _monthSelected(event: UsaCalendarUserEvent<number>) {\n    const month = event.value;\n    const normalizedDate =\n      this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n\n    this.monthSelected.emit(normalizedDate);\n\n    const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\n\n    this.selectedChange.emit(this._dateAdapter.createDate(\n      this._dateAdapter.getYear(this.activeDate), month,\n      Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n  }\n\n  /** Handles keydown events on the calendar body when calendar is in year view. */\n  _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n    // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n    // disabled ones from being selected. This may not be ideal, we should look into whether\n    // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n    const oldActiveDate = this._activeDate;\n\n    switch (event.keyCode) {\n      case KeyCode.ArrowLeft:\n        this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n        break;\n      case KeyCode.ArrowRight:\n        this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n        break;\n      case KeyCode.ArrowUp:\n        this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4);\n        break;\n      case KeyCode.ArrowDown:\n        this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4);\n        break;\n      case KeyCode.Home:\n        this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate,\n          -this._dateAdapter.getMonth(this._activeDate));\n        break;\n      case KeyCode.End:\n        this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate,\n          11 - this._dateAdapter.getMonth(this._activeDate));\n        break;\n      case KeyCode.PageUp:\n        this.activeDate =\n          this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n        break;\n      case KeyCode.PageDown:\n        this.activeDate =\n          this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n        break;\n      case KeyCode.Enter:\n      case KeyCode.Space:\n        // Note that we only prevent the default action here while the selection happens in\n        // `keyup` below. We can't do the selection here, because it can cause the calendar to\n        // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n        // because it's too late (see #23305).\n        this._selectionKeyPressed = true;\n        break;\n      default:\n        // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n        return;\n    }\n\n    if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n      this.activeDateChange.emit(this.activeDate);\n    }\n\n    this._focusActiveCell();\n    // Prevent unexpected default actions such as form submission.\n    event.preventDefault();\n  }\n\n  /** Handles keyup events on the calendar body when calendar is in year view. */\n  _handleCalendarBodyKeyup(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCode.Space || event.keyCode === KeyCode.Enter) {\n      if (this._selectionKeyPressed) {\n        this._monthSelected({ value: this._dateAdapter.getMonth(this._activeDate), event });\n      }\n\n      this._selectionKeyPressed = false;\n    }\n  }\n\n  /** Initializes this year view. */\n  _init() {\n    this._setSelectedMonth(this.selected);\n    this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n    this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n\n    let monthNames = this._dateAdapter.getMonthNames('short');\n    // First row of months only contains 5 elements so we can fit the year label on the same row.\n    this._months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]].map(row => row.map(\n      month => this._createCellForMonth(month, monthNames[month])));\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Focuses the active cell after the microtask queue is empty. */\n  _focusActiveCell() {\n    this._usaCalendarBody._focusActiveCell();\n  }\n\n  /**\n   * Gets the month in this year that the given Date falls on.\n   * Returns null if the given Date is in another year.\n   */\n  private _getMonthInCurrentYear(date: D | null) {\n    return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate) ?\n      this._dateAdapter.getMonth(date) : null;\n  }\n\n  /** Creates an UsaCalendarCell for the given month. */\n  private _createCellForMonth(month: number, monthName: string) {\n    const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n    const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.monthYearA11yLabel);\n    const cellClasses = this.dateClass ? this.dateClass(date, 'year') : undefined;\n\n    return new UsaCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel,\n      this._shouldEnableMonth(month), cellClasses);\n  }\n\n  /** Whether the given month is enabled. */\n  private _shouldEnableMonth(month: number) {\n\n    const activeYear = this._dateAdapter.getYear(this.activeDate);\n\n    if (month === undefined || month === null ||\n      this._isYearAndMonthAfterMaxDate(activeYear, month) ||\n      this._isYearAndMonthBeforeMinDate(activeYear, month)) {\n      return false;\n    }\n\n    if (!this.dateFilter) {\n      return true;\n    }\n\n    const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\n\n    // If any date in the month is enabled count the month as enabled.\n    for (let date = firstOfMonth; this._dateAdapter.getMonth(date) == month;\n      date = this._dateAdapter.addCalendarDays(date, 1)) {\n      if (this.dateFilter(date)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Tests whether the combination month/year is after this.maxDate, considering\n   * just the month and year of this.maxDate\n   */\n  private _isYearAndMonthAfterMaxDate(year: number, month: number) {\n    if (this.maxDate) {\n      const maxYear = this._dateAdapter.getYear(this.maxDate);\n      const maxMonth = this._dateAdapter.getMonth(this.maxDate);\n\n      return year > maxYear || (year === maxYear && month > maxMonth);\n    }\n\n    return false;\n  }\n\n  /**\n   * Tests whether the combination month/year is before this.minDate, considering\n   * just the month and year of this.minDate\n   */\n  private _isYearAndMonthBeforeMinDate(year: number, month: number) {\n    if (this.minDate) {\n      const minYear = this._dateAdapter.getYear(this.minDate);\n      const minMonth = this._dateAdapter.getMonth(this.minDate);\n\n      return year < minYear || (year === minYear && month < minMonth);\n    }\n\n    return false;\n  }\n\n  /** Sets the currently-selected month based on a model value. */\n  private _setSelectedMonth(value: DateRange<D> | D | null) {\n    if (value instanceof DateRange) {\n      this._selectedMonth = this._getMonthInCurrentYear(value.start) ||\n        this._getMonthInCurrentYear(value.end);\n    } else {\n      this._selectedMonth = this._getMonthInCurrentYear(value);\n    }\n  }\n}\n","<table class=\"usa-date-picker__calendar__table\" role=\"grid\">\n  <tbody usa-calendar-body\n         [label]=\"_yearLabel\"\n         [rows]=\"_months\"\n         [todayValue]=\"_todayMonth!\"\n         [startValue]=\"_selectedMonth!\"\n         [endValue]=\"_selectedMonth!\"\n         [labelMinRequiredCells]=\"2\"\n         [numCols]=\"4\"\n         [cellAspectRatio]=\"4 / 7\"\n         [activeCell]=\"_dateAdapter.getMonth(activeDate)\"\n         (selectedValueChange)=\"_monthSelected($event)\"\n         (keyup)=\"_handleCalendarBodyKeyup($event)\"\n         (keydown)=\"_handleCalendarBodyKeydown($event)\">\n  </tbody>\n</table>\n","\nimport {\n  AfterContentInit,\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  isDevMode,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ɵComponentType,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { UsaCalendarUserEvent, UsaCalendarCellClassFunction } from './calendar-body';\nimport { createMissingDateImplError } from '../date-picker-errors';\nimport { UsaMonthView } from './month-view';\nimport {\n  isSameMultiYearView,\n  UsaMultiYearView,\n} from './multi-year-view';\nimport { UsaYearView } from './year-view';\nimport { USA_SINGLE_DATE_SELECTION_MODEL_PROVIDER, DateRange } from '../date-selection-model';\nimport { DateAdapter } from '../dateadapter/date-adapter';\nimport { UsaDateFormats, USA_DATE_FORMATS } from '../dateadapter/date-formats';\n\n/**\n * Possible views for the calendar.\n * @docs-private\n */\nexport type UsaCalendarView = 'month' | 'year' | 'multi-year';\n\n/** Counter used to generate unique IDs. */\nlet uniqueId = 0;\n\n/** Default header for MatCalendar */\n@Component({\n  selector: 'usa-calendar-header',\n  templateUrl: './calendar-header.html',\n  exportAs: 'usaCalendarHeader',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaCalendarHeader<D> {\n  _buttonDescriptionId = `mat-calendar-button-${uniqueId++}`;\n  ariaLiveText = '';\n\n  constructor(\n    @Inject(forwardRef(() => UsaCalendar)) public calendar: UsaCalendar<D>,\n    @Optional() private _dateAdapter: DateAdapter<D>,\n    @Optional() @Inject(USA_DATE_FORMATS) private _dateFormats: UsaDateFormats,\n    changeDetectorRef: ChangeDetectorRef) {\n\n    this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\n  }\n\n  get monthLabel(): string {\n    return this._dateAdapter\n      .format(this.calendar.activeDate, this._dateFormats.display.monthLabel)\n      .toLocaleUpperCase();\n  }\n\n  get yearLabel(): string {\n    return this._dateAdapter.getYearName(this.calendar.activeDate);\n  }\n\n  /** Handles user clicks on month label */\n  monthClicked() {\n    this.calendar.currentView = 'year';\n  }\n\n  /**\n   * Handles user clicks on year label\n   */\n  yearClicked() {\n    this.calendar.currentView = 'multi-year';\n  }\n\n  /** Handles user clicks on the previous button. */\n  previousClicked(): void {\n    this.calendar.activeDate = this._dateAdapter.addCalendarMonths(this.calendar.activeDate, -1);\n    this.ariaLiveText = this._dateAdapter.getMonthNames('long')[this._dateAdapter.getMonth(this.calendar.activeDate)];\n  }\n\n  /** Handles user clicks on the next button. */\n  nextClicked(): void {\n    this.calendar.activeDate = this._dateAdapter.addCalendarMonths(this.calendar.activeDate, 1);\n  }\n\n  /** Handles user click of next year */\n  nextYearClicked(): void {\n    this.calendar.activeDate = this._dateAdapter.addCalendarYears(this.calendar.activeDate, 1);\n  }\n\n  /** Handles user click of previous year */\n  previousYearClicked(): void {\n    this.calendar.activeDate = this._dateAdapter.addCalendarYears(this.calendar.activeDate, -1);\n  }\n\n  /** Whether the previous period button is enabled. */\n  previousEnabled(): boolean {\n    if (!this.calendar.minDate) {\n      return true;\n    }\n    return !this.calendar.minDate ||\n      !this._isSameView(this.calendar.activeDate, this.calendar.minDate);\n  }\n\n  /** Whether the next period button is enabled. */\n  nextEnabled(): boolean {\n    return !this.calendar.maxDate ||\n      !this._isSameView(this.calendar.activeDate, this.calendar.maxDate);\n  }\n\n  previousYearEnabled(): boolean {\n    return !this.calendar.minDate ||\n      !(this._dateAdapter.getYear(this.calendar.activeDate) === this._dateAdapter.getYear(this.calendar.minDate));\n  }\n\n  nextYearEnabled(): boolean {\n    return !this.calendar.maxDate ||\n      !(this._dateAdapter.getYear(this.calendar.activeDate) === this._dateAdapter.getYear(this.calendar.maxDate));\n  }\n\n  /** Whether the two dates represent the same view in the current view mode (month or year). */\n  private _isSameView(date1: D, date2: D): boolean {\n    if (this.calendar.currentView == 'month') {\n      return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) &&\n        this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2);\n    }\n    if (this.calendar.currentView == 'year') {\n      return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n    }\n    // Otherwise we are in 'multi-year' view.\n    return isSameMultiYearView(\n      this._dateAdapter, date1, date2, this.calendar.minDate, this.calendar.maxDate);\n  }\n}\n\n/** A calendar that is used as part of the datePicker. */\n@Component({\n  selector: 'usa-calendar',\n  templateUrl: 'calendar.html',\n  exportAs: 'usaCalendar',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [USA_SINGLE_DATE_SELECTION_MODEL_PROVIDER]\n})\nexport class UsaCalendar<D> implements AfterContentInit, AfterViewChecked, OnDestroy, OnChanges {\n  /** An input indicating the type of the header component, if set. */\n  @Input() headerComponent: ɵComponentType<any>;\n\n  /**\n   * Used for scheduling that focus should be moved to the active cell on the next tick.\n   * We need to schedule it, rather than do it immediately, because we have to wait\n   * for Angular to re-evaluate the view children.\n   */\n  private _moveFocusOnNextTick = false;\n\n  /** A date representing the period (month or year) to start the calendar in. */\n  @Input()\n  get startAt(): D | null { return this._startAt; }\n  set startAt(value: D | null) {\n    this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n  }\n  private _startAt: D | null;\n\n  /** Whether the calendar should be started in month or year view. */\n  @Input() startView: UsaCalendarView = 'month';\n\n  /** The currently selected date. */\n  @Input()\n  get selected(): DateRange<D> | D | null { return this._selected; }\n  set selected(value: DateRange<D> | D | null) {\n    if (value instanceof DateRange) {\n      this._selected = value;\n    } else {\n      this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n    }\n  }\n  private _selected: DateRange<D> | D | null;\n\n  /** The minimum selectable date. */\n  @Input()\n  get minDate(): D | null { return this._minDate; }\n  set minDate(value: D | null) {\n    this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n  }\n  private _minDate: D | null;\n\n  /** The maximum selectable date. */\n  @Input()\n  get maxDate(): D | null { return this._maxDate; }\n  set maxDate(value: D | null) {\n    this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n  }\n  private _maxDate: D | null;\n\n  /** Function used to filter which dates are selectable. */\n  @Input() dateFilter: (date: D) => boolean;\n\n  /** Function that can be used to add custom CSS classes to dates. */\n  @Input() dateClass: UsaCalendarCellClassFunction<D>;\n\n  /** Start of the comparison range. */\n  @Input() comparisonStart: D | null;\n\n  /** End of the comparison range. */\n  @Input() comparisonEnd: D | null;\n\n  /** Emits when the currently selected date changes. */\n  @Output() readonly selectedChange: EventEmitter<D | null> = new EventEmitter<D | null>();\n\n  /**\n   * Emits the year chosen in multiyear view.\n   * This doesn't imply a change on the selected date.\n   */\n  @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /**\n   * Emits the month chosen in year view.\n   * This doesn't imply a change on the selected date.\n   */\n  @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /**\n   * Emits when the current view changes.\n   */\n  @Output() readonly viewChanged: EventEmitter<UsaCalendarView> =\n    new EventEmitter<UsaCalendarView>(true);\n\n  /** Emits when any date is selected. */\n  @Output() readonly _userSelection: EventEmitter<UsaCalendarUserEvent<D | null>> =\n    new EventEmitter<UsaCalendarUserEvent<D | null>>();\n\n  /** Reference to the current month view component. */\n  @ViewChild(UsaMonthView) monthView: UsaMonthView<D>;\n\n  /** Reference to the current year view component. */\n  @ViewChild(UsaYearView) yearView: UsaYearView<D>;\n\n  /** Reference to the current multi-year view component. */\n  @ViewChild(UsaMultiYearView) multiYearView: UsaMultiYearView<D>;\n\n  /**\n   * The current active date. This determines which time period is shown and which date is\n   * highlighted when using keyboard navigation.\n   */\n  get activeDate(): D { return this._clampedActiveDate; }\n  set activeDate(value: D) {\n    this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n    this.stateChanges.next();\n    this._changeDetectorRef.markForCheck();\n  }\n  private _clampedActiveDate: D;\n\n  /** Whether the calendar is in month view. */\n  get currentView(): UsaCalendarView { return this._currentView; }\n  set currentView(value: UsaCalendarView) {\n    const viewChangedResult = this._currentView !== value ? value : null;\n    this._currentView = value;\n    this._moveFocusOnNextTick = true;\n    this._changeDetectorRef.markForCheck();\n    if (viewChangedResult) {\n      this.viewChanged.emit(viewChangedResult);\n    }\n  }\n  private _currentView: UsaCalendarView;\n\n  /**\n   * Emits whenever there is a state change that the header may need to respond to.\n   */\n  readonly stateChanges = new Subject<void>();\n\n  constructor(\n    @Optional() private _dateAdapter: DateAdapter<D>,\n    @Optional() @Inject(USA_DATE_FORMATS) private _dateFormats: UsaDateFormats,\n    private _changeDetectorRef: ChangeDetectorRef) {\n\n    if (isDevMode()) {\n      if (!this._dateAdapter) {\n        throw createMissingDateImplError('DateAdapter');\n      }\n\n      if (!this._dateFormats) {\n        throw createMissingDateImplError('USA_DATE_FORMATS');\n      }\n    }\n  }\n\n  ngAfterContentInit() {\n    this.activeDate = this.startAt || this._dateAdapter.today();\n\n    // Assign to the private property since we don't want to move focus on init.\n    this._currentView = this.startView;\n  }\n\n  ngAfterViewChecked() {\n    if (this._moveFocusOnNextTick) {\n      this._moveFocusOnNextTick = false;\n      this.focusActiveCell();\n    }\n  }\n\n  ngOnDestroy() {\n    this.stateChanges.complete();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const change =\n      changes['minDate'] || changes['maxDate'] || changes['dateFilter'];\n\n    if (change && !change.firstChange) {\n      const view = this._getCurrentViewComponent();\n\n      if (view) {\n        // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n        // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\n        this._changeDetectorRef.detectChanges();\n        view._init();\n      }\n    }\n\n    this.stateChanges.next();\n  }\n\n  /** Focuses the active date. */\n  focusActiveCell() {\n    this._getCurrentViewComponent()._focusActiveCell(false);\n  }\n\n  /** Updates today's date after an update of the active date */\n  updateTodaysDate() {\n    this._getCurrentViewComponent()._init();\n  }\n\n  /** Handles date selection in the month view. */\n  _dateSelected(event: UsaCalendarUserEvent<D | null>): void {\n    const date = event.value;\n\n    if (this.selected instanceof DateRange ||\n      (date && !this._dateAdapter.sameDate(date, this.selected))) {\n      this.selectedChange.emit(date);\n    }\n\n    this._userSelection.emit(event);\n  }\n\n  /** Handles year selection in the multiyear view. */\n  _yearSelectedInMultiYearView(normalizedYear: D) {\n    this.yearSelected.emit(normalizedYear);\n  }\n\n  /** Handles month selection in the year view. */\n  _monthSelectedInYearView(normalizedMonth: D) {\n    this.monthSelected.emit(normalizedMonth);\n  }\n\n  /** Handles year/month selection in the multi-year/year views. */\n  _goToDateInView(date: D, view: 'month' | 'year' | 'multi-year'): void {\n    this.activeDate = date;\n    this.currentView = view;\n  }\n\n  /** Returns the component instance that corresponds to the current calendar view. */\n  private _getCurrentViewComponent(): UsaMonthView<D> | UsaYearView<D> | UsaMultiYearView<D> {\n    // The return type is explicitly written as a union to ensure that the Closure compiler does\n    // not optimize calls to _init(). Without the explict return type, TypeScript narrows it to\n    // only the first component type. See https://github.com/angular/components/issues/22996.\n    return this.monthView || this.yearView || this.multiYearView;\n  }\n}\n","<div class=\"usa-date-picker__calendar__row\">\n  <div class=\"usa-date-picker__calendar__cell usa-date-picker__calendar__cell--center-items\">\n    <button type=\"button\" (click)=\"previousYearClicked()\" [disabled]=\"!previousYearEnabled()\"\n      class=\"usa-date-picker__calendar__previous-year\" aria-label=\"Navigate back one year\">&nbsp;</button>\n  </div>\n  <div class=\"usa-date-picker__calendar__cell usa-date-picker__calendar__cell--center-items\">\n    <button type=\"button\" (click)=\"previousClicked()\"\n      [disabled]=\"!previousEnabled()\"\n      class=\"usa-date-picker__calendar__previous-month\" \n      aria-label=\"Navigate back one month\">&nbsp;</button>\n  </div>\n  <div class=\"usa-date-picker__calendar__cell usa-date-picker__calendar__month-label\">\n    <button type=\"button\" (click)=\"monthClicked()\" class=\"usa-date-picker__calendar__month-selection\" [attr.aria-label]=\"monthLabel + '. Click to select month'\">{{monthLabel}}</button>\n    <button type=\"button\" (click)=\"yearClicked()\" class=\"usa-date-picker__calendar__year-selection\" [attr.aria-label]=\"yearLabel + '. Click to select year'\">{{yearLabel}}</button>\n  </div>\n  <div class=\"usa-date-picker__calendar__cell usa-date-picker__calendar__cell--center-items\">\n    <button type=\"button\" [disabled]=\"!nextEnabled()\" (click)=\"nextClicked()\" \n      class=\"usa-date-picker__calendar__next-month\" \n      aria-label=\"Navigate forward one month\">&nbsp;</button>\n  </div>\n  <div class=\"usa-date-picker__calendar__cell usa-date-picker__calendar__cell--center-items\">\n    <button type=\"button\" (click)=\"nextYearClicked()\" [disabled]=\"!nextYearEnabled()\" \n      class=\"usa-date-picker__calendar__next-year\" aria-label=\"Navigate forward one year\">&nbsp;</button>\n  </div>\n</div>\n\n<span class=\"usa-sr-only\" aria-live=\"polite\">\n  {{monthLabel + ' ' + yearLabel}}\n</span>","<div class=\"usa-date-picker__calendar__date-picker\">\n  <usa-calendar-header></usa-calendar-header>\n  <div [ngSwitch]=\"currentView\">\n    <usa-month-view #monthView *ngSwitchCase=\"'month'\" [(activeDate)]=\"activeDate\" [selected]=\"selected\"\n      [dateFilter]=\"dateFilter\" [maxDate]=\"maxDate\" [minDate]=\"minDate\" [dateClass]=\"dateClass\"\n      [comparisonStart]=\"comparisonStart\" [comparisonEnd]=\"comparisonEnd\" (_userSelection)=\"_dateSelected($event)\">\n    </usa-month-view>\n    <usa-year-view #yearView *ngSwitchCase=\"'year'\" [(activeDate)]=\"activeDate\" [selected]=\"selected\"\n      [dateFilter]=\"dateFilter\" [maxDate]=\"maxDate\" [minDate]=\"minDate\" [dateClass]=\"dateClass\"\n      (monthSelected)=\"_monthSelectedInYearView($event)\" (selectedChange)=\"_goToDateInView($event, 'month')\">\n    </usa-year-view>\n    <usa-multi-year-view #multiYearView *ngSwitchCase=\"'multi-year'\" [(activeDate)]=\"activeDate\" [selected]=\"selected\"\n      [dateFilter]=\"dateFilter\" [maxDate]=\"maxDate\" [minDate]=\"minDate\" [dateClass]=\"dateClass\"\n      (yearSelected)=\"_yearSelectedInMultiYearView($event)\" (selectedChange)=\"_goToDateInView($event, 'month')\">\n    </usa-multi-year-view>\n  </div>\n</div>\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/**\n * Type describing the allowed values for a boolean input.\n * @docs-private\n */\n export type BooleanInput = string | boolean | null | undefined;\n\n /** Coerces a data-bound value (typically a string) to a boolean. */\n export function coerceBooleanProperty(value: any): boolean {\n   return value != null && `${value}` !== 'false';\n }","import { DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Inject,\n  Injector,\n  Input,\n  isDevMode,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '../util/boolean-property';\nimport { usaFocusTrap } from '../util/focus-trap';\nimport { coerceStringArray } from '../util/util';\nimport { UsaCalendar, UsaCalendarHeader } from './calendar/calendar';\nimport {\n  UsaCalendarUserEvent,\n  UsaCalendarCellClassFunction,\n} from './calendar/calendar-body';\nimport { DateAdapter } from './dateadapter/date-adapter';\nimport {\n  UsaDateRangeSelectionStrategy,\n  USA_DATE_RANGE_SELECTION_STRATEGY,\n} from './date-range-selection-strategy';\nimport {\n  DateRange,\n  ExtractDateTypeFromSelection,\n  UsaDateSelectionModel,\n} from './date-selection-model';\nimport { createMissingDateImplError } from './date-picker-errors';\nimport { DateFilterFn } from './date-picker-input-base';\n\nlet datePickerUid = 0;\n\n/** Possible positions for the datePicker dropdown along the X axis. */\nexport type DatePickerDropdownPositionX = 'start' | 'end';\n\n/** Possible positions for the datePicker dropdown along the Y axis. */\nexport type DatePickerDropdownPositionY = 'above' | 'below';\n\nexport interface UsaDatePickerControl<D> {\n  getStartValue(): D | null;\n  min: D | null;\n  max: D | null;\n  disabled: boolean;\n  dateFilter: DateFilterFn<D>;\n  getConnectedOverlayOrigin(): ElementRef;\n  getOverlayLabelId(): string | null;\n  stateChanges: Observable<void>;\n}\n\n/** A datePicker that can be attached to a {@link UsaDatePickerControl}. */\nexport interface UsaDatePickerPanel<\n  C extends UsaDatePickerControl<D>,\n  S,\n  D = ExtractDateTypeFromSelection<S>\n> {\n  /** Stream that emits whenever the date picker is closed. */\n  closedStream: EventEmitter<void>;\n  /** The input element the datePicker is associated with. */\n  datePickerInput: C;\n  /** Whether the datePicker pop-up should be disabled. */\n  disabled: boolean;\n  /** The id for the datePicker's calendar. */\n  id: string;\n  /** Whether the datePicker is open. */\n  opened: boolean;\n  /** Stream that emits whenever the date picker is opened. */\n  openedStream: EventEmitter<void>;\n  /** Emits when the datePicker's state changes. */\n  stateChanges: Subject<void>;\n  /** Opens the date picker. */\n  open(): void;\n  /** Closes the date picker */\n  close(): void;\n  /** Register an input with the datePicker. */\n  registerInput(input: C): UsaDateSelectionModel<S, D>;\n}\n\n/**\n * Component used as the content for the datePicker display. We use this instead of using\n * UsaCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the display that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * @docs-private\n */\n@Component({\n  selector: 'usa-date-picker-content',\n  templateUrl: './date-picker-content.html',\n  host: {\n    class: 'usa-date-picker__calendar',\n    '[attr.role]': 'dialog',\n    '[attr.aria-modal]': 'true',\n    '[attr.tabindex]': '-1',\n  },\n  exportAs: 'usaDatePickerContent',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaDatePickerContent<S, D = ExtractDateTypeFromSelection<S>>\n  implements OnInit, AfterViewInit, OnDestroy\n{\n  private _subscriptions = new Subscription();\n  private _model: UsaDateSelectionModel<S, D>;\n\n  /** Reference to the internal calendar component. */\n  @ViewChild(UsaCalendar) _calendar: UsaCalendar<D>;\n\n  /** Reference to the datePicker that created the overlay. */\n  datePicker: UsaDatePickerBase<any, S, D>;\n\n  /** Start of the comparison range. */\n  comparisonStart: D | null;\n\n  /** End of the comparison range. */\n  comparisonEnd: D | null;\n\n  /** Whether the datePicker is above or below the input. */\n  _isAbove: boolean;\n\n  /** Text for the close button. */\n  _closeButtonText: string;\n\n  /** Whether the close button currently has focus. */\n  _closeButtonFocused: boolean;\n\n  /** Keeps track of last click and indicates whether it was inside the calender or outside */\n  private wasInside = false;\n\n  @HostListener('click')\n  clickInside() {\n    this.wasInside = true;\n  }\n\n  @HostListener('document:click')\n  clickout() {\n    if (!this.wasInside) {\n      this.datePicker.close();\n    }\n    this.wasInside = false;\n  }\n\n  @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(\n    event: KeyboardEvent\n  ) {\n    this.datePicker.close();\n    event?.stopImmediatePropagation();\n  }\n\n  constructor(\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _globalModel: UsaDateSelectionModel<S, D>,\n    private _dateAdapter: DateAdapter<D>,\n    private _zone: NgZone,\n    private _el: ElementRef,\n    @Optional()\n    @Inject(USA_DATE_RANGE_SELECTION_STRATEGY)\n    private _rangeSelectionStrategy: UsaDateRangeSelectionStrategy<D>\n  ) {\n    this._closeButtonText = 'Close';\n  }\n\n  ngOnInit() {\n    this._model = this._globalModel;\n    usaFocusTrap(\n      this._zone,\n      this._el.nativeElement,\n      this.datePicker.closedStream\n    );\n  }\n\n  ngAfterViewInit() {\n    this._subscriptions.add(\n      this.datePicker.stateChanges.subscribe(() => {\n        this._changeDetectorRef.markForCheck();\n      })\n    );\n    this._calendar.focusActiveCell();\n  }\n\n  ngOnDestroy() {\n    this._subscriptions.unsubscribe();\n  }\n\n  _handleUserSelection(event: UsaCalendarUserEvent<D | null>) {\n    const selection = this._model.selection;\n    const value = event.value;\n    const isRange = selection instanceof DateRange;\n\n    // If we're selecting a range and we have a selection strategy, always pass the value through\n    // there. Otherwise don't assign null values to the model, unless we're selecting a range.\n    // A null value when picking a range means that the user cancelled the selection (e.g. by\n    // pressing escape), whereas when selecting a single value it means that the value didn't\n    // change. This isn't very intuitive, but it's here for backwards-compatibility.\n    if (isRange && this._rangeSelectionStrategy) {\n      const newSelection = this._rangeSelectionStrategy.selectionFinished(\n        value,\n        selection as unknown as DateRange<D>,\n        event.event\n      );\n      this._model.updateSelection(newSelection as unknown as S, this);\n    } else if (\n      value &&\n      (isRange || !this._dateAdapter.sameDate(value, selection as unknown as D))\n    ) {\n      this._model.add(value);\n    }\n\n    // Delegate closing the overlay to the actions.\n    if (!this._model || this._model.isComplete()) {\n      this.datePicker.close();\n    }\n  }\n\n  _getSelected() {\n    return this._model.selection as unknown as D | DateRange<D> | null;\n  }\n\n  /** Applies the current pending selection to the global model. */\n  _applyPendingSelection() {\n    if (this._model !== this._globalModel) {\n      this._globalModel.updateSelection(this._model.selection, this);\n    }\n  }\n}\n\n/** Base class for a datePicker. */\n@Directive()\nexport abstract class UsaDatePickerBase<\n  C extends UsaDatePickerControl<D>,\n  S,\n  D = ExtractDateTypeFromSelection<S>\n> implements UsaDatePickerPanel<C, S, D>, OnDestroy, OnChanges\n{\n  private _inputStateChanges = Subscription.EMPTY;\n\n  /** An input indicating the type of the custom header component for the calendar, if set. */\n  @Input() calendarHeaderComponent: UsaCalendarHeader<any>;\n\n  /** The date to open the calendar to initially. */\n  @Input()\n  get startAt(): D | null {\n    // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n    // selected value is.\n    return (\n      this._startAt ||\n      (this.datePickerInput ? this.datePickerInput.getStartValue() : null)\n    );\n  }\n  set startAt(value: D | null) {\n    this._startAt = this._dateAdapter.getValidDateOrNull(\n      this._dateAdapter.deserialize(value)\n    );\n  }\n  private _startAt: D | null;\n\n  /** The view that the calendar should start in. */\n  @Input() startView: 'month' | 'year' | 'multi-year' = 'month';\n\n  /** Whether the datePicker pop-up should be disabled. */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled === undefined && this.datePickerInput\n      ? this.datePickerInput.disabled\n      : !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this._disabled) {\n      this._disabled = newValue;\n      this.stateChanges.next(undefined);\n    }\n  }\n  private _disabled: boolean;\n\n  /**\n   * Whether to restore focus to the datePicker input when the calendar is closed.\n   * Note that automatic focus restoration is an accessibility feature and it is recommended that\n   * you provide your own equivalent, if you decide to turn it off.\n   */\n  @Input()\n  get restoreFocus(): boolean {\n    return this._restoreFocus;\n  }\n  set restoreFocus(value: boolean) {\n    this._restoreFocus = coerceBooleanProperty(value);\n  }\n  private _restoreFocus = true;\n\n  /**\n   * Emits selected year in multiyear view.\n   * This doesn't imply a change on the selected date.\n   */\n  @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /**\n   * Emits selected month in year view.\n   * This doesn't imply a change on the selected date.\n   */\n  @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n  /** Function that can be used to add custom CSS classes to dates. */\n  @Input() dateClass: UsaCalendarCellClassFunction<D>;\n\n  /** Emits when the datePicker has been opened. */\n  @Output('opened') readonly openedStream = new EventEmitter<void>();\n\n  /** Emits when the datePicker has been closed. */\n  @Output('closed') readonly closedStream = new EventEmitter<void>();\n\n  /**\n   * Classes to be passed to the date picker panel.\n   * Supports string and string array values, similar to `ngClass`.\n   */\n  @Input()\n  get panelClass(): string | string[] {\n    return this._panelClass;\n  }\n  set panelClass(value: string | string[]) {\n    this._panelClass = coerceStringArray(value);\n  }\n  private _panelClass: string[];\n\n  /** Whether the calendar is open. */\n  @Input()\n  get opened(): boolean {\n    return this._opened;\n  }\n  set opened(value: boolean) {\n    coerceBooleanProperty(value) ? this.open() : this.close();\n  }\n  private _opened = false;\n\n  /** The id for the datePicker calendar. */\n  id: string = `usa-date-picker-${datePickerUid++}`;\n\n  /** The minimum selectable date. */\n  _getMinDate(): D | null {\n    return this.datePickerInput && this.datePickerInput.min;\n  }\n\n  /** The maximum selectable date. */\n  _getMaxDate(): D | null {\n    return this.datePickerInput && this.datePickerInput.max;\n  }\n\n  _getDateFilter(): DateFilterFn<D> {\n    return this.datePickerInput && this.datePickerInput.dateFilter;\n  }\n\n  /** Reference to the component instance rendered in the overlay. */\n  private _componentRef: ComponentRef<UsaDatePickerContent<S, D>> | null;\n\n  /** The element that was focused before the datepicker was opened. */\n  private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n  /** The input element this datePicker is associated with. */\n  datePickerInput: C;\n\n  /** Emits when the datePicker's state changes. */\n  readonly stateChanges = new Subject<void>();\n\n  constructor(\n    @Inject(ElementRef) _dialog: any,\n    private _injector: Injector,\n    private _vcr: ViewContainerRef,\n    private _cfr: ComponentFactoryResolver,\n    private _el: ElementRef,\n    @Optional() private _dateAdapter: DateAdapter<D>,\n    /**\n     * @deprecated No longer being used. To be removed.\n     * @breaking-change 13.0.0\n     */\n    @Optional() @Inject(DOCUMENT) _document: any,\n    private _model: UsaDateSelectionModel<S, D>\n  ) {\n    if (!this._dateAdapter && isDevMode()) {\n      throw createMissingDateImplError('DateAdapter');\n    }\n  }\n\n  ngOnChanges() {\n    this.stateChanges.next(undefined);\n  }\n\n  ngOnDestroy() {\n    this._destroyOverlay();\n    this.close();\n    this._inputStateChanges.unsubscribe();\n    this.stateChanges.complete();\n  }\n\n  /** Selects the given date */\n  select(date: D): void {\n    this._model.add(date);\n  }\n\n  /** Emits the selected year in multiyear view */\n  _selectYear(normalizedYear: D): void {\n    this.yearSelected.emit(normalizedYear);\n  }\n\n  /** Emits selected month in year view */\n  _selectMonth(normalizedMonth: D): void {\n    this.monthSelected.emit(normalizedMonth);\n  }\n\n  /**\n   * Register an input with this datePicker.\n   * @param input The datePicker input to register with this datePicker.\n   * @returns Selection model that the input should hook itself up to.\n   */\n  registerInput(input: C): UsaDateSelectionModel<S, D> {\n    if (this.datePickerInput && isDevMode()) {\n      throw Error(\n        'A UsaDatePicker can only be associated with a single input.'\n      );\n    }\n    this._inputStateChanges.unsubscribe();\n    this.datePickerInput = input;\n    this._inputStateChanges = input.stateChanges.subscribe(() =>\n      this.stateChanges.next(undefined)\n    );\n    return this._model;\n  }\n\n  /** Open the calendar. */\n  open(): void {\n    if (this._opened || this.disabled) {\n      return;\n    }\n\n    if (!this.datePickerInput && isDevMode()) {\n      throw Error(\n        'Attempted to open an UsaDatePicker with no associated input.'\n      );\n    }\n\n    this._focusedElementBeforeOpen = document.activeElement as HTMLElement;\n    this._openOverlay();\n    this._opened = true;\n    this.openedStream.emit();\n  }\n\n  /** Close the calendar. */\n  close(): void {\n    if (!this._opened) {\n      return;\n    }\n\n    if (this._componentRef) {\n      this._destroyOverlay();\n    }\n\n    const completeClose = () => {\n      // The `_opened` could've been reset already if\n      // we got two events in quick succession.\n      if (this._opened) {\n        this._opened = false;\n        this.closedStream.emit();\n        this._focusedElementBeforeOpen = null;\n      }\n    };\n\n    if (this._restoreFocus) {\n      // Because IE moves focus asynchronously, we can't count on it being restored before we've\n      // marked the datePicker as closed. If the event fires out of sequence and the element that\n      // we're refocusing opens the datePicker on focus, the user could be stuck with not being\n      // able to close the calendar at all. We work around it by making the logic, that marks\n      // the datePicker as closed, async as well.\n      if (\n        !this.datePickerInput.getConnectedOverlayOrigin().nativeElement.disabled\n      ) {\n        this.datePickerInput.getConnectedOverlayOrigin().nativeElement.focus();\n      } else if (this._focusedElementBeforeOpen) {\n        this._focusedElementBeforeOpen.focus();\n      }\n\n      setTimeout(completeClose);\n    } else {\n      completeClose();\n    }\n  }\n\n  /** Applies the current pending selection on the overlay to the model. */\n  _applyPendingSelection() {\n    this._componentRef?.instance?._applyPendingSelection();\n  }\n\n  /** Forwards relevant values from the datePicker to the datePicker content inside the overlay. */\n  protected _forwardContentValues(instance: UsaDatePickerContent<S, D>) {\n    instance.datePicker = this;\n  }\n\n  /** Opens the overlay with the calendar. */\n  private _openOverlay(): void {\n    this._destroyOverlay();\n\n    const calendarComponent =\n      this._cfr.resolveComponentFactory<UsaDatePickerContent<S, D>>(\n        UsaDatePickerContent\n      );\n    this._componentRef = this._vcr.createComponent(\n      calendarComponent,\n      undefined,\n      this._injector\n    );\n\n    this._forwardContentValues(this._componentRef.instance);\n\n    const wrapper = this.findAncestor(\n      this._el.nativeElement,\n      'usa-date-picker__wrapper'\n    );\n    if (wrapper) {\n      (this._componentRef.location.nativeElement as HTMLElement).style.top = `${\n        (wrapper as any).offsetHeight\n      }px`;\n    }\n    wrapper.appendChild(this._componentRef.location.nativeElement);\n  }\n\n  /** Destroys the current overlay. */\n  private _destroyOverlay() {\n    if (!this._componentRef) {\n      return;\n    }\n    this._vcr.remove(this._vcr.indexOf(this._componentRef!.hostView));\n    this._componentRef = null;\n  }\n\n  /**\n   * Finds closest ancestor element with the given class\n   * @param element - The element to start searching from - this element will be exempt from the search\n   * @param cls - The class string to search for\n   * @returns Either root element if not found or the queried element\n   */\n  private findAncestor(element: HTMLElement, cls: string) {\n    while (\n      (element = element.parentElement) &&\n      !element.classList.contains(cls)\n    );\n    return element;\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n  static ngAcceptInputType_opened: BooleanInput;\n  static ngAcceptInputType_restoreFocus: BooleanInput;\n}\n","\n<usa-calendar\n  [id]=\"datePicker.id\"\n  [ngClass]=\"datePicker.panelClass\"\n  [startAt]=\"datePicker.startAt\"\n  [minDate]=\"datePicker._getMinDate()\"\n  [maxDate]=\"datePicker._getMaxDate()\"\n  [dateFilter]=\"datePicker._getDateFilter()\"\n  [headerComponent]=\"datePicker.calendarHeaderComponent\"\n  [selected]=\"_getSelected()\"\n  [dateClass]=\"datePicker.dateClass\"\n  [comparisonStart]=\"comparisonStart\"\n  [comparisonEnd]=\"comparisonEnd\"\n  (_userSelection)=\"_handleUserSelection($event)\"></usa-calendar>\n\n<!-- Invisible close button for screen reader users. -->\n<button\n  type=\"button\"\n  class=\"usa-sr-only\"\n  [class.cdk-visually-hidden]=\"!_closeButtonFocused\"\n  (focus)=\"_closeButtonFocused = true\"\n  (blur)=\"_closeButtonFocused = false\"\n  (click)=\"datePicker.close()\">{{ _closeButtonText }}</button>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { UsaDatePickerBase, UsaDatePickerControl } from './date-picker-base';\nimport { USA_SINGLE_DATE_SELECTION_MODEL_PROVIDER } from './date-selection-model';\n\n@Component({\n  selector: `usa-date-picker-wrapper`,\n  template: `\n    <div class=\"usa-date-picker usa-date-picker--initialized\">\n      <div class=\"usa-date-picker__wrapper\">\n        <ng-content></ng-content>\n      </div>\n    </div>\n   `,\n})\nexport class UsaDatePickerWrapper { }\n\n/** Component responsible for managing the datePicker popup/dialog. */\n@Component({\n  selector: 'usa-date-picker',\n  template: ``,\n  exportAs: 'usaDatePicker',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    USA_SINGLE_DATE_SELECTION_MODEL_PROVIDER,\n    { provide: UsaDatePickerBase, useExisting: UsaDatePicker },\n  ]\n})\nexport class UsaDatePicker<D> extends UsaDatePickerBase<UsaDatePickerControl<D>, D | null, D> {\n}","import {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  AfterViewInit,\n  OnChanges,\n  SimpleChanges,\n  isDevMode,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  ValidationErrors,\n  Validator,\n  ValidatorFn,\n} from '@angular/forms';\nimport { DateAdapter } from './dateadapter/date-adapter';\nimport {\n  USA_DATE_FORMATS,\n  UsaDateFormats,\n} from './dateadapter/date-formats';\nimport { Subscription, Subject } from 'rxjs';\nimport {\n  ExtractDateTypeFromSelection,\n  UsaDateSelectionModel,\n  DateSelectionModelChange,\n} from './date-selection-model';\nimport { createMissingDateImplError } from './date-picker-errors';\nimport { KeyCode } from '../util/key';\nimport { BooleanInput, coerceBooleanProperty } from '../util/boolean-property';\n\n/**\n * An event used for datePicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use UsaDatePickerInputEvent instead.\n */\nexport class UsaDatePickerInputEvent<D, S = unknown> {\n  /** The new value for the target datePicker input. */\n  value: D | null;\n\n  constructor(\n    /** Reference to the datePicker input component that emitted the event. */\n    public target: UsaDatePickerInputBase<S, D>,\n    /** Reference to the native input element associated with the datePicker input. */\n    public targetElement: HTMLElement) {\n    this.value = this.target.value;\n  }\n}\n\n/** Function that can be used to filter out dates from a calendar. */\nexport type DateFilterFn<D> = (date: D | null) => boolean;\n\n/** Base class for datePicker inputs. */\n@Directive()\nexport abstract class UsaDatePickerInputBase<S, D = ExtractDateTypeFromSelection<S>>\n  implements ControlValueAccessor, AfterViewInit, OnChanges, OnDestroy, Validator {\n\n  /** Whether the component has been initialized. */\n  private _isInitialized: boolean;\n\n  /** The value of the input. */\n  @Input()\n  get value(): D | null {\n    return this._model ? this._getValueFromModel(this._model.selection) : this._pendingValue;\n  }\n  set value(value: D | null) {\n    this._assignValueProgrammatically(value);\n  }\n  protected _model: UsaDateSelectionModel<S, D> | undefined;\n\n  /** Whether the datePicker-input is disabled. */\n  @Input()\n  get disabled(): boolean { return !!this._disabled || this._parentDisabled(); }\n  set disabled(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n    const element = this._elementRef.nativeElement;\n\n    if (this._disabled !== newValue) {\n      this._disabled = newValue;\n      this.stateChanges.next(undefined);\n    }\n\n    // We need to null check the `blur` method, because it's undefined during SSR.\n    // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.\n    // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the\n    // element has been inserted.\n    if (newValue && this._isInitialized && element.blur) {\n      // Normally, native input elements automatically blur if they turn disabled. This behavior\n      // is problematic, because it would mean that it triggers another change detection cycle,\n      // which then causes a changed after checked error if the input element was focused before.\n      element.blur();\n    }\n  }\n  private _disabled: boolean;\n\n  /** Emits when a `change` event is fired on this `<input>`. */\n  @Output() readonly dateChange: EventEmitter<UsaDatePickerInputEvent<D, S>> =\n    new EventEmitter<UsaDatePickerInputEvent<D, S>>();\n\n  /** Emits when an `input` event is fired on this `<input>`. */\n  @Output() readonly dateInput: EventEmitter<UsaDatePickerInputEvent<D, S>> =\n    new EventEmitter<UsaDatePickerInputEvent<D, S>>();\n\n  /** Emits when the internal state has changed */\n  readonly stateChanges = new Subject<void>();\n\n  _onTouched = () => { };\n  _validatorOnChange = () => { };\n\n  private _cvaOnChange: (value: any) => void = () => { };\n  private _valueChangesSubscription = Subscription.EMPTY;\n  private _localeSubscription = Subscription.EMPTY;\n\n  /**\n   * Since the value is kept on the model which is assigned in an Input,\n   * we might get a value before we have a model. This property keeps track\n   * of the value until we have somewhere to assign it.\n   */\n  private _pendingValue: D | null;\n\n  /** The form control validator for whether the input parses. */\n  private _parseValidator: ValidatorFn = (): ValidationErrors | null => {\n    return this._lastValueValid ?\n      null : { 'usaDatePickerParse': { 'text': this._elementRef.nativeElement.value } };\n  }\n\n  /** The form control validator for the date filter. */\n  private _filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n    const controlValue = this._dateAdapter.getValidDateOrNull(\n      this._dateAdapter.deserialize(control.value));\n    return !controlValue || this._matchesFilter(controlValue) ?\n      null : { 'usaDatePickerFilter': true };\n  }\n\n  /** The form control validator for the min date. */\n  private _minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n    const controlValue = this._dateAdapter.getValidDateOrNull(\n      this._dateAdapter.deserialize(control.value));\n    const min = this._getMinDate();\n    return (!min || !controlValue ||\n      this._dateAdapter.compareDate(min, controlValue) <= 0) ?\n      null : { 'usaDatePickerMin': { 'min': min, 'actual': controlValue } };\n  }\n\n  /** The form control validator for the max date. */\n  private _maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n    const controlValue = this._dateAdapter.getValidDateOrNull(\n      this._dateAdapter.deserialize(control.value));\n    const max = this._getMaxDate();\n    return (!max || !controlValue ||\n      this._dateAdapter.compareDate(max, controlValue) >= 0) ?\n      null : { 'usaDatePickerMax': { 'max': max, 'actual': controlValue } };\n  }\n\n  /** Gets the base validator functions. */\n  protected _getValidators(): ValidatorFn[] {\n    return [this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator];\n  }\n\n  /** Gets the minimum date for the input. Used for validation. */\n  abstract _getMinDate(): D | null;\n\n  /** Gets the maximum date for the input. Used for validation. */\n  abstract _getMaxDate(): D | null;\n\n  /** Gets the date filter function. Used for validation. */\n  protected abstract _getDateFilter(): DateFilterFn<D> | undefined;\n\n  /** Registers a date selection model with the input. */\n  _registerModel(model: UsaDateSelectionModel<S, D>): void {\n    this._model = model;\n    this._valueChangesSubscription.unsubscribe();\n\n    if (this._pendingValue) {\n      this._assignValue(this._pendingValue);\n    }\n\n    this._valueChangesSubscription = this._model.selectionChanged.subscribe(event => {\n      if (this._shouldHandleChangeEvent(event)) {\n        const value = this._getValueFromModel(event.selection);\n        this._lastValueValid = this._isValidValue(value);\n        this._cvaOnChange(value);\n        this._onTouched();\n        this._formatValue(value);\n        this.dateInput.emit(new UsaDatePickerInputEvent(this, this._elementRef.nativeElement));\n        this.dateChange.emit(new UsaDatePickerInputEvent(this, this._elementRef.nativeElement));\n      }\n    });\n  }\n\n  /** Opens the popup associated with the input. */\n  protected abstract _openPopup(): void;\n\n  /** Assigns a value to the input's model. */\n  protected abstract _assignValueToModel(model: D | null): void;\n\n  /** Converts a value from the model into a native value for the input. */\n  protected abstract _getValueFromModel(modelValue: S): D | null;\n\n  /** Combined form control validator for this input. */\n  protected abstract _validator: ValidatorFn | null;\n\n  /** Predicate that determines whether the input should handle a particular change event. */\n  protected abstract _shouldHandleChangeEvent(event: DateSelectionModelChange<S>): boolean;\n\n  /** Whether the last value set on the input was valid. */\n  protected _lastValueValid = false;\n\n  constructor(\n    protected _elementRef: ElementRef<HTMLInputElement>,\n    @Optional() public _dateAdapter: DateAdapter<D>,\n    @Optional() @Inject(USA_DATE_FORMATS) private _dateFormats: UsaDateFormats) {\n\n    if (isDevMode()) {\n      if (!this._dateAdapter) {\n        throw createMissingDateImplError('DateAdapter');\n      }\n      if (!this._dateFormats) {\n        throw createMissingDateImplError('USA_DATE_FORMATS');\n      }\n    }\n\n    // Update the displayed date when the locale changes.\n    this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n      this._assignValueProgrammatically(this.value);\n    });\n  }\n\n  ngAfterViewInit() {\n    this._isInitialized = true;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (dateInputsHaveChanged(changes, this._dateAdapter)) {\n      this.stateChanges.next(undefined);\n    }\n  }\n\n  ngOnDestroy() {\n    this._valueChangesSubscription.unsubscribe();\n    this._localeSubscription.unsubscribe();\n    this.stateChanges.complete();\n  }\n\n  /** @docs-private */\n  registerOnValidatorChange(fn: () => void): void {\n    this._validatorOnChange = fn;\n  }\n\n  /** @docs-private */\n  validate(c: AbstractControl): ValidationErrors | null {\n    return this._validator ? this._validator(c) : null;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  writeValue(value: D): void {\n    this._assignValueProgrammatically(value);\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnChange(fn: (value: any) => void): void {\n    this._cvaOnChange = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  _onKeydown(event: KeyboardEvent) {\n    const isAltDownArrow = event.altKey && event.keyCode === KeyCode.ArrowDown;\n\n    if (isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n      this._openPopup();\n      event.preventDefault();\n    }\n  }\n\n  _onInput(value: string) {\n    const lastValueWasValid = this._lastValueValid;\n    let date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\n    this._lastValueValid = this._isValidValue(date);\n    date = this._dateAdapter.getValidDateOrNull(date);\n\n    if (!this._dateAdapter.sameDate(date, this.value)) {\n      this._assignValue(date);\n      this._cvaOnChange(date);\n      this.dateInput.emit(new UsaDatePickerInputEvent(this, this._elementRef.nativeElement));\n    } else {\n      // Call the CVA change handler for invalid values\n      // since this is what marks the control as dirty.\n      if (value && !this.value) {\n        this._cvaOnChange(date);\n      }\n\n      if (lastValueWasValid !== this._lastValueValid) {\n        this._validatorOnChange();\n      }\n    }\n  }\n\n  _onChange() {\n    this.dateChange.emit(new UsaDatePickerInputEvent(this, this._elementRef.nativeElement));\n  }\n\n  /** Handles blur events on the input. */\n  _onBlur() {\n    // Reformat the input only if we have a valid value.\n    if (this.value) {\n      this._formatValue(this.value);\n    }\n\n    this._onTouched();\n  }\n\n  /** Formats a value and sets it on the input element. */\n  protected _formatValue(value: D | null) {\n    this._elementRef.nativeElement.value =\n      value ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '';\n  }\n\n  /** Assigns a value to the model. */\n  private _assignValue(value: D | null) {\n    // We may get some incoming values before the model was\n    // assigned. Save the value so that we can assign it later.\n    if (this._model) {\n      this._assignValueToModel(value);\n      this._pendingValue = null;\n    } else {\n      this._pendingValue = value;\n    }\n  }\n\n  /** Whether a value is considered valid. */\n  private _isValidValue(value: D | null): boolean {\n    return !value || this._dateAdapter.isValid(value);\n  }\n\n  /**\n   * Checks whether a parent control is disabled. This is in place so that it can be overridden\n   * by inputs extending this one which can be placed inside of a group that can be disabled.\n   */\n  protected _parentDisabled() {\n    return false;\n  }\n\n  /** Programmatically assigns a value to the input. */\n  protected _assignValueProgrammatically(value: D | null) {\n    value = this._dateAdapter.deserialize(value);\n    this._lastValueValid = this._isValidValue(value);\n    value = this._dateAdapter.getValidDateOrNull(value);\n    this._assignValue(value);\n    this._formatValue(value);\n  }\n\n  /** Gets whether a value matches the current date filter. */\n  _matchesFilter(value: D | null): boolean {\n    const filter = this._getDateFilter();\n    return !filter || filter(value);\n  }\n\n  // Accept `any` to avoid conflicts with other directives on `<input>` that\n  // may accept different types.\n  static ngAcceptInputType_value: any;\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/**\n * Checks whether the `SimpleChanges` object from an `ngOnChanges`\n * callback has any changes, accounting for date objects.\n */\nexport function dateInputsHaveChanged(\n  changes: SimpleChanges,\n  adapter: DateAdapter<unknown>): boolean {\n  const keys = Object.keys(changes);\n\n  for (let key of keys) {\n    const { previousValue, currentValue } = changes[key];\n\n    if (adapter.isDateInstance(previousValue) && adapter.isDateInstance(currentValue)) {\n      if (!adapter.sameDate(previousValue, currentValue)) {\n        return true;\n      }\n    } else {\n      return true;\n    }\n  }\n\n  return false;\n}","import { Directive, ElementRef, forwardRef, Inject, Input, OnDestroy, Optional } from \"@angular/core\";\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidatorFn, Validators } from \"@angular/forms\";\nimport { Subscription } from \"rxjs\";\nimport { DateAdapter } from \"./dateadapter/date-adapter\";\nimport { UsaDateFormats, USA_DATE_FORMATS } from \"./dateadapter/date-formats\";\nimport { DateSelectionModelChange } from \"./date-selection-model\";\nimport { UsaDatePickerPanel, UsaDatePickerControl } from \"./date-picker-base\";\nimport { DateFilterFn, UsaDatePickerInputBase } from \"./date-picker-input-base\";\n\n/** @docs-private */\nexport const USA_DATEPICKER_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => UsaDatePickerInput),\n  multi: true\n};\n\n/** @docs-private */\nexport const USA_DATEPICKER_VALIDATORS: any = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => UsaDatePickerInput),\n  multi: true\n};\n\n@Directive({\n  selector: 'input[usaDatePicker]',\n  providers: [\n    USA_DATEPICKER_VALUE_ACCESSOR,\n    USA_DATEPICKER_VALIDATORS,\n  ],\n  host: {\n    'class': 'usa-input',\n    '[attr.aria-haspopup]': '_datePicker ? \"dialog\" : null',\n    '[attr.aria-owns]': '(_datePicker?.opened && _datePicker.id) || null',\n    '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n    '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n    '[disabled]': 'disabled',\n    '(input)': '_onInput($event.target.value)',\n    '(change)': '_onChange()',\n    '(blur)': '_onBlur()',\n    '(keydown)': '_onKeydown($event)',\n  },\n  exportAs: 'usaDatePickerInput',\n})\nexport class UsaDatePickerInput<D> extends UsaDatePickerInputBase<D | null, D>\n  implements UsaDatePickerControl<D | null>, OnDestroy {\n  private _closedSubscription = Subscription.EMPTY;\n\n  /** The datePicker that this input is associated with. */\n  @Input()\n  set usaDatePicker(datePicker: UsaDatePickerPanel<UsaDatePickerControl<D>, D | null, D>) {\n    if (datePicker) {\n      this._datePicker = datePicker;\n      this._closedSubscription = datePicker.closedStream.subscribe(() => this._onTouched());\n      this._registerModel(datePicker.registerInput(this));\n    }\n  }\n  _datePicker: UsaDatePickerPanel<UsaDatePickerControl<D>, D | null, D>;\n\n  /** The minimum valid date. */\n  @Input()\n  get min(): D | null { return this._min; }\n  set min(value: D | null) {\n    const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n\n    if (!this._dateAdapter.sameDate(validValue, this._min)) {\n      this._min = validValue;\n      this._validatorOnChange();\n    }\n  }\n  private _min: D | null;\n\n  /** The maximum valid date. */\n  @Input()\n  get max(): D | null { return this._max; }\n  set max(value: D | null) {\n    const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n\n    if (!this._dateAdapter.sameDate(validValue, this._max)) {\n      this._max = validValue;\n      this._validatorOnChange();\n    }\n  }\n  private _max: D | null;\n\n  /** Function that can be used to filter out dates within the datePicker. */\n  @Input('usaDatePickerFilter')\n  get dateFilter() { return this._dateFilter; }\n  set dateFilter(value: DateFilterFn<D | null>) {\n    const wasMatchingValue = this._matchesFilter(this.value);\n    this._dateFilter = value;\n\n    if (this._matchesFilter(this.value) !== wasMatchingValue) {\n      this._validatorOnChange();\n    }\n  }\n  private _dateFilter: DateFilterFn<D | null>;\n\n  /** The combined form control validator for this input. */\n  protected _validator: ValidatorFn | null;\n\n  constructor(\n    elementRef: ElementRef<HTMLInputElement>,\n    @Optional() dateAdapter: DateAdapter<D>,\n    @Optional() @Inject(USA_DATE_FORMATS) dateFormats: UsaDateFormats,) {\n    super(elementRef, dateAdapter, dateFormats);\n    this._validator = Validators.compose(super._getValidators());\n  }\n\n  /**\n   * Gets the element that the datePicker popup should be connected to.\n   * @return The element to connect the popup to.\n   */\n  getConnectedOverlayOrigin(): ElementRef {\n    return this._elementRef;\n  }\n\n  /** Gets the ID of an element that should be used a description for the calendar overlay. */\n  getOverlayLabelId(): string | null {\n    return this._elementRef.nativeElement.getAttribute('aria-labelledby');\n  }\n\n\n  /** Gets the value at which the calendar should start. */\n  getStartValue(): D | null {\n    return this.value;\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n    this._closedSubscription.unsubscribe();\n  }\n\n  /** Opens the associated datePicker. */\n  protected _openPopup(): void {\n    if (this._datePicker) {\n      this._datePicker.open();\n    }\n  }\n\n  protected _getValueFromModel(modelValue: D | null): D | null {\n    return modelValue;\n  }\n\n  protected _assignValueToModel(value: D | null): void {\n    if (this._model) {\n      this._model.updateSelection(value, this);\n    }\n  }\n\n  /** Gets the input's minimum date. */\n  _getMinDate() {\n    return this._min;\n  }\n\n  /** Gets the input's maximum date. */\n  _getMaxDate() {\n    return this._max;\n  }\n\n  /** Gets the input's date filtering function. */\n  protected _getDateFilter() {\n    return this._dateFilter;\n  }\n\n  protected _shouldHandleChangeEvent(event: DateSelectionModelChange<D>) {\n    return event.source !== this;\n  }\n}","\nimport { BooleanInput, coerceBooleanProperty } from '../util/boolean-property';\nimport {\n  AfterContentInit,\n  Attribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  Directive,\n  Input,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { merge, Observable, of as observableOf, Subscription } from 'rxjs';\nimport { UsaDatePickerControl, UsaDatePickerPanel } from './date-picker-base';\n\n\n/** Can be used to override the icon of a `usaDatePickerButton`. */\n@Directive({\n  selector: '[usaDatePickerButtonIcon]'\n})\nexport class UsaDatePickerButtonIcon { }\n\n\n@Component({\n  selector: 'usa-date-picker-button',\n  templateUrl: './date-picker-button.html',\n  host: {\n    'class': 'usa-date-picker__button',\n    '[attr.tabindex]': 'null',\n    // Used by the test harness to tie this toggle to its datePicker.\n    '[attr.data-usa-calendar]': 'datePicker ? datePicker.id : null',\n    // Bind the `click` on the host, rather than the inner `button`, so that we can call\n    // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n    // it so that the input doesn't get focused automatically by the form field (See #21836).\n    '(click)': '_toggle($event)',\n  },\n  exportAs: 'usaDatePickerButton',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaDatePickerButton<D> implements AfterContentInit, OnChanges, OnDestroy {\n  private _stateChanges = Subscription.EMPTY;\n\n  /** DatePicker instance that the button will toggle. */\n  @Input('for') datePicker: UsaDatePickerPanel<UsaDatePickerControl<any>, D>;\n\n  /** Tabindex for the toggle. */\n  @Input() tabIndex: number | null;\n\n  /** Screenreader label for the button. */\n  @Input('aria-label') ariaLabel: string = 'Open Date Picker'\n\n  /** Whether the toggle button is disabled. */\n  @Input()\n  get disabled(): boolean {\n    if (this._disabled === undefined && this.datePicker) {\n      return this.datePicker.disabled;\n    }\n\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n  private _disabled: boolean;\n\n  /** Custom icon set by the consumer. */\n  @ContentChild(UsaDatePickerButtonIcon) _customIcon: UsaDatePickerButtonIcon;\n\n  /** Underlying button element. */\n  @ViewChild('button') _button: HTMLButtonElement;\n\n  constructor(\n    private _changeDetectorRef: ChangeDetectorRef,\n    @Attribute('tabindex') defaultTabIndex: string) {\n\n    const parsedTabIndex = Number(defaultTabIndex);\n    this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['datePicker']) {\n      this._watchStateChanges();\n    }\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.unsubscribe();\n  }\n\n  ngAfterContentInit() {\n    this._watchStateChanges();\n  }\n\n  _toggle(event: Event): void {\n    if (!this.datePicker) {\n      return;\n    }\n\n    if (this.datePicker && this.datePicker.opened) {\n      this.datePicker.close();\n    } else if (!this.disabled) {\n      this.datePicker.open();\n      event.stopPropagation();\n    }\n  }\n\n  private _watchStateChanges() {\n    const datePickerStateChanged = this.datePicker ? this.datePicker.stateChanges : observableOf();\n    const inputStateChanged = this.datePicker && this.datePicker.datePickerInput ?\n      this.datePicker.datePickerInput.stateChanges : observableOf();\n    const datePickerToggled = this.datePicker ?\n      merge(this.datePicker.openedStream, this.datePicker.closedStream) :\n      observableOf();\n\n    this._stateChanges.unsubscribe();\n    this._stateChanges = merge(\n      datePickerStateChanged as Observable<void>,\n      inputStateChanged,\n      datePickerToggled\n    ).subscribe(() => this._changeDetectorRef.markForCheck());\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}","<button #button type=\"button\" class=\"usa-date-picker__button\"\n  [attr.aria-haspopup]=\"datePicker ? true : null\"\n  [attr.aria-label]=\"ariaLabel\"\n  [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n  [disabled]=\"disabled\">\n  &nbsp;\n</button>","\nimport { Inject, Injectable, isDevMode, Optional } from '@angular/core';\nimport { DateAdapter, USA_DATE_LOCALE } from './date-adapter';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n  /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n  const valuesArray = Array(length);\n  for (let i = 0; i < length; i++) {\n    valuesArray[i] = valueFunction(i);\n  }\n  return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n  /**\n   * @deprecated No longer being used. To be removed.\n   * @breaking-change 14.0.0\n   */\n  useUtcForDisplay: boolean = false;\n\n  constructor(@Optional() @Inject(USA_DATE_LOCALE) usaDateLocale: string) {\n    super();\n    super.setLocale(usaDateLocale);\n  }\n\n  getYear(date: Date): number {\n    return date.getFullYear();\n  }\n\n  getMonth(date: Date): number {\n    return date.getMonth();\n  }\n\n  getDate(date: Date): number {\n    return date.getDate();\n  }\n\n  getDayOfWeek(date: Date): number {\n    return date.getDay();\n  }\n\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n    const dtf = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n    return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n  }\n\n  getDateNames(): string[] {\n    const dtf = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n    return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n  }\n\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n    const dtf = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n    return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n  }\n\n  getYearName(date: Date): string {\n    const dtf = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n    return this._format(dtf, date);\n  }\n\n  getFirstDayOfWeek(): number {\n    // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n    return 0;\n  }\n\n  getNumDaysInMonth(date: Date): number {\n    return this.getDate(this._createDateWithOverflow(\n      this.getYear(date), this.getMonth(date) + 1, 0));\n  }\n\n  clone(date: Date): Date {\n    return new Date(date.getTime());\n  }\n\n  createDate(year: number, month: number, date: number): Date {\n    if (isDevMode()) {\n      // Check for invalid month and date (except upper bound on date which we have to check after\n      // creating the Date).\n      if (month < 0 || month > 11) {\n        throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n      }\n\n      if (date < 1) {\n        throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n      }\n    }\n\n    let result = this._createDateWithOverflow(year, month, date);\n    // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n    if (result.getMonth() != month && isDevMode()) {\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n    }\n\n    return result;\n  }\n\n  today(): Date {\n    return new Date();\n  }\n\n  parse(value: any): Date | null {\n    // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n    // parameters.\n    if (typeof value == 'number') {\n      return new Date(value);\n    }\n    return value ? new Date(Date.parse(value)) : null;\n  }\n\n  format(date: Date, displayFormat: Object): string {\n    if (!this.isValid(date)) {\n      throw Error('NativeDateAdapter: Cannot format invalid date.');\n    }\n\n    const dtf = new Intl.DateTimeFormat(this.locale, { ...displayFormat, timeZone: 'utc' });\n    return this._format(dtf, date);\n  }\n\n  addCalendarYears(date: Date, years: number): Date {\n    return this.addCalendarMonths(date, years * 12);\n  }\n\n  addCalendarMonths(date: Date, months: number): Date {\n    let newDate = this._createDateWithOverflow(\n      this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n\n    // It's possible to wind up in the wrong month if the original month has more days than the new\n    // month. In this case we want to go to the last day of the desired month.\n    // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n    // guarantee this.\n    if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n      newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n    }\n\n    return newDate;\n  }\n\n  addCalendarDays(date: Date, days: number): Date {\n    return this._createDateWithOverflow(\n      this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n  }\n\n  toIso8601(date: Date): string {\n    return [\n      date.getUTCFullYear(),\n      this._2digit(date.getUTCMonth() + 1),\n      this._2digit(date.getUTCDate())\n    ].join('-');\n  }\n\n  /**\n   * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n   * invalid date for all other values.\n   */\n  deserialize(value: any): Date | null {\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n      // string is the right format first.\n      if (ISO_8601_REGEX.test(value)) {\n        let date = new Date(value);\n        if (this.isValid(date)) {\n          return date;\n        }\n      }\n    }\n    return super.deserialize(value);\n  }\n\n  isDateInstance(obj: any) {\n    return obj instanceof Date;\n  }\n\n  isValid(date: Date) {\n    return !isNaN(date.getTime());\n  }\n\n  invalid(): Date {\n    return new Date(NaN);\n  }\n\n  /** Creates a date but allows the month and date to overflow. */\n  private _createDateWithOverflow(year: number, month: number, date: number) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setFullYear` and `setHours` instead.\n    const d = new Date();\n    d.setFullYear(year, month, date);\n    d.setHours(0, 0, 0, 0);\n    return d;\n  }\n\n  /**\n   * Pads a number to make it two digits.\n   * @param n The number to pad.\n   * @returns The padded number.\n   */\n  private _2digit(n: number) {\n    return ('00' + n).slice(-2);\n  }\n\n  /**\n   * When converting Date object to string, javascript built-in functions may return wrong\n   * results because it applies its internal DST rules. The DST rules around the world change\n   * very frequently, and the current valid rule is not always valid in previous years though.\n   * We work around this problem building a new Date object which has its internal UTC\n   * representation with the local date and time.\n   * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\n   *    timeZone set to 'utc' to work fine.\n   * @param date Date from which we want to get the string representation according to dtf\n   * @returns A Date object with its UTC representation based on the passed in date info\n   */\n  private _format(dtf: Intl.DateTimeFormat, date: Date) {\n    // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n    // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n    const d = new Date();\n    d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n    d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n    return dtf.format(d);\n  }\n}\n","import { UsaDateFormats } from './date-formats';\n\nexport const USA_NATIVE_DATE_FORMATS: UsaDateFormats = {\n  parse: {\n    dateInput: null,\n  },\n  display: {\n    dateInput: { year: 'numeric', month: '2-digit', day: '2-digit' },\n    monthYearLabel: { year: 'numeric', month: 'short' },\n    monthLabel: { month: 'long' },\n    dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n    monthYearA11yLabel: { year: 'numeric', month: 'long' },\n  }\n};\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { UsaCalendar, UsaCalendarHeader } from \"./calendar/calendar\";\nimport { UsaCalendarBody } from \"./calendar/calendar-body\";\nimport { UsaMonthView } from \"./calendar/month-view\";\nimport { UsaMultiYearView } from \"./calendar/multi-year-view\";\nimport { UsaYearView } from \"./calendar/year-view\";\nimport { UsaDatePicker, UsaDatePickerWrapper } from \"./date-picker\";\nimport { UsaDatePickerContent } from \"./date-picker-base\";\nimport { UsaDatePickerInput } from \"./date-picker-input\";\nimport { UsaDatePickerButton } from \"./date-picker-button\";\nimport { DateAdapter } from \"./dateadapter/date-adapter\";\nimport { NativeDateAdapter } from \"./dateadapter/native-date-adapter\";\nimport { USA_DATE_FORMATS } from \"./dateadapter/date-formats\";\nimport { USA_NATIVE_DATE_FORMATS } from \"./dateadapter/native-date-formats\";\nimport { HoverClassModule } from \"../util/hover-class\";\nimport { UsaDatePickerButtonIcon } from './date-picker-button';\n\n\n@NgModule({\n    declarations: [\n        UsaDatePickerInput,\n        UsaDatePickerButton,\n        UsaCalendar,\n        UsaCalendarHeader,\n        UsaCalendarBody,\n        UsaMonthView,\n        UsaYearView,\n        UsaMultiYearView,\n        UsaCalendarBody,\n        UsaDatePickerContent,\n        UsaDatePicker,\n        UsaDatePickerWrapper,\n        UsaDatePickerButtonIcon,\n    ],\n    imports: [\n        CommonModule,\n        HoverClassModule,\n    ],\n    providers: [\n        { provide: DateAdapter, useClass: NativeDateAdapter },\n        { provide: USA_DATE_FORMATS, useValue: USA_NATIVE_DATE_FORMATS }\n    ],\n    exports: [\n        UsaDatePickerInput,\n        UsaDatePickerButton,\n        UsaCalendar,\n        UsaCalendarHeader,\n        UsaCalendarBody,\n        UsaDatePickerContent,\n        UsaDatePicker,\n        UsaDatePickerWrapper,\n    ]\n})\nexport class UsaDatePickerModule {}","import { Directive, ElementRef, Input, NgZone, OnDestroy, OnInit, Optional, Renderer2 } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\ndeclare var ResizeObserver;\n\nlet nextId = 0;\n@Directive({\n  selector: '[usaCharacterCount]',\n})\nexport class UsaCharacterCountDirective implements OnInit, OnDestroy {\n\n  /** Directive's main input - max length of characters allowed */\n  @Input() usaCharacterCount: number;\n\n  /** \n   * Id to use for character count message text. Will be auto-generated if not passed in\n   */\n  @Input() messageId = `usa-character-count-${nextId++}`;\n\n  private readonly MESSAGE_CLASS = `usa-character-count__message`;\n  private readonly MESSAGE_INVALID_CLASS = `usa-character-count__message--invalid`;\n\n  /** \n   * Subscription to form control's value changes if one exists\n   * Allows us to unsubscribe during cleanup\n   */\n  valueSubscription = new Subscription();\n\n  /** Reference to character count text being displayed to users */\n  characterCounterText = '';\n\n  /**\n   * Watch for resize event changes to the host element. We want to keep the character\n   * counter's width attribute in line with host's width for resizable input\n   */\n  private _inputResizeObserver;\n\n  /**\n   * Reference to character counter message element. This will be created during init if\n   * one with provided messageId does not already exist as sibling.\n   */\n  private _messageElement: HTMLSpanElement;\n\n  constructor(\n    private element: ElementRef,\n    private renderer2: Renderer2,\n    private zone: NgZone,\n    @Optional() private control: NgControl\n  ) { }\n\n  ngOnInit() {\n    if (!this.usaCharacterCount) {\n      return;\n    }\n\n    if (this.control) {\n      this.valueSubscription = this.control.valueChanges.subscribe(($event) => this.inputEventHandler($event));\n    } else {\n      this.element.nativeElement.addEventListener('input', this.inputEventHandler.bind(this));\n    }\n\n    // Get reference to character counter's message element\n    this._messageElement = this.getMessageElement();\n    this.setCharacterCountText(0, this.usaCharacterCount);\n\n\n    /** Watch for input field's resize event so we can keep character counter text aligned with input */\n    this._inputResizeObserver = new ResizeObserver((change) => {\n      // Run renderer inside angular's zone so that we can ensure change detection will pick it up\n      this.zone.run(() => {\n        this._messageElement.style.width = `${change[0].borderBoxSize[0].inlineSize}px`;\n      })\n    });\n\n    this._inputResizeObserver.observe(this.element.nativeElement);\n  }\n\n  ngOnDestroy() {\n    /** Clean Up */\n    this.valueSubscription.unsubscribe();\n    this.element.nativeElement.removeEventListener('input', this.inputEventHandler);\n    if (this._inputResizeObserver) {\n      this._inputResizeObserver.unobserve(this.element.nativeElement);\n    }\n  }\n\n  /** Gets reference to span element that will be used to display character counter text. If one does not exists, it will be created\n   * and attached as sibling to host form element\n   */\n  private getMessageElement() {\n    let messageElement: HTMLSpanElement = this.element.nativeElement.parentElement.querySelector(`.${this.MESSAGE_CLASS}#${this.messageId}`);\n    if (messageElement) {\n      return messageElement;\n    }\n\n    messageElement = this.renderer2.createElement('span');\n    messageElement.classList.add('usa-hint', this.MESSAGE_CLASS);\n    messageElement.setAttribute('aria-live', 'polite');\n    messageElement.setAttribute('id', this.messageId);\n    messageElement.style.width = `${this.element.nativeElement.offsetWidth}px`;\n    (this.element.nativeElement.parentElement as HTMLElement).insertBefore(messageElement, this.element.nativeElement.nextSibling);\n    this._messageElement = messageElement;\n\n    return messageElement;\n  }\n\n  private inputEventHandler($event: InputEvent | string) {\n    let value;\n    if ($event instanceof InputEvent) {\n      value = ($event.target as any).value;\n    } else {\n      value = $event;\n    }\n\n    if (value === undefined || value === null) {\n      return;\n    }\n\n    this.setCharacterCountText(value.length, this.usaCharacterCount);\n  }\n\n  /**\n   * Sets character counter message based on current number of characters.\n   * The message is appended as sibling element to the element this character count directive\n   * is attached through reference of shared parent element.\n   * @param currentLength \n   */\n  private setCharacterCountText(currentLength: number, maxLength: number) {\n\n    // Get message to display for amount of characters left\n    this.characterCounterText = this.generateCharacterCounterText(currentLength, maxLength);\n\n    // Add error css if over limit\n    const isOverLimit = currentLength && currentLength > maxLength;\n    this._messageElement.classList.toggle(this.MESSAGE_INVALID_CLASS, isOverLimit);\n\n    this._messageElement.innerHTML = this.characterCounterText;\n  }\n\n  /**\n   * Follows logic from USWDS' character counter's JS file so that messaging is consistent\n   * @param currentLength\n   * @param maxLength \n   * @returns - string message to display based on current characters and max characters allowed\n   */\n  private generateCharacterCounterText(currentLength: number, maxLength: number) {\n    const isOverLimit = currentLength && currentLength > maxLength;\n\n    if (currentLength === 0) {\n      return `${maxLength} characters allowed`;\n    } else {\n      const difference = Math.abs(maxLength - currentLength);\n      const characters = `character${difference === 1 ? \"\" : \"s\"}`;\n      const guidance = isOverLimit ? \"over limit\" : \"left\";\n\n      return `${difference} ${characters} ${guidance}`;\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UsaCharacterCountDirective } from './character-count.directive';\n\n\n\n@NgModule({\n  declarations: [UsaCharacterCountDirective],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    UsaCharacterCountDirective,\n  ]\n})\nexport class UsaCharacterCountModule { }\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, EventEmitter, forwardRef, Input, Output } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n@Directive({\n  selector: '[usaRadioDescription]',\n  host: {\n    class: 'usa-checkbox__label-description'\n  }\n})\nexport class UsaRadioLabelDescription { }\n\nlet nextId = 0;\n\n@Component({\n  selector: `usa-radio`,\n  templateUrl: `./radio.component.html`,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => UsaRadioComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaRadioComponent implements ControlValueAccessor{\n\n  @Input() tile: boolean;\n\n  @Input() value: string;\n\n  @Input() disabled: boolean;\n\n  @Input() checked: boolean;\n\n  @Input('aria-label') ariaLabel: string = '';\n\n  @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n  @Input('aria-describedby') ariaDescribedby: string;\n\n  @Input() id = `usa-radio-${nextId++}`;\n\n  @Input() required: boolean = false;\n\n  /** Name value will be applied to the input element if present */\n  @Input() name: string = null;\n\n  @Output() change = new EventEmitter<{ target: HTMLInputElement, value: string }>();\n\n  /**\n  * Invoked when the model has been changed\n  */\n  onChange: (_: any) => void = (_: any) => { };\n\n  /**\n   * Invoked when the model has been touched\n   */\n  onTouched: () => void = () => { };\n\n\n  constructor(public cdr: ChangeDetectorRef) { }\n\n  writeValue(value: any): void {\n    this.checked = !!value;\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * Registers a callback function that should be called when the control's value changes in the UI.\n   * @param fn\n   */\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  /**\n    * Registers a callback function that should be called when the control receives a blur event.\n    * @param fn\n    */\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  onRadioClicked($event: PointerEvent, input: HTMLInputElement) {\n    $event.stopPropagation();\n    if (this.disabled) {\n      return;\n    }\n    const outputValue = { target: input, value: input.value };\n    this.checked = true;\n    this.onChange(outputValue);\n    this.change.emit(outputValue);\n  }\n\n  preventChangePropogation($event: Event) {\n    $event.stopPropagation();\n  }\n}","<div class=\"usa-radio\">\n  <input #input\n  class=\"usa-radio__input\" type=\"radio\"\n  [ngClass]=\"{'usa-radio__input--tile': tile}\"\n  [id]=\"id\"\n  [required]=\"required\"\n  [checked]=\"checked\"\n  [disabled]=\"disabled\"\n  [value]=\"value\"\n  [attr.name]=\"name\"\n  [attr.aria-label]=\"ariaLabel || null\"\n  [attr.aria-labelledby]=\"ariaLabelledby\"\n  [attr.aria-checked]=\"checked\"\n  [attr.aria-describedby]=\"ariaDescribedby\"\n  (click)=\"onRadioClicked($event, input)\"\n  (change)=\"preventChangePropogation($event)\"\n  >\n  <label class=\"usa-radio__label\" [for]=\"id\">\n    <ng-content></ng-content>\n    <ng-content select=\"usaRadioDescription\"></ng-content>\n  </label>\n</div>\n","import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, Directive, EventEmitter, forwardRef, Input, OnDestroy, Output, QueryList } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { Subscription } from \"rxjs\";\nimport { UsaRadioComponent } from \"./radio.component\";\n\n/**\n * Directive to allow heading for group of radio options\n */\n@Directive({\n  selector: '[usaRadioGroupLabel]',\n})\nexport class UsaRadioGroupLabel {}\n\n@Component({\n  selector: `usa-radio-group`,\n  template: `\n  <div role=\"radiogroup\" [attr.aria-labelledby]=\"ariaLabelledBy\">\n    <ng-content select=\"usaRadioGroupLabel\"></ng-content>\n    <ng-content></ng-content>\n  </div>`,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => UsaRadioGroupComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaRadioGroupComponent implements AfterContentInit, OnDestroy, ControlValueAccessor {\n\n  /**\n   * Invoked when the model has been changed\n   */\n  onChange: (_: any) => void;\n\n  /**\n  * Invoked when the model has been touched\n  */\n  onTouched: () => void;\n\n  @ContentChildren(UsaRadioComponent) radioComponents: QueryList<UsaRadioComponent>;\n\n  /**\n   * Name for radio groups. A group of radio options should contain the same name\n   */\n  @Input() name: string;\n\n  /**\n   * Whether or not to display radio options as tile. This input is purely for presentation\n   */\n  @Input() tile: boolean;\n\n  /**\n   * Value of currently selected radio option. Each radio option within the group\n   * should have a unique value. This value will match the currently selected\n   * radio option's value within the group\n   */\n  @Input()\n  get value() {\n    return this._value;\n  }\n\n  set value(val: string) {\n    this._value = val;\n    if (!this.radioComponents) return;\n    this.radioComponents.forEach(radio => {\n      radio.checked = radio.value === val;\n    })\n  }\n  _value: string;\n\n  /**\n   * Defines whether all radio options within the group are disabled or not.\n   * To dispable individual radio buttons, please pass the disabled property directly\n   * to the radio button\n   */\n  @Input()\n  get disabled() {\n    return this._disabled;\n  }\n\n  set disabled(value: boolean) {\n    this._disabled = value;\n    if (this.radioComponents) {\n      this.radioComponents.forEach(radio => {\n        radio.disabled = value;\n      })\n    }\n  }\n  _disabled: boolean = false;\n\n  @Input() ariaLabelledBy: string;\n\n  /**\n   * Outputs whenever radio option changes. The output data will\n   * contain two properties, target and value. Target will refer to\n   * the HTMLInputElement for the selected radio input while value will\n   * contain the provided value of the input\n   */\n  @Output() change = new EventEmitter<{target: HTMLInputElement, value: string}>();\n\n  _subscriptions: Subscription;\n\n  constructor() {\n    this.onChange = (_:any) => {};\n    this.onTouched = () => {};\n    this._subscriptions = new Subscription();\n  }\n\n  ngAfterContentInit() {\n    this.radioComponents.forEach(radio => {\n      radio.name = radio.name ? radio.name : this.name;\n      radio.tile = radio.tile ? radio.tile : this.tile;\n      radio.disabled = radio.disabled != undefined ? radio.disabled : this.disabled;\n      if (this.value && radio.value === this.value) {\n        radio.checked = true;\n      }\n      this._subscribeToRadioChange(radio);\n    });\n  }\n\n  ngOnDestroy() {\n    if (this._subscriptions) {\n      this._subscriptions.unsubscribe();\n    }\n  }\n\n  writeValue(value: string): void {\n    this.value = value;\n    if (this.radioComponents) {\n      this.radioComponents.forEach(radio => {\n        radio.checked = value === radio.value;\n      })\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  _subscribeToRadioChange(radio: UsaRadioComponent) {\n    const changeSubscription = radio.change.subscribe(((change: {target: HTMLInputElement, value: string}) => {\n      this.radioComponents.forEach(component => {\n        component.checked = component === radio;\n        component.cdr.markForCheck();\n      });\n\n      if (this.onChange && typeof(this.onChange) === 'function') {\n        this.onChange(change.value);\n      }\n\n      this.change.emit(change);\n    }).bind(this));\n    this._subscriptions.add(changeSubscription);\n  }\n}","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { UsaRadioGroupComponent, UsaRadioGroupLabel } from \"./radio-group.component\";\nimport { UsaRadioComponent, UsaRadioLabelDescription } from \"./radio.component\";\n\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [\n    UsaRadioComponent,\n    UsaRadioLabelDescription,\n    UsaRadioGroupComponent,\n    UsaRadioGroupLabel,\n  ],\n  exports: [\n    UsaRadioComponent,\n    UsaRadioLabelDescription,\n    UsaRadioGroupComponent,\n    UsaRadioGroupLabel,\n  ]\n})\nexport class UsaRadioModule {}","import { Directive, TemplateRef } from \"@angular/core\";\n\n/**\n * Define primary navigation links for the header. Use this over passing in JSON model \n * through primaryNavItems input if you'd like more customization to the header's primary\n * link templates. Only usable with ul tags.\n * @example\n * <usa-header>\n *  <ul usaHeaderPrimaryLinks>\n *     <li class=\"usa-nav__primary-item\">\n *       <a href=\"<yourHref>\">Navigation Link</a>\n *     </li>\n *   </ul>\n * </usa-header>\n * \n */\n@Directive({\n  selector: `ul[usaHeaderPrimaryLinks]`,\n  host: {\n    class: 'usa-nav__primary usa-accordion',\n  }\n})\nexport class UsaHeaderPrimaryLinks {}\n\n/**\n * Additional content to add to primary header that are not navigation links.\n * This content will be added after the primary header links\n * @example\n * <usa-header>\n *  <div usaHeaderPrimaryExtra>\n *    <usa-search></usa-search>\n *  </div>\n * </usa-header>\n */\n@Directive({\n  selector: `[usaHeaderPrimaryExtra]`,\n})\nexport class UsaHeaderPrimaryExtra {}\n\n/**\n * Define template for displaying primary navigation link. This is useful if you'd\n * like to pass in json model for primary links, and want some customization on\n * how the link text are displayed. Any primary links in the input model that do\n * not have `navigationMode` defined will use this template to display the link\n * @example\n * <usa-header [primaryNavItems]=\"yourJsonModel\">\n *  <ng-template usaHeaderPrimaryLinkTemplate let-link>\n *    <your-custom-template-here [link]=\"link\"></your-custom-template-here>\n *  </ng-template>\n * </usa-header>\n */\n@Directive({\n  selector: `[usaHeaderPrimaryLinkTemplate]`\n})\nexport class UsaHeaderPrimaryLinkTemplate {\n  constructor (public templateRef: TemplateRef<any>) {}\n}\n\n/**\n * Define secondary navigation links for the header. Use this over passing in JSON model \n * through secondaryNavItems input if you'd like more customization to the header's secondary\n * link templates. Only usable with ul tags.\n * @example\n * <usa header [extended]=\"true\">\n *  <ul usaHeaderSecondaryLinks>\n *    <li class=\"usa-nav__secondary-item\">\n        <a href=\"<yourHref>\">Secondary Link</a>\n      </li>\n *  </ul>\n * </usa-header>\n */\n@Directive({\n  selector: `ul[usaHeaderSecondaryLinks]`,\n  host: {\n    class: 'usa-nav__secondary-links',\n  }\n})\nexport class UsaHeaderSecondaryLinks {}\n\n/**\n * Additional content to add to extended header aside from links. Content will be\n * added to the end of secondary links if secondary links are provided\n * @example\n * <usa-header [extended]=\"true\">\n *  <div usaHeaderSecondaryExtra>\n *    <usa-search></usa-search>\n *  </div>\n * </usa-header>\n */\n@Directive({\n  selector: `[usaHeaderSecondaryExtra]`\n})\nexport class UsaHeaderSecondaryExtra {}\n\n\n/**\n * Define template for displaying secondary navigation link. This is useful if you'd\n * like to pass in json model for secondary links, and want some customization on\n * how the link text are displayed. Any secondary links in the input model that do\n * not have `navigationMode` defined will use this template to display the link\n * @example\n * <usa-header [secondaryNavItems]=\"yourJsonModel\">\n *  <ng-template usaHeaderSecondaryLinkTemplate let-link>\n *    <your-custom-template-here [link]=\"link\"></your-custom-template-here>\n *  </ng-template>\n * </usa-header>\n */\n@Directive({\n  selector: `[usaHeaderSecondaryLinkTemplate]`\n})\nexport class UsaHeaderSecondaryLinkTemplate {\n  constructor(public templateRef: TemplateRef<any>) {}\n}\n\n\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport {\n  UsaHeaderPrimaryLinkTemplate,\n  UsaHeaderSecondaryLinkTemplate,\n} from './header-selectors';\nimport { UsaHeaderPrimaryLink } from './header.model';\nimport { UsaNavigationLink, UsaNavigationMode } from '../util/navigation';\n@Component({\n  selector: 'usa-header',\n  templateUrl: './header.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UsaHeaderComponent implements OnInit {\n  @ContentChild(UsaHeaderPrimaryLinkTemplate)\n  primaryLinkTemplate: TemplateRef<any>;\n  @ContentChild(UsaHeaderSecondaryLinkTemplate)\n  secondaryLinkTemplate: TemplateRef<any>;\n\n  @ViewChild('usaNavOpen') openNavBtn: ElementRef;\n  @ViewChild('usaNavClose') closeNavBtn: ElementRef;\n\n  mobileNavActive = false;\n\n  /**\n   * Title to display in header. Can be a string or a template reference\n   */\n  @Input() title: string | TemplateRef<any>;\n\n  /**\n   * Template to use for displaying menu button on mobile mode. By default,\n   * the text 'Menu' will be used\n   */\n  @Input() menuButtonTemplate: TemplateRef<any>;\n\n  /**\n   * Aria label to use for over all navigation content\n   * @default 'Primary Navigation'\n   */\n  @Input() navAriaLabel = 'Primary Navigation';\n\n  /**\n   * Whether the header should have secondary links or not.\n   * @default false\n   */\n  @Input() extended = false;\n\n  /**\n   * Primary navigation items to display for header\n   */\n  @Input() primaryNavItems: UsaHeaderPrimaryLink[];\n\n  /**\n   * Secondary navigation items to display for header. Please note\n   * that `extended` input must also be passed in as `true` for the\n   * secondary nav items to display\n   */\n  @Input() secondaryNavItems: UsaNavigationLink[];\n\n  /**\n   * Defines whether or not to display dark overlay in background\n   * whenever submenu or megamenu is active\n   */\n  @Input() displayOverlayOnMenuOpen = false;\n\n  /**\n   * event emitted whenever a navigation item is clicked.\n   * This only fires if navigation mode for the link event is NONE or undefined\n   */\n  @Output()\n  linkEvent = new EventEmitter<UsaNavigationLink>();\n\n  NavigationMode = UsaNavigationMode;\n\n  /** Reference of link whose dropdown menu is currently open */\n  selectedDropdownLink: UsaHeaderPrimaryLink;\n\n  /** Reference to currently selected navigation link */\n  selectedNavItem: UsaNavigationLink;\n\n  // When the mobile nav is active, and the close box isn't visible,\n  // we know the user's viewport has been resized to be larger.\n  // Let's make the page state consistent by deactivating the mobile nav.\n  @HostListener('window:resize', ['$event'])\n  onBrowserResize(event) {\n    if (\n      this.mobileNavActive &&\n      this.closeNavBtn.nativeElement.getBoundingClientRect().width === 0\n    ) {\n      this.mobileNavActive = false;\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  documentClick($event: any) {\n    this.selectedDropdownLink = null;\n  }\n\n  constructor(public changeDetector: ChangeDetectorRef) {}\n\n  ngOnInit() {\n    /** Look through primary and secondary nav and select the first selected nav item.\n     * Toggle the rest off if they are selected */\n    this.selectInitialNavItem(this.primaryNavItems);\n    this.selectInitialNavItem(this.secondaryNavItems);\n  }\n\n  getTypeOfTitle(): 'string' | 'object' {\n    return typeof this.title === 'string' ? 'string' : 'object';\n  }\n\n  /**\n   * Takes in a text string and removes all white space characters and returns the new string\n   * @param text\n   */\n  removeWhiteSpace(text: string) {\n    return text.replace(/ /g, '');\n  }\n\n  /**\n   * Link clicked and emits the link data into an event\n   * @param link\n   */\n  linkClickEvent(link: UsaNavigationLink, parentNav?: UsaNavigationLink) {\n    const itemToSelect = parentNav ? parentNav : link;\n    this.selectNavItem(itemToSelect);\n    this.linkEvent.emit(link);\n  }\n\n  /**\n   * Public Interface - select a navigation item to mark as selected.\n   * @param item - The item to select. This item will be marked as selected, and\n   * any previously selected item will be un-selected. Note that only one nav item may\n   * be selected at a time\n   */\n  selectNavItem(item: UsaNavigationLink) {\n    if (this.selectedNavItem) {\n      this.selectedNavItem.selected = false;\n    }\n\n    this.selectedNavItem = item;\n    this.selectedNavItem.selected = true;\n    this.changeDetector.detectChanges();\n  }\n\n  dropdownLinkClicked(link: UsaHeaderPrimaryLink, $event: Event) {\n    // Opened dropdown link was clicked, close it\n    if (link === this.selectedDropdownLink) {\n      this.selectedDropdownLink = null;\n      return;\n    }\n\n    // Otherwise, set the newly clicked link as the new open dropdown\n    this.selectedDropdownLink = link;\n    $event?.stopImmediatePropagation();\n  }\n\n  openMobileNav() {\n    this.mobileNavActive = true;\n  }\n\n  closeMobileNav() {\n    this.mobileNavActive = false;\n    this.openNavBtn.nativeElement.focus();\n  }\n\n  navAnimationEnd() {\n    this.closeNavBtn.nativeElement.focus();\n  }\n\n  /** Used during component init - selects the initial nav item by looking through input nav items */\n  private selectInitialNavItem(navItemsList: UsaNavigationLink[]) {\n    if (!navItemsList) return;\n\n    navItemsList.forEach((item) => {\n      if (this.selectedNavItem) {\n        item.selected = false;\n      } else if (item.selected) {\n        this.selectedNavItem = item;\n      }\n    });\n  }\n}\n","<div class=\"usa-overlay\" \n  [class.is-visible]=\"mobileNavActive || (displayOverlayOnMenuOpen && selectedDropdownLink != null)\" \n  (click)=\"mobileNavActive ? closeMobileNav() : ''\">\n</div>\n<header class=\"usa-header\" [ngClass]=\"{'usa-header--extended': extended, 'usa-header--basic': !extended}\">\n  <div class=\"usa-nav-container\">\n    <div class=\"usa-navbar\">\n      <div class=\"usa-logo\">\n        <ng-container *ngIf=\"getTypeOfTitle() === 'object'; else titleText\" [ngTemplateOutlet]=\"title\"></ng-container>\n        <ng-template #titleText><em class=\"usa-logo__text\">{{title}}</em></ng-template>\n      </div>\n      <button #usaNavOpen class=\"usa-menu-btn\" (click)=\"openMobileNav()\">\n        <ng-container *ngIf=\"menuButtonTemplate; else menu\" [ngTemplateOutlet]=\"menuButtonTemplate\"></ng-container>\n        <ng-template #menu>\n          Menu\n          <span class=\"usa-sr-only\">Menu</span>\n        </ng-template>\n      </button>\n    </div>\n    <nav [attr.aria-label]=\"navAriaLabel\" class=\"usa-nav\" (keydown.esc)=\"closeMobileNav()\"\n      (animationend)=\"navAnimationEnd()\" [class.is-visible]=\"mobileNavActive\">\n      <ng-container *ngIf=\"extended; else headerNavigationLinks\">\n        <div class=\"usa-nav__inner\">  \n          <ng-container [ngTemplateOutlet]=\"headerNavigationLinks\"></ng-container>\n        </div>\n      </ng-container>\n\n      <ng-template #headerNavigationLinks>\n        <button #usaNavClose class=\"usa-nav__close\" (click)=\"closeMobileNav()\">\n          <span>Close</span>\n          <span class=\"usa-sr-only\">Close</span>\n        </button>\n\n        <ul class=\"usa-nav__primary usa-accordion\" *ngIf=\"primaryNavItems\">\n          <li *ngFor=\"let link of primaryNavItems\" class=\"usa-nav__primary-item\">\n            <ng-container [ngTemplateOutlet]=\"link.children ? dropDownTemplate : linkTemplate\"\n              [ngTemplateOutletContext]=\"{ $implicit: link, isPrimary: true }\"></ng-container>\n          </li>\n        </ul>\n\n        <ng-content select=\"[usaHeaderPrimaryLinks]\"></ng-content>\n        <ng-content select=\"[usaHeaderPrimaryExtra]\"></ng-content>\n\n        <div *ngIf=\"extended\" class=\"usa-nav__secondary\">\n          <ul *ngIf=\"secondaryNavItems\" class=\"usa-nav__secondary-links\">\n            <li *ngFor=\"let link of secondaryNavItems\" class=\"usa-nav__secondary-item\">\n              <ng-container [ngTemplateOutlet]=\"linkTemplate\" [ngTemplateOutletContext]=\"{ $implicit: link, isPrimary: false }\"></ng-container>\n            </li>\n          </ul>\n          <ng-content select=\"[usaHeaderSecondaryLinks]\"></ng-content>\n          <ng-content select=\"[usaHeaderSecondaryExtra]\"></ng-content>\n        </div>\n      </ng-template>\n    </nav>\n  </div>\n</header>\n\n<ng-template #linkTemplate let-link let-isPrimary=\"isPrimary\" let-parentNav=\"parentNav\">\n  <ng-container [ngTemplateOutlet]=\"\n    link.path ? linkHREFTemplate :\n    primaryLinkTemplate && isPrimary === true ? primaryLinkTemplate.templateRef :\n    secondaryLinkTemplate && isPrimary === false ? secondaryLinkTemplate.templateRef :\n    linkEventTemplate\"\n    [ngTemplateOutletContext]=\"{ $implicit: link, isPrimary: isPrimary, parentNav: parentNav }\"></ng-container>\n</ng-template>\n\n<ng-template #dropDownTemplate let-link>\n  <button [attr.id]=\"link.id\" class=\"usa-accordion__button usa-nav__link\"\n    [ngClass]=\"{'usa-current': link.selected}\"\n    [attr.aria-expanded]=\"link === selectedDropdownLink\" \n    [attr.aria-controls]=\"removeWhiteSpace(link.text) + '-section'\" \n    (click)=\"dropdownLinkClicked(link, $event)\">\n    <span>{{ link.text }}</span>\n  </button>\n  <ul *ngIf=\"link === selectedDropdownLink\" [attr.id]=\"removeWhiteSpace(link.text) + '-section'\" class=\"usa-nav__submenu\" \n    [ngClass]=\"{'usa-megamenu': link.isMegamenu}\">\n    <li *ngFor=\"let childLink of link.children\" class=\"usa-nav__submenu-item\">\n      <ng-container [ngTemplateOutlet]=\"linkTemplate\"\n         [ngTemplateOutletContext]=\"{ $implicit: childLink, parentNav: link }\">\n      </ng-container>\n    </li>\n  </ul>\n</ng-template>\n\n<ng-template #linkHREFTemplate let-link let-isPrimary>\n  <a [attr.id]=\"link.id\"\n    [ngClass]=\"{'usa-nav__link': isPrimary, 'usa-current': link.selected}\" \n    [attr.href]=\"[link.path]\">{{ link.text }}</a>\n</ng-template>\n\n<ng-template #linkEventTemplate let-link let-isPrimary=\"isPrimary\" let-parentNav=\"parentNav\">\n  <a [attr.id]=\"link.id\"\n    [ngClass]=\"{'usa-nav__link': isPrimary, 'usa-current': link.selected}\"\n    href=\"javascript:void(0)\" (click)=\"linkClickEvent(link, parentNav)\">{{ link.text }}</a>\n</ng-template>\n","import { \n  Component, ElementRef, EventEmitter, HostListener, \n  Input, Output, TemplateRef, ViewChild, ViewContainerRef, ViewRef \n} from \"@angular/core\";\n\nlet submenuId = 0;\n\n@Component({\n  selector: `button[usaHeaderSubmenu]`,\n  host: {\n    class: `usa-accordion__button usa-nav__link`,\n    '[attr.aria-expanded]': 'selected',\n    '[attr.aria-controls]': 'id', \n    '(click)': 'onClick()',\n  },\n  template: `\n    <span><ng-content></ng-content></span>\n    <ng-template #submenuView>\n      <div class=\"usa-nav__submenu\" [ngClass]=\"{'usa-megamenu': isMegamenu}\">\n        <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n      </div>\n    </ng-template>\n  `\n})\nexport class UsaHeaderSubmenuButton {\n  @ViewChild('submenuView') submenuTemplate: TemplateRef<any>;\n\n  /**\n   * Required Input - template reference of content to display within the megamenu\n   */\n  @Input() content: TemplateRef<any>;\n\n  /**\n   * Defines whether the content should be displayed as a megamenu rather than a menu.\n   * A megamenu will open a menu that expands the entire width of the page\n   * @default false\n   */\n  @Input() isMegamenu: boolean = false;\n\n  /**\n   * Whether the megamenu is open initially or not\n   * @default - false\n   */\n  @Input() selected = false;\n\n  /**\n   * Id for megamenu section\n   */\n  @Input() id = `usa-megamenu-nav-${submenuId++}`;\n\n  /**\n   * Output event emitted whenever the state of megamenu (opened or closed) changes.\n   */\n  @Output() selectedChange = new EventEmitter<boolean>();\n\n  /**\n   * Listener for click events anywhere in the DOM. If the click event was outside\n   * this submenu element, then close the submeny.\n   * @param $event - click event\n   */\n  @HostListener('document:click', ['$event'])\n  onDocumentClick($event) {\n    if (!this.selected || this.el.nativeElement.contains($event.target)) {\n      return;\n    }\n\n    this.selected = false;\n    this.detachContent();\n\n    this.selectedChange.emit(this.selected);\n  }\n\n  private _attachedViewRef: ViewRef;\n\n  constructor(\n    private el: ElementRef,\n    private viewContainer: ViewContainerRef,\n  ) {}\n\n  /**\n   * Toggles selected value when button is clicked. If the item is selected, then we should\n   * display the submenu. If the item is un-selected, then we should remove the submenu\n   */\n  onClick() {\n    this.selected = !this.selected;\n    this.selected ? this.attachContent() : this.detachContent();\n    this.selectedChange.emit(this.selected);\n  }\n\n  /**\n   * Attaches the submenu div as next sibling to button\n   */\n  attachContent() {\n    this._attachedViewRef = this.viewContainer.createEmbeddedView(this.submenuTemplate);\n  }\n\n  /**\n   * Removes dropdown content and detaches the created view container\n   */\n  detachContent() {\n    this._attachedViewRef.destroy();\n  }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UsaHeaderComponent } from './header.component';\nimport { \n  UsaHeaderPrimaryLinks, \n  UsaHeaderPrimaryExtra, \n  UsaHeaderSecondaryLinks, \n  UsaHeaderSecondaryExtra, \n  UsaHeaderPrimaryLinkTemplate, \n  UsaHeaderSecondaryLinkTemplate } from './header-selectors';\nimport { UsaHeaderSubmenuButton } from './header-submenu.component';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n  declarations: [\n    UsaHeaderComponent,\n    UsaHeaderPrimaryLinks,\n    UsaHeaderSecondaryLinks,\n    UsaHeaderSubmenuButton,\n    UsaHeaderPrimaryExtra,\n    UsaHeaderSecondaryExtra,\n    UsaHeaderPrimaryLinkTemplate,\n    UsaHeaderSecondaryLinkTemplate,\n  ],\n  imports: [\n    CommonModule,\n    RouterModule,\n  ],\n  exports: [\n    UsaHeaderComponent,\n    UsaHeaderPrimaryLinks,\n    UsaHeaderSecondaryLinks,\n    UsaHeaderSubmenuButton,\n    UsaHeaderPrimaryExtra,\n    UsaHeaderSecondaryExtra,\n    UsaHeaderPrimaryLinkTemplate,\n    UsaHeaderSecondaryLinkTemplate,\n  ]\n})\nexport class UsaHeaderModule { }\n","import { Directive, Input, OnChanges, OnDestroy, OnInit } from \"@angular/core\";\nimport { Subscription } from \"rxjs\";\nimport { UsaComboBoxComponent } from \"../combo-box/combo-box.component\";\n\n\n@Directive({\n  selector: '[usa-time-picker]',\n  exportAs: 'usaTimePicker'\n})\nexport class UsaTimePicker implements OnInit, OnChanges, OnDestroy {\n\n  readonly MAX_TIME = 60 * 24 - 1;\n  readonly MIN_TIME = 0;\n\n  readonly LABEL_FIELD = 'label';\n  readonly VALUE_FIELD = 'value';\n\n  /** \n   * Defines minimum selectable time within a 24 hour window.\n   * This can be a date object or a string in hh:mm in 24-hour format.\n   * The default min time is 00:00\n   */\n  @Input() minTime: Date | string = '00:00';\n\n  /**\n   * Defines the maximum selectable time within a 24 hour window.\n   * This can be a date object or a string in hh:mm in 24-hour format.\n   * The default max time is 23:59\n   */\n  @Input() maxTime: Date | string = '23:59';\n\n  /**\n   * The number of minutes between options. The minimum value is 1.\n   * The default value is 30\n   */\n  @Input() timeStep: number = 30;\n\n  /**\n   * Filter function for when user types in input. This function\n   * takes two parameters, current user input, and list of time\n   * to parse input over. It should return a number which represents\n   * the index within the values to select based on user input.\n   * Index of -1 indicates no selection. A default filter function\n   * is provided by the component, but a custom one can be passed in\n   * if desired.\n   */\n  @Input() filterBy: (input: string, values: string[]) => number;\n\n  _inputChangeSubscription: Subscription;\n\n  constructor(\n    private hostComboBox: UsaComboBoxComponent,\n  ) {\n    this._inputChangeSubscription = new Subscription();\n  }\n\n  ngOnChanges() {\n    if (!this.hostComboBox) return;\n\n    this.initializeDropdownItems();\n  }\n\n  ngOnInit() {\n    const wrapperDiv: HTMLDivElement = this.hostComboBox.el.nativeElement.querySelector('.usa-combo-box');\n    wrapperDiv.classList.add('usa-time-picker');\n    this.initializeDropdownItems();\n\n    const subscription = this.hostComboBox.changeEvent.subscribe(((value) => {\n      if (!this.hostComboBox.comboBoxDropdown) return;\n\n      const mappedItems = this.hostComboBox.items.map(item => item[this.LABEL_FIELD]);\n      let index = -1;\n      if (this.filterBy) {\n        index = this.filterBy(value, mappedItems);\n      } else {\n        index = this.defaultFilter(value, mappedItems);\n      }\n\n      this.hostComboBox.comboBoxDropdown.highlightItem(index);\n    }).bind(this));\n\n    this._inputChangeSubscription.add(subscription);\n  }\n\n  ngOnDestroy() {\n    this._inputChangeSubscription.unsubscribe();\n  }\n\n  /**\n   * Initializes dropdown values for timepixker as well as filter function\n   * to use\n   */\n  private initializeDropdownItems() {\n    this.hostComboBox.items = this.genetateItems();\n    this.hostComboBox.labelField = this.LABEL_FIELD;\n    this.hostComboBox.valueField = this.VALUE_FIELD;\n  }\n\n  /**\n   * Generates list of times to display to the user.\n   * This list is created based on user's min/max inputs\n   * as well as time step\n   * @returns - list of {label, value} pair of time to display in dropdown\n   */\n  private genetateItems() {\n    const items = [];\n    const minTime = Math.max(\n      this.MIN_TIME,\n      this.parseTimeString(this.minTime) || this.MIN_TIME\n    );\n    const maxTime = Math.min(\n      this.MAX_TIME,\n      this.parseTimeString(this.maxTime) || this.MAX_TIME\n    );\n\n    for (let time = minTime; time <= maxTime; time += this.timeStep) {\n      const { minute, hour24, hour12, ampm } = this.getTimeContext(time);\n      const option = {};\n      option[this.VALUE_FIELD] = `${this.padZeros(hour24, 2)}:${this.padZeros(minute, 2)}`;\n      option[this.LABEL_FIELD] = `${hour12}:${this.padZeros(minute, 2)}${ampm}`;\n\n      items.push(option);\n    }\n\n    return items;\n  }\n\n  /**\n   * Adds additional zeros if needed\n   * @param value \n   * @param length \n   * @returns \n   */\n  private padZeros(value: number, length: number) {\n    return `0000${value}`.slice(-length);\n  }\n\n  /**\n   * Given minuutes, parses number of hours and minutes to represent that time.\n   * IE - 0 minutes would be 0:00 AM, 60 minutes would be 1:00 AM, etc\n   * @param minutes \n   */\n  private getTimeContext(minutes: number): {minute: number, hour24: number, hour12: number, ampm: string} {\n    const minute = minutes % 60;\n    const hour24 = Math.floor(minutes / 60);\n    const hour12 = hour24 % 12 || 12;\n    const ampm = hour24 < 12 ? \"am\" : \"pm\";\n\n    return {\n      minute,\n      hour24,\n      hour12,\n      ampm,\n    };\n  };\n\n  /**\n   * Parse a string of hh:mm into minutes\n   *\n   * @param {string} timeStr the time string to parse\n   * @returns {number} the number of minutes\n   */\n  private parseTimeString(timeStr) {\n    let minutes;\n\n    if (timeStr) {\n      const [hours, mins] = timeStr.split(\":\").map((str) => {\n        let value;\n        const parsed = parseInt(str, 10);\n        if (!Number.isNaN(parsed)) value = parsed;\n        return value;\n      });\n\n      if (hours != null && mins != null) {\n        minutes = hours * 60 + mins;\n      }\n    }\n\n    return minutes;\n  };\n\n  /**\n   * Default filter search if one is not provided. Used to find\n   * time within dropdown values that best matches user input\n   * @param input - user input\n   * @param values - list of values to search\n   * @returns - index in values list if match is found, -1 otherwise\n   */\n  defaultFilter(input: string, values: string[]) {\n    if (!input || !input.length) return -1;\n    return values.findIndex(value => value.includes(input));\n  }\n}","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { UsaComboboxModule } from \"../combo-box/combo-box.module\";\nimport { UsaTimePicker } from \"./time-picker\";\n\n@NgModule({\n  imports: [CommonModule, UsaComboboxModule],\n  declarations: [UsaTimePicker],\n  exports: [UsaTimePicker, UsaComboboxModule]\n})\nexport class UsaTimePickerModule {}\n","import { AfterViewInit, Directive, ElementRef, Input, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n  selector: 'input[prefix], input[suffix]'\n})\nexport class UsaInputAffixDirective implements AfterViewInit {\n\n  @Input() prefix: TemplateRef<any> | string;\n  @Input() suffix: TemplateRef<any> | string;\n\n  constructor(\n    private el: ElementRef,\n    private renderer: Renderer2,\n    private viewContainer: ViewContainerRef) {\n  }\n\n  ngAfterViewInit(){\n\n    const parent = this.renderer.parentNode(this.el.nativeElement);\n\n    //Need next sibling to ensure generated usa-input-group is inserted into the same place on the page and input is expected to be\n    const nextSibling = this.renderer.nextSibling(this.el.nativeElement);\n\n    let prefixElement, suffixElement;\n    if(this.prefix){\n      prefixElement = this.handleAffix(this.prefix, 'usa-input-prefix')\n    }\n    if(this.suffix){\n      suffixElement = this.handleAffix(this.suffix, 'usa-input-suffix')\n    }\n    // Return early if neither prefix nor suffix provided\n    if(!this.prefix && !this.suffix){\n      return;\n    }\n\n    const inputGroupDiv = document.createElement('div');\n    this.renderer.addClass(inputGroupDiv,'usa-input-group')\n\n    // Apply input class in case only directive was applied\n    this.renderer.addClass(this.el.nativeElement, 'usa-input')\n\n    if(this.prefix){\n      this.renderer.appendChild(inputGroupDiv, prefixElement);\n    }\n    this.renderer.appendChild(inputGroupDiv, this.el.nativeElement);\n    if(this.suffix){\n      this.renderer.appendChild(inputGroupDiv, suffixElement);\n    }\n\n    this.renderer.insertBefore(parent, inputGroupDiv, nextSibling)\n\n  }\n\n  /**\n   *\n   * @param affix Template or string to be displayed as prefix or suffix.\n   * @param affixClass USWDS class to apply to element\n   */\n  handleAffix(affix: TemplateRef<any> | string, affixClass: string){\n    let affixView, affixElement;\n    if(affix instanceof TemplateRef){\n      affixView = this.viewContainer.createEmbeddedView(affix);\n      affixElement = affixView.rootNodes[0];\n    }\n\n    // If text passed into template, need to wrap in element for USWDS CSS to kick in.\n    if(affixView?.rootNodes[0].nodeName === '#text'){\n      const div = document.createElement('div');\n      this.renderer.appendChild(div, affixElement);\n      affixElement = div;\n    // If string passed in, insert into element for CSS to apply to\n    } else if(typeof affix === 'string'){\n      const div = document.createElement('div');\n      div.innerText = affix;\n      affixElement = div;\n    }\n    this.renderer.addClass(affixElement, affixClass)\n    return affixElement;\n  }\n\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UsaInputAffixDirective } from './affix.directive';\n\n\n\n@NgModule({\n  declarations: [\n    UsaInputAffixDirective\n  ],\n  imports: [\n    CommonModule,\n  ],\n  exports: [\n    UsaInputAffixDirective\n  ]\n})\nexport class UsaAffixModule { }\n","/*\n * Public API Surface of usa-components\n */\n\n// Accordion\nexport * from './lib/accordion/accordion-items';\nexport * from './lib/accordion/accordion.component';\nexport * from './lib/accordion/accordion.module';\n\n// Button Group\nexport * from './lib/button-group/button-group.component';\nexport * from './lib/button-group/button-group-item.component';\nexport * from './lib/button-group/button-group.module';\n\n// Breadcrumb\nexport * from './lib/breadcrumb/breadcrumb.component';\nexport * from './lib/breadcrumb/breadcrumb.module';\n\n// Card\nexport * from './lib/card/card-body.component';\nexport * from './lib/card/card-footer.component';\nexport * from './lib/card/card-group.component';\nexport * from './lib/card/card-header.component';\nexport * from './lib/card/card-media.component';\nexport * from './lib/card/card.component';\nexport * from './lib/card/card.module';\n\n// Checkbox\nexport * from './lib/checkbox/checkbox.component';\nexport * from './lib/checkbox/checkbox.module';\n\n// Combo Box\nexport * from './lib/combo-box/combo-box.component';\nexport * from './lib/combo-box/combo-box.module';\n\n// Combo Box List\nexport * from './lib/combo-box-list/combo-box-list.module';\nexport * from './lib/combo-box-list/combo-box-list.component';\n\n// Dropdown\nexport * from './lib/dropdown/dropdown-options.model';\nexport * from './lib/dropdown/dropdown.component';\nexport * from './lib/dropdown/dropdown.module';\n\n// File Input\nexport * from './lib/file-input/file-input.component';\nexport * from './lib/file-input/file-input.module';\nexport * from './lib/file-input/file-input.config';\nexport * from './lib/file-input/file-preview.directive';\n\n// Modal\nexport * from './lib/modal/modal-dismiss-reasons';\nexport * from './lib/modal/modal-ref';\nexport * from './lib/modal/modal';\nexport * from './lib/modal/modal-wrapper';\nexport * from './lib/modal/modal-window';\nexport * from './lib/modal/modal.module';\nexport * from './lib/modal/modal-config';\n\n// Sidenav\nexport * from './lib/sidenav/sidenav.model';\nexport * from './lib/sidenav/sidenav.component';\nexport * from './lib/sidenav/sidenav.module';\n\n//search\nexport * from './lib/search/search.component';\nexport * from './lib/search/search.module';\n\n// Step Indicator\nexport * from './lib/step-indicator/step-indicator.model';\nexport * from './lib/step-indicator/step-indicator.config';\nexport * from './lib/step-indicator/step-indicator.component';\nexport * from './lib/step-indicator/step-indicator-header.component';\nexport * from './lib/step-indicator/step-indicator.module';\n\n// Table\nexport * from './lib/table/models';\nexport * from './lib/table/table-data';\nexport * from './lib/table/table-header';\nexport * from './lib/table/table-sort.component';\nexport * from './lib/table/table.component';\nexport * from './lib/table/table.module';\nexport * from './lib/table/highlight-on-hover.directive';\n\n//TextArea\nexport * from './lib/textarea/textarea.component';\nexport * from './lib/textarea/textarea.module';\n\n// Tooltip\nexport * from './lib/tooltip/tooltip.directive';\nexport * from './lib/tooltip/tooltip.module';\n\n// DatePicker\nexport * from './lib/datepicker/index';\n\n// Character Counter\nexport * from './lib/character-count/character-count.module';\nexport * from './lib/character-count/character-count.directive';\n\n// Radio\nexport * from './lib/radio/radio.module';\nexport * from './lib/radio/radio.component';\nexport * from './lib/radio/radio-group.component';\n\n// Header\nexport * from './lib/header/index';\n\n// Time Picker\nexport * from './lib/time-picker/time-picker';\nexport * from './lib/time-picker/time-picker.module';\n\n// Utility\nexport * from './lib/util/navigation';\n\nexport * from './lib/input/affix.module';\nexport * from './lib/input/affix.directive';\n\nexport * from './lib/form-field/form-field.component';\nexport * from './lib/form-field/form-field.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","isEnd","i1.UsaAccordionConfig","i2","i3.UsaAccordionItem","i2.UsaLinkTemplateComponent","i2.UsaComboboxList","i1.FileInputConfig","i3.UsaFilePreviewDirective","i1.ScrollBar","i1.UsaModalStack","i2.UsaModalConfig","i1.UsaStepIndicatorConfig","i1.UsaStepIndicatorComponent","i1.UsaTableConfig","i3.HighlightOnHoverDirective","i1","i2.HoverClassDirective","i1.DateAdapter","i3.UsaCalendarBody","i2.UsaCalendarBody","i3.UsaMonthView","i4.UsaYearView","i5.UsaMultiYearView","i3","i4.UsaCalendar","i2.DateAdapter","i1.UsaDateSelectionModel","observableOf","i1.UsaComboBoxComponent"],"mappings":"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"}