@blackbaud/skyux-lib-clipboard
Version:
This library was generated with [Nx](https://nx.dev).
1 lines • 10.3 kB
Source Map (JSON)
{"version":3,"file":"blackbaud-skyux-lib-clipboard.mjs","sources":["../../../../libs/clipboard/src/lib/modules/shared/sky-clipboard-resources.module.ts","../../../../libs/clipboard/src/lib/modules/clipboard/clipboard.service.ts","../../../../libs/clipboard/src/lib/modules/clipboard/clipboard.component.ts","../../../../libs/clipboard/src/lib/modules/clipboard/clipboard.component.html","../../../../libs/clipboard/src/lib/modules/clipboard/clipboard.module.ts","../../../../libs/clipboard/src/blackbaud-skyux-lib-clipboard.ts"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-clipboard' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n sky_copy_to_clipboard_button_title: { message: 'Copy to clipboard' },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyClipboardResourcesModule {}\n","// adapted from ngx-clipboard\nimport { Injectable } from '@angular/core';\nimport { SkyAppWindowRef } from '@skyux/core';\n\n@Injectable()\nexport class SkyCopyToClipboardService {\n #windowRef: SkyAppWindowRef;\n\n constructor(windowRef: SkyAppWindowRef) {\n this.#windowRef = windowRef;\n }\n\n public copyContent(element: HTMLElement): void {\n const copyText = this.#getTextFromElement(element);\n this.#windowRef.nativeWindow.navigator.clipboard.writeText(copyText);\n }\n\n #getTextFromElement(element: HTMLElement): string | undefined {\n if (this.#isValidInputElement(element)) {\n const targetEl = element as HTMLInputElement | HTMLTextAreaElement;\n return targetEl.value;\n }\n\n return element.textContent?.trim();\n }\n\n #isValidInputElement(element: HTMLElement): boolean {\n return (\n element instanceof HTMLTextAreaElement ||\n element instanceof HTMLInputElement\n );\n }\n}\n","import { ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { SkyAppWindowRef } from '@skyux/core';\n\nimport { SkyCopyToClipboardService } from './clipboard.service';\n\n@Component({\n selector: 'sky-copy-to-clipboard',\n templateUrl: './clipboard.component.html',\n standalone: false,\n})\nexport class SkyCopyToClipboardComponent {\n /**\n * Specifies an ARIA label for the copy to clipboard button\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the button includes a visible label outside of the button itself, use `ariaLabelledBy` instead.\n */\n @Input()\n public ariaLabel: string | undefined;\n\n /**\n * Specifies the HTML element ID (without the leading #) of the element that labels the copy to clipboard button. This sets the input's aria-labelledby attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the button does not include a visible label outside of the button itself, use `ariaLabel` instead.\n */\n @Input()\n public ariaLabelledBy: string | undefined;\n\n /**\n * Specifies the HTMLElement which contains the content being copied.\n */\n @Input()\n public copyTarget: HTMLElement | undefined;\n\n /**\n * Specifies the label for the copy to clipboard button when the button has not been clicked.\n */\n @Input()\n public buttonText: string | undefined;\n\n /**\n * Specifies the label for the copy to clipboard button after the button has been clicked.\n */\n @Input()\n public buttonClickedText: string | undefined;\n\n /**\n * Specifies a title attribute for the copy to clipboard button.\n */\n @Input()\n public title: string | undefined;\n\n public buttonActive = false;\n\n #changeDetector: ChangeDetectorRef;\n #clipboardSvc: SkyCopyToClipboardService;\n #timeout: number | undefined;\n #window: Window;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n clipboardSvc: SkyCopyToClipboardService,\n windowRef: SkyAppWindowRef,\n ) {\n this.#changeDetector = changeDetector;\n this.#clipboardSvc = clipboardSvc;\n this.#window = windowRef.nativeWindow;\n }\n\n public copyToClipboard(): void {\n if (this.copyTarget) {\n this.buttonActive = true;\n\n this.#clipboardSvc.copyContent(this.copyTarget);\n\n if (this.#timeout !== undefined) {\n this.#window.clearTimeout(this.#timeout);\n }\n\n this.#timeout = this.#window.setTimeout(() => {\n this.buttonActive = false;\n this.#changeDetector.markForCheck();\n }, 1000);\n }\n }\n}\n","<button\n type=\"button\"\n class=\"sky-btn sky-btn-default\"\n (click)=\"copyToClipboard()\"\n [attr.title]=\"\n title ? title : ('sky_copy_to_clipboard_button_title' | skyLibResources)\n \"\n [attr.aria-label]=\"\n !ariaLabelledBy\n ? ariaLabel\n ? ariaLabel\n : ('sky_copy_to_clipboard_button_title' | skyLibResources)\n : undefined\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : undefined\"\n>\n <i *ngIf=\"!buttonActive\" aria-hidden=\"true\" class=\"fa fa-clipboard\"></i>\n <i *ngIf=\"buttonActive\" aria-hidden=\"true\" class=\"fa fa-check\"></i>\n <span *ngIf=\"!buttonActive || (buttonActive && !buttonClickedText)\">\n {{ buttonText }}\n </span>\n <span *ngIf=\"buttonActive && buttonClickedText\">\n {{ buttonClickedText }}\n </span>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyAppWindowRef } from '@skyux/core';\n\nimport { SkyClipboardResourcesModule } from '../shared/sky-clipboard-resources.module';\n\nimport { SkyCopyToClipboardComponent } from './clipboard.component';\nimport { SkyCopyToClipboardService } from './clipboard.service';\n\n@NgModule({\n declarations: [SkyCopyToClipboardComponent],\n imports: [CommonModule, SkyClipboardResourcesModule],\n exports: [SkyCopyToClipboardComponent],\n providers: [SkyCopyToClipboardService, SkyAppWindowRef],\n})\nexport class SkyClipboardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkyCopyToClipboardService","i2"],"mappings":"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"}