From a7404c5930be6e8f071ccc6006502bc17c160680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Mon, 5 Oct 2026 12:37:56 -0400 Subject: [PATCH] Forms: review r1 fixes --- color_picker.go | 15 ++-- color_picker_test.go | 33 ++++++++ docs/components/041-form.md | 4 +- docs/components/042-form-field.md | 16 ++-- example_form_test.go | 4 +- examples/gallery/pages_form.go | 10 ++- file_drop_zone.go | 7 +- file_picker.go | 9 +- form.go | 49 ++++++----- form_field.go | 78 ++++++++++++++---- form_field_test.go | 53 +++++++++--- form_test.go | 70 +++++++++++++++- input_group.go | 3 +- messages_form.go | 1 + pin_input.go | 7 +- tags_input.go | 8 +- tags_input_test.go | 9 ++ .../snapshots/darwin/color_picker-dark.png | Bin 26924 -> 26892 bytes .../snapshots/darwin/color_picker-light.png | Bin 26953 -> 26868 bytes testdata/snapshots/darwin/form-dark.png | Bin 17134 -> 17144 bytes testdata/snapshots/darwin/form-light.png | Bin 17089 -> 17110 bytes testdata/snapshots/darwin/form_field-dark.png | Bin 12502 -> 12026 bytes .../snapshots/darwin/form_field-light.png | Bin 11877 -> 11461 bytes testdata/snapshots/darwin/tags_input-dark.png | Bin 10757 -> 10783 bytes .../snapshots/darwin/tags_input-light.png | Bin 10519 -> 10545 bytes transfer.go | 14 +++- transfer_test.go | 12 +++ 27 files changed, 305 insertions(+), 97 deletions(-) diff --git a/color_picker.go b/color_picker.go index a4f6724..de993b6 100644 --- a/color_picker.go +++ b/color_picker.go @@ -51,8 +51,7 @@ type colorPickerState struct { bad string } -// ColorPicker is a swatch button opening a panel to pick *color: a saturation and -// brightness square, hue and opacity sliders, HEX, RGB and opacity fields, and presets. +// ColorPicker is a swatch button opening a panel that picks *color. func ColorPicker(c *ui.Context, color *ui.Color, opts ColorPickerOptions) ColorPickerParts { k := Tokens(c) d := Density(c) @@ -92,7 +91,9 @@ func ColorPicker(c *ui.Context, color *ui.Color, opts ColorPickerOptions) ColorP st.sync(*color) } } - if trigger.Clicked() { + if opts.Disabled { + st.open = false + } else if trigger.Clicked() { st.open = !st.open } border := k.ControlBorder @@ -139,7 +140,7 @@ func ColorPicker(c *ui.Context, color *ui.Color, opts ColorPickerOptions) ColorP ui.Grid(c).ColumnTracks(ui.Fr(1), ui.Fr(1), ui.Fr(1), ui.Fr(1), ui.Fr(1), ui.Fr(1)).Gap(d.Unit() * 1.5).Children(func() { for _, sw := range presets { hex := strings.ToUpper(colorPickerHex(sw)) - b := ui.ButtonBase(c).Height(d.Unit()*6).Radius(theme.ControlRadius).Border(theme.BorderWidth, k.Border).Label(hex).Clip() + b := ui.ButtonBase(c).Height(theme.MinHitSize).Radius(theme.ControlRadius).Border(theme.BorderWidth, k.Border).Label(hex).Clip() internal.Ring(b, k.Focus, theme.ControlRadius) chosen := *color == sw b.Selected(chosen).Draw(func(p *ui.Painter, r ui.Rect) { @@ -159,7 +160,7 @@ func ColorPicker(c *ui.Context, color *ui.Color, opts ColorPickerOptions) ColorP } }) }) - if st.wasOpen && !st.open { + if st.wasOpen && !st.open && !opts.Disabled { trigger.Focus() } st.wasOpen = st.open @@ -269,7 +270,7 @@ func colorPickerFields(c *ui.Context, st *colorPickerState, color *ui.Color, set }{{"R", msg(c, "color_picker.red"), &st.r}, {"G", msg(c, "color_picker.green"), &st.g}, {"B", msg(c, "color_picker.blue"), &st.b}, {"A %", msg(c, "color_picker.percent"), &st.alpha}} { ui.Column(c).Gap(d.Unit()).Children(func() { - ui.Text(c, f.name).FontSize(theme.CaptionSize).TextColor(k.TextMuted) + ui.Text(c, f.name).FontSize(FontSize(c, theme.CaptionSize)).TextColor(k.TextMuted) in := InputGroup(c, f.text, InputGroupOptions{Label: f.label, Invalid: st.bad == f.name}) editing = editing || in.Input.Focused() if !in.Changed() { @@ -296,7 +297,7 @@ func colorPickerFields(c *ui.Context, st *colorPickerState, color *ui.Color, set st.sync(*color) } if st.bad != "" { - ui.Text(c, msg(c, "color_picker.invalid")).FontSize(theme.CaptionSize).TextColor(k.Danger).Role(ui.RoleStatus) + ui.Text(c, msg(c, "color_picker.invalid")).FontSize(FontSize(c, theme.CaptionSize)).TextColor(k.Danger).Role(ui.RoleStatus) } }) } diff --git a/color_picker_test.go b/color_picker_test.go index b5dc1a5..1b5e3d0 100644 --- a/color_picker_test.go +++ b/color_picker_test.go @@ -124,3 +124,36 @@ func TestColorPickerSnapshot(t *testing.T) { }) }) } + +// Disabling an open picker closes it before keys can change the color. +func TestColorPickerDisabledWhileOpen(t *testing.T) { + col, n := ui.Hex("#808080"), 0 + opts := ColorPickerOptions{Label: "Shade"} + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + if ColorPicker(c, &col, opts).Changed() { + n++ + } + }, 400, 560) + tt.Key(0, ui.KeyTab) + tt.Key(0, ui.KeyEnter) + if !tt.Focused("Saturation and brightness") { + t.Fatal("not open") + } + opts.Disabled = true + tt.Key(0, ui.KeyUp) + tt.Key(0, ui.KeyRight) + if col != ui.Hex("#808080") || n != 0 || tt.HasText("HEX") { + t.Fatalf("disabled picker changed to %v", col) + } +} + +func TestColorPickerSwatchHitArea(t *testing.T) { + col, n := ui.Hex("#7D2034"), 0 + tt := colorPickerTester(&col, ColorPickerOptions{Label: "Accent"}, &n) + _ = tt.Click("Accent") + r, ok := tt.Find("#355E80") + if !ok || r.W < 28 || r.H < 28 { + t.Fatalf("swatch %v", r) + } +} diff --git a/docs/components/041-form.md b/docs/components/041-form.md index fa36aa6..f2efe30 100644 --- a/docs/components/041-form.md +++ b/docs/components/041-form.md @@ -29,7 +29,7 @@ ui.Render(view, 400, 300, 1) | 字段 | 类型 | 默认值 | 含义 | | --- | --- | --- | --- | -| `FormOptions.Horizontal` | `bool` | false | 标签放在控件左侧一列,右对齐(MyGo `ui.Form` 布局)。 | +| `FormOptions.Horizontal` | `bool` | false | 标签放在控件左侧一列,右对齐。 | | `FormOptions.SubmitLabel` | `string` | 内置“Submit/提交” | 提交按钮文字。 | | `FormOptions.ResetLabel` | `string` | 内置“Reset/重置” | 重置按钮文字。 | | `FormItemOptions[T].Label` | `string` | 必填 | 字段标签;空值 panic。 | @@ -56,4 +56,4 @@ Tab / Shift+Tab 在字段间移动,离开字段即校验。提交失败后焦 - 控件由调用方构建,`FormItem` 的 control 回调必须返回可获取焦点的元素,用于错误定位。 - 校验在失焦与提交时触发;已触碰字段在值变化时重新同步校验,异步校验只在下一次失焦或提交时重跑。 - 异步结果以版本号对齐:值变化后旧版本的 `Resolve` 返回 false 并被丢弃。`FormState` 的方法只能在界面线程调用,后台任务需经 `Window.Update` 回到界面线程。 -- 必填标记以“ *”附在标签文字后,屏幕阅读器会一起读出;MyGo 的 Field 标签不支持富文本,无法单独着色。 +- 必填标记“*”只作视觉显示,辅助技术通过说明“必填”获知。 diff --git a/docs/components/042-form-field.md b/docs/components/042-form-field.md index 9e3f6e0..eaca697 100644 --- a/docs/components/042-form-field.md +++ b/docs/components/042-form-field.md @@ -4,7 +4,7 @@ ## 用途 -为单个控件提供标签、必填标记、说明与错误文字。标签通过 MyGo `ui.Field` 关联控件:屏幕阅读器以标签命名控件,并读出说明与错误;点击标签聚焦控件。 +为单个控件提供标签、必填标记、说明与错误文字。标签、说明与错误显式关联到 control 返回的元素:屏幕阅读器以标签命名该元素并读出说明、必填与错误;点击标签聚焦该元素。 ## 最小示例 @@ -12,8 +12,8 @@ email := "" view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) - mujica.FormField(c, "Email", mujica.FormFieldOptions{Required: true, Description: "For receipts."}, func() { - mujica.InputGroup(c, &email, mujica.InputGroupOptions{}) + mujica.FormField(c, "Email", mujica.FormFieldOptions{Required: true, Description: "For receipts."}, func() *ui.Element { + return mujica.InputGroup(c, &email, mujica.InputGroupOptions{}).Input }) } ui.Render(view, 400, 300, 1) @@ -24,11 +24,11 @@ ui.Render(view, 400, 300, 1) | 字段 | 类型 | 默认值 | 含义 | | --- | --- | --- | --- | | `label` | `string` | 必填 | 标签文字;空值 panic。 | -| `FormFieldOptions.Required` | `bool` | false | 在标签后加“ *”。 | +| `FormFieldOptions.Required` | `bool` | false | 在标签后显示危险色“*”,并向辅助技术说明“必填”。 | | `FormFieldOptions.Description` | `string` | "" | 控件下方的说明。 | | `FormFieldOptions.Error` | `string` | "" | 控件下方的错误,并把控件标记为无效。 | | `FormFieldOptions.Horizontal` | `bool` | false | 标签在左、控件在右。 | -| `control` | `func()` | 必填 | 构建控件;其中第一个可获取焦点的元素即被关联的控件。 | +| `control` | `func() *ui.Element` | 必填 | 构建控件并返回要关联的可聚焦元素(如 `InputGroupParts.Input`);返回 nil 时 panic。 | ## 状态 @@ -44,6 +44,6 @@ Tab 直接到达控件;点击标签聚焦控件,或切换复选框、开关 ## 限制 -- 标签、说明与错误文字由 MyGo `ui.Field` 绘制,使用主题颜色(文字、TextMuted、Danger);字号与间距跟随 MyGo。 -- 错误只把边框染红的效果对 MyGo 自带输入框生效;MujicaUI 的 InputGroup 等需同时传入 `Invalid: true`。 -- 左右布局时多个字段需放在同一个 `ui.Form` 或 MujicaUI `Form(Horizontal)` 中才能对齐标签宽度;单独使用时只按自身标签宽度排列。 +- control 返回的元素的 Label 会被字段标签覆盖。 +- Error 只把元素标记为无效;InputGroup 等的红色边框需同时传入 `Invalid: true`。 +- 左右布局时多个字段需放在 MujicaUI `Form(Horizontal)` 中才能对齐标签宽度;单独使用时只按自身标签宽度排列。 diff --git a/example_form_test.go b/example_form_test.go index 0873135..e580dcf 100644 --- a/example_form_test.go +++ b/example_form_test.go @@ -30,8 +30,8 @@ func ExampleFormField() { email := "" view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) - mujica.FormField(c, "Email", mujica.FormFieldOptions{Required: true, Description: "For receipts."}, func() { - mujica.InputGroup(c, &email, mujica.InputGroupOptions{}) + mujica.FormField(c, "Email", mujica.FormFieldOptions{Required: true, Description: "For receipts."}, func() *ui.Element { + return mujica.InputGroup(c, &email, mujica.InputGroupOptions{}).Input }) } ui.Render(view, 400, 300, 1) diff --git a/examples/gallery/pages_form.go b/examples/gallery/pages_form.go index fbab963..9adba88 100644 --- a/examples/gallery/pages_form.go +++ b/examples/gallery/pages_form.go @@ -177,10 +177,12 @@ var formPages = []page{ e = "This name is already in the guest list." } mujica.FormField(c, "Guest name", mujica.FormFieldOptions{Required: d.required, Horizontal: d.horizontal, - Description: "As written on the invitation.", Error: e}, func() { - if mujica.InputGroup(c, &d.value, mujica.InputGroupOptions{Invalid: d.withError}).Changed() { + Description: "As written on the invitation.", Error: e}, func() *ui.Element { + g := mujica.InputGroup(c, &d.value, mujica.InputGroupOptions{Invalid: d.withError}) + if g.Changed() { log(fmt.Sprintf("value %q", d.value)) } + return g.Input }) }}, {ID: "043", Name: "InputGroup", ZhName: "输入组合", Category: "Forms", Code: formCode["InputGroup"], @@ -346,8 +348,8 @@ ui.Render(view, 400, 300, 1)`, "FormField": `email := "" view := func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) - mujica.FormField(c, "Email", mujica.FormFieldOptions{Required: true, Description: "For receipts."}, func() { - mujica.InputGroup(c, &email, mujica.InputGroupOptions{}) + mujica.FormField(c, "Email", mujica.FormFieldOptions{Required: true, Description: "For receipts."}, func() *ui.Element { + return mujica.InputGroup(c, &email, mujica.InputGroupOptions{}).Input }) } ui.Render(view, 400, 300, 1)`, diff --git a/file_drop_zone.go b/file_drop_zone.go index 8b1a588..1f0a979 100644 --- a/file_drop_zone.go +++ b/file_drop_zone.go @@ -65,8 +65,7 @@ type fileDropZoneState struct { rejected []fileDropZoneReject } -// FileDropZone takes files dropped from the system or chosen with its Browse button, -// checks type, count and size, and lists them in *files. It never reads or uploads them. +// FileDropZone checks dropped or browsed files and lists them; it never reads or uploads them. func FileDropZone(c *ui.Context, files *[]DroppedFile, opts FileDropZoneOptions) FileDropZoneParts { if opts.MaxFiles < 0 || opts.MaxSize < 0 { panic("mujica: FileDropZone limits must not be negative") @@ -172,7 +171,7 @@ func FileDropZone(c *ui.Context, files *[]DroppedFile, opts FileDropZoneOptions) zone.Children(func() { ui.Icon(c, icons.Must("upload")).Size(24, 24).TextColor(k.AccentText) ui.Text(c, hint).TextAlign(ui.Center) - ui.Text(c, fileDropZoneRules(c, opts)).TextColor(k.TextMuted).FontSize(theme.CaptionSize).TextAlign(ui.Center) + ui.Text(c, fileDropZoneRules(c, opts)).TextColor(k.TextMuted).FontSize(FontSize(c, theme.CaptionSize)).TextAlign(ui.Center) b := Button(c, msg(c, "file_drop_zone.browse"), ButtonOptions{Variant: Outline, Loading: st.browse != nil, Disabled: opts.Disabled}) if b.Clicked() { ch := make(chan filePickerResult, 1) @@ -221,7 +220,7 @@ func fileDropZoneList(c *ui.Context, st *fileDropZoneState, files *[]DroppedFile BorderWidth(0, 0, theme.BorderWidth, 0).BorderColor(k.Border).Children(func() { ui.Icon(c, icons.Must(icon)).Size(16, 16).TextColor(color) ui.Text(c, name).SingleLine().Ellipsis("…").MinWidth(0).Shrink(1) - ui.Text(c, detail).TextColor(color).FontSize(theme.CaptionSize).SingleLine().Grow(1) + ui.Text(c, detail).TextColor(color).FontSize(FontSize(c, theme.CaptionSize)).SingleLine().Grow(1) if remove != nil { x := ui.ButtonBase(c).Size(28, 28).Radius(theme.ControlRadius).TextColor(k.TextMuted). Label(fmt.Sprintf(msg(c, "file_drop_zone.remove"), name)).Disabled(disabled) diff --git a/file_picker.go b/file_picker.go index 44942e8..ffd2b91 100644 --- a/file_picker.go +++ b/file_picker.go @@ -55,8 +55,7 @@ type filePickerState struct { err string } -// FilePicker opens the system file or folder dialog and stores the chosen paths in *paths. -// The dialog runs off the UI thread; the button shows loading until it closes. +// FilePicker opens the system file dialog off the UI thread and stores the chosen paths. func FilePicker(c *ui.Context, paths *[]string, opts FilePickerOptions) FilePickerParts { for _, f := range opts.Filters { for _, ext := range f.Extensions { @@ -118,16 +117,16 @@ func FilePicker(c *ui.Context, paths *[]string, opts FilePickerOptions) FilePick } switch { case st.err != "": - ui.Text(c, st.err).TextColor(k.Danger).FontSize(theme.CaptionSize).Role(ui.RoleStatus) + ui.Text(c, st.err).TextColor(k.Danger).FontSize(FontSize(c, theme.CaptionSize)).Role(ui.RoleStatus) case len(*paths) == 0: - ui.Text(c, msg(c, "file_picker.none")).TextColor(k.TextMuted).FontSize(theme.CaptionSize) + ui.Text(c, msg(c, "file_picker.none")).TextColor(k.TextMuted).FontSize(FontSize(c, theme.CaptionSize)) default: ui.Column(c).Gap(d.Unit()).Children(func() { for _, p := range *paths { ui.Row(c).Key(p).Gap(d.Unit() * 2).AlignItems(ui.Center).Children(func() { ui.Icon(c, icon).Size(14, 14).TextColor(k.TextMuted) ui.Text(c, filepath.Base(p)).SingleLine() - ui.Text(c, filepath.Dir(p)).TextColor(k.TextMuted).FontSize(theme.CaptionSize).SingleLine().Ellipsis("…").MinWidth(0).Shrink(1) + ui.Text(c, filepath.Dir(p)).TextColor(k.TextMuted).FontSize(FontSize(c, theme.CaptionSize)).SingleLine().Ellipsis("…").MinWidth(0).Shrink(1) }) } }) diff --git a/form.go b/form.go index 278e916..bb89323 100644 --- a/form.go +++ b/form.go @@ -9,8 +9,7 @@ import ( "github.com/egoist/mygo/ui" ) -// FormState is a form's validation and submit state; keep it beside the form's values. -// Its methods run on the UI thread: deliver async results through Window.Update. +// FormState is a form's check and submit state; use it on the UI thread only. type FormState struct { fields map[string]*formFieldState order []string @@ -22,6 +21,7 @@ type FormState struct { requested bool focus string formError string + generation int } type formFieldState struct { @@ -33,6 +33,7 @@ type formFieldState struct { asyncFor uint64 asyncErr string pending bool + hasAsync bool check func() string startAsync func() } @@ -45,8 +46,7 @@ func (s *FormState) Version(name string) uint64 { return 0 } -// Resolve delivers the async check of name's value at version; "" means valid. -// It reports false and drops the result when the value has changed since. +// Resolve delivers name's async result for version, "" if valid; stale versions return false. func (s *FormState) Resolve(name string, version uint64, err string) bool { f := s.fields[name] if f == nil || f.version != version { @@ -98,8 +98,9 @@ type FormOptions struct { // FormScope registers a Form's fields with FormItem. type FormScope struct { - c *ui.Context - st *FormState + c *ui.Context + st *FormState + horizontal bool } // FormParts are the parts of a Form. @@ -127,8 +128,7 @@ type FormItemOptions[T any] struct { Async func(v T, version uint64) } -// Form lays out the fields that fields registers, validates them on blur and submit, -// and shows submit and reset buttons. It never stores or sends the values itself. +// Form lays out and checks its fields and shows submit and reset buttons. func Form(c *ui.Context, st *FormState, opts FormOptions, fields func(f *FormScope)) FormParts { if st.fields == nil { st.fields = map[string]*formFieldState{} @@ -139,13 +139,16 @@ func Form(c *ui.Context, st *FormState, opts FormOptions, fields func(f *FormSco parts := FormParts{} col := ui.Column(c).Gap(d.Unit() * 5) parts.Element = col - scope := &FormScope{c: c, st: st} + scope := &FormScope{c: c, st: st, horizontal: opts.Horizontal} col.Children(func() { - if opts.Horizontal { - ui.Form(c, func() { fields(scope) }) - } else { - ui.Column(c).Gap(d.Unit() * 4).Children(func() { fields(scope) }) - } + // A new key after Reset drops the controls' drafts and errors. + ui.Box(c).Key(st.generation).Children(func() { + if opts.Horizontal { + formFieldGrid(c, func() { fields(scope) }) + } else { + ui.Column(c).Gap(d.Unit() * 4).Children(func() { fields(scope) }) + } + }) if st.formError != "" { ui.Text(c, st.formError).TextColor(k.Danger).Role(ui.RoleStatus) } @@ -198,7 +201,12 @@ func formSettle(c *ui.Context, st *FormState) bool { if st.Error(name) != "" && first == "" { first = name } - pending = pending || st.fields[name].pending + f := st.fields[name] + // A value edited since its check owes a new one. + if f.hasAsync && f.err == "" && f.asyncFor != f.version { + f.startAsync() + pending = true + } } switch { case first != "": @@ -221,12 +229,12 @@ func formReset(st *FormState) { r() } st.fields = map[string]*formFieldState{} + st.generation++ st.tried, st.awaiting, st.requested, st.focus, st.formError = false, false, false, "", "" slog.Debug("mujica: form reset") } -// FormItem registers field name, labels the control that control returns, and shows its error. -// control must return the element to focus when the field has the first error. +// FormItem registers field name around the focusable element control returns. func FormItem[T any](f *FormScope, name string, value *T, opts FormItemOptions[T], control func() *ui.Element) *ui.Element { c, st := f.c, f.st if name == "" || opts.Label == "" { @@ -243,6 +251,7 @@ func FormItem[T any](f *FormScope, name string, value *T, opts FormItemOptions[T fs = &formFieldState{snapshot: snap, version: st.seq} st.fields[name] = fs } + fs.hasAsync = opts.Async != nil fs.check = func() string { if opts.Required && formEmpty(*value) { return msg(c, "form.required") @@ -273,12 +282,10 @@ func FormItem[T any](f *FormScope, name string, value *T, opts FormItemOptions[T desc = msg(c, "form.checking") } var ctrl *ui.Element - field := formFieldBuild(c, opts.Label, FormFieldOptions{Required: opts.Required, Description: desc, Error: st.Error(name)}, func() { + field := formFieldBuild(c, opts.Label, FormFieldOptions{Required: opts.Required, Description: desc, Error: st.Error(name)}, f.horizontal, func() *ui.Element { ctrl = control() + return ctrl }) - if ctrl == nil { - panic("mujica: FormItem " + name + ": control returned nil") - } focused := ctrl.FocusWithin() if fs.focused && !focused { fs.touched = true diff --git a/form_field.go b/form_field.go index 517840f..47f9e8c 100644 --- a/form_field.go +++ b/form_field.go @@ -2,6 +2,8 @@ package mujica import ( "github.com/egoist/mygo/ui" + + "mujicaui/theme" ) // FormFieldOptions configure a FormField. @@ -15,24 +17,70 @@ type FormFieldOptions struct { Horizontal bool } -// FormField labels the control that control builds and adds help and error text. -// The label names the control and a click on it focuses the control. -func FormField(c *ui.Context, label string, opts FormFieldOptions, control func()) *ui.Element { +// FormField labels the element control returns and shows help and error text for it. +func FormField(c *ui.Context, label string, opts FormFieldOptions, control func() *ui.Element) *ui.Element { + if !opts.Horizontal { + return formFieldBuild(c, label, opts, false, control) + } + var f *ui.Element + formFieldGrid(c, func() { f = formFieldBuild(c, label, opts, true, control) }) + return f +} + +// formFieldGrid holds fields whose labels sit in a column beside their controls. +func formFieldGrid(c *ui.Context, fields func()) *ui.Element { + d := Density(c) + return ui.Grid(c).ColumnTracks(ui.FitContent(), ui.Fr(1)).GapX(d.Unit() * 3).GapY(d.Unit() * 4). + AlignItems(ui.Start).Children(fields) +} + +// formFieldBuild builds the label and the control column; beside makes them two grid cells. +func formFieldBuild(c *ui.Context, label string, opts FormFieldOptions, beside bool, control func() *ui.Element) *ui.Element { if label == "" { panic("mujica: FormField needs a label") } - if opts.Horizontal { - var f *ui.Element - ui.Form(c, func() { f = formFieldBuild(c, label, opts, control) }) - return f + k := Tokens(c) + d := Density(c) + var head, content, ctrl *ui.Element + body := func() { + head = ui.Row(c).Gap(d.Unit()).AlignItems(ui.Center) + if beside { + head.MinHeight(d.ControlHeight()).Justify(ui.End) + } + var text *ui.Element + head.Children(func() { + text = ui.Text(c, label).FontWeight(500).SingleLine() + if opts.Required { + ui.Text(c, "*").TextColor(k.Danger).Role(ui.RoleNone) + } + }) + clicked := head.Clicked() + content = ui.Column(c).Gap(d.Unit() * 1.5).MinWidth(0) + content.Children(func() { + ctrl = control() + if ctrl == nil { + panic("mujica: FormField " + label + ": control returned nil") + } + if opts.Description != "" { + ui.Text(c, opts.Description).TextColor(k.TextMuted).FontSize(FontSize(c, theme.CaptionSize)).Role(ui.RoleNone) + } + if opts.Error != "" { + ui.Text(c, opts.Error).TextColor(k.Danger).FontSize(FontSize(c, theme.CaptionSize)).Role(ui.RoleNone) + } + }) + ctrl.Label(label).Description(opts.Description).Error(opts.Error) + if opts.Required { + ctrl.Description(msg(c, "form.required")) + } + if ctrl.IsDisabled() { + text.TextColor(k.TextMuted) + } else if clicked { + ctrl.Focus() + } } - return formFieldBuild(c, label, opts, control) -} - -// formFieldBuild builds the field in the layout the caller set up. -func formFieldBuild(c *ui.Context, label string, opts FormFieldOptions, control func()) *ui.Element { - if opts.Required { - label += " *" + if beside { + body() + return content } - return ui.Field(c, label, control).Description(opts.Description).Error(opts.Error) + return ui.Column(c).Gap(d.Unit() * 1.5).Children(body) } diff --git a/form_field_test.go b/form_field_test.go index c6ca7f6..80e61d3 100644 --- a/form_field_test.go +++ b/form_field_test.go @@ -1,6 +1,7 @@ package mujica import ( + "slices" "testing" "github.com/egoist/mygo/ui" @@ -10,29 +11,59 @@ func TestFormFieldLabelFocusesControl(t *testing.T) { name := "" tt := ui.NewTester(func(c *ui.Context) { Use(c, Settings{}) - FormField(c, "Name", FormFieldOptions{Required: true, Description: "As on your seal."}, func() { - InputGroup(c, &name, InputGroupOptions{}) + FormField(c, "Name", FormFieldOptions{Required: true, Description: "As on your seal."}, func() *ui.Element { + return InputGroup(c, &name, InputGroupOptions{}).Input }) }, 400, 200) - if err := tt.Click("Name *"); err != nil { + if err := tt.Click("Name"); err != nil { t.Fatal(err) } tt.Type("Sakiko") if name != "Sakiko" { t.Fatalf("label click did not focus the control: %q", name) } - if !tt.Focused("Name *") || !tt.HasText("As on your seal.") { + if !tt.Focused("Name") || !tt.HasText("As on your seal.") || !tt.HasText("*") { t.Fatalf("texts %q", tt.Texts()) } } +// The label goes to the returned input, not the first focusable element before it. +func TestFormFieldTargetsReturnedControl(t *testing.T) { + tags, site := []string{"rose"}, "" + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + ui.Column(c).Gap(12).Children(func() { + FormField(c, "Flowers", FormFieldOptions{Error: "Too few."}, func() *ui.Element { + return TagsInput(c, &tags, TagsInputOptions{}).Input + }) + FormField(c, "Site", FormFieldOptions{}, func() *ui.Element { + return InputGroup(c, &site, InputGroupOptions{Buttons: []InputGroupButton{{Label: "Back", Leading: true}}}).Input + }) + }) + }, 500, 300) + _ = tt.Click("Flowers") + tt.Type("ivy") + tt.Key(0, ui.KeyEnter) + if !slices.Equal(tags, []string{"rose", "ivy"}) || !tt.Focused("Flowers") { + t.Fatalf("tags %q", tags) + } + if _, ok := tt.Find("Remove rose"); !ok { + t.Fatal("remove button lost its own name") + } + _ = tt.Click("Site") + tt.Type("court") + if site != "court" || tt.Focused("Back") { + t.Fatalf("site %q", site) + } +} + func TestFormFieldErrorAndLayout(t *testing.T) { v := "" horizontal := false tt := ui.NewTester(func(c *ui.Context) { Use(c, Settings{}) - FormField(c, "Email", FormFieldOptions{Error: "Enter an email address.", Horizontal: horizontal}, func() { - InputGroup(c, &v, InputGroupOptions{Prefix: "mailto:"}) + FormField(c, "Email", FormFieldOptions{Error: "Enter an email address.", Horizontal: horizontal}, func() *ui.Element { + return InputGroup(c, &v, InputGroupOptions{Prefix: "mailto:"}).Input }) }, 500, 200) if !tt.HasText("Enter an email address.") { @@ -60,7 +91,7 @@ func TestFormFieldNeedsLabel(t *testing.T) { }() ui.Render(func(c *ui.Context) { Use(c, Settings{}) - FormField(c, "", FormFieldOptions{}, func() {}) + FormField(c, "", FormFieldOptions{}, func() *ui.Element { return ui.Box(c) }) }, 100, 100, 1) } @@ -68,11 +99,11 @@ func TestFormFieldSnapshot(t *testing.T) { a, b := "Sakiko Togawa", "uika@" snapshot(t, "form_field", 520, 260, func(c *ui.Context) { ui.Column(c).Padding(20).Gap(16).Children(func() { - FormField(c, "Name", FormFieldOptions{Required: true, Description: "As written on the invitation."}, func() { - InputGroup(c, &a, InputGroupOptions{}) + FormField(c, "Name", FormFieldOptions{Required: true, Description: "As written on the invitation."}, func() *ui.Element { + return InputGroup(c, &a, InputGroupOptions{}).Input }) - FormField(c, "Email", FormFieldOptions{Horizontal: true, Error: "Enter a full email address."}, func() { - InputGroup(c, &b, InputGroupOptions{Invalid: true}) + FormField(c, "Email", FormFieldOptions{Horizontal: true, Error: "Enter a full email address."}, func() *ui.Element { + return InputGroup(c, &b, InputGroupOptions{Invalid: true}).Input }) }) }) diff --git a/form_test.go b/form_test.go index 2d00634..afe5ddc 100644 --- a/form_test.go +++ b/form_test.go @@ -86,7 +86,7 @@ func TestFormSubmitFailureFocusesFirstErrorAndKeepsValues(t *testing.T) { if p.submits != 0 || !tt.HasText("Required") || !tt.HasText("Enter an email address.") { t.Fatalf("submits %d texts %q", p.submits, tt.Texts()) } - if !tt.Focused("Name *") || p.email != "bad" { + if !tt.Focused("Name") || p.email != "bad" { t.Fatal("first error not focused or value lost") } if got := tt.Announcements(); len(got) == 0 || got[len(got)-1] != "Some fields need attention" { @@ -181,10 +181,72 @@ func TestFormResetRestoresInitialValues(t *testing.T) { func TestFormHorizontalLayout(t *testing.T) { p := &formProbe{horizontal: true} tt := ui.NewTester(p.run, 600, 500) - name, _ := tt.Find("Name *") + star, _ := tt.Find("*") email, _ := tt.Find("Email") - if name.X+name.W != email.X+email.W { - t.Fatalf("labels not right-aligned: %v %v", name, email) + input, _ := tt.Find("Name") + if star.X+star.W != email.X+email.W || input.X >= email.X { + t.Fatalf("labels not right-aligned: %v %v", star, email) + } +} + +// An edit during a pending check must be checked again before the submit goes out. +func TestFormEditWhilePendingRechecks(t *testing.T) { + p := &formProbe{name: "Uika", tags: []string{"x"}, email: "a@b", useAsync: true} + tt := ui.NewTester(p.run, 600, 500) + _ = tt.Click("Submit") + if len(p.asyncCalls) != 1 { + t.Fatalf("calls %v", p.asyncCalls) + } + _ = tt.Click("Email") + tt.Key(ui.Cmd, ui.KeyA) + tt.Type("taken@b") + tt.Frame() + if p.submits != 0 || len(p.asyncCalls) != 2 || p.asyncValues[1] != "taken@b" { + t.Fatalf("submits %d values %q", p.submits, p.asyncValues) + } + if p.st.Resolve("email", p.asyncCalls[0], "") { + t.Fatal("stale result accepted") + } + p.st.Resolve("email", p.asyncCalls[1], "Taken") + tt.Frame() + tt.Frame() + if p.submits != 0 || !tt.HasText("Taken") { + t.Fatalf("submitted unchecked value: %d", p.submits) + } +} + +// Reset also drops drafts and errors kept inside the controls. +func TestFormResetClearsControlState(t *testing.T) { + var st FormState + tags, seen := []string{}, "" + tt := ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + Form(c, &st, FormOptions{}, func(f *FormScope) { + FormItem(f, "tags", &tags, FormItemOptions[[]string]{Label: "Tags"}, func() *ui.Element { + return TagsInput(c, &tags, TagsInputOptions{Validate: func(s string) string { + seen = s + return "Invalid tag" + }}).Input + }) + }) + }, 600, 400) + _ = tt.Click("Tags") + tt.Type("bad tag") + tt.Key(0, ui.KeyEnter) + if !tt.HasText("Invalid tag") { + t.Fatal("no tag error") + } + _ = tt.Click("Reset") + tt.Frame() + if tt.HasText("Invalid tag") { + t.Fatal("tag error survived reset") + } + seen = "" + _ = tt.Click("Tags") + tt.Type("x") + tt.Key(0, ui.KeyEnter) + if seen != "x" { + t.Fatalf("draft survived reset: %q", seen) } } diff --git a/input_group.go b/input_group.go index 2db0177..8f0b136 100644 --- a/input_group.go +++ b/input_group.go @@ -49,8 +49,7 @@ func (p InputGroupParts) Changed() bool { return p.Input.Changed() } // Submitted reports whether Enter was pressed in the input. func (p InputGroupParts) Submitted() bool { return p.Input.Submitted() } -// InputGroup joins a single-line input with text and buttons inside one border. -// Every button keeps its own place in the Tab order. +// InputGroup joins an input, fixed text and buttons, each its own Tab stop, in one border. func InputGroup(c *ui.Context, value *string, opts InputGroupOptions) InputGroupParts { for _, b := range opts.Buttons { if b.IconOnly && b.Icon == nil { diff --git a/messages_form.go b/messages_form.go index 96ca640..8366836 100644 --- a/messages_form.go +++ b/messages_form.go @@ -42,6 +42,7 @@ func init() { "transfer.all": {"Select all in %s", "全选%s"}, "transfer.search": {"Search", "搜索"}, "transfer.search_in": {"Search %s", "搜索%s"}, + "transfer.partial": {"%d of %d selected", "已选 %d / %d 项"}, "transfer.empty": {"No items", "暂无条目"}, "transfer.no_match": {"No matches", "无匹配结果"}, "form.submit": {"Submit", "提交"}, diff --git a/pin_input.go b/pin_input.go index 99f05e0..6dc4f9d 100644 --- a/pin_input.go +++ b/pin_input.go @@ -45,8 +45,7 @@ type pinInputState struct { compose string } -// PinInput edits a fixed-length code of digits, one per cell, keeping leading zeros. -// Typing fills the next cell, Backspace clears the last, and paste fills them all. +// PinInput edits a fixed-length digit code, one cell per digit, keeping leading zeros. func PinInput(c *ui.Context, value *string, opts PinInputOptions) PinInputParts { n := opts.Length if n == 0 { @@ -144,9 +143,9 @@ func PinInput(c *ui.Context, value *string, opts PinInputOptions) PinInputParts cell.Children(func() { switch { case showCompose: - ui.Text(c, compose).FontSize(theme.H3Size).Underline().SingleLine() + ui.Text(c, compose).FontSize(FontSize(c, theme.H3Size)).Underline().SingleLine() case ch != "": - ui.Text(c, ch).FontSize(theme.H3Size).FontFeatures("tnum").SingleLine() + ui.Text(c, ch).FontSize(FontSize(c, theme.H3Size)).FontFeatures("tnum").SingleLine() } }) caret := focused && i == active && len(*value) < n && !showCompose diff --git a/tags_input.go b/tags_input.go index 3669bf0..424e876 100644 --- a/tags_input.go +++ b/tags_input.go @@ -47,7 +47,6 @@ type tagsInputState struct { } // TagsInput edits a list of unique tags shown as chips before a text input. -// Enter or a separator adds the text; Backspace in the empty input removes the last tag. func TagsInput(c *ui.Context, tags *[]string, opts TagsInputOptions) TagsInputParts { if opts.Max < 0 { panic("mujica: TagsInput Max must not be negative") @@ -102,11 +101,10 @@ func TagsInput(c *ui.Context, tags *[]string, opts TagsInputOptions) TagsInputPa Padding(d.Unit(), d.Unit()*2).Radius(theme.ControlRadius).Background(k.Surface).Disabled(opts.Disabled) box.Children(func() { for i, tag := range *tags { - chip := ui.Row(c).Key(tag).AlignItems(ui.Center).Gap(d.Unit()).Padding(0, d.Unit(), 0, d.Unit()*2). - MinHeight(d.ControlHeight() - d.Unit()*3).Radius(theme.ControlRadius).Background(k.Selection).Shrink(0) + chip := ui.Row(c).Key(tag).AlignItems(ui.Center).Padding(0, 0, 0, d.Unit()*2).Radius(theme.ControlRadius).Background(k.Selection).Shrink(0) chip.Children(func() { ui.Text(c, tag).SingleLine() - x := ui.ButtonBase(c).Size(20, 20).Radius(theme.ControlRadius).TextColor(k.TextMuted). + x := ui.ButtonBase(c).Size(theme.MinHitSize, theme.MinHitSize).Radius(theme.ControlRadius).TextColor(k.TextMuted). Label(fmt.Sprintf(msg(c, "tags_input.remove"), tag)) internal.Ring(x, k.Focus, theme.ControlRadius) if x.Hovered() { @@ -135,7 +133,7 @@ func TagsInput(c *ui.Context, tags *[]string, opts TagsInputOptions) TagsInputPa }) }) if st.err != "" { - ui.Text(c, st.err).TextColor(k.Danger).FontSize(theme.CaptionSize).Role(ui.RoleStatus) + ui.Text(c, st.err).TextColor(k.Danger).FontSize(FontSize(c, theme.CaptionSize)).Role(ui.RoleStatus) } }) in := parts.Input diff --git a/tags_input_test.go b/tags_input_test.go index 2d2dae2..da8aeb3 100644 --- a/tags_input_test.go +++ b/tags_input_test.go @@ -115,3 +115,12 @@ func TestTagsInputSnapshot(t *testing.T) { }) }) } + +func TestTagsInputRemoveHitArea(t *testing.T) { + tags, n := []string{"rose"}, 0 + tt := tagsInputTester(&tags, TagsInputOptions{}, &n) + r, ok := tt.Find("Remove rose") + if !ok || r.W < 28 || r.H < 28 { + t.Fatalf("remove button %v", r) + } +} diff --git a/testdata/snapshots/darwin/color_picker-dark.png b/testdata/snapshots/darwin/color_picker-dark.png index 494495e2609c0f96a3535c03b87b84d9c3ef0794..00f3d75c8af5c5f17052552c54d104eafb63dd38 100644 GIT binary patch delta 845 zcmV-T1G4fg1@#~f^nQKK z{GR{id0!86`tiQtH{ZYylaXa3e}C5av-o1q@TIGpm(MrKrB;L|or|qjvfr%i)E8>i zV}B?VUQc>MjhHv~wn9zw=Bv+y8ZocEy%=hmvB$D_3HSUrx1V?k_oZj=4>e+HU!44o zP4ClVp+?Nsm-ENg@VAA3^YZz7HvhO#-wPZ6a&~)?jVl)mwXk;WckOrWf6vLazfms5 zlYj8Dll8quxfE9L!w-LM@VAPQKOmEjfFFMN+s1E<$>G2cKm72+4?q0y!w*0F@WT&3 z{P6!r_{&KWD*W)n-!=HJ4c?es{;bm97dGIBAO0@De{Jx_i|@~TJ^Rt`Yrlp)_~D1Y z)A1k5UwZe$#hLfQ9{ljbf8Sa7FWk}l)GOoXO6SNYpZsj(=LP>?&F0Y93nSB0hyKYY zpZwVJ^Mb#=Q=1!|xcBD3$n;d-tpW1MCqK6Qyx=bs3ft?|xzUOK$8Wv-@hth|lOJ1t zM&IW@<7}^2-+BI}zM;XDPZz?Tli$hjTl$ePksjS2y=(u7?at+50jB) z7k{^fzu0Pp`ak{%_~D1YZT!i8bGIkr3psXslBCfLD^K`&!p{?axp~5`vQyusAAb1ZhaZ0U;fEi7_*miZO#E5=tM9?P9}P8Pe%e?LHBEE>&rl<# zRK6|LG|xTxaHtXU`By)Ln&y)a-U>BhM#d*YP4oS?S-gVb=Fo7cX;#-(Lyeg0{ntZv z@;mvR{7(LkIQf%7XhD-uXe22=760Gt(;*InP!I&r?j@SmR@8w)asQxD;1FEplTWgW z1Wn-0n%VIWlObpsJO10?kMH}F{Vb)FtgqVkw{N?7U2+zAXqw-Dn8sQoBFDpbx!VQ+ XnhJL}ODeI200000NkvXXu0mjfrP$W8 delta 932 zcmeCV#JJ`X;{+AP&l^>FQ{y*=CdwR0zsF-<)BiortpCMT?+qKw)RsjC3SLyY?kVlq ztZ*ooJM*ejl&c4K`BaY7EuCVyhr|>e-NaaTYAp=2VrjGDbnd&{Qpvv}K%+u$`^@|Q zZ`VBEG2?1~@q?=O?33rEN={yz%2jXwC-U+6M@Q#f%r@V?E3qMp{lD*YYnOtwZCG%d**O?dG&SdB7x0{_kk{nsnQvGrEZU5Sq-?uh@ zZ#PTIil0+=eA(}poj^t3rgy7f`!JvT|Fy5DzvuidT)I!*OwXb^_T;nP)vZwxyT9%J zR=@k(^C!3NYfOK1(q6_o@_zml??hJnKOdg6)vuQL$!_$M^T)&X|95^&4YJe$vgGSP z#J`w_`s$t;AXeYO`s@w$RbMxI<@?`g07_dk{9k+UpZNXxzpMT&zTX@1f4bo74~Or! z{pf$Pe$VfRpYBvA@&gUY*Z&j#?nT|J`l%$>|ba0>2uTn^=ZW^k6Jh0oT>aD zB$o5D@?iY^wYok2cdbnf%&adP+c?<$d~$r+eDOc6PKoJ@cNy4S{r%&^Y5DV${q25k ze473x?7n1n`r=>bKI?z&;aOL^OXS;}KYn%U^}FZ)d3omAt9+2LY@dqT<29#79^|*L z|MTH6KhVEmBA(%2(rVFL|3CU40E#_7Hebf%`!1z@({^8#HA~e-wDXx!hjrR>#lGV$&^|v)Jp~ z%#ysG-gcV(Y^Sbz`hGsip5JPgbWClz^XzB8^EX!r7H6cGY{|S;$W3m@;Kzbl>ir*^FTFk`F1X6~r7423oq5@pe`oJW zu6E#I3Y>8C^5_5i!&18+Gi5djxJ+7evobg`ipPI@qdw~iO@WzqKHX5RTfdU0@=(YzV6d*({~`6_Ll_r^x!YC@lVy~5R#M+(-5 zG+SP&^jtN$`|Z{s-e-rlMy~Wzx_f+y)S1Z(ql4zYv9(sXny^g&y9aCiw;!(;O-v7e ze=NR!LT8Mdrs%5meB0eqn{w@M*KPYd@8&mlZ7<%F=WXOmBupFc5wpOKxZg;Fs{+uzoD=by)F=Ps|aTiRap zMEU-Tn)MH^PrF*PY3tJc`j6#*o^aon`7`d|{#|>Fu3g(&8lLQ3A0N6y5G?Kil!y-q z*kH2X;M%p&&FXgwt3@Ch^lZ=n?@!LGOZ@R-=Bj7QrVD>h?VCCu2=Bkwu20j^*HHqR zT<*B<`3GYOp6hIr?K7n7(_7=0>nxqJ=XC9qAgk1q))0Ts?@@R9di9gu@j$QKdmD9k z&X~aI_oMJozi{0=%ZKLXlHA+fn->}h|Bto*TN>NlxwC!aiHBh`m0SMUW<9+e{n9VT zy4G`l&hu5dx35LL-r9X_+O=C=>OU*%e!u(sskr4yW?E9Ps%SJ*ql0+judm8pYh#VR z??B@_W$aWc`+@^pj?jEvot9DHZcD0o!K|x)sp3l zgI68o>EZD%H4>gZDa&Ag{l3k!{%BoIxHf%?cWKa;bv~;OF4?E+nff#x48I>e1y5<9 z)P@~%>in~R^#9yF*;@e|EP*0t|7?wa^kP3h*MY?oGy+(5=by+C6EJaja4$v9q~J@_ zWcySZxA^A!*D7uPWxq2lj0=CK=b5@hN7Mbb(cSnwym; cueA=p8J<=!dtcpUA;JIzp00i_>zopr09b6A5&!@I delta 929 zcmV;S177^}(E-WQ0gxjCX%Mj`|6~_oL#h8pSk?+frwdrJm+$_bHI~NXcv=E zXc2#R8^0Sb_Kco8UlWZ4%Zl>@+5cOkQ&uvbm>G|q=wE$e$Bmr_r8Su2&mTzZWNffo zT7x;%eo0y<7h9{PHJA(6rloZf={zQ_!8{qbC9RXaXZxfzn90js(t>~O_-mq(XIJmW zUw@E+Y(^;+s;vySMrD9yKg)iW{hnF&2g`qo4av{EbQpj2J{T&I0q}z#{GP#YVzux7 ze?f@Pf*H(UW^HD`4}S22AN=44Kls6K0)Ihap|s!!KlpP7e|bY)_tSfusw!jv{NM+F z4&X0us5^bV|MBq6FYi9e82G^te!t_-$e+A2I?+EQW8eor`2B@{L+QqS?Wca;t4Du6 z@{w;;zE|*T%W6E?+|=8X@sE7uBj2=qui#%^TpDTV*t)B}skf&hT#tO@Bj2=qui($i z%UhV88)@mN+7oWOJ&b(hBj2=qm)`38%UYP78$5cZqOsxS*nJse=4a+-=J)%|pQ**U zdE_G>`7X%!9Da(TTr2Q{AN=44Klp#a4}S22AN=6Y0)Cyclu~k+{V1h$%91Ht*P$oKMIA`~2+lv(N9Deg2v8ShzJB43(JprM>h|ch4tg9>yYv zn`Mj;^5>|fPj97nV%zCU`eQp+ZQHiiTCZHRwzSq(I?2zo+jsAme@94;W-1;wQB<}i z5D4U_KR=?>$|dv6D^I>gpMbr$>?eeHFq1%K6j9%w_}$p*J93~?T7$XsXh2#gHP!Xf z8qAyN7t%WEYHOF)VETpzrFAkDn~>IEe%;?$PJWfvVAdCvO6#Oxof`)fe|0@v>k2pI?yr zU43WI{CXG!VIb}qQNRCpHU5bii(+voWP4c#>-{cav-QC~9M!^o;M@BE{>J=gEeL)H zQO?e#Iik?ckGFxU%I))okl&Fq0zL|5W&VWVijlE}TdjRao)C>}77#md?5jAX#LkcC z-&5VboIAVe+JTA)V4CYQ)Pk(c@7$Wx=j@s!)#$TL{s}G!CZgy(vWD7$CUFMb7~MR%07`UBh0i00000NkvXXu0mjf DYcTD( diff --git a/testdata/snapshots/darwin/form-dark.png b/testdata/snapshots/darwin/form-dark.png index 64b96f994bf299a7de7da434026bdfa0130f7509..5b7add72fc3aaed5988b2ddf3319f159b78110f8 100644 GIT binary patch literal 17144 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 literal 17134 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 Q{z)SlNkxfju}^{j7Z**NlK=n! diff --git a/testdata/snapshots/darwin/form-light.png b/testdata/snapshots/darwin/form-light.png index 7690b2ad47f122ded2ef4375ea0a39ec23e140cf..f318ed7bccf475f7e38393ce41d76e389e65cd5f 100644 GIT binary patch literal 17110 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 T-~I|zejy{NC{Zo;@yq`Ka+V8$ diff --git a/testdata/snapshots/darwin/form_field-dark.png b/testdata/snapshots/darwin/form_field-dark.png index d6b2a7e3d7c863a2fb6fc01922a2a230245ad886..6efd9bc43ab32d10388eba78443bf0154c72592c 100644 GIT binary patch literal 12026 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 F{{yJ1yTc6b&YSbgx$oY0 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 literal 11877 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 PkL4)Jsmg+ZrlJ1<#s?Pq literal 10757 zcmeHtbx<8o*XG3~Sdicj!7X@z5ZooWyE|O`;u>5M2wWV3JHa)$UfkW?f;)Tjy}$RX z+WNL?|J-l4wolj0)Xa3x^f^zTbDo)wP*#*eMlkmAF1?

nCx`p4M!5{bLecjs`ymsOJFx|gFVf1f# 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 E59K)|-2eap literal 10519 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

-yUu% zI77aVnvF(fyzX{~5QGv&_lt;c+#C}l1yg;IwnY->jf&ZJY0eTR)QNG17n(0YdM5;%KwV{CuVZ`D zh6;yRAA2fp&&hh=dftn6N0j!uaN ze9y&50RsH)TWWb6te$+H%PtRlQ@?(?rtVqkaNBl||NNpv@)YMM@MnBfQ zhM7)?-{>&Q2vTtY08Ys3pFEEVPLHE7b0>?CW6As-7vE;=>UoGpYx*3eQ4v((zPL&L zrV5*$nYkWL<04)&7UE)kPr1GSw`t>Q{P0k_Mwi*;@0VB|>dT88%j!kb?;OZ?r_(m| z3cgR>##iY?#Ov$l9|yXEyquOS0G|VYz3lA!JmOYluWwp9niJqL5+qdFa0#es>)6lz zaSy!Ob>YC+LPiGa)M`Oj7i~7f-Ny%3qg!5a zdSOnpC;YcTg>jwxIWv-hBo{uc#{SzJ}5LE z{*G+8rF%u-N^ma`NsD`5Uk@#Cl=!o^T9V%AW|cF^_~=*~zdImFPh_R9FBeXnp5o^^ zszj0=DHo7vPE zGf80A_?gx(kWyjn<*nABMTJ8}dU`r;sW#f(F;|)bTG~kLfCS2FMUhF3&cJ)JL*WY# zOPcDCpBZ67MKFxt(8g=gB#_`k&G87X%YB%bm}-b8mm6=&d!ti@up5kImB$DFEV1C6 z;-Puc*aIDGDA5q#XLM0m9WFB8296s4?X*hxdPf$Cw)*ualD$NLgM*#jQD5RrBt!AG zxZ50biWo>#(b81LA=Y&82(eT%234 zt{x~>y+i7G`J8TLEz=h}&J+g#hY3JsyM2d}qe9P^uf~wj*YVo2Xzu_7)>|$taisMM zpg_1C$}+-y2eOfl?x+6)rJwWJ-FS`3PxDK)Gcq!O_CG3{+chtVW3~*~9P=g@rlu|d z_QxYlO};lbk=o3k!ReP{@%bpfE>tI>$eT<^tOzWJ50iL5Cm#juuicApEj79Ld)#ah z*zxUkEj2O0y(fD-aO;GoSLrEn>=)#zbjDWOv+;Sw0Ai$EIQ>x^%mW*0%Ie_2m>*99 zlQfLGZKd6tOALKMZvUK`x-)+;mMtPf<}JyN;dx0FPfMCGy8#7dQ z_hH+dV0T~(3MUgb?(MLzCttn!1qDX4K99R3E0yMZOd~pIhb(JucxW~my3;#qM`NKl zVLVw3r}X9L6Q-pZlk>B`=F4Bgsb^aMszQ!ug$!4vhJ-OAJ7|_X5|L3nKT(MWwle8pY#-? z%YJWrSnhCabcvFIeXBxH5xmWup#wE--2s;eSjF5LVr3FuKGC^q#Ub9_uYP8yP_KZV z&)DLanojN#LkU6a-?j*^Flh2BY|(SOS)zM;`_eUP;3A8HaM>0n_%q?v;7C+=}~+3^SAcuTVICLC+KZ3ww{ln3Ku zy%gf!5ah|F^4Wn6@Urz?`=x(Oa`79k1|KhTHnT$h)# zGzD$Hu2)0n= zQSjLfxlpvHLl~NdLH)c(9W9t=IJv1!)Ri2<0h*?tyKPW5p@*L1@#f{yi5zz;cn7wb zKAZlBDd$WVvZvR-r-uKLA^z8!br@{n6hjOqO1?FH*pFQUm_tMWUlf6?HnM~!= zFHlYvKg@a4&bGHXL<|OFI-V=2PoEDq$31zqG&7=r7Uch&oC;;;kM6&Ax=6#H&wHzU z!V>up0skfCH=fX^xqoE(SC;xe=eB{`b54GHWC8=df>Jx&W7!=DsF2Jk{(t*#(LiVu z0c&Wr_P{?!1Yx?L%cu7V`Z{5d*uTMIn83gj{7-tsCm@1pWgb=bm7070M;bXPCCLhL Hlkfiqylx?b diff --git a/transfer.go b/transfer.go index 47a3fc1..3b300d9 100644 --- a/transfer.go +++ b/transfer.go @@ -43,8 +43,7 @@ type transferState struct { query [2]string } -// Transfer moves items between a source list and *target, the IDs chosen, in order. -// Each side has search, check boxes with select-all, and move buttons between them. +// Transfer moves items between a source list and *target, the chosen IDs in order. func Transfer(c *ui.Context, target *[]string, items []TransferItem, opts TransferOptions) TransferParts { byID := make(map[string]TransferItem, len(items)) for _, it := range items { @@ -158,6 +157,7 @@ func transferPanel(c *ui.Context, st *transferState, side int, title string, ite all := checked > 0 && checked == enabled box := ui.CheckboxBase(c, &all).Label(fmt.Sprintf(msg(c, "transfer.all"), title)).Disabled(enabled == 0) transferMark(c, box, all, checked > 0 && !all) + box.Description(transferPartial(c, checked, enabled)) if box.Changed() { for _, it := range shown { if !it.Disabled { @@ -166,7 +166,7 @@ func transferPanel(c *ui.Context, st *transferState, side int, title string, ite } } ui.Text(c, title).Font(theme.SerifFont).FontWeight(600).TextColor(k.Text).Grow(1) - ui.Text(c, fmt.Sprintf("%d / %d", checked, len(items))).TextColor(k.TextMuted).FontSize(theme.CaptionSize).FontFeatures("tnum") + ui.Text(c, fmt.Sprintf("%d / %d", checked, len(items))).TextColor(k.TextMuted).FontSize(FontSize(c, theme.CaptionSize)).FontFeatures("tnum") }) ui.Box(c).Padding(d.Unit() * 2).Children(func() { InputGroup(c, &st.query[side], InputGroupOptions{Placeholder: msg(c, "transfer.search"), Label: fmt.Sprintf(msg(c, "transfer.search_in"), title)}) @@ -202,6 +202,14 @@ func transferPanel(c *ui.Context, st *transferState, side int, title string, ite }) } +// transferPartial describes a select-all box that is neither clear nor full. +func transferPartial(c *ui.Context, checked, enabled int) string { + if checked == 0 || checked == enabled { + return "" + } + return fmt.Sprintf(msg(c, "transfer.partial"), checked, enabled) +} + // transferMark draws a check box's square inside box, which takes the focus ring. func transferMark(c *ui.Context, box *ui.Element, on, mixed bool) { k := Tokens(c) diff --git a/transfer_test.go b/transfer_test.go index fb366b0..427d4d2 100644 --- a/transfer_test.go +++ b/transfer_test.go @@ -104,3 +104,15 @@ func TestTransferSnapshot(t *testing.T) { }) }) } + +// MyGo's tester cannot read descriptions, so this checks the text the select-all box gets. +func TestTransferPartialDescription(t *testing.T) { + var got [3]string + ui.Render(func(c *ui.Context) { + Use(c, Settings{}) + got = [3]string{transferPartial(c, 2, 3), transferPartial(c, 3, 3), transferPartial(c, 0, 3)} + }, 100, 100, 1) + if got != [3]string{"2 of 3 selected", "", ""} { + t.Fatalf("descriptions %q", got) + } +}