Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ListView updates #2238

Merged
merged 20 commits into from
Aug 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/ar-AE.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} غير المحدد",
"select": "تحديد",
"selectedAll": "جميع العناصر المحددة.",
"selectedCount": "{count, plural, =0 {لم يتم تحديد عناصر} one {# عنصر محدد} other {# عنصر محدد}}.",
"selectedItem": "{item} المحدد"
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/bg-BG.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} не е избран.",
"select": "Изберете",
"selectedAll": "Всички елементи са избрани.",
"selectedCount": "{count, plural, =0 {Няма избрани елементи} one {# избран елемент} other {# избрани елементи}}.",
"selectedItem": "{item} избран."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/cs-CZ.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "Položka {item} není vybrána.",
"select": "Vybrat",
"selectedAll": "Vybrány všechny položky.",
"selectedCount": "{count, plural, =0 {Nevybrány žádné položky} one {Vybrána # položka} other {Vybráno # položek}}.",
"selectedItem": "Vybrána položka {item}."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/da-DK.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} ikke valgt.",
"select": "Vælg",
"selectedAll": "Alle elementer valgt.",
"selectedCount": "{count, plural, =0 {Ingen elementer valgt} one {# element valgt} other {# elementer valgt}}.",
"selectedItem": "{item} valgt."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/de-DE.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} nicht ausgewählt.",
"select": "Auswählen",
"selectedAll": "Alle Elemente ausgewählt.",
"selectedCount": "{count, plural, =0 {Keine Elemente ausgewählt} one {# Element ausgewählt} other {# Elemente ausgewählt}}.",
"selectedItem": "{item} ausgewählt."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/el-GR.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "Δεν επιλέχθηκε το στοιχείο {item}.",
"select": "Επιλογή",
"selectedAll": "Επιλέχθηκαν όλα τα στοιχεία.",
"selectedCount": "{count, plural, =0 {Δεν επιλέχθηκαν στοιχεία} one {Επιλέχθηκε # στοιχείο} other {Επιλέχθηκαν # στοιχεία}}.",
"selectedItem": "Επιλέχθηκε το στοιχείο {item}."
Expand Down
5 changes: 3 additions & 2 deletions packages/@react-aria/grid/intl/en-US.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"deselectedItem": "{item} not selected.",
"select": "Select",
"selectedCount": "{count, plural, =0 {No items selected} one {# item selected} other {# items selected}}.",
"selectedAll": "All items selected.",
"selectedItem": "{item} selected.",
"deselectedItem": "{item} not selected."
"selectedItem": "{item} selected."
}
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/es-ES.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} no seleccionado.",
"select": "Seleccionar",
"selectedAll": "Todos los elementos seleccionados.",
"selectedCount": "{count, plural, =0 {Ningún elemento seleccionado} one {# elemento seleccionado} other {# elementos seleccionados}}.",
"selectedItem": "{item} seleccionado."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/et-EE.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} pole valitud.",
"select": "Vali",
"selectedAll": "Kõik üksused valitud.",
"selectedCount": "{count, plural, =0 {Üksusi pole valitud} one {# üksus valitud} other {# üksust valitud}}.",
"selectedItem": "{item} valitud."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/fi-FI.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "Kohdetta {item} ei valittu.",
"select": "Valitse",
"selectedAll": "Kaikki kohteet valittu.",
"selectedCount": "{count, plural, =0 {Ei yhtään kohdetta valittu} one {# kohde valittu} other {# kohdetta valittu}}.",
"selectedItem": "{item} valittu."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/fr-FR.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} non sélectionné.",
"select": "Sélectionner",
"selectedAll": "Tous les éléments sélectionnés.",
"selectedCount": "{count, plural, =0 {Aucun élément sélectionné} one {# élément sélectionné} other {# éléments sélectionnés}}.",
"selectedItem": "{item} sélectionné."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/he-IL.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} לא נבחר.",
"select": "בחר",
"selectedAll": "כל הפריטים נבחרו.",
"selectedCount": "{count, plural, =0 {לא נבחרו פריטים} one {פריט # נבחר} other {# פריטים נבחרו}}.",
"selectedItem": "{item} נבחר."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/hr-HR.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "Stavka {item} nije odabrana.",
"select": "Odaberite",
"selectedAll": "Odabrane su sve stavke.",
"selectedCount": "{count, plural, =0 {Nije odabrana nijedna stavka} one {Odabrana je # stavka} other {Odabrano je # stavki}}.",
"selectedItem": "Stavka {item} je odabrana."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/hu-HU.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} nincs kijelölve.",
"select": "Kijelölés",
"selectedAll": "Az összes elem kijelölve.",
"selectedCount": "{count, plural, =0 {Egy elem sincs kijelölve} one {# elem kijelölve} other {# elem kijelölve}}.",
"selectedItem": "{item} kijelölve."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/it-IT.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} non selezionato.",
"select": "Seleziona",
"selectedAll": "Tutti gli elementi selezionati.",
"selectedCount": "{count, plural, =0 {Nessun elemento selezionato} one {# elemento selezionato} other {# elementi selezionati}}.",
"selectedItem": "{item} selezionato."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/ja-JP.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} が選択されていません。",
"select": "選択",
"selectedAll": "すべての項目を選択しました。",
"selectedCount": "{count, plural, =0 {項目が選択されていません} one {# 項目を選択しました} other {# 項目を選択しました}}。",
"selectedItem": "{item} を選択しました。"
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/ko-KR.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item}이(가) 선택되지 않았습니다.",
"select": "선택",
"selectedAll": "모든 항목이 선택되었습니다.",
"selectedCount": "{count, plural, =0 {선택된 항목이 없습니다} one {#개 항목이 선택되었습니다} other {#개 항목이 선택되었습니다}}.",
"selectedItem": "{item}이(가) 선택되었습니다."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/lt-LT.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} nepasirinkta.",
"select": "Pasirinkti",
"selectedAll": "Pasirinkti visi elementai.",
"selectedCount": "{count, plural, =0 {Nepasirinktas nė vienas elementas} one {Pasirinktas # elementas} other {Pasirinkta elementų: #}}.",
"selectedItem": "Pasirinkta: {item}."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/lv-LV.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "Vienums {item} nav atlasīts.",
"select": "Atlasīt",
"selectedAll": "Atlasīti visi vienumi.",
"selectedCount": "{count, plural, =0 {Nav atlasīts neviens vienums} one {Atlasīto vienumu skaits: #} other {Atlasīto vienumu skaits: #}}.",
"selectedItem": "Atlasīts vienums {item}."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/nb-NO.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} er ikke valgt.",
"select": "Velg",
"selectedAll": "Alle elementer er valgt.",
"selectedCount": "{count, plural, =0 {Ingen elementer er valgt} one {# element er valgt} other {# elementer er valgt}}.",
"selectedItem": "{item} er valgt."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/nl-NL.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} niet geselecteerd.",
"select": "Selecteren",
"selectedAll": "Alle items geselecteerd.",
"selectedCount": "{count, plural, =0 {Geen items geselecteerd} one {# item geselecteerd} other {# items geselecteerd}}.",
"selectedItem": "{item} geselecteerd."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/pl-PL.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "Nie zaznaczono {item}.",
"select": "Zaznacz",
"selectedAll": "Wszystkie zaznaczone elementy.",
"selectedCount": "{count, plural, =0 {Nie zaznaczono żadnych elementów} one {# zaznaczony element} other {# zaznaczonych elementów}}.",
"selectedItem": "Zaznaczono {item}."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/pt-BR.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} não selecionado.",
"select": "Selecionar",
"selectedAll": "Todos os itens selecionados.",
"selectedCount": "{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}.",
"selectedItem": "{item} selecionado."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/pt-PT.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} não selecionado.",
"select": "Selecionar",
"selectedAll": "Todos os itens selecionados.",
"selectedCount": "{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}.",
"selectedItem": "{item} selecionado."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/ro-RO.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} neselectat.",
"select": "Selectare",
"selectedAll": "Toate elementele selectate.",
"selectedCount": "{count, plural, =0 {Niciun element selectat} one {# element selectat} other {# elemente selectate}}.",
"selectedItem": "{item} selectat."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/ru-RU.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{Item} не выбрано.",
"select": "Выбрать",
"selectedAll": "Выбраны все элементы.",
"selectedCount": "{count, plural, =0 {Нет выбранных элементов} one {# элемент выбран} other {# элементов выбрано}}.",
"selectedItem": "{Item} выбрано."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/sk-SK.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "Nevybraté položky: {item}.",
"select": "Vybrať",
"selectedAll": "Všetky vybraté položky.",
"selectedCount": "{count, plural, =0 {Žiadne vybraté položky} one {# vybratá položka} other {Počet vybratých položiek:#}}.",
"selectedItem": "Vybraté položky: {item}."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/sl-SI.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "Element {item} ni izbran.",
"select": "Izberite",
"selectedAll": "Vsi elementi so izbrani.",
"selectedCount": "{count, plural, =0 {Noben element ni izbran} one {# element je izbran} other {# elementov je izbranih}}.",
"selectedItem": "Element {item} je izbran."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/sr-SP.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} nije izabrano.",
"select": "Izaberite",
"selectedAll": "Izabrane su sve stavke.",
"selectedCount": "{count, plural, =0 {Nije izabrana nijedna stavka} one {Izabrana je # stavka} other {Izabrano je # stavki}}.",
"selectedItem": "{Item} je izabrano."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/sv-SE.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} ej markerat.",
"select": "Markera",
"selectedAll": "Alla markerade objekt.",
"selectedCount": "{count, plural, =0 {Inga markerade objekt} one {# markerat objekt} other {# markerade objekt}}.",
"selectedItem": "{item} markerat."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/tr-TR.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} seçilmedi.",
"select": "Seç",
"selectedAll": "Tüm ögeler seçildi.",
"selectedCount": "{count, plural, =0 {Hiçbir öge seçilmedi} one {# öge seçildi} other {# öge seçildi}}.",
"selectedItem": "{item} seçildi."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/uk-UA.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "{item} не вибрано.",
"select": "Вибрати",
"selectedAll": "Усі елементи вибрано.",
"selectedCount": "{count, plural, =0 {Жодних елементів не вибрано} one {# елемент вибрано} other {Вибрано елементів: #}}.",
"selectedItem": "{item} вибрано."
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/zh-CN.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "未选择 {item}。",
"select": "选择",
"selectedAll": "已选择所有项目。",
"selectedCount": "{count, plural, =0 {未选择项目} one {已选择 # 个项目} other {已选择 # 个项目}}。",
"selectedItem": "已选择 {item}。"
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/intl/zh-TW.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"deselectedItem": "未選取「{item}」。",
"select": "選取",
"selectedAll": "已選取所有項目。",
"selectedCount": "{count, plural, =0 {未選取任何項目} one {已選取 # 個項目} other {已選取 # 個項目}}。",
"selectedItem": "已選取「{item}」。"
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
"@react-aria/utils": "^3.8.2",
"@react-stately/grid": "3.0.0-rc.0",
"@react-stately/virtualizer": "^3.1.5",
"@react-types/checkbox": "^3.2.3",
"@react-types/grid": "3.0.0-rc.0",
"@react-types/shared": "^3.8.0"
},
Expand Down
1 change: 1 addition & 0 deletions packages/@react-aria/grid/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ export * from './useGrid';
export * from './useGridRowGroup';
export * from './useGridRow';
export * from './useGridCell';
export * from './useGridSelectionCheckbox';
47 changes: 47 additions & 0 deletions packages/@react-aria/grid/src/useGridSelectionCheckbox.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import {AriaCheckboxProps} from '@react-types/checkbox';
import {GridCollection} from '@react-types/grid';
import {GridState} from '@react-stately/grid';
// @ts-ignore
import intlMessages from '../intl/*.json';
import {Key} from 'react';
import {useId} from '@react-aria/utils';
import {useMessageFormatter} from '@react-aria/i18n';

interface SelectionCheckboxProps {
/** A unique key for the checkbox. */
key: Key
}

interface SelectionCheckboxAria {
/** Props for the row selection checkbox element. */
checkboxProps: AriaCheckboxProps
}


/**
* Provides the behavior and accessibility implementation for a selection checkbox in a grid.
* @param props - Props for the selection checkbox.
* @param state - State of the grid, as returned by `useGridState`.
*/
export function useGridSelectionCheckbox<T, C extends GridCollection<T>>(props: SelectionCheckboxProps, state: GridState<T, C>): SelectionCheckboxAria {
let {key} = props;

let manager = state.selectionManager;
let checkboxId = useId();
let isDisabled = state.disabledKeys.has(key);
let isSelected = state.selectionManager.isSelected(key);

let onChange = () => manager.select(key);

const formatMessage = useMessageFormatter(intlMessages);

return {
checkboxProps: {
id: checkboxId,
'aria-label': formatMessage('select'),
isSelected,
isDisabled: isDisabled || manager.selectionMode === 'none',
onChange
}
};
}
20 changes: 4 additions & 16 deletions packages/@react-aria/table/src/useTableSelectionCheckbox.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {getRowLabelledBy} from './utils';
import intlMessages from '../intl/*.json';
import {Key} from 'react';
import {TableState} from '@react-stately/table';
import {useId} from '@react-aria/utils';
import {useGridSelectionCheckbox} from '@react-aria/grid';
import {useMessageFormatter} from '@react-aria/i18n';

interface SelectionCheckboxProps {
Expand All @@ -41,24 +41,12 @@ interface SelectAllCheckboxAria {
*/
export function useTableSelectionCheckbox<T>(props: SelectionCheckboxProps, state: TableState<T>): SelectionCheckboxAria {
let {key} = props;

let manager = state.selectionManager;
let checkboxId = useId();
let isDisabled = state.disabledKeys.has(key);
let isSelected = state.selectionManager.isSelected(key);

let onChange = () => manager.select(key);

const formatMessage = useMessageFormatter(intlMessages);
const {checkboxProps} = useGridSelectionCheckbox(props, state);

return {
checkboxProps: {
id: checkboxId,
'aria-label': formatMessage('select'),
'aria-labelledby': `${checkboxId} ${getRowLabelledBy(state, key)}`,
isSelected,
isDisabled: isDisabled || manager.selectionMode === 'none',
onChange
...checkboxProps,
'aria-labelledby': `${checkboxProps.id} ${getRowLabelledBy(state, key)}`
}
};
}
Expand Down
Loading