@box/user-selector 1.21.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +379 -0
- package/README.md +47 -0
- package/dist/chunks/user-selector-headless.module.js +16 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/lib/messages.js +46 -0
- package/dist/esm/lib/shared.js +9 -0
- package/dist/esm/lib/user-selector-container.js +43 -0
- package/dist/esm/lib/user-selector-headless/components/user-avatar.js +32 -0
- package/dist/esm/lib/user-selector-headless/components/user-selector-content.js +51 -0
- package/dist/esm/lib/user-selector-headless/components/user-selector-default-empty.js +43 -0
- package/dist/esm/lib/user-selector-headless/components/user-selector-default-error.js +20 -0
- package/dist/esm/lib/user-selector-headless/components/user-selector-skeleton.js +27 -0
- package/dist/esm/lib/user-selector-headless/hooks/use-avatars.js +22 -0
- package/dist/esm/lib/user-selector-headless/hooks/use-keyboard-navigation.js +27 -0
- package/dist/esm/lib/user-selector-headless/hooks/use-select-options.js +28 -0
- package/dist/esm/lib/user-selector-headless/user-selector-context.js +11 -0
- package/dist/esm/lib/user-selector-headless/user-selector-headless.js +168 -0
- package/dist/esm/lib/user-selector-list-item.js +114 -0
- package/dist/esm/lib/user-selector.js +77 -0
- package/dist/esm/lib/utils/VariantsAggregator.js +46 -0
- package/dist/esm/lib/utils/defaultRenderCustomOption.js +12 -0
- package/dist/esm/lib/utils/getInitials.js +7 -0
- package/dist/esm/lib/utils/isUserContactType.js +6 -0
- package/dist/i18n/bn-IN.js +12 -0
- package/dist/i18n/bn-IN.properties +20 -0
- package/dist/i18n/da-DK.js +12 -0
- package/dist/i18n/da-DK.properties +20 -0
- package/dist/i18n/de-DE.js +12 -0
- package/dist/i18n/de-DE.properties +20 -0
- package/dist/i18n/en-AU.js +12 -0
- package/dist/i18n/en-AU.properties +20 -0
- package/dist/i18n/en-CA.js +12 -0
- package/dist/i18n/en-CA.properties +20 -0
- package/dist/i18n/en-GB.js +12 -0
- package/dist/i18n/en-GB.properties +20 -0
- package/dist/i18n/en-US.js +12 -0
- package/dist/i18n/en-US.properties +20 -0
- package/dist/i18n/en-x-pseudo.js +12 -0
- package/dist/i18n/en-x-pseudo.properties +20 -0
- package/dist/i18n/es-419.js +12 -0
- package/dist/i18n/es-419.properties +20 -0
- package/dist/i18n/es-ES.js +12 -0
- package/dist/i18n/es-ES.properties +20 -0
- package/dist/i18n/fi-FI.js +12 -0
- package/dist/i18n/fi-FI.properties +20 -0
- package/dist/i18n/fr-CA.js +12 -0
- package/dist/i18n/fr-CA.properties +20 -0
- package/dist/i18n/fr-FR.js +12 -0
- package/dist/i18n/fr-FR.properties +20 -0
- package/dist/i18n/hi-IN.js +12 -0
- package/dist/i18n/hi-IN.properties +20 -0
- package/dist/i18n/it-IT.js +12 -0
- package/dist/i18n/it-IT.properties +20 -0
- package/dist/i18n/ja-JP.js +12 -0
- package/dist/i18n/ja-JP.properties +20 -0
- package/dist/i18n/json/src/lib/messages.json +1 -0
- package/dist/i18n/ko-KR.js +12 -0
- package/dist/i18n/ko-KR.properties +20 -0
- package/dist/i18n/nb-NO.js +12 -0
- package/dist/i18n/nb-NO.properties +20 -0
- package/dist/i18n/nl-NL.js +12 -0
- package/dist/i18n/nl-NL.properties +20 -0
- package/dist/i18n/pl-PL.js +12 -0
- package/dist/i18n/pl-PL.properties +20 -0
- package/dist/i18n/pt-BR.js +12 -0
- package/dist/i18n/pt-BR.properties +20 -0
- package/dist/i18n/ru-RU.js +12 -0
- package/dist/i18n/ru-RU.properties +20 -0
- package/dist/i18n/sv-SE.js +12 -0
- package/dist/i18n/sv-SE.properties +20 -0
- package/dist/i18n/tr-TR.js +12 -0
- package/dist/i18n/tr-TR.properties +20 -0
- package/dist/i18n/zh-CN.js +12 -0
- package/dist/i18n/zh-CN.properties +20 -0
- package/dist/i18n/zh-TW.js +12 -0
- package/dist/i18n/zh-TW.properties +20 -0
- package/dist/styles/user-selector-headless.css +1 -0
- package/dist/styles/user-selector-list-item.css +1 -0
- package/dist/styles/user-selector.css +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/lib/messages.d.ts +53 -0
- package/dist/types/lib/shared.d.ts +2 -0
- package/dist/types/lib/stories/shared-headless.d.ts +4 -0
- package/dist/types/lib/stories/shared.d.ts +18 -0
- package/dist/types/lib/stories/utils/getCaretCoordinates.d.ts +5 -0
- package/dist/types/lib/stories/utils/testUsers.d.ts +13 -0
- package/dist/types/lib/types.d.ts +33 -0
- package/dist/types/lib/user-selector-container.d.ts +13 -0
- package/dist/types/lib/user-selector-headless/components/user-avatar.d.ts +6 -0
- package/dist/types/lib/user-selector-headless/components/user-selector-content.d.ts +15 -0
- package/dist/types/lib/user-selector-headless/components/user-selector-default-empty.d.ts +4 -0
- package/dist/types/lib/user-selector-headless/components/user-selector-default-error.d.ts +1 -0
- package/dist/types/lib/user-selector-headless/components/user-selector-skeleton.d.ts +5 -0
- package/dist/types/lib/user-selector-headless/hooks/use-avatars.d.ts +7 -0
- package/dist/types/lib/user-selector-headless/hooks/use-keyboard-navigation.d.ts +11 -0
- package/dist/types/lib/user-selector-headless/hooks/use-select-options.d.ts +14 -0
- package/dist/types/lib/user-selector-headless/types.d.ts +0 -0
- package/dist/types/lib/user-selector-headless/user-selector-context.d.ts +15 -0
- package/dist/types/lib/user-selector-headless/user-selector-headless.d.ts +28 -0
- package/dist/types/lib/user-selector-list-item.d.ts +56 -0
- package/dist/types/lib/user-selector.d.ts +37 -0
- package/dist/types/lib/utils/VariantsAggregator.d.ts +15 -0
- package/dist/types/lib/utils/defaultRenderCustomOption.d.ts +4 -0
- package/dist/types/lib/utils/getInitials.d.ts +1 -0
- package/dist/types/lib/utils/isUserContactType.d.ts +2 -0
- package/package.json +52 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"groupSharedFeatures.userSelector.emptyMessage": "Geen medebewerkers gevonden",
|
|
3
|
+
"groupSharedFeatures.userSelector.errorMessage": "We konden gebruikers niet laden",
|
|
4
|
+
"groupSharedFeatures.userSelector.errorMessageDescription": "Probeer het later opnieuw",
|
|
5
|
+
"groupSharedFeatures.userSelector.inviteCollaborators": "Medebewerkers uitnodigen",
|
|
6
|
+
"groupSharedFeatures.userSelector.inviteCollaboratorsTooltip": "Deze persoon heeft geen toegang en wordt niet op de hoogte gesteld, tenzij hij of zij is uitgenodigd.",
|
|
7
|
+
"groupSharedFeatures.userSelector.loading": "Laden",
|
|
8
|
+
"groupSharedFeatures.userSelector.noResults": "Geen resultaten",
|
|
9
|
+
"groupSharedFeatures.userSelector.tryAgain": "Probeer het opnieuw",
|
|
10
|
+
"groupSharedFeatures.userSelector.userAvatar": "Avatar van de gebruiker",
|
|
11
|
+
"groupSharedFeatures.userSelector.userName": "{name} {isCurrentUser, select, true { (ik)} other {}}"
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Text displayed when no results are found
|
|
2
|
+
groupSharedFeatures.userSelector.emptyMessage = Geen medebewerkers gevonden
|
|
3
|
+
# Text displayed when an error occurs
|
|
4
|
+
groupSharedFeatures.userSelector.errorMessage = We konden gebruikers niet laden
|
|
5
|
+
# Text displayed when an error occurs
|
|
6
|
+
groupSharedFeatures.userSelector.errorMessageDescription = Probeer het later opnieuw
|
|
7
|
+
# Text displayed when no results are found and the user can invite collaborators
|
|
8
|
+
groupSharedFeatures.userSelector.inviteCollaborators = Medebewerkers uitnodigen
|
|
9
|
+
# Tooltip text displayed when a user is not a collaborator
|
|
10
|
+
groupSharedFeatures.userSelector.inviteCollaboratorsTooltip = Deze persoon heeft geen toegang en wordt niet op de hoogte gesteld, tenzij hij of zij is uitgenodigd.
|
|
11
|
+
# Aria label for loading indicator
|
|
12
|
+
groupSharedFeatures.userSelector.loading = Laden
|
|
13
|
+
# Text displayed when no results are found
|
|
14
|
+
groupSharedFeatures.userSelector.noResults = Geen resultaten
|
|
15
|
+
# Text for the "Try again" button
|
|
16
|
+
groupSharedFeatures.userSelector.tryAgain = Probeer het opnieuw
|
|
17
|
+
# Alt text for user avatar image
|
|
18
|
+
groupSharedFeatures.userSelector.userAvatar = Avatar van de gebruiker
|
|
19
|
+
# User name with optional "me" marker for current user
|
|
20
|
+
groupSharedFeatures.userSelector.userName = {name} {isCurrentUser, select, true { (ik)} other {}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"groupSharedFeatures.userSelector.emptyMessage": "Nie odnaleziono współpracowników",
|
|
3
|
+
"groupSharedFeatures.userSelector.errorMessage": "Nie można wczytać użytkowników",
|
|
4
|
+
"groupSharedFeatures.userSelector.errorMessageDescription": "Spróbuj ponownie później",
|
|
5
|
+
"groupSharedFeatures.userSelector.inviteCollaborators": "Zaproś współpracowników",
|
|
6
|
+
"groupSharedFeatures.userSelector.inviteCollaboratorsTooltip": "Ta osoba nie ma dostępu i nie otrzyma powiadomienia, chyba że zostanie zaproszona.",
|
|
7
|
+
"groupSharedFeatures.userSelector.loading": "Wczytywanie",
|
|
8
|
+
"groupSharedFeatures.userSelector.noResults": "Brak wyników",
|
|
9
|
+
"groupSharedFeatures.userSelector.tryAgain": "Spróbuj ponownie",
|
|
10
|
+
"groupSharedFeatures.userSelector.userAvatar": "Awatar użytkownika",
|
|
11
|
+
"groupSharedFeatures.userSelector.userName": "{name} {isCurrentUser, select, true { (ja)} other {}}"
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Text displayed when no results are found
|
|
2
|
+
groupSharedFeatures.userSelector.emptyMessage = Nie odnaleziono współpracowników
|
|
3
|
+
# Text displayed when an error occurs
|
|
4
|
+
groupSharedFeatures.userSelector.errorMessage = Nie można wczytać użytkowników
|
|
5
|
+
# Text displayed when an error occurs
|
|
6
|
+
groupSharedFeatures.userSelector.errorMessageDescription = Spróbuj ponownie później
|
|
7
|
+
# Text displayed when no results are found and the user can invite collaborators
|
|
8
|
+
groupSharedFeatures.userSelector.inviteCollaborators = Zaproś współpracowników
|
|
9
|
+
# Tooltip text displayed when a user is not a collaborator
|
|
10
|
+
groupSharedFeatures.userSelector.inviteCollaboratorsTooltip = Ta osoba nie ma dostępu i nie otrzyma powiadomienia, chyba że zostanie zaproszona.
|
|
11
|
+
# Aria label for loading indicator
|
|
12
|
+
groupSharedFeatures.userSelector.loading = Wczytywanie
|
|
13
|
+
# Text displayed when no results are found
|
|
14
|
+
groupSharedFeatures.userSelector.noResults = Brak wyników
|
|
15
|
+
# Text for the "Try again" button
|
|
16
|
+
groupSharedFeatures.userSelector.tryAgain = Spróbuj ponownie
|
|
17
|
+
# Alt text for user avatar image
|
|
18
|
+
groupSharedFeatures.userSelector.userAvatar = Awatar użytkownika
|
|
19
|
+
# User name with optional "me" marker for current user
|
|
20
|
+
groupSharedFeatures.userSelector.userName = {name} {isCurrentUser, select, true { (ja)} other {}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"groupSharedFeatures.userSelector.emptyMessage": "Não foram encontradas colaborações",
|
|
3
|
+
"groupSharedFeatures.userSelector.errorMessage": "Não foi possível carregar usuários",
|
|
4
|
+
"groupSharedFeatures.userSelector.errorMessageDescription": "Tente novamente mais tarde",
|
|
5
|
+
"groupSharedFeatures.userSelector.inviteCollaborators": "Convidar colaboradores",
|
|
6
|
+
"groupSharedFeatures.userSelector.inviteCollaboratorsTooltip": "Essa pessoa não tem acesso e não será notificada, a menos que seja convidada.",
|
|
7
|
+
"groupSharedFeatures.userSelector.loading": "Carregando",
|
|
8
|
+
"groupSharedFeatures.userSelector.noResults": "Sem resultados",
|
|
9
|
+
"groupSharedFeatures.userSelector.tryAgain": "Tente novamente",
|
|
10
|
+
"groupSharedFeatures.userSelector.userAvatar": "Avatar do usuário",
|
|
11
|
+
"groupSharedFeatures.userSelector.userName": "{name} {isCurrentUser, select, true { (eu)} other {}}"
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Text displayed when no results are found
|
|
2
|
+
groupSharedFeatures.userSelector.emptyMessage = Não foram encontradas colaborações
|
|
3
|
+
# Text displayed when an error occurs
|
|
4
|
+
groupSharedFeatures.userSelector.errorMessage = Não foi possível carregar usuários
|
|
5
|
+
# Text displayed when an error occurs
|
|
6
|
+
groupSharedFeatures.userSelector.errorMessageDescription = Tente novamente mais tarde
|
|
7
|
+
# Text displayed when no results are found and the user can invite collaborators
|
|
8
|
+
groupSharedFeatures.userSelector.inviteCollaborators = Convidar colaboradores
|
|
9
|
+
# Tooltip text displayed when a user is not a collaborator
|
|
10
|
+
groupSharedFeatures.userSelector.inviteCollaboratorsTooltip = Essa pessoa não tem acesso e não será notificada, a menos que seja convidada.
|
|
11
|
+
# Aria label for loading indicator
|
|
12
|
+
groupSharedFeatures.userSelector.loading = Carregando
|
|
13
|
+
# Text displayed when no results are found
|
|
14
|
+
groupSharedFeatures.userSelector.noResults = Sem resultados
|
|
15
|
+
# Text for the "Try again" button
|
|
16
|
+
groupSharedFeatures.userSelector.tryAgain = Tente novamente
|
|
17
|
+
# Alt text for user avatar image
|
|
18
|
+
groupSharedFeatures.userSelector.userAvatar = Avatar do usuário
|
|
19
|
+
# User name with optional "me" marker for current user
|
|
20
|
+
groupSharedFeatures.userSelector.userName = {name} {isCurrentUser, select, true { (eu)} other {}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"groupSharedFeatures.userSelector.emptyMessage": "Соавторы не найдены",
|
|
3
|
+
"groupSharedFeatures.userSelector.errorMessage": "Не удалось загрузить пользователей",
|
|
4
|
+
"groupSharedFeatures.userSelector.errorMessageDescription": "Повторите попытку позже",
|
|
5
|
+
"groupSharedFeatures.userSelector.inviteCollaborators": "Пригласить соавторов",
|
|
6
|
+
"groupSharedFeatures.userSelector.inviteCollaboratorsTooltip": "У этого пользователя нет доступа, и он не получит уведомление, если его не пригласить.",
|
|
7
|
+
"groupSharedFeatures.userSelector.loading": "Загрузка",
|
|
8
|
+
"groupSharedFeatures.userSelector.noResults": "Нет результатов",
|
|
9
|
+
"groupSharedFeatures.userSelector.tryAgain": "Повторите попытку",
|
|
10
|
+
"groupSharedFeatures.userSelector.userAvatar": "Аватар пользователя",
|
|
11
|
+
"groupSharedFeatures.userSelector.userName": "{name} {isCurrentUser, select, true { (я)} other {}}"
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Text displayed when no results are found
|
|
2
|
+
groupSharedFeatures.userSelector.emptyMessage = Соавторы не найдены
|
|
3
|
+
# Text displayed when an error occurs
|
|
4
|
+
groupSharedFeatures.userSelector.errorMessage = Не удалось загрузить пользователей
|
|
5
|
+
# Text displayed when an error occurs
|
|
6
|
+
groupSharedFeatures.userSelector.errorMessageDescription = Повторите попытку позже
|
|
7
|
+
# Text displayed when no results are found and the user can invite collaborators
|
|
8
|
+
groupSharedFeatures.userSelector.inviteCollaborators = Пригласить соавторов
|
|
9
|
+
# Tooltip text displayed when a user is not a collaborator
|
|
10
|
+
groupSharedFeatures.userSelector.inviteCollaboratorsTooltip = У этого пользователя нет доступа, и он не получит уведомление, если его не пригласить.
|
|
11
|
+
# Aria label for loading indicator
|
|
12
|
+
groupSharedFeatures.userSelector.loading = Загрузка
|
|
13
|
+
# Text displayed when no results are found
|
|
14
|
+
groupSharedFeatures.userSelector.noResults = Нет результатов
|
|
15
|
+
# Text for the "Try again" button
|
|
16
|
+
groupSharedFeatures.userSelector.tryAgain = Повторите попытку
|
|
17
|
+
# Alt text for user avatar image
|
|
18
|
+
groupSharedFeatures.userSelector.userAvatar = Аватар пользователя
|
|
19
|
+
# User name with optional "me" marker for current user
|
|
20
|
+
groupSharedFeatures.userSelector.userName = {name} {isCurrentUser, select, true { (я)} other {}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"groupSharedFeatures.userSelector.emptyMessage": "Inga samarbeten hittades",
|
|
3
|
+
"groupSharedFeatures.userSelector.errorMessage": "Vi kunde inte läsa in användare.",
|
|
4
|
+
"groupSharedFeatures.userSelector.errorMessageDescription": "Försök igen senare",
|
|
5
|
+
"groupSharedFeatures.userSelector.inviteCollaborators": "Bjud in medarbetare",
|
|
6
|
+
"groupSharedFeatures.userSelector.inviteCollaboratorsTooltip": "Den här personen har inte åtkomst och kommer inte att meddelas om han inte är inbjuden.",
|
|
7
|
+
"groupSharedFeatures.userSelector.loading": "Läser in",
|
|
8
|
+
"groupSharedFeatures.userSelector.noResults": "Inga resultat",
|
|
9
|
+
"groupSharedFeatures.userSelector.tryAgain": "Försök igen",
|
|
10
|
+
"groupSharedFeatures.userSelector.userAvatar": "Användaravatar",
|
|
11
|
+
"groupSharedFeatures.userSelector.userName": "{name} {isCurrentUser, select, true { (jag)} other {}}"
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Text displayed when no results are found
|
|
2
|
+
groupSharedFeatures.userSelector.emptyMessage = Inga samarbeten hittades
|
|
3
|
+
# Text displayed when an error occurs
|
|
4
|
+
groupSharedFeatures.userSelector.errorMessage = Vi kunde inte läsa in användare.
|
|
5
|
+
# Text displayed when an error occurs
|
|
6
|
+
groupSharedFeatures.userSelector.errorMessageDescription = Försök igen senare
|
|
7
|
+
# Text displayed when no results are found and the user can invite collaborators
|
|
8
|
+
groupSharedFeatures.userSelector.inviteCollaborators = Bjud in medarbetare
|
|
9
|
+
# Tooltip text displayed when a user is not a collaborator
|
|
10
|
+
groupSharedFeatures.userSelector.inviteCollaboratorsTooltip = Den här personen har inte åtkomst och kommer inte att meddelas om han inte är inbjuden.
|
|
11
|
+
# Aria label for loading indicator
|
|
12
|
+
groupSharedFeatures.userSelector.loading = Läser in
|
|
13
|
+
# Text displayed when no results are found
|
|
14
|
+
groupSharedFeatures.userSelector.noResults = Inga resultat
|
|
15
|
+
# Text for the "Try again" button
|
|
16
|
+
groupSharedFeatures.userSelector.tryAgain = Försök igen
|
|
17
|
+
# Alt text for user avatar image
|
|
18
|
+
groupSharedFeatures.userSelector.userAvatar = Användaravatar
|
|
19
|
+
# User name with optional "me" marker for current user
|
|
20
|
+
groupSharedFeatures.userSelector.userName = {name} {isCurrentUser, select, true { (jag)} other {}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"groupSharedFeatures.userSelector.emptyMessage": "İşbirlikçi bulunamadı",
|
|
3
|
+
"groupSharedFeatures.userSelector.errorMessage": "Kullanıcıları yükleyemedik",
|
|
4
|
+
"groupSharedFeatures.userSelector.errorMessageDescription": "Lütfen daha sonra tekrar deneyin",
|
|
5
|
+
"groupSharedFeatures.userSelector.inviteCollaborators": "İşbirlikçileri Davet Et",
|
|
6
|
+
"groupSharedFeatures.userSelector.inviteCollaboratorsTooltip": "Bu kişinin erişimi yok ve davet edilmediği sürece bildirim almayacak.",
|
|
7
|
+
"groupSharedFeatures.userSelector.loading": "Yükleniyor",
|
|
8
|
+
"groupSharedFeatures.userSelector.noResults": "Sonuç Yok",
|
|
9
|
+
"groupSharedFeatures.userSelector.tryAgain": "Yeniden deneyin",
|
|
10
|
+
"groupSharedFeatures.userSelector.userAvatar": "Kullanıcı avatarı",
|
|
11
|
+
"groupSharedFeatures.userSelector.userName": "{name} {isCurrentUser, select, true { (ben)} other {}}"
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Text displayed when no results are found
|
|
2
|
+
groupSharedFeatures.userSelector.emptyMessage = İşbirlikçi bulunamadı
|
|
3
|
+
# Text displayed when an error occurs
|
|
4
|
+
groupSharedFeatures.userSelector.errorMessage = Kullanıcıları yükleyemedik
|
|
5
|
+
# Text displayed when an error occurs
|
|
6
|
+
groupSharedFeatures.userSelector.errorMessageDescription = Lütfen daha sonra tekrar deneyin
|
|
7
|
+
# Text displayed when no results are found and the user can invite collaborators
|
|
8
|
+
groupSharedFeatures.userSelector.inviteCollaborators = İşbirlikçileri Davet Et
|
|
9
|
+
# Tooltip text displayed when a user is not a collaborator
|
|
10
|
+
groupSharedFeatures.userSelector.inviteCollaboratorsTooltip = Bu kişinin erişimi yok ve davet edilmediği sürece bildirim almayacak.
|
|
11
|
+
# Aria label for loading indicator
|
|
12
|
+
groupSharedFeatures.userSelector.loading = Yükleniyor
|
|
13
|
+
# Text displayed when no results are found
|
|
14
|
+
groupSharedFeatures.userSelector.noResults = Sonuç Yok
|
|
15
|
+
# Text for the "Try again" button
|
|
16
|
+
groupSharedFeatures.userSelector.tryAgain = Yeniden deneyin
|
|
17
|
+
# Alt text for user avatar image
|
|
18
|
+
groupSharedFeatures.userSelector.userAvatar = Kullanıcı avatarı
|
|
19
|
+
# User name with optional "me" marker for current user
|
|
20
|
+
groupSharedFeatures.userSelector.userName = {name} {isCurrentUser, select, true { (ben)} other {}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"groupSharedFeatures.userSelector.emptyMessage": "未找到协作者",
|
|
3
|
+
"groupSharedFeatures.userSelector.errorMessage": "无法加载用户。",
|
|
4
|
+
"groupSharedFeatures.userSelector.errorMessageDescription": "请稍后重试",
|
|
5
|
+
"groupSharedFeatures.userSelector.inviteCollaborators": "邀请协作者",
|
|
6
|
+
"groupSharedFeatures.userSelector.inviteCollaboratorsTooltip": "此人无权访问,除非受到邀请,否则不会收到通知。",
|
|
7
|
+
"groupSharedFeatures.userSelector.loading": "正在加载",
|
|
8
|
+
"groupSharedFeatures.userSelector.noResults": "无结果",
|
|
9
|
+
"groupSharedFeatures.userSelector.tryAgain": "请重试",
|
|
10
|
+
"groupSharedFeatures.userSelector.userAvatar": "用户头像",
|
|
11
|
+
"groupSharedFeatures.userSelector.userName": "{name} {isCurrentUser, select, true { (我)} other {}}"
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Text displayed when no results are found
|
|
2
|
+
groupSharedFeatures.userSelector.emptyMessage = 未找到协作者
|
|
3
|
+
# Text displayed when an error occurs
|
|
4
|
+
groupSharedFeatures.userSelector.errorMessage = 无法加载用户。
|
|
5
|
+
# Text displayed when an error occurs
|
|
6
|
+
groupSharedFeatures.userSelector.errorMessageDescription = 请稍后重试
|
|
7
|
+
# Text displayed when no results are found and the user can invite collaborators
|
|
8
|
+
groupSharedFeatures.userSelector.inviteCollaborators = 邀请协作者
|
|
9
|
+
# Tooltip text displayed when a user is not a collaborator
|
|
10
|
+
groupSharedFeatures.userSelector.inviteCollaboratorsTooltip = 此人无权访问,除非受到邀请,否则不会收到通知。
|
|
11
|
+
# Aria label for loading indicator
|
|
12
|
+
groupSharedFeatures.userSelector.loading = 正在加载
|
|
13
|
+
# Text displayed when no results are found
|
|
14
|
+
groupSharedFeatures.userSelector.noResults = 无结果
|
|
15
|
+
# Text for the "Try again" button
|
|
16
|
+
groupSharedFeatures.userSelector.tryAgain = 请重试
|
|
17
|
+
# Alt text for user avatar image
|
|
18
|
+
groupSharedFeatures.userSelector.userAvatar = 用户头像
|
|
19
|
+
# User name with optional "me" marker for current user
|
|
20
|
+
groupSharedFeatures.userSelector.userName = {name} {isCurrentUser, select, true { (我)} other {}}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"groupSharedFeatures.userSelector.emptyMessage": "找不到共同作業者",
|
|
3
|
+
"groupSharedFeatures.userSelector.errorMessage": "我們無法載入使用者",
|
|
4
|
+
"groupSharedFeatures.userSelector.errorMessageDescription": "請稍後再試一次",
|
|
5
|
+
"groupSharedFeatures.userSelector.inviteCollaborators": "邀請共同作業者",
|
|
6
|
+
"groupSharedFeatures.userSelector.inviteCollaboratorsTooltip": "此人沒有存取權限,除非受邀,否則不會接到通知。",
|
|
7
|
+
"groupSharedFeatures.userSelector.loading": "載入中",
|
|
8
|
+
"groupSharedFeatures.userSelector.noResults": "無結果",
|
|
9
|
+
"groupSharedFeatures.userSelector.tryAgain": "再試一次",
|
|
10
|
+
"groupSharedFeatures.userSelector.userAvatar": "使用者頭像",
|
|
11
|
+
"groupSharedFeatures.userSelector.userName": "{name} {isCurrentUser, select, true { (我)} other {}}"
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Text displayed when no results are found
|
|
2
|
+
groupSharedFeatures.userSelector.emptyMessage = 找不到共同作業者
|
|
3
|
+
# Text displayed when an error occurs
|
|
4
|
+
groupSharedFeatures.userSelector.errorMessage = 我們無法載入使用者
|
|
5
|
+
# Text displayed when an error occurs
|
|
6
|
+
groupSharedFeatures.userSelector.errorMessageDescription = 請稍後再試一次
|
|
7
|
+
# Text displayed when no results are found and the user can invite collaborators
|
|
8
|
+
groupSharedFeatures.userSelector.inviteCollaborators = 邀請共同作業者
|
|
9
|
+
# Tooltip text displayed when a user is not a collaborator
|
|
10
|
+
groupSharedFeatures.userSelector.inviteCollaboratorsTooltip = 此人沒有存取權限,除非受邀,否則不會接到通知。
|
|
11
|
+
# Aria label for loading indicator
|
|
12
|
+
groupSharedFeatures.userSelector.loading = 載入中
|
|
13
|
+
# Text displayed when no results are found
|
|
14
|
+
groupSharedFeatures.userSelector.noResults = 無結果
|
|
15
|
+
# Text for the "Try again" button
|
|
16
|
+
groupSharedFeatures.userSelector.tryAgain = 再試一次
|
|
17
|
+
# Alt text for user avatar image
|
|
18
|
+
groupSharedFeatures.userSelector.userAvatar = 使用者頭像
|
|
19
|
+
# User name with optional "me" marker for current user
|
|
20
|
+
groupSharedFeatures.userSelector.userName = {name} {isCurrentUser, select, true { (我)} other {}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._userSelectorListItemBase_qevbl_1,._userSelectorInviteRow_qevbl_1{display:flex;align-items:center;border:2px solid transparent}._userSelectorListItemBase_qevbl_1:hover,._userSelectorInviteRow_qevbl_1:hover,._userSelectorListItemBase_qevbl_1:focus,._userSelectorInviteRow_qevbl_1:focus,._userSelectorListItemBase_qevbl_1[aria-selected=true],[aria-selected=true]._userSelectorInviteRow_qevbl_1{background-color:var(--surface-menu-surface-hover);border-radius:var(--radius-3);cursor:pointer}._userSelectorListItemBase_qevbl_1[aria-selected=true],[aria-selected=true]._userSelectorInviteRow_qevbl_1{border-color:var(--outline-focus-on-light)}._userSelectorListItemBase_qevbl_1:focus,._userSelectorInviteRow_qevbl_1:focus{outline-color:var(--outline-focus-on-light)}._popoverContainer_qevbl_18>div{width:294px;max-height:200px;padding:var(--space-3);overflow:auto;overflow-x:hidden}._popoverContent_qevbl_26{display:block;overflow:initial;border:1px solid transparent}._userSelectorListItem_qevbl_1{padding-block:var(--space-2);padding-inline:var(--space-2)}._listItemAvatar_qevbl_37{flex-shrink:0}._userSelectorGhostStateItem_qevbl_41{display:flex;gap:var(--space-2);align-items:center;padding:var(--space-2)}._userSelectorGhostStateItem_qevbl_41 ._titleGhost_qevbl_47{flex-shrink:0}._userSelectorEmptyText_qevbl_51{font-weight:var(--label-default-font-weight);font-size:var(--label-default-font-size);font-family:var(--label-default-font-family);line-height:var(--label-default-line-height);letter-spacing:var(--label-default-letter-spacing);text-transform:var(--label-default-text-case);text-decoration:var(--label-default-text-decoration);width:248px;padding:var(--space-2);color:var(--text-text-on-light-secondary);text-transform:uppercase}._userSelectorEmptyContainer_qevbl_65{display:flex;flex-direction:column;gap:var(--space-2);align-items:stretch}._userSelectorInviteRow_qevbl_1{gap:var(--space-3);height:var(--size-9);font:inherit;background-color:var(--surface-menu-surface);cursor:pointer}._userSelectorInviteButtonIcon_qevbl_80{display:flex;flex-shrink:0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._userSelectorListItemBase_1m2q6_1,._userSelectorListItem_1m2q6_1{display:flex;align-items:center;border:2px solid transparent}._userSelectorListItemBase_1m2q6_1:hover,._userSelectorListItem_1m2q6_1:hover,._userSelectorListItemBase_1m2q6_1:focus,._userSelectorListItem_1m2q6_1:focus,._userSelectorListItemBase_1m2q6_1[aria-selected=true],[aria-selected=true]._userSelectorListItem_1m2q6_1{background-color:var(--surface-menu-surface-hover);border-radius:var(--radius-3);cursor:pointer}._userSelectorListItemBase_1m2q6_1[aria-selected=true],[aria-selected=true]._userSelectorListItem_1m2q6_1{border-color:var(--outline-focus-on-light)}._userSelectorListItemBase_1m2q6_1:focus,._userSelectorListItem_1m2q6_1:focus{outline-color:var(--outline-focus-on-light)}._userSelectorListItem_1m2q6_1 ._listItemAvatar_1m2q6_18{flex-shrink:0}._userSelectorListItem_1m2q6_1 ._userInfo_1m2q6_21{display:flex;flex:1;flex-direction:column;margin-inline-start:var(--space-3);overflow:auto}._userSelectorListItem_1m2q6_1 ._userInfo_1m2q6_21 ._title_1m2q6_28{display:flex}._userSelectorListItem_1m2q6_1 ._userInfo_1m2q6_21 ._title_1m2q6_28 :not(:last-child){margin-inline-end:var(--space-1)}._userSelectorListItem_1m2q6_1 ._userInfo_1m2q6_21 ._userName_1m2q6_34,._userSelectorListItem_1m2q6_1 ._userInfo_1m2q6_21 ._userEmail_1m2q6_35{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}._userSelectorListItem_1m2q6_1 ._userInfo_1m2q6_21 ._userEmail_1m2q6_35{margin-block-start:var(--space-05)}._userSelectorListItem_1m2q6_1 ._userSelectorListItemInviteIcon_1m2q6_43{flex-shrink:0;margin-inline-start:auto;margin-left:var(--space-2);visibility:hidden}._userSelectorListItem_1m2q6_1:hover ._userSelectorListItemInviteIcon_1m2q6_43{visibility:visible}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._textArea_shf88_1._textArea_shf88_1._textArea_shf88_1 [data-testid=combobox-container]{align-items:flex-start;box-sizing:border-box;min-height:80px;max-height:none}._textArea_shf88_1._textArea_shf88_1._textArea_shf88_1 [data-testid=combobox-container] input{padding:var(--space-1) 0}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
declare const messages: {
|
|
2
|
+
loading: {
|
|
3
|
+
defaultMessage: string;
|
|
4
|
+
description: string;
|
|
5
|
+
id: string;
|
|
6
|
+
};
|
|
7
|
+
noResults: {
|
|
8
|
+
defaultMessage: string;
|
|
9
|
+
description: string;
|
|
10
|
+
id: string;
|
|
11
|
+
};
|
|
12
|
+
tryAgain: {
|
|
13
|
+
defaultMessage: string;
|
|
14
|
+
description: string;
|
|
15
|
+
id: string;
|
|
16
|
+
};
|
|
17
|
+
userAvatar: {
|
|
18
|
+
defaultMessage: string;
|
|
19
|
+
description: string;
|
|
20
|
+
id: string;
|
|
21
|
+
};
|
|
22
|
+
userName: {
|
|
23
|
+
defaultMessage: string;
|
|
24
|
+
description: string;
|
|
25
|
+
id: string;
|
|
26
|
+
};
|
|
27
|
+
errorMessage: {
|
|
28
|
+
defaultMessage: string;
|
|
29
|
+
description: string;
|
|
30
|
+
id: string;
|
|
31
|
+
};
|
|
32
|
+
errorMessageDescription: {
|
|
33
|
+
defaultMessage: string;
|
|
34
|
+
description: string;
|
|
35
|
+
id: string;
|
|
36
|
+
};
|
|
37
|
+
emptyMessage: {
|
|
38
|
+
defaultMessage: string;
|
|
39
|
+
description: string;
|
|
40
|
+
id: string;
|
|
41
|
+
};
|
|
42
|
+
inviteCollaborators: {
|
|
43
|
+
defaultMessage: string;
|
|
44
|
+
description: string;
|
|
45
|
+
id: string;
|
|
46
|
+
};
|
|
47
|
+
inviteCollaboratorsTooltip: {
|
|
48
|
+
defaultMessage: string;
|
|
49
|
+
description: string;
|
|
50
|
+
id: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
export default messages;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { HeadlessUserSelectorProps } from '../user-selector-headless/user-selector-headless';
|
|
2
|
+
import { ComponentRecord } from '../utils/VariantsAggregator';
|
|
3
|
+
export declare const ComponentTemplate: (props: HeadlessUserSelectorProps) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare const UserSelectorHeadlessMap: ComponentRecord<HeadlessUserSelectorProps>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
|
2
|
+
import { UserContactType, UserSelectorOption } from '../types';
|
|
3
|
+
import { UserSelectorProps } from '../user-selector';
|
|
4
|
+
import { UserSelectorContainerProps } from '../user-selector-container';
|
|
5
|
+
import { ComponentRecord } from '../utils/VariantsAggregator';
|
|
6
|
+
export type ContainerTemplateProps<T extends UserSelectorOption = UserContactType> = Omit<UserSelectorContainerProps<T>, 'onSelectedUsersChange' | 'selectedUsers'> & {
|
|
7
|
+
initialSelectedUsers?: T[];
|
|
8
|
+
};
|
|
9
|
+
export declare const defaultContainerTemplateArgs: ContainerTemplateProps;
|
|
10
|
+
export declare function ContainerTemplate<T extends UserSelectorOption = UserContactType>(props: ContainerTemplateProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export type ComponentTemplateProps<T extends UserSelectorOption = UserContactType> = Omit<UserSelectorProps<T>, 'inputValue' | 'onInputValueChange' | 'onSelectedUsersChange' | 'selectedUsers'> & {
|
|
12
|
+
divStyle?: HTMLAttributes<HTMLDivElement>['style'];
|
|
13
|
+
initialInputValue?: string;
|
|
14
|
+
initialSelectedUsers?: T[];
|
|
15
|
+
};
|
|
16
|
+
export declare const defaultComponentTemplateArgs: ComponentTemplateProps;
|
|
17
|
+
export declare const ComponentTemplate: (props: ComponentTemplateProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare const UserSelectorMap: ComponentRecord<Partial<ComponentTemplateProps<UserSelectorOption>>>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CustomUserContactType, UserContactType } from '../../types';
|
|
2
|
+
export declare const testUser1: UserContactType;
|
|
3
|
+
export declare const testUser2: UserContactType;
|
|
4
|
+
export declare const testUser3: UserContactType;
|
|
5
|
+
export declare const testUser4: UserContactType;
|
|
6
|
+
export declare const testUser5: UserContactType;
|
|
7
|
+
export declare const testUser6: UserContactType;
|
|
8
|
+
export declare const testUser5WithIdAsValue: UserContactType;
|
|
9
|
+
export declare const testUser6WithIdAsValue: UserContactType;
|
|
10
|
+
export declare const customOption1WithImageAvatar: CustomUserContactType;
|
|
11
|
+
export declare const customOption2WithTextAvatar: CustomUserContactType;
|
|
12
|
+
export declare const customOptionWithIconAvatar: CustomUserContactType;
|
|
13
|
+
export declare const customOptionWithVariableChipVariant: CustomUserContactType;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ReactElement, SVGProps } from 'react';
|
|
2
|
+
export type UserContactType = {
|
|
3
|
+
email: string;
|
|
4
|
+
id: number;
|
|
5
|
+
isCollaborator?: boolean;
|
|
6
|
+
isCurrentUser?: boolean;
|
|
7
|
+
isExternalUser?: boolean;
|
|
8
|
+
name: string;
|
|
9
|
+
value: string;
|
|
10
|
+
type?: string;
|
|
11
|
+
};
|
|
12
|
+
export type CustomUserContactType = {
|
|
13
|
+
name: string;
|
|
14
|
+
subtitle: string;
|
|
15
|
+
value: string;
|
|
16
|
+
avatar: {
|
|
17
|
+
color: string;
|
|
18
|
+
text?: string;
|
|
19
|
+
icon?: ReactElement<SVGProps<SVGSVGElement>>;
|
|
20
|
+
} & ({
|
|
21
|
+
src: string;
|
|
22
|
+
alt: string;
|
|
23
|
+
} | {
|
|
24
|
+
src?: never;
|
|
25
|
+
alt?: never;
|
|
26
|
+
});
|
|
27
|
+
hideOnClick?: boolean;
|
|
28
|
+
chipVariant?: 'default' | 'error' | 'variable';
|
|
29
|
+
};
|
|
30
|
+
export type UserSelectorOption = UserContactType | CustomUserContactType;
|
|
31
|
+
export type FetchedAvatarUrls = {
|
|
32
|
+
[userId: string]: string;
|
|
33
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FetchedAvatarUrls, UserContactType, UserSelectorOption } from './types';
|
|
2
|
+
import { UserSelectorProps } from './user-selector';
|
|
3
|
+
export type UserSelectorContainerProps<T extends UserSelectorOption = UserContactType> = Omit<UserSelectorProps<T>, 'as' | 'fetcher' | 'fetchedAvatarUrls' | 'freeInput' | 'multiselect' | 'options' | 'onValueChange' | 'renderOption' | 'value'> & {
|
|
4
|
+
/**
|
|
5
|
+
* Input validation error message
|
|
6
|
+
*/
|
|
7
|
+
error?: string;
|
|
8
|
+
/**
|
|
9
|
+
Given an array of UserContactTypes, returns a Promise of a dictionary with user ids mapped to avatar URLs
|
|
10
|
+
*/
|
|
11
|
+
fetchAvatarUrls: (userContacts: UserContactType[]) => Promise<FetchedAvatarUrls>;
|
|
12
|
+
};
|
|
13
|
+
export declare const UserSelectorContainer: <T extends UserSelectorOption = UserContactType>({ fetchAvatarUrls, fetchUsers, onSelectedUsersChange, selectedUsers, renderCustomOption, ...rest }: UserSelectorContainerProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UserContactType } from '../../types';
|
|
2
|
+
type UserSelectorContentProps = {
|
|
3
|
+
renderError?: (error?: unknown) => React.ReactElement;
|
|
4
|
+
renderEmpty?: (value: string) => React.ReactElement;
|
|
5
|
+
loadingAriaLabel: string;
|
|
6
|
+
optionRefs: React.MutableRefObject<Map<string, HTMLElement>>;
|
|
7
|
+
handleOptionClick: (userContact: UserContactType, id: string) => void;
|
|
8
|
+
options: UserContactType[];
|
|
9
|
+
isEmpty: boolean;
|
|
10
|
+
isLoading: boolean;
|
|
11
|
+
error: unknown;
|
|
12
|
+
handleInvite?: (value: string) => void;
|
|
13
|
+
};
|
|
14
|
+
export declare const UserSelectorContent: ({ renderError, renderEmpty, loadingAriaLabel, optionRefs, handleOptionClick, options, isEmpty, isLoading, error, handleInvite, }: UserSelectorContentProps) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
|
|
15
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const UserSelectorDefaultError: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type UseKeyboardNavigationProps = {
|
|
2
|
+
isLoading: boolean;
|
|
3
|
+
error: unknown;
|
|
4
|
+
isEmpty: boolean;
|
|
5
|
+
open: boolean;
|
|
6
|
+
selectNext: () => void;
|
|
7
|
+
selectPrevious: () => void;
|
|
8
|
+
selectItem: () => void;
|
|
9
|
+
};
|
|
10
|
+
export declare const useKeyboardNavigation: ({ isLoading, error, isEmpty, open, selectNext, selectPrevious, selectItem, }: UseKeyboardNavigationProps) => (event: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { UserContactType } from '../../types';
|
|
2
|
+
type UseOptionsProps = {
|
|
3
|
+
fetcher: (inputValue: string) => Promise<UserContactType[]>;
|
|
4
|
+
debounceTime?: number;
|
|
5
|
+
value: string;
|
|
6
|
+
allowEmptyQuery?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare const useSelectOptions: ({ fetcher, value, debounceTime, allowEmptyQuery }: UseOptionsProps) => {
|
|
9
|
+
isLoading: boolean;
|
|
10
|
+
isEmpty: boolean;
|
|
11
|
+
error: any;
|
|
12
|
+
options: UserContactType[];
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FetchedAvatarUrls, UserContactType } from '../types';
|
|
2
|
+
type UserSelectorContextType = {
|
|
3
|
+
fetchUsers: (inputValue: string) => Promise<UserContactType[]>;
|
|
4
|
+
fetchAvatarUrls: (userContacts: UserContactType[]) => Promise<FetchedAvatarUrls>;
|
|
5
|
+
onSelectedUserChange: (userContact: UserContactType) => void;
|
|
6
|
+
value: string;
|
|
7
|
+
avatars: Record<string, string>;
|
|
8
|
+
activeId: string | null;
|
|
9
|
+
setActiveId: (id: string | null) => void;
|
|
10
|
+
listboxId: string;
|
|
11
|
+
getOptionId: (option: UserContactType) => string;
|
|
12
|
+
};
|
|
13
|
+
export declare const UserSelectorContext: import('react').Context<UserSelectorContextType>;
|
|
14
|
+
export declare const useUserSelector: () => UserSelectorContextType;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PopoverContentContainerProps } from '@box/blueprint-web';
|
|
2
|
+
import { FetchedAvatarUrls, UserContactType } from '../types';
|
|
3
|
+
export type HeadlessUserSelectorHandle = {
|
|
4
|
+
focusFirstOption: () => void;
|
|
5
|
+
focusLastOption: () => void;
|
|
6
|
+
selectNext: () => void;
|
|
7
|
+
selectPrevious: () => void;
|
|
8
|
+
selectItem: () => void;
|
|
9
|
+
};
|
|
10
|
+
export type HeadlessUserSelectorProps = {
|
|
11
|
+
fetchUsers: (inputValue: string) => Promise<UserContactType[]>;
|
|
12
|
+
fetchAvatarUrls: (userContacts: UserContactType[]) => Promise<FetchedAvatarUrls>;
|
|
13
|
+
open: boolean;
|
|
14
|
+
value: string;
|
|
15
|
+
rootElement: React.ReactElement;
|
|
16
|
+
onSelectedUserChange: (userContact: UserContactType) => void;
|
|
17
|
+
focusOnOpen?: boolean;
|
|
18
|
+
inputElementRef: React.RefObject<HTMLElement>;
|
|
19
|
+
renderError?: (error?: unknown) => React.ReactElement;
|
|
20
|
+
renderEmpty?: (value: string) => React.ReactElement;
|
|
21
|
+
loadingAriaLabel: string;
|
|
22
|
+
ariaRoleDescription: string;
|
|
23
|
+
nativeFocusEnabled?: boolean;
|
|
24
|
+
allowEmptyQuery?: boolean;
|
|
25
|
+
onInvite?: (value: string) => void;
|
|
26
|
+
popoverContentContainerProps?: PopoverContentContainerProps;
|
|
27
|
+
};
|
|
28
|
+
export declare const UserSelectorHeadless: import('react').ForwardRefExoticComponent<HeadlessUserSelectorProps & import('react').RefAttributes<HeadlessUserSelectorHandle>>;
|