Sha256: 836119a9478238058909716e363c474fb5dccf9732af85f2411e23ecd5d99cf6
Contents?: true
Size: 1.43 KB
Versions: 1
Compression:
Stored size: 1.43 KB
Contents
import {controllerFactory} from '@utils/createController' import '@github/clipboard-copy-element' const CLIPBOARD_COPY_TIMER_DURATION = 2000 export default class ClipboardCopyController extends controllerFactory<HTMLDetailsElement>()({ targets: { initial: HTMLElement, confirmed: null, }, }) { declare clipboardCopyElementTimers: WeakMap<HTMLElement, number> connect() { this.clipboardCopyElementTimers = new WeakMap() } copy(event: Event) { const target = event.target as HTMLElement const currentTimeout = this.clipboardCopyElementTimers.get(target) if (currentTimeout) { clearTimeout(currentTimeout) this.clipboardCopyElementTimers.delete(target) } else { this.showConfirm() } this.clipboardCopyElementTimers.set( target, window.setTimeout(() => { this.showInitial() this.clipboardCopyElementTimers.delete(target) }, CLIPBOARD_COPY_TIMER_DURATION), ) } showConfirm() { if (this.hasConfirmedTarget) { this.confirmedTarget.classList.remove('ariadne-hidden') this.confirmedTarget.classList.add('ariadne-inline-block') this.initialTarget.classList.add('ariadne-hidden') } } showInitial() { this.initialTarget.classList.remove('ariadne-hidden') this.initialTarget.classList.add('ariadne-inline-block') if (this.hasConfirmedTarget) { this.confirmedTarget.classList.add('ariadne-hidden') } } }
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ariadne_view_components-0.0.89 | app/components/ariadne/ui/clipboard_copy/component.ts |