@mittwald/flow-react-components 1.2.0-next.35 → 1.2.0-next.37

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.
Files changed (31) hide show
  1. package/AGENTS.md +14 -0
  2. package/dist/assets/component-index.json +1 -1
  3. package/dist/assets/doc-properties.json +1 -1
  4. package/dist/css/all-layered.css +1 -1
  5. package/dist/css/all.css +1 -1
  6. package/dist/js/default.mjs +1 -1
  7. package/dist/js/packages/components/src/components/Autocomplete/Autocomplete.mjs +2 -4
  8. package/dist/js/packages/components/src/components/Autocomplete/Autocomplete.mjs.map +1 -1
  9. package/dist/js/packages/components/src/components/ComboBox/ComboBox.mjs +2 -4
  10. package/dist/js/packages/components/src/components/ComboBox/ComboBox.mjs.map +1 -1
  11. package/dist/js/packages/components/src/components/Option/Option.mjs +10 -2
  12. package/dist/js/packages/components/src/components/Option/Option.mjs.map +1 -1
  13. package/dist/js/packages/components/src/components/Option/optionsTunnel.mjs +36 -0
  14. package/dist/js/packages/components/src/components/Option/optionsTunnel.mjs.map +1 -0
  15. package/dist/js/packages/components/src/components/Select/Select.mjs +2 -4
  16. package/dist/js/packages/components/src/components/Select/Select.mjs.map +1 -1
  17. package/dist/js/packages/components/src/lib/componentFactory/flowComponent.mjs +1 -0
  18. package/dist/js/packages/components/src/lib/componentFactory/flowComponent.mjs.map +1 -1
  19. package/dist/js/packages/components/src/lib/types/props.mjs.map +1 -1
  20. package/dist/types/components/Autocomplete/Autocomplete.d.ts.map +1 -1
  21. package/dist/types/components/ComboBox/ComboBox.d.ts.map +1 -1
  22. package/dist/types/components/Modal/components/ModalTrigger/ModalTrigger.d.ts +1 -0
  23. package/dist/types/components/Modal/components/ModalTrigger/ModalTrigger.d.ts.map +1 -1
  24. package/dist/types/components/Option/Option.d.ts +7 -0
  25. package/dist/types/components/Option/Option.d.ts.map +1 -1
  26. package/dist/types/components/Option/optionsTunnel.d.ts +22 -0
  27. package/dist/types/components/Option/optionsTunnel.d.ts.map +1 -0
  28. package/dist/types/components/Select/Select.d.ts.map +1 -1
  29. package/dist/types/lib/componentFactory/flowComponent.d.ts.map +1 -1
  30. package/dist/types/lib/types/props.d.ts.map +1 -1
  31. package/package.json +9 -9
package/AGENTS.md CHANGED
@@ -393,6 +393,20 @@ Easy-to-miss conventions not spelled out above. Full details and examples in
393
393
  icon-only padding silently do not apply. Wrap it — `<Icon><IconFoo /></Icon>`
394
394
  — as the [Icon page](https://flow.mittwald.de/components/content/icon)
395
395
  documents. Nothing errors: types, lint and the console stay clean.
396
+ - **A collection child is rendered twice** — react-aria renders the children of
397
+ a collection (`Select`, `ComboBox`, `Autocomplete`, `Menu`, `ListBox`, `Tree`,
398
+ …) once into its hidden collection document and once for real. Both renders
399
+ are full component instances, so anything derived per instance happens twice
400
+ for one logical element: `useId` returns two ids, effects run twice, and every
401
+ registration into shared state lands twice. Whatever such a child registers
402
+ therefore needs an id derived from the element itself, not a generated one —
403
+ options pass their collection key as the tunnel's `staticEntryId`
404
+ (`Option/optionsTunnel.ts`), and a new tunnelled collection child must do the
405
+ same. Without it the tunnel exit renders each child twice: the keys stay
406
+ unique, so the DOM and the tests look right, but the collection holds two
407
+ nodes per key and its `prevKey`/`nextKey` chain closes into a ring — `ArrowUp`
408
+ on the first item wraps to the last, and react-stately's focus restoration
409
+ walks `getKeyBefore` forever and freezes the tab (#3146).
396
410
  - **Universal exports are deliberately explicit** — remote-safe values and their
397
411
  types are curated in `flr-universal.ts` independently of the main public
398
412
  surface; adding to `public.ts` does not add them there.