Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

@s-libs/ng-mat-core

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@s-libs/ng-mat-core - npm Package Compare versions

Comparing version
20.0.0
to
20.1.0
+1
-1
fesm2022/ng-mat-core.mjs.map

@@ -1,1 +0,1 @@

{"version":3,"file":"ng-mat-core.mjs","sources":["../../../projects/ng-mat-core/src/lib/dialog/dialog.component.ts","../../../projects/ng-mat-core/src/lib/dialog/dialog.component.html","../../../projects/ng-mat-core/src/lib/dialog/sl-dialog.harness.ts","../../../projects/ng-mat-core/src/lib/dialog/sl-dialog.module.ts","../../../projects/ng-mat-core/src/lib/dialog/sl-dialog.service.ts","../../../projects/ng-mat-core/src/lib/mat-button-harness-with-icon.ts","../../../projects/ng-mat-core/src/lib/provide-mat-icons.ts","../../../projects/ng-mat-core/src/public-api.ts","../../../projects/ng-mat-core/src/ng-mat-core.ts"],"sourcesContent":["import { NgComponentOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n InjectionToken,\n Injector,\n Type,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ThemePalette } from '@angular/material/core';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\n\nexport type DialogButtonColor = NonNullable<ThemePalette> | 'default';\n\nexport interface DialogButton<T> {\n text: string;\n /**\n * {@link SlDialogService.open} will resolve to this value when the button is clicked. Defaults to {@link text}.\n */\n value?: T;\n /**\n * Defaults to `'primary'`, in accordance with the Material Design spec examples.\n */\n color?: DialogButtonColor;\n}\n\nexport interface DialogData<T> {\n title?: string;\n\n /**\n * Shown as the main content of the dialog.\n */\n text?: string;\n\n /**\n * A custom component to project into the dialog's content. It will appear below `text`, if both are defined. Note that you may put a static `title` attribute on the dialog class itself instead of using the {@link DialogData.title} option above. If both are defined, the option above will be used.\n */\n component?: Type<any> & { title?: string };\n\n /**\n * Use this to supply input to a custom component. Inject it into the component using the {@link SL_DIALOG_DATA} injection token.\n *\n * ```ts\n * @Component({ template: '{{ myInput }}' })\n * class MyDialogComponent {\n * constructor(@Inject(SL_DIALOG_DATA) public myInput: string) {}\n * }\n *\n * slDialogService.open({\n * component: MyDialogComponent,\n * slDialogData: 'My input.',\n * });\n * ```\n */\n slDialogData?: any;\n\n buttons?: Array<DialogButton<T>>;\n}\n\n/**\n * Injection token for a custom dialog component to receive input. See {@link DialogData.slDialogData}.\n */\nexport const SL_DIALOG_DATA = new InjectionToken('SL_DIALOG_DATA');\n\n/**\n * The {@link DialogButton.value} for the default \"OK\" button that is used if you do not specify any custom buttons for your dialog.\n */\nexport const DEFAULT_OK_VALUE = Symbol('OK');\n\n@Component({\n selector: 'sl-dialog',\n imports: [MatButtonModule, MatDialogModule, NgComponentOutlet],\n templateUrl: './dialog.component.html',\n styleUrl: './dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogComponent {\n protected data: DialogData<unknown> = inject(MAT_DIALOG_DATA);\n protected componentInjector = Injector.create({\n providers: [{ provide: SL_DIALOG_DATA, useValue: this.data.slDialogData }],\n parent: inject(Injector),\n });\n\n constructor() {\n this.data.buttons ??= [{ text: 'OK', value: DEFAULT_OK_VALUE }];\n }\n}\n","<h2 mat-dialog-title>{{ data.title ?? data.component?.title }}</h2>\n\n<mat-dialog-content class=\"mat-typography\">\n @if (data.text) {\n <p>{{ data.text }}</p>\n }\n @if (data.component) {\n <ng-container\n *ngComponentOutlet=\"data.component; injector: componentInjector\"\n />\n }\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n @for (button of data.buttons; track button) {\n <button\n mat-button\n [mat-dialog-close]=\"button.value ?? button.text\"\n [color]=\"button.color ?? 'primary'\"\n >\n {{ button.text }}\n </button>\n }\n</mat-dialog-actions>\n","import {\n BaseHarnessFilters,\n ContentContainerComponentHarness,\n HarnessLoader,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatDialogHarness } from '@angular/material/dialog/testing';\nimport { DialogButtonColor } from './dialog.component';\n\ninterface SlDialogHarnessFilters extends BaseHarnessFilters {\n title?: RegExp | string;\n}\n\n/**\n * Harness for interacting with a dialog opened via {@link SlDialogService.open}.\n */\nexport class SlDialogHarness extends ContentContainerComponentHarness {\n static hostSelector = 'sl-dialog';\n\n #getContent = this.locatorFor('mat-dialog-content');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a SlDialogHarness that meets certain criteria.\n */\n static with(\n options: SlDialogHarnessFilters,\n ): HarnessPredicate<SlDialogHarness> {\n return new HarnessPredicate(SlDialogHarness, options).addOption(\n 'title',\n options.title,\n async (harness, title) =>\n HarnessPredicate.stringMatches(harness.getTitle(), title),\n );\n }\n\n async getTitle(): Promise<string> {\n const title = await this.locatorFor('[mat-dialog-title]')();\n return title.text();\n }\n\n /**\n * Get the text displayed in the content of the dialog. Note this includes text from both the `text` and `component` options of {@link SlDialogService.open}.\n */\n async getContentText(): Promise<string> {\n const content = await this.#getContent();\n return content.text();\n }\n\n /**\n * Return the text of all the buttons.\n */\n async getButtonText(): Promise<string[]> {\n const buttons = await this.#getButtons();\n return Promise.all(buttons.map(async (button) => button.getText()));\n }\n\n /**\n * Return the text of all the buttons. Note that \"default\" corresponds to when you explicitly specify that color for the button, and is **not** the color of a button when you don't specify a color (see {@link DialogButton.color}).\n */\n async getButtonColors(): Promise<DialogButtonColor[]> {\n const buttons = await this.#getButtons();\n return Promise.all(\n buttons.map(async (button) => {\n const host = await button.host();\n if (await host.hasClass('mat-primary')) {\n return 'primary';\n } else if (await host.hasClass('mat-accent')) {\n return 'accent';\n } else if (await host.hasClass('mat-warn')) {\n return 'warn';\n } else {\n return 'default';\n }\n }),\n );\n }\n\n async clickButton(text: string): Promise<void> {\n const button = await this.#getButton(text);\n await button.click();\n }\n\n /**\n * Closes the dialog by pressing escape.\n */\n async close(): Promise<void> {\n const rootLoader =\n await this.documentRootLocatorFactory().rootHarnessLoader();\n const dialog = await rootLoader.getHarness(MatDialogHarness);\n await dialog.close();\n }\n\n async #getButton(text: string): Promise<MatButtonHarness> {\n const footer = await this.#getFooter();\n return footer.getHarness(MatButtonHarness.with({ text }));\n }\n\n async #getButtons(): Promise<MatButtonHarness[]> {\n const footer = await this.#getFooter();\n return footer.getAllHarnesses(MatButtonHarness);\n }\n\n async #getFooter(): Promise<HarnessLoader> {\n return this.getChildLoader('mat-dialog-actions');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n/**\n * Import this module to enable use of {@linkcode SlDialogService}\n */\n@NgModule({ imports: [MatDialogModule] })\nexport class SlDialogModule {}\n","import { Injectable, inject } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { DialogComponent, DialogData } from './dialog.component';\r\nimport { SlDialogModule } from './sl-dialog.module';\r\n\r\n/**\r\n * Shows simple text dialogs with just a method call, and reduces boilerplate for more complex dialogs.\r\n *\r\n * A simple text dialog:\r\n * ```ts\r\n * const choice = await slDialogService.open({\r\n * text: 'Discard draft?',\r\n * buttons: [{ text: 'Cancel' }, { text: 'Discard' }]\r\n * });\r\n * if (choice === 'Discard') {\r\n * // discard the draft\r\n * }\r\n * ```\r\n *\r\n * Using a custom component:\r\n * ```ts\r\n * @Component({\r\n * template: `\r\n * <h3>Heading 1</h3>\r\n * <p>Paragraph 1</p>\r\n * <h3>Heading 2</h3>\r\n * <p>Paragraph 2</p>\r\n * `\r\n * })\r\n * class FancyDialogComponent {}\r\n *\r\n * slDialogService.open({\r\n * title: 'My title',\r\n * component: FancyDialogComponent,\r\n * });\r\n * ```\r\n */\r\n@Injectable({ providedIn: SlDialogModule })\r\nexport class SlDialogService {\r\n #matDialog = inject(MatDialog);\r\n\r\n /**\r\n * Resolves when the dialog is closed. Resolves to the {@link DialogButton.value} of the clicked button, or to `undefined` if the dialog was closed another way (such as clicking off it).\r\n */\r\n async open<T>(data: DialogData<T>): Promise<T | undefined> {\r\n const ref = this.#matDialog.open(DialogComponent, {\r\n data,\r\n autoFocus: false,\r\n });\r\n return firstValueFrom<Promise<T | undefined>>(ref.beforeClosed());\r\n }\r\n}\r\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport {\n ButtonHarnessFilters,\n MatButtonHarness,\n} from '@angular/material/button/testing';\nimport { MatIconHarness } from '@angular/material/icon/testing';\n\n/**\n * A set of criteria that can be used to filter a list of button harness instances.\n */\nexport interface IconButtonHarnessFilters extends ButtonHarnessFilters {\n /**\n * Only find instances which contain an icon with the given name.\n */\n name?: RegExp | string;\n}\n\n/**\n * Returns a predicate to query for `MatButtonHarness` that contains a specific icon. Respects all filter options of `MatButtonHarness` itself, and adds the option to specify the name of an icon which must exist inside the button. If no icon name is specified, finds buttons with any icon.\n *\n * ```ts\n * const saveButton =\n * await loader.getHarness(matButtonHarnessWithIcon({ name: 'save' }));\n * ```\n */\nexport function matButtonHarnessWithIcon(\n options: IconButtonHarnessFilters,\n): HarnessPredicate<MatButtonHarness> {\n return MatButtonHarness.with(options).add('icon', async (harness) =>\n harness.hasHarness(MatIconHarness.with({ name: options.name })),\n );\n}\n","import {\r\n EnvironmentProviders,\r\n inject,\r\n provideAppInitializer,\r\n} from '@angular/core';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n/**\r\n * Registers a Material {@link https://material.angular.dev/components/icon/overview#icon-sets | icon set} in the default namespace.\r\n *\r\n * **WARNING:** The `icons` string you pass in will bypass Angular's security measures! Including untrusted user data will expose your application to XSS security risks!\r\n *\r\n * By default, Angular Material configures your app to download font files that include **all** material icons. This is a helper for a technique to:\r\n *\r\n * - only download the icons your app uses\r\n * - eliminate flickering in the UI that otherwise happens before the fonts load\r\n * - reduce the number of network requests needed to load your app\r\n *\r\n * This technique requires you to manually download each icon you use, clean up its SVG source, and paste it into your source code. For example, you might create a file called `icons.ts` that looks like this, which contains two icons:\r\n * ```ts\r\n * export const icons = `\r\n * <svg id=\"drag_handle\"><path d=\"M20,9H4v2h16V9z M4,15h16v-2H4V15z\"/></svg>\r\n * <svg id=\"menu\"><path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"/></svg>\r\n * `;\r\n * ```\r\n *\r\n * Then in your `app.config` or `app.module`, include it in your `providers` array like this:\r\n * ```ts\r\n * export const appConfig: ApplicationConfig = {\r\n * providers: [\r\n * provideMatIcons(icons),\r\n * ]\r\n * }\r\n * ```\r\n *\r\n * Finally, display the icons in a template like this, where `svgIcon` matches the `id` you gave it above\r\n * ```html\r\n * <mat-icon svgIcon=\"drag_handle\" />\r\n * <mat-icon svgIcon=\"menu\" />\r\n * ```\r\n *\r\n * To construct the `icons` string using svgs from the material team:\r\n *\r\n * 1. Find the icon on https://fonts.google.com/icons.\r\n * 2. Set the \"Optical size\" to 24px. You are free to modify other customizations.\r\n * 3. Download the SVG and paste its contents into your `icons` string.\r\n * 4. Set an `id` on the `<svg>` tag to the name of the icon.\r\n * 5. Delete any hard-coded colors (e.g. `fill=\"#000000\"`)\r\n * 6. At this point your icon should be working. If you care to, you can delete unnecessary attributes from the SVG, such as `xmlns`, `width` and `height`. Experiment to see if anything else can be eliminated.\r\n */\r\nexport function provideMatIcons(icons: string): EnvironmentProviders {\r\n return provideAppInitializer(() => {\r\n inject(MatIconRegistry).addSvgIconSetLiteral(\r\n inject(DomSanitizer).bypassSecurityTrustHtml(\r\n `<svg><defs>${icons}</defs></svg>`,\r\n ),\r\n );\r\n });\r\n}\r\n","/*\n * Public API Surface of ng-mat-core\n */\n\nexport * from './lib/dialog';\nexport * from './lib/mat-button-harness-with-icon';\nexport { provideMatIcons } from './lib/provide-mat-icons';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
{"version":3,"file":"ng-mat-core.mjs","sources":["../../../projects/ng-mat-core/src/lib/dialog/dialog.component.ts","../../../projects/ng-mat-core/src/lib/dialog/dialog.component.html","../../../projects/ng-mat-core/src/lib/dialog/sl-dialog.harness.ts","../../../projects/ng-mat-core/src/lib/dialog/sl-dialog.module.ts","../../../projects/ng-mat-core/src/lib/dialog/sl-dialog.service.ts","../../../projects/ng-mat-core/src/lib/mat-button-harness-with-icon.ts","../../../projects/ng-mat-core/src/lib/provide-mat-icons.ts","../../../projects/ng-mat-core/src/public-api.ts","../../../projects/ng-mat-core/src/ng-mat-core.ts"],"sourcesContent":["import { NgComponentOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n InjectionToken,\n Injector,\n Type,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ThemePalette } from '@angular/material/core';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\n\nexport type DialogButtonColor = NonNullable<ThemePalette> | 'default';\n\nexport interface DialogButton<T> {\n text: string;\n /**\n * {@link SlDialogService.open} will resolve to this value when the button is clicked. Defaults to {@link text}.\n */\n value?: T;\n /**\n * Defaults to `'primary'`, in accordance with the Material Design spec examples.\n */\n color?: DialogButtonColor;\n}\n\nexport interface DialogData<T> {\n title?: string;\n\n /**\n * Shown as the main content of the dialog.\n */\n text?: string;\n\n /**\n * A custom component to project into the dialog's content. It will appear below `text`, if both are defined. Note that you may put a static `title` attribute on the dialog class itself instead of using the {@link DialogData.title} option above. If both are defined, the option above will be used.\n */\n component?: Type<any> & { title?: string };\n\n /**\n * Use this to supply input to a custom component. Inject it into the component using the {@link SL_DIALOG_DATA} injection token.\n *\n * ```ts\n * @Component({ template: '{{ myInput }}' })\n * class MyDialogComponent {\n * constructor(@Inject(SL_DIALOG_DATA) public myInput: string) {}\n * }\n *\n * slDialogService.open({\n * component: MyDialogComponent,\n * slDialogData: 'My input.',\n * });\n * ```\n */\n slDialogData?: any;\n\n buttons?: Array<DialogButton<T>>;\n}\n\n/**\n * Injection token for a custom dialog component to receive input. See {@link DialogData.slDialogData}.\n */\nexport const SL_DIALOG_DATA = new InjectionToken('SL_DIALOG_DATA');\n\n/**\n * The {@link DialogButton.value} for the default \"OK\" button that is used if you do not specify any custom buttons for your dialog.\n */\nexport const DEFAULT_OK_VALUE = Symbol('OK');\n\n@Component({\n selector: 'sl-dialog',\n imports: [MatButtonModule, MatDialogModule, NgComponentOutlet],\n templateUrl: './dialog.component.html',\n styleUrl: './dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogComponent {\n protected data: DialogData<unknown> = inject(MAT_DIALOG_DATA);\n protected componentInjector = Injector.create({\n providers: [{ provide: SL_DIALOG_DATA, useValue: this.data.slDialogData }],\n parent: inject(Injector),\n });\n\n constructor() {\n this.data.buttons ??= [{ text: 'OK', value: DEFAULT_OK_VALUE }];\n }\n}\n","<h2 mat-dialog-title>{{ data.title ?? data.component?.title }}</h2>\n\n<mat-dialog-content class=\"mat-typography\">\n @if (data.text) {\n <p>{{ data.text }}</p>\n }\n @if (data.component) {\n <ng-container\n *ngComponentOutlet=\"data.component; injector: componentInjector\"\n />\n }\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n @for (button of data.buttons; track button) {\n <button\n mat-button\n [mat-dialog-close]=\"button.value ?? button.text\"\n [color]=\"button.color ?? 'primary'\"\n >\n {{ button.text }}\n </button>\n }\n</mat-dialog-actions>\n","import {\n BaseHarnessFilters,\n ContentContainerComponentHarness,\n HarnessLoader,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport { MatButtonHarness } from '@angular/material/button/testing';\nimport { MatDialogHarness } from '@angular/material/dialog/testing';\nimport { DialogButtonColor } from './dialog.component';\n\ninterface SlDialogHarnessFilters extends BaseHarnessFilters {\n title?: RegExp | string;\n}\n\n/**\n * Harness for interacting with a dialog opened via {@link SlDialogService.open}.\n */\nexport class SlDialogHarness extends ContentContainerComponentHarness {\n static hostSelector = 'sl-dialog';\n\n #getContent = this.locatorFor('mat-dialog-content');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a SlDialogHarness that meets certain criteria.\n */\n static with(\n options: SlDialogHarnessFilters,\n ): HarnessPredicate<SlDialogHarness> {\n return new HarnessPredicate(SlDialogHarness, options).addOption(\n 'title',\n options.title,\n async (harness, title) =>\n HarnessPredicate.stringMatches(harness.getTitle(), title),\n );\n }\n\n async getTitle(): Promise<string> {\n const title = await this.locatorFor('[mat-dialog-title]')();\n return title.text();\n }\n\n /**\n * Get the text displayed in the content of the dialog. Note this includes text from both the `text` and `component` options of {@link SlDialogService.open}.\n */\n async getContentText(): Promise<string> {\n const content = await this.#getContent();\n return content.text();\n }\n\n /**\n * Return the text of all the buttons.\n */\n async getButtonText(): Promise<string[]> {\n const buttons = await this.#getButtons();\n return Promise.all(buttons.map(async (button) => button.getText()));\n }\n\n /**\n * Return the text of all the buttons. Note that \"default\" corresponds to when you explicitly specify that color for the button, and is **not** the color of a button when you don't specify a color (see {@link DialogButton.color}).\n */\n async getButtonColors(): Promise<DialogButtonColor[]> {\n const buttons = await this.#getButtons();\n return Promise.all(\n buttons.map(async (button) => {\n const host = await button.host();\n if (await host.hasClass('mat-primary')) {\n return 'primary';\n } else if (await host.hasClass('mat-accent')) {\n return 'accent';\n } else if (await host.hasClass('mat-warn')) {\n return 'warn';\n } else {\n return 'default';\n }\n }),\n );\n }\n\n async clickButton(text: string): Promise<void> {\n const button = await this.#getButton(text);\n await button.click();\n }\n\n /**\n * Closes the dialog by pressing escape.\n */\n async close(): Promise<void> {\n const rootLoader =\n await this.documentRootLocatorFactory().rootHarnessLoader();\n const dialog = await rootLoader.getHarness(MatDialogHarness);\n await dialog.close();\n }\n\n async #getButton(text: string): Promise<MatButtonHarness> {\n const footer = await this.#getFooter();\n return footer.getHarness(MatButtonHarness.with({ text }));\n }\n\n async #getButtons(): Promise<MatButtonHarness[]> {\n const footer = await this.#getFooter();\n return footer.getAllHarnesses(MatButtonHarness);\n }\n\n async #getFooter(): Promise<HarnessLoader> {\n return this.getChildLoader('mat-dialog-actions');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\n\n/**\n * Import this module to enable use of {@linkcode SlDialogService}\n */\n@NgModule({ imports: [MatDialogModule] })\nexport class SlDialogModule {}\n","import { Injectable, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { firstValueFrom } from 'rxjs';\nimport { DialogComponent, DialogData } from './dialog.component';\nimport { SlDialogModule } from './sl-dialog.module';\n\n/**\n * Shows simple text dialogs with just a method call, and reduces boilerplate for more complex dialogs.\n *\n * A simple text dialog:\n * ```ts\n * const choice = await slDialogService.open({\n * text: 'Discard draft?',\n * buttons: [{ text: 'Cancel' }, { text: 'Discard' }]\n * });\n * if (choice === 'Discard') {\n * // discard the draft\n * }\n * ```\n *\n * Using a custom component:\n * ```ts\n * @Component({\n * template: `\n * <h3>Heading 1</h3>\n * <p>Paragraph 1</p>\n * <h3>Heading 2</h3>\n * <p>Paragraph 2</p>\n * `\n * })\n * class FancyDialogComponent {}\n *\n * slDialogService.open({\n * title: 'My title',\n * component: FancyDialogComponent,\n * });\n * ```\n */\n@Injectable({ providedIn: SlDialogModule })\nexport class SlDialogService {\n #matDialog = inject(MatDialog);\n\n /**\n * Resolves when the dialog is closed. Resolves to the {@link DialogButton.value} of the clicked button, or to `undefined` if the dialog was closed another way (such as clicking off it).\n */\n async open<T>(data: DialogData<T>): Promise<T | undefined> {\n const ref = this.#matDialog.open(DialogComponent, {\n data,\n autoFocus: false,\n });\n return firstValueFrom<Promise<T | undefined>>(ref.beforeClosed());\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport {\n ButtonHarnessFilters,\n MatButtonHarness,\n} from '@angular/material/button/testing';\nimport { MatIconHarness } from '@angular/material/icon/testing';\n\n/**\n * A set of criteria that can be used to filter a list of button harness instances.\n */\nexport interface IconButtonHarnessFilters extends ButtonHarnessFilters {\n /**\n * Only find instances which contain an icon with the given name.\n */\n name?: RegExp | string;\n}\n\n/**\n * Returns a predicate to query for `MatButtonHarness` that contains a specific icon. Respects all filter options of `MatButtonHarness` itself, and adds the option to specify the name of an icon which must exist inside the button. If no icon name is specified, finds buttons with any icon.\n *\n * ```ts\n * const saveButton =\n * await loader.getHarness(matButtonHarnessWithIcon({ name: 'save' }));\n * ```\n */\nexport function matButtonHarnessWithIcon(\n options: IconButtonHarnessFilters,\n): HarnessPredicate<MatButtonHarness> {\n return MatButtonHarness.with(options).add('icon', async (harness) =>\n harness.hasHarness(MatIconHarness.with({ name: options.name })),\n );\n}\n","import {\n EnvironmentProviders,\n inject,\n provideAppInitializer,\n} from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * Registers a Material {@link https://material.angular.dev/components/icon/overview#icon-sets | icon set} in the default namespace.\n *\n * **WARNING:** The `icons` string you pass in will bypass Angular's security measures! Including untrusted user data will expose your application to XSS security risks!\n *\n * By default, Angular Material configures your app to download font files that include **all** material icons. This is a helper for a technique to:\n *\n * - only download the icons your app uses\n * - eliminate flickering in the UI that otherwise happens before the fonts load\n * - reduce the number of network requests needed to load your app\n *\n * This technique requires you to manually download each icon you use, clean up its SVG source, and paste it into your source code. For example, you might create a file called `icons.ts` that looks like this, which contains two icons:\n * ```ts\n * export const icons = `\n * <svg id=\"drag_handle\"><path d=\"M20,9H4v2h16V9z M4,15h16v-2H4V15z\"/></svg>\n * <svg id=\"menu\"><path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"/></svg>\n * `;\n * ```\n *\n * Then in your `app.config` or `app.module`, include it in your `providers` array like this:\n * ```ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideMatIcons(icons),\n * ]\n * }\n * ```\n *\n * Finally, display the icons in a template like this, where `svgIcon` matches the `id` you gave it above\n * ```html\n * <mat-icon svgIcon=\"drag_handle\" />\n * <mat-icon svgIcon=\"menu\" />\n * ```\n *\n * To construct the `icons` string using svgs from the material team:\n *\n * 1. Find the icon on https://fonts.google.com/icons.\n * 2. Set the \"Optical size\" to 24px. You are free to modify other customizations.\n * 3. Download the SVG and paste its contents into your `icons` string.\n * 4. Set an `id` on the `<svg>` tag to the name of the icon.\n * 5. Delete any hard-coded colors (e.g. `fill=\"#000000\"`)\n * 6. At this point your icon should be working. If you care to, you can delete unnecessary attributes from the SVG, such as `xmlns`, `width` and `height`. Experiment to see if anything else can be eliminated.\n */\nexport function provideMatIcons(icons: string): EnvironmentProviders {\n return provideAppInitializer(() => {\n inject(MatIconRegistry).addSvgIconSetLiteral(\n inject(DomSanitizer).bypassSecurityTrustHtml(\n `<svg><defs>${icons}</defs></svg>`,\n ),\n );\n });\n}\n","/*\n * Public API Surface of ng-mat-core\n */\n\nexport * from './lib/dialog';\nexport * from './lib/mat-button-harness-with-icon';\nexport { provideMatIcons } from './lib/provide-mat-icons';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
{
"name": "@s-libs/ng-mat-core",
"version": "20.0.0",
"version": "20.1.0",
"author": "Simonton Software",

@@ -15,6 +15,6 @@ "license": "MIT",

"@angular/core": "^20.0.0",
"@s-libs/js-core": "^20.0.0",
"@s-libs/micro-dash": "^20.0.0",
"@s-libs/ng-core": "^20.0.0",
"@s-libs/rxjs-core": "^20.0.0"
"@s-libs/js-core": "^20.1.0",
"@s-libs/micro-dash": "^20.1.0",
"@s-libs/ng-core": "^20.1.0",
"@s-libs/rxjs-core": "^20.1.0"
},

@@ -21,0 +21,0 @@ "dependencies": {