From bdff5f81682e7129b76efd3b3ef8589cb5dc3ca3 Mon Sep 17 00:00:00 2001 From: Kristin Bradley Date: Thu, 16 May 2024 16:22:35 -0700 Subject: [PATCH] Resolve conflicts --- .../src/components/hds/copy/snippet/index.hbs | 1 - .../src/components/hds/copy/snippet/index.ts | 33 ++++++++++++++----- .../src/components/hds/copy/snippet/types.ts | 10 ++++++ packages/components/src/template-registry.ts | 6 ++++ 4 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 packages/components/src/components/hds/copy/snippet/types.ts diff --git a/packages/components/src/components/hds/copy/snippet/index.hbs b/packages/components/src/components/hds/copy/snippet/index.hbs index 8e05f6a9fdf..189737c02d2 100644 --- a/packages/components/src/components/hds/copy/snippet/index.hbs +++ b/packages/components/src/components/hds/copy/snippet/index.hbs @@ -1,4 +1,3 @@ -{{! @glint-nocheck: not typesafe yet }} {{! Copyright (c) HashiCorp, Inc. SPDX-License-Identifier: MPL-2.0 diff --git a/packages/components/src/components/hds/copy/snippet/index.ts b/packages/components/src/components/hds/copy/snippet/index.ts index 12228c1e36c..ec7871d67e7 100644 --- a/packages/components/src/components/hds/copy/snippet/index.ts +++ b/packages/components/src/components/hds/copy/snippet/index.ts @@ -7,6 +7,7 @@ import Component from '@glimmer/component'; import { assert } from '@ember/debug'; import { tracked } from '@glimmer/tracking'; import { action } from '@ember/object'; +import type { HdsCopySnippetColors } from './types'; export const DEFAULT_COLOR = 'primary'; export const COLORS = ['primary', 'secondary']; @@ -15,9 +16,23 @@ export const SUCCESS_ICON = 'clipboard-checked'; export const ERROR_ICON = 'clipboard-x'; export const DEFAULT_STATUS = 'idle'; -export default class HdsCopySnippetIndexComponent extends Component { +interface HdsCopySnippetSignature { + Args: { + color?: HdsCopySnippetColors; + isFullWidth?: boolean; + isTruncated?: boolean; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + onError?: (...args: any[]) => void; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + onSuccess?: (...args: any[]) => void; + textToCopy: string; + }; + Element: HTMLButtonElement; +} + +export default class HdsCopySnippetComponent extends Component { @tracked status = DEFAULT_STATUS; - @tracked timer; + @tracked timer: ReturnType | undefined; /** * @param icon @@ -42,7 +57,7 @@ export default class HdsCopySnippetIndexComponent extends Component { * @description Determines the color of button to be used; acceptable values are `primary` and `secondary` */ get color() { - let { color = DEFAULT_COLOR } = this.args; + const { color = DEFAULT_COLOR } = this.args; assert( `@color for "Hds::Copy::Snippet" must be one of the following: ${COLORS.join( @@ -80,7 +95,7 @@ export default class HdsCopySnippetIndexComponent extends Component { * @return {string} The "class" attribute to apply to the component. */ get classNames() { - let classes = ['hds-copy-snippet']; + const classes = ['hds-copy-snippet']; // add a class based on the @color argument classes.push(`hds-copy-snippet--color-${this.color}`); @@ -102,11 +117,12 @@ export default class HdsCopySnippetIndexComponent extends Component { } @action - onSuccess(args) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + onSuccess(args: any) { this.status = 'success'; this.resetStatusDelayed(); - let { onSuccess } = this.args; + const { onSuccess } = this.args; if (typeof onSuccess === 'function') { onSuccess(args); @@ -114,11 +130,12 @@ export default class HdsCopySnippetIndexComponent extends Component { } @action - onError(args) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + onError(args: any) { this.status = 'error'; this.resetStatusDelayed(); - let { onError } = this.args; + const { onError } = this.args; if (typeof onError === 'function') { onError(args); diff --git a/packages/components/src/components/hds/copy/snippet/types.ts b/packages/components/src/components/hds/copy/snippet/types.ts new file mode 100644 index 00000000000..1f24a84e5ed --- /dev/null +++ b/packages/components/src/components/hds/copy/snippet/types.ts @@ -0,0 +1,10 @@ +/** + * Copyright (c) HashiCorp, Inc. + * SPDX-License-Identifier: MPL-2.0 + */ + +export enum HdsCopySnippetColorValues { + Primary = 'primary', + Secondary = 'secondary', +} +export type HdsCopySnippetColors = `${HdsCopySnippetColorValues}`; diff --git a/packages/components/src/template-registry.ts b/packages/components/src/template-registry.ts index 5fe2e0c6192..affab7cce5f 100644 --- a/packages/components/src/template-registry.ts +++ b/packages/components/src/template-registry.ts @@ -26,6 +26,7 @@ import type HdsAppFrameModalsComponent from './components/hds/app-frame/parts/mo import type HdsAppFrameSidebarComponent from './components/hds/app-frame/parts/sidebar'; import type HdsCardContainerComponent from './components/hds/card/container.ts'; import type HdsCopyButtonComponent from './components/hds/copy/button/index'; +import type HdsCopySnippetComponent from './components/hds/copy/snippet'; import type HdsDisclosurePrimitiveComponent from './components/hds/disclosure-primitive'; import type HdsDismissButtonComponent from './components/hds/dismiss-button'; import type HdsIconTileComponent from './components/hds/icon-tile'; @@ -151,6 +152,11 @@ export default interface HdsComponentsRegistry { 'hds/copy/button': typeof HdsCopyButtonComponent; HdsCopyButton: typeof HdsCopyButtonComponent; + // Copy Snippet + 'Hds::Copy::Snippet': typeof HdsCopySnippetComponent; + 'hds/copy/snippet': typeof HdsCopySnippetComponent; + HdsCopySnippet: typeof HdsCopySnippetComponent; + // Disclosure Primitive 'Hds::DisclosurePrimitive': typeof HdsDisclosurePrimitiveComponent; 'hds/disclosure-primitive': typeof HdsDisclosurePrimitiveComponent;