@seamapi/react 2.5.0 → 2.6.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.
Files changed (259) hide show
  1. package/README.md +1 -1
  2. package/dist/elements.js +10947 -10603
  3. package/dist/elements.js.map +1 -1
  4. package/dist/index.css +39 -3
  5. package/dist/index.css.map +1 -1
  6. package/dist/index.min.css +1 -1
  7. package/dist/index.min.css.map +1 -1
  8. package/lib/dates.js.map +1 -1
  9. package/lib/icons/AccessCodeKey.js +1 -1
  10. package/lib/icons/AccessCodeKey.js.map +1 -1
  11. package/lib/icons/Add.js +1 -1
  12. package/lib/icons/Add.js.map +1 -1
  13. package/lib/icons/ArrowBack.js +1 -1
  14. package/lib/icons/ArrowBack.js.map +1 -1
  15. package/lib/icons/ArrowRestart.js +1 -1
  16. package/lib/icons/ArrowRestart.js.map +1 -1
  17. package/lib/icons/ArrowRight.js +1 -1
  18. package/lib/icons/ArrowRight.js.map +1 -1
  19. package/lib/icons/BatteryLevelCritical.js +1 -1
  20. package/lib/icons/BatteryLevelCritical.js.map +1 -1
  21. package/lib/icons/BatteryLevelFull.js +1 -1
  22. package/lib/icons/BatteryLevelFull.js.map +1 -1
  23. package/lib/icons/BatteryLevelHigh.js +1 -1
  24. package/lib/icons/BatteryLevelHigh.js.map +1 -1
  25. package/lib/icons/BatteryLevelLow.js +1 -1
  26. package/lib/icons/BatteryLevelLow.js.map +1 -1
  27. package/lib/icons/BatteryLevelWired.js +1 -1
  28. package/lib/icons/BatteryLevelWired.js.map +1 -1
  29. package/lib/icons/Bee.js +1 -1
  30. package/lib/icons/Bee.js.map +1 -1
  31. package/lib/icons/Check.js +1 -1
  32. package/lib/icons/Check.js.map +1 -1
  33. package/lib/icons/CheckBlack.js +1 -1
  34. package/lib/icons/CheckBlack.js.map +1 -1
  35. package/lib/icons/CheckGreen.js +1 -1
  36. package/lib/icons/CheckGreen.js.map +1 -1
  37. package/lib/icons/CheckboxBlank.js +1 -1
  38. package/lib/icons/CheckboxBlank.js.map +1 -1
  39. package/lib/icons/CheckboxFilled.js +1 -1
  40. package/lib/icons/CheckboxFilled.js.map +1 -1
  41. package/lib/icons/ChevronDown.js +1 -1
  42. package/lib/icons/ChevronDown.js.map +1 -1
  43. package/lib/icons/ChevronRight.js +1 -1
  44. package/lib/icons/ChevronRight.js.map +1 -1
  45. package/lib/icons/ChevronWide.js +1 -1
  46. package/lib/icons/ChevronWide.js.map +1 -1
  47. package/lib/icons/ClimateSettingSchedule.js +1 -1
  48. package/lib/icons/ClimateSettingSchedule.js.map +1 -1
  49. package/lib/icons/Close.js +1 -1
  50. package/lib/icons/Close.js.map +1 -1
  51. package/lib/icons/CloseWhite.js +1 -1
  52. package/lib/icons/CloseWhite.js.map +1 -1
  53. package/lib/icons/Copy.js +1 -1
  54. package/lib/icons/Copy.js.map +1 -1
  55. package/lib/icons/DotsEllipsisMore.js +1 -1
  56. package/lib/icons/DotsEllipsisMore.js.map +1 -1
  57. package/lib/icons/Edit.js +1 -1
  58. package/lib/icons/Edit.js.map +1 -1
  59. package/lib/icons/ExclamationCircle.js +1 -1
  60. package/lib/icons/ExclamationCircle.js.map +1 -1
  61. package/lib/icons/ExclamationCircleOutline.js +1 -1
  62. package/lib/icons/ExclamationCircleOutline.js.map +1 -1
  63. package/lib/icons/Fan.js +1 -1
  64. package/lib/icons/Fan.js.map +1 -1
  65. package/lib/icons/FanOutline.js +1 -1
  66. package/lib/icons/FanOutline.js.map +1 -1
  67. package/lib/icons/Info.js +1 -1
  68. package/lib/icons/Info.js.map +1 -1
  69. package/lib/icons/InfoDark.js +1 -1
  70. package/lib/icons/InfoDark.js.map +1 -1
  71. package/lib/icons/LockLocked.js +1 -1
  72. package/lib/icons/LockLocked.js.map +1 -1
  73. package/lib/icons/LockUnlocked.js +1 -1
  74. package/lib/icons/LockUnlocked.js.map +1 -1
  75. package/lib/icons/Off.js +1 -1
  76. package/lib/icons/Off.js.map +1 -1
  77. package/lib/icons/OnlineStatusAccountOffline.js +1 -1
  78. package/lib/icons/OnlineStatusAccountOffline.js.map +1 -1
  79. package/lib/icons/OnlineStatusDeviceOffline.js +1 -1
  80. package/lib/icons/OnlineStatusDeviceOffline.js.map +1 -1
  81. package/lib/icons/OnlineStatusOnline.js +1 -1
  82. package/lib/icons/OnlineStatusOnline.js.map +1 -1
  83. package/lib/icons/RadioChecked.js +1 -1
  84. package/lib/icons/RadioChecked.js.map +1 -1
  85. package/lib/icons/RadioUnchecked.js +1 -1
  86. package/lib/icons/RadioUnchecked.js.map +1 -1
  87. package/lib/icons/Seam.js +1 -1
  88. package/lib/icons/Seam.js.map +1 -1
  89. package/lib/icons/Search.js +1 -1
  90. package/lib/icons/Search.js.map +1 -1
  91. package/lib/icons/TemperatureAdd.js +1 -1
  92. package/lib/icons/TemperatureAdd.js.map +1 -1
  93. package/lib/icons/TemperatureSubtract.js +1 -1
  94. package/lib/icons/TemperatureSubtract.js.map +1 -1
  95. package/lib/icons/ThermostatCool.js +1 -1
  96. package/lib/icons/ThermostatCool.js.map +1 -1
  97. package/lib/icons/ThermostatCoolLarge.js +1 -1
  98. package/lib/icons/ThermostatCoolLarge.js.map +1 -1
  99. package/lib/icons/ThermostatHeat.js +1 -1
  100. package/lib/icons/ThermostatHeat.js.map +1 -1
  101. package/lib/icons/ThermostatHeatCool.js +1 -1
  102. package/lib/icons/ThermostatHeatCool.js.map +1 -1
  103. package/lib/icons/ThermostatHeatLarge.js +1 -1
  104. package/lib/icons/ThermostatHeatLarge.js.map +1 -1
  105. package/lib/icons/ThermostatOff.js +1 -1
  106. package/lib/icons/ThermostatOff.js.map +1 -1
  107. package/lib/icons/TriangleWarning.js +1 -1
  108. package/lib/icons/TriangleWarning.js.map +1 -1
  109. package/lib/icons/TriangleWarningOutline.js +1 -1
  110. package/lib/icons/TriangleWarningOutline.js.map +1 -1
  111. package/lib/seam/SeamProvider.js.map +1 -1
  112. package/lib/seam/access-codes/use-access-codes.js.map +1 -1
  113. package/lib/seam/access-codes/use-update-access-code.js.map +1 -1
  114. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js.map +1 -1
  115. package/lib/seam/components/AccessCodeDetails/AccessCodeDevice.js.map +1 -1
  116. package/lib/seam/components/AccessCodeTable/AccessCodeHealthBar.js.map +1 -1
  117. package/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.d.ts +6 -0
  118. package/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.js +27 -0
  119. package/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.js.map +1 -0
  120. package/lib/seam/components/AccessCodeTable/AccessCodeMenu.js.map +1 -1
  121. package/lib/seam/components/AccessCodeTable/AccessCodeRow.js +2 -2
  122. package/lib/seam/components/AccessCodeTable/AccessCodeRow.js.map +1 -1
  123. package/lib/seam/components/AccessCodeTable/AccessCodeTable.js.map +1 -1
  124. package/lib/seam/components/AccessCodeTable/CodeDetails.js +1 -1
  125. package/lib/seam/components/AccessCodeTable/CodeDetails.js.map +1 -1
  126. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js.map +1 -1
  127. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js.map +1 -1
  128. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js.map +1 -1
  129. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js.map +1 -1
  130. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js.map +1 -1
  131. package/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.js.map +1 -1
  132. package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js.map +1 -1
  133. package/lib/seam/components/DeviceDetails/DeviceDetails.js.map +1 -1
  134. package/lib/seam/components/DeviceDetails/LockDeviceDetails.js.map +1 -1
  135. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js.map +1 -1
  136. package/lib/seam/components/DeviceTable/DeviceHealthBar.js.map +1 -1
  137. package/lib/seam/components/DeviceTable/DeviceTable.js.map +1 -1
  138. package/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.js.map +1 -1
  139. package/lib/seam/components/SupportedDeviceTable/FilterCategoryMenu.js.map +1 -1
  140. package/lib/seam/components/SupportedDeviceTable/HiddenDevicesOverlay.js.map +1 -1
  141. package/lib/seam/components/SupportedDeviceTable/ShowAllDevicesButton.js.map +1 -1
  142. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceContent.d.ts +3 -1
  143. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceContent.js +3 -1
  144. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceContent.js.map +1 -1
  145. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceFilterArea.js.map +1 -1
  146. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceManufacturerSection.js.map +1 -1
  147. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceTable.d.ts +3 -1
  148. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceTable.js +2 -2
  149. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceTable.js.map +1 -1
  150. package/lib/seam/components/SupportedDeviceTable/use-device-model.js +5 -1
  151. package/lib/seam/components/SupportedDeviceTable/use-device-model.js.map +1 -1
  152. package/lib/seam/components/SupportedDeviceTable/use-device-models.js +5 -1
  153. package/lib/seam/components/SupportedDeviceTable/use-device-models.js.map +1 -1
  154. package/lib/seam/components/SupportedDeviceTable/use-filtered-device-models.d.ts +3 -1
  155. package/lib/seam/components/SupportedDeviceTable/use-filtered-device-models.js +14 -3
  156. package/lib/seam/components/SupportedDeviceTable/use-filtered-device-models.js.map +1 -1
  157. package/lib/seam/components/SupportedDeviceTable/use-filtered-manufacturers.js.map +1 -1
  158. package/lib/seam/components/SupportedDeviceTable/use-manufacturers.js.map +1 -1
  159. package/lib/seam/connect-webviews/use-create-connect-webview.js.map +1 -1
  160. package/lib/seam/devices/use-devices.js.map +1 -1
  161. package/lib/seam/devices/use-toggle-lock.js.map +1 -1
  162. package/lib/seam/error-handlers.js.map +1 -1
  163. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js.map +1 -1
  164. package/lib/seam/thermostats/use-cool-thermostat.js.map +1 -1
  165. package/lib/seam/thermostats/use-heat-cool-thermostat.js.map +1 -1
  166. package/lib/seam/thermostats/use-heat-thermostat.js.map +1 -1
  167. package/lib/seam/thermostats/use-set-thermostat-off.js.map +1 -1
  168. package/lib/seam/thermostats/use-update-fan-mode.js.map +1 -1
  169. package/lib/seam/thermostats/use-update-thermostat.js.map +1 -1
  170. package/lib/seam/use-seam-client.js.map +1 -1
  171. package/lib/set-point-bounds.js.map +1 -1
  172. package/lib/telemetry/TelemetryProvider.js.map +1 -1
  173. package/lib/telemetry/client.js.map +1 -1
  174. package/lib/ui/AccessCodeForm/AccessCodeForm.js.map +1 -1
  175. package/lib/ui/Checkbox.js.map +1 -1
  176. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js.map +1 -1
  177. package/lib/ui/FormField.js.map +1 -1
  178. package/lib/ui/LoadingToast/LoadingToast.js.map +1 -1
  179. package/lib/ui/Menu/Menu.js.map +1 -1
  180. package/lib/ui/Menu/MenuItem.js.map +1 -1
  181. package/lib/ui/RadioField/Radio.js.map +1 -1
  182. package/lib/ui/RadioField/RadioField.js.map +1 -1
  183. package/lib/ui/Snackbar/Snackbar.js.map +1 -1
  184. package/lib/ui/TextField/TextField.js.map +1 -1
  185. package/lib/ui/TimeZonePicker/TimeZonePicker.js.map +1 -1
  186. package/lib/ui/Tooltip/Tooltip.js.map +1 -1
  187. package/lib/ui/device/BatteryStatus.js.map +1 -1
  188. package/lib/ui/device/LockStatus.js.map +1 -1
  189. package/lib/ui/device/OnlineStatus.js.map +1 -1
  190. package/lib/ui/layout/ContentHeader.js.map +1 -1
  191. package/lib/ui/thermostat/ClimateModeMenu.js.map +1 -1
  192. package/lib/ui/thermostat/TemperatureControlGroup.js.map +1 -1
  193. package/lib/version.d.ts +1 -1
  194. package/lib/version.js +1 -1
  195. package/package.json +5 -5
  196. package/src/lib/icons/AccessCodeKey.tsx +1 -1
  197. package/src/lib/icons/Add.tsx +1 -1
  198. package/src/lib/icons/ArrowBack.tsx +1 -1
  199. package/src/lib/icons/ArrowRestart.tsx +1 -1
  200. package/src/lib/icons/ArrowRight.tsx +1 -1
  201. package/src/lib/icons/BatteryLevelCritical.tsx +1 -1
  202. package/src/lib/icons/BatteryLevelFull.tsx +1 -1
  203. package/src/lib/icons/BatteryLevelHigh.tsx +1 -1
  204. package/src/lib/icons/BatteryLevelLow.tsx +1 -1
  205. package/src/lib/icons/BatteryLevelWired.tsx +1 -1
  206. package/src/lib/icons/Bee.tsx +1 -1
  207. package/src/lib/icons/Check.tsx +1 -1
  208. package/src/lib/icons/CheckBlack.tsx +1 -1
  209. package/src/lib/icons/CheckGreen.tsx +1 -1
  210. package/src/lib/icons/CheckboxBlank.tsx +1 -1
  211. package/src/lib/icons/CheckboxFilled.tsx +1 -1
  212. package/src/lib/icons/ChevronDown.tsx +1 -1
  213. package/src/lib/icons/ChevronRight.tsx +1 -1
  214. package/src/lib/icons/ChevronWide.tsx +1 -1
  215. package/src/lib/icons/ClimateSettingSchedule.tsx +1 -1
  216. package/src/lib/icons/Close.tsx +1 -1
  217. package/src/lib/icons/CloseWhite.tsx +1 -1
  218. package/src/lib/icons/Copy.tsx +1 -1
  219. package/src/lib/icons/DotsEllipsisMore.tsx +1 -1
  220. package/src/lib/icons/Edit.tsx +1 -1
  221. package/src/lib/icons/ExclamationCircle.tsx +1 -1
  222. package/src/lib/icons/ExclamationCircleOutline.tsx +1 -1
  223. package/src/lib/icons/Fan.tsx +1 -1
  224. package/src/lib/icons/FanOutline.tsx +1 -1
  225. package/src/lib/icons/Info.tsx +1 -1
  226. package/src/lib/icons/InfoDark.tsx +1 -1
  227. package/src/lib/icons/LockLocked.tsx +1 -1
  228. package/src/lib/icons/LockUnlocked.tsx +1 -1
  229. package/src/lib/icons/Off.tsx +1 -1
  230. package/src/lib/icons/OnlineStatusAccountOffline.tsx +1 -1
  231. package/src/lib/icons/OnlineStatusDeviceOffline.tsx +1 -1
  232. package/src/lib/icons/OnlineStatusOnline.tsx +2 -2
  233. package/src/lib/icons/RadioChecked.tsx +1 -1
  234. package/src/lib/icons/RadioUnchecked.tsx +1 -1
  235. package/src/lib/icons/Seam.tsx +1 -2
  236. package/src/lib/icons/Search.tsx +1 -1
  237. package/src/lib/icons/TemperatureAdd.tsx +1 -1
  238. package/src/lib/icons/TemperatureSubtract.tsx +1 -1
  239. package/src/lib/icons/ThermostatCool.tsx +1 -1
  240. package/src/lib/icons/ThermostatCoolLarge.tsx +1 -1
  241. package/src/lib/icons/ThermostatHeat.tsx +1 -1
  242. package/src/lib/icons/ThermostatHeatCool.tsx +2 -2
  243. package/src/lib/icons/ThermostatHeatLarge.tsx +1 -1
  244. package/src/lib/icons/ThermostatOff.tsx +1 -1
  245. package/src/lib/icons/TriangleWarning.tsx +1 -1
  246. package/src/lib/icons/TriangleWarningOutline.tsx +2 -5
  247. package/src/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.tsx +65 -0
  248. package/src/lib/seam/components/AccessCodeTable/AccessCodeRow.tsx +10 -6
  249. package/src/lib/seam/components/AccessCodeTable/CodeDetails.tsx +2 -1
  250. package/src/lib/seam/components/SupportedDeviceTable/SupportedDeviceContent.tsx +6 -0
  251. package/src/lib/seam/components/SupportedDeviceTable/SupportedDeviceTable.element.ts +2 -0
  252. package/src/lib/seam/components/SupportedDeviceTable/SupportedDeviceTable.tsx +6 -0
  253. package/src/lib/seam/components/SupportedDeviceTable/use-device-model.ts +5 -1
  254. package/src/lib/seam/components/SupportedDeviceTable/use-device-models.ts +5 -1
  255. package/src/lib/seam/components/SupportedDeviceTable/use-filtered-device-models.ts +25 -8
  256. package/src/lib/version.ts +1 -1
  257. package/src/styles/_main.scss +2 -0
  258. package/src/styles/_seam-table.scss +18 -3
  259. package/src/styles/_visibility.scss +25 -0
@@ -0,0 +1,65 @@
1
+ import { AccessCodeKeyIcon } from 'lib/icons/AccessCodeKey.js'
2
+ import { ExclamationCircleOutlineIcon } from 'lib/icons/ExclamationCircleOutline.js'
3
+ import { TriangleWarningOutlineIcon } from 'lib/icons/TriangleWarningOutline.js'
4
+ import type { UseAccessCodesData } from 'lib/seam/access-codes/use-access-codes.js'
5
+
6
+ export interface AccessCodeMainIconProps {
7
+ accessCode: UseAccessCodesData[number]
8
+ }
9
+
10
+ export function AccessCodeMainIcon({
11
+ accessCode,
12
+ }: AccessCodeMainIconProps): JSX.Element {
13
+ const errorCount = accessCode.errors.length
14
+ const warningCount = accessCode.warnings.length
15
+ const isPlural = errorCount === 0 || errorCount > 1
16
+ const errorIconTitle = isPlural
17
+ ? `${errorCount} ${t.codeIssues}`
18
+ : `${errorCount} ${t.codeIssue}`
19
+ const warningIconTitle = isPlural
20
+ ? `${warningCount} ${t.codeIssues}`
21
+ : `${warningCount} ${t.codeIssue}`
22
+
23
+ if (errorCount > 0) {
24
+ return (
25
+ <>
26
+ <div
27
+ className='seam-issue-icon-wrap seam-md-invisible'
28
+ title={errorIconTitle}
29
+ >
30
+ <ExclamationCircleOutlineIcon />
31
+ </div>
32
+ <div className='seam-invisible seam-md-flex'>
33
+ <AccessCodeKeyIcon />
34
+ </div>
35
+ </>
36
+ )
37
+ }
38
+
39
+ if (errorCount === 0 && warningCount > 0) {
40
+ return (
41
+ <>
42
+ <div
43
+ className='seam-issue-icon-wrap seam-md-invisible'
44
+ title={warningIconTitle}
45
+ >
46
+ <TriangleWarningOutlineIcon />
47
+ </div>
48
+ <div className='seam-invisible seam-md-flex'>
49
+ <AccessCodeKeyIcon />
50
+ </div>
51
+ </>
52
+ )
53
+ }
54
+
55
+ return (
56
+ <div className='seam-issue-icon-wrap'>
57
+ <AccessCodeKeyIcon />
58
+ </div>
59
+ )
60
+ }
61
+
62
+ const t = {
63
+ codeIssue: 'code issue',
64
+ codeIssues: 'code issues',
65
+ }
@@ -1,7 +1,7 @@
1
- import { AccessCodeKeyIcon } from 'lib/icons/AccessCodeKey.js'
2
1
  import { ExclamationCircleOutlineIcon } from 'lib/icons/ExclamationCircleOutline.js'
3
2
  import { TriangleWarningOutlineIcon } from 'lib/icons/TriangleWarningOutline.js'
4
3
  import type { UseAccessCodesData } from 'lib/seam/access-codes/use-access-codes.js'
4
+ import { AccessCodeMainIcon } from 'lib/seam/components/AccessCodeTable/AccessCodeMainIcon.js'
5
5
  import { AccessCodeMenu } from 'lib/seam/components/AccessCodeTable/AccessCodeMenu.js'
6
6
  import { CodeDetails } from 'lib/seam/components/AccessCodeTable/CodeDetails.js'
7
7
  import { TableCell } from 'lib/ui/Table/TableCell.js'
@@ -36,9 +36,7 @@ export function AccessCodeRow({
36
36
  return (
37
37
  <TableRow onClick={onClick}>
38
38
  <TableCell className='seam-icon-cell'>
39
- <div>
40
- <AccessCodeKeyIcon />
41
- </div>
39
+ <AccessCodeMainIcon accessCode={accessCode} />
42
40
  </TableCell>
43
41
  <TableCell className='seam-name-cell'>
44
42
  <Title className='seam-truncated-text'>{accessCode.name}</Title>
@@ -46,12 +44,18 @@ export function AccessCodeRow({
46
44
  </TableCell>
47
45
  <TableCell className='seam-action-cell'>
48
46
  {errorCount > 0 && (
49
- <div className='seam-issue-icon-wrap' title={errorIconTitle}>
47
+ <div
48
+ className='seam-issue-icon-wrap seam-invisible seam-md-flex'
49
+ title={errorIconTitle}
50
+ >
50
51
  <ExclamationCircleOutlineIcon />
51
52
  </div>
52
53
  )}
53
54
  {errorCount === 0 && warningCount > 0 && (
54
- <div className='seam-issue-icon-wrap' title={warningIconTitle}>
55
+ <div
56
+ className='seam-issue-icon-wrap seam-invisible seam-md-flex'
57
+ title={warningIconTitle}
58
+ >
55
59
  <TriangleWarningOutlineIcon />
56
60
  </div>
57
61
  )}
@@ -17,7 +17,8 @@ export function CodeDetails(props: { accessCode: AccessCode }): JSX.Element {
17
17
  <DotDivider />
18
18
  <Duration accessCode={accessCode} />
19
19
  <DotDivider />
20
- {t.code}: {accessCode.code}
20
+ <span className='seam-invisible seam-md-block'>{t.code}: </span>
21
+ {accessCode.code}
21
22
  </div>
22
23
  )
23
24
  }
@@ -15,6 +15,8 @@ interface SupportedDeviceContentProps {
15
15
  filters: DeviceModelFilters
16
16
  manufacturers: string[] | null
17
17
  excludedManufacturers: string[]
18
+ includeIf: string[] | null
19
+ excludeIf: string[]
18
20
  }
19
21
 
20
22
  export function SupportedDeviceContent({
@@ -23,6 +25,8 @@ export function SupportedDeviceContent({
23
25
  filters,
24
26
  manufacturers,
25
27
  excludedManufacturers,
28
+ includeIf,
29
+ excludeIf,
26
30
  }: SupportedDeviceContentProps): JSX.Element | null {
27
31
  const { deviceModels, isLoading, isError, refetch } = useFilteredDeviceModels(
28
32
  {
@@ -30,6 +34,8 @@ export function SupportedDeviceContent({
30
34
  filters,
31
35
  manufacturers,
32
36
  excludedManufacturers,
37
+ includeIf,
38
+ excludeIf,
33
39
  }
34
40
  )
35
41
 
@@ -8,6 +8,8 @@ export const props: ElementProps<SupportedDeviceTableProps> = {
8
8
  disableFilter: 'boolean',
9
9
  manufacturers: 'array',
10
10
  excludedManufacturers: 'array',
11
+ includeIf: 'array',
12
+ excludeIf: 'array',
11
13
  }
12
14
 
13
15
  export { SupportedDeviceTable as Component } from './SupportedDeviceTable.js'
@@ -15,6 +15,8 @@ export interface SupportedDeviceTableProps extends CommonProps {
15
15
  disableFilter?: boolean
16
16
  manufacturers?: string[] | null
17
17
  excludedManufacturers?: string[]
18
+ includeIf?: string[] | null
19
+ excludeIf?: string[]
18
20
  }
19
21
 
20
22
  export const NestedSupportedDeviceTable =
@@ -24,6 +26,8 @@ export function SupportedDeviceTable({
24
26
  disableFilter = false,
25
27
  manufacturers = null,
26
28
  excludedManufacturers = [],
29
+ includeIf = null,
30
+ excludeIf = [],
27
31
  className,
28
32
  }: SupportedDeviceTableProps = {}): JSX.Element {
29
33
  useComponentTelemetry('SupportedDeviceTable')
@@ -59,6 +63,8 @@ export function SupportedDeviceTable({
59
63
  filters={filters}
60
64
  manufacturers={manufacturers}
61
65
  excludedManufacturers={excludedManufacturers}
66
+ includeIf={includeIf}
67
+ excludeIf={excludeIf}
62
68
  />
63
69
  </div>
64
70
  )
@@ -37,7 +37,11 @@ export function useDeviceModel(
37
37
  },
38
38
  })
39
39
 
40
- return { ...rest, deviceModel: data }
40
+ return {
41
+ ...rest,
42
+ // @ts-expect-error: Upstream mismatch between type and route type.
43
+ deviceModel: data,
44
+ }
41
45
  }
42
46
 
43
47
  type DeviceModelsGetParams = RouteRequestParams<'/v1/device_models/get'>
@@ -49,7 +49,11 @@ export function useDeviceModels(
49
49
  },
50
50
  })
51
51
 
52
- return { ...rest, deviceModels: data }
52
+ return {
53
+ ...rest,
54
+ // @ts-expect-error: Upstream mismatch between type and route type.
55
+ deviceModels: data,
56
+ }
53
57
  }
54
58
 
55
59
  type DeviceModelsListParams = RouteRequestParams<'/v1/device_models/list'>
@@ -13,17 +13,30 @@ export interface DeviceModelFilters {
13
13
  export const useFilteredDeviceModels = ({
14
14
  filterValue,
15
15
  filters,
16
+ includeIf,
17
+ excludeIf,
16
18
  ...manufacturersParams
17
19
  }: {
18
20
  filterValue: string
19
21
  filters: DeviceModelFilters
20
22
  manufacturers: string[] | null
21
23
  excludedManufacturers: string[]
24
+ includeIf: string[] | null
25
+ excludeIf: string[]
22
26
  }): ReturnType<typeof useDeviceModels> => {
23
27
  const { manufacturers } = useFilteredManufacturers(manufacturersParams)
24
28
 
25
29
  const params: UseDeviceModelsParams = {}
26
30
 
31
+ if (excludeIf.length > 0) {
32
+ params.exclude_if = excludeIf
33
+ }
34
+
35
+ // UPSTREAM: API does not parse zero-length arrays correctly.
36
+ if (includeIf != null && includeIf.length > 0) {
37
+ params.include_if = includeIf
38
+ }
39
+
27
40
  if (filterValue.trim() !== '') {
28
41
  params.text_search = filterValue.trim()
29
42
  }
@@ -50,13 +63,17 @@ export const useFilteredDeviceModels = ({
50
63
 
51
64
  return {
52
65
  ...rest,
53
- deviceModels: deviceModels?.filter(
54
- (deviceModel) =>
55
- manufacturers?.some(
56
- (manufacturer) =>
57
- deviceModel.manufacturer.manufacturer_id ===
58
- manufacturer.manufacturer_id
59
- )
60
- ),
66
+ deviceModels:
67
+ // UPSTREAM: API does not parse zero-length arrays correctly.
68
+ includeIf?.length === 0
69
+ ? []
70
+ : deviceModels?.filter(
71
+ (deviceModel) =>
72
+ manufacturers?.some(
73
+ (manufacturer) =>
74
+ deviceModel.manufacturer.manufacturer_id ===
75
+ manufacturer.manufacturer_id
76
+ )
77
+ ),
61
78
  }
62
79
  }
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '2.5.0'
1
+ const seamapiReactVersion = '2.6.0'
2
2
 
3
3
  export default seamapiReactVersion
@@ -5,6 +5,7 @@
5
5
  @use './alert';
6
6
  @use './buttons';
7
7
  @use './layout';
8
+ @use './visibility';
8
9
  @use './loading_toast';
9
10
  @use './colors';
10
11
  @use './icons';
@@ -41,6 +42,7 @@
41
42
  @include form-field.all;
42
43
  @include buttons.all;
43
44
  @include layout.all;
45
+ @include visibility.all;
44
46
  @include loading_toast.all;
45
47
  @include icons.all;
46
48
  @include menus.all;
@@ -27,11 +27,17 @@
27
27
  justify-content: center;
28
28
 
29
29
  > div {
30
- width: 40px;
30
+ width: 32px;
31
31
  height: 40px;
32
32
  display: flex;
33
33
  align-items: center;
34
34
  justify-content: center;
35
+ margin-right: 4px;
36
+
37
+ @media only screen and (width >= 768px) {
38
+ width: 40px;
39
+ margin-right: 4px;
40
+ }
35
41
  }
36
42
  }
37
43
 
@@ -48,10 +54,15 @@
48
54
  }
49
55
 
50
56
  .seam-details {
51
- font-size: 14px;
57
+ font-size: 12px;
52
58
  line-height: 134%;
53
59
  color: colors.$text-gray-1;
54
60
  display: flex;
61
+ flex-wrap: wrap;
62
+
63
+ @media only screen and (width >= 768px) {
64
+ font-size: 14px;
65
+ }
55
66
 
56
67
  .seam-device-name {
57
68
  max-width: 190px;
@@ -66,10 +77,14 @@
66
77
  }
67
78
 
68
79
  .seam-action-cell {
69
- margin-right: 12px;
80
+ margin-right: 8px;
70
81
  display: flex;
71
82
  align-items: center;
72
83
  justify-content: center;
84
+
85
+ @media only screen and (width >= 768px) {
86
+ margin-right: 12px;
87
+ }
73
88
  }
74
89
 
75
90
  .seam-issue-icon-wrap {
@@ -0,0 +1,25 @@
1
+ @use './colors';
2
+
3
+ @mixin all {
4
+ .seam-invisible {
5
+ display: none !important;
6
+ }
7
+
8
+ .seam-md-flex {
9
+ @media only screen and (width >= 768px) {
10
+ display: flex !important;
11
+ }
12
+ }
13
+
14
+ .seam-md-block {
15
+ @media only screen and (width >= 768px) {
16
+ display: block !important;
17
+ }
18
+ }
19
+
20
+ .seam-md-invisible {
21
+ @media only screen and (width >= 768px) {
22
+ display: none !important;
23
+ }
24
+ }
25
+ }