toga-ai 1.0.593 → 1.0.594
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -96,7 +96,10 @@ Per-column header controls, each a popover trigger with `data-active` / `data-op
|
|
|
96
96
|
is hidden while the input is focused; both the trigger button and the icon span carry
|
|
97
97
|
`data-active`. The clear button must not widen the input row (fixed-width menu).
|
|
98
98
|
- **`HeaderFilterRange`** — numeric, modes exactly/moreThan/lessThan + a range toggle
|
|
99
|
-
(min/max); emits `{ key, value }[]` (`eq`/`min`/`max`/`between`).
|
|
99
|
+
(min/max); emits `{ key, value }[]` (`eq`/`min`/`max`/`between`). Reads its persisted
|
|
100
|
+
operator/values back from a `filterParams` prop (not `filterValue`, which collapses to the
|
|
101
|
+
literal `"active"` when a range filter is set); `PrimaryTableHeaderCell` must pass
|
|
102
|
+
`filterParams` through.
|
|
100
103
|
- **`HeaderFilterMultiselect`** — checkbox list with "Select All"; emits comma-joined slugs.
|
|
101
104
|
- **`HeaderFilterDate`** — calendar picker, modes exactly/before/after + range; converts
|
|
102
105
|
`MM/DD/YYYY` ↔ URL `YYYY-MM-DD`; calendar + mode dropdown both portalled.
|
|
@@ -148,12 +151,31 @@ Per-column header controls, each a popover trigger with `data-active` / `data-op
|
|
|
148
151
|
never for data fetching. A visible column can still *look* missing when `shrinkColumns` freezes
|
|
149
152
|
it to a tiny width because its measured header+body content is minimal (see
|
|
150
153
|
[primary-table-templates](primary-table-templates.md)).
|
|
154
|
+
- **Filter presentational components must seed their internal mode/value state from props.**
|
|
155
|
+
The filter mode/operator survives the URL round-trip — it is persisted as a URL key suffix
|
|
156
|
+
(`_starts`/`_ends`/`_eq`/`_excludes` for text; `_min`/`_max`/`_eq`/`_between` for range),
|
|
157
|
+
rehydrated into TanStack `columnFilters` by toga25-supply `useServerTableUrlState`, and
|
|
158
|
+
carried through `PrimaryTableHeaderCell`. But `HeaderFilterSearch`/`HeaderFilterRange` are
|
|
159
|
+
remounted fresh each time a filter popover opens, so if they don't seed local state from
|
|
160
|
+
their props (`filterMode` / `filterParams`) they hard-default (`includes` for text,
|
|
161
|
+
`exactly` for range) and reopening a filter *shows the wrong mode* even though the applied
|
|
162
|
+
filter is correct. Fixed via a `useEffect` seeding `filterMode` from `filterModeProp` in
|
|
163
|
+
`HeaderFilterSearch`, and a rehydration effect keyed on `JSON.stringify(filterParams)` in
|
|
164
|
+
`HeaderFilterRange` that reconstructs mode + value(s) from the operator keys
|
|
165
|
+
(`eq`→Exactly, `min`→MoreThan, `max`→LessThan, `between`→range min/max).
|
|
151
166
|
- **Table/surface meta is cached with `Infinity` staleTime/gcTime** (`useFetchTablePageMeta`), so
|
|
152
167
|
after a DB metadata change (`TableViewFields`, `Core.RecordFields`) a **hard reload** is required
|
|
153
168
|
to see it. And the app consumes toga-blox's built **`dist/`**, not `src/` — editing blox source
|
|
154
169
|
requires `npm run build` before it takes effect at runtime.
|
|
155
170
|
|
|
156
171
|
## Change history
|
|
172
|
+
- 2026-08-17 — Fixed: column filter **mode** was not restored when a filter popover was reopened
|
|
173
|
+
(text reverted to `includes`, range to `exactly`). Root cause: the URL round-trip and
|
|
174
|
+
`PrimaryTableHeaderCell` preserved the mode, but `HeaderFilterSearch` (destructured
|
|
175
|
+
`filterMode` as `filterModeProp` and never used it) and `HeaderFilterRange` (received no
|
|
176
|
+
operator info) never seeded internal state from props. Seeded both from props; added a
|
|
177
|
+
`filterParams` prop to `HeaderFilterRange` and passed it through `PrimaryTableHeaderCell`.
|
|
178
|
+
(apeterson)
|
|
157
179
|
- 2026-08-17 — Added gotchas on meta→column mapping: field `type`/`precision` come from
|
|
158
180
|
`Core.RecordFields` (not per-view) while `isCopyable`/`isVisible`/`isSortable`/`isFilterable` are
|
|
159
181
|
per-view; `isVisible` is the only column gate; `accessorFn` dot-walks and needs the join;
|
package/package.json
CHANGED