@multiplatform.one/components 7.8.0 → 7.11.0
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/README.md +98 -0
- package/dist/cjs/Accordion/index.cjs +3 -3
- package/dist/cjs/Accordion/index.native.js +4 -4
- package/dist/cjs/Accordion/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.cjs +1 -1
- package/dist/cjs/Chip/index.native.js +1 -1
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/ContextMenu/index.cjs +3 -3
- package/dist/cjs/ContextMenu/index.native.js +3 -3
- package/dist/cjs/ContextMenu/index.native.js.map +1 -1
- package/dist/cjs/DropdownMenu/index.cjs +3 -3
- package/dist/cjs/DropdownMenu/index.native.js +3 -3
- package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
- package/dist/cjs/Meter/index.cjs +3 -2
- package/dist/cjs/Meter/index.native.js +3 -2
- package/dist/cjs/Meter/index.native.js.map +1 -1
- package/dist/cjs/Meter/meter.cjs +1 -2
- package/dist/cjs/Meter/meter.native.js +1 -2
- package/dist/cjs/Meter/meter.native.js.map +1 -1
- package/dist/cjs/Pagination.cjs +2 -2
- package/dist/cjs/Pagination.native.js +2 -2
- package/dist/cjs/Pagination.native.js.map +1 -1
- package/dist/cjs/ProgressSteps/index.cjs +3 -3
- package/dist/cjs/ProgressSteps/index.native.js +3 -3
- package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
- package/dist/cjs/Quote/index.cjs +1 -2
- package/dist/cjs/Quote/index.native.js +1 -2
- package/dist/cjs/Quote/index.native.js.map +1 -1
- package/dist/cjs/SheetModal/index.cjs +22 -3
- package/dist/cjs/SheetModal/index.native.js +50 -10
- package/dist/cjs/SheetModal/index.native.js.map +1 -1
- package/dist/cjs/Tabs/index.cjs +34 -13
- package/dist/cjs/Tabs/index.native.js +38 -13
- package/dist/cjs/Tabs/index.native.js.map +1 -1
- package/dist/cjs/Toast/index.cjs +4 -5
- package/dist/cjs/Toast/index.native.js +4 -5
- package/dist/cjs/Toast/index.native.js.map +1 -1
- package/dist/cjs/TreeSelect/index.cjs +46 -7
- package/dist/cjs/TreeSelect/index.native.js +58 -7
- package/dist/cjs/TreeSelect/index.native.js.map +1 -1
- package/dist/cjs/charts/PieChart.cjs +1 -2
- package/dist/cjs/charts/PieChart.native.js +1 -2
- package/dist/cjs/charts/PieChart.native.js.map +1 -1
- package/dist/cjs/code/HighlightedCode/index.cjs +1 -1
- package/dist/cjs/code/HighlightedCode/index.native.js +1 -1
- package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/cjs/componentColors.cjs +6 -4
- package/dist/cjs/componentColors.native.js +6 -4
- package/dist/cjs/componentColors.native.js.map +1 -1
- package/dist/cjs/images/Image/ImageFrame.cjs +4 -2
- package/dist/cjs/images/Image/ImageFrame.native.js +4 -2
- package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/cjs/layouts/AsyncBoundary.cjs +1 -2
- package/dist/cjs/layouts/AsyncBoundary.native.js +1 -2
- package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/cjs/layouts/EmptyState.cjs +6 -2
- package/dist/cjs/layouts/EmptyState.native.js +10 -6
- package/dist/cjs/layouts/EmptyState.native.js.map +1 -1
- package/dist/cjs/layouts/attachments.cjs +4 -4
- package/dist/cjs/layouts/attachments.native.js +4 -4
- package/dist/cjs/layouts/attachments.native.js.map +1 -1
- package/dist/cjs/layouts/breadcrumbs.cjs +1 -2
- package/dist/cjs/layouts/breadcrumbs.native.js +1 -2
- package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/cjs/layouts/page.cjs +2 -2
- package/dist/cjs/layouts/page.native.js +2 -2
- package/dist/cjs/layouts/page.native.js.map +1 -1
- package/dist/cjs/layouts/sidebar.cjs +2 -2
- package/dist/cjs/layouts/sidebar.native.js +2 -2
- package/dist/cjs/layouts/sidebar.native.js.map +1 -1
- package/dist/cjs/layouts/tags.cjs +6 -7
- package/dist/cjs/layouts/tags.native.js +6 -9
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/layouts/timeline.cjs +5 -5
- package/dist/cjs/layouts/timeline.native.js +5 -5
- package/dist/cjs/layouts/timeline.native.js.map +1 -1
- package/dist/cjs/surfaces.cjs +1 -0
- package/dist/cjs/surfaces.native.js +1 -0
- package/dist/cjs/surfaces.native.js.map +1 -1
- package/dist/cjs/views/Calendar.cjs +11 -8
- package/dist/cjs/views/Calendar.native.js +11 -8
- package/dist/cjs/views/Calendar.native.js.map +1 -1
- package/dist/cjs/views/Dashboard.cjs +6 -6
- package/dist/cjs/views/Dashboard.native.js +7 -7
- package/dist/cjs/views/Dashboard.native.js.map +1 -1
- package/dist/cjs/views/Gantt.cjs +3 -3
- package/dist/cjs/views/Gantt.native.js +3 -3
- package/dist/cjs/views/Gantt.native.js.map +1 -1
- package/dist/cjs/views/Kanban.cjs +2 -2
- package/dist/cjs/views/Kanban.native.js +2 -2
- package/dist/cjs/views/Kanban.native.js.map +1 -1
- package/dist/cjs/views/ReportBuilder.cjs +4 -4
- package/dist/cjs/views/ReportBuilder.native.js +4 -4
- package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
- package/dist/cjs/views/TreeView.cjs +248 -19
- package/dist/cjs/views/TreeView.native.js +264 -20
- package/dist/cjs/views/TreeView.native.js.map +1 -1
- package/dist/cjs/views/treeViewReveal.cjs +55 -0
- package/dist/cjs/views/treeViewReveal.native.js +80 -0
- package/dist/cjs/views/treeViewReveal.native.js.map +1 -0
- package/dist/esm/Accordion/index.mjs +3 -3
- package/dist/esm/Accordion/index.mjs.map +1 -1
- package/dist/esm/Accordion/index.native.js +4 -4
- package/dist/esm/Accordion/index.native.js.map +1 -1
- package/dist/esm/Chip/index.mjs +1 -1
- package/dist/esm/Chip/index.mjs.map +1 -1
- package/dist/esm/Chip/index.native.js +1 -1
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/ContextMenu/index.mjs +3 -3
- package/dist/esm/ContextMenu/index.mjs.map +1 -1
- package/dist/esm/ContextMenu/index.native.js +3 -3
- package/dist/esm/ContextMenu/index.native.js.map +1 -1
- package/dist/esm/DropdownMenu/index.mjs +3 -3
- package/dist/esm/DropdownMenu/index.mjs.map +1 -1
- package/dist/esm/DropdownMenu/index.native.js +3 -3
- package/dist/esm/DropdownMenu/index.native.js.map +1 -1
- package/dist/esm/Meter/index.mjs +3 -2
- package/dist/esm/Meter/index.mjs.map +1 -1
- package/dist/esm/Meter/index.native.js +3 -2
- package/dist/esm/Meter/index.native.js.map +1 -1
- package/dist/esm/Meter/meter.mjs +1 -2
- package/dist/esm/Meter/meter.mjs.map +1 -1
- package/dist/esm/Meter/meter.native.js +1 -2
- package/dist/esm/Meter/meter.native.js.map +1 -1
- package/dist/esm/Pagination.mjs +2 -2
- package/dist/esm/Pagination.mjs.map +1 -1
- package/dist/esm/Pagination.native.js +2 -2
- package/dist/esm/Pagination.native.js.map +1 -1
- package/dist/esm/ProgressSteps/index.mjs +3 -3
- package/dist/esm/ProgressSteps/index.mjs.map +1 -1
- package/dist/esm/ProgressSteps/index.native.js +3 -3
- package/dist/esm/ProgressSteps/index.native.js.map +1 -1
- package/dist/esm/Quote/index.mjs +1 -2
- package/dist/esm/Quote/index.mjs.map +1 -1
- package/dist/esm/Quote/index.native.js +1 -2
- package/dist/esm/Quote/index.native.js.map +1 -1
- package/dist/esm/SheetModal/index.mjs +22 -3
- package/dist/esm/SheetModal/index.mjs.map +1 -1
- package/dist/esm/SheetModal/index.native.js +51 -11
- package/dist/esm/SheetModal/index.native.js.map +1 -1
- package/dist/esm/Tabs/index.mjs +34 -13
- package/dist/esm/Tabs/index.mjs.map +1 -1
- package/dist/esm/Tabs/index.native.js +38 -13
- package/dist/esm/Tabs/index.native.js.map +1 -1
- package/dist/esm/Toast/index.mjs +4 -5
- package/dist/esm/Toast/index.mjs.map +1 -1
- package/dist/esm/Toast/index.native.js +4 -5
- package/dist/esm/Toast/index.native.js.map +1 -1
- package/dist/esm/TreeSelect/index.mjs +46 -7
- package/dist/esm/TreeSelect/index.mjs.map +1 -1
- package/dist/esm/TreeSelect/index.native.js +58 -7
- package/dist/esm/TreeSelect/index.native.js.map +1 -1
- package/dist/esm/charts/PieChart.mjs +1 -2
- package/dist/esm/charts/PieChart.mjs.map +1 -1
- package/dist/esm/charts/PieChart.native.js +1 -2
- package/dist/esm/charts/PieChart.native.js.map +1 -1
- package/dist/esm/code/HighlightedCode/index.mjs +1 -1
- package/dist/esm/code/HighlightedCode/index.mjs.map +1 -1
- package/dist/esm/code/HighlightedCode/index.native.js +1 -1
- package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/esm/componentColors.mjs +6 -4
- package/dist/esm/componentColors.mjs.map +1 -1
- package/dist/esm/componentColors.native.js +6 -4
- package/dist/esm/componentColors.native.js.map +1 -1
- package/dist/esm/images/Image/ImageFrame.mjs +4 -2
- package/dist/esm/images/Image/ImageFrame.mjs.map +1 -1
- package/dist/esm/images/Image/ImageFrame.native.js +4 -2
- package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/esm/layouts/AsyncBoundary.mjs +1 -2
- package/dist/esm/layouts/AsyncBoundary.mjs.map +1 -1
- package/dist/esm/layouts/AsyncBoundary.native.js +1 -2
- package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/esm/layouts/EmptyState.mjs +7 -3
- package/dist/esm/layouts/EmptyState.mjs.map +1 -1
- package/dist/esm/layouts/EmptyState.native.js +11 -7
- package/dist/esm/layouts/EmptyState.native.js.map +1 -1
- package/dist/esm/layouts/attachments.mjs +4 -4
- package/dist/esm/layouts/attachments.mjs.map +1 -1
- package/dist/esm/layouts/attachments.native.js +4 -4
- package/dist/esm/layouts/attachments.native.js.map +1 -1
- package/dist/esm/layouts/breadcrumbs.mjs +1 -2
- package/dist/esm/layouts/breadcrumbs.mjs.map +1 -1
- package/dist/esm/layouts/breadcrumbs.native.js +1 -2
- package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/esm/layouts/page.mjs +2 -2
- package/dist/esm/layouts/page.mjs.map +1 -1
- package/dist/esm/layouts/page.native.js +2 -2
- package/dist/esm/layouts/page.native.js.map +1 -1
- package/dist/esm/layouts/sidebar.mjs +2 -2
- package/dist/esm/layouts/sidebar.mjs.map +1 -1
- package/dist/esm/layouts/sidebar.native.js +2 -2
- package/dist/esm/layouts/sidebar.native.js.map +1 -1
- package/dist/esm/layouts/tags.mjs +6 -7
- package/dist/esm/layouts/tags.mjs.map +1 -1
- package/dist/esm/layouts/tags.native.js +6 -9
- package/dist/esm/layouts/tags.native.js.map +1 -1
- package/dist/esm/layouts/timeline.mjs +5 -5
- package/dist/esm/layouts/timeline.mjs.map +1 -1
- package/dist/esm/layouts/timeline.native.js +5 -5
- package/dist/esm/layouts/timeline.native.js.map +1 -1
- package/dist/esm/surfaces.mjs +1 -0
- package/dist/esm/surfaces.mjs.map +1 -1
- package/dist/esm/surfaces.native.js +1 -0
- package/dist/esm/surfaces.native.js.map +1 -1
- package/dist/esm/views/Calendar.mjs +11 -8
- package/dist/esm/views/Calendar.mjs.map +1 -1
- package/dist/esm/views/Calendar.native.js +11 -8
- package/dist/esm/views/Calendar.native.js.map +1 -1
- package/dist/esm/views/Dashboard.mjs +6 -6
- package/dist/esm/views/Dashboard.mjs.map +1 -1
- package/dist/esm/views/Dashboard.native.js +7 -7
- package/dist/esm/views/Dashboard.native.js.map +1 -1
- package/dist/esm/views/Gantt.mjs +3 -3
- package/dist/esm/views/Gantt.mjs.map +1 -1
- package/dist/esm/views/Gantt.native.js +3 -3
- package/dist/esm/views/Gantt.native.js.map +1 -1
- package/dist/esm/views/Kanban.mjs +2 -2
- package/dist/esm/views/Kanban.mjs.map +1 -1
- package/dist/esm/views/Kanban.native.js +2 -2
- package/dist/esm/views/Kanban.native.js.map +1 -1
- package/dist/esm/views/ReportBuilder.mjs +4 -4
- package/dist/esm/views/ReportBuilder.mjs.map +1 -1
- package/dist/esm/views/ReportBuilder.native.js +4 -4
- package/dist/esm/views/ReportBuilder.native.js.map +1 -1
- package/dist/esm/views/TreeView.mjs +249 -20
- package/dist/esm/views/TreeView.mjs.map +1 -1
- package/dist/esm/views/TreeView.native.js +265 -21
- package/dist/esm/views/TreeView.native.js.map +1 -1
- package/dist/esm/views/treeViewReveal.mjs +29 -0
- package/dist/esm/views/treeViewReveal.mjs.map +1 -0
- package/dist/esm/views/treeViewReveal.native.js +51 -0
- package/dist/esm/views/treeViewReveal.native.js.map +1 -0
- package/dist/jsx/Accordion/index.mjs +3 -3
- package/dist/jsx/Accordion/index.mjs.map +1 -1
- package/dist/jsx/Accordion/index.native.js +4 -4
- package/dist/jsx/Accordion/index.native.js.map +1 -1
- package/dist/jsx/Chip/index.mjs +1 -1
- package/dist/jsx/Chip/index.mjs.map +1 -1
- package/dist/jsx/Chip/index.native.js +1 -1
- package/dist/jsx/Chip/index.native.js.map +1 -1
- package/dist/jsx/ContextMenu/index.mjs +3 -3
- package/dist/jsx/ContextMenu/index.mjs.map +1 -1
- package/dist/jsx/ContextMenu/index.native.js +3 -3
- package/dist/jsx/ContextMenu/index.native.js.map +1 -1
- package/dist/jsx/DropdownMenu/index.mjs +3 -3
- package/dist/jsx/DropdownMenu/index.mjs.map +1 -1
- package/dist/jsx/DropdownMenu/index.native.js +3 -3
- package/dist/jsx/DropdownMenu/index.native.js.map +1 -1
- package/dist/jsx/Meter/index.mjs +3 -2
- package/dist/jsx/Meter/index.mjs.map +1 -1
- package/dist/jsx/Meter/index.native.js +3 -2
- package/dist/jsx/Meter/index.native.js.map +1 -1
- package/dist/jsx/Meter/meter.mjs +1 -2
- package/dist/jsx/Meter/meter.mjs.map +1 -1
- package/dist/jsx/Meter/meter.native.js +1 -2
- package/dist/jsx/Meter/meter.native.js.map +1 -1
- package/dist/jsx/Pagination.mjs +2 -2
- package/dist/jsx/Pagination.mjs.map +1 -1
- package/dist/jsx/Pagination.native.js +2 -2
- package/dist/jsx/Pagination.native.js.map +1 -1
- package/dist/jsx/ProgressSteps/index.mjs +3 -3
- package/dist/jsx/ProgressSteps/index.mjs.map +1 -1
- package/dist/jsx/ProgressSteps/index.native.js +3 -3
- package/dist/jsx/ProgressSteps/index.native.js.map +1 -1
- package/dist/jsx/Quote/index.mjs +1 -2
- package/dist/jsx/Quote/index.mjs.map +1 -1
- package/dist/jsx/Quote/index.native.js +1 -2
- package/dist/jsx/Quote/index.native.js.map +1 -1
- package/dist/jsx/SheetModal/index.mjs +22 -3
- package/dist/jsx/SheetModal/index.mjs.map +1 -1
- package/dist/jsx/SheetModal/index.native.js +50 -10
- package/dist/jsx/SheetModal/index.native.js.map +1 -1
- package/dist/jsx/Tabs/index.mjs +34 -13
- package/dist/jsx/Tabs/index.mjs.map +1 -1
- package/dist/jsx/Tabs/index.native.js +38 -13
- package/dist/jsx/Tabs/index.native.js.map +1 -1
- package/dist/jsx/Toast/index.mjs +4 -5
- package/dist/jsx/Toast/index.mjs.map +1 -1
- package/dist/jsx/Toast/index.native.js +4 -5
- package/dist/jsx/Toast/index.native.js.map +1 -1
- package/dist/jsx/TreeSelect/index.mjs +46 -7
- package/dist/jsx/TreeSelect/index.mjs.map +1 -1
- package/dist/jsx/TreeSelect/index.native.js +58 -7
- package/dist/jsx/TreeSelect/index.native.js.map +1 -1
- package/dist/jsx/charts/PieChart.mjs +1 -2
- package/dist/jsx/charts/PieChart.mjs.map +1 -1
- package/dist/jsx/charts/PieChart.native.js +1 -2
- package/dist/jsx/charts/PieChart.native.js.map +1 -1
- package/dist/jsx/code/HighlightedCode/index.mjs +1 -1
- package/dist/jsx/code/HighlightedCode/index.mjs.map +1 -1
- package/dist/jsx/code/HighlightedCode/index.native.js +1 -1
- package/dist/jsx/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/jsx/componentColors.mjs +6 -4
- package/dist/jsx/componentColors.mjs.map +1 -1
- package/dist/jsx/componentColors.native.js +6 -4
- package/dist/jsx/componentColors.native.js.map +1 -1
- package/dist/jsx/images/Image/ImageFrame.mjs +4 -2
- package/dist/jsx/images/Image/ImageFrame.mjs.map +1 -1
- package/dist/jsx/images/Image/ImageFrame.native.js +4 -2
- package/dist/jsx/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/jsx/layouts/AsyncBoundary.mjs +1 -2
- package/dist/jsx/layouts/AsyncBoundary.mjs.map +1 -1
- package/dist/jsx/layouts/AsyncBoundary.native.js +1 -2
- package/dist/jsx/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/jsx/layouts/EmptyState.mjs +7 -3
- package/dist/jsx/layouts/EmptyState.mjs.map +1 -1
- package/dist/jsx/layouts/EmptyState.native.js +10 -6
- package/dist/jsx/layouts/EmptyState.native.js.map +1 -1
- package/dist/jsx/layouts/attachments.mjs +4 -4
- package/dist/jsx/layouts/attachments.mjs.map +1 -1
- package/dist/jsx/layouts/attachments.native.js +4 -4
- package/dist/jsx/layouts/attachments.native.js.map +1 -1
- package/dist/jsx/layouts/breadcrumbs.mjs +1 -2
- package/dist/jsx/layouts/breadcrumbs.mjs.map +1 -1
- package/dist/jsx/layouts/breadcrumbs.native.js +1 -2
- package/dist/jsx/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/jsx/layouts/page.mjs +2 -2
- package/dist/jsx/layouts/page.mjs.map +1 -1
- package/dist/jsx/layouts/page.native.js +2 -2
- package/dist/jsx/layouts/page.native.js.map +1 -1
- package/dist/jsx/layouts/sidebar.mjs +2 -2
- package/dist/jsx/layouts/sidebar.mjs.map +1 -1
- package/dist/jsx/layouts/sidebar.native.js +2 -2
- package/dist/jsx/layouts/sidebar.native.js.map +1 -1
- package/dist/jsx/layouts/tags.mjs +6 -7
- package/dist/jsx/layouts/tags.mjs.map +1 -1
- package/dist/jsx/layouts/tags.native.js +6 -9
- package/dist/jsx/layouts/tags.native.js.map +1 -1
- package/dist/jsx/layouts/timeline.mjs +5 -5
- package/dist/jsx/layouts/timeline.mjs.map +1 -1
- package/dist/jsx/layouts/timeline.native.js +5 -5
- package/dist/jsx/layouts/timeline.native.js.map +1 -1
- package/dist/jsx/surfaces.mjs +1 -0
- package/dist/jsx/surfaces.mjs.map +1 -1
- package/dist/jsx/surfaces.native.js +1 -0
- package/dist/jsx/surfaces.native.js.map +1 -1
- package/dist/jsx/views/Calendar.mjs +11 -8
- package/dist/jsx/views/Calendar.mjs.map +1 -1
- package/dist/jsx/views/Calendar.native.js +11 -8
- package/dist/jsx/views/Calendar.native.js.map +1 -1
- package/dist/jsx/views/Dashboard.mjs +6 -6
- package/dist/jsx/views/Dashboard.mjs.map +1 -1
- package/dist/jsx/views/Dashboard.native.js +7 -7
- package/dist/jsx/views/Dashboard.native.js.map +1 -1
- package/dist/jsx/views/Gantt.mjs +3 -3
- package/dist/jsx/views/Gantt.mjs.map +1 -1
- package/dist/jsx/views/Gantt.native.js +3 -3
- package/dist/jsx/views/Gantt.native.js.map +1 -1
- package/dist/jsx/views/Kanban.mjs +2 -2
- package/dist/jsx/views/Kanban.mjs.map +1 -1
- package/dist/jsx/views/Kanban.native.js +2 -2
- package/dist/jsx/views/Kanban.native.js.map +1 -1
- package/dist/jsx/views/ReportBuilder.mjs +4 -4
- package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
- package/dist/jsx/views/ReportBuilder.native.js +4 -4
- package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
- package/dist/jsx/views/TreeView.mjs +249 -20
- package/dist/jsx/views/TreeView.mjs.map +1 -1
- package/dist/jsx/views/TreeView.native.js +264 -20
- package/dist/jsx/views/TreeView.native.js.map +1 -1
- package/dist/jsx/views/treeViewReveal.mjs +29 -0
- package/dist/jsx/views/treeViewReveal.mjs.map +1 -0
- package/dist/jsx/views/treeViewReveal.native.js +80 -0
- package/dist/jsx/views/treeViewReveal.native.js.map +1 -0
- package/package.json +11 -11
- package/src/Accordion/index.tsx +4 -6
- package/src/Chip/index.tsx +1 -1
- package/src/ContextMenu/index.tsx +3 -3
- package/src/DropdownMenu/index.tsx +3 -3
- package/src/Meter/Meter.spec.tsx +12 -4
- package/src/Meter/index.tsx +3 -2
- package/src/Meter/meter.ts +6 -1
- package/src/Pagination.tsx +2 -2
- package/src/ProgressSteps/index.tsx +3 -3
- package/src/Quote/index.tsx +1 -3
- package/src/SheetModal/SheetModal.fill.spec.tsx +147 -0
- package/src/SheetModal/SheetModal.ownedBody.spec.tsx +200 -0
- package/src/SheetModal/SheetModal.stories.spec.tsx +23 -2
- package/src/SheetModal/SheetModal.stories.tsx +275 -2
- package/src/SheetModal/index.native.tsx +50 -6
- package/src/SheetModal/index.tsx +40 -3
- package/src/Tabs/Tabs.lifecycle.spec.tsx +123 -0
- package/src/Tabs/Tabs.measurement.spec.tsx +186 -0
- package/src/Tabs/Tabs.stories.tsx +43 -0
- package/src/Tabs/index.tsx +44 -15
- package/src/Toast/Toast.spec.tsx +120 -48
- package/src/Toast/index.tsx +5 -3
- package/src/TreeSelect/index.tsx +61 -1
- package/src/charts/PieChart.tsx +1 -2
- package/src/code/HighlightedCode/index.tsx +1 -1
- package/src/componentColors.ts +6 -4
- package/src/images/Image/ImageFrame.tsx +2 -2
- package/src/layouts/AsyncBoundary.tsx +1 -2
- package/src/layouts/EmptyState.spec.tsx +58 -1
- package/src/layouts/EmptyState.tsx +11 -7
- package/src/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.tsx +3 -3
- package/src/layouts/PaneScaffold.stories.tsx +3 -8
- package/src/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.tsx +3 -3
- package/src/layouts/attachments.tsx +4 -4
- package/src/layouts/breadcrumbs.tsx +1 -2
- package/src/layouts/page.tsx +2 -2
- package/src/layouts/sidebar.tsx +2 -2
- package/src/layouts/tags-trigger.spec.tsx +32 -0
- package/src/layouts/tags.tsx +7 -9
- package/src/layouts/timeline.tsx +5 -5
- package/src/surfaces.spec.tsx +97 -3
- package/src/surfaces.tsx +4 -2
- package/src/textAccentSecondary.spec.tsx +187 -0
- package/src/views/Calendar.tsx +9 -8
- package/src/views/Dashboard.tsx +13 -8
- package/src/views/Gantt.tsx +3 -3
- package/src/views/Kanban.native.tsx +2 -2
- package/src/views/Kanban.tsx +2 -2
- package/src/views/ReportBuilder.tsx +4 -4
- package/src/views/TreeView.reveal.spec.tsx +174 -0
- package/src/views/TreeView.reveal.stories.tsx +249 -0
- package/src/views/TreeView.scroll-index.spec.tsx +246 -0
- package/src/views/TreeView.scroll.spec.tsx +857 -0
- package/src/views/TreeView.spec.tsx +1 -1
- package/src/views/TreeView.tsx +353 -29
- package/src/views/treeViewReveal.spec.ts +83 -0
- package/src/views/treeViewReveal.ts +45 -0
- package/src/views/views.spec.tsx +13 -12
- package/types/Accordion/index.d.ts.map +1 -1
- package/types/Meter/index.d.ts.map +1 -1
- package/types/Meter/meter.d.ts +5 -1
- package/types/Meter/meter.d.ts.map +1 -1
- package/types/Quote/index.d.ts.map +1 -1
- package/types/SheetModal/index.d.ts +8 -1
- package/types/SheetModal/index.d.ts.map +1 -1
- package/types/SheetModal/index.native.d.ts +1 -1
- package/types/SheetModal/index.native.d.ts.map +1 -1
- package/types/Tabs/index.d.ts.map +1 -1
- package/types/Toast/index.d.ts.map +1 -1
- package/types/TreeSelect/index.d.ts +9 -1
- package/types/TreeSelect/index.d.ts.map +1 -1
- package/types/charts/PieChart.d.ts.map +1 -1
- package/types/componentColors.d.ts +1 -4
- package/types/componentColors.d.ts.map +1 -1
- package/types/images/Image/ImageFrame.d.ts.map +1 -1
- package/types/layouts/AsyncBoundary.d.ts.map +1 -1
- package/types/layouts/EmptyState.d.ts.map +1 -1
- package/types/layouts/breadcrumbs.d.ts.map +1 -1
- package/types/layouts/tags.d.ts.map +1 -1
- package/types/surfaces.d.ts.map +1 -1
- package/types/views/Calendar.d.ts.map +1 -1
- package/types/views/Dashboard.d.ts +7 -3
- package/types/views/Dashboard.d.ts.map +1 -1
- package/types/views/TreeView.d.ts +19 -1
- package/types/views/TreeView.d.ts.map +1 -1
- package/types/views/treeViewReveal.d.ts +11 -0
- package/types/views/treeViewReveal.d.ts.map +1 -0
|
@@ -206,7 +206,7 @@ export function ProgressSteps({
|
|
|
206
206
|
const markerBorder = kind === "upcoming" ? componentColors.indicator.track : markerBg;
|
|
207
207
|
const markerFg =
|
|
208
208
|
kind === "upcoming"
|
|
209
|
-
?
|
|
209
|
+
? knobProps.textAccentColor
|
|
210
210
|
: kind === "error"
|
|
211
211
|
? (onError ?? "$color1")
|
|
212
212
|
: kind === "completed"
|
|
@@ -293,7 +293,7 @@ export function ProgressSteps({
|
|
|
293
293
|
kind === "error"
|
|
294
294
|
? "$red11"
|
|
295
295
|
: state === "upcoming"
|
|
296
|
-
?
|
|
296
|
+
? knobProps.textAccentColor
|
|
297
297
|
: componentColors.text.primary
|
|
298
298
|
}
|
|
299
299
|
textAlign={horizontal ? "center" : undefined}
|
|
@@ -305,7 +305,7 @@ export function ProgressSteps({
|
|
|
305
305
|
<SizableText
|
|
306
306
|
{...knobProps.body}
|
|
307
307
|
fontSize="$1"
|
|
308
|
-
color={kind === "error" ? "$red11" :
|
|
308
|
+
color={kind === "error" ? "$red11" : knobProps.textAccentColor}
|
|
309
309
|
textAlign={horizontal ? "center" : undefined}
|
|
310
310
|
numberOfLines={2}
|
|
311
311
|
>
|
package/src/Quote/index.tsx
CHANGED
|
@@ -66,8 +66,6 @@ export function Quote({ children, cite, compact, ...props }: QuoteProps) {
|
|
|
66
66
|
compact === undefined ? { component: "Quote" } : { component: "Quote", compact },
|
|
67
67
|
);
|
|
68
68
|
const railWidth = quoteRailWidth(knobProps.borderRadius.borderWidth);
|
|
69
|
-
const citeColor =
|
|
70
|
-
knobProps.textAccentColor === "$color" ? componentColors.text.muted : knobProps.textAccentColor;
|
|
71
69
|
|
|
72
70
|
return (
|
|
73
71
|
<QuoteFrame
|
|
@@ -106,7 +104,7 @@ export function Quote({ children, cite, compact, ...props }: QuoteProps) {
|
|
|
106
104
|
key={key}
|
|
107
105
|
render="cite"
|
|
108
106
|
{...knobProps.label}
|
|
109
|
-
color={
|
|
107
|
+
color={knobProps.textAccentColor}
|
|
110
108
|
fontStyle="normal"
|
|
111
109
|
>
|
|
112
110
|
— {label}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MPO-299 phase 2 — the `fill` sizing contract.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 measured the failure on device: a consumer-owned flexible body
|
|
5
|
+
* inside the native sheet was delivered height 0, so a viewport that mounts
|
|
6
|
+
* on its measurement mounted nothing, while a sibling with a declared 240pt
|
|
7
|
+
* height got the space it asked for. `fill` opts into the sheet's existing
|
|
8
|
+
* keyboard-aware cap as a DEFINITE height and opens every link between the
|
|
9
|
+
* frame and the body, so the owned viewport has something to bootstrap from.
|
|
10
|
+
*
|
|
11
|
+
* These are composition checks, not Yoga geometry: happy-dom lays nothing
|
|
12
|
+
* out. A missing intermediate link has to fail here, because opening only
|
|
13
|
+
* the outer frame reproduces the measured zero. Device acceptance is the
|
|
14
|
+
* parent's, on a real run.
|
|
15
|
+
*/
|
|
16
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
17
|
+
import { cleanup } from "@testing-library/react";
|
|
18
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
19
|
+
import { Text } from "tamagui";
|
|
20
|
+
import { SheetModal as WebSheetModal, type SheetModalProps } from "./index";
|
|
21
|
+
import { SheetModal as NativeSheetModal } from "./index.native";
|
|
22
|
+
|
|
23
|
+
vi.mock("react-native-web", async (importOriginal) => ({
|
|
24
|
+
...(await importOriginal<typeof import("react-native")>()),
|
|
25
|
+
ActionSheetIOS: undefined,
|
|
26
|
+
Modal: ({ children }: { children: import("react").ReactNode }) => children,
|
|
27
|
+
}));
|
|
28
|
+
|
|
29
|
+
afterEach(cleanup);
|
|
30
|
+
|
|
31
|
+
/** Tamagui emits atomic classes; `flex: 1` is grow+shrink+basis together. */
|
|
32
|
+
const flexOne = ["_fg-1", "_fs-1", "_fb-0px"];
|
|
33
|
+
const minZero = "_mih-0px";
|
|
34
|
+
|
|
35
|
+
function classes(element: HTMLElement) {
|
|
36
|
+
return element.className.split(/\s+/);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function renderNative(props: Partial<SheetModalProps> = {}) {
|
|
40
|
+
return renderWithProviders(
|
|
41
|
+
<NativeSheetModal open onOpenChange={() => {}} header={<Text>Move to project</Text>} {...props}>
|
|
42
|
+
<Text>row</Text>
|
|
43
|
+
</NativeSheetModal>,
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
describe("native fill allocates the sheet body", () => {
|
|
48
|
+
it("turns the existing cap into a definite frame height only when filling", () => {
|
|
49
|
+
const filled = renderNative({ fill: true }).getByTestId("sheet-modal-frame");
|
|
50
|
+
expect(filled.style.height).not.toBe("");
|
|
51
|
+
expect(filled.style.height).toBe(filled.style.maxHeight);
|
|
52
|
+
cleanup();
|
|
53
|
+
const intrinsic = renderNative().getByTestId("sheet-modal-frame");
|
|
54
|
+
expect(intrinsic.style.height).toBe("");
|
|
55
|
+
expect(intrinsic.style.maxHeight).not.toBe("");
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("opens every link between the frame and the body, not just the outer one", () => {
|
|
59
|
+
const view = renderNative({ fill: true });
|
|
60
|
+
for (const id of ["sheet-modal-surface", "sheet-modal-content"]) {
|
|
61
|
+
const link = classes(view.getByTestId(id));
|
|
62
|
+
expect(link, `${id} grows`).toEqual(expect.arrayContaining(flexOne));
|
|
63
|
+
expect(link, `${id} can collapse`).toContain(minZero);
|
|
64
|
+
}
|
|
65
|
+
const body = view.getByTestId("sheet-modal-body");
|
|
66
|
+
expect(body.style.flexGrow).toBe("1");
|
|
67
|
+
expect(body.style.minHeight).toBe("0px");
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it("leaves the default branch intrinsic, and false is the same as absent", () => {
|
|
71
|
+
for (const props of [{}, { fill: false }]) {
|
|
72
|
+
const view = renderNative(props);
|
|
73
|
+
expect(view.queryByTestId("sheet-modal-body")).toBeNull();
|
|
74
|
+
expect(classes(view.getByTestId("sheet-modal-surface"))).not.toContain("_fg-1");
|
|
75
|
+
expect(classes(view.getByTestId("sheet-modal-content"))).not.toContain("_fg-1");
|
|
76
|
+
cleanup();
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it("keeps the grabber and header out of the flexible body", () => {
|
|
81
|
+
const view = renderNative({ fill: true });
|
|
82
|
+
const body = view.getByTestId("sheet-modal-body");
|
|
83
|
+
const grabber = view.getByTestId("sheet-modal-grabber");
|
|
84
|
+
expect(grabber.style.flexShrink).toBe("0");
|
|
85
|
+
expect(body.contains(grabber)).toBe(false);
|
|
86
|
+
const header = view.getByText("Move to project");
|
|
87
|
+
expect(body.contains(header)).toBe(false);
|
|
88
|
+
expect(view.getByTestId("sheet-modal-content").contains(body)).toBe(true);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it("adds no scroll owner when the consumer keeps scrolling, and exactly one when it does not", () => {
|
|
92
|
+
expect(renderNative({ fill: true }).queryAllByTestId("sheet-modal-scroll")).toHaveLength(0);
|
|
93
|
+
cleanup();
|
|
94
|
+
const scrollers = renderNative({ fill: true, scrollable: true }).getAllByTestId(
|
|
95
|
+
"sheet-modal-scroll",
|
|
96
|
+
);
|
|
97
|
+
expect(scrollers).toHaveLength(1);
|
|
98
|
+
expect(scrollers[0].style.flexGrow).toBe("1");
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it("keeps the content-sized scroller on the default branch", () => {
|
|
102
|
+
const scroller = renderNative({ scrollable: true }).getByTestId("sheet-modal-scroll");
|
|
103
|
+
expect(scroller.style.flexGrow).toBe("0");
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
/*
|
|
108
|
+
* Web already gets a definite percent height from the Sheet's snap point, so
|
|
109
|
+
* fill only has to open the body chain inside it. tamagui renders the sheet
|
|
110
|
+
* through a portal AND inline, so every query here is plural on purpose.
|
|
111
|
+
*/
|
|
112
|
+
function renderWeb(props: Partial<SheetModalProps> = {}) {
|
|
113
|
+
return renderWithProviders(
|
|
114
|
+
<WebSheetModal open onOpenChange={() => {}} header={<Text>Move to project</Text>} {...props}>
|
|
115
|
+
<Text>row</Text>
|
|
116
|
+
</WebSheetModal>,
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
describe("web fill opens the body inside the snapped frame", () => {
|
|
121
|
+
it("mounts a growing body slot only when filling", () => {
|
|
122
|
+
const filled = renderWeb({ fill: true }).getAllByTestId("sheet-modal-body");
|
|
123
|
+
expect(filled.length).toBeGreaterThan(0);
|
|
124
|
+
for (const slot of filled) {
|
|
125
|
+
expect(classes(slot)).toEqual(expect.arrayContaining(flexOne));
|
|
126
|
+
expect(classes(slot)).toContain(minZero);
|
|
127
|
+
}
|
|
128
|
+
cleanup();
|
|
129
|
+
expect(renderWeb().queryAllByTestId("sheet-modal-body")).toHaveLength(0);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it("hands the body slot to the sheet scroller when the sheet owns scrolling", () => {
|
|
133
|
+
const view = renderWeb({ fill: true, scrollable: true });
|
|
134
|
+
const bodies = view.getAllByTestId("sheet-modal-body");
|
|
135
|
+
const scrollers = view.getAllByTestId("sheet-modal-scroll");
|
|
136
|
+
expect(scrollers.length).toBe(bodies.length);
|
|
137
|
+
for (const body of bodies) {
|
|
138
|
+
expect(body.querySelectorAll('[data-testid="sheet-modal-scroll"]')).toHaveLength(1);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it("keeps one scroll owner and no body slot on the default branch", () => {
|
|
143
|
+
const view = renderWeb({ scrollable: true });
|
|
144
|
+
expect(view.queryAllByTestId("sheet-modal-body")).toHaveLength(0);
|
|
145
|
+
expect(view.getAllByTestId("sheet-modal-scroll").length).toBeGreaterThan(0);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
2
|
+
import { act, cleanup, fireEvent } from "@testing-library/react";
|
|
3
|
+
import { afterEach, expect, it, vi } from "vitest";
|
|
4
|
+
import * as stories from "./SheetModal.stories";
|
|
5
|
+
|
|
6
|
+
const hosts = vi.hoisted(() => ({
|
|
7
|
+
props: new Map<string, Record<string, any>>(),
|
|
8
|
+
measurements: [] as Array<{ id: string; callback: (...bounds: number[]) => void }>,
|
|
9
|
+
}));
|
|
10
|
+
vi.mock("@multiplatform.one/components", async (importOriginal) => {
|
|
11
|
+
const actual = await importOriginal<typeof import("@multiplatform.one/components")>();
|
|
12
|
+
const React = await import("react");
|
|
13
|
+
function observed(Component: any) {
|
|
14
|
+
return React.forwardRef((props: Record<string, any>, ref) => {
|
|
15
|
+
if (props.testID) hosts.props.set(props.testID, props);
|
|
16
|
+
React.useImperativeHandle(ref, () => {
|
|
17
|
+
const host = {
|
|
18
|
+
measureInWindow: (callback: (...bounds: number[]) => void) => {
|
|
19
|
+
hosts.measurements.push({ id: props.testID, callback });
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
return { ...host, getNativeScrollRef: () => host };
|
|
23
|
+
});
|
|
24
|
+
return (
|
|
25
|
+
<Component
|
|
26
|
+
{...props}
|
|
27
|
+
onLayout={undefined}
|
|
28
|
+
onContentSizeChange={undefined}
|
|
29
|
+
onScroll={undefined}
|
|
30
|
+
/>
|
|
31
|
+
);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
...actual,
|
|
36
|
+
YStack: observed(actual.YStack),
|
|
37
|
+
ScrollView: observed(actual.ScrollView),
|
|
38
|
+
SheetModal: (props: any) => {
|
|
39
|
+
hosts.props.set("public-sheet-modal", props);
|
|
40
|
+
return props.open ? (
|
|
41
|
+
<>
|
|
42
|
+
{props.header}
|
|
43
|
+
{props.children}
|
|
44
|
+
</>
|
|
45
|
+
) : null;
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
afterEach(() => {
|
|
50
|
+
cleanup();
|
|
51
|
+
hosts.props.clear();
|
|
52
|
+
hosts.measurements = [];
|
|
53
|
+
});
|
|
54
|
+
function sheetProps() {
|
|
55
|
+
return hosts.props.get("public-sheet-modal")!;
|
|
56
|
+
}
|
|
57
|
+
function renderStory(name: "OwnedMeasuredViewport" | "OwnedScrollView") {
|
|
58
|
+
const story = (stories as Record<string, any>)[name];
|
|
59
|
+
expect(story, `${name} is a registered story`).toBeDefined();
|
|
60
|
+
return renderWithProviders(<>{story.render(story.args ?? {}, {})}</>);
|
|
61
|
+
}
|
|
62
|
+
function layout(id: string, height: number) {
|
|
63
|
+
act(() =>
|
|
64
|
+
hosts.props.get(id)!.onLayout({ nativeEvent: { layout: { x: 0, y: 44, width: 300, height } } }),
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
function readings(view: ReturnType<typeof renderStory>) {
|
|
68
|
+
return JSON.parse(view.getByTestId("owned-sheet-readings").textContent!);
|
|
69
|
+
}
|
|
70
|
+
it("keeps the measured subject unmeasured until a delivered layout and distinguishes zero", () => {
|
|
71
|
+
const view = renderStory("OwnedMeasuredViewport");
|
|
72
|
+
fireEvent.click(view.getByText("Open flex subject"));
|
|
73
|
+
expect(readings(view).viewportLayout).toBe("unmeasured");
|
|
74
|
+
expect(hosts.props.get("owned-sheet-frame")!.height).toBeUndefined();
|
|
75
|
+
expect(view.queryByText("Record 60")).toBeNull();
|
|
76
|
+
layout("owned-sheet-viewport", 0);
|
|
77
|
+
expect(readings(view).viewportLayout.height).toBe(0);
|
|
78
|
+
expect(view.queryByText("Record 60")).toBeNull();
|
|
79
|
+
layout("owned-sheet-viewport", 187.5);
|
|
80
|
+
expect(readings(view).viewportLayout.height).toBe(187.5);
|
|
81
|
+
expect(view.getByText("Record 60")).toBeDefined();
|
|
82
|
+
});
|
|
83
|
+
it("provides a named fixed control without treating its declared height as a measurement", () => {
|
|
84
|
+
const view = renderStory("OwnedMeasuredViewport");
|
|
85
|
+
fireEvent.click(view.getByText("Open 240pt control"));
|
|
86
|
+
expect(hosts.props.get("owned-sheet-frame")!.height).toBe(240);
|
|
87
|
+
expect(readings(view).mode).toBe("control-240");
|
|
88
|
+
expect(readings(view).frameLayout).toBe("unmeasured");
|
|
89
|
+
layout("owned-sheet-viewport", 192);
|
|
90
|
+
expect(view.getByText("Record 60")).toBeDefined();
|
|
91
|
+
expect(hosts.props.get("owned-sheet-scroll")).toBeDefined();
|
|
92
|
+
});
|
|
93
|
+
it("mounts the owned scroller without a measurement gate and records delivered content and offset", () => {
|
|
94
|
+
const view = renderStory("OwnedScrollView");
|
|
95
|
+
fireEvent.click(view.getByText("Open flex subject"));
|
|
96
|
+
expect(view.getByText("Record 60")).toBeDefined();
|
|
97
|
+
expect(view.getAllByText(/^Record \d+$/)).toHaveLength(60);
|
|
98
|
+
expect(readings(view).offset).toBe("unmeasured");
|
|
99
|
+
const scroll = hosts.props.get("owned-sheet-scroll")!;
|
|
100
|
+
act(() => {
|
|
101
|
+
scroll.onContentSizeChange(300, 2500.5);
|
|
102
|
+
scroll.onScroll({ nativeEvent: { contentOffset: { x: 0, y: 123.25 } } });
|
|
103
|
+
});
|
|
104
|
+
expect(readings(view).content).toEqual({ width: 300, height: 2500.5 });
|
|
105
|
+
expect(readings(view).offset).toEqual({ x: 0, y: 123.25 });
|
|
106
|
+
fireEvent.click(view.getByText("Activate Record 60"));
|
|
107
|
+
expect(readings(view).tailPresses).toBe(1);
|
|
108
|
+
});
|
|
109
|
+
it("records public window-bound callbacks and rejects callbacks from a closed presentation", () => {
|
|
110
|
+
const view = renderStory("OwnedScrollView");
|
|
111
|
+
fireEvent.click(view.getByText("Open flex subject"));
|
|
112
|
+
fireEvent.click(view.getByText("Measure bounds"));
|
|
113
|
+
const pending = [...hosts.measurements];
|
|
114
|
+
const frame = pending.find((item) => item.id === "owned-sheet-frame")!;
|
|
115
|
+
expect(frame).toBeDefined();
|
|
116
|
+
expect(pending.some((item) => item.id === "owned-sheet-scroll")).toBe(true);
|
|
117
|
+
act(() => frame.callback(18, 300, 354, 240));
|
|
118
|
+
expect(readings(view).frameWindow).toEqual({ x: 18, y: 300, width: 354, height: 240 });
|
|
119
|
+
const viewport = pending.find((item) => item.id === "owned-sheet-viewport")!;
|
|
120
|
+
fireEvent.click(view.getByText("Close fixture"));
|
|
121
|
+
fireEvent.click(view.getByText("Open 240pt control"));
|
|
122
|
+
act(() => viewport.callback(18, 344, 354, 196));
|
|
123
|
+
expect(readings(view).viewportWindow).toBe("unmeasured");
|
|
124
|
+
expect(readings(view).frameWindow).toBe("unmeasured");
|
|
125
|
+
});
|
|
126
|
+
it("reports invalid readings rather than converting them to zero", () => {
|
|
127
|
+
const view = renderStory("OwnedScrollView");
|
|
128
|
+
fireEvent.click(view.getByText("Open flex subject"));
|
|
129
|
+
layout("owned-sheet-viewport", Number.NaN);
|
|
130
|
+
expect(readings(view).viewportLayout).toBe("invalid");
|
|
131
|
+
expect(readings(view).sheetFrameWindow).toBe("unavailable: SheetModal has no public frame ref");
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
it("keeps an absent measured scroller unavailable and ignores superseded samples", () => {
|
|
135
|
+
const view = renderStory("OwnedMeasuredViewport");
|
|
136
|
+
fireEvent.click(view.getByText("Open flex subject"));
|
|
137
|
+
fireEvent.click(view.getByText("Measure bounds"));
|
|
138
|
+
expect(readings(view).scrollWindow).toBe("unavailable");
|
|
139
|
+
expect(readings(view).tailWindow).toBe("unavailable");
|
|
140
|
+
expect(readings(view).frameWindow).toBe("unmeasured");
|
|
141
|
+
const old = hosts.measurements.find((item) => item.id === "owned-sheet-frame")!;
|
|
142
|
+
hosts.measurements = [];
|
|
143
|
+
fireEvent.click(view.getByText("Measure bounds"));
|
|
144
|
+
expect(readings(view).sample).toBe(2);
|
|
145
|
+
act(() => old.callback(18, 300, 354, 240));
|
|
146
|
+
expect(readings(view).frameWindow).toBe("unmeasured");
|
|
147
|
+
const current = hosts.measurements.find((item) => item.id === "owned-sheet-frame")!;
|
|
148
|
+
act(() => current.callback(18, 780, 354, 0));
|
|
149
|
+
expect(readings(view).frameWindow).toEqual({ x: 18, y: 780, width: 354, height: 0 });
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
it("retains the closed presentation readings and resets actual tail presses on reopening", () => {
|
|
153
|
+
const view = renderStory("OwnedScrollView");
|
|
154
|
+
fireEvent.click(view.getByText("Open 240pt control"));
|
|
155
|
+
layout("owned-sheet-viewport", 192);
|
|
156
|
+
fireEvent.click(view.getByText("Activate Record 60"));
|
|
157
|
+
fireEvent.click(view.getByText("Close fixture"));
|
|
158
|
+
layout("owned-sheet-viewport", 0);
|
|
159
|
+
expect(readings(view).viewportLayout.height).toBe(192);
|
|
160
|
+
expect(readings(view).tailPresses).toBe(1);
|
|
161
|
+
expect(readings(view).presentation).toBe(1);
|
|
162
|
+
expect(readings(view).open).toBe(false);
|
|
163
|
+
fireEvent.click(view.getByText("Open flex subject"));
|
|
164
|
+
expect(readings(view).viewportLayout).toBe("unmeasured");
|
|
165
|
+
expect(readings(view).tailPresses).toBe(0);
|
|
166
|
+
expect(readings(view).presentation).toBe(2);
|
|
167
|
+
expect(view.getAllByText("Generic detail 1 for this record.")).toHaveLength(60);
|
|
168
|
+
expect(view.getAllByText("Generic detail 4 for this record.")).toHaveLength(15);
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
it("hands the chosen fill value to the real public sheet rather than inferring it", () => {
|
|
172
|
+
const view = renderStory("OwnedMeasuredViewport");
|
|
173
|
+
fireEvent.click(view.getByText("Open flex subject"));
|
|
174
|
+
expect(sheetProps().fill).toBe(false);
|
|
175
|
+
expect(readings(view).fill).toBe(false);
|
|
176
|
+
fireEvent.click(view.getByText("Close fixture"));
|
|
177
|
+
fireEvent.click(view.getByText("Open flex subject (fill)"));
|
|
178
|
+
expect(sheetProps().fill).toBe(true);
|
|
179
|
+
expect(readings(view).fill).toBe(true);
|
|
180
|
+
expect(readings(view).mode).toBe("subject");
|
|
181
|
+
// The fixed control is a diagnostic, not the height contract: it never
|
|
182
|
+
// asks the sheet to allocate.
|
|
183
|
+
fireEvent.click(view.getByText("Close fixture"));
|
|
184
|
+
fireEvent.click(view.getByText("Open 240pt control"));
|
|
185
|
+
expect(sheetProps().fill).toBe(false);
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
it("measures the owned toolbar so the parent can subtract it from the body", () => {
|
|
189
|
+
const view = renderStory("OwnedScrollView");
|
|
190
|
+
fireEvent.click(view.getByText("Open flex subject (fill)"));
|
|
191
|
+
expect(readings(view).toolbarLayout).toBe("unmeasured");
|
|
192
|
+
layout("owned-sheet-toolbar", 44.5);
|
|
193
|
+
layout("owned-sheet-frame", 400);
|
|
194
|
+
layout("owned-sheet-viewport", 355.5);
|
|
195
|
+
const captured = readings(view);
|
|
196
|
+
expect(captured.toolbarLayout.height).toBe(44.5);
|
|
197
|
+
expect(captured.frameLayout.height - captured.toolbarLayout.height).toBe(
|
|
198
|
+
captured.viewportLayout.height,
|
|
199
|
+
);
|
|
200
|
+
});
|
|
@@ -10,9 +10,16 @@
|
|
|
10
10
|
* open state is.
|
|
11
11
|
*/
|
|
12
12
|
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
13
|
-
import { cleanup, screen } from "@testing-library/react";
|
|
13
|
+
import { cleanup, fireEvent, screen } from "@testing-library/react";
|
|
14
14
|
import { afterEach, describe, expect, it } from "vitest";
|
|
15
|
-
import meta, {
|
|
15
|
+
import meta, {
|
|
16
|
+
Default,
|
|
17
|
+
OpenOnMount,
|
|
18
|
+
OwnedMeasuredViewport,
|
|
19
|
+
OwnedScrollView,
|
|
20
|
+
Scrollable,
|
|
21
|
+
TallDetent,
|
|
22
|
+
} from "./SheetModal.stories";
|
|
16
23
|
|
|
17
24
|
afterEach(cleanup);
|
|
18
25
|
|
|
@@ -51,4 +58,18 @@ describe("SheetModal stories", () => {
|
|
|
51
58
|
expect(screen.getAllByText("Project 1").length).toBeGreaterThan(0);
|
|
52
59
|
expect(screen.getAllByText("Project 30").length).toBeGreaterThan(0);
|
|
53
60
|
});
|
|
61
|
+
|
|
62
|
+
it.each([OwnedMeasuredViewport, OwnedScrollView])(
|
|
63
|
+
"mounts the public owned fixture and its control",
|
|
64
|
+
(story) => {
|
|
65
|
+
renderWithProviders(<>{story.render?.({} as never, {} as never)}</>);
|
|
66
|
+
expect(screen.getByText("Open flex subject")).toBeDefined();
|
|
67
|
+
fireEvent.click(screen.getByText("Open 240pt control"));
|
|
68
|
+
expect(screen.getAllByText("Measure bounds").length).toBeGreaterThan(0);
|
|
69
|
+
expect(screen.getAllByText("Close fixture").length).toBeGreaterThan(0);
|
|
70
|
+
expect(JSON.parse(screen.getByTestId("owned-sheet-readings").textContent!).mode).toBe(
|
|
71
|
+
"control-240",
|
|
72
|
+
);
|
|
73
|
+
},
|
|
74
|
+
);
|
|
54
75
|
});
|