@angular/material 21.1.0-next.2 → 21.1.0-next.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/core/focus-indicators/_private.scss +1 -1
- package/fesm2022/_date-formats-chunk.mjs.map +1 -1
- package/fesm2022/_error-state-chunk.mjs.map +1 -1
- package/fesm2022/_form-field-chunk.mjs +10 -10
- package/fesm2022/_form-field-chunk.mjs.map +1 -1
- package/fesm2022/_icon-button-chunk.mjs +2 -2
- package/fesm2022/_icon-button-chunk.mjs.map +1 -1
- package/fesm2022/_icon-registry-chunk.mjs +1 -1
- package/fesm2022/_icon-registry-chunk.mjs.map +1 -1
- package/fesm2022/_internal-form-field-chunk.mjs +1 -1
- package/fesm2022/_internal-form-field-chunk.mjs.map +1 -1
- package/fesm2022/_option-chunk.mjs.map +1 -1
- package/fesm2022/_public-api-chunk.mjs.map +1 -1
- package/fesm2022/_ripple-chunk.mjs +5 -5
- package/fesm2022/_ripple-chunk.mjs.map +1 -1
- package/fesm2022/_structural-styles-chunk.mjs +2 -2
- package/fesm2022/_structural-styles-chunk.mjs.map +1 -1
- package/fesm2022/_tooltip-chunk.mjs +15 -9
- package/fesm2022/_tooltip-chunk.mjs.map +1 -1
- package/fesm2022/autocomplete.mjs +8 -8
- package/fesm2022/autocomplete.mjs.map +1 -1
- package/fesm2022/badge.mjs +2 -2
- package/fesm2022/badge.mjs.map +1 -1
- package/fesm2022/bottom-sheet.mjs +1 -1
- package/fesm2022/bottom-sheet.mjs.map +1 -1
- package/fesm2022/button-toggle.mjs +6 -6
- package/fesm2022/button-toggle.mjs.map +1 -1
- package/fesm2022/button.mjs +7 -7
- package/fesm2022/button.mjs.map +1 -1
- package/fesm2022/checkbox.mjs +4 -4
- package/fesm2022/checkbox.mjs.map +1 -1
- package/fesm2022/chips.mjs +9 -9
- package/fesm2022/chips.mjs.map +1 -1
- package/fesm2022/core.mjs +1 -1
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/datepicker.mjs +52 -52
- package/fesm2022/datepicker.mjs.map +1 -1
- package/fesm2022/dialog.mjs +1 -1
- package/fesm2022/dialog.mjs.map +1 -1
- package/fesm2022/expansion.mjs +2 -2
- package/fesm2022/expansion.mjs.map +1 -1
- package/fesm2022/grid-list.mjs.map +1 -1
- package/fesm2022/icon.mjs +2 -2
- package/fesm2022/icon.mjs.map +1 -1
- package/fesm2022/input.mjs +5 -5
- package/fesm2022/input.mjs.map +1 -1
- package/fesm2022/list-testing.mjs.map +1 -1
- package/fesm2022/list.mjs +10 -10
- package/fesm2022/list.mjs.map +1 -1
- package/fesm2022/menu.mjs +8 -2
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/paginator.mjs.map +1 -1
- package/fesm2022/progress-spinner.mjs.map +1 -1
- package/fesm2022/radio.mjs +2 -2
- package/fesm2022/radio.mjs.map +1 -1
- package/fesm2022/select.mjs +8 -3
- package/fesm2022/select.mjs.map +1 -1
- package/fesm2022/sidenav.mjs +8 -8
- package/fesm2022/sidenav.mjs.map +1 -1
- package/fesm2022/slide-toggle.mjs +4 -4
- package/fesm2022/slide-toggle.mjs.map +1 -1
- package/fesm2022/slider.mjs +5 -5
- package/fesm2022/slider.mjs.map +1 -1
- package/fesm2022/snack-bar.mjs.map +1 -1
- package/fesm2022/sort.mjs.map +1 -1
- package/fesm2022/stepper.mjs +7 -7
- package/fesm2022/stepper.mjs.map +1 -1
- package/fesm2022/table.mjs +2 -2
- package/fesm2022/table.mjs.map +1 -1
- package/fesm2022/tabs.mjs +5 -5
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/timepicker.mjs +1 -1
- package/fesm2022/timepicker.mjs.map +1 -1
- package/fesm2022/toolbar.mjs.map +1 -1
- package/fesm2022/tooltip.mjs +1 -1
- package/fesm2022/tree.mjs.map +1 -1
- package/package.json +2 -2
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/setup-project.js +1 -39
- package/schematics/ng-add/setup-project.js.map +1 -1
- package/schematics/ng-add/theming/{create-custom-theme.d.ts → create-theme.d.ts} +2 -2
- package/schematics/ng-add/theming/{create-custom-theme.js → create-theme.js} +6 -4
- package/schematics/ng-add/theming/create-theme.js.map +1 -0
- package/schematics/ng-add/theming/theming.js +15 -15
- package/schematics/ng-add/theming/theming.js.map +1 -1
- package/types/_tooltip-chunk.d.ts +313 -0
- package/types/menu.d.ts +5 -0
- package/types/paginator.d.ts +1 -0
- package/types/radio.d.ts +3 -3
- package/types/select.d.ts +2 -1
- package/types/stepper.d.ts +4 -4
- package/types/table.d.ts +4 -2
- package/types/timepicker.d.ts +2 -2
- package/types/tooltip.d.ts +7 -297
- package/schematics/ng-add/theming/create-custom-theme.js.map +0 -1
package/fesm2022/icon.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n AfterViewChecked,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ErrorHandler,\n inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n HostAttributeToken,\n DOCUMENT,\n} from '@angular/core';\nimport {ThemePalette} from '../core';\nimport {Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {MatIconRegistry} from './icon-registry';\n\n/** Default options for `mat-icon`. */\nexport interface MatIconDefaultOptions {\n /**\n * Theme color of the icon. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/icon/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n /** Font set that the icon is a part of. */\n fontSet?: string;\n}\n\n/** Injection token to be used to override the default options for `mat-icon`. */\nexport const MAT_ICON_DEFAULT_OPTIONS = new InjectionToken<MatIconDefaultOptions>(\n 'MAT_ICON_DEFAULT_OPTIONS',\n);\n\n/**\n * Injection token used to provide the current location to `MatIcon`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nexport const MAT_ICON_LOCATION = new InjectionToken<MatIconLocation>('mat-icon-location', {\n providedIn: 'root',\n factory: () => {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => (_location ? _location.pathname + _location.search : ''),\n };\n },\n});\n\n/**\n * Stubbed out location for `MatIcon`.\n * @docs-private\n */\nexport interface MatIconLocation {\n getPathname: () => string;\n}\n\n/** SVG attributes that accept a FuncIRI (e.g. `url(<something>)`). */\nconst funcIriAttributes = [\n 'clip-path',\n 'color-profile',\n 'src',\n 'cursor',\n 'fill',\n 'filter',\n 'marker',\n 'marker-start',\n 'marker-mid',\n 'marker-end',\n 'mask',\n 'stroke',\n];\n\n/** Selector that can be used to find all elements that are using a `FuncIRI`. */\nconst funcIriAttributeSelector = funcIriAttributes.map(attr => `[${attr}]`).join(', ');\n\n/** Regex that can be used to extract the id out of a FuncIRI. */\nconst funcIriPattern = /^url\\(['\"]?#(.*?)['\"]?\\)$/;\n\n/**\n * Component to display an icon. It can be used in the following ways:\n *\n * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the\n * addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of\n * MatIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format\n * \"[namespace]:[name]\", if not the value will be the name of an icon in the default namespace.\n * Examples:\n * `<mat-icon svgIcon=\"left-arrow\"></mat-icon>\n * <mat-icon svgIcon=\"animals:cat\"></mat-icon>`\n *\n * - Use a font ligature as an icon by putting the ligature text in the `fontIcon` attribute or the\n * content of the `<mat-icon>` component. If you register a custom font class, don't forget to also\n * include the special class `mat-ligature-font`. It is recommended to use the attribute alternative\n * to prevent the ligature text to be selectable and to appear in search engine results.\n * By default, the Material icons font is used as described at\n * http://google.github.io/material-design-icons/#icon-font-for-the-web. You can specify an\n * alternate font by setting the fontSet input to either the CSS class to apply to use the\n * desired font, or to an alias previously registered with MatIconRegistry.registerFontClassAlias.\n * Examples:\n * `<mat-icon fontIcon=\"home\"></mat-icon>\n * <mat-icon>home</mat-icon>\n * <mat-icon fontSet=\"myfont\" fontIcon=\"sun\"></mat-icon>\n * <mat-icon fontSet=\"myfont\">sun</mat-icon>`\n *\n * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the\n * font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a\n * CSS class which causes the glyph to be displayed via a :before selector, as in\n * https://fontawesome-v4.github.io/examples/\n * Example:\n * `<mat-icon fontSet=\"fa\" fontIcon=\"alarm\"></mat-icon>`\n */\n@Component({\n template: '<ng-content></ng-content>',\n selector: 'mat-icon',\n exportAs: 'matIcon',\n styleUrl: 'icon.css',\n host: {\n 'role': 'img',\n 'class': 'mat-icon notranslate',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n '[attr.data-mat-icon-type]': '_usingFontIcon() ? \"font\" : \"svg\"',\n '[attr.data-mat-icon-name]': '_svgName || fontIcon',\n '[attr.data-mat-icon-namespace]': '_svgNamespace || fontSet',\n '[attr.fontIcon]': '_usingFontIcon() ? fontIcon : null',\n '[class.mat-icon-inline]': 'inline',\n '[class.mat-icon-no-color]': 'color !== \"primary\" && color !== \"accent\" && color !== \"warn\"',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatIcon implements OnInit, AfterViewChecked, OnDestroy {\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _iconRegistry = inject(MatIconRegistry);\n private _location = inject<MatIconLocation>(MAT_ICON_LOCATION);\n private readonly _errorHandler = inject(ErrorHandler);\n private _defaultColor: ThemePalette;\n\n /**\n * Theme color of the icon. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/icon/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input()\n get color() {\n return this._color || this._defaultColor;\n }\n set color(value: string | null | undefined) {\n this._color = value;\n }\n private _color: string | null | undefined;\n\n /**\n * Whether the icon should be inlined, automatically sizing the icon to match the font size of\n * the element the icon is contained in.\n */\n @Input({transform: booleanAttribute})\n inline: boolean = false;\n\n /** Name of the icon in the SVG icon set. */\n @Input()\n get svgIcon(): string {\n return this._svgIcon;\n }\n set svgIcon(value: string) {\n if (value !== this._svgIcon) {\n if (value) {\n this._updateSvgIcon(value);\n } else if (this._svgIcon) {\n this._clearSvgElement();\n }\n this._svgIcon = value;\n }\n }\n private _svgIcon: string;\n\n /** Font set that the icon is a part of. */\n @Input()\n get fontSet(): string {\n return this._fontSet;\n }\n set fontSet(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontSet) {\n this._fontSet = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontSet: string;\n\n /** Name of an icon within a font set. */\n @Input()\n get fontIcon(): string {\n return this._fontIcon;\n }\n set fontIcon(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontIcon) {\n this._fontIcon = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontIcon: string;\n\n private _previousFontSetClass: string[] = [];\n private _previousFontIconClass: string;\n\n _svgName: string | null;\n _svgNamespace: string | null;\n\n /** Keeps track of the current page path. */\n private _previousPath?: string;\n\n /** Keeps track of the elements and attributes that we've prefixed with the current path. */\n private _elementsWithExternalReferences?: Map<Element, {name: string; value: string}[]>;\n\n /** Subscription to the current in-progress SVG icon request. */\n private _currentIconFetch = Subscription.EMPTY;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const ariaHidden = inject(new HostAttributeToken('aria-hidden'), {optional: true});\n const defaults = inject<MatIconDefaultOptions>(MAT_ICON_DEFAULT_OPTIONS, {optional: true});\n\n if (defaults) {\n if (defaults.color) {\n this.color = this._defaultColor = defaults.color;\n }\n\n if (defaults.fontSet) {\n this.fontSet = defaults.fontSet;\n }\n }\n\n // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n // the right thing to do for the majority of icon use-cases.\n if (!ariaHidden) {\n this._elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n\n /**\n * Splits an svgIcon binding value into its icon set and icon name components.\n * Returns a 2-element array of [(icon set), (icon name)].\n * The separator for the two fields is ':'. If there is no separator, an empty\n * string is returned for the icon set and the entire value is returned for\n * the icon name. If the argument is falsy, returns an array of two empty strings.\n * Throws an error if the name contains two or more ':' separators.\n * Examples:\n * `'social:cake' -> ['social', 'cake']\n * 'penguin' -> ['', 'penguin']\n * null -> ['', '']\n * 'a:b:c' -> (throws Error)`\n */\n private _splitIconName(iconName: string): [string, string] {\n if (!iconName) {\n return ['', ''];\n }\n const parts = iconName.split(':');\n switch (parts.length) {\n case 1:\n return ['', parts[0]]; // Use default namespace.\n case 2:\n return <[string, string]>parts;\n default:\n throw Error(`Invalid icon name: \"${iconName}\"`); // TODO: add an ngDevMode check\n }\n }\n\n ngOnInit() {\n // Update font classes because ngOnChanges won't be called if none of the inputs are present,\n // e.g. <mat-icon>arrow</mat-icon> In this case we need to add a CSS class for the default font.\n this._updateFontIconClasses();\n }\n\n ngAfterViewChecked() {\n const cachedElements = this._elementsWithExternalReferences;\n\n if (cachedElements && cachedElements.size) {\n const newPath = this._location.getPathname();\n\n // We need to check whether the URL has changed on each change detection since\n // the browser doesn't have an API that will let us react on link clicks and\n // we can't depend on the Angular router. The references need to be updated,\n // because while most browsers don't care whether the URL is correct after\n // the first render, Safari will break if the user navigates to a different\n // page and the SVG isn't re-rendered.\n if (newPath !== this._previousPath) {\n this._previousPath = newPath;\n this._prependPathToReferences(newPath);\n }\n }\n }\n\n ngOnDestroy() {\n this._currentIconFetch.unsubscribe();\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n }\n\n _usingFontIcon(): boolean {\n return !this.svgIcon;\n }\n\n private _setSvgElement(svg: SVGElement) {\n this._clearSvgElement();\n\n // Note: we do this fix here, rather than the icon registry, because the\n // references have to point to the URL at the time that the icon was created.\n const path = this._location.getPathname();\n this._previousPath = path;\n this._cacheChildrenWithExternalReferences(svg);\n this._prependPathToReferences(path);\n this._elementRef.nativeElement.appendChild(svg);\n }\n\n private _clearSvgElement() {\n const layoutElement: HTMLElement = this._elementRef.nativeElement;\n let childCount = layoutElement.childNodes.length;\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n\n // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\n // we can't use innerHTML, because IE will throw if the element has a data binding.\n while (childCount--) {\n const child = layoutElement.childNodes[childCount];\n\n // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\n // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\n if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n child.remove();\n }\n }\n }\n\n private _updateFontIconClasses() {\n if (!this._usingFontIcon()) {\n return;\n }\n\n const elem: HTMLElement = this._elementRef.nativeElement;\n const fontSetClasses = (\n this.fontSet\n ? this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/)\n : this._iconRegistry.getDefaultFontSetClass()\n ).filter(className => className.length > 0);\n\n this._previousFontSetClass.forEach(className => elem.classList.remove(className));\n fontSetClasses.forEach(className => elem.classList.add(className));\n this._previousFontSetClass = fontSetClasses;\n\n if (\n this.fontIcon !== this._previousFontIconClass &&\n !fontSetClasses.includes('mat-ligature-font')\n ) {\n if (this._previousFontIconClass) {\n elem.classList.remove(this._previousFontIconClass);\n }\n if (this.fontIcon) {\n elem.classList.add(this.fontIcon);\n }\n this._previousFontIconClass = this.fontIcon;\n }\n }\n\n /**\n * Cleans up a value to be used as a fontIcon or fontSet.\n * Since the value ends up being assigned as a CSS class, we\n * have to trim the value and omit space-separated values.\n */\n private _cleanupFontValue(value: string) {\n return typeof value === 'string' ? value.trim().split(' ')[0] : value;\n }\n\n /**\n * Prepends the current path to all elements that have an attribute pointing to a `FuncIRI`\n * reference. This is required because WebKit browsers require references to be prefixed with\n * the current path, if the page has a `base` tag.\n */\n private _prependPathToReferences(path: string) {\n const elements = this._elementsWithExternalReferences;\n\n if (elements) {\n elements.forEach((attrs, element) => {\n attrs.forEach(attr => {\n element.setAttribute(attr.name, `url('${path}#${attr.value}')`);\n });\n });\n }\n }\n\n /**\n * Caches the children of an SVG element that have `url()`\n * references that we need to prefix with the current path.\n */\n private _cacheChildrenWithExternalReferences(element: SVGElement) {\n const elementsWithFuncIri = element.querySelectorAll(funcIriAttributeSelector);\n const elements = (this._elementsWithExternalReferences =\n this._elementsWithExternalReferences || new Map());\n\n for (let i = 0; i < elementsWithFuncIri.length; i++) {\n funcIriAttributes.forEach(attr => {\n const elementWithReference = elementsWithFuncIri[i];\n const value = elementWithReference.getAttribute(attr);\n const match = value ? value.match(funcIriPattern) : null;\n\n if (match) {\n let attributes = elements.get(elementWithReference);\n\n if (!attributes) {\n attributes = [];\n elements.set(elementWithReference, attributes);\n }\n\n attributes!.push({name: attr, value: match[1]});\n }\n });\n }\n }\n\n /** Sets a new SVG icon with a particular name. */\n private _updateSvgIcon(rawName: string | undefined) {\n this._svgNamespace = null;\n this._svgName = null;\n this._currentIconFetch.unsubscribe();\n\n if (rawName) {\n const [namespace, iconName] = this._splitIconName(rawName);\n\n if (namespace) {\n this._svgNamespace = namespace;\n }\n\n if (iconName) {\n this._svgName = iconName;\n }\n\n this._currentIconFetch = this._iconRegistry\n .getNamedSvgIcon(iconName, namespace)\n .pipe(take(1))\n .subscribe(\n svg => this._setSvgElement(svg),\n (err: Error) => {\n const errorMessage = `Error retrieving icon ${namespace}:${iconName}! ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n },\n );\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatIcon} from './icon';\n\n@NgModule({\n imports: [MatIcon],\n exports: [MatIcon, BidiModule],\n})\nexport class MatIconModule {}\n"],"names":["MAT_ICON_DEFAULT_OPTIONS","InjectionToken","MAT_ICON_LOCATION","providedIn","factory","_document","inject","DOCUMENT","_location","location","getPathname","pathname","search","funcIriAttributes","funcIriAttributeSelector","map","attr","join","funcIriPattern","MatIcon","_elementRef","ElementRef","_iconRegistry","MatIconRegistry","_errorHandler","ErrorHandler","_defaultColor","color","_color","value","inline","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","newValue","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_previousFontSetClass","_previousFontIconClass","_svgName","_svgNamespace","_previousPath","_elementsWithExternalReferences","_currentIconFetch","Subscription","EMPTY","constructor","ariaHidden","HostAttributeToken","optional","defaults","nativeElement","setAttribute","_splitIconName","iconName","parts","split","length","Error","ngOnInit","ngAfterViewChecked","cachedElements","size","newPath","_prependPathToReferences","ngOnDestroy","unsubscribe","clear","_usingFontIcon","_setSvgElement","svg","path","_cacheChildrenWithExternalReferences","appendChild","layoutElement","childCount","childNodes","child","nodeType","nodeName","toLowerCase","remove","elem","fontSetClasses","classNameForFontAlias","getDefaultFontSetClass","filter","className","forEach","classList","add","includes","trim","elements","attrs","element","name","elementsWithFuncIri","querySelectorAll","Map","i","elementWithReference","getAttribute","match","attributes","get","set","push","rawName","namespace","getNamedSvgIcon","pipe","take","subscribe","err","errorMessage","message","handleError","deps","target","i0","ɵɵFactoryTarget","Component","isStandalone","selector","inputs","booleanAttribute","host","properties","classAttribute","exportAs","ngImport","template","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","Input","transform","MatIconModule","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","type","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":";;;;;;;;;;;MA6CaA,wBAAwB,GAAG,IAAIC,cAAc,CACxD,0BAA0B;MAQfC,iBAAiB,GAAG,IAAID,cAAc,CAAkB,mBAAmB,EAAE;AACxFE,EAAAA,UAAU,EAAE,MAAM;EAClBC,OAAO,EAAEA,MAAK;AACZ,IAAA,MAAMC,SAAS,GAAGC,MAAM,CAACC,QAAQ,CAAC;IAClC,MAAMC,SAAS,GAAGH,SAAS,GAAGA,SAAS,CAACI,QAAQ,GAAG,IAAI;IAEvD,OAAO;AAGLC,MAAAA,WAAW,EAAEA,MAAOF,SAAS,GAAGA,SAAS,CAACG,QAAQ,GAAGH,SAAS,CAACI,MAAM,GAAG;KACzE;AACH;AACD,CAAA;AAWD,MAAMC,iBAAiB,GAAG,CACxB,WAAW,EACX,eAAe,EACf,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,QAAQ,CACT;AAGD,MAAMC,wBAAwB,GAAGD,iBAAiB,CAACE,GAAG,CAACC,IAAI,IAAI,CAAIA,CAAAA,EAAAA,IAAI,GAAG,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AAGtF,MAAMC,cAAc,GAAG,2BAA2B;MAqDrCC,OAAO,CAAA;AACTC,EAAAA,WAAW,GAAGd,MAAM,CAA0Be,UAAU,CAAC;AAC1DC,EAAAA,aAAa,GAAGhB,MAAM,CAACiB,eAAe,CAAC;AACvCf,EAAAA,SAAS,GAAGF,MAAM,CAAkBJ,iBAAiB,CAAC;AAC7CsB,EAAAA,aAAa,GAAGlB,MAAM,CAACmB,YAAY,CAAC;EAC7CC,aAAa;EASrB,IACIC,KAAKA,GAAA;AACP,IAAA,OAAO,IAAI,CAACC,MAAM,IAAI,IAAI,CAACF,aAAa;AAC1C;EACA,IAAIC,KAAKA,CAACE,KAAgC,EAAA;IACxC,IAAI,CAACD,MAAM,GAAGC,KAAK;AACrB;EACQD,MAAM;AAOdE,EAAAA,MAAM,GAAY,KAAK;EAGvB,IACIC,OAAOA,GAAA;IACT,OAAO,IAAI,CAACC,QAAQ;AACtB;EACA,IAAID,OAAOA,CAACF,KAAa,EAAA;AACvB,IAAA,IAAIA,KAAK,KAAK,IAAI,CAACG,QAAQ,EAAE;AAC3B,MAAA,IAAIH,KAAK,EAAE;AACT,QAAA,IAAI,CAACI,cAAc,CAACJ,KAAK,CAAC;AAC5B,OAAA,MAAO,IAAI,IAAI,CAACG,QAAQ,EAAE;QACxB,IAAI,CAACE,gBAAgB,EAAE;AACzB;MACA,IAAI,CAACF,QAAQ,GAAGH,KAAK;AACvB;AACF;EACQG,QAAQ;EAGhB,IACIG,OAAOA,GAAA;IACT,OAAO,IAAI,CAACC,QAAQ;AACtB;EACA,IAAID,OAAOA,CAACN,KAAa,EAAA;AACvB,IAAA,MAAMQ,QAAQ,GAAG,IAAI,CAACC,iBAAiB,CAACT,KAAK,CAAC;AAE9C,IAAA,IAAIQ,QAAQ,KAAK,IAAI,CAACD,QAAQ,EAAE;MAC9B,IAAI,CAACA,QAAQ,GAAGC,QAAQ;MACxB,IAAI,CAACE,sBAAsB,EAAE;AAC/B;AACF;EACQH,QAAQ;EAGhB,IACII,QAAQA,GAAA;IACV,OAAO,IAAI,CAACC,SAAS;AACvB;EACA,IAAID,QAAQA,CAACX,KAAa,EAAA;AACxB,IAAA,MAAMQ,QAAQ,GAAG,IAAI,CAACC,iBAAiB,CAACT,KAAK,CAAC;AAE9C,IAAA,IAAIQ,QAAQ,KAAK,IAAI,CAACI,SAAS,EAAE;MAC/B,IAAI,CAACA,SAAS,GAAGJ,QAAQ;MACzB,IAAI,CAACE,sBAAsB,EAAE;AAC/B;AACF;EACQE,SAAS;AAETC,EAAAA,qBAAqB,GAAa,EAAE;EACpCC,sBAAsB;EAE9BC,QAAQ;EACRC,aAAa;EAGLC,aAAa;EAGbC,+BAA+B;EAG/BC,iBAAiB,GAAGC,YAAY,CAACC,KAAK;AAI9CC,EAAAA,WAAAA,GAAA;IACE,MAAMC,UAAU,GAAG9C,MAAM,CAAC,IAAI+C,kBAAkB,CAAC,aAAa,CAAC,EAAE;AAACC,MAAAA,QAAQ,EAAE;AAAI,KAAC,CAAC;AAClF,IAAA,MAAMC,QAAQ,GAAGjD,MAAM,CAAwBN,wBAAwB,EAAE;AAACsD,MAAAA,QAAQ,EAAE;AAAK,KAAA,CAAC;AAE1F,IAAA,IAAIC,QAAQ,EAAE;MACZ,IAAIA,QAAQ,CAAC5B,KAAK,EAAE;QAClB,IAAI,CAACA,KAAK,GAAG,IAAI,CAACD,aAAa,GAAG6B,QAAQ,CAAC5B,KAAK;AAClD;MAEA,IAAI4B,QAAQ,CAACpB,OAAO,EAAE;AACpB,QAAA,IAAI,CAACA,OAAO,GAAGoB,QAAQ,CAACpB,OAAO;AACjC;AACF;IAIA,IAAI,CAACiB,UAAU,EAAE;MACf,IAAI,CAAChC,WAAW,CAACoC,aAAa,CAACC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;AACpE;AACF;EAeQC,cAAcA,CAACC,QAAgB,EAAA;IACrC,IAAI,CAACA,QAAQ,EAAE;AACb,MAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB;AACA,IAAA,MAAMC,KAAK,GAAGD,QAAQ,CAACE,KAAK,CAAC,GAAG,CAAC;IACjC,QAAQD,KAAK,CAACE,MAAM;AAClB,MAAA,KAAK,CAAC;AACJ,QAAA,OAAO,CAAC,EAAE,EAAEF,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,MAAA,KAAK,CAAC;AACJ,QAAA,OAAyBA,KAAK;AAChC,MAAA;AACE,QAAA,MAAMG,KAAK,CAAC,CAAuBJ,oBAAAA,EAAAA,QAAQ,GAAG,CAAC;AACnD;AACF;AAEAK,EAAAA,QAAQA,GAAA;IAGN,IAAI,CAACzB,sBAAsB,EAAE;AAC/B;AAEA0B,EAAAA,kBAAkBA,GAAA;AAChB,IAAA,MAAMC,cAAc,GAAG,IAAI,CAACnB,+BAA+B;AAE3D,IAAA,IAAImB,cAAc,IAAIA,cAAc,CAACC,IAAI,EAAE;MACzC,MAAMC,OAAO,GAAG,IAAI,CAAC5D,SAAS,CAACE,WAAW,EAAE;AAQ5C,MAAA,IAAI0D,OAAO,KAAK,IAAI,CAACtB,aAAa,EAAE;QAClC,IAAI,CAACA,aAAa,GAAGsB,OAAO;AAC5B,QAAA,IAAI,CAACC,wBAAwB,CAACD,OAAO,CAAC;AACxC;AACF;AACF;AAEAE,EAAAA,WAAWA,GAAA;AACT,IAAA,IAAI,CAACtB,iBAAiB,CAACuB,WAAW,EAAE;IAEpC,IAAI,IAAI,CAACxB,+BAA+B,EAAE;AACxC,MAAA,IAAI,CAACA,+BAA+B,CAACyB,KAAK,EAAE;AAC9C;AACF;AAEAC,EAAAA,cAAcA,GAAA;IACZ,OAAO,CAAC,IAAI,CAAC1C,OAAO;AACtB;EAEQ2C,cAAcA,CAACC,GAAe,EAAA;IACpC,IAAI,CAACzC,gBAAgB,EAAE;IAIvB,MAAM0C,IAAI,GAAG,IAAI,CAACpE,SAAS,CAACE,WAAW,EAAE;IACzC,IAAI,CAACoC,aAAa,GAAG8B,IAAI;AACzB,IAAA,IAAI,CAACC,oCAAoC,CAACF,GAAG,CAAC;AAC9C,IAAA,IAAI,CAACN,wBAAwB,CAACO,IAAI,CAAC;IACnC,IAAI,CAACxD,WAAW,CAACoC,aAAa,CAACsB,WAAW,CAACH,GAAG,CAAC;AACjD;AAEQzC,EAAAA,gBAAgBA,GAAA;AACtB,IAAA,MAAM6C,aAAa,GAAgB,IAAI,CAAC3D,WAAW,CAACoC,aAAa;AACjE,IAAA,IAAIwB,UAAU,GAAGD,aAAa,CAACE,UAAU,CAACnB,MAAM;IAEhD,IAAI,IAAI,CAACf,+BAA+B,EAAE;AACxC,MAAA,IAAI,CAACA,+BAA+B,CAACyB,KAAK,EAAE;AAC9C;IAIA,OAAOQ,UAAU,EAAE,EAAE;AACnB,MAAA,MAAME,KAAK,GAAGH,aAAa,CAACE,UAAU,CAACD,UAAU,CAAC;AAIlD,MAAA,IAAIE,KAAK,CAACC,QAAQ,KAAK,CAAC,IAAID,KAAK,CAACE,QAAQ,CAACC,WAAW,EAAE,KAAK,KAAK,EAAE;QAClEH,KAAK,CAACI,MAAM,EAAE;AAChB;AACF;AACF;AAEQ/C,EAAAA,sBAAsBA,GAAA;AAC5B,IAAA,IAAI,CAAC,IAAI,CAACkC,cAAc,EAAE,EAAE;AAC1B,MAAA;AACF;AAEA,IAAA,MAAMc,IAAI,GAAgB,IAAI,CAACnE,WAAW,CAACoC,aAAa;AACxD,IAAA,MAAMgC,cAAc,GAAG,CACrB,IAAI,CAACrD,OAAO,GACR,IAAI,CAACb,aAAa,CAACmE,qBAAqB,CAAC,IAAI,CAACtD,OAAO,CAAC,CAAC0B,KAAK,CAAC,IAAI,CAAA,GACjE,IAAI,CAACvC,aAAa,CAACoE,sBAAsB,EAAE,EAC/CC,MAAM,CAACC,SAAS,IAAIA,SAAS,CAAC9B,MAAM,GAAG,CAAC,CAAC;AAE3C,IAAA,IAAI,CAACpB,qBAAqB,CAACmD,OAAO,CAACD,SAAS,IAAIL,IAAI,CAACO,SAAS,CAACR,MAAM,CAACM,SAAS,CAAC,CAAC;AACjFJ,IAAAA,cAAc,CAACK,OAAO,CAACD,SAAS,IAAIL,IAAI,CAACO,SAAS,CAACC,GAAG,CAACH,SAAS,CAAC,CAAC;IAClE,IAAI,CAAClD,qBAAqB,GAAG8C,cAAc;AAE3C,IAAA,IACE,IAAI,CAAChD,QAAQ,KAAK,IAAI,CAACG,sBAAsB,IAC7C,CAAC6C,cAAc,CAACQ,QAAQ,CAAC,mBAAmB,CAAC,EAC7C;MACA,IAAI,IAAI,CAACrD,sBAAsB,EAAE;QAC/B4C,IAAI,CAACO,SAAS,CAACR,MAAM,CAAC,IAAI,CAAC3C,sBAAsB,CAAC;AACpD;MACA,IAAI,IAAI,CAACH,QAAQ,EAAE;QACjB+C,IAAI,CAACO,SAAS,CAACC,GAAG,CAAC,IAAI,CAACvD,QAAQ,CAAC;AACnC;AACA,MAAA,IAAI,CAACG,sBAAsB,GAAG,IAAI,CAACH,QAAQ;AAC7C;AACF;EAOQF,iBAAiBA,CAACT,KAAa,EAAA;AACrC,IAAA,OAAO,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,CAACoE,IAAI,EAAE,CAACpC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAGhC,KAAK;AACvE;EAOQwC,wBAAwBA,CAACO,IAAY,EAAA;AAC3C,IAAA,MAAMsB,QAAQ,GAAG,IAAI,CAACnD,+BAA+B;AAErD,IAAA,IAAImD,QAAQ,EAAE;AACZA,MAAAA,QAAQ,CAACL,OAAO,CAAC,CAACM,KAAK,EAAEC,OAAO,KAAI;AAClCD,QAAAA,KAAK,CAACN,OAAO,CAAC7E,IAAI,IAAG;AACnBoF,UAAAA,OAAO,CAAC3C,YAAY,CAACzC,IAAI,CAACqF,IAAI,EAAE,CAAQzB,KAAAA,EAAAA,IAAI,CAAI5D,CAAAA,EAAAA,IAAI,CAACa,KAAK,IAAI,CAAC;AACjE,SAAC,CAAC;AACJ,OAAC,CAAC;AACJ;AACF;EAMQgD,oCAAoCA,CAACuB,OAAmB,EAAA;AAC9D,IAAA,MAAME,mBAAmB,GAAGF,OAAO,CAACG,gBAAgB,CAACzF,wBAAwB,CAAC;AAC9E,IAAA,MAAMoF,QAAQ,GAAI,IAAI,CAACnD,+BAA+B,GACpD,IAAI,CAACA,+BAA+B,IAAI,IAAIyD,GAAG,EAAG;AAEpD,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,mBAAmB,CAACxC,MAAM,EAAE2C,CAAC,EAAE,EAAE;AACnD5F,MAAAA,iBAAiB,CAACgF,OAAO,CAAC7E,IAAI,IAAG;AAC/B,QAAA,MAAM0F,oBAAoB,GAAGJ,mBAAmB,CAACG,CAAC,CAAC;AACnD,QAAA,MAAM5E,KAAK,GAAG6E,oBAAoB,CAACC,YAAY,CAAC3F,IAAI,CAAC;QACrD,MAAM4F,KAAK,GAAG/E,KAAK,GAAGA,KAAK,CAAC+E,KAAK,CAAC1F,cAAc,CAAC,GAAG,IAAI;AAExD,QAAA,IAAI0F,KAAK,EAAE;AACT,UAAA,IAAIC,UAAU,GAAGX,QAAQ,CAACY,GAAG,CAACJ,oBAAoB,CAAC;UAEnD,IAAI,CAACG,UAAU,EAAE;AACfA,YAAAA,UAAU,GAAG,EAAE;AACfX,YAAAA,QAAQ,CAACa,GAAG,CAACL,oBAAoB,EAAEG,UAAU,CAAC;AAChD;UAEAA,UAAW,CAACG,IAAI,CAAC;AAACX,YAAAA,IAAI,EAAErF,IAAI;YAAEa,KAAK,EAAE+E,KAAK,CAAC,CAAC;AAAC,WAAC,CAAC;AACjD;AACF,OAAC,CAAC;AACJ;AACF;EAGQ3E,cAAcA,CAACgF,OAA2B,EAAA;IAChD,IAAI,CAACpE,aAAa,GAAG,IAAI;IACzB,IAAI,CAACD,QAAQ,GAAG,IAAI;AACpB,IAAA,IAAI,CAACI,iBAAiB,CAACuB,WAAW,EAAE;AAEpC,IAAA,IAAI0C,OAAO,EAAE;MACX,MAAM,CAACC,SAAS,EAAEvD,QAAQ,CAAC,GAAG,IAAI,CAACD,cAAc,CAACuD,OAAO,CAAC;AAE1D,MAAA,IAAIC,SAAS,EAAE;QACb,IAAI,CAACrE,aAAa,GAAGqE,SAAS;AAChC;AAEA,MAAA,IAAIvD,QAAQ,EAAE;QACZ,IAAI,CAACf,QAAQ,GAAGe,QAAQ;AAC1B;AAEA,MAAA,IAAI,CAACX,iBAAiB,GAAG,IAAI,CAAC1B,aAAa,CACxC6F,eAAe,CAACxD,QAAQ,EAAEuD,SAAS,CAAA,CACnCE,IAAI,CAACC,IAAI,CAAC,CAAC,CAAC,CAAA,CACZC,SAAS,CACR3C,GAAG,IAAI,IAAI,CAACD,cAAc,CAACC,GAAG,CAAC,EAC9B4C,GAAU,IAAI;QACb,MAAMC,YAAY,GAAG,CAAA,sBAAA,EAAyBN,SAAS,CAAA,CAAA,EAAIvD,QAAQ,CAAK4D,EAAAA,EAAAA,GAAG,CAACE,OAAO,CAAE,CAAA;QACrF,IAAI,CAACjG,aAAa,CAACkG,WAAW,CAAC,IAAI3D,KAAK,CAACyD,YAAY,CAAC,CAAC;AACzD,OAAC,CACF;AACL;AACF;;;;;UAtUWrG,OAAO;AAAAwG,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAC;AAAA,GAAA,CAAA;;;;UAAP5G,OAAO;AAAA6G,IAAAA,YAAA,EAAA,IAAA;AAAAC,IAAAA,QAAA,EAAA,UAAA;AAAAC,IAAAA,MAAA,EAAA;AAAAvG,MAAAA,KAAA,EAAA,OAAA;AAAAG,MAAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EA2BCqG,gBAAgB,CAAA;AAAApG,MAAAA,OAAA,EAAA,SAAA;AAAAI,MAAAA,OAAA,EAAA,SAAA;AAAAK,MAAAA,QAAA,EAAA;KAAA;AAAA4F,IAAAA,IAAA,EAAA;AAAAvB,MAAAA,UAAA,EAAA;AAAA,QAAA,MAAA,EAAA;OAAA;AAAAwB,MAAAA,UAAA,EAAA;AAAA,QAAA,OAAA,EAAA,iCAAA;AAAA,QAAA,yBAAA,EAAA,uCAAA;AAAA,QAAA,yBAAA,EAAA,sBAAA;AAAA,QAAA,8BAAA,EAAA,0BAAA;AAAA,QAAA,eAAA,EAAA,oCAAA;AAAA,QAAA,uBAAA,EAAA,QAAA;AAAA,QAAA,yBAAA,EAAA;OAAA;AAAAC,MAAAA,cAAA,EAAA;KAAA;IAAAC,QAAA,EAAA,CAAA,SAAA,CAAA;AAAAC,IAAAA,QAAA,EAAAX,EAAA;AAAAY,IAAAA,QAAA,EA7CzB,2BAA2B;AAAAC,IAAAA,QAAA,EAAA,IAAA;IAAAC,MAAA,EAAA,CAAA,+3BAAA,CAAA;AAAAC,IAAAA,eAAA,EAAAf,EAAA,CAAAgB,uBAAA,CAAAC,MAAA;AAAAC,IAAAA,aAAA,EAAAlB,EAAA,CAAAmB,iBAAA,CAAAC;AAAA,GAAA,CAAA;;;;;;QAkB1B9H,OAAO;AAAA+H,EAAAA,UAAA,EAAA,CAAA;UAnBnBnB,SAAS;AACEoB,IAAAA,IAAA,EAAA,CAAA;AAAAV,MAAAA,QAAA,EAAA,2BAA2B;AAC3BR,MAAAA,QAAA,EAAA,UAAU;AACVM,MAAAA,QAAA,EAAA,SAAS;AAEbH,MAAAA,IAAA,EAAA;AACJ,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,OAAO,EAAE,sBAAsB;AAC/B,QAAA,SAAS,EAAE,6BAA6B;AACxC,QAAA,2BAA2B,EAAE,mCAAmC;AAChE,QAAA,2BAA2B,EAAE,sBAAsB;AACnD,QAAA,gCAAgC,EAAE,0BAA0B;AAC5D,QAAA,iBAAiB,EAAE,oCAAoC;AACvD,QAAA,yBAAyB,EAAE,QAAQ;AACnC,QAAA,2BAA2B,EAAE;OAC9B;MAAAW,aAAA,EACcC,iBAAiB,CAACC,IAAI;MACpBL,eAAA,EAAAC,uBAAuB,CAACC,MAAM;MAAAH,MAAA,EAAA,CAAA,+3BAAA;KAAA;;;;;YAgB9CS;;;YAaAA,KAAK;aAAC;AAACC,QAAAA,SAAS,EAAElB;OAAiB;;;YAInCiB;;;YAiBAA;;;YAeAA;;;;;MCpMUE,aAAa,CAAA;;;;;UAAbA,aAAa;AAAA3B,IAAAA,IAAA,EAAA,EAAA;AAAAC,IAAAA,MAAA,EAAAC,EAAA,CAAAC,eAAA,CAAAyB;AAAA,GAAA,CAAA;AAAb,EAAA,OAAAC,IAAA,GAAA3B,EAAA,CAAA4B,mBAAA,CAAA;AAAAC,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,QAAA;AAAAnB,IAAAA,QAAA,EAAAX,EAAA;AAAA+B,IAAAA,IAAA,EAAAN,aAAa;IAHdO,OAAA,EAAA,CAAA1I,OAAO,CACP;AAAA2I,IAAAA,OAAA,EAAA,CAAA3I,OAAO,EAAE4I,UAAU;AAAA,GAAA,CAAA;AAElB,EAAA,OAAAC,IAAA,GAAAnC,EAAA,CAAAoC,mBAAA,CAAA;AAAAP,IAAAA,UAAA,EAAA,QAAA;AAAAC,IAAAA,OAAA,EAAA,QAAA;AAAAnB,IAAAA,QAAA,EAAAX,EAAA;AAAA+B,IAAAA,IAAA,EAAAN,aAAa;cAFLS,UAAU;AAAA,GAAA,CAAA;;;;;;QAElBT,aAAa;AAAAJ,EAAAA,UAAA,EAAA,CAAA;UAJzBK,QAAQ;AAACJ,IAAAA,IAAA,EAAA,CAAA;MACRU,OAAO,EAAE,CAAC1I,OAAO,CAAC;AAClB2I,MAAAA,OAAO,EAAE,CAAC3I,OAAO,EAAE4I,UAAU;KAC9B;;;;;;"}
|
|
1
|
+
{"version":3,"file":"icon.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/icon/icon-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n AfterViewChecked,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ErrorHandler,\n inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n HostAttributeToken,\n DOCUMENT,\n} from '@angular/core';\nimport {ThemePalette} from '../core';\nimport {Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {MatIconRegistry} from './icon-registry';\n\n/** Default options for `mat-icon`. */\nexport interface MatIconDefaultOptions {\n /**\n * Theme color of the icon. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/icon/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n /** Font set that the icon is a part of. */\n fontSet?: string;\n}\n\n/** Injection token to be used to override the default options for `mat-icon`. */\nexport const MAT_ICON_DEFAULT_OPTIONS = new InjectionToken<MatIconDefaultOptions>(\n 'MAT_ICON_DEFAULT_OPTIONS',\n);\n\n/**\n * Injection token used to provide the current location to `MatIcon`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nexport const MAT_ICON_LOCATION = new InjectionToken<MatIconLocation>('mat-icon-location', {\n providedIn: 'root',\n factory: () => {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => (_location ? _location.pathname + _location.search : ''),\n };\n },\n});\n\n/**\n * Stubbed out location for `MatIcon`.\n * @docs-private\n */\nexport interface MatIconLocation {\n getPathname: () => string;\n}\n\n/** SVG attributes that accept a FuncIRI (e.g. `url(<something>)`). */\nconst funcIriAttributes = [\n 'clip-path',\n 'color-profile',\n 'src',\n 'cursor',\n 'fill',\n 'filter',\n 'marker',\n 'marker-start',\n 'marker-mid',\n 'marker-end',\n 'mask',\n 'stroke',\n];\n\n/** Selector that can be used to find all elements that are using a `FuncIRI`. */\nconst funcIriAttributeSelector = funcIriAttributes.map(attr => `[${attr}]`).join(', ');\n\n/** Regex that can be used to extract the id out of a FuncIRI. */\nconst funcIriPattern = /^url\\(['\"]?#(.*?)['\"]?\\)$/;\n\n/**\n * Component to display an icon. It can be used in the following ways:\n *\n * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the\n * addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of\n * MatIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format\n * \"[namespace]:[name]\", if not the value will be the name of an icon in the default namespace.\n * Examples:\n * `<mat-icon svgIcon=\"left-arrow\"></mat-icon>\n * <mat-icon svgIcon=\"animals:cat\"></mat-icon>`\n *\n * - Use a font ligature as an icon by putting the ligature text in the `fontIcon` attribute or the\n * content of the `<mat-icon>` component. If you register a custom font class, don't forget to also\n * include the special class `mat-ligature-font`. It is recommended to use the attribute alternative\n * to prevent the ligature text to be selectable and to appear in search engine results.\n * By default, the Material icons font is used as described at\n * http://google.github.io/material-design-icons/#icon-font-for-the-web. You can specify an\n * alternate font by setting the fontSet input to either the CSS class to apply to use the\n * desired font, or to an alias previously registered with MatIconRegistry.registerFontClassAlias.\n * Examples:\n * `<mat-icon fontIcon=\"home\"></mat-icon>\n * <mat-icon>home</mat-icon>\n * <mat-icon fontSet=\"myfont\" fontIcon=\"sun\"></mat-icon>\n * <mat-icon fontSet=\"myfont\">sun</mat-icon>`\n *\n * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the\n * font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a\n * CSS class which causes the glyph to be displayed via a :before selector, as in\n * https://fontawesome-v4.github.io/examples/\n * Example:\n * `<mat-icon fontSet=\"fa\" fontIcon=\"alarm\"></mat-icon>`\n */\n@Component({\n template: '<ng-content></ng-content>',\n selector: 'mat-icon',\n exportAs: 'matIcon',\n styleUrl: 'icon.css',\n host: {\n 'role': 'img',\n 'class': 'mat-icon notranslate',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n '[attr.data-mat-icon-type]': '_usingFontIcon() ? \"font\" : \"svg\"',\n '[attr.data-mat-icon-name]': '_svgName || fontIcon',\n '[attr.data-mat-icon-namespace]': '_svgNamespace || fontSet',\n '[attr.fontIcon]': '_usingFontIcon() ? fontIcon : null',\n '[class.mat-icon-inline]': 'inline',\n '[class.mat-icon-no-color]': 'color !== \"primary\" && color !== \"accent\" && color !== \"warn\"',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatIcon implements OnInit, AfterViewChecked, OnDestroy {\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _iconRegistry = inject(MatIconRegistry);\n private _location = inject<MatIconLocation>(MAT_ICON_LOCATION);\n private readonly _errorHandler = inject(ErrorHandler);\n private _defaultColor!: ThemePalette;\n\n /**\n * Theme color of the icon. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/icon/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input()\n get color() {\n return this._color || this._defaultColor;\n }\n set color(value: string | null | undefined) {\n this._color = value;\n }\n private _color: string | null | undefined;\n\n /**\n * Whether the icon should be inlined, automatically sizing the icon to match the font size of\n * the element the icon is contained in.\n */\n @Input({transform: booleanAttribute})\n inline: boolean = false;\n\n /** Name of the icon in the SVG icon set. */\n @Input()\n get svgIcon(): string {\n return this._svgIcon;\n }\n set svgIcon(value: string) {\n if (value !== this._svgIcon) {\n if (value) {\n this._updateSvgIcon(value);\n } else if (this._svgIcon) {\n this._clearSvgElement();\n }\n this._svgIcon = value;\n }\n }\n private _svgIcon!: string;\n\n /** Font set that the icon is a part of. */\n @Input()\n get fontSet(): string {\n return this._fontSet;\n }\n set fontSet(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontSet) {\n this._fontSet = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontSet!: string;\n\n /** Name of an icon within a font set. */\n @Input()\n get fontIcon(): string {\n return this._fontIcon;\n }\n set fontIcon(value: string) {\n const newValue = this._cleanupFontValue(value);\n\n if (newValue !== this._fontIcon) {\n this._fontIcon = newValue;\n this._updateFontIconClasses();\n }\n }\n private _fontIcon!: string;\n\n private _previousFontSetClass: string[] = [];\n private _previousFontIconClass!: string;\n\n _svgName: string | null = null;\n _svgNamespace: string | null = null;\n\n /** Keeps track of the current page path. */\n private _previousPath?: string;\n\n /** Keeps track of the elements and attributes that we've prefixed with the current path. */\n private _elementsWithExternalReferences?: Map<Element, {name: string; value: string}[]>;\n\n /** Subscription to the current in-progress SVG icon request. */\n private _currentIconFetch = Subscription.EMPTY;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const ariaHidden = inject(new HostAttributeToken('aria-hidden'), {optional: true});\n const defaults = inject<MatIconDefaultOptions>(MAT_ICON_DEFAULT_OPTIONS, {optional: true});\n\n if (defaults) {\n if (defaults.color) {\n this.color = this._defaultColor = defaults.color;\n }\n\n if (defaults.fontSet) {\n this.fontSet = defaults.fontSet;\n }\n }\n\n // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n // the right thing to do for the majority of icon use-cases.\n if (!ariaHidden) {\n this._elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n\n /**\n * Splits an svgIcon binding value into its icon set and icon name components.\n * Returns a 2-element array of [(icon set), (icon name)].\n * The separator for the two fields is ':'. If there is no separator, an empty\n * string is returned for the icon set and the entire value is returned for\n * the icon name. If the argument is falsy, returns an array of two empty strings.\n * Throws an error if the name contains two or more ':' separators.\n * Examples:\n * `'social:cake' -> ['social', 'cake']\n * 'penguin' -> ['', 'penguin']\n * null -> ['', '']\n * 'a:b:c' -> (throws Error)`\n */\n private _splitIconName(iconName: string): [string, string] {\n if (!iconName) {\n return ['', ''];\n }\n const parts = iconName.split(':');\n switch (parts.length) {\n case 1:\n return ['', parts[0]]; // Use default namespace.\n case 2:\n return <[string, string]>parts;\n default:\n throw Error(`Invalid icon name: \"${iconName}\"`); // TODO: add an ngDevMode check\n }\n }\n\n ngOnInit() {\n // Update font classes because ngOnChanges won't be called if none of the inputs are present,\n // e.g. <mat-icon>arrow</mat-icon> In this case we need to add a CSS class for the default font.\n this._updateFontIconClasses();\n }\n\n ngAfterViewChecked() {\n const cachedElements = this._elementsWithExternalReferences;\n\n if (cachedElements && cachedElements.size) {\n const newPath = this._location.getPathname();\n\n // We need to check whether the URL has changed on each change detection since\n // the browser doesn't have an API that will let us react on link clicks and\n // we can't depend on the Angular router. The references need to be updated,\n // because while most browsers don't care whether the URL is correct after\n // the first render, Safari will break if the user navigates to a different\n // page and the SVG isn't re-rendered.\n if (newPath !== this._previousPath) {\n this._previousPath = newPath;\n this._prependPathToReferences(newPath);\n }\n }\n }\n\n ngOnDestroy() {\n this._currentIconFetch.unsubscribe();\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n }\n\n _usingFontIcon(): boolean {\n return !this.svgIcon;\n }\n\n private _setSvgElement(svg: SVGElement) {\n this._clearSvgElement();\n\n // Note: we do this fix here, rather than the icon registry, because the\n // references have to point to the URL at the time that the icon was created.\n const path = this._location.getPathname();\n this._previousPath = path;\n this._cacheChildrenWithExternalReferences(svg);\n this._prependPathToReferences(path);\n this._elementRef.nativeElement.appendChild(svg);\n }\n\n private _clearSvgElement() {\n const layoutElement: HTMLElement = this._elementRef.nativeElement;\n let childCount = layoutElement.childNodes.length;\n\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n\n // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\n // we can't use innerHTML, because IE will throw if the element has a data binding.\n while (childCount--) {\n const child = layoutElement.childNodes[childCount];\n\n // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\n // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\n if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n child.remove();\n }\n }\n }\n\n private _updateFontIconClasses() {\n if (!this._usingFontIcon()) {\n return;\n }\n\n const elem: HTMLElement = this._elementRef.nativeElement;\n const fontSetClasses = (\n this.fontSet\n ? this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/)\n : this._iconRegistry.getDefaultFontSetClass()\n ).filter(className => className.length > 0);\n\n this._previousFontSetClass.forEach(className => elem.classList.remove(className));\n fontSetClasses.forEach(className => elem.classList.add(className));\n this._previousFontSetClass = fontSetClasses;\n\n if (\n this.fontIcon !== this._previousFontIconClass &&\n !fontSetClasses.includes('mat-ligature-font')\n ) {\n if (this._previousFontIconClass) {\n elem.classList.remove(this._previousFontIconClass);\n }\n if (this.fontIcon) {\n elem.classList.add(this.fontIcon);\n }\n this._previousFontIconClass = this.fontIcon;\n }\n }\n\n /**\n * Cleans up a value to be used as a fontIcon or fontSet.\n * Since the value ends up being assigned as a CSS class, we\n * have to trim the value and omit space-separated values.\n */\n private _cleanupFontValue(value: string) {\n return typeof value === 'string' ? value.trim().split(' ')[0] : value;\n }\n\n /**\n * Prepends the current path to all elements that have an attribute pointing to a `FuncIRI`\n * reference. This is required because WebKit browsers require references to be prefixed with\n * the current path, if the page has a `base` tag.\n */\n private _prependPathToReferences(path: string) {\n const elements = this._elementsWithExternalReferences;\n\n if (elements) {\n elements.forEach((attrs, element) => {\n attrs.forEach(attr => {\n element.setAttribute(attr.name, `url('${path}#${attr.value}')`);\n });\n });\n }\n }\n\n /**\n * Caches the children of an SVG element that have `url()`\n * references that we need to prefix with the current path.\n */\n private _cacheChildrenWithExternalReferences(element: SVGElement) {\n const elementsWithFuncIri = element.querySelectorAll(funcIriAttributeSelector);\n const elements = (this._elementsWithExternalReferences =\n this._elementsWithExternalReferences || new Map());\n\n for (let i = 0; i < elementsWithFuncIri.length; i++) {\n funcIriAttributes.forEach(attr => {\n const elementWithReference = elementsWithFuncIri[i];\n const value = elementWithReference.getAttribute(attr);\n const match = value ? value.match(funcIriPattern) : null;\n\n if (match) {\n let attributes = elements.get(elementWithReference);\n\n if (!attributes) {\n attributes = [];\n elements.set(elementWithReference, attributes);\n }\n\n attributes!.push({name: attr, value: match[1]});\n }\n });\n }\n }\n\n /** Sets a new SVG icon with a particular name. */\n private _updateSvgIcon(rawName: string | undefined) {\n this._svgNamespace = null;\n this._svgName = null;\n this._currentIconFetch.unsubscribe();\n\n if (rawName) {\n const [namespace, iconName] = this._splitIconName(rawName);\n\n if (namespace) {\n this._svgNamespace = namespace;\n }\n\n if (iconName) {\n this._svgName = iconName;\n }\n\n this._currentIconFetch = this._iconRegistry\n .getNamedSvgIcon(iconName, namespace)\n .pipe(take(1))\n .subscribe(\n svg => this._setSvgElement(svg),\n (err: Error) => {\n const errorMessage = `Error retrieving icon ${namespace}:${iconName}! ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n },\n );\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatIcon} from './icon';\n\n@NgModule({\n imports: [MatIcon],\n exports: [MatIcon, BidiModule],\n})\nexport class MatIconModule {}\n"],"names":["MAT_ICON_DEFAULT_OPTIONS","InjectionToken","MAT_ICON_LOCATION","providedIn","factory","_document","inject","DOCUMENT","_location","location","getPathname","pathname","search","funcIriAttributes","funcIriAttributeSelector","map","attr","join","funcIriPattern","MatIcon","_elementRef","ElementRef","_iconRegistry","MatIconRegistry","_errorHandler","ErrorHandler","_defaultColor","color","_color","value","inline","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","newValue","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_previousFontSetClass","_previousFontIconClass","_svgName","_svgNamespace","_previousPath","_elementsWithExternalReferences","_currentIconFetch","Subscription","EMPTY","constructor","ariaHidden","HostAttributeToken","optional","defaults","nativeElement","setAttribute","_splitIconName","iconName","parts","split","length","Error","ngOnInit","ngAfterViewChecked","cachedElements","size","newPath","_prependPathToReferences","ngOnDestroy","unsubscribe","clear","_usingFontIcon","_setSvgElement","svg","path","_cacheChildrenWithExternalReferences","appendChild","layoutElement","childCount","childNodes","child","nodeType","nodeName","toLowerCase","remove","elem","fontSetClasses","classNameForFontAlias","getDefaultFontSetClass","filter","className","forEach","classList","add","includes","trim","elements","attrs","element","name","elementsWithFuncIri","querySelectorAll","Map","i","elementWithReference","getAttribute","match","attributes","get","set","push","rawName","namespace","getNamedSvgIcon","pipe","take","subscribe","err","errorMessage","message","handleError","deps","target","i0","ɵɵFactoryTarget","Component","isStandalone","selector","inputs","booleanAttribute","host","properties","classAttribute","exportAs","ngImport","template","isInline","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","Input","transform","MatIconModule","NgModule","ɵmod","ɵɵngDeclareNgModule","minVersion","version","type","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
|
package/fesm2022/input.mjs
CHANGED
|
@@ -43,17 +43,17 @@ class MatInput {
|
|
|
43
43
|
_previousNativeValue;
|
|
44
44
|
_inputValueAccessor;
|
|
45
45
|
_signalBasedValueAccessor;
|
|
46
|
-
_previousPlaceholder;
|
|
46
|
+
_previousPlaceholder = null;
|
|
47
47
|
_errorStateTracker;
|
|
48
48
|
_config = inject(MAT_INPUT_CONFIG, {
|
|
49
49
|
optional: true
|
|
50
50
|
});
|
|
51
51
|
_cleanupIosKeyup;
|
|
52
52
|
_cleanupWebkitWheel;
|
|
53
|
-
_isServer;
|
|
54
|
-
_isNativeSelect;
|
|
55
|
-
_isTextarea;
|
|
56
|
-
_isInFormField;
|
|
53
|
+
_isServer = false;
|
|
54
|
+
_isNativeSelect = false;
|
|
55
|
+
_isTextarea = false;
|
|
56
|
+
_isInFormField = false;
|
|
57
57
|
focused = false;
|
|
58
58
|
stateChanges = new Subject();
|
|
59
59
|
controlType = 'mat-input';
|
package/fesm2022/input.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-errors.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/** @docs-private */\nexport function getMatInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\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.dev/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n AfterViewInit,\n booleanAttribute,\n Directive,\n DoCheck,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Input,\n isSignal,\n NgZone,\n OnChanges,\n OnDestroy,\n Renderer2,\n WritableSignal,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {FormGroupDirective, NgControl, NgForm, Validators} from '@angular/forms';\nimport {ErrorStateMatcher, _ErrorStateTracker} from '../core';\nimport {MatFormFieldControl, MatFormField, MAT_FORM_FIELD} from '../form-field';\nimport {Subject} from 'rxjs';\nimport {getMatInputUnsupportedTypeError} from './input-errors';\nimport {MAT_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n];\n\n/** Object that can be used to configure the default options for the input. */\nexport interface MatInputConfig {\n /** Whether disabled inputs should be interactive. */\n disabledInteractive?: boolean;\n}\n\n/** Injection token that can be used to provide the default options for the input. */\nexport const MAT_INPUT_CONFIG = new InjectionToken<MatInputConfig>('MAT_INPUT_CONFIG');\n\n@Directive({\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n 'class': 'mat-mdc-input-element',\n // The BaseMatInput parent class adds `mat-input-element`, `mat-form-field-control` and\n // `mat-form-field-autofill-control` to the CSS class list, but this should not be added for\n // this MDC equivalent input.\n '[class.mat-input-server]': '_isServer',\n '[class.mat-mdc-form-field-textarea-control]': '_isInFormField && _isTextarea',\n '[class.mat-mdc-form-field-input-control]': '_isInFormField',\n '[class.mat-mdc-input-disabled-interactive]': 'disabledInteractive',\n '[class.mdc-text-field__input]': '_isInFormField',\n '[class.mat-mdc-native-select-inline]': '_isInlineSelect()',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[id]': 'id',\n '[disabled]': 'disabled && !disabledInteractive',\n '[required]': 'required',\n '[attr.name]': 'name || null',\n '[attr.readonly]': '_getReadonlyAttribute()',\n '[attr.aria-disabled]': 'disabled && disabledInteractive ? \"true\" : null',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n '(input)': '_onInput()',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput\n implements MatFormFieldControl<any>, OnChanges, OnDestroy, AfterViewInit, DoCheck\n{\n protected _elementRef =\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\n protected _platform = inject(Platform);\n ngControl = inject(NgControl, {optional: true, self: true})!;\n private _autofillMonitor = inject(AutofillMonitor);\n private _ngZone = inject(NgZone);\n protected _formField? = inject<MatFormField>(MAT_FORM_FIELD, {optional: true});\n private _renderer = inject(Renderer2);\n\n protected _uid = inject(_IdGenerator).getId('mat-input-');\n protected _previousNativeValue: any;\n private _inputValueAccessor: {value: any};\n private _signalBasedValueAccessor?: {value: WritableSignal<any>};\n private _previousPlaceholder: string | null;\n private _errorStateTracker: _ErrorStateTracker;\n private _config = inject(MAT_INPUT_CONFIG, {optional: true});\n private _cleanupIosKeyup: (() => void) | undefined;\n private _cleanupWebkitWheel: (() => void) | undefined;\n\n /** Whether the component is being rendered on the server. */\n readonly _isServer: boolean;\n\n /** Whether the component is a native html select. */\n readonly _isNativeSelect: boolean;\n\n /** Whether the component is a textarea. */\n readonly _isTextarea: boolean;\n\n /** Whether the input is inside of a form field. */\n readonly _isInFormField: boolean;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n controlType: string = 'mat-input';\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n autofilled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n }\n protected _id: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input() placeholder: string;\n\n /**\n * Name of the input.\n * @docs-private\n */\n @Input() name: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n }\n protected _required: boolean | undefined;\n\n /** Input type of the element. */\n @Input()\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n this._type = value || 'text';\n this._validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /** An object used to control when error messages are shown. */\n @Input()\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value: ErrorStateMatcher) {\n this._errorStateTracker.matcher = value;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input('aria-describedby') userAriaDescribedBy: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string {\n return this._signalBasedValueAccessor\n ? this._signalBasedValueAccessor.value()\n : this._inputValueAccessor.value;\n }\n set value(value: any) {\n if (value !== this.value) {\n if (this._signalBasedValueAccessor) {\n this._signalBasedValueAccessor.value.set(value);\n } else {\n this._inputValueAccessor.value = value;\n }\n\n this.stateChanges.next();\n }\n }\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: BooleanInput) {\n this._readonly = coerceBooleanProperty(value);\n }\n private _readonly = false;\n\n /** Whether the input should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n disabledInteractive: boolean;\n\n /** Whether the input is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value: boolean) {\n this._errorStateTracker.errorState = value;\n }\n\n protected _neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week',\n ].filter(t => getSupportedInputTypes().has(t));\n\n constructor(...args: unknown[]);\n\n constructor() {\n const parentForm = inject(NgForm, {optional: true});\n const parentFormGroup = inject(FormGroupDirective, {optional: true});\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\n const accessor = inject(MAT_INPUT_VALUE_ACCESSOR, {optional: true, self: true});\n\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n\n if (accessor) {\n if (isSignal(accessor.value)) {\n this._signalBasedValueAccessor = accessor;\n } else {\n this._inputValueAccessor = accessor;\n }\n } else {\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = element;\n }\n\n this._previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (this._platform.IOS) {\n this._ngZone.runOutsideAngular(() => {\n this._cleanupIosKeyup = this._renderer.listen(element, 'keyup', this._iOSKeyupListener);\n });\n }\n\n this._errorStateTracker = new _ErrorStateTracker(\n defaultErrorStateMatcher,\n this.ngControl,\n parentFormGroup,\n parentForm,\n this.stateChanges,\n );\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!this._formField;\n this.disabledInteractive = this._config?.disabledInteractive || false;\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple\n ? 'mat-native-select-multiple'\n : 'mat-native-select';\n }\n\n if (this._signalBasedValueAccessor) {\n effect(() => {\n // Read the value so the effect can register the dependency.\n this._signalBasedValueAccessor!.value();\n this.stateChanges.next();\n });\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n\n this._cleanupIosKeyup?.();\n this._cleanupWebkitWheel?.();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n\n // Since the input isn't a `ControlValueAccessor`, we don't have a good way of knowing when\n // the disabled state has changed. We can't use the `ngControl.statusChanges`, because it\n // won't fire if the input is disabled with `emitEvents = false`, despite the input becoming\n // disabled.\n if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled) {\n this.disabled = this.ngControl.disabled;\n this.stateChanges.next();\n }\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n /** Refreshes the error state of the input. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n _focusChanged(isFocused: boolean) {\n if (isFocused === this.focused) {\n return;\n }\n\n if (!this._isNativeSelect && isFocused && this.disabled && this.disabledInteractive) {\n const element = this._elementRef.nativeElement as HTMLInputElement;\n\n // Focusing an input that has text will cause all the text to be selected. Clear it since\n // the user won't be able to change it. This is based on the internal implementation.\n if (element.type === 'number') {\n // setSelectionRange doesn't work on number inputs so it needs to be set briefly to text.\n element.type = 'text';\n element.setSelectionRange(0, 0);\n element.type = 'number';\n } else {\n element.setSelectionRange(0, 0);\n }\n }\n\n this.focused = isFocused;\n this.stateChanges.next();\n }\n\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n private _dirtyCheckPlaceholder() {\n const placeholder = this._getPlaceholder();\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder\n ? element.setAttribute('placeholder', placeholder)\n : element.removeAttribute('placeholder');\n }\n }\n\n /** Gets the current placeholder of the form field. */\n protected _getPlaceholder(): string | null {\n return this.placeholder || null;\n }\n\n /** Make sure the input is a supported type. */\n protected _validateType() {\n if (\n MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n return validity && validity.badInput;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return (\n !this._isNeverEmpty() &&\n !this._elementRef.nativeElement.value &&\n !this._isBadInput() &&\n !this.autofilled\n );\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return (\n this.focused ||\n selectElement.multiple ||\n !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label)\n );\n } else {\n return (this.focused && !this.disabled) || !this.empty;\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get describedByIds(): string[] {\n const element = this._elementRef.nativeElement;\n const existingDescribedBy = element.getAttribute('aria-describedby');\n\n return existingDescribedBy?.split(' ') || [];\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n const element = this._elementRef.nativeElement;\n\n if (ids.length) {\n element.setAttribute('aria-describedby', ids.join(' '));\n } else {\n element.removeAttribute('aria-describedby');\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n\n /** Whether the form control is a native select that is displayed inline. */\n _isInlineSelect(): boolean {\n const element = this._elementRef.nativeElement as HTMLSelectElement;\n return this._isNativeSelect && (element.multiple || element.size > 1);\n }\n\n private _iOSKeyupListener = (event: Event): void => {\n const el = event.target as HTMLInputElement;\n\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n };\n\n /** Gets the value to set on the `readonly` attribute. */\n protected _getReadonlyAttribute(): string | null {\n if (this._isNativeSelect) {\n return null;\n }\n\n if (this.readonly || (this.disabled && this.disabledInteractive)) {\n return 'true';\n }\n\n return null;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {NgModule} from '@angular/core';\nimport {MatFormFieldModule} from '../form-field';\nimport {MatInput} from './input';\n\n@NgModule({\n imports: [MatFormFieldModule, MatInput],\n exports: [MatInput, MatFormFieldModule, TextFieldModule, BidiModule],\n})\nexport class MatInputModule {}\n"],"names":["getMatInputUnsupportedTypeError","type","Error","MAT_INPUT_INVALID_TYPES","MAT_INPUT_CONFIG","InjectionToken","MatInput","_elementRef","inject","ElementRef","_platform","Platform","ngControl","NgControl","optional","self","_autofillMonitor","AutofillMonitor","_ngZone","NgZone","_formField","MAT_FORM_FIELD","_renderer","Renderer2","_uid","_IdGenerator","getId","_previousNativeValue","_inputValueAccessor","_signalBasedValueAccessor","_previousPlaceholder","_errorStateTracker","_config","_cleanupIosKeyup","_cleanupWebkitWheel","_isServer","_isNativeSelect","_isTextarea","_isInFormField","focused","stateChanges","Subject","controlType","autofilled","disabled","_disabled","value","coerceBooleanProperty","next","id","_id","placeholder","name","required","_required","control","hasValidator","Validators","_type","_validateType","getSupportedInputTypes","has","nativeElement","errorStateMatcher","matcher","userAriaDescribedBy","set","readonly","_readonly","disabledInteractive","errorState","_neverEmptyInputTypes","filter","t","constructor","parentForm","NgForm","parentFormGroup","FormGroupDirective","defaultErrorStateMatcher","ErrorStateMatcher","accessor","MAT_INPUT_VALUE_ACCESSOR","element","nodeName","toLowerCase","isSignal","IOS","runOutsideAngular","listen","_iOSKeyupListener","_ErrorStateTracker","isBrowser","multiple","effect","ngAfterViewInit","monitor","subscribe","event","isAutofilled","ngOnChanges","ngOnDestroy","complete","stopMonitoring","ngDoCheck","updateErrorState","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","focus","options","_focusChanged","isFocused","setSelectionRange","_onInput","newValue","_getPlaceholder","setAttribute","removeAttribute","indexOf","ngDevMode","_isNeverEmpty","_isBadInput","validity","badInput","empty","shouldLabelFloat","selectElement","firstOption","selectedIndex","label","describedByIds","existingDescribedBy","getAttribute","split","setDescribedByIds","ids","length","join","onContainerClick","_isInlineSelect","size","el","target","selectionStart","selectionEnd","_getReadonlyAttribute","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","isStandalone","selector","inputs","booleanAttribute","host","listeners","properties","classAttribute","providers","provide","MatFormFieldControl","useExisting","exportAs","usesOnChanges","ngImport","decorators","args","Input","transform","MatInputModule","NgModule","imports","MatFormFieldModule","exports","TextFieldModule","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-errors.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/input/input-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/** @docs-private */\nexport function getMatInputUnsupportedTypeError(type: string): Error {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\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.dev/license\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {getSupportedInputTypes, Platform} from '@angular/cdk/platform';\nimport {AutofillMonitor} from '@angular/cdk/text-field';\nimport {\n AfterViewInit,\n booleanAttribute,\n Directive,\n DoCheck,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Input,\n isSignal,\n NgZone,\n OnChanges,\n OnDestroy,\n Renderer2,\n WritableSignal,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {FormGroupDirective, NgControl, NgForm, Validators} from '@angular/forms';\nimport {ErrorStateMatcher, _ErrorStateTracker} from '../core';\nimport {MatFormFieldControl, MatFormField, MAT_FORM_FIELD} from '../form-field';\nimport {Subject} from 'rxjs';\nimport {getMatInputUnsupportedTypeError} from './input-errors';\nimport {MAT_INPUT_VALUE_ACCESSOR} from './input-value-accessor';\n\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n];\n\n/** Object that can be used to configure the default options for the input. */\nexport interface MatInputConfig {\n /** Whether disabled inputs should be interactive. */\n disabledInteractive?: boolean;\n}\n\n/** Injection token that can be used to provide the default options for the input. */\nexport const MAT_INPUT_CONFIG = new InjectionToken<MatInputConfig>('MAT_INPUT_CONFIG');\n\n@Directive({\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n 'class': 'mat-mdc-input-element',\n // The BaseMatInput parent class adds `mat-input-element`, `mat-form-field-control` and\n // `mat-form-field-autofill-control` to the CSS class list, but this should not be added for\n // this MDC equivalent input.\n '[class.mat-input-server]': '_isServer',\n '[class.mat-mdc-form-field-textarea-control]': '_isInFormField && _isTextarea',\n '[class.mat-mdc-form-field-input-control]': '_isInFormField',\n '[class.mat-mdc-input-disabled-interactive]': 'disabledInteractive',\n '[class.mdc-text-field__input]': '_isInFormField',\n '[class.mat-mdc-native-select-inline]': '_isInlineSelect()',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[id]': 'id',\n '[disabled]': 'disabled && !disabledInteractive',\n '[required]': 'required',\n '[attr.name]': 'name || null',\n '[attr.readonly]': '_getReadonlyAttribute()',\n '[attr.aria-disabled]': 'disabled && disabledInteractive ? \"true\" : null',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n '(input)': '_onInput()',\n },\n providers: [{provide: MatFormFieldControl, useExisting: MatInput}],\n})\nexport class MatInput\n implements MatFormFieldControl<any>, OnChanges, OnDestroy, AfterViewInit, DoCheck\n{\n protected _elementRef =\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\n protected _platform = inject(Platform);\n ngControl = inject(NgControl, {optional: true, self: true})!;\n private _autofillMonitor = inject(AutofillMonitor);\n private _ngZone = inject(NgZone);\n protected _formField? = inject<MatFormField>(MAT_FORM_FIELD, {optional: true});\n private _renderer = inject(Renderer2);\n\n protected _uid = inject(_IdGenerator).getId('mat-input-');\n protected _previousNativeValue: any;\n private _inputValueAccessor!: {value: any};\n private _signalBasedValueAccessor?: {value: WritableSignal<any>};\n private _previousPlaceholder: string | null = null;\n private _errorStateTracker: _ErrorStateTracker;\n private _config = inject(MAT_INPUT_CONFIG, {optional: true});\n private _cleanupIosKeyup: (() => void) | undefined;\n private _cleanupWebkitWheel: (() => void) | undefined;\n\n /** Whether the component is being rendered on the server. */\n readonly _isServer: boolean = false;\n\n /** Whether the component is a native html select. */\n readonly _isNativeSelect: boolean = false;\n\n /** Whether the component is a textarea. */\n readonly _isTextarea: boolean = false;\n\n /** Whether the input is inside of a form field. */\n readonly _isInFormField: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n focused: boolean = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n controlType: string = 'mat-input';\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n autofilled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n protected _disabled = false;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n }\n protected _id!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input() placeholder!: string;\n\n /**\n * Name of the input.\n * @docs-private\n */\n @Input() name!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n }\n protected _required: boolean | undefined;\n\n /** Input type of the element. */\n @Input()\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n this._type = value || 'text';\n this._validateType();\n\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\n }\n }\n protected _type = 'text';\n\n /** An object used to control when error messages are shown. */\n @Input()\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value: ErrorStateMatcher) {\n this._errorStateTracker.matcher = value;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input('aria-describedby') userAriaDescribedBy!: string;\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n @Input()\n get value(): string {\n return this._signalBasedValueAccessor\n ? this._signalBasedValueAccessor.value()\n : this._inputValueAccessor.value;\n }\n set value(value: any) {\n if (value !== this.value) {\n if (this._signalBasedValueAccessor) {\n this._signalBasedValueAccessor.value.set(value);\n } else {\n this._inputValueAccessor.value = value;\n }\n\n this.stateChanges.next();\n }\n }\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: BooleanInput) {\n this._readonly = coerceBooleanProperty(value);\n }\n private _readonly = false;\n\n /** Whether the input should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n disabledInteractive: boolean;\n\n /** Whether the input is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value: boolean) {\n this._errorStateTracker.errorState = value;\n }\n\n protected _neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week',\n ].filter(t => getSupportedInputTypes().has(t));\n\n constructor(...args: unknown[]);\n\n constructor() {\n const parentForm = inject(NgForm, {optional: true});\n const parentFormGroup = inject(FormGroupDirective, {optional: true});\n const defaultErrorStateMatcher = inject(ErrorStateMatcher);\n const accessor = inject(MAT_INPUT_VALUE_ACCESSOR, {optional: true, self: true});\n\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n\n if (accessor) {\n if (isSignal(accessor.value)) {\n this._signalBasedValueAccessor = accessor;\n } else {\n this._inputValueAccessor = accessor;\n }\n } else {\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = element;\n }\n\n this._previousNativeValue = this.value;\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (this._platform.IOS) {\n this._ngZone.runOutsideAngular(() => {\n this._cleanupIosKeyup = this._renderer.listen(element, 'keyup', this._iOSKeyupListener);\n });\n }\n\n this._errorStateTracker = new _ErrorStateTracker(\n defaultErrorStateMatcher,\n this.ngControl,\n parentFormGroup,\n parentForm,\n this.stateChanges,\n );\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!this._formField;\n this.disabledInteractive = this._config?.disabledInteractive || false;\n\n if (this._isNativeSelect) {\n this.controlType = (element as HTMLSelectElement).multiple\n ? 'mat-native-select-multiple'\n : 'mat-native-select';\n }\n\n if (this._signalBasedValueAccessor) {\n effect(() => {\n // Read the value so the effect can register the dependency.\n this._signalBasedValueAccessor!.value();\n this.stateChanges.next();\n });\n }\n }\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n\n ngOnChanges() {\n this.stateChanges.next();\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n\n this._cleanupIosKeyup?.();\n this._cleanupWebkitWheel?.();\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n\n // Since the input isn't a `ControlValueAccessor`, we don't have a good way of knowing when\n // the disabled state has changed. We can't use the `ngControl.statusChanges`, because it\n // won't fire if the input is disabled with `emitEvents = false`, despite the input becoming\n // disabled.\n if (this.ngControl.disabled !== null && this.ngControl.disabled !== this.disabled) {\n this.disabled = this.ngControl.disabled;\n this.stateChanges.next();\n }\n }\n\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n\n /** Focuses the input. */\n focus(options?: FocusOptions): void {\n this._elementRef.nativeElement.focus(options);\n }\n\n /** Refreshes the error state of the input. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n\n /** Callback for the cases where the focused state of the input changes. */\n _focusChanged(isFocused: boolean) {\n if (isFocused === this.focused) {\n return;\n }\n\n if (!this._isNativeSelect && isFocused && this.disabled && this.disabledInteractive) {\n const element = this._elementRef.nativeElement as HTMLInputElement;\n\n // Focusing an input that has text will cause all the text to be selected. Clear it since\n // the user won't be able to change it. This is based on the internal implementation.\n if (element.type === 'number') {\n // setSelectionRange doesn't work on number inputs so it needs to be set briefly to text.\n element.type = 'text';\n element.setSelectionRange(0, 0);\n element.type = 'number';\n } else {\n element.setSelectionRange(0, 0);\n }\n }\n\n this.focused = isFocused;\n this.stateChanges.next();\n }\n\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n protected _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n private _dirtyCheckPlaceholder() {\n const placeholder = this._getPlaceholder();\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder\n ? element.setAttribute('placeholder', placeholder)\n : element.removeAttribute('placeholder');\n }\n }\n\n /** Gets the current placeholder of the form field. */\n protected _getPlaceholder(): string | null {\n return this.placeholder || null;\n }\n\n /** Make sure the input is a supported type. */\n protected _validateType() {\n if (\n MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)\n ) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n\n /** Checks whether the input type is one of the types that are never empty. */\n protected _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n protected _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = (this._elementRef.nativeElement as HTMLInputElement).validity;\n return validity && validity.badInput;\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty(): boolean {\n return (\n !this._isNeverEmpty() &&\n !this._elementRef.nativeElement.value &&\n !this._isBadInput() &&\n !this.autofilled\n );\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat(): boolean {\n if (this._isNativeSelect) {\n // For a single-selection `<select>`, the label should float when the selected option has\n // a non-empty display value. For a `<select multiple>`, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement as HTMLSelectElement;\n const firstOption: HTMLOptionElement | undefined = selectElement.options[0];\n\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return (\n this.focused ||\n selectElement.multiple ||\n !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label)\n );\n } else {\n return (this.focused && !this.disabled) || !this.empty;\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get describedByIds(): string[] {\n const element = this._elementRef.nativeElement;\n const existingDescribedBy = element.getAttribute('aria-describedby');\n\n return existingDescribedBy?.split(' ') || [];\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids: string[]) {\n const element = this._elementRef.nativeElement;\n\n if (ids.length) {\n element.setAttribute('aria-describedby', ids.join(' '));\n } else {\n element.removeAttribute('aria-describedby');\n }\n }\n\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n\n /** Whether the form control is a native select that is displayed inline. */\n _isInlineSelect(): boolean {\n const element = this._elementRef.nativeElement as HTMLSelectElement;\n return this._isNativeSelect && (element.multiple || element.size > 1);\n }\n\n private _iOSKeyupListener = (event: Event): void => {\n const el = event.target as HTMLInputElement;\n\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n };\n\n /** Gets the value to set on the `readonly` attribute. */\n protected _getReadonlyAttribute(): string | null {\n if (this._isNativeSelect) {\n return null;\n }\n\n if (this.readonly || (this.disabled && this.disabledInteractive)) {\n return 'true';\n }\n\n return null;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {TextFieldModule} from '@angular/cdk/text-field';\nimport {NgModule} from '@angular/core';\nimport {MatFormFieldModule} from '../form-field';\nimport {MatInput} from './input';\n\n@NgModule({\n imports: [MatFormFieldModule, MatInput],\n exports: [MatInput, MatFormFieldModule, TextFieldModule, BidiModule],\n})\nexport class MatInputModule {}\n"],"names":["getMatInputUnsupportedTypeError","type","Error","MAT_INPUT_INVALID_TYPES","MAT_INPUT_CONFIG","InjectionToken","MatInput","_elementRef","inject","ElementRef","_platform","Platform","ngControl","NgControl","optional","self","_autofillMonitor","AutofillMonitor","_ngZone","NgZone","_formField","MAT_FORM_FIELD","_renderer","Renderer2","_uid","_IdGenerator","getId","_previousNativeValue","_inputValueAccessor","_signalBasedValueAccessor","_previousPlaceholder","_errorStateTracker","_config","_cleanupIosKeyup","_cleanupWebkitWheel","_isServer","_isNativeSelect","_isTextarea","_isInFormField","focused","stateChanges","Subject","controlType","autofilled","disabled","_disabled","value","coerceBooleanProperty","next","id","_id","placeholder","name","required","_required","control","hasValidator","Validators","_type","_validateType","getSupportedInputTypes","has","nativeElement","errorStateMatcher","matcher","userAriaDescribedBy","set","readonly","_readonly","disabledInteractive","errorState","_neverEmptyInputTypes","filter","t","constructor","parentForm","NgForm","parentFormGroup","FormGroupDirective","defaultErrorStateMatcher","ErrorStateMatcher","accessor","MAT_INPUT_VALUE_ACCESSOR","element","nodeName","toLowerCase","isSignal","IOS","runOutsideAngular","listen","_iOSKeyupListener","_ErrorStateTracker","isBrowser","multiple","effect","ngAfterViewInit","monitor","subscribe","event","isAutofilled","ngOnChanges","ngOnDestroy","complete","stopMonitoring","ngDoCheck","updateErrorState","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","focus","options","_focusChanged","isFocused","setSelectionRange","_onInput","newValue","_getPlaceholder","setAttribute","removeAttribute","indexOf","ngDevMode","_isNeverEmpty","_isBadInput","validity","badInput","empty","shouldLabelFloat","selectElement","firstOption","selectedIndex","label","describedByIds","existingDescribedBy","getAttribute","split","setDescribedByIds","ids","length","join","onContainerClick","_isInlineSelect","size","el","target","selectionStart","selectionEnd","_getReadonlyAttribute","deps","i0","ɵɵFactoryTarget","Directive","ɵdir","ɵɵngDeclareDirective","minVersion","version","isStandalone","selector","inputs","booleanAttribute","host","listeners","properties","classAttribute","providers","provide","MatFormFieldControl","useExisting","exportAs","usesOnChanges","ngImport","decorators","args","Input","transform","MatInputModule","NgModule","imports","MatFormFieldModule","exports","TextFieldModule","BidiModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-item-harness-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-harness-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/action-list-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/nav-list-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/selection-list-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {BaseListItemHarnessFilters, SubheaderHarnessFilters} from './list-harness-filters';\n\nconst iconSelector = '.mat-mdc-list-item-icon';\nconst avatarSelector = '.mat-mdc-list-item-avatar';\n\n/**\n * Gets a `HarnessPredicate` that applies the given `BaseListItemHarnessFilters` to the given\n * list item harness.\n * @template H The type of list item harness to create a predicate for.\n * @param harnessType A constructor for a list item harness.\n * @param options An instance of `BaseListItemHarnessFilters` to apply.\n * @return A `HarnessPredicate` for the given harness type with the given options applied.\n */\nexport function getListItemPredicate<H extends MatListItemHarnessBase>(\n harnessType: ComponentHarnessConstructor<H>,\n options: BaseListItemHarnessFilters,\n): HarnessPredicate<H> {\n return new HarnessPredicate(harnessType, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('fullText', options.fullText, (harness, fullText) =>\n HarnessPredicate.stringMatches(harness.getFullText(), fullText),\n )\n .addOption('title', options.title, (harness, title) =>\n HarnessPredicate.stringMatches(harness.getTitle(), title),\n )\n .addOption('secondaryText', options.secondaryText, (harness, secondaryText) =>\n HarnessPredicate.stringMatches(harness.getSecondaryText(), secondaryText),\n )\n .addOption('tertiaryText', options.tertiaryText, (harness, tertiaryText) =>\n HarnessPredicate.stringMatches(harness.getTertiaryText(), tertiaryText),\n );\n}\n\n/** Harness for interacting with a list subheader. */\nexport class MatSubheaderHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-subheader';\n\n static with(options: SubheaderHarnessFilters = {}): HarnessPredicate<MatSubheaderHarness> {\n return new HarnessPredicate(MatSubheaderHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n\n /** Gets the full text content of the list item (including text from any font icons). */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n}\n\n/** Selectors for the various list item sections that may contain user content. */\nexport enum MatListItemSection {\n CONTENT = '.mdc-list-item__content',\n}\n\n/** Enum describing the possible variants of a list item. */\nexport enum MatListItemType {\n ONE_LINE_ITEM,\n TWO_LINE_ITEM,\n THREE_LINE_ITEM,\n}\n\n/**\n * Shared behavior among the harnesses for the various `MatListItem` flavors.\n * @docs-private\n */\nexport abstract class MatListItemHarnessBase extends ContentContainerComponentHarness<MatListItemSection> {\n private _lines = this.locatorForAll('.mat-mdc-list-item-line');\n private _primaryText = this.locatorFor('.mdc-list-item__primary-text');\n private _avatar = this.locatorForOptional('.mat-mdc-list-item-avatar');\n private _icon = this.locatorForOptional('.mat-mdc-list-item-icon');\n private _unscopedTextContent = this.locatorFor('.mat-mdc-list-item-unscoped-content');\n\n /** Gets the type of the list item, currently describing how many lines there are. */\n async getType(): Promise<MatListItemType> {\n const host = await this.host();\n const [isOneLine, isTwoLine] = await parallel(() => [\n host.hasClass('mdc-list-item--with-one-line'),\n host.hasClass('mdc-list-item--with-two-lines'),\n ]);\n if (isOneLine) {\n return MatListItemType.ONE_LINE_ITEM;\n } else if (isTwoLine) {\n return MatListItemType.TWO_LINE_ITEM;\n } else {\n return MatListItemType.THREE_LINE_ITEM;\n }\n }\n\n /**\n * Gets the full text content of the list item, excluding text\n * from icons and avatars.\n *\n * @deprecated Use the `getFullText` method instead.\n * @breaking-change 16.0.0\n */\n async getText(): Promise<string> {\n return this.getFullText();\n }\n\n /**\n * Gets the full text content of the list item, excluding text\n * from icons and avatars.\n */\n async getFullText(): Promise<string> {\n return (await this.host()).text({exclude: `${iconSelector}, ${avatarSelector}`});\n }\n\n /** Gets the title of the list item. */\n async getTitle(): Promise<string> {\n return (await this._primaryText()).text();\n }\n\n /** Whether the list item is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--disabled');\n }\n\n /**\n * Gets the secondary line text of the list item. Null if the list item\n * does not have a secondary line.\n */\n async getSecondaryText(): Promise<string | null> {\n const type = await this.getType();\n if (type === MatListItemType.ONE_LINE_ITEM) {\n return null;\n }\n\n const [lines, unscopedTextContent] = await parallel(() => [\n this._lines(),\n this._unscopedTextContent(),\n ]);\n\n // If there is no explicit line for the secondary text, the unscoped text content\n // is rendered as the secondary text (with potential text wrapping enabled).\n if (lines.length >= 1) {\n return lines[0].text();\n } else {\n return unscopedTextContent.text();\n }\n }\n\n /**\n * Gets the tertiary line text of the list item. Null if the list item\n * does not have a tertiary line.\n */\n async getTertiaryText(): Promise<string | null> {\n const type = await this.getType();\n if (type !== MatListItemType.THREE_LINE_ITEM) {\n return null;\n }\n\n const [lines, unscopedTextContent] = await parallel(() => [\n this._lines(),\n this._unscopedTextContent(),\n ]);\n\n // First we check if there is an explicit line for the tertiary text. If so, we return it.\n // If there is at least an explicit secondary line though, then we know that the unscoped\n // text content corresponds to the tertiary line. If there are no explicit lines at all,\n // we know that the unscoped text content from the secondary text just wraps into the third\n // line, but there *no* actual dedicated tertiary text.\n if (lines.length === 2) {\n return lines[1].text();\n } else if (lines.length === 1) {\n return unscopedTextContent.text();\n }\n return null;\n }\n\n /** Whether this list item has an avatar. */\n async hasAvatar(): Promise<boolean> {\n return !!(await this._avatar());\n }\n\n /** Whether this list item has an icon. */\n async hasIcon(): Promise<boolean> {\n return !!(await this._icon());\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {DividerHarnessFilters, MatDividerHarness} from '../../divider/testing';\nimport {BaseListItemHarnessFilters, SubheaderHarnessFilters} from './list-harness-filters';\nimport {MatSubheaderHarness} from './list-item-harness-base';\n\n/** Represents a section of a list falling under a specific header. */\nexport interface ListSection<I> {\n /** The heading for this list section. `undefined` if there is no heading. */\n heading?: string;\n\n /** The items in this list section. */\n items: I[];\n}\n\n/**\n * Shared behavior among the harnesses for the various `MatList` flavors.\n * @template T A constructor type for a list item harness type used by this list harness.\n * @template C The list item harness type that `T` constructs.\n * @template F The filter type used filter list item harness of type `C`.\n * @docs-private\n */\nexport abstract class MatListHarnessBase<\n T extends ComponentHarnessConstructor<C> & {with: (options?: F) => HarnessPredicate<C>},\n C extends ComponentHarness,\n F extends BaseListItemHarnessFilters,\n> extends ComponentHarness {\n protected _itemHarness: T;\n\n /**\n * Gets a list of harnesses representing the items in this list.\n * @param filters Optional filters used to narrow which harnesses are included\n * @return The list of items matching the given filters.\n */\n async getItems(filters?: F): Promise<C[]> {\n return this.locatorForAll(this._itemHarness.with(filters))();\n }\n\n /**\n * Gets a list of `ListSection` representing the list items grouped by subheaders. If the list has\n * no subheaders it is represented as a single `ListSection` with an undefined `heading` property.\n * @param filters Optional filters used to narrow which list item harnesses are included\n * @return The list of items matching the given filters, grouped into sections by subheader.\n */\n async getItemsGroupedBySubheader(filters?: F): Promise<ListSection<C>[]> {\n type Section = {items: C[]; heading?: Promise<string>};\n const listSections: Section[] = [];\n let currentSection: Section = {items: []};\n const itemsAndSubheaders = await this.getItemsWithSubheadersAndDividers({\n item: filters,\n divider: false,\n });\n\n for (const itemOrSubheader of itemsAndSubheaders) {\n if (itemOrSubheader instanceof MatSubheaderHarness) {\n if (currentSection.heading !== undefined || currentSection.items.length) {\n listSections.push(currentSection);\n }\n currentSection = {heading: itemOrSubheader.getText(), items: []};\n } else {\n currentSection.items.push(itemOrSubheader);\n }\n }\n if (\n currentSection.heading !== undefined ||\n currentSection.items.length ||\n !listSections.length\n ) {\n listSections.push(currentSection);\n }\n\n // Concurrently wait for all sections to resolve their heading if present.\n return parallel(() =>\n listSections.map(async s => ({items: s.items, heading: await s.heading})),\n );\n }\n\n /**\n * Gets a list of sub-lists representing the list items grouped by dividers. If the list has no\n * dividers it is represented as a list with a single sub-list.\n * @param filters Optional filters used to narrow which list item harnesses are included\n * @return The list of items matching the given filters, grouped into sub-lists by divider.\n */\n async getItemsGroupedByDividers(filters?: F): Promise<C[][]> {\n const listSections: C[][] = [[]];\n const itemsAndDividers = await this.getItemsWithSubheadersAndDividers({\n item: filters,\n subheader: false,\n });\n for (const itemOrDivider of itemsAndDividers) {\n if (itemOrDivider instanceof MatDividerHarness) {\n listSections.push([]);\n } else {\n listSections[listSections.length - 1].push(itemOrDivider);\n }\n }\n return listSections;\n }\n\n /**\n * Gets a list of harnesses representing all of the items, subheaders, and dividers\n * (in the order they appear in the list). Use `instanceof` to check which type of harness a given\n * item is.\n * @param filters Optional filters used to narrow which list items, subheaders, and dividers are\n * included. A value of `false` for the `item`, `subheader`, or `divider` properties indicates\n * that the respective harness type should be omitted completely.\n * @return The list of harnesses representing the items, subheaders, and dividers matching the\n * given filters.\n */\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader: false;\n divider: false;\n }): Promise<[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader: false;\n divider: false;\n }): Promise<C[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader?: SubheaderHarnessFilters | false;\n divider: false;\n }): Promise<MatSubheaderHarness[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader: false;\n divider?: DividerHarnessFilters | false;\n }): Promise<MatDividerHarness[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider: false;\n }): Promise<(C | MatSubheaderHarness)[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader: false;\n divider?: false | DividerHarnessFilters;\n }): Promise<(C | MatDividerHarness)[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader?: false | SubheaderHarnessFilters;\n divider?: false | DividerHarnessFilters;\n }): Promise<(MatSubheaderHarness | MatDividerHarness)[]>;\n getItemsWithSubheadersAndDividers(filters?: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider?: DividerHarnessFilters | false;\n }): Promise<(C | MatSubheaderHarness | MatDividerHarness)[]>;\n async getItemsWithSubheadersAndDividers(\n filters: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider?: DividerHarnessFilters | false;\n } = {},\n ): Promise<(C | MatSubheaderHarness | MatDividerHarness)[]> {\n const query = [];\n if (filters.item !== false) {\n query.push(this._itemHarness.with(filters.item || ({} as F)));\n }\n if (filters.subheader !== false) {\n query.push(MatSubheaderHarness.with(filters.subheader));\n }\n if (filters.divider !== false) {\n query.push(MatDividerHarness.with(filters.divider));\n }\n return this.locatorForAll(...query)();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {ActionListHarnessFilters, ActionListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a action-list in tests. */\nexport class MatActionListHarness extends MatListHarnessBase<\n typeof MatActionListItemHarness,\n MatActionListItemHarness,\n ActionListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatActionList` instance. */\n static hostSelector = '.mat-mdc-action-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an action list with specific\n * attributes.\n * @param options Options for filtering which action list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatActionListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ActionListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatActionListItemHarness;\n}\n\n/** Harness for interacting with an action list item. */\nexport class MatActionListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatActionListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list item with specific\n * attributes.\n * @param options Options for filtering which action list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatActionListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ActionListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options);\n }\n\n /** Clicks on the action list item. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Focuses the action list item. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the action list item. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the action list item is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {ListHarnessFilters, ListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a list in tests. */\nexport class MatListHarness extends MatListHarnessBase<\n typeof MatListItemHarness,\n MatListItemHarness,\n ListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatList` instance. */\n static hostSelector = '.mat-mdc-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list with specific attributes.\n * @param options Options for filtering which list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatListItemHarness;\n}\n\n/** Harness for interacting with a list item. */\nexport class MatListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list item with specific attributes.\n * @param options Options for filtering which list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {NavListHarnessFilters, NavListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a mat-nav-list in tests. */\nexport class MatNavListHarness extends MatListHarnessBase<\n typeof MatNavListItemHarness,\n MatNavListItemHarness,\n NavListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatNavList` instance. */\n static hostSelector = '.mat-mdc-nav-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a nav list with specific\n * attributes.\n * @param options Options for filtering which nav list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatNavListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: NavListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatNavListItemHarness;\n}\n\n/** Harness for interacting with a nav-list item. */\nexport class MatNavListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatNavListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a nav list item with specific\n * attributes.\n * @param options Options for filtering which nav list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatNavListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: NavListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options)\n .addOption('href', options.href, async (harness, href) =>\n HarnessPredicate.stringMatches(harness.getHref(), href),\n )\n .addOption(\n 'activated',\n options.activated,\n async (harness, activated) => (await harness.isActivated()) === activated,\n );\n }\n\n /** Gets the href for this nav list item. */\n async getHref(): Promise<string | null> {\n return (await this.host()).getAttribute('href');\n }\n\n /** Clicks on the nav list item. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Focuses the nav list item. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the nav list item. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the nav list item is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Whether the list item is activated. Should only be used for nav list items. */\n async isActivated(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--activated');\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarnessConstructor, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatListOptionTogglePosition} from '../../list';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {\n ListItemHarnessFilters,\n ListOptionHarnessFilters,\n SelectionListHarnessFilters,\n} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a selection-list in tests. */\nexport class MatSelectionListHarness extends MatListHarnessBase<\n typeof MatListOptionHarness,\n MatListOptionHarness,\n ListOptionHarnessFilters\n> {\n /** The selector for the host element of a `MatSelectionList` instance. */\n static hostSelector = '.mat-mdc-selection-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a selection list with specific\n * attributes.\n * @param options Options for filtering which selection list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSelectionListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SelectionListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatListOptionHarness;\n\n /** Whether the selection list is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /**\n * Selects all items matching any of the given filters.\n * @param filters Filters that specify which items should be selected.\n */\n async selectItems(...filters: ListOptionHarnessFilters[]): Promise<void> {\n const items = await this._getItems(filters);\n await parallel(() => items.map(item => item.select()));\n }\n\n /**\n * Deselects all items matching any of the given filters.\n * @param filters Filters that specify which items should be deselected.\n */\n async deselectItems(...filters: ListItemHarnessFilters[]): Promise<void> {\n const items = await this._getItems(filters);\n await parallel(() => items.map(item => item.deselect()));\n }\n\n /** Gets all items matching the given list of filters. */\n private async _getItems(filters: ListOptionHarnessFilters[]): Promise<MatListOptionHarness[]> {\n if (!filters.length) {\n return this.getItems();\n }\n const matches = await parallel(() =>\n filters.map(filter => this.locatorForAll(MatListOptionHarness.with(filter))()),\n );\n return matches.reduce((result, current) => [...result, ...current], []);\n }\n}\n\n/** Harness for interacting with a list option. */\nexport class MatListOptionHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListOption` instance. */\n static hostSelector = '.mat-mdc-list-option';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list option with specific\n * attributes.\n * @param options Options for filtering which list option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListOptionHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListOptionHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options).addOption(\n 'is selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n );\n }\n\n private _beforeCheckbox = this.locatorForOptional('.mdc-list-item__start .mdc-checkbox');\n private _beforeRadio = this.locatorForOptional('.mdc-list-item__start .mdc-radio');\n\n /** Gets the position of the checkbox relative to the list option content. */\n async getCheckboxPosition(): Promise<MatListOptionTogglePosition> {\n return (await this._beforeCheckbox()) !== null ? 'before' : 'after';\n }\n\n /** Gets the position of the radio relative to the list option content. */\n async getRadioPosition(): Promise<MatListOptionTogglePosition> {\n return (await this._beforeRadio()) !== null ? 'before' : 'after';\n }\n\n /** Whether the list option is selected. */\n async isSelected(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-selected')) === 'true';\n }\n\n /** Focuses the list option. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the list option. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the list option is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Toggles the checked state of the checkbox. */\n async toggle() {\n return (await this.host()).click();\n }\n\n /**\n * Puts the list option in a checked state by toggling it if it is currently\n * unchecked, or doing nothing if it is already checked.\n */\n async select() {\n if (!(await this.isSelected())) {\n return this.toggle();\n }\n }\n\n /**\n * Puts the list option in an unchecked state by toggling it if it is currently\n * checked, or doing nothing if it is already unchecked.\n */\n async deselect() {\n if (await this.isSelected()) {\n return this.toggle();\n }\n }\n}\n"],"names":["iconSelector","avatarSelector","getListItemPredicate","harnessType","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","fullText","getFullText","title","getTitle","secondaryText","getSecondaryText","tertiaryText","getTertiaryText","MatSubheaderHarness","ComponentHarness","hostSelector","with","host","MatListItemSection","MatListItemType","MatListItemHarnessBase","ContentContainerComponentHarness","_lines","locatorForAll","_primaryText","locatorFor","_avatar","locatorForOptional","_icon","_unscopedTextContent","getType","isOneLine","isTwoLine","parallel","hasClass","ONE_LINE_ITEM","TWO_LINE_ITEM","THREE_LINE_ITEM","exclude","isDisabled","type","lines","unscopedTextContent","length","hasAvatar","hasIcon","MatListHarnessBase","_itemHarness","getItems","filters","getItemsGroupedBySubheader","listSections","currentSection","items","itemsAndSubheaders","getItemsWithSubheadersAndDividers","item","divider","itemOrSubheader","heading","undefined","push","map","s","getItemsGroupedByDividers","itemsAndDividers","subheader","itemOrDivider","MatDividerHarness","query","MatActionListHarness","MatActionListItemHarness","click","focus","blur","isFocused","MatListHarness","MatListItemHarness","MatNavListHarness","MatNavListItemHarness","href","getHref","activated","isActivated","getAttribute","MatSelectionListHarness","MatListOptionHarness","selectItems","_getItems","select","deselectItems","deselect","matches","filter","reduce","result","current","selected","isSelected","_beforeCheckbox","_beforeRadio","getCheckboxPosition","getRadioPosition","toggle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"list-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-item-harness-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-harness-base.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/action-list-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/list-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/nav-list-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/list/testing/selection-list-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {BaseListItemHarnessFilters, SubheaderHarnessFilters} from './list-harness-filters';\n\nconst iconSelector = '.mat-mdc-list-item-icon';\nconst avatarSelector = '.mat-mdc-list-item-avatar';\n\n/**\n * Gets a `HarnessPredicate` that applies the given `BaseListItemHarnessFilters` to the given\n * list item harness.\n * @template H The type of list item harness to create a predicate for.\n * @param harnessType A constructor for a list item harness.\n * @param options An instance of `BaseListItemHarnessFilters` to apply.\n * @return A `HarnessPredicate` for the given harness type with the given options applied.\n */\nexport function getListItemPredicate<H extends MatListItemHarnessBase>(\n harnessType: ComponentHarnessConstructor<H>,\n options: BaseListItemHarnessFilters,\n): HarnessPredicate<H> {\n return new HarnessPredicate(harnessType, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption('fullText', options.fullText, (harness, fullText) =>\n HarnessPredicate.stringMatches(harness.getFullText(), fullText),\n )\n .addOption('title', options.title, (harness, title) =>\n HarnessPredicate.stringMatches(harness.getTitle(), title),\n )\n .addOption('secondaryText', options.secondaryText, (harness, secondaryText) =>\n HarnessPredicate.stringMatches(harness.getSecondaryText(), secondaryText),\n )\n .addOption('tertiaryText', options.tertiaryText, (harness, tertiaryText) =>\n HarnessPredicate.stringMatches(harness.getTertiaryText(), tertiaryText),\n );\n}\n\n/** Harness for interacting with a list subheader. */\nexport class MatSubheaderHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-subheader';\n\n static with(options: SubheaderHarnessFilters = {}): HarnessPredicate<MatSubheaderHarness> {\n return new HarnessPredicate(MatSubheaderHarness, options).addOption(\n 'text',\n options.text,\n (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n\n /** Gets the full text content of the list item (including text from any font icons). */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n}\n\n/** Selectors for the various list item sections that may contain user content. */\nexport enum MatListItemSection {\n CONTENT = '.mdc-list-item__content',\n}\n\n/** Enum describing the possible variants of a list item. */\nexport enum MatListItemType {\n ONE_LINE_ITEM,\n TWO_LINE_ITEM,\n THREE_LINE_ITEM,\n}\n\n/**\n * Shared behavior among the harnesses for the various `MatListItem` flavors.\n * @docs-private\n */\nexport abstract class MatListItemHarnessBase extends ContentContainerComponentHarness<MatListItemSection> {\n private _lines = this.locatorForAll('.mat-mdc-list-item-line');\n private _primaryText = this.locatorFor('.mdc-list-item__primary-text');\n private _avatar = this.locatorForOptional('.mat-mdc-list-item-avatar');\n private _icon = this.locatorForOptional('.mat-mdc-list-item-icon');\n private _unscopedTextContent = this.locatorFor('.mat-mdc-list-item-unscoped-content');\n\n /** Gets the type of the list item, currently describing how many lines there are. */\n async getType(): Promise<MatListItemType> {\n const host = await this.host();\n const [isOneLine, isTwoLine] = await parallel(() => [\n host.hasClass('mdc-list-item--with-one-line'),\n host.hasClass('mdc-list-item--with-two-lines'),\n ]);\n if (isOneLine) {\n return MatListItemType.ONE_LINE_ITEM;\n } else if (isTwoLine) {\n return MatListItemType.TWO_LINE_ITEM;\n } else {\n return MatListItemType.THREE_LINE_ITEM;\n }\n }\n\n /**\n * Gets the full text content of the list item, excluding text\n * from icons and avatars.\n *\n * @deprecated Use the `getFullText` method instead.\n * @breaking-change 16.0.0\n */\n async getText(): Promise<string> {\n return this.getFullText();\n }\n\n /**\n * Gets the full text content of the list item, excluding text\n * from icons and avatars.\n */\n async getFullText(): Promise<string> {\n return (await this.host()).text({exclude: `${iconSelector}, ${avatarSelector}`});\n }\n\n /** Gets the title of the list item. */\n async getTitle(): Promise<string> {\n return (await this._primaryText()).text();\n }\n\n /** Whether the list item is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--disabled');\n }\n\n /**\n * Gets the secondary line text of the list item. Null if the list item\n * does not have a secondary line.\n */\n async getSecondaryText(): Promise<string | null> {\n const type = await this.getType();\n if (type === MatListItemType.ONE_LINE_ITEM) {\n return null;\n }\n\n const [lines, unscopedTextContent] = await parallel(() => [\n this._lines(),\n this._unscopedTextContent(),\n ]);\n\n // If there is no explicit line for the secondary text, the unscoped text content\n // is rendered as the secondary text (with potential text wrapping enabled).\n if (lines.length >= 1) {\n return lines[0].text();\n } else {\n return unscopedTextContent.text();\n }\n }\n\n /**\n * Gets the tertiary line text of the list item. Null if the list item\n * does not have a tertiary line.\n */\n async getTertiaryText(): Promise<string | null> {\n const type = await this.getType();\n if (type !== MatListItemType.THREE_LINE_ITEM) {\n return null;\n }\n\n const [lines, unscopedTextContent] = await parallel(() => [\n this._lines(),\n this._unscopedTextContent(),\n ]);\n\n // First we check if there is an explicit line for the tertiary text. If so, we return it.\n // If there is at least an explicit secondary line though, then we know that the unscoped\n // text content corresponds to the tertiary line. If there are no explicit lines at all,\n // we know that the unscoped text content from the secondary text just wraps into the third\n // line, but there *no* actual dedicated tertiary text.\n if (lines.length === 2) {\n return lines[1].text();\n } else if (lines.length === 1) {\n return unscopedTextContent.text();\n }\n return null;\n }\n\n /** Whether this list item has an avatar. */\n async hasAvatar(): Promise<boolean> {\n return !!(await this._avatar());\n }\n\n /** Whether this list item has an icon. */\n async hasIcon(): Promise<boolean> {\n return !!(await this._icon());\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {DividerHarnessFilters, MatDividerHarness} from '../../divider/testing';\nimport {BaseListItemHarnessFilters, SubheaderHarnessFilters} from './list-harness-filters';\nimport {MatSubheaderHarness} from './list-item-harness-base';\n\n/** Represents a section of a list falling under a specific header. */\nexport interface ListSection<I> {\n /** The heading for this list section. `undefined` if there is no heading. */\n heading?: string;\n\n /** The items in this list section. */\n items: I[];\n}\n\n/**\n * Shared behavior among the harnesses for the various `MatList` flavors.\n * @template T A constructor type for a list item harness type used by this list harness.\n * @template C The list item harness type that `T` constructs.\n * @template F The filter type used filter list item harness of type `C`.\n * @docs-private\n */\nexport abstract class MatListHarnessBase<\n T extends ComponentHarnessConstructor<C> & {with: (options?: F) => HarnessPredicate<C>},\n C extends ComponentHarness,\n F extends BaseListItemHarnessFilters,\n> extends ComponentHarness {\n protected _itemHarness!: T;\n\n /**\n * Gets a list of harnesses representing the items in this list.\n * @param filters Optional filters used to narrow which harnesses are included\n * @return The list of items matching the given filters.\n */\n async getItems(filters?: F): Promise<C[]> {\n return this.locatorForAll(this._itemHarness.with(filters))();\n }\n\n /**\n * Gets a list of `ListSection` representing the list items grouped by subheaders. If the list has\n * no subheaders it is represented as a single `ListSection` with an undefined `heading` property.\n * @param filters Optional filters used to narrow which list item harnesses are included\n * @return The list of items matching the given filters, grouped into sections by subheader.\n */\n async getItemsGroupedBySubheader(filters?: F): Promise<ListSection<C>[]> {\n type Section = {items: C[]; heading?: Promise<string>};\n const listSections: Section[] = [];\n let currentSection: Section = {items: []};\n const itemsAndSubheaders = await this.getItemsWithSubheadersAndDividers({\n item: filters,\n divider: false,\n });\n\n for (const itemOrSubheader of itemsAndSubheaders) {\n if (itemOrSubheader instanceof MatSubheaderHarness) {\n if (currentSection.heading !== undefined || currentSection.items.length) {\n listSections.push(currentSection);\n }\n currentSection = {heading: itemOrSubheader.getText(), items: []};\n } else {\n currentSection.items.push(itemOrSubheader);\n }\n }\n if (\n currentSection.heading !== undefined ||\n currentSection.items.length ||\n !listSections.length\n ) {\n listSections.push(currentSection);\n }\n\n // Concurrently wait for all sections to resolve their heading if present.\n return parallel(() =>\n listSections.map(async s => ({items: s.items, heading: await s.heading})),\n );\n }\n\n /**\n * Gets a list of sub-lists representing the list items grouped by dividers. If the list has no\n * dividers it is represented as a list with a single sub-list.\n * @param filters Optional filters used to narrow which list item harnesses are included\n * @return The list of items matching the given filters, grouped into sub-lists by divider.\n */\n async getItemsGroupedByDividers(filters?: F): Promise<C[][]> {\n const listSections: C[][] = [[]];\n const itemsAndDividers = await this.getItemsWithSubheadersAndDividers({\n item: filters,\n subheader: false,\n });\n for (const itemOrDivider of itemsAndDividers) {\n if (itemOrDivider instanceof MatDividerHarness) {\n listSections.push([]);\n } else {\n listSections[listSections.length - 1].push(itemOrDivider);\n }\n }\n return listSections;\n }\n\n /**\n * Gets a list of harnesses representing all of the items, subheaders, and dividers\n * (in the order they appear in the list). Use `instanceof` to check which type of harness a given\n * item is.\n * @param filters Optional filters used to narrow which list items, subheaders, and dividers are\n * included. A value of `false` for the `item`, `subheader`, or `divider` properties indicates\n * that the respective harness type should be omitted completely.\n * @return The list of harnesses representing the items, subheaders, and dividers matching the\n * given filters.\n */\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader: false;\n divider: false;\n }): Promise<[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader: false;\n divider: false;\n }): Promise<C[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader?: SubheaderHarnessFilters | false;\n divider: false;\n }): Promise<MatSubheaderHarness[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader: false;\n divider?: DividerHarnessFilters | false;\n }): Promise<MatDividerHarness[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider: false;\n }): Promise<(C | MatSubheaderHarness)[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item?: F | false;\n subheader: false;\n divider?: false | DividerHarnessFilters;\n }): Promise<(C | MatDividerHarness)[]>;\n getItemsWithSubheadersAndDividers(filters: {\n item: false;\n subheader?: false | SubheaderHarnessFilters;\n divider?: false | DividerHarnessFilters;\n }): Promise<(MatSubheaderHarness | MatDividerHarness)[]>;\n getItemsWithSubheadersAndDividers(filters?: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider?: DividerHarnessFilters | false;\n }): Promise<(C | MatSubheaderHarness | MatDividerHarness)[]>;\n async getItemsWithSubheadersAndDividers(\n filters: {\n item?: F | false;\n subheader?: SubheaderHarnessFilters | false;\n divider?: DividerHarnessFilters | false;\n } = {},\n ): Promise<(C | MatSubheaderHarness | MatDividerHarness)[]> {\n const query = [];\n if (filters.item !== false) {\n query.push(this._itemHarness.with(filters.item || ({} as F)));\n }\n if (filters.subheader !== false) {\n query.push(MatSubheaderHarness.with(filters.subheader));\n }\n if (filters.divider !== false) {\n query.push(MatDividerHarness.with(filters.divider));\n }\n return this.locatorForAll(...query)();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {ActionListHarnessFilters, ActionListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a action-list in tests. */\nexport class MatActionListHarness extends MatListHarnessBase<\n typeof MatActionListItemHarness,\n MatActionListItemHarness,\n ActionListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatActionList` instance. */\n static hostSelector = '.mat-mdc-action-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an action list with specific\n * attributes.\n * @param options Options for filtering which action list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatActionListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ActionListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatActionListItemHarness;\n}\n\n/** Harness for interacting with an action list item. */\nexport class MatActionListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatActionListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list item with specific\n * attributes.\n * @param options Options for filtering which action list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatActionListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ActionListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options);\n }\n\n /** Clicks on the action list item. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Focuses the action list item. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the action list item. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the action list item is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {ListHarnessFilters, ListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a list in tests. */\nexport class MatListHarness extends MatListHarnessBase<\n typeof MatListItemHarness,\n MatListItemHarness,\n ListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatList` instance. */\n static hostSelector = '.mat-mdc-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list with specific attributes.\n * @param options Options for filtering which list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatListItemHarness;\n}\n\n/** Harness for interacting with a list item. */\nexport class MatListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list item with specific attributes.\n * @param options Options for filtering which list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {NavListHarnessFilters, NavListItemHarnessFilters} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a mat-nav-list in tests. */\nexport class MatNavListHarness extends MatListHarnessBase<\n typeof MatNavListItemHarness,\n MatNavListItemHarness,\n NavListItemHarnessFilters\n> {\n /** The selector for the host element of a `MatNavList` instance. */\n static hostSelector = '.mat-mdc-nav-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a nav list with specific\n * attributes.\n * @param options Options for filtering which nav list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatNavListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: NavListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatNavListItemHarness;\n}\n\n/** Harness for interacting with a nav-list item. */\nexport class MatNavListItemHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListItem` instance. */\n static hostSelector = `${MatNavListHarness.hostSelector} .mat-mdc-list-item`;\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a nav list item with specific\n * attributes.\n * @param options Options for filtering which nav list item instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatNavListItemHarness>(\n this: ComponentHarnessConstructor<T>,\n options: NavListItemHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options)\n .addOption('href', options.href, async (harness, href) =>\n HarnessPredicate.stringMatches(harness.getHref(), href),\n )\n .addOption(\n 'activated',\n options.activated,\n async (harness, activated) => (await harness.isActivated()) === activated,\n );\n }\n\n /** Gets the href for this nav list item. */\n async getHref(): Promise<string | null> {\n return (await this.host()).getAttribute('href');\n }\n\n /** Clicks on the nav list item. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Focuses the nav list item. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the nav list item. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the nav list item is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Whether the list item is activated. Should only be used for nav list items. */\n async isActivated(): Promise<boolean> {\n return (await this.host()).hasClass('mdc-list-item--activated');\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarnessConstructor, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatListOptionTogglePosition} from '../../list';\nimport {MatListHarnessBase} from './list-harness-base';\nimport {\n ListItemHarnessFilters,\n ListOptionHarnessFilters,\n SelectionListHarnessFilters,\n} from './list-harness-filters';\nimport {getListItemPredicate, MatListItemHarnessBase} from './list-item-harness-base';\n\n/** Harness for interacting with a selection-list in tests. */\nexport class MatSelectionListHarness extends MatListHarnessBase<\n typeof MatListOptionHarness,\n MatListOptionHarness,\n ListOptionHarnessFilters\n> {\n /** The selector for the host element of a `MatSelectionList` instance. */\n static hostSelector = '.mat-mdc-selection-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a selection list with specific\n * attributes.\n * @param options Options for filtering which selection list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatSelectionListHarness>(\n this: ComponentHarnessConstructor<T>,\n options: SelectionListHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n override _itemHarness = MatListOptionHarness;\n\n /** Whether the selection list is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /**\n * Selects all items matching any of the given filters.\n * @param filters Filters that specify which items should be selected.\n */\n async selectItems(...filters: ListOptionHarnessFilters[]): Promise<void> {\n const items = await this._getItems(filters);\n await parallel(() => items.map(item => item.select()));\n }\n\n /**\n * Deselects all items matching any of the given filters.\n * @param filters Filters that specify which items should be deselected.\n */\n async deselectItems(...filters: ListItemHarnessFilters[]): Promise<void> {\n const items = await this._getItems(filters);\n await parallel(() => items.map(item => item.deselect()));\n }\n\n /** Gets all items matching the given list of filters. */\n private async _getItems(filters: ListOptionHarnessFilters[]): Promise<MatListOptionHarness[]> {\n if (!filters.length) {\n return this.getItems();\n }\n const matches = await parallel(() =>\n filters.map(filter => this.locatorForAll(MatListOptionHarness.with(filter))()),\n );\n return matches.reduce((result, current) => [...result, ...current], []);\n }\n}\n\n/** Harness for interacting with a list option. */\nexport class MatListOptionHarness extends MatListItemHarnessBase {\n /** The selector for the host element of a `MatListOption` instance. */\n static hostSelector = '.mat-mdc-list-option';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a list option with specific\n * attributes.\n * @param options Options for filtering which list option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatListOptionHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ListOptionHarnessFilters = {},\n ): HarnessPredicate<T> {\n return getListItemPredicate(this, options).addOption(\n 'is selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n );\n }\n\n private _beforeCheckbox = this.locatorForOptional('.mdc-list-item__start .mdc-checkbox');\n private _beforeRadio = this.locatorForOptional('.mdc-list-item__start .mdc-radio');\n\n /** Gets the position of the checkbox relative to the list option content. */\n async getCheckboxPosition(): Promise<MatListOptionTogglePosition> {\n return (await this._beforeCheckbox()) !== null ? 'before' : 'after';\n }\n\n /** Gets the position of the radio relative to the list option content. */\n async getRadioPosition(): Promise<MatListOptionTogglePosition> {\n return (await this._beforeRadio()) !== null ? 'before' : 'after';\n }\n\n /** Whether the list option is selected. */\n async isSelected(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-selected')) === 'true';\n }\n\n /** Focuses the list option. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the list option. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the list option is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Toggles the checked state of the checkbox. */\n async toggle() {\n return (await this.host()).click();\n }\n\n /**\n * Puts the list option in a checked state by toggling it if it is currently\n * unchecked, or doing nothing if it is already checked.\n */\n async select() {\n if (!(await this.isSelected())) {\n return this.toggle();\n }\n }\n\n /**\n * Puts the list option in an unchecked state by toggling it if it is currently\n * checked, or doing nothing if it is already unchecked.\n */\n async deselect() {\n if (await this.isSelected()) {\n return this.toggle();\n }\n }\n}\n"],"names":["iconSelector","avatarSelector","getListItemPredicate","harnessType","options","HarnessPredicate","addOption","text","harness","stringMatches","getText","fullText","getFullText","title","getTitle","secondaryText","getSecondaryText","tertiaryText","getTertiaryText","MatSubheaderHarness","ComponentHarness","hostSelector","with","host","MatListItemSection","MatListItemType","MatListItemHarnessBase","ContentContainerComponentHarness","_lines","locatorForAll","_primaryText","locatorFor","_avatar","locatorForOptional","_icon","_unscopedTextContent","getType","isOneLine","isTwoLine","parallel","hasClass","ONE_LINE_ITEM","TWO_LINE_ITEM","THREE_LINE_ITEM","exclude","isDisabled","type","lines","unscopedTextContent","length","hasAvatar","hasIcon","MatListHarnessBase","_itemHarness","getItems","filters","getItemsGroupedBySubheader","listSections","currentSection","items","itemsAndSubheaders","getItemsWithSubheadersAndDividers","item","divider","itemOrSubheader","heading","undefined","push","map","s","getItemsGroupedByDividers","itemsAndDividers","subheader","itemOrDivider","MatDividerHarness","query","MatActionListHarness","MatActionListItemHarness","click","focus","blur","isFocused","MatListHarness","MatListItemHarness","MatNavListHarness","MatNavListItemHarness","href","getHref","activated","isActivated","getAttribute","MatSelectionListHarness","MatListOptionHarness","selectItems","_getItems","select","deselectItems","deselect","matches","filter","reduce","result","current","selected","isSelected","_beforeCheckbox","_beforeRadio","getCheckboxPosition","getRadioPosition","toggle"],"mappings":"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"}
|