Files
MujicaUI/docs/components/299-presence.md
T
ZacharyZhang-NYandClaude Opus 5.5 bcce34cda1 Upgrade MyGo to v0.5.5
MyGo v0.5.5 returns ui.Element as a checked value handle instead of a
pointer. Migrated with `mygo migrate-ui`, then fixed what the codemod
leaves to review:

- Element nil checks become .Valid(); absent elements are ui.Element{}.
- Input handlers and paint callbacks run outside the build pass, where
  elements expire and Context methods are inert: read IsDisabled into a
  local during the build, keep a ui.Handle for Focus, use c.Services()
  for clipboard access, create ui.Local state during the build.
- Add core.AutoFocus: v0.5.5 records an overlay's opener after its
  content builds, so same-frame autofocus lost focus restore on close.
  It focuses one frame later; cascader rows defer their focus likewise.
- core.OverlayLayer identifies build passes by the root element, not
  c.Now(), which repeats across passes and under the Tester clock.
- Context menus survive the opening press counted as PressedOutside;
  split button tooltip no longer reorders its open menu; disabled
  menubar rows pass presses to the panel; Form defers blur-started
  async checks so the growing message no longer moves Submit away
  from the release; Combobox drops its disabled copy now that MyGo
  blocks typing under a disabled wrapper (canary flipped to a guard).
- The Tester clock is virtual: tests use Advance/Now instead of
  time.Sleep/time.Now and read element state inside the view. The web
  mirror advances the clock to wall time before each frame and input.
- AGENTS.md and docs describe the value Element API and the new pin.

Snapshot goldens are darwin-only and were not re-verified here.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-17 01:37:54 -04:00

49 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 299 Presence 进出场
## 用途
内容随 show 进出场:淡入淡出、滑动或折叠,退出完成后移除。
## 最小示例
```go
show := true
view := func(c *ui.Context) {
core.Use(c, core.Settings{})
feedback.Presence(c, show, feedback.PresenceOptions{Kind: feedback.PresenceSlide}, func() {
ui.Text(c, "Saved")
})
}
ui.Render(view, 400, 300, 1)
```
签名:`func Presence(c *ui.Context, show bool, opts PresenceOptions, content func()) ui.Element`
## 参数
`PresenceOptions`
| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| Kind | PresenceKind | PresenceFade | PresenceFade、PresenceSlide、PresenceCollapse;未知值 panic。 |
| Duration | time.Duration | 0(即 PopupDuration) | 时长;为负 panic。 |
基于 MyGo `Transition` 的 Enter 与 Exit:退出时保留上一帧的副本直到动画结束,不占布局、不接收指针与焦点。
## 状态
- 减少动画:直接出现与消失。动画结束后停止重绘。
## 事件
- 无。
## 键盘操作
- 退出中的内容不接收焦点。
## 限制
- 不提供缩放:MyGo `ui.Motion` 只有位移、透明度与折叠(ui/transition.go:40)。
- 父元素在上一帧不存在时,内容随父元素一起出现而不进场。