Skip to content

Conversation

@hyoseong1994
Copy link
Contributor

@hyoseong1994 hyoseong1994 commented Jan 6, 2026

변경 사항

  • Checkbox, PasswodInput, RadioGroup, Select, TextInput 에 aria-invalid, arid-required 테스트 보강 및 통일
  • RadioGroup
    • invalid, required 기능 추가
    • danger 스타일 수정 (기존 스타일이 피그마와 동일하지 않아서 수정했습니다.)

목적

  • invalid, required 기능이 있는 컴포넌트에 대해서 aria-invalid와 aria-required를 같이 설정하도록 수정하여 컴포넌트의 접근성을 높입니다.

리뷰어에게

  • checkbox 컴포넌트의 경우 ark-ui 때문에 invalid 동작이 다릅니다. (aria-invalid 가 없을때 false 로 동작)
  • radioGroup에 invalid, required 가 없어서 추가하였습니다.

PR 작성자 체크 리스트

  • UI Review를 요청하고 검토를 받았나요?
  • UI Tests를 진행했나요?

@codecov
Copy link

codecov bot commented Jan 6, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@codecov
Copy link

codecov bot commented Jan 6, 2026

Bundle Report

Changes will increase total bundle size by 22.63kB (4.08%) ⬆️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
daleui-bundle-esm 577.65kB 22.63kB (4.08%) ⬆️

Affected Assets, Files, and Routes:

view changes for bundle: daleui-bundle-esm

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/index-*.js 22.13kB 276.28kB 8.71% ⚠️
assets/index-*.css 503 bytes 64.46kB 0.79%

@hyoseong1994 hyoseong1994 force-pushed the 645-aria-invalid-and-required branch 2 times, most recently from c79ed00 to 7dfdb37 Compare January 8, 2026 23:32
@hyoseong1994 hyoseong1994 marked this pull request as ready for review January 13, 2026 00:07
@hyoseong1994 hyoseong1994 requested a review from a team as a code owner January 13, 2026 00:07
@hyoseong1994 hyoseong1994 marked this pull request as draft January 13, 2026 00:07
@hyoseong1994 hyoseong1994 force-pushed the 645-aria-invalid-and-required branch from 497009a to 27e592b Compare January 13, 2026 00:08
@hyoseong1994 hyoseong1994 marked this pull request as ready for review January 13, 2026 00:10
@DaleSeo
Copy link
Member

DaleSeo commented Jan 15, 2026

checkbox 컴포넌트의 경우 ark-ui 때문에 invalid 동작이 다릅니다. (aria-invalid 가 없을때 false 로 동작)

@hyoseong1994 동작이 달라도 괜찮다는 말씀이신가요? 추가 검토가 필요하시다는 말씀이신가요?

}

const { tone, disabled: groupDisabled } = context;
const { tone, disabled: groupDisabled, invalid: GroupInvalid } = context;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GroupInvalid만 대문자로 시작해야하는 이유가 있을까요?

Suggested change
const { tone, disabled: groupDisabled, invalid: GroupInvalid } = context;
const { tone, disabled: groupDisabled, invalid: groupInvalid } = context;

Copy link
Contributor Author

@hyoseong1994 hyoseong1994 Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

티켓 분리로 인하여 제거되었습니다. 감사합니다.

className={css({ display: "flex", flexDirection: "column", gap: "32" })}
>
<RadioGroup
{...args}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

나이스 캐치!

Comment on lines +68 to +80
argTypes: {
name: {
control: false,
},
label: {
control: false,
},
orientation: {
control: false,
},
defaultValue: {
control: false,
},
},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💯 다른 팀원들도 배울 수 있도록 컨벤션 문서에 요런 스토리 작성 관련 모범 관례나 팁을 추가해주셔도 좋을 것 같습니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

컨벤션 문서에 내용 추가했습니다.

https://github.com/DaleStudy/daleui/wiki/Conventions#%EC%8A%A4%ED%86%A0%EB%A6%AC

항상 고정되어야 하는 prop은 Story의 argTypes에서 control: false로 선언합니다.
ex) Orientation Story에서 orientation props

Comment on lines 182 to 186
/**
* true이면 이 라디오 버튼이 에러 상태가 됩니다.
* @default false
*/
invalid?: boolean;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개별 Radio 컴포넌트에 invalid 속성을 추가했는데, 어떤 사용 케이스를 생각하셨는지 궁금합니다. (그리고 컴포넌트의 API를 변경하는 것은 본 티켓의 목표에서 벗어날 수 있겠다는 생각도 드네요.)

Copy link
Contributor Author

@hyoseong1994 hyoseong1994 Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

사실 사용케이스를 고민한것은 아니고 figma에 디자인이 되어있는데 해당 기능이 없길래 누락된건가 싶어서 추가했습니다.
개별 라디오에 대해서는 invalid가 필요하지 않겠네요 사용케이스가 없을거같습니다.
API 변경에 대해서 동의합니다. 후속 티켓 생성하여 작업 분리하도록하겠습니다.

expect(inputElement).not.toHaveAttribute("aria-required");
});

it("leadingIcon과 trailingIcon이 제공될 때 올바르게 렌더링되어야 합니다.", () => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아직도 it 친구가 있었구나!

@hyoseong1994
Copy link
Contributor Author

@DaleSeo 안녕하세요 달레님

@hyoseong1994 동작이 달라도 괜찮다는 말씀이신가요? 추가 검토가 필요하시다는 말씀이신가요?

동작이 달라서 여기만 왜 다른지에 대한 질문이 있을거같아서 작성해둔내용입니다.
해당 내용은 안건화하도록하겠습니다.

  1. checkbox를 직접구현
  2. aria-invalid를 false 로 통일(ark-ui 랑 동일하게)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

컴포넌트 접근성 개선(aria-invalid, aria-required)

4 participants