@opentrons/components 0.1.7-alpha.0 → 0.1.7-alpha.1

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 (432) hide show
  1. package/README.md +0 -1
  2. package/lib/assets/localization/en/index.d.ts +14 -0
  3. package/lib/assets/localization/index.d.ts +14 -0
  4. package/lib/atoms/Chip/index.d.ts +2 -0
  5. package/lib/atoms/InlineNotification/index.d.ts +18 -0
  6. package/lib/atoms/ListButton/index.d.ts +5 -0
  7. package/lib/atoms/ListItem/ListItemChildren/ListItemDescriptor.d.ts +4 -0
  8. package/lib/atoms/StyledText/StyledText.d.ts +1 -1
  9. package/lib/atoms/Tag/index.d.ts +4 -1
  10. package/lib/atoms/Toast/index.d.ts +1 -1
  11. package/lib/atoms/Tooltip/index.d.ts +1 -1
  12. package/lib/atoms/buttons/LargeButton.d.ts +1 -1
  13. package/lib/atoms/buttons/RadioButton.d.ts +29 -1
  14. package/lib/atoms/index.d.ts +3 -2
  15. package/lib/buttons/Button.d.ts +1 -1
  16. package/lib/controls/ToggleButton.d.ts +8 -2
  17. package/lib/controls/index.d.ts +0 -1
  18. package/lib/forms/DeprecatedCheckboxField.d.ts +1 -1
  19. package/lib/forms/SelectField.d.ts +1 -1
  20. package/lib/hardware-sim/BaseDeck/BaseDeck.d.ts +13 -1
  21. package/lib/hardware-sim/BaseDeck/WasteChuteFixture.d.ts +1 -1
  22. package/lib/hardware-sim/Deck/MoveLabwareOnDeck.d.ts +1 -1
  23. package/lib/hardware-sim/Deck/RobotWorkSpace.d.ts +1 -1
  24. package/lib/hardware-sim/Labware/Labware.d.ts +2 -2
  25. package/lib/hardware-sim/Labware/LabwareAdapter/index.d.ts +2 -2
  26. package/lib/hardware-sim/Labware/LabwareRender.d.ts +2 -2
  27. package/lib/hardware-sim/Labware/index.d.ts +0 -1
  28. package/lib/hardware-sim/Labware/labwareInternals/FilledWells.d.ts +1 -1
  29. package/lib/hardware-sim/Labware/labwareInternals/StaticLabware.d.ts +1 -1
  30. package/lib/hardware-sim/Labware/labwareInternals/StrokedWells.d.ts +1 -1
  31. package/lib/hardware-sim/Labware/labwareInternals/Well.d.ts +1 -1
  32. package/lib/hardware-sim/Labware/labwareInternals/getTiprackBackgroundColor.d.ts +1 -0
  33. package/lib/hardware-sim/Module/FlexStacker.d.ts +1 -0
  34. package/lib/hardware-sim/Module/index.d.ts +1 -1
  35. package/lib/hardware-sim/index.d.ts +0 -2
  36. package/lib/helix-design-system/colors.d.ts +2 -1
  37. package/lib/hooks/useSwipe.d.ts +1 -1
  38. package/lib/icons/ModuleIcon.d.ts +1 -1
  39. package/lib/icons/NotificationIcon.d.ts +1 -1
  40. package/lib/instrument/InstrumentDiagram.d.ts +1 -1
  41. package/lib/instrument/index.d.ts +0 -1
  42. package/lib/legacy-hardware-sim/ModuleItem.d.ts +1 -1
  43. package/lib/molecules/Banner/index.d.ts +1 -1
  44. package/lib/molecules/DropdownMenu/index.d.ts +1 -1
  45. package/lib/molecules/LiquidIcon/index.d.ts +2 -2
  46. package/lib/organisms/CommandText/useCommandTextString/index.d.ts +2 -2
  47. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/__tests__/getFlexStackerCommandText.test.d.ts +1 -0
  48. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/__tests__/getRobotCommandText.test.d.ts +1 -0
  49. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/getAbsorbanceReaderCommandText.d.ts +1 -1
  50. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/getFlexStackerCommandText.d.ts +6 -3
  51. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/getRobotCommandText.d.ts +4 -0
  52. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/getTemperatureCommandText.d.ts +1 -1
  53. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/index.d.ts +2 -0
  54. package/lib/organisms/CommandText/useCommandTextString/utils/getAddressableAreaDisplayName.d.ts +1 -1
  55. package/lib/organisms/CommandText/useCommandTextString/utils/getFinalLabwareLocation.d.ts +1 -1
  56. package/lib/organisms/CommandText/useCommandTextString/utils/getLabwareDisplayLocation.d.ts +1 -1
  57. package/lib/organisms/CommandText/useCommandTextString/utils/getLabwareLocation.d.ts +1 -1
  58. package/lib/organisms/DeckLabelSet/index.d.ts +1 -0
  59. package/lib/organisms/FixtureOption/__tests__/FixtureOption.test.d.ts +1 -0
  60. package/lib/organisms/FixtureOption/index.d.ts +10 -0
  61. package/lib/organisms/ProtocolTimelineScrubber/utils.d.ts +1 -1
  62. package/lib/organisms/index.d.ts +1 -0
  63. package/lib/primitives/ForeignObject.d.ts +1 -1
  64. package/lib/primitives/Link.d.ts +1 -1
  65. package/lib/primitives/Svg.d.ts +1 -1
  66. package/lib/primitives/style-props.d.ts +2 -2
  67. package/lib/primitives/types.d.ts +1 -1
  68. package/lib/testing/utils/renderWithProviders.d.ts +2 -2
  69. package/lib/tooltips/LegacyTooltip.d.ts +1 -1
  70. package/lib/tooltips/types.d.ts +2 -2
  71. package/package.json +2 -3
  72. package/src/Components.mdx +12 -0
  73. package/src/__tests__/utils.test.ts +2 -1
  74. package/src/alerts/AlertItem.stories.tsx +2 -2
  75. package/src/alerts/AlertItem.tsx +2 -1
  76. package/src/assets/localization/en/protocol_command_text.json +14 -0
  77. package/src/atoms/Checkbox/Checkbox.stories.tsx +1 -1
  78. package/src/atoms/Checkbox/__tests__/Checkbox.test.tsx +4 -2
  79. package/src/atoms/Checkbox/index.tsx +3 -2
  80. package/src/atoms/CheckboxField/CheckboxField.stories.tsx +3 -2
  81. package/src/atoms/CheckboxField/__tests__/CheckboxField.test.tsx +21 -35
  82. package/src/atoms/CheckboxField/index.tsx +81 -70
  83. package/src/atoms/Chip/Chip.stories.tsx +3 -2
  84. package/src/atoms/Chip/__tests__/Chip.test.tsx +41 -3
  85. package/src/atoms/Chip/index.tsx +76 -50
  86. package/src/atoms/InlineNotification/InlineNotification.stories.tsx +107 -0
  87. package/src/atoms/InlineNotification/__tests__/InlineNotification.test.tsx +66 -0
  88. package/src/atoms/InlineNotification/index.tsx +197 -0
  89. package/src/atoms/InputField/InputField.stories.tsx +3 -0
  90. package/src/atoms/InputField/__tests__/InputField.test.tsx +4 -3
  91. package/src/atoms/InputField/index.tsx +4 -4
  92. package/src/atoms/ListButton/ListButton.stories.tsx +4 -2
  93. package/src/atoms/ListButton/ListButtonChildren/ListButtonRadioButton.tsx +3 -2
  94. package/src/atoms/ListButton/__tests__/ListButton.test.tsx +5 -3
  95. package/src/atoms/ListButton/__tests__/ListButtonAccordion.test.tsx +2 -2
  96. package/src/atoms/ListButton/__tests__/ListButtonRadioButton.test.tsx +2 -2
  97. package/src/atoms/ListButton/index.tsx +57 -41
  98. package/src/atoms/ListItem/ListItem.stories.tsx +7 -5
  99. package/src/atoms/ListItem/ListItemChildren/ListItemCustomize.tsx +21 -15
  100. package/src/atoms/ListItem/ListItemChildren/ListItemDescriptor.tsx +4 -0
  101. package/src/atoms/ListItem/__tests__/ListItem.test.tsx +5 -3
  102. package/src/atoms/ListItem/index.tsx +3 -2
  103. package/src/atoms/ListTable/ListTable.stories.tsx +1 -1
  104. package/src/atoms/ListTable/__tests__/ListTable.test.tsx +2 -2
  105. package/src/atoms/ListTable/index.tsx +4 -4
  106. package/src/atoms/MenuList/MenuItem.stories.tsx +1 -1
  107. package/src/atoms/MenuList/MenuItem.tsx +4 -1
  108. package/src/atoms/MenuList/MenuList.stories.tsx +1 -0
  109. package/src/atoms/MenuList/OverflowBtn.tsx +1 -1
  110. package/src/atoms/MenuList/__tests__/MenuItem.test.tsx +2 -3
  111. package/src/atoms/MenuList/__tests__/MenuList.test.tsx +2 -2
  112. package/src/atoms/MenuList/__tests__/OverflowBtn.test.tsx +1 -1
  113. package/src/atoms/MenuList/index.tsx +2 -2
  114. package/src/atoms/Snackbar/Snackbar.stories.tsx +4 -2
  115. package/src/atoms/Snackbar/__tests__/Snackbar.test.tsx +6 -3
  116. package/src/atoms/Snackbar/index.tsx +3 -2
  117. package/src/atoms/StepMeter/__tests__/StepMeter.test.tsx +45 -0
  118. package/src/atoms/StepMeter/index.tsx +33 -24
  119. package/src/atoms/StyledText/LegacyStyledText.stories.tsx +2 -1
  120. package/src/atoms/StyledText/LegacyStyledText.tsx +3 -2
  121. package/src/atoms/StyledText/StyledText.stories.tsx +3 -2
  122. package/src/atoms/StyledText/StyledText.tsx +4 -3
  123. package/src/atoms/SubListTable/SubListTable.stories.tsx +1 -1
  124. package/src/atoms/SubListTable/__tests__/SubListTable.test.tsx +2 -2
  125. package/src/atoms/SubListTable/index.tsx +4 -4
  126. package/src/atoms/Tag/Tag.stories.tsx +2 -1
  127. package/src/atoms/Tag/__tests__/Tag.test.tsx +2 -1
  128. package/src/atoms/Tag/index.tsx +53 -35
  129. package/src/atoms/Toast/ODDToast.stories.tsx +18 -8
  130. package/src/atoms/Toast/Toast.stories.tsx +3 -2
  131. package/src/atoms/Toast/__tests__/ODDToast.test.tsx +5 -2
  132. package/src/atoms/Toast/__tests__/Toast.test.tsx +5 -2
  133. package/src/atoms/Toast/index.tsx +75 -80
  134. package/src/atoms/ToggleGroup/ToggleGroup.stories.tsx +2 -0
  135. package/src/atoms/ToggleGroup/__tests__/ToggleGroup.test.tsx +2 -1
  136. package/src/atoms/ToggleGroup/index.tsx +2 -1
  137. package/src/atoms/Tooltip/Tooltip.stories.tsx +6 -5
  138. package/src/atoms/Tooltip/__tests__/Tooltip.test.tsx +6 -5
  139. package/src/atoms/Tooltip/index.tsx +3 -3
  140. package/src/atoms/buttons/AlertPrimaryButton.tsx +2 -1
  141. package/src/atoms/buttons/AltPrimaryButton.tsx +1 -1
  142. package/src/atoms/buttons/EmptySelectorButton.stories.tsx +1 -0
  143. package/src/atoms/buttons/EmptySelectorButton.tsx +10 -3
  144. package/src/atoms/buttons/LargeButton.stories.tsx +2 -2
  145. package/src/atoms/buttons/LargeButton.tsx +5 -5
  146. package/src/atoms/buttons/PrimaryButton.tsx +7 -3
  147. package/src/atoms/buttons/RadioButton.stories.tsx +2 -1
  148. package/src/atoms/buttons/RadioButton.tsx +102 -43
  149. package/src/atoms/buttons/SecondaryButton.tsx +13 -7
  150. package/src/atoms/buttons/TertiaryButton.tsx +1 -0
  151. package/src/atoms/buttons/__tests__/AlertPrimaryButton.test.tsx +5 -4
  152. package/src/atoms/buttons/__tests__/AltPrimaryButton.test.tsx +6 -4
  153. package/src/atoms/buttons/__tests__/EmptySelectorButton.test.tsx +4 -2
  154. package/src/atoms/buttons/__tests__/LargeButton.test.tsx +4 -2
  155. package/src/atoms/buttons/__tests__/PrimaryButton.test.tsx +7 -5
  156. package/src/atoms/buttons/__tests__/RadioButton.test.tsx +17 -3
  157. package/src/atoms/buttons/__tests__/SecondaryButton.test.tsx +6 -5
  158. package/src/atoms/buttons/buttons.stories.tsx +6 -6
  159. package/src/atoms/index.ts +3 -2
  160. package/src/buttons/Button.tsx +2 -3
  161. package/src/buttons/IconButton.tsx +1 -2
  162. package/src/controls/LabeledRadioGroup.tsx +1 -1
  163. package/src/controls/ToggleButton.tsx +62 -18
  164. package/src/controls/index.ts +0 -1
  165. package/src/forms/DeprecatedCheckboxField.stories.tsx +1 -1
  166. package/src/forms/DeprecatedCheckboxField.tsx +3 -3
  167. package/src/forms/FormGroup.stories.tsx +3 -4
  168. package/src/forms/FormGroup.tsx +1 -0
  169. package/src/forms/InputField.stories.tsx +2 -1
  170. package/src/forms/LegacyInputField.tsx +1 -0
  171. package/src/forms/RadioGroup.stories.tsx +2 -1
  172. package/src/forms/RadioGroup.tsx +1 -0
  173. package/src/forms/Select.stories.tsx +2 -3
  174. package/src/forms/Select.tsx +3 -3
  175. package/src/forms/SelectField.tsx +1 -1
  176. package/src/forms/ToggleField.stories.tsx +1 -1
  177. package/src/forms/ToggleField.tsx +2 -2
  178. package/src/hardware-sim/BaseDeck/BaseDeck.stories.tsx +1 -1
  179. package/src/hardware-sim/BaseDeck/BaseDeck.tsx +121 -21
  180. package/src/hardware-sim/BaseDeck/WasteChuteFixture.tsx +5 -5
  181. package/src/hardware-sim/BaseDeck/__fixtures__/index.ts +2 -2
  182. package/src/hardware-sim/Deck/DeckFromLayers.tsx +6 -5
  183. package/src/hardware-sim/Deck/FlexTrash.tsx +2 -1
  184. package/src/hardware-sim/Deck/MoveLabwareOnDeck.stories.tsx +4 -3
  185. package/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx +12 -12
  186. package/src/hardware-sim/Deck/RobotCoordsForeignObject.tsx +1 -0
  187. package/src/hardware-sim/Deck/RobotWorkSpace.tsx +3 -1
  188. package/src/hardware-sim/Deck/SlotLabels.tsx +2 -0
  189. package/src/hardware-sim/DeckConfigurator/AbsorbanceReaderFixture.tsx +2 -2
  190. package/src/hardware-sim/DeckConfigurator/DeckConfigurator.stories.tsx +2 -3
  191. package/src/hardware-sim/DeckConfigurator/EmptyConfigFixture.tsx +4 -3
  192. package/src/hardware-sim/DeckConfigurator/FlexStackerFixture.tsx +2 -2
  193. package/src/hardware-sim/DeckConfigurator/HeaterShakerFixture.tsx +3 -3
  194. package/src/hardware-sim/DeckConfigurator/MagneticBlockFixture.tsx +6 -6
  195. package/src/hardware-sim/DeckConfigurator/StagingAreaConfigFixture.tsx +1 -1
  196. package/src/hardware-sim/DeckConfigurator/StaticFixture.tsx +2 -2
  197. package/src/hardware-sim/DeckConfigurator/TemperatureModuleFixture.tsx +3 -3
  198. package/src/hardware-sim/DeckConfigurator/ThermocyclerFixture.tsx +4 -4
  199. package/src/hardware-sim/DeckConfigurator/TrashBinConfigFixture.tsx +3 -3
  200. package/src/hardware-sim/DeckConfigurator/WasteChuteConfigFixture.tsx +3 -3
  201. package/src/hardware-sim/DeckConfigurator/index.tsx +29 -16
  202. package/src/hardware-sim/Labware/Labware.tsx +5 -7
  203. package/src/hardware-sim/Labware/LabwareAdapter/index.tsx +5 -4
  204. package/src/hardware-sim/Labware/LabwareRender.stories.tsx +4 -5
  205. package/src/hardware-sim/Labware/LabwareRender.tsx +8 -9
  206. package/src/hardware-sim/Labware/__tests__/Labware.test.tsx +6 -2
  207. package/src/hardware-sim/Labware/__tests__/LabwareRender.test.tsx +6 -2
  208. package/src/hardware-sim/Labware/index.ts +0 -1
  209. package/src/hardware-sim/Labware/labwareInternals/FilledWells.tsx +2 -1
  210. package/src/hardware-sim/Labware/labwareInternals/LabwareOutline.tsx +9 -4
  211. package/src/hardware-sim/Labware/labwareInternals/LabwareWellLabels.tsx +2 -1
  212. package/src/hardware-sim/Labware/labwareInternals/StaticLabware.tsx +5 -5
  213. package/src/hardware-sim/Labware/labwareInternals/StrokedWells.tsx +3 -2
  214. package/src/hardware-sim/Labware/labwareInternals/StyledWells.tsx +2 -1
  215. package/src/hardware-sim/Labware/labwareInternals/Well.tsx +5 -2
  216. package/src/hardware-sim/Labware/labwareInternals/WellLabels.tsx +2 -1
  217. package/src/hardware-sim/Labware/labwareInternals/__tests__/LabwareWellLabels.test.tsx +4 -1
  218. package/src/hardware-sim/Labware/labwareInternals/__tests__/StrokedWells.test.tsx +5 -1
  219. package/src/hardware-sim/Labware/labwareInternals/__tests__/WellLabels.test.tsx +6 -2
  220. package/src/hardware-sim/Labware/labwareInternals/getTiprackBackgroundColor.ts +32 -0
  221. package/src/hardware-sim/Module/FlexStacker.tsx +54 -0
  222. package/src/hardware-sim/Module/Module.stories.tsx +4 -3
  223. package/src/hardware-sim/Module/ModuleTag.tsx +3 -3
  224. package/src/hardware-sim/Module/Thermocycler/ThermocyclerGEN1.tsx +1 -0
  225. package/src/hardware-sim/Module/Thermocycler/index.tsx +3 -3
  226. package/src/hardware-sim/Module/index.tsx +14 -7
  227. package/src/hardware-sim/Pipette/EightEmanatingNozzles.tsx +1 -0
  228. package/src/hardware-sim/Pipette/EmanatingNozzle.tsx +2 -1
  229. package/src/hardware-sim/Pipette/PipetteRender.stories.tsx +4 -2
  230. package/src/hardware-sim/Pipette/PipetteRender.tsx +7 -5
  231. package/src/hardware-sim/Pipette/__tests__/EightEmanatingNozzles.test.tsx +2 -1
  232. package/src/hardware-sim/Pipette/__tests__/EmanatingNozzle.test.tsx +4 -3
  233. package/src/hardware-sim/Pipette/__tests__/PipetteRender.test.tsx +9 -7
  234. package/src/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpace.tsx +2 -1
  235. package/src/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpaceWithRef.tsx +1 -0
  236. package/src/hardware-sim/index.ts +0 -2
  237. package/src/helix-design-system/colors.ts +2 -1
  238. package/src/hooks/__tests__/useDrag.test.ts +3 -1
  239. package/src/hooks/__tests__/useLongPress.test.ts +2 -1
  240. package/src/hooks/__tests__/useScrolling.test.tsx +3 -2
  241. package/src/hooks/__tests__/useSwipe.test.tsx +2 -1
  242. package/src/hooks/useDrag.ts +2 -1
  243. package/src/hooks/useInterval.ts +1 -0
  244. package/src/hooks/useLongPress.ts +2 -1
  245. package/src/hooks/useMenuHandleClickOutside.tsx +1 -0
  246. package/src/hooks/useMountEffect.ts +2 -0
  247. package/src/hooks/useScrolling.ts +1 -1
  248. package/src/hooks/useSelectDeckLocation/SelectDeckLocation.stories.tsx +3 -1
  249. package/src/hooks/useSelectDeckLocation/index.tsx +8 -6
  250. package/src/hooks/useSwipe.ts +3 -2
  251. package/src/i18n.ts +4 -2
  252. package/src/icons/Icon.stories.tsx +2 -1
  253. package/src/icons/Icon.tsx +1 -1
  254. package/src/icons/IconList.stories.tsx +9 -8
  255. package/src/icons/ModuleIcon.tsx +8 -7
  256. package/src/icons/NotificationIcon.tsx +1 -1
  257. package/src/icons/icon-data.ts +5 -0
  258. package/src/instrument/InstrumentDiagram.stories.tsx +3 -2
  259. package/src/instrument/InstrumentDiagram.tsx +9 -8
  260. package/src/instrument/InstrumentGroup.stories.tsx +4 -3
  261. package/src/instrument/InstrumentGroup.tsx +1 -1
  262. package/src/instrument/InstrumentInfo.tsx +4 -4
  263. package/src/instrument/__tests__/InstrumentInfo.test.tsx +5 -3
  264. package/src/instrument/index.ts +0 -1
  265. package/src/interaction-enhancers/ClickOutside.ts +1 -0
  266. package/src/interaction-enhancers/HandleKeypress.tsx +1 -0
  267. package/src/interaction-enhancers/__tests__/useHover.test.tsx +1 -0
  268. package/src/interaction-enhancers/useHover.ts +1 -1
  269. package/src/legacy-hardware-sim/LabwareNameOverlay.tsx +1 -0
  270. package/src/legacy-hardware-sim/ModuleItem.tsx +2 -2
  271. package/src/lists/SidePanelGroup.tsx +1 -1
  272. package/src/lists/TitledList.tsx +2 -3
  273. package/src/modals/LegacyModal.tsx +2 -2
  274. package/src/modals/Modal.stories.tsx +1 -1
  275. package/src/modals/Modal.tsx +1 -1
  276. package/src/modals/ModalHeader.tsx +2 -2
  277. package/src/modals/ModalShell.tsx +3 -2
  278. package/src/modals/SpinnerModal.tsx +2 -2
  279. package/src/modals/SpinnerModalPage.tsx +1 -1
  280. package/src/modals/__tests__/Modal.test.tsx +4 -2
  281. package/src/modals/__tests__/ModalHeader.test.tsx +5 -3
  282. package/src/modals/__tests__/ModalShell.test.tsx +3 -1
  283. package/src/molecules/Banner/Banner.stories.tsx +1 -1
  284. package/src/molecules/Banner/__tests__/Banner.test.tsx +2 -2
  285. package/src/molecules/Banner/index.tsx +5 -4
  286. package/src/molecules/DeckInfoLabel/DeckInfoLabel.stories.tsx +1 -1
  287. package/src/molecules/DeckInfoLabel/__tests__/DeckInfoLabel.test.tsx +4 -4
  288. package/src/molecules/DeckLabel/__tests__/DeckLabel.test.tsx +3 -3
  289. package/src/molecules/DeckLabel/index.tsx +5 -3
  290. package/src/molecules/DropdownMenu/__tests__/DropdownMenu.test.tsx +3 -3
  291. package/src/molecules/DropdownMenu/index.tsx +5 -2
  292. package/src/molecules/InfoScreen/InfoScreen.stories.tsx +2 -1
  293. package/src/molecules/InfoScreen/__tests__/InfoScreen.test.tsx +3 -3
  294. package/src/molecules/InfoScreen/index.tsx +2 -2
  295. package/src/molecules/LiquidIcon/LiquidIcon.stories.tsx +3 -2
  296. package/src/molecules/LiquidIcon/__tests__/LiquidIcon.test.tsx +4 -4
  297. package/src/molecules/LiquidIcon/index.tsx +16 -10
  298. package/src/molecules/ListAccordion/ListAccordion.stories.tsx +3 -3
  299. package/src/molecules/ListAccordion/__tests__/ListAccordion.test.tsx +3 -3
  300. package/src/molecules/ListAccordion/index.tsx +6 -6
  301. package/src/molecules/ParametersTable/ParametersTable.stories.tsx +1 -0
  302. package/src/molecules/ParametersTable/__tests__/ParametersTable.test.tsx +3 -2
  303. package/src/molecules/ParametersTable/index.tsx +9 -7
  304. package/src/molecules/ReleaseNotes/index.tsx +1 -1
  305. package/src/molecules/Tabs/Tabs.stories.tsx +3 -1
  306. package/src/molecules/Tabs/__tests__/Tabs.test.tsx +3 -2
  307. package/src/molecules/Tabs/index.tsx +4 -3
  308. package/src/molecules/TextListTableContent/TextListTableContent.stories.tsx +1 -1
  309. package/src/molecules/TextListTableContent/__tests__/TextListTableContent.test.tsx +2 -2
  310. package/src/molecules/TextListTableContent/index.tsx +2 -2
  311. package/src/nav/SidePanel.stories.tsx +4 -3
  312. package/src/organisms/CommandText/CommandText.stories.tsx +3 -2
  313. package/src/organisms/CommandText/__tests__/CommandText.test.tsx +7 -6
  314. package/src/organisms/CommandText/fixtures/index.ts +1 -0
  315. package/src/organisms/CommandText/index.tsx +4 -2
  316. package/src/organisms/CommandText/useCommandTextString/index.ts +28 -5
  317. package/src/organisms/CommandText/useCommandTextString/utils/__tests__/formatDuration.test.tsx +2 -1
  318. package/src/organisms/CommandText/useCommandTextString/utils/__tests__/getFinalLabwareLocation.test.ts +4 -1
  319. package/src/organisms/CommandText/useCommandTextString/utils/__tests__/getLabwareDisplayLocation.test.tsx +6 -5
  320. package/src/organisms/CommandText/useCommandTextString/utils/commandText/__tests__/getFlexStackerCommandText.test.tsx +179 -0
  321. package/src/organisms/CommandText/useCommandTextString/utils/commandText/__tests__/getPipettingCommandText.test.tsx +10 -9
  322. package/src/organisms/CommandText/useCommandTextString/utils/commandText/__tests__/getRobotCommandText.test.tsx +118 -0
  323. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getAbsorbanceReaderCommandText.ts +1 -1
  324. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getFlexStackerCommandText.ts +142 -6
  325. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getLiquidProbeCommandText.ts +1 -0
  326. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getLoadCommandText.ts +4 -3
  327. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getPipettingCommandText.ts +5 -4
  328. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getRobotCommandText.ts +87 -0
  329. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getTCRunExtendedProfileCommandText.ts +3 -2
  330. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getTCRunProfileCommandText.ts +1 -0
  331. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getTemperatureCommandText.ts +4 -4
  332. package/src/organisms/CommandText/useCommandTextString/utils/commandText/index.ts +2 -0
  333. package/src/organisms/CommandText/useCommandTextString/utils/formatDuration.ts +2 -0
  334. package/src/organisms/CommandText/useCommandTextString/utils/getAddressableAreaDisplayName.ts +1 -1
  335. package/src/organisms/CommandText/useCommandTextString/utils/getFinalAddressableAreaCmd.ts +2 -0
  336. package/src/organisms/CommandText/useCommandTextString/utils/getFinalLabwareLocation.ts +2 -2
  337. package/src/organisms/CommandText/useCommandTextString/utils/getLabwareDefinitionsFromCommands.ts +1 -1
  338. package/src/organisms/CommandText/useCommandTextString/utils/getLabwareDisplayLocation.tsx +38 -15
  339. package/src/organisms/CommandText/useCommandTextString/utils/getLabwareLocation.tsx +18 -9
  340. package/src/organisms/CommandText/useCommandTextString/utils/getModuleDisplayLocation.ts +1 -0
  341. package/src/organisms/CommandText/useCommandTextString/utils/getModuleModel.ts +1 -0
  342. package/src/organisms/CommandText/useCommandTextString/utils/getWellRange.ts +2 -1
  343. package/src/organisms/DeckLabelSet/DeckLabelSet.stories.tsx +1 -2
  344. package/src/organisms/DeckLabelSet/__tests__/DeckLabelSet.test.tsx +3 -3
  345. package/src/organisms/DeckLabelSet/index.tsx +55 -22
  346. package/src/organisms/FixtureOption/__tests__/FixtureOption.test.tsx +42 -0
  347. package/src/organisms/FixtureOption/index.tsx +92 -0
  348. package/src/organisms/ProtocolTimelineScrubber/CommandItem.tsx +6 -4
  349. package/src/organisms/ProtocolTimelineScrubber/PipetteVisuals.tsx +4 -2
  350. package/src/organisms/ProtocolTimelineScrubber/index.tsx +22 -45
  351. package/src/organisms/ProtocolTimelineScrubber/utils.ts +6 -3
  352. package/src/organisms/Toolbox/Toolbox.stories.tsx +1 -0
  353. package/src/organisms/Toolbox/__tests__/Toolbox.test.tsx +2 -1
  354. package/src/organisms/Toolbox/index.tsx +3 -2
  355. package/src/organisms/index.ts +1 -0
  356. package/src/primitives/Box.stories.tsx +1 -1
  357. package/src/primitives/Box.tsx +1 -1
  358. package/src/primitives/Btn.stories.tsx +8 -8
  359. package/src/primitives/Btn.tsx +2 -3
  360. package/src/primitives/Flex.stories.tsx +3 -3
  361. package/src/primitives/Flex.tsx +1 -1
  362. package/src/primitives/ForeignObject.tsx +2 -2
  363. package/src/primitives/Link.tsx +2 -2
  364. package/src/primitives/README.md +7 -16
  365. package/src/primitives/Svg.stories.tsx +2 -2
  366. package/src/primitives/Svg.tsx +2 -2
  367. package/src/primitives/Text.stories.tsx +2 -2
  368. package/src/primitives/Text.tsx +1 -1
  369. package/src/primitives/__tests__/Box.test.tsx +1 -0
  370. package/src/primitives/__tests__/Btn.test.tsx +1 -0
  371. package/src/primitives/__tests__/Flex.test.tsx +1 -0
  372. package/src/primitives/__tests__/Link.test.tsx +1 -0
  373. package/src/primitives/__tests__/Svg.test.tsx +1 -0
  374. package/src/primitives/__tests__/Text.test.tsx +1 -0
  375. package/src/primitives/__tests__/primitives.test.tsx +1 -0
  376. package/src/primitives/__tests__/style-props.test.tsx +1 -0
  377. package/src/primitives/style-props.ts +1 -2
  378. package/src/primitives/types.ts +1 -1
  379. package/src/slotmap/OT2SlotMap.tsx +1 -0
  380. package/src/slotmap/__tests__/OT2SlotMap.test.tsx +1 -0
  381. package/src/structure/Card.stories.tsx +4 -3
  382. package/src/structure/Card.tsx +3 -1
  383. package/src/structure/LabeledValue.stories.tsx +2 -2
  384. package/src/structure/Splash.stories.tsx +4 -3
  385. package/src/structure/TitleBar.stories.tsx +4 -3
  386. package/src/testing/utils/matchers.ts +1 -0
  387. package/src/testing/utils/renderWithProviders.tsx +4 -4
  388. package/src/tooltips/DeprecatedTooltip.tsx +2 -1
  389. package/src/tooltips/LegacyTooltip.stories.tsx +10 -9
  390. package/src/tooltips/LegacyTooltip.tsx +5 -5
  391. package/src/tooltips/__tests__/Tooltip.test.tsx +1 -0
  392. package/src/tooltips/__tests__/useHoverTooltip.test.tsx +1 -0
  393. package/src/tooltips/__tests__/usePopper.test.tsx +1 -0
  394. package/src/tooltips/__tests__/useTooltip.test.tsx +1 -0
  395. package/src/tooltips/types.ts +2 -4
  396. package/src/tooltips/usePopper.ts +4 -4
  397. package/src/tooltips/useTooltip.ts +4 -3
  398. package/src/ui-style-constants/typography.ts +1 -0
  399. package/vite.config.mts +5 -1
  400. package/lib/controls/LabeledToggle.d.ts +0 -11
  401. package/lib/hardware-sim/Labware/LabwareStackRender.d.ts +0 -20
  402. package/lib/hardware-sim/ProtocolDeck/LabwareInfo.d.ts +0 -6
  403. package/lib/hardware-sim/ProtocolDeck/index.d.ts +0 -11
  404. package/lib/hardware-sim/ProtocolDeck/types.d.ts +0 -8
  405. package/lib/hardware-sim/ProtocolDeck/utils/getInitiallyLoadedLabwareByAdapter.d.ts +0 -5
  406. package/lib/hardware-sim/ProtocolDeck/utils/getLabwareInSlots.d.ts +0 -12
  407. package/lib/hardware-sim/ProtocolDeck/utils/getLabwareInfoByLiquidId.d.ts +0 -3
  408. package/lib/hardware-sim/ProtocolDeck/utils/getModulesInSlots.d.ts +0 -10
  409. package/lib/hardware-sim/ProtocolDeck/utils/getStandardDeckViewLayerBlockList.d.ts +0 -2
  410. package/lib/hardware-sim/ProtocolDeck/utils/getWellFillFromLabwareId.d.ts +0 -4
  411. package/lib/hardware-sim/ProtocolDeck/utils/index.d.ts +0 -4
  412. package/lib/instrument/PipetteSelect.d.ts +0 -20
  413. package/src/controls/LabeledToggle.tsx +0 -35
  414. package/src/hardware-sim/Labware/LabwareStackRender.tsx +0 -273
  415. package/src/hardware-sim/ProtocolDeck/LabwareInfo.tsx +0 -69
  416. package/src/hardware-sim/ProtocolDeck/ProtocolDeck.stories.tsx +0 -25
  417. package/src/hardware-sim/ProtocolDeck/__fixtures__/analysis_QIAseqFX24xv4_8.json +0 -47145
  418. package/src/hardware-sim/ProtocolDeck/index.tsx +0 -85
  419. package/src/hardware-sim/ProtocolDeck/types.ts +0 -6
  420. package/src/hardware-sim/ProtocolDeck/utils/__tests__/getLabwareInforByLiquidId.test.ts +0 -158
  421. package/src/hardware-sim/ProtocolDeck/utils/getInitiallyLoadedLabwareByAdapter.ts +0 -33
  422. package/src/hardware-sim/ProtocolDeck/utils/getLabwareInSlots.ts +0 -321
  423. package/src/hardware-sim/ProtocolDeck/utils/getLabwareInfoByLiquidId.ts +0 -43
  424. package/src/hardware-sim/ProtocolDeck/utils/getModulesInSlots.ts +0 -129
  425. package/src/hardware-sim/ProtocolDeck/utils/getStandardDeckViewLayerBlockList.ts +0 -29
  426. package/src/hardware-sim/ProtocolDeck/utils/getWellFillFromLabwareId.ts +0 -30
  427. package/src/hardware-sim/ProtocolDeck/utils/index.ts +0 -4
  428. package/src/instrument/PipetteSelect.stories.tsx +0 -40
  429. package/src/instrument/PipetteSelect.tsx +0 -170
  430. package/src/instrument/__tests__/PipetteSelect.test.tsx +0 -4
  431. /package/lib/{hardware-sim/ProtocolDeck/utils/__tests__/getLabwareInforByLiquidId.test.d.ts → atoms/InlineNotification/__tests__/InlineNotification.test.d.ts} +0 -0
  432. /package/lib/{instrument/__tests__/PipetteSelect.test.d.ts → atoms/StepMeter/__tests__/StepMeter.test.d.ts} +0 -0
@@ -1,129 +0,0 @@
1
- import {
2
- SPAN7_8_10_11_SLOT,
3
- getModuleDef2,
4
- getLoadedLabwareDefinitionsByUri,
5
- } from '@opentrons/shared-data'
6
- import type {
7
- CompletedProtocolAnalysis,
8
- LoadLabwareRunTimeCommand,
9
- ProtocolAnalysisOutput,
10
- LoadModuleRunTimeCommand,
11
- RunTimeCommand,
12
- ModuleLocation,
13
- ModuleModel,
14
- LabwareDefinition2,
15
- } from '@opentrons/shared-data'
16
- import { getInitialLoadedLabwareByAdapter } from './getInitiallyLoadedLabwareByAdapter'
17
-
18
- interface ModuleInSlot {
19
- moduleModel: ModuleModel
20
- moduleLocation: ModuleLocation
21
- nestedLabwareId: string | null
22
- nestedLabwareDef: LabwareDefinition2 | null
23
- nestedLabwareNickName: string | null
24
- }
25
- export const getModulesInSlots = (
26
- protocolAnalysis: ProtocolAnalysisOutput | CompletedProtocolAnalysis
27
- ): ModuleInSlot[] => {
28
- if (protocolAnalysis != null && 'modules' in protocolAnalysis) {
29
- const { commands, modules, labware } = protocolAnalysis
30
- const initialLoadedLabwareByAdapter = getInitialLoadedLabwareByAdapter(
31
- commands
32
- )
33
- return modules.reduce<ModuleInSlot[]>((acc, module) => {
34
- const moduleDef = getModuleDef2(module.model)
35
- const nestedLabwareId =
36
- commands
37
- .filter(
38
- (command): command is LoadLabwareRunTimeCommand =>
39
- command.commandType === 'loadLabware'
40
- )
41
- .find(
42
- (command: LoadLabwareRunTimeCommand) =>
43
- typeof command.params.location === 'object' &&
44
- 'moduleId' in command.params.location &&
45
- command.params.location.moduleId === module.id
46
- )?.result?.labwareId ?? null
47
- const nestedLabware = labware.find(
48
- item => nestedLabwareId != null && item.id === nestedLabwareId
49
- )
50
- const labwareDefinitionsByUri = getLoadedLabwareDefinitionsByUri(commands)
51
- const nestedLabwareDef =
52
- nestedLabware != null
53
- ? labwareDefinitionsByUri[nestedLabware.definitionUri]
54
- : null
55
- const moduleInitialLoadInfo = getModuleInitialLoadInfo(
56
- module.id,
57
- commands
58
- )
59
- let slotName = moduleInitialLoadInfo.location.slotName
60
- // Note: this is because PD for OT2 represents the slot the TC sits in as a made up slot. We want it to be rendered in slot 7
61
- if (slotName === SPAN7_8_10_11_SLOT) {
62
- slotName = '7'
63
- }
64
-
65
- const labwareInAdapterInMod =
66
- nestedLabwareId != null
67
- ? initialLoadedLabwareByAdapter[nestedLabwareId]
68
- : null
69
- // NOTE: only rendering the labware on top most layer so
70
- // either the adapter or the labware are rendered but not both
71
- const topLabwareDefinition =
72
- labwareInAdapterInMod?.result?.definition ?? nestedLabwareDef
73
- const topLabwareId =
74
- labwareInAdapterInMod?.result?.labwareId ?? nestedLabwareId
75
- const topLabwareDisplayName =
76
- labwareInAdapterInMod != null
77
- ? labwareInAdapterInMod.params.displayName?.toString() ?? null
78
- : nestedLabware?.displayName?.toString() ?? null
79
- return [
80
- ...acc,
81
- {
82
- moduleModel: moduleDef.model,
83
- moduleLocation: { slotName },
84
- nestedLabwareId: topLabwareId,
85
- nestedLabwareDef: topLabwareDefinition,
86
- nestedLabwareNickName: topLabwareDisplayName,
87
- },
88
- ]
89
- }, [])
90
- }
91
-
92
- return []
93
- }
94
-
95
- function getModuleInitialLoadInfo(
96
- moduleId: string,
97
- commands: RunTimeCommand[]
98
- ): {
99
- location: ModuleLocation
100
- protocolLoadOrder: number
101
- } {
102
- const moduleLoadIndex = commands.findIndex(
103
- (command: RunTimeCommand): command is LoadModuleRunTimeCommand =>
104
- command.commandType === 'loadModule' &&
105
- command.result?.moduleId === moduleId
106
- )
107
-
108
- if (moduleLoadIndex === -1) {
109
- throw new Error(
110
- 'expected to be able to find module location, but could not'
111
- )
112
- }
113
-
114
- const protocolLoadOrder = commands
115
- .slice(0, moduleLoadIndex)
116
- .reduce(
117
- (moduleLoadCount, command) =>
118
- command.commandType === 'loadModule'
119
- ? moduleLoadCount + 1
120
- : moduleLoadCount,
121
- 0
122
- )
123
-
124
- return {
125
- location: (commands[moduleLoadIndex] as LoadModuleRunTimeCommand).params
126
- .location,
127
- protocolLoadOrder,
128
- }
129
- }
@@ -1,29 +0,0 @@
1
- import type { RobotType } from '@opentrons/shared-data'
2
-
3
- const OT2_STANDARD_DECK_VIEW_LAYER_BLOCK_LIST: string[] = [
4
- 'calibrationMarkings',
5
- 'fixedBase',
6
- 'doorStops',
7
- 'metalFrame',
8
- 'removalHandle',
9
- 'removableDeckOutline',
10
- 'screwHoles',
11
- ]
12
-
13
- const OT3_STANDARD_DECK_VIEW_LAYER_BLOCK_LIST: string[] = [
14
- 'DECK_BASE',
15
- 'BARCODE_COVERS',
16
- ]
17
-
18
- export const getStandardDeckViewLayerBlockList = (
19
- robotType: RobotType
20
- ): string[] => {
21
- switch (robotType) {
22
- case 'OT-2 Standard':
23
- return OT2_STANDARD_DECK_VIEW_LAYER_BLOCK_LIST
24
- case 'OT-3 Standard':
25
- return OT3_STANDARD_DECK_VIEW_LAYER_BLOCK_LIST
26
- default:
27
- return []
28
- }
29
- }
@@ -1,30 +0,0 @@
1
- import type { Liquid } from '@opentrons/shared-data'
2
- import type { WellFill } from '../../Labware'
3
- import type { LabwareByLiquidId } from '../types'
4
-
5
- export function getWellFillFromLabwareId(
6
- labwareId: string,
7
- liquidsInLoadOrder: Liquid[],
8
- labwareByLiquidId: LabwareByLiquidId
9
- ): WellFill {
10
- let labwareWellFill: WellFill = {}
11
- const liquidIds = Object.keys(labwareByLiquidId)
12
- const labwareInfo = Object.values(labwareByLiquidId)
13
-
14
- labwareInfo.forEach((labwareArray, index) => {
15
- labwareArray.forEach(labware => {
16
- if (labware.labwareId === labwareId) {
17
- const liquidId = liquidIds[index]
18
- const liquid = liquidsInLoadOrder.find(liquid => liquid.id === liquidId)
19
- const wellFill: {
20
- [well: string]: string
21
- } = {}
22
- Object.keys(labware.volumeByWell).forEach(key => {
23
- wellFill[key] = liquid?.displayColor ?? ''
24
- })
25
- labwareWellFill = { ...labwareWellFill, ...wellFill }
26
- }
27
- })
28
- })
29
- return labwareWellFill
30
- }
@@ -1,4 +0,0 @@
1
- export * from './getLabwareInSlots'
2
- export * from './getStandardDeckViewLayerBlockList'
3
- export * from './getLabwareInfoByLiquidId'
4
- export * from './getWellFillFromLabwareId'
@@ -1,40 +0,0 @@
1
- import * as React from 'react'
2
- import { PipetteSelect as PipetteSelectComponent } from './PipetteSelect'
3
-
4
- import type { Story, Meta } from '@storybook/react'
5
-
6
- export default {
7
- title: 'Library/Organisms/Pipette Select',
8
- } as Meta
9
-
10
- const Template: Story<React.ComponentProps<typeof PipetteSelectComponent>> = ({
11
- pipetteName,
12
- ...args
13
- }) => {
14
- const [pipetteNameControlled, setPipetteNameControlled] = React.useState(
15
- pipetteName
16
- )
17
- const handleChange = (pipName: string): unknown => {
18
- setPipetteNameControlled(pipName)
19
- }
20
- return (
21
- <PipetteSelectComponent
22
- {...args}
23
- pipetteName={pipetteNameControlled}
24
- onPipetteChange={handleChange}
25
- />
26
- )
27
- }
28
- export const PipetteSelect = Template.bind({})
29
- PipetteSelect.args = {
30
- nameBlocklist: [
31
- 'p20_multi_gen2',
32
- 'p300_multi_gen2',
33
- 'p20_single_flex',
34
- 'p300_single_flex',
35
- 'p1000_single_flex',
36
- 'p1000_multi_flex',
37
- 'p50_multi_flex',
38
- ],
39
- enableNoneOption: true,
40
- }
@@ -1,170 +0,0 @@
1
- import groupBy from 'lodash/groupBy'
2
- import {
3
- getAllPipetteNames,
4
- getPipetteNameSpecs,
5
- GEN1,
6
- GEN2,
7
- FLEX,
8
- } from '@opentrons/shared-data'
9
- import { Flex } from '../primitives'
10
- import { Select, CONTEXT_VALUE } from '../forms'
11
- import styles from './PipetteSelect.module.css'
12
- import type { PipetteNameSpecs } from '@opentrons/shared-data'
13
- import type { ActionMeta, SingleValue, MultiValue } from 'react-select'
14
- import type { SelectOption } from '../forms'
15
- export interface PipetteSelectProps {
16
- /** currently selected value, optional in case selecting triggers immediate action */
17
- pipetteName?: string | null
18
- /** react-select change handler */
19
- onPipetteChange: (
20
- pipetteName: string | null,
21
- e: ActionMeta<SelectOption>
22
- ) => void
23
- /** list of pipette names to omit */
24
- nameBlocklist?: string[]
25
- /** whether or not "None" shows up as the default option */
26
- enableNoneOption?: boolean
27
- /** input tabIndex */
28
- tabIndex?: string | number
29
- /** classes to apply to the top-level component */
30
- className?: string
31
- /** custom id to be applied. likely to be used as a data test id for e2e testing */
32
- id?: string
33
- disabled?: boolean
34
- }
35
-
36
- // TODO(mc, 2019-10-14): i18n
37
- const NONE = 'None'
38
- const OPTION_NONE = { value: '', label: NONE }
39
-
40
- const PIPETTE_SORT = ['maxVolume', 'channels'] as const
41
-
42
- // @ts-expect-error(mc, 2021-04-27): use TS type guard for filter
43
- const allPipetteNameSpecs: PipetteNameSpecs[] = getAllPipetteNames(
44
- ...PIPETTE_SORT
45
- )
46
- .map(getPipetteNameSpecs)
47
- .filter(Boolean)
48
-
49
- const specsByCategory = groupBy(allPipetteNameSpecs, 'displayCategory')
50
-
51
- const specToOption = ({
52
- name,
53
- displayName,
54
- }: PipetteNameSpecs): { value: string; label: string } => ({
55
- value: name,
56
- label: displayName,
57
- })
58
-
59
- export const PipetteSelect = (props: PipetteSelectProps): JSX.Element => {
60
- const {
61
- tabIndex,
62
- className,
63
- enableNoneOption,
64
- id,
65
- nameBlocklist = [],
66
- disabled = false,
67
- } = props
68
- const allowlist = ({ value }: SelectOption): boolean => {
69
- return !nameBlocklist.some(n => n === value)
70
- }
71
- const flexOptions = specsByCategory[FLEX].map(specToOption).filter(allowlist)
72
- const gen2Options = specsByCategory[GEN2].map(specToOption).filter(allowlist)
73
- const gen1Options = specsByCategory[GEN1].map(specToOption).filter(allowlist)
74
- const groupedOptions = [
75
- ...(enableNoneOption ? [OPTION_NONE] : []),
76
- ...(flexOptions.length > 0 ? [{ options: flexOptions }] : []),
77
- ...(gen2Options.length > 0 ? [{ options: gen2Options }] : []),
78
- ...(gen1Options.length > 0 ? [{ options: gen1Options }] : []),
79
- ]
80
- const defaultValue = enableNoneOption ? OPTION_NONE : null
81
- const value =
82
- allPipetteNameSpecs
83
- .filter(s => s.name === props.pipetteName)
84
- .map(specToOption)[0] || defaultValue
85
-
86
- return (
87
- <Select
88
- isSearchable={false}
89
- menuPosition="fixed"
90
- className={className}
91
- options={groupedOptions}
92
- value={value}
93
- isDisabled={disabled}
94
- defaultValue={defaultValue}
95
- tabIndex={tabIndex as number}
96
- id={id}
97
- onChange={(
98
- option: SingleValue<SelectOption> | MultiValue<SelectOption>,
99
- e: ActionMeta<SelectOption>
100
- ) => {
101
- const value = (option as SelectOption).value
102
- ? (option as SelectOption).value
103
- : null
104
- props.onPipetteChange(value, e)
105
- }}
106
- formatOptionLabel={(option, { context }) => {
107
- const { value } = option
108
- const label = option.label || value
109
- const specs = allPipetteNameSpecs.find(s => s.name === value)
110
-
111
- return context === CONTEXT_VALUE || value === '' || !specs ? (
112
- label
113
- ) : (
114
- <PipetteNameItem {...specs} />
115
- )
116
- }}
117
- />
118
- )
119
- }
120
-
121
- const PipetteNameItem = (props: PipetteNameSpecs): JSX.Element => {
122
- const { channels, name, displayCategory } = props
123
- const volumeClassMaybeMatch = name && name.match(/p(\d+)/i)
124
- const volumeClass = volumeClassMaybeMatch ? volumeClassMaybeMatch[1] : ''
125
- let displayChannels = ''
126
- if (channels === 1) {
127
- displayChannels = 'Single-Channel'
128
- } else if (channels === 8) {
129
- displayChannels = '8-Channel'
130
- } else if (channels === 96) {
131
- displayChannels = '96-Channel'
132
- }
133
- return (
134
- <Flex
135
- data-test={dataIdFormat(
136
- 'PipetteNameItem',
137
- volumeClass,
138
- channels,
139
- displayCategory
140
- )}
141
- >
142
- <div className={styles.pipette_volume_class}>{volumeClass}</div>
143
- <div className={styles.pipette_channels}>{displayChannels}</div>
144
- <div className={styles.pipette_category}>
145
- {channels === 96 ? 'FLEX' : displayCategory}
146
- </div>
147
- </Flex>
148
- )
149
- }
150
-
151
- const dataIdFormat = (
152
- componentName: string,
153
- volumeClass: string,
154
- channels: number,
155
- displayCategory: string
156
- ): string => {
157
- let dataIdFormatChannels
158
- if (channels === 1) {
159
- dataIdFormatChannels = 'SingleChannel'
160
- } else if (channels === 8) {
161
- dataIdFormatChannels = 'MultiChannel'
162
- } else {
163
- dataIdFormatChannels = '96-Channel'
164
- }
165
- const dataIdFormatVolumeClass = volumeClass.toLowerCase()
166
- const dataIdFormatDisplayCategory =
167
- displayCategory.charAt(0) + displayCategory.slice(1).toLowerCase()
168
-
169
- return `${componentName}_${dataIdFormatVolumeClass}${dataIdFormatChannels}${dataIdFormatDisplayCategory}`
170
- }
@@ -1,4 +0,0 @@
1
- import { describe, it } from 'vitest'
2
- describe('PipetteSelect', () => {
3
- it.todo('replace deprecated enzyme test')
4
- })