Skip to content

Commit

Permalink
Merge pull request #2401 from hashicorp/alex-ju/typescript-fixes
Browse files Browse the repository at this point in the history
`DismissButton`, `RadioCard::Group`, `RichTooltip::Toggle` - Type safety fixes
  • Loading branch information
alex-ju authored Sep 10, 2024
2 parents bba9715 + 6e04e73 commit 7e4f2f9
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 14 deletions.
5 changes: 5 additions & 0 deletions .changeset/clean-tigers-promise.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@hashicorp/design-system-components": patch
---

`DismissButton`, `RadioCard::Group`, `RichTooltip::Toggle` - Type safety fixes
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
{{! @glint-nocheck: not typesafe yet }}
{{!
Copyright (c) HashiCorp, Inc.
SPDX-License-Identifier: MPL-2.0
Expand Down
5 changes: 3 additions & 2 deletions packages/components/src/components/hds/form/field/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import HdsFormErrorComponent from '../error/index.ts';
import type { HdsFormFieldLayouts } from './types.ts';
import type { ComponentLike, WithBoundArgs } from '@glint/template';
import type { HdsYieldSignature } from '../../yield/index.ts';
import type { AriaDescribedByComponent } from '../../../../utils/hds-aria-described-by.ts';

export const LAYOUT_TYPES = Object.values(HdsFormFieldLayoutValues);

Expand Down Expand Up @@ -131,10 +132,10 @@ export default class HdsFormField extends Component<HdsFormFieldSignature> {

@action
appendDescriptor(element: HTMLElement): void {
registerAriaDescriptionElement(this, element);
registerAriaDescriptionElement(this as AriaDescribedByComponent, element);
}

@action removeDescriptor(element: HTMLElement): void {
unregisterAriaDescriptionElement(this, element);
unregisterAriaDescriptionElement(this as AriaDescribedByComponent, element);
}
}
6 changes: 4 additions & 2 deletions packages/components/src/components/hds/form/fieldset/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@ import HdsFormErrorComponent from '../error/index.ts';
import type { ComponentLike, WithBoundArgs } from '@glint/template';
import type { HdsFormFieldsetLayouts } from './types.ts';
import type { HdsYieldSignature } from '../../yield/index.ts';
import type { AriaDescribedByComponent } from '../../../../utils/hds-aria-described-by.ts';

export interface HdsFormFieldsetSignature {
Args: {
extraAriaDescribedBy?: string;
isOptional?: boolean;
isRequired?: boolean;
layout?: HdsFormFieldsetLayouts;
Expand Down Expand Up @@ -106,10 +108,10 @@ export default class HdsFormFieldset extends Component<HdsFormFieldsetSignature>

@action
appendDescriptor(element: HTMLElement): void {
registerAriaDescriptionElement(this, element);
registerAriaDescriptionElement(this as AriaDescribedByComponent, element);
}

@action removeDescriptor(element: HTMLElement): void {
unregisterAriaDescriptionElement(this, element);
unregisterAriaDescriptionElement(this as AriaDescribedByComponent, element);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

export enum HdsFormFieldsetLayoutValues {
Vertical = 'vertical',
Flag = 'flag',
Horizontal = 'horizontal',
}

export type HdsFormFieldsetLayouts = `${HdsFormFieldsetLayoutValues}`;
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
{{! @glint-nocheck: not typesafe yet }}
{{!
Copyright (c) HashiCorp, Inc.
SPDX-License-Identifier: MPL-2.0
Expand Down
13 changes: 8 additions & 5 deletions packages/components/src/components/hds/rich-tooltip/toggle.hbs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
{{! @glint-nocheck: not typesafe yet }}
{{!
Copyright (c) HashiCorp, Inc.
SPDX-License-Identifier: MPL-2.0
Expand All @@ -16,14 +15,18 @@
{{~#if (has-block)~}}
{{yield}}
{{~else~}}
{{~#if (and @icon (eq this.iconPosition "leading"))~}}
<Hds::Icon class="hds-rich-tooltip__toggle-icon" @name={{@icon}} @isInline={{this.isInline}} />
{{~#if @icon~}}
{{~#if (eq this.iconPosition "leading")~}}
<Hds::Icon class="hds-rich-tooltip__toggle-icon" @name={{@icon}} @isInline={{this.isInline}} />
{{~/if~}}
{{~/if~}}
{{~#if @text~}}
<span class="hds-rich-tooltip__toggle-text">{{~@text~}}</span>
{{~/if~}}
{{~#if (and @icon (eq this.iconPosition "trailing"))~}}
<Hds::Icon class="hds-rich-tooltip__toggle-icon" @name={{@icon}} @isInline={{this.isInline}} />
{{~#if @icon~}}
{{~#if (eq this.iconPosition "trailing")~}}
<Hds::Icon class="hds-rich-tooltip__toggle-icon" @name={{@icon}} @isInline={{this.isInline}} />
{{~/if~}}
{{~/if~}}
{{~/if~}}
</button>
5 changes: 3 additions & 2 deletions packages/components/src/utils/hds-aria-described-by.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,10 @@ class AriaDescriptorMap {

const ariaDescriptorMap = new AriaDescriptorMap();

type AriaDescribedByArgs = HdsFormFieldSignature & HdsFormFieldsetSignature;
type AriaDescribedByArgs = HdsFormFieldSignature | HdsFormFieldsetSignature;

interface AriaDescribedByComponent extends Component<AriaDescribedByArgs> {
export interface AriaDescribedByComponent
extends Component<AriaDescribedByArgs> {
__ARIA_DESCRIPTION_IDS__?: string[];
ariaDescribedBy?: string;
}
Expand Down

0 comments on commit 7e4f2f9

Please sign in to comment.