feat: opt tour aria props (#53345)

* feat: opt tour aria props

* feat: add test case

* feat: opt code

* feat: update locale

* feat: add test case

* feat: opt code

* feat: opt code

* feat: opt code

---------

Co-authored-by: tangwenhui1 <tangwenhui1@yy.com>
Co-authored-by: thinkasany <480968828@qq.com>
This commit is contained in:
kiner-tang(星河)
2025-04-25 11:51:58 +08:00
committed by GitHub
parent 67d2c29e7e
commit 7a0a76ef7c
40 changed files with 228 additions and 5 deletions

View File

@@ -23,6 +23,11 @@ const localeValues: Locale = {
selectAll: 'Избор на текуща страница',
selectInvert: 'Обръщане',
},
Tour: {
Next: 'Следващ',
Previous: 'Предишен',
Finish: 'Завърши',
},
Modal: {
okText: 'Добре',
cancelText: 'Отказ',

View File

@@ -34,6 +34,11 @@ const localeValues: Locale = {
triggerAsc: 'আরোহী বাছাই করতে ক্লিক করুন',
cancelSort: 'বাছাই বাতিল করতে ক্লিক করুন',
},
Tour: {
Next: 'পরবর্তী',
Previous: 'পূর্ববর্তী',
Finish: 'সমাপ্ত',
},
Modal: {
okText: 'ঠিক',
cancelText: 'বাতিল',

View File

@@ -36,6 +36,11 @@ const localeValues: Locale = {
triggerAsc: 'Націсніце для сартавання па ўзрастанні',
cancelSort: 'Націсніце, каб адмяніць сартаванне',
},
Tour: {
Next: 'Наступны',
Previous: 'Папярэдняя',
Finish: 'Завяршыць',
},
Modal: {
okText: 'OK',
cancelText: 'Адмена',

View File

@@ -32,6 +32,11 @@ const localeValues: Locale = {
triggerAsc: 'Ordre ascendent',
cancelSort: 'Desactivar lordre',
},
Tour: {
Next: 'Següent',
Previous: 'Anterior',
Finish: 'Finalitzar',
},
Modal: {
okText: 'Dacord',
cancelText: 'Cancel·lar',

View File

@@ -36,6 +36,11 @@ const localeValues: Locale = {
triggerAsc: 'Klikni pro vzestupné řazení',
cancelSort: 'Klikni pro zrušení řazení',
},
Tour: {
Next: 'Další',
Previous: 'Předchozí',
Finish: 'Dokončit',
},
Modal: {
okText: 'OK',
cancelText: 'Zrušit',

View File

@@ -32,6 +32,11 @@ const localeValues: Locale = {
triggerAsc: 'Klik for at sortere stigende',
cancelSort: 'Klik for at annullere sortering',
},
Tour: {
Next: 'Næste',
Previous: 'Forrige',
Finish: 'Færdiggørelse',
},
Modal: {
okText: 'OK',
cancelText: 'Afbryd',

View File

@@ -36,6 +36,11 @@ const localeValues: Locale = {
triggerAsc: 'Click to sort ascending',
cancelSort: 'Click to cancel sorting',
},
Tour: {
Next: 'Next',
Previous: 'Previous',
Finish: 'Finish',
},
Modal: {
okText: 'OK',
cancelText: 'Cancel',

View File

@@ -36,6 +36,11 @@ const localeValues: Locale = {
triggerAsc: 'Klõpsa kasvavalt sortimiseks',
cancelSort: 'Klõpsa sortimise tühistamiseks',
},
Tour: {
Next: 'Järgmine',
Previous: 'Eelmine',
Finish: 'Lõpetada',
},
Modal: {
okText: 'OK',
cancelText: 'Tühista',

View File

@@ -25,6 +25,11 @@ const localeValues: Locale = {
triggerAsc: 'Lajittele nousevasti',
cancelSort: 'Peruuta lajittelu',
},
Tour: {
Next: 'Seuraava',
Previous: 'Edellinen',
Finish: 'Valmis',
},
Modal: {
okText: 'OK',
cancelText: 'Peruuta',

View File

@@ -35,6 +35,11 @@ const localeValues: Locale = {
triggerAsc: 'Trier par ordre croissant',
cancelSort: 'Annuler le tri',
},
Tour: {
Next: 'Suivant',
Previous: 'Précédent',
Finish: 'Terminer',
},
Modal: {
okText: 'OK',
cancelText: 'Annuler',

View File

@@ -31,6 +31,11 @@ const localeValues: Locale = {
triggerAsc: 'Click to sort ascending',
cancelSort: 'Click to cancel sorting',
},
Tour: {
Next: 'Aghaidh',
Previous: 'Roimh',
Finish: 'Dhéanamh',
},
Modal: {
okText: 'OK',
cancelText: 'Cancel',

View File

@@ -25,6 +25,11 @@ const localeValues: Locale = {
selectInvert: 'Invertir selección',
sortTitle: 'Ordenar',
},
Tour: {
Next: 'Avanzar',
Previous: 'Anterior',
Finish: 'Finalizar',
},
Modal: {
okText: 'Aceptar',
cancelText: 'Cancelar',

View File

@@ -34,6 +34,11 @@ const localeValues: Locale = {
triggerAsc: 'आरोही क्रमित करने के लिए क्लिक करें',
cancelSort: 'छँटाई रद्द करने के लिए क्लिक करें',
},
Tour: {
Next: 'अगाड़ा',
Previous: 'पिछला',
Finish: 'समाप्त करें',
},
Modal: {
okText: 'अच्छी तरह से',
cancelText: 'रद्द करना',

View File

@@ -33,6 +33,11 @@ const localeValues: Locale = {
triggerAsc: 'Kliknite za sortiranje uzlazno',
cancelSort: 'Kliknite da biste otkazali sortiranje',
},
Tour: {
Next: 'Slijedeći',
Previous: 'Prethodni',
Finish: 'Završi',
},
Modal: {
okText: 'OK',
cancelText: 'Odustani',

View File

@@ -47,6 +47,11 @@ const localeValues: Locale = {
Empty: {
description: 'Nincs adat',
},
Tour: {
Next: 'Következő',
Previous: 'Előző',
Finish: 'Befejezés',
},
};
export default localeValues;

View File

@@ -73,6 +73,11 @@ const localeValues: Locale = {
expand: 'Ընդլայնեք տողը',
collapse: 'Կրճատել տողը',
},
Tour: {
Next: 'Հաջորդ',
Previous: 'Նախորդ',
Finish: 'Ավարտել',
},
Modal: {
okText: 'Օկ',
cancelText: 'Չեղարկել',

View File

@@ -23,6 +23,11 @@ const localeValues: Locale = {
selectAll: 'Velja allt',
selectInvert: 'Viðsnúa vali',
},
Tour: {
Next: 'Áfram',
Previous: 'Til baka',
Finish: 'Lokið',
},
Modal: {
okText: 'Áfram',
cancelText: 'Hætta við',

View File

@@ -34,6 +34,11 @@ const localeValues: Locale = {
triggerAsc: 'აღმავალი დალაგება',
cancelSort: 'დალაგების გაუქმება',
},
Tour: {
Next: 'მომდევნო',
Previous: 'წინა',
Finish: 'დასრულება',
},
Modal: {
okText: 'კარგი',
cancelText: 'გაუქმება',

View File

@@ -33,6 +33,11 @@ const localeValues: Locale = {
triggerAsc: 'Өсу ретімен сұрыптау үшін басыңыз',
cancelSort: 'Сұрыптаудан бас тарту үшін басыңыз',
},
Tour: {
Next: 'Келесі',
Previous: 'Алдыңғы',
Finish: 'Аяқтау',
},
Modal: {
okText: 'Жарайды',
cancelText: 'Болдырмау',

View File

@@ -21,6 +21,11 @@ const localeValues: Locale = {
selectAll: 'Hemî hilbijêre',
selectInvert: 'Hilbijartinan veguhere',
},
Tour: {
Next: 'Temam',
Previous: 'Betal ke',
Finish: 'Temam',
},
Modal: {
okText: 'Temam',
cancelText: 'Betal ke',

View File

@@ -37,6 +37,11 @@ const localeValues: Locale = {
triggerAsc: 'ಏರೋಹಣ ಕ್ರಮದಲ್ಲಿ ವಿಂಗಡಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ',
cancelSort: 'ವಿಂಗಡಣೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ',
},
Tour: {
Next: 'ಮುಂದುವರೆಸಿ',
Previous: 'ಹಿಂದೆಯಾಗಿ',
Finish: 'ಮುಗಿಸಿ',
},
Modal: {
okText: 'ಸರಿ',
cancelText: 'ರದ್ದು',

View File

@@ -25,6 +25,11 @@ const localeValues: Locale = {
selectAll: 'Hemî hilbijêre',
selectInvert: 'Hilbijartinan veguhere',
},
Tour: {
Next: 'Temam',
Previous: 'Betal ke',
Finish: 'Temam',
},
Modal: {
okText: 'Temam',
cancelText: 'Betal ke',

View File

@@ -21,6 +21,11 @@ const localeValues: Locale = {
selectAll: 'Atlasiet pašreizējo lapu',
selectInvert: 'Pārvērst pašreizējo lapu',
},
Tour: {
Next: 'Nākamais',
Previous: 'Iepriekšējais',
Finish: 'Pabeigt',
},
Modal: {
okText: 'OK',
cancelText: 'Atcelt',

View File

@@ -22,6 +22,11 @@ const localeValues: Locale = {
selectAll: 'Одбери страница',
selectInvert: 'Инвертирај страница',
},
Tour: {
Next: 'Следно',
Previous: 'Претходно',
Finish: 'Заврши',
},
Modal: {
okText: 'ОК',
cancelText: 'Откажи',

View File

@@ -34,6 +34,11 @@ const localeValues: Locale = {
triggerAsc: 'ആരോഹണ ക്രമത്തിനായി ക്ലിക്ക് ചെയ്യുക',
cancelSort: 'ക്രമീകരണം ഒഴിവാക്കുന്നതിനായി ക്ലിക്ക് ചെയ്യുക',
},
Tour: {
Next: 'അടുത്തത്',
Previous: 'മുമ്പത്തെ',
Finish: 'അവസാനിക്കുക',
},
Modal: {
okText: 'ശരിയാണ്',
cancelText: 'റദ്ദാക്കുക',

View File

@@ -36,6 +36,11 @@ const localeValues: Locale = {
triggerAsc: 'Өсөхөөр эрэмбэлэхийн тулд товшино уу',
cancelSort: 'Эрэмбэлэхийг цуцлахын тулд товшино уу',
},
Tour: {
Next: 'Дараах',
Previous: 'Урд',
Finish: 'Төгсгөх',
},
Modal: {
okText: 'Тийм',
cancelText: 'Цуцлах',

View File

@@ -32,6 +32,11 @@ const localeValues: Locale = {
triggerAsc: 'Sorterer data i stigende rekkefølge',
cancelSort: 'Klikk for å avbryte sorteringen',
},
Tour: {
Next: 'Neste',
Previous: 'Forrige',
Finish: 'Avslutt',
},
Modal: {
okText: 'OK',
cancelText: 'Avbryt',

View File

@@ -34,6 +34,11 @@ const localeValues: Locale = {
triggerAsc: 'Apasă pentru ordonare crescătoare',
cancelSort: 'Apasă pentru a anula ordonarea',
},
Tour: {
Next: 'Următorul',
Previous: 'Înapoi',
Finish: 'Finalizare',
},
Modal: {
okText: 'OK',
cancelText: 'Anulare',

View File

@@ -36,6 +36,11 @@ const localeValues: Locale = {
triggerAsc: 'ආරෝහණව පෙළගැසීමට ඔබන්න',
cancelSort: 'පෙළගැසීම අවලංගු කිරීමට ඔබන්න',
},
Tour: {
Next: 'ඊළඟ',
Previous: 'පෙර',
Finish: 'අවසන් කරන්න',
},
Modal: {
okText: 'හරි',
cancelText: 'අවලංගු කරන්න',

View File

@@ -36,6 +36,11 @@ const localeValues: Locale = {
triggerAsc: 'Kliknutím zoradíš vzostupne',
cancelSort: 'Kliknutím zrušíš zoradenie',
},
Tour: {
Next: 'Ďalej',
Previous: 'Späť',
Finish: 'Dokončiť',
},
Modal: {
okText: 'OK',
cancelText: 'Zrušiť',

View File

@@ -21,6 +21,11 @@ const localeValues: Locale = {
selectAll: 'Izberi vse na trenutni strani',
selectInvert: 'Obrni izbor na trenutni strani',
},
Tour: {
Next: 'Naprej',
Previous: 'Prejšnje',
Finish: 'Končaj',
},
Modal: {
okText: 'V redu',
cancelText: 'Prekliči',

View File

@@ -34,6 +34,11 @@ const localeValues: Locale = {
triggerAsc: 'Klikni da sortiraš po rastućem redosledu',
cancelSort: 'Klikni da otkažeš sortiranje',
},
Tour: {
Next: 'Sledeće',
Previous: 'Prethodno',
Finish: 'Završi',
},
Modal: {
okText: 'U redu',
cancelText: 'Otkaži',

View File

@@ -35,6 +35,11 @@ const localeValues: Locale = {
triggerAsc: 'ஏறுவரிசையில் வரிசைப்படுத்த கிளிக் செய்யவும்',
cancelSort: 'வரிசையாக்கத்தை ரத்து செய்ய கிளிக் செய்யவும்',
},
Tour: {
Next: 'அடுத்தது',
Previous: 'முந்தையது',
Finish: 'முடிக்கவும்',
},
Modal: {
okText: 'சரி',
cancelText: 'ரத்து செய்யவும்',

View File

@@ -34,6 +34,11 @@ const localeValues: Locale = {
triggerAsc: 'Artýan tertipde tertiple',
cancelSort: 'Tertipleri arassala',
},
Tour: {
Next: 'Indiki',
Previous: 'Öňki',
Finish: 'Tamamla',
},
Modal: {
okText: 'Bolýar',
cancelText: 'Ýatyr',

View File

@@ -34,6 +34,11 @@ const localeValues: Locale = {
triggerAsc: 'چڑھنے کو ترتیب دینے کیلئے کلک کریں',
cancelSort: 'ترتیب کو منسوخ کرنے کیلئے دبائیں',
},
Tour: {
Next: 'اگلا',
Previous: 'پچھلا',
Finish: 'ختم کریں',
},
Modal: {
okText: 'ٹھیک ہے',
cancelText: 'منسوخ کریں',

View File

@@ -89,6 +89,7 @@ Array [
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -470,6 +471,7 @@ exports[`renders components/tour/demo/gap.tsx extend context correctly 1`] = `
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -629,6 +631,7 @@ Array [
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -787,6 +790,7 @@ Array [
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -959,6 +963,7 @@ Array [
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -1063,6 +1068,7 @@ Array [
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>

View File

@@ -549,6 +549,7 @@ exports[`renders components/tour/demo/render-panel.tsx correctly 1`] = `
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -650,6 +651,7 @@ exports[`renders components/tour/demo/render-panel.tsx correctly 1`] = `
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -770,6 +772,7 @@ exports[`renders components/tour/demo/render-panel.tsx correctly 1`] = `
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>

View File

@@ -24,6 +24,7 @@ exports[`Tour Primary 1`] = `
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -229,6 +230,7 @@ exports[`Tour controlled current 1`] = `
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -358,6 +360,7 @@ exports[`Tour custom step pre btn & next btn className & style 1`] = `
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -453,6 +456,7 @@ exports[`Tour should support gap.offset 1`] = `
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -617,6 +621,7 @@ exports[`Tour single 1`] = `
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>
@@ -781,6 +786,7 @@ exports[`Tour step support Primary 1`] = `
class="ant-tour-inner"
>
<button
aria-label="Close"
class="ant-tour-close"
type="button"
>

View File

@@ -707,4 +707,27 @@ describe('Tour', () => {
expect(container.querySelector('.little')).toBeTruthy();
});
});
it('default aria-label', () => {
const { container } = render(<Tour open steps={[{ title: 'test', description: 'test' }]} />);
expect(container.querySelector('.ant-tour-close')?.getAttribute('aria-label')).toBe('Close');
});
it('custom aria-label', () => {
const { container } = render(
<Tour
open
steps={[
{
title: 'test',
description: 'test',
closable: {
'aria-label': 'Custom Close Button',
},
},
]}
/>,
);
expect(container.querySelector('.ant-tour-close')?.getAttribute('aria-label')).toBe(
'Custom Close Button',
);
});
});

View File

@@ -2,6 +2,7 @@ import type { ReactNode } from 'react';
import React from 'react';
import CloseOutlined from '@ant-design/icons/CloseOutlined';
import classNames from 'classnames';
import pickAttrs from 'rc-util/lib/pickAttrs';
import type { ButtonProps } from '../button';
import Button from '../button';
@@ -44,8 +45,19 @@ const TourPanel: React.FC<TourPanelProps> = (props) => {
const mergedType = stepType ?? type;
const ariaProps = pickAttrs(closable ?? {}, true);
const [contextLocaleGlobal] = useLocale('global', defaultLocale.global);
const [contextLocaleTour] = useLocale('Tour', defaultLocale.Tour);
const mergedCloseIcon = (
<button type="button" onClick={onClose} className={`${prefixCls}-close`}>
<button
type="button"
onClick={onClose}
className={`${prefixCls}-close`}
aria-label={contextLocaleGlobal?.close}
{...ariaProps}
>
{closable?.closeIcon || <CloseOutlined className={`${prefixCls}-close-icon`} />}
</button>
);
@@ -103,8 +115,6 @@ const TourPanel: React.FC<TourPanelProps> = (props) => {
ghost: mergedType === 'primary',
};
const [contextLocale] = useLocale('Tour', defaultLocale.Tour);
return (
<div className={`${prefixCls}-content`}>
<div className={`${prefixCls}-inner`}>
@@ -123,7 +133,7 @@ const TourPanel: React.FC<TourPanelProps> = (props) => {
size="small"
className={classNames(`${prefixCls}-prev-btn`, prevButtonProps?.className)}
>
{prevButtonProps?.children ?? contextLocale?.Previous}
{prevButtonProps?.children ?? contextLocaleTour?.Previous}
</Button>
) : null}
<Button
@@ -134,7 +144,7 @@ const TourPanel: React.FC<TourPanelProps> = (props) => {
className={classNames(`${prefixCls}-next-btn`, nextButtonProps?.className)}
>
{nextButtonProps?.children ??
(isLastStep ? contextLocale?.Finish : contextLocale?.Next)}
(isLastStep ? contextLocaleTour?.Finish : contextLocaleTour?.Next)}
</Button>
</div>
</div>