@mittwald/flow-react-components 1.6.0-next.2 → 1.6.0-next.21
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.
- package/AGENTS.md +121 -0
- package/USAGE.md +2 -2
- package/dist/assets/component-index.json +1 -1
- package/dist/assets/doc-properties.json +1 -1
- package/dist/css/all-layered.css +1 -1
- package/dist/css/all.css +1 -1
- package/dist/js/_virtual/_10.locale.mjs +3 -3
- package/dist/js/_virtual/_11.locale.mjs +3 -9
- package/dist/js/_virtual/_12.locale.mjs +9 -3
- package/dist/js/_virtual/_13.locale.mjs +3 -9
- package/dist/js/_virtual/_14.locale.mjs +5 -505
- package/dist/js/_virtual/_15.locale.mjs +505 -5
- package/dist/js/_virtual/_16.locale.mjs +9 -3
- package/dist/js/_virtual/_17.locale.mjs +3 -63
- package/dist/js/_virtual/_18.locale.mjs +63 -3
- package/dist/js/_virtual/_19.locale.mjs +3 -9
- package/dist/js/_virtual/_20.locale.mjs +5 -5
- package/dist/js/_virtual/_21.locale.mjs +5 -11
- package/dist/js/_virtual/_22.locale.mjs +15 -3
- package/dist/js/_virtual/_23.locale.mjs +3 -15
- package/dist/js/_virtual/_24.locale.mjs +15 -3
- package/dist/js/_virtual/_25.locale.mjs +3 -33
- package/dist/js/_virtual/_26.locale.mjs +29 -5
- package/dist/js/_virtual/_27.locale.mjs +9 -3
- package/dist/js/_virtual/_28.locale.mjs +3 -3
- package/dist/js/_virtual/_29.locale.mjs +3 -93
- package/dist/js/_virtual/_30.locale.mjs +93 -3
- package/dist/js/_virtual/_31.locale.mjs +3 -9
- package/dist/js/_virtual/_32.locale.mjs +9 -3
- package/dist/js/_virtual/_33.locale.mjs +3 -9
- package/dist/js/_virtual/_34.locale.mjs +5 -7
- package/dist/js/_virtual/_35.locale.mjs +7 -13
- package/dist/js/_virtual/_36.locale.mjs +23 -0
- package/dist/js/_virtual/_4.locale.mjs +3 -9
- package/dist/js/_virtual/_5.locale.mjs +9 -3
- package/dist/js/_virtual/_6.locale.mjs +3 -21
- package/dist/js/_virtual/_7.locale.mjs +21 -3
- package/dist/js/_virtual/_8.locale.mjs +3 -3
- package/dist/js/_virtual/_9.locale.mjs +3 -3
- package/dist/js/default.mjs +1 -1
- package/dist/js/packages/components/src/components/AccentBox/AccentBox.mjs +3 -2
- package/dist/js/packages/components/src/components/AccentBox/AccentBox.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Accordion/Accordion.mjs +3 -2
- package/dist/js/packages/components/src/components/Accordion/Accordion.mjs.map +1 -1
- package/dist/js/packages/components/src/components/ActionGroup/ActionGroup.mjs +3 -3
- package/dist/js/packages/components/src/components/ActionGroup/ActionGroup.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Activity/Activity.mjs +1 -1
- package/dist/js/packages/components/src/components/Activity/Activity.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Alert/Alert.mjs +3 -2
- package/dist/js/packages/components/src/components/Alert/Alert.mjs.map +1 -1
- package/dist/js/packages/components/src/components/AvatarStack/AvatarStack.mjs +4 -0
- package/dist/js/packages/components/src/components/AvatarStack/AvatarStack.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Badge/Badge.mjs +1 -1
- package/dist/js/packages/components/src/components/Calendar/components/RangeCalendar/helpers/useCalendarDateRangePresets.mjs +1 -1
- package/dist/js/packages/components/src/components/CartesianChart/CartesianChart.mjs +6 -8
- package/dist/js/packages/components/src/components/CartesianChart/CartesianChart.mjs.map +1 -1
- package/dist/js/packages/components/src/components/CartesianChart/components/ChartTooltip/TooltipProgressBar.mjs +1 -1
- package/dist/js/packages/components/src/components/CartesianChart/components/YAxis/YAxis.mjs +23 -5
- package/dist/js/packages/components/src/components/CartesianChart/components/YAxis/YAxis.mjs.map +1 -1
- package/dist/js/packages/components/src/components/CartesianChart/hooks/useTickLabelWidth.mjs +67 -0
- package/dist/js/packages/components/src/components/CartesianChart/hooks/useTickLabelWidth.mjs.map +1 -0
- package/dist/js/packages/components/src/components/Checkbox/Checkbox.mjs +2 -2
- package/dist/js/packages/components/src/components/Checkbox/Checkbox.mjs.map +1 -1
- package/dist/js/packages/components/src/components/CodeBlock/CodeBlock.mjs +4 -4
- package/dist/js/packages/components/src/components/CodeBlock/CodeBlock.mjs.map +1 -1
- package/dist/js/packages/components/src/components/ComboBox/ComboBox.mjs +4 -3
- package/dist/js/packages/components/src/components/ComboBox/ComboBox.mjs.map +1 -1
- package/dist/js/packages/components/src/components/ContextMenu/ContextMenu.mjs +3 -2
- package/dist/js/packages/components/src/components/ContextMenu/ContextMenu.mjs.map +1 -1
- package/dist/js/packages/components/src/components/ContextMenu/components/ContextMenuSelectAll/ContextMenuSelectAll.mjs +1 -1
- package/dist/js/packages/components/src/components/ContextualHelp/components/ContextualHelpTrigger/ContextualHelpTrigger.mjs +1 -1
- package/dist/js/packages/components/src/components/CopyButton/CopyButton.mjs +1 -1
- package/dist/js/packages/components/src/components/CountryOptions/CountryOptions.mjs +6 -2
- package/dist/js/packages/components/src/components/CountryOptions/CountryOptions.mjs.map +1 -1
- package/dist/js/packages/components/src/components/DatePicker/DatePicker.mjs +2 -1
- package/dist/js/packages/components/src/components/DatePicker/DatePicker.mjs.map +1 -1
- package/dist/js/packages/components/src/components/DateRangePicker/DateRangePicker.mjs +2 -1
- package/dist/js/packages/components/src/components/DateRangePicker/DateRangePicker.mjs.map +1 -1
- package/dist/js/packages/components/src/components/DonutChart/DonutChart.mjs.map +1 -1
- package/dist/js/packages/components/src/components/FileCard/components/DeleteButton/DeleteButton.mjs +1 -1
- package/dist/js/packages/components/src/components/Heading/Heading.mjs +2 -0
- package/dist/js/packages/components/src/components/Heading/Heading.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Icon/Icon.module.mjs.map +1 -1
- package/dist/js/packages/components/src/components/IllustratedMessage/IllustratedMessage.mjs +3 -2
- package/dist/js/packages/components/src/components/IllustratedMessage/IllustratedMessage.mjs.map +1 -1
- package/dist/js/packages/components/src/components/ImageCropper/ImageCropper.mjs +1 -1
- package/dist/js/packages/components/src/components/Kbd/Kbd.mjs +1 -1
- package/dist/js/packages/components/src/components/Label/Label.mjs +1 -5
- package/dist/js/packages/components/src/components/Label/Label.mjs.map +1 -1
- package/dist/js/packages/components/src/components/LightBox/LightBox.mjs +1 -1
- package/dist/js/packages/components/src/components/LightBox/components/LightBoxGallery/Controls.mjs +1 -1
- package/dist/js/packages/components/src/components/LightBox/components/LightBoxGallery/LightBoxGallery.mjs +1 -1
- package/dist/js/packages/components/src/components/LightBox/components/LightBoxGalleryItem/LightBoxGalleryItem.mjs +1 -1
- package/dist/js/packages/components/src/components/Link/components/LinkIcon/LinkIcon.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/EmptySearchResultView/EmptySearchResultView.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/EmptyView/EmptyView.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Footer/Footer.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Footer/components/PaginationInfos/PaginationInfos.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Footer/components/ShowNextBatchButton/ShowNextBatchButton.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs +2 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordionCheckboxGroup.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordionDateRange.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordionRadioGroup.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/SortingAccordion.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/ViewModeAccordion.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/DateRangeFilterPopover.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/SortingContextMenu/SortingContextMenu.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/ViewModeContextMenu/ViewModeContextMenu.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/ViewModeContextMenu/ViewModeMenuItem.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/Items.mjs +3 -0
- package/dist/js/packages/components/src/components/List/components/Items/Items.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/components/AccordionButton.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/components/OptionsButton/OptionsButton.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs +1 -2
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/views/GridList/GridList.mjs +3 -0
- package/dist/js/packages/components/src/components/List/components/Items/views/GridList/GridList.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/ListSummary/ListSummary.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Table/Table.mjs +8 -12
- package/dist/js/packages/components/src/components/List/components/Table/Table.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Table/components/Row.mjs +31 -0
- package/dist/js/packages/components/src/components/List/components/Table/components/Row.mjs.map +1 -0
- package/dist/js/packages/components/src/components/List/hooks/useAriaAnnounceSearchState.mjs +1 -1
- package/dist/js/packages/components/src/components/List/hooks/useLatestOnAction.mjs +21 -0
- package/dist/js/packages/components/src/components/List/hooks/useLatestOnAction.mjs.map +1 -0
- package/dist/js/packages/components/src/components/List/model/List.mjs +1 -0
- package/dist/js/packages/components/src/components/List/model/List.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/item/ItemView.mjs +20 -7
- package/dist/js/packages/components/src/components/List/model/item/ItemView.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/table/TableCell.mjs +1 -1
- package/dist/js/packages/components/src/components/List/model/table/TableCell.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/table/TableRow.mjs +28 -1
- package/dist/js/packages/components/src/components/List/model/table/TableRow.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/views/EmptyView/EmptyView.mjs +1 -1
- package/dist/js/packages/components/src/components/Markdown/Markdown.mjs +21 -7
- package/dist/js/packages/components/src/components/Markdown/Markdown.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Markdown/components/SkeletonBlocks.mjs +1 -1
- package/dist/js/packages/components/src/components/Markdown/components/SkeletonBlocks.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Markdown/lib/isExternalHref.mjs +8 -0
- package/dist/js/packages/components/src/components/Markdown/lib/isExternalHref.mjs.map +1 -0
- package/dist/js/packages/components/src/components/MarkdownEditor/components/ModeButton.mjs +1 -1
- package/dist/js/packages/components/src/components/MarkdownEditor/components/ToolbarButton.mjs +1 -1
- package/dist/js/packages/components/src/components/MarkdownEditor/lib/useFileUpload.mjs +1 -1
- package/dist/js/packages/components/src/components/MenuItem/MenuItem.mjs +32 -3
- package/dist/js/packages/components/src/components/MenuItem/MenuItem.mjs.map +1 -1
- package/dist/js/packages/components/src/components/MenuItem/MenuItem.module.mjs +1 -3
- package/dist/js/packages/components/src/components/Message/Message.mjs +1 -1
- package/dist/js/packages/components/src/components/MessageThread/MessageThread.mjs +1 -1
- package/dist/js/packages/components/src/components/MessageThread/MessageThread.mjs.map +1 -1
- package/dist/js/packages/components/src/components/MessageThread/components/MessageSeparator/MessageSeparator.mjs +1 -1
- package/dist/js/packages/components/src/components/Modal/Modal.mjs +3 -2
- package/dist/js/packages/components/src/components/Modal/Modal.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Modal/components/ConfirmUnsavedChangesModal/ConfirmUnsavedChangesModal.mjs +1 -1
- package/dist/js/packages/components/src/components/Navigation/Navigation.module.mjs +1 -3
- package/dist/js/packages/components/src/components/Notification/Notification.mjs +1 -1
- package/dist/js/packages/components/src/components/NumberField/NumberField.mjs +2 -3
- package/dist/js/packages/components/src/components/NumberField/NumberField.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Option/Option.module.mjs +1 -3
- package/dist/js/packages/components/src/components/Overlay/components/OverlayContent.mjs +2 -1
- package/dist/js/packages/components/src/components/Overlay/components/OverlayContent.mjs.map +1 -1
- package/dist/js/packages/components/src/components/PasswordCreationField/PasswordCreationField.mjs +2 -2
- package/dist/js/packages/components/src/components/PasswordCreationField/PasswordCreationField.mjs.map +1 -1
- package/dist/js/packages/components/src/components/PasswordCreationField/components/PasswordGenerateButton/PasswordGenerateButton.mjs +1 -1
- package/dist/js/packages/components/src/components/PasswordCreationField/components/TogglePasswordVisibilityButton/TogglePasswordVisibilityButton.mjs +1 -1
- package/dist/js/packages/components/src/components/PasswordCreationField/components/ValidationResultButton/ValidationResultButton.mjs +1 -1
- package/dist/js/packages/components/src/components/PasswordCreationField/components/ValidationResultEntry/ValidationResultEntry.mjs +1 -1
- package/dist/js/packages/components/src/components/PasswordCreationField/lib/ariaAnnounce.mjs +1 -1
- package/dist/js/packages/components/src/components/Popover/components/NonModalPopoverContent/NonModalPopoverContent.mjs +1 -1
- package/dist/js/packages/components/src/components/Popover/components/NonModalPopoverContent/NonModalPopoverContent.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Popover/components/PopoverContent/PopoverContent.mjs +4 -2
- package/dist/js/packages/components/src/components/Popover/components/PopoverContent/PopoverContent.mjs.map +1 -1
- package/dist/js/packages/components/src/components/ProgressBar/ProgressBar.mjs.map +1 -1
- package/dist/js/packages/components/src/components/ProgressBar/components/ProgressBarLegend.mjs +5 -4
- package/dist/js/packages/components/src/components/ProgressBar/components/ProgressBarLegend.mjs.map +1 -1
- package/dist/js/packages/components/src/components/ProgressBar/components/ProgressBarValue.mjs +1 -1
- package/dist/js/packages/components/src/components/RadioGroup/RadioGroup.mjs +2 -3
- package/dist/js/packages/components/src/components/RadioGroup/RadioGroup.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Rating/Rating.mjs +12 -11
- package/dist/js/packages/components/src/components/Rating/Rating.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Rating/components/RatingSegment/RatingSegment.mjs +1 -1
- package/dist/js/packages/components/src/components/SearchField/SearchField.mjs +3 -4
- package/dist/js/packages/components/src/components/SearchField/SearchField.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Section/Section.mjs +10 -6
- package/dist/js/packages/components/src/components/Section/Section.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Section/components/SectionHeader/SectionHeader.mjs +0 -4
- package/dist/js/packages/components/src/components/Section/components/SectionHeader/SectionHeader.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Section/context.mjs +47 -0
- package/dist/js/packages/components/src/components/Section/context.mjs.map +1 -0
- package/dist/js/packages/components/src/components/SegmentedControl/SegmentedControl.mjs +2 -3
- package/dist/js/packages/components/src/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Select/Select.mjs +2 -3
- package/dist/js/packages/components/src/components/Select/Select.mjs.map +1 -1
- package/dist/js/packages/components/src/components/SkeletonMode/SkeletonMode.mjs +1 -1
- package/dist/js/packages/components/src/components/SkeletonText/SkeletonText.mjs +4 -3
- package/dist/js/packages/components/src/components/SkeletonText/SkeletonText.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Slider/Slider.mjs +48 -42
- package/dist/js/packages/components/src/components/Slider/Slider.mjs.map +1 -1
- package/dist/js/packages/components/src/components/TabNavigation/TabNavigation.mjs +1 -1
- package/dist/js/packages/components/src/components/Table/Table.mjs +3 -0
- package/dist/js/packages/components/src/components/Table/Table.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Tabs/Tabs.mjs +6 -8
- package/dist/js/packages/components/src/components/Tabs/Tabs.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Tabs/Tabs.module.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Tabs/components/FallbackTab/FallbackTab.mjs +1 -1
- package/dist/js/packages/components/src/components/Tabs/components/TabList/TabList.mjs +0 -3
- package/dist/js/packages/components/src/components/Tabs/components/TabList/TabList.mjs.map +1 -1
- package/dist/js/packages/components/src/components/TextArea/TextArea.mjs +1 -1
- package/dist/js/packages/components/src/components/TextField/TextField.mjs +12 -9
- package/dist/js/packages/components/src/components/TextField/TextField.mjs.map +1 -1
- package/dist/js/packages/components/src/components/TimeField/TimeField.mjs +4 -2
- package/dist/js/packages/components/src/components/TimeField/TimeField.mjs.map +1 -1
- package/dist/js/packages/components/src/integrations/react-hook-form/components/Field/Field.mjs +1 -1
- package/dist/js/packages/design-tokens/dist/json-runtime/all-dark.mjs +7 -2
- package/dist/js/packages/design-tokens/dist/json-runtime/all-dark.mjs.map +1 -1
- package/dist/js/packages/design-tokens/dist/json-runtime/all-light.mjs +6 -1
- package/dist/js/packages/design-tokens/dist/json-runtime/all-light.mjs.map +1 -1
- package/dist/types/components/CartesianChart/hooks/useTickLabelWidth.d.ts +1 -0
- package/dist/types/components/CodeBlock/CodeBlock.d.ts +1 -1
- package/dist/types/components/DonutChart/DonutChart.d.ts +1 -4
- package/dist/types/components/List/components/Items/components/Item/Item.d.ts +2 -0
- package/dist/types/components/List/components/Items/components/Item/hooks/useGridItemProps.d.ts +1 -0
- package/dist/types/components/List/components/ListSummary/ListSummary.d.ts +1 -1
- package/dist/types/components/List/components/Table/components/Row.d.ts +13 -0
- package/dist/types/components/List/hooks/useLatestOnAction.d.ts +7 -0
- package/dist/types/components/List/model/item/ItemView.d.ts +34 -11
- package/dist/types/components/List/model/table/TableRow.d.ts +14 -0
- package/dist/types/components/List/model/table/types.d.ts +17 -1
- package/dist/types/components/List/typedList.d.ts +1 -0
- package/dist/types/components/Markdown/lib/isExternalHref.d.ts +1 -0
- package/dist/types/components/ProgressBar/ProgressBar.d.ts +1 -4
- package/dist/types/components/Rating/Rating.d.ts +5 -5
- package/dist/types/components/Section/context.d.ts +28 -0
- package/dist/types/lib/theming/hooks/useDesignTokens.d.ts +6 -0
- package/package.json +12 -12
package/AGENTS.md
CHANGED
|
@@ -333,6 +333,28 @@ if ("action" in props) {
|
|
|
333
333
|
| `*.test.ts(x)` (unit) | Pure logic in `src/lib/` or component utility functions. |
|
|
334
334
|
| `*.test-types.tsx` | Generic/typed public APIs — `expectTypeOf` plus `@ts-expect-error` negative assertions. |
|
|
335
335
|
|
|
336
|
+
A bug fix gets a regression test when it changes behavior this table covers, or
|
|
337
|
+
rendered output the visual suite covers
|
|
338
|
+
(`packages/remote-react-components/src/tests/visual`, see Definition of Done
|
|
339
|
+
item 4 in the
|
|
340
|
+
[root AGENTS.md](https://github.com/mittwald/flow/blob/main/AGENTS.md#definition-of-done--component-work))
|
|
341
|
+
— not by default. Leave out:
|
|
342
|
+
|
|
343
|
+
- **Wiring of a single prop** — "the consumer `className` reaches the root",
|
|
344
|
+
"`aria-label` is forwarded". A test for one prop is arbitrary: every other
|
|
345
|
+
prop would need the same. A whole class of wiring bugs (`className` merge
|
|
346
|
+
order, a props spread) belongs in a lint rule or a shared contract helper like
|
|
347
|
+
`testFormFieldContract`.
|
|
348
|
+
- **A spy on a function prop the component consumes** — `sortBy`, `filterBy`, a
|
|
349
|
+
formatter. Assert the result it produces, not that it ran. `on*` event props
|
|
350
|
+
are the exception: the call is what the consumer observes, so a spy is the
|
|
351
|
+
assertion.
|
|
352
|
+
- **Tests that pass without the fix.** Revert the fix and watch the test fail
|
|
353
|
+
before committing it. If it cannot fail, it guards nothing; say in the PR how
|
|
354
|
+
you verified the fix instead. The `optimizeDeps` entry under
|
|
355
|
+
[Common failures](#common-failures) below shows one way a test passes in both
|
|
356
|
+
directions.
|
|
357
|
+
|
|
336
358
|
Run: `pnpm nx test:unit components`,
|
|
337
359
|
`pnpm nx test:browser components --browser.name=webkit`. The browser targets
|
|
338
360
|
install the Playwright browsers for you **locally**; `pnpm test:browser:prepare`
|
|
@@ -638,3 +660,102 @@ Easy-to-miss conventions not spelled out above. Full details and examples in
|
|
|
638
660
|
- **Universal exports are deliberately explicit** — remote-safe values and their
|
|
639
661
|
types are curated in `flr-universal.ts` independently of the main public
|
|
640
662
|
surface; adding to `public.ts` does not add them there.
|
|
663
|
+
|
|
664
|
+
## Common failures
|
|
665
|
+
|
|
666
|
+
Symptom → cause → fix for authoring components. Repo-wide ones are in the
|
|
667
|
+
[root AGENTS.md](https://github.com/mittwald/flow/blob/main/AGENTS.md#common-failures).
|
|
668
|
+
|
|
669
|
+
- **Symptom:** `test:compile` fails on a new component — the
|
|
670
|
+
`flowComponent("X", …)` name/props type isn't assignable
|
|
671
|
+
|
|
672
|
+
**Cause:** `flowComponent` names are typed as `keyof` a hand-maintained props
|
|
673
|
+
registry
|
|
674
|
+
|
|
675
|
+
**Fix:** Register the props type in
|
|
676
|
+
`packages/components/src/components/propTypes/index.ts` (see
|
|
677
|
+
[The flowComponent factory](#the-flowcomponent-factory))
|
|
678
|
+
|
|
679
|
+
- **Symptom:** `test:compile` fails in unrelated shared code with
|
|
680
|
+
**`Property 'children' does not exist on type 'Partial<XProps>'`** right after
|
|
681
|
+
you registered a new component
|
|
682
|
+
|
|
683
|
+
**Cause:** `dynamic()` and other shared helpers are typed over the **union of
|
|
684
|
+
every** registered props type, so code reading `p.children` breaks as soon as
|
|
685
|
+
one registered component has no `children` (`Field.tsx`,
|
|
686
|
+
`flowComponent.browser.test.tsx`)
|
|
687
|
+
|
|
688
|
+
**Fix:** Declare `children?: never` on the new props type. It keeps the union
|
|
689
|
+
accessible and documents that the component takes no children — do **not** add
|
|
690
|
+
a real `children` slot you then ignore
|
|
691
|
+
|
|
692
|
+
- **Symptom:** A `ReactElement`-valued prop renders fine in the visual suite's
|
|
693
|
+
**Remote** environment but kills a real remote connection with
|
|
694
|
+
**`DataCloneError: Symbol(react.transitional.element) could not be cloned`**
|
|
695
|
+
(the host then shows `Remote rendering failed: Timeout reached`)
|
|
696
|
+
|
|
697
|
+
**Cause:** The prop was generated as a **remote property**, and properties
|
|
698
|
+
travel through `postMessage`/structured clone, which cannot carry a React
|
|
699
|
+
element. `remote-dom-react` turns an element-valued prop into a slotted child
|
|
700
|
+
_only_ when the element declares it as a slot
|
|
701
|
+
(`Element.remoteSlotDefinitions.has(prop)`), and the generator declares a slot
|
|
702
|
+
only for props typed exactly `ReactNode` or listed in `@flr-slot-props`
|
|
703
|
+
(`dev/remote-components-generator/lib/propClassifiers.ts`)
|
|
704
|
+
|
|
705
|
+
**Fix:** Add `@flr-slot-props <propA>, <propB>` to the component's JSDoc and
|
|
706
|
+
regenerate — the prop then arrives as a slotted child and any React subtree
|
|
707
|
+
works, including a raw `<svg>` or a Tabler icon. The visual suite's **Remote**
|
|
708
|
+
environment does serialize (a MessageChannel through
|
|
709
|
+
`FlowThreadSerialization`), but `FlowThreadSerialization` drops React values
|
|
710
|
+
to `null` with a `console.error` before `postMessage` ever sees them — so the
|
|
711
|
+
suite renders a component missing the prop, not the `DataCloneError`. Read the
|
|
712
|
+
console, or verify in `apps/remote-dom-demo` over the iframe connection
|
|
713
|
+
|
|
714
|
+
- **Symptom:** A function prop works locally but its result is garbage remotely
|
|
715
|
+
— a formatter renders `[object Promise]`, a predicate is always truthy
|
|
716
|
+
|
|
717
|
+
**Cause:** The prop is a **remote property**, and
|
|
718
|
+
`FlowThreadSerialization.isSerializableByBase` accepts any function, so
|
|
719
|
+
`@quilted/threads` sends it as a proxy. Calling a proxy is a round trip, so
|
|
720
|
+
the host gets a **Promise**, never the value. Only `on*` events are safe by
|
|
721
|
+
construction — they are fire-and-forget
|
|
722
|
+
|
|
723
|
+
**Fix:** Either type the prop's return as `Promise<T> | T` and have the host
|
|
724
|
+
`await` it (`ChartTooltip`'s formatters do), or drop it from the remote
|
|
725
|
+
surface with `@flr-ignore-props` (`XAxis`/`YAxis` `tickFormatter` do) and
|
|
726
|
+
regenerate. `checkSerializableProps` now fails generation on new ones; the
|
|
727
|
+
pre-existing set is listed in `acknowledgedValueReturningProps`
|
|
728
|
+
|
|
729
|
+
- **Symptom:** A `components` browser test keeps **passing** after you change
|
|
730
|
+
`packages/icons` — including a test written to fail on exactly that change.
|
|
731
|
+
The build is not the problem: `pnpm nx build icons` runs `tsc` and `dist`
|
|
732
|
+
holds the new code
|
|
733
|
+
|
|
734
|
+
**Cause:** `packages/components/vite.config.ts` lists `@mittwald/flow-icons`
|
|
735
|
+
in `optimizeDeps.include`, so vite pre-bundles it. The prebundle is keyed on
|
|
736
|
+
the lockfile and the config, not on the contents of a linked workspace
|
|
737
|
+
package's `dist` — so a rebuilt `dist` does not invalidate it and the test
|
|
738
|
+
keeps loading the old bundle
|
|
739
|
+
|
|
740
|
+
**Fix:** Delete `packages/components/node_modules/.vite*` after rebuilding.
|
|
741
|
+
And confirm a new regression test actually fails without its fix: this one
|
|
742
|
+
passed in both directions, which is the only symptom you get
|
|
743
|
+
|
|
744
|
+
- **Symptom:** `stylelint` fails with **`flow/no-unknown-global-flow-class`** —
|
|
745
|
+
a `:global(.flow--…)` name resolves to nothing
|
|
746
|
+
|
|
747
|
+
**Cause:** The class-name generator
|
|
748
|
+
(`packages/components/dev/vite/cssModuleClassNameGenerator.ts`) **drops the
|
|
749
|
+
suffix when it equals the component name**, so `ColumnLayout`'s
|
|
750
|
+
`.columnLayout` compiles to `flow--column-layout`, not
|
|
751
|
+
`flow--column-layout--column-layout`. The names cannot be derived by hand, and
|
|
752
|
+
a component that moves leaves every reference to it dead
|
|
753
|
+
|
|
754
|
+
**Fix:** Copy the name from the component's committed `*.module.d.scss.ts` —
|
|
755
|
+
that is what the rule checks against — or take the rule's "Did you mean"
|
|
756
|
+
suggestion. Just added the class? Regenerate the stubs first:
|
|
757
|
+
`pnpm nx build:scss-types components`. The same applies to ESLint's
|
|
758
|
+
`flow/no-unknown-flow-class`, which checks hardcoded `flow--…` strings in
|
|
759
|
+
TS/TSX (#3095). Before the rule (#3091) this class of bug failed completely
|
|
760
|
+
silently: no build error, no console warning, and the docs site and Storybook
|
|
761
|
+
kept rendering
|
package/USAGE.md
CHANGED
|
@@ -32,8 +32,8 @@ Start with these:
|
|
|
32
32
|
`/raw/foundations/structure/spacing.md` — how layout and spacing are meant to
|
|
33
33
|
be composed
|
|
34
34
|
- the templates — see [Start from a template](#start-from-a-template)
|
|
35
|
-
- `/raw/foundations/content-guidelines/
|
|
36
|
-
|
|
35
|
+
- `/raw/foundations/content-guidelines/fehlermeldungen.md` — where errors appear
|
|
36
|
+
and how to word them
|
|
37
37
|
- `/raw/foundations/content-guidelines/sprach-guide.md` — UI wording
|
|
38
38
|
- `/raw/get-started/versioning.md` — what you may depend on
|
|
39
39
|
|