AsyncPaginatedDropdownControl

abstract class AsyncPaginatedDropdownControl<T : Any>(label: String?, required: Boolean?, dependencies: Map<String, ControlDependency<*>>?, actions: List<ControlAction<T>>?) : DropdownControlBase<T>

Abstrakcyjna baza dla kontrolek dropdown, które ładują dane asynchronicznie, wspierają wyszukiwanie i doczytywanie kolejnych stron przy przewijaniu.

Inheritors

Constructors

Link copied to clipboard
constructor(label: String?, required: Boolean?, dependencies: Map<String, ControlDependency<*>>?, actions: List<ControlAction<T>>?)

Properties

Link copied to clipboard
private val actions: List<ControlAction<T>>?
Link copied to clipboard
protected open val debounceMs: Long = 0

Ile odczekać po ostatnim wpisanym znaku, zanim poleci zapytanie.

Link copied to clipboard
Link copied to clipboard
protected lateinit var errorManager: ErrorManager
Link copied to clipboard
protected lateinit var formActionTrigger: FormActionTrigger
Link copied to clipboard
protected lateinit var formSchema: FormSchema
Link copied to clipboard
protected lateinit var formState: FormState
Link copied to clipboard
protected val hasStandardLayout: Boolean
Link copied to clipboard

Flaga określająca, rolę kontrolki w hierarchii.

Link copied to clipboard
internal val label: String?
Link copied to clipboard
internal val required: Boolean?
Link copied to clipboard
Link copied to clipboard
protected open val validator: ControlValidator<T>

Validator odpowiedzialny za walidację tej kontrolki. Każdy typ kontrolki dostarcza własną implementację (np. StringValidator). Domyślnie pusta implementacja

Functions

Link copied to clipboard
protected open fun convertToResult(controlContext: ControlContext, state: ControlState<*>): ControlResultData

Konwertuje wewnętrzny stan kontrolki (ControlState) na wynik do zapisu (ControlResultData). Może być przesłonięta dla niestandardowych konwersji (np. w RepeatableControl).

Link copied to clipboard
internal open fun copyInitToValue(value: T): T

Tworzy głęboką kopię wartości początkowej dla bieżącej wartości. Kluczowe dla typów mutowalnych (np. List), aby zmiany w value nie wpływały na initValue.

Link copied to clipboard
@Composable
protected open override fun Display(controlContext: ControlContext, controlState: ControlState<T>, isRequired: Boolean)

Abstrakcyjna metoda renderowania specyficznego interfejsu kontrolki. Każdy konkretny typ kontrolki (np. StringControl) musi ją zaimplementować.

Link copied to clipboard
@Composable
protected fun DisplayFieldErrors(controlContext: ControlContext)

Pomocnicza funkcja renderująca błędy walidacji dla tej kontrolki.

Link copied to clipboard
protected fun executeActions(controlContext: ControlContext, newValue: T?, scope: CoroutineScope, payload: Any? = null)

Wykonuje zdefiniowane akcje dla tej kontrolki, zazwyczaj po zmianie wartości.

Link copied to clipboard
internal fun executeInitActions(controlContext: ControlContext, currentValue: T?, scope: CoroutineScope)
Link copied to clipboard
internal fun getResult(controlContext: ControlContext, state: ControlState<*>): ControlResultData

Pobiera wynik kontrolki (wartość bieżącą i początkową) do dalszego przetwarzania. Jeśli kontrolka jest niewidoczna, jej currentValue jest ustawiane na null.

Link copied to clipboard
internal open fun initializeControlLifecycle(formState: FormState, formSchema: FormSchema, errorManager: ErrorManager, formActionTrigger: FormActionTrigger)

Ustawia referencje do komponentów formularza. Jest to drugi etap inicjalizacji kontrolki, wywoływany przez FormHandler. Daje dostęp do globalnego stanu, schemy i managera błędów. Dodatkowo umożliwia wykonanie dodatkowych kroków inicjalizacyjnych wymaganych przez określone kontrolki

Link copied to clipboard
@Composable
private fun LoadingIndicator()

Komponent renderujący wskaźnik ładowania.

Link copied to clipboard
protected abstract suspend fun loadPage(searchQuery: String, page: Long): DropdownPage<T>

Podklasy implementują tę metodę, aby dostarczyć dane dla konkretnej strony. Użycie suspend jest kluczowe dla operacji asynchronicznych.

Link copied to clipboard
@Composable
private fun MenuContent(options: List<DropdownOption<T>>, isRequired: Boolean, isLoadingFirstPage: Boolean, isLoadingMore: Boolean, errorMessage: String?, onOptionSelected: (DropdownOption<T>?) -> Unit)

Komponent renderujący główną zawartość menu.

Link copied to clipboard
@Composable
private fun OptionsList(options: List<DropdownOption<T>>, isRequired: Boolean, onOptionSelected: (DropdownOption<T>?) -> Unit)

Komponent renderujący listę opcji do wyboru.

Link copied to clipboard
internal open fun registerChildrenInGlobalMap(controlContext: ControlContext): Map<String, Control<*>>

Funkcja do rejestracji dzieci na globalnej mapie Zawiera referencje do kontrolek zdefiniowanych w kontrolce posiadającej własne

Link copied to clipboard
@Composable
internal fun Render(controlContext: ControlContext, controlState: ControlState<*>)

Renderuje kontrolkę w interfejsie użytkownika. Ta metoda jest publicznym API dla FormScreen. Obsługuje logikę widoczności.

Link copied to clipboard
@Composable
protected open override fun ColumnScope.RenderMenuItems(controlContext: ControlContext, scope: CoroutineScope, controlState: ControlState<T>, menuScrollState: ScrollState, closeMenu: () -> Unit)

Podklasy muszą zaimplementować tę metodę, aby wyrenderować zawartość menu rozwijanego.

Link copied to clipboard
protected abstract suspend fun resolveDisplayText(value: T): String?

Wyznacza tekst dla wybranej wartości. Wołane raz na wartość, poza ścieżką renderowania, a wynik ląduje w ControlState.displayText - dlatego wolno tu odpytać bazę albo API.

Link copied to clipboard
@Composable
private fun SearchField(searchQuery: String, onQueryChange: (String) -> Unit)

Komponent renderujący pole wyszukiwania wewnątrz menu.

Link copied to clipboard
internal open fun setInitValue(controlContext: ControlContext, value: Any?): ControlState<T>

Ustawia początkową wartość kontrolki i tworzy jej stan (ControlState).

Link copied to clipboard
internal fun validateControl(controlContext: ControlContext, state: ControlState<*>)

Uruchamia proces walidacji dla tej kontrolki przy użyciu przypisanego walidatora.