feat(input-accessory): clear bar on iOS 26+, suspend/restore, collapsed inset - #686
Open
NathanWalker wants to merge 1 commit into
Open
NathanWalker wants to merge 1 commit into
NathanWalker wants to merge 1 commit into
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Completes what #666 started and upstreams the accessory behavior the ChatGPT-style composer in ns-octane runs on.
UIScrollEdgeElementContainerInteraction, but the container is a keyboard-styleUIInputView, and its material paints over the effect, so it was never visible. The container is now.defaulton iOS 26+ and the scroll view's edge effect is the bar's background: content blurs and washes out under the bar the way it does under system bars, with the keyboard open or closed. Before iOS 26 the keyboard material stays.suspend()/restore(). The accessory lives in the keyboard's window, which UIKit z-orders above sheet presentations, so a page sheet or popover opened over the chat had the bar floating on top of it.suspend()slides the bar (and keyboard) away and gates the plugin's auto-restore paths;restore()brings it back and also recovers the bar after a full-screen modal, where UIKit does not restore first responder on its own (it polls until the modal is really gone, so it is safe to call as the modal starts closing). No-ops on Android, where dialogs are separate windows.collapsedHorizontalInset. The docked bar floats narrower while the keyboard is hidden and widens in step with the keyboard's own animation; the NativeScript relayout runs inside the animation block so the bar's children animate too.maxHeightenables the TextView's own scrolling so the newest lines and the caret stay reachable.contentSizeup to the viewport, so short content stays put when the keyboard moves.Behavior change
The plugin no longer writes
textContainerInsetor the input traits (autocorrection, spell checking, smart punctuation) on the hosted TextView. Core maps the TextView's CSS padding ontotextContainerInsetand re-applies that mapping on every full style pass, so a value written natively was stomped later and misaligned the text; and forcing traits overrode both the user's keyboard settings and the view's own attributes. Size the text with CSS padding and configure traits on the TextView.Verification
Exercised in ns-octane on the iPhone 18 Pro / iOS 27 simulator: docked bar over dark content, keyboard open and closed, interactive dismiss, dark mode, sheet and drawer over the page (
suspend/restore). Compiled output of this port matches the patch-package build the app ran, apart from comments.nx build input-accessoryand eslint pass.