Skip to content
Open
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
18 changes: 13 additions & 5 deletions resources/android/ChipRenderer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ object ChipRenderer {
val label = p.getString("label")
val iconName = p.getString("icon")
val onChangeCb = p.getCallbackId("on_change")
val onPressCb = p.getCallbackId("on_press").let { if (it != 0) it else node.onPress }
val disabled = p.getBool("disabled")
val a11yLabel = p.getString("a11y_label")
val a11yHint = p.getString("a11y_hint")
Expand Down Expand Up @@ -68,11 +69,18 @@ object ChipRenderer {
FilterChip(
selected = isSelected,
onClick = {
val new = !isSelected
isSelected = new
lastSentValue = new
if (onChangeCb != 0) {
NativeUIBridge.sendToggleChangeEvent(onChangeCb, node.id, new)
if (onPressCb != 0) {
// Server-driven: the press handler owns selection. Toggling
// locally would make the chip fight the state it is handed
// back, so a filter chip would flicker off on its own tap.
NativeUIBridge.sendPressEvent(onPressCb, node.id)
} else {
val new = !isSelected
isSelected = new
lastSentValue = new
if (onChangeCb != 0) {
NativeUIBridge.sendToggleChangeEvent(onChangeCb, node.id, new)
}
}
},
label = { Text(label, fontFamily = nuiDefaultFontFamily()) },
Expand Down
18 changes: 13 additions & 5 deletions resources/ios/NativeUIChipRenderer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ struct NativeUIChipRenderer: View {
let label = p.getString("label")
let iconName = p.getString("icon")
let onChangeCb = p.getCallbackId("on_change")
let onPressCb = p.getCallbackId("on_press") != 0 ? p.getCallbackId("on_press") : node.onPress
let disabled = p.getBool("disabled")
let a11yLabel = p.getString("a11y_label")
let a11yHint = p.getString("a11y_hint")
Expand All @@ -45,11 +46,18 @@ struct NativeUIChipRenderer: View {

Button(action: {
guard !disabled else { return }
let new = !isSelected
isSelected = new
lastSentValue = new
if onChangeCb != 0 {
NativeElementBridge.sendToggleChangeEvent(onChangeCb, nodeId: node.id, value: new)
if onPressCb != 0 {
// Server-driven: the press handler owns selection. Toggling
// locally would make the chip fight the state it is handed
// back, so a filter chip would flicker off on its own tap.
NativeElementBridge.sendPressEvent(onPressCb, nodeId: node.id)
} else {
let new = !isSelected
isSelected = new
lastSentValue = new
if onChangeCb != 0 {
NativeElementBridge.sendToggleChangeEvent(onChangeCb, nodeId: node.id, value: new)
}
}
}) {
HStack(spacing: 6) {
Expand Down
Loading