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

Способ отображения выбранной строки с адресом #40

Open
alexbom opened this issue Aug 5, 2020 · 3 comments

Comments

@alexbom
Copy link

alexbom commented Aug 5, 2020

Добрый день!
Скажите, пожалуйста, есть ли возможность настроить вид выбранного значения в выпадающем списке AddressSuggestions?
Сейчас при выборе города из выпадающего списка выбранный элемент отображается так:

Краснодарский край, г Геленджик

или так:

г Москва

Я бы хотел настроить способ отображения, чтобы показывать только название города:

Геленджик

или:

Москва

Можно ли это реализовать с помощью опций компонента?

@vitalybaev
Copy link
Owner

Добрый день!

Да, вы можете в пропсах компонента прокинуть коллбек renderOption - функция, которая принимает один аргумент - объект подсказки, и должна вернуть любой JSX, который будет отображаться

import React, { useRef } from 'react';
import { AddressSuggestions } from 'react-dadata';

// Как то так, можно возвращать любую верстку, например с расширенными данными, как угодно
<AddressSuggestions
  renderOption={(suggestion) => (<span>{suggestion.data.city}</span>)}
/>

Единственный момент, что в таком случае не будет доступно выделение совпадений.
Вообще можно воспользоваться пакетом react-words-highlight, который внутренне используется для этого, но в настоящий момент в колбеке нет информации какой запрос вообще сейчас введен в поле. Но - можно его хранить в стейте, сохраняя его в inputProps={{ onChange: (event) => { /** Тут сохраняем значение из поля ввода */} }}

@alexbom
Copy link
Author

alexbom commented Aug 6, 2020

Я выразился неточно. Опции в выпадающем списке выглядят хорошо. Но необходимо убрать лишнее в выбранном элементе, когда Select уже свёрнут. Когда опция выбрана, хотелось бы видеть только название города.

@vitalybaev
Copy link
Owner

Тогда сложнее, просто менять значение в поле вводе не очень хорошая идея поскольку при редактировании значения его текст используется для подгрузки вариантов
Как вариант решения - хранить в стейте выбранную подсказку, подписаться на события инпута onBlur и onFocus.
При onBlur - используя метод setInputValue ставим туда нужное обрезанное значение. При onFocus - возвращаем полное. Это чисто мысли вслух, но вроде бы может сработать в вашем варианте.

А саму подсказку нужно полную с адресом? Не подойдет ограничение области поиска от самой DaData?

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

No branches or pull requests

2 participants