@seamapi/react 3.1.2 → 4.0.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 (145) hide show
  1. package/README.md +2 -2
  2. package/dist/elements.js +11198 -11349
  3. package/dist/elements.js.map +1 -1
  4. package/dist/index.css +8 -193
  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/seam/components/AccessCodeDetails/AccessCodeDetails.d.ts +1 -1
  9. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js +3 -3
  10. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js.map +1 -1
  11. package/lib/seam/components/AccessCodeTable/AccessCodeTable.d.ts +1 -1
  12. package/lib/seam/components/AccessCodeTable/AccessCodeTable.js +4 -4
  13. package/lib/seam/components/AccessCodeTable/AccessCodeTable.js.map +1 -1
  14. package/lib/seam/components/DeviceDetails/DeviceDetails.d.ts +1 -1
  15. package/lib/seam/components/DeviceDetails/DeviceDetails.js +1 -2
  16. package/lib/seam/components/DeviceDetails/DeviceDetails.js.map +1 -1
  17. package/lib/seam/components/DeviceDetails/LockDeviceDetails.d.ts +1 -1
  18. package/lib/seam/components/DeviceDetails/LockDeviceDetails.js +2 -2
  19. package/lib/seam/components/DeviceDetails/LockDeviceDetails.js.map +1 -1
  20. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.d.ts +1 -1
  21. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js +2 -46
  22. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js.map +1 -1
  23. package/lib/seam/components/DeviceTable/DeviceTable.d.ts +1 -1
  24. package/lib/seam/components/DeviceTable/DeviceTable.js +2 -2
  25. package/lib/seam/components/DeviceTable/DeviceTable.js.map +1 -1
  26. package/lib/seam/components/common-props.d.ts +0 -1
  27. package/lib/seam/components/common-props.js.map +1 -1
  28. package/lib/seam/components/index.d.ts +0 -2
  29. package/lib/seam/components/index.js +0 -2
  30. package/lib/seam/components/index.js.map +1 -1
  31. package/lib/seam/index.d.ts +0 -2
  32. package/lib/seam/index.js +0 -2
  33. package/lib/seam/index.js.map +1 -1
  34. package/lib/seam/thermostats/thermostat-device.d.ts +0 -1
  35. package/lib/seam/thermostats/thermostat-device.js.map +1 -1
  36. package/lib/ui/thermostat/FanModeMenu.js +1 -0
  37. package/lib/ui/thermostat/FanModeMenu.js.map +1 -1
  38. package/lib/version.d.ts +1 -1
  39. package/lib/version.js +1 -1
  40. package/package.json +8 -8
  41. package/src/lib/element.tsx +0 -1
  42. package/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx +0 -3
  43. package/src/lib/seam/components/AccessCodeTable/AccessCodeTable.tsx +0 -4
  44. package/src/lib/seam/components/DeviceDetails/DeviceDetails.tsx +0 -2
  45. package/src/lib/seam/components/DeviceDetails/LockDeviceDetails.tsx +0 -2
  46. package/src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx +0 -144
  47. package/src/lib/seam/components/DeviceTable/DeviceTable.tsx +0 -2
  48. package/src/lib/seam/components/common-props.tsx +0 -1
  49. package/src/lib/seam/components/elements.ts +0 -2
  50. package/src/lib/seam/components/index.ts +0 -2
  51. package/src/lib/seam/index.ts +0 -2
  52. package/src/lib/seam/thermostats/thermostat-device.ts +0 -1
  53. package/src/lib/ui/thermostat/FanModeMenu.tsx +1 -0
  54. package/src/lib/version.ts +1 -1
  55. package/src/styles/_main.scss +0 -4
  56. package/src/styles/_thermostat.scss +0 -98
  57. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.d.ts +0 -7
  58. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js +0 -43
  59. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js.map +0 -1
  60. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.d.ts +0 -7
  61. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js +0 -55
  62. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js.map +0 -1
  63. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.d.ts +0 -5
  64. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js +0 -31
  65. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js.map +0 -1
  66. package/lib/seam/components/ClimateSettingScheduleDetails/dates.d.ts +0 -1
  67. package/lib/seam/components/ClimateSettingScheduleDetails/dates.js +0 -9
  68. package/lib/seam/components/ClimateSettingScheduleDetails/dates.js.map +0 -1
  69. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.d.ts +0 -8
  70. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js +0 -10
  71. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js.map +0 -1
  72. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.d.ts +0 -5
  73. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js +0 -28
  74. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js.map +0 -1
  75. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.d.ts +0 -14
  76. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js +0 -80
  77. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js.map +0 -1
  78. package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.d.ts +0 -5
  79. package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js +0 -29
  80. package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js.map +0 -1
  81. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.d.ts +0 -6
  82. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js +0 -16
  83. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js.map +0 -1
  84. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.d.ts +0 -6
  85. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js +0 -28
  86. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js.map +0 -1
  87. package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.d.ts +0 -7
  88. package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js +0 -25
  89. package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js.map +0 -1
  90. package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.d.ts +0 -6
  91. package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.js +0 -27
  92. package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.js.map +0 -1
  93. package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.d.ts +0 -6
  94. package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.js +0 -46
  95. package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.js.map +0 -1
  96. package/lib/seam/thermostats/use-update-thermostat.d.ts +0 -6
  97. package/lib/seam/thermostats/use-update-thermostat.js +0 -51
  98. package/lib/seam/thermostats/use-update-thermostat.js.map +0 -1
  99. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.d.ts +0 -32
  100. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js +0 -85
  101. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js.map +0 -1
  102. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.d.ts +0 -13
  103. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js +0 -44
  104. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js.map +0 -1
  105. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.d.ts +0 -10
  106. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.js +0 -24
  107. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.js.map +0 -1
  108. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.d.ts +0 -10
  109. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.js +0 -10
  110. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.js.map +0 -1
  111. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.d.ts +0 -15
  112. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.js +0 -30
  113. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.js.map +0 -1
  114. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.d.ts +0 -9
  115. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.js +0 -16
  116. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.js.map +0 -1
  117. package/lib/ui/ClimateSettingForm/set-point-bounds.d.ts +0 -4
  118. package/lib/ui/ClimateSettingForm/set-point-bounds.js +0 -17
  119. package/lib/ui/ClimateSettingForm/set-point-bounds.js.map +0 -1
  120. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx +0 -107
  121. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.element.ts +0 -11
  122. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx +0 -175
  123. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.tsx +0 -72
  124. package/src/lib/seam/components/ClimateSettingScheduleDetails/dates.ts +0 -10
  125. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.tsx +0 -35
  126. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.tsx +0 -60
  127. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.element.ts +0 -17
  128. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.tsx +0 -220
  129. package/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.element.ts +0 -9
  130. package/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.tsx +0 -56
  131. package/src/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.ts +0 -34
  132. package/src/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.ts +0 -53
  133. package/src/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.ts +0 -53
  134. package/src/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.ts +0 -51
  135. package/src/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.ts +0 -83
  136. package/src/lib/seam/thermostats/use-update-thermostat.ts +0 -90
  137. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.tsx +0 -189
  138. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.tsx +0 -118
  139. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.tsx +0 -79
  140. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.tsx +0 -36
  141. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.tsx +0 -120
  142. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.tsx +0 -43
  143. package/src/lib/ui/ClimateSettingForm/set-point-bounds.ts +0 -31
  144. package/src/styles/_climate-setting-schedule-details.scss +0 -44
  145. package/src/styles/_climate-setting-schedule-form.scss +0 -111
@@ -3,11 +3,8 @@ import { useEffect, useState } from 'react'
3
3
 
4
4
  import { debounce } from 'lib/debounce.js'
5
5
  import { CheckBlackIcon } from 'lib/icons/CheckBlack.js'
6
- import { ChevronWideIcon } from 'lib/icons/ChevronWide.js'
7
- import { NestedClimateSettingScheduleTable } from 'lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js'
8
6
  import type { NestedSpecificDeviceDetailsProps } from 'lib/seam/components/DeviceDetails/DeviceDetails.js'
9
7
  import { DeviceInfo } from 'lib/seam/components/DeviceDetails/DeviceInfo.js'
10
- import { useClimateSettingSchedules } from 'lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js'
11
8
  import type {
12
9
  HvacModeSetting,
13
10
  ThermostatDevice,
@@ -17,14 +14,12 @@ import { useHeatCoolThermostat } from 'lib/seam/thermostats/use-heat-cool-thermo
17
14
  import { useHeatThermostat } from 'lib/seam/thermostats/use-heat-thermostat.js'
18
15
  import { useSetThermostatFanMode } from 'lib/seam/thermostats/use-set-thermostat-fan-mode.js'
19
16
  import { useSetThermostatOff } from 'lib/seam/thermostats/use-set-thermostat-off.js'
20
- import { useUpdateThermostat } from 'lib/seam/thermostats/use-update-thermostat.js'
21
17
  import { AccordionRow } from 'lib/ui/layout/AccordionRow.js'
22
18
  import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
23
19
  import { DetailRow } from 'lib/ui/layout/DetailRow.js'
24
20
  import { DetailSection } from 'lib/ui/layout/DetailSection.js'
25
21
  import { DetailSectionGroup } from 'lib/ui/layout/DetailSectionGroup.js'
26
22
  import { Snackbar } from 'lib/ui/Snackbar/Snackbar.js'
27
- import { Switch } from 'lib/ui/Switch/Switch.js'
28
23
  import { ClimateModeMenu } from 'lib/ui/thermostat/ClimateModeMenu.js'
29
24
  import { ClimateSettingStatus } from 'lib/ui/thermostat/ClimateSettingStatus.js'
30
25
  import { FanModeMenu } from 'lib/ui/thermostat/FanModeMenu.js'
@@ -38,54 +33,15 @@ interface ThermostatDeviceDetailsProps
38
33
 
39
34
  export function ThermostatDeviceDetails({
40
35
  device,
41
- errorFilter,
42
- warningFilter,
43
- disableLockUnlock,
44
- disableCreateAccessCode,
45
- disableEditAccessCode,
46
- disableDeleteAccessCode,
47
36
  disableResourceIds,
48
37
  disableConnectedAccountInformation,
49
- disableClimateSettingSchedules,
50
38
  onBack,
51
39
  className,
52
40
  }: ThermostatDeviceDetailsProps): JSX.Element | null {
53
- const [climateSettingsOpen, setClimateSettingsOpen] = useState(false)
54
-
55
- const { climateSettingSchedules } = useClimateSettingSchedules({
56
- device_id: device.device_id,
57
- })
58
-
59
- if (climateSettingsOpen) {
60
- return (
61
- <NestedClimateSettingScheduleTable
62
- deviceId={device.device_id}
63
- errorFilter={errorFilter}
64
- warningFilter={warningFilter}
65
- disableLockUnlock={disableLockUnlock}
66
- disableCreateAccessCode={disableCreateAccessCode}
67
- disableEditAccessCode={disableEditAccessCode}
68
- disableDeleteAccessCode={disableDeleteAccessCode}
69
- disableResourceIds={disableResourceIds}
70
- disableConnectedAccountInformation={disableConnectedAccountInformation}
71
- disableClimateSettingSchedules={disableClimateSettingSchedules}
72
- onBack={() => {
73
- setClimateSettingsOpen(false)
74
- }}
75
- className={className}
76
- />
77
- )
78
- }
79
-
80
41
  if (device == null) {
81
42
  return null
82
43
  }
83
44
 
84
- const climateSettingSchedulesLabel =
85
- climateSettingSchedules?.length !== 1
86
- ? t.climateSchedules
87
- : t.climateSchedule
88
-
89
45
  return (
90
46
  <div className={classNames('seam-device-details', className)}>
91
47
  <ContentHeader title={t.thermostat} onBack={onBack} />
@@ -95,28 +51,6 @@ export function ThermostatDeviceDetails({
95
51
 
96
52
  <div className='seam-thermostat-device-details'>
97
53
  <DetailSectionGroup>
98
- {!disableClimateSettingSchedules && (
99
- <DetailSection
100
- label={t.scheduledClimates}
101
- tooltipContent={t.scheduledClimatesTooltip}
102
- >
103
- <DetailRow
104
- label={
105
- climateSettingSchedules == null
106
- ? t.viewingClimateSchedules
107
- : `${climateSettingSchedules.length} ${climateSettingSchedulesLabel}`
108
- }
109
- onClick={() => {
110
- setClimateSettingsOpen(true)
111
- }}
112
- >
113
- <div className='seam-detail-row-rotated-icon'>
114
- <ChevronWideIcon />
115
- </div>
116
- </DetailRow>
117
- </DetailSection>
118
- )}
119
-
120
54
  <DetailSection
121
55
  label={t.currentSettings}
122
56
  tooltipContent={t.currentSettingsTooltip}
@@ -125,26 +59,6 @@ export function ThermostatDeviceDetails({
125
59
  <FanModeRow device={device} />
126
60
  </DetailSection>
127
61
 
128
- {!disableClimateSettingSchedules && (
129
- <DetailSection
130
- label={t.defaultSettings}
131
- tooltipContent={t.defaultSettingsTooltip}
132
- >
133
- <DetailRow label={t.defaultClimate}>
134
- {device.properties.default_climate_setting != null ? (
135
- <ClimateSettingStatus
136
- climateSetting={device.properties.default_climate_setting}
137
- temperatureUnit='fahrenheit'
138
- iconPlacement='right'
139
- />
140
- ) : (
141
- <p>{t.none}</p>
142
- )}
143
- </DetailRow>
144
-
145
- <ManualOverrideRow device={device} />
146
- </DetailSection>
147
- )}
148
62
  <DeviceInfo
149
63
  device={device}
150
64
  disableConnectedAccountInformation={
@@ -159,51 +73,6 @@ export function ThermostatDeviceDetails({
159
73
  )
160
74
  }
161
75
 
162
- function ManualOverrideRow({
163
- device,
164
- }: {
165
- device: ThermostatDevice
166
- }): JSX.Element {
167
- const { mutate, isSuccess, isError } = useUpdateThermostat()
168
-
169
- return (
170
- <>
171
- <div className='seam-detail-row-wrap'>
172
- <DetailRow label={t.allowManualOverride}>
173
- <Switch
174
- checked={
175
- device.properties.default_climate_setting
176
- ?.manual_override_allowed ?? true
177
- }
178
- onChange={(checked) => {
179
- mutate({
180
- device_id: device.device_id,
181
- default_climate_setting: {
182
- manual_override_allowed: checked,
183
- },
184
- })
185
- }}
186
- />
187
- </DetailRow>
188
- </div>
189
-
190
- <Snackbar
191
- message={t.manualOverrideSuccess}
192
- variant='success'
193
- visible={isSuccess}
194
- automaticVisibility
195
- />
196
-
197
- <Snackbar
198
- message={t.manualOverrideError}
199
- variant='error'
200
- visible={isError}
201
- automaticVisibility
202
- />
203
- </>
204
- )
205
- }
206
-
207
76
  function FanModeRow({ device }: { device: ThermostatDevice }): JSX.Element {
208
77
  const { mutate, isSuccess, isError } = useSetThermostatFanMode()
209
78
 
@@ -430,27 +299,14 @@ function ClimateSettingRow({
430
299
 
431
300
  const t = {
432
301
  thermostat: 'Thermostat',
433
- climateSchedule: 'scheduled climate',
434
- climateSchedules: 'scheduled climates',
435
- viewingClimateSchedules: 'View scheduled climates',
436
- scheduledClimates: 'Scheduled climates',
437
- scheduledClimatesTooltip:
438
- "Scheduled climates let you automatically change the thermostat's climate at a set time.",
439
302
  currentSettings: 'Current settings',
440
303
  currentSettingsTooltip:
441
304
  'These are the settings currently on the device. If you change them here, they change on the device.',
442
305
  climate: 'Climate',
443
306
  fanMode: 'Fan mode',
444
- defaultSettings: 'Default settings',
445
- defaultSettingsTooltip:
446
- 'When a scheduled climate reaches its end time, the default settings will kick in.',
447
- defaultClimate: 'Default climate',
448
- allowManualOverride: 'Allow manual override',
449
307
  none: 'None',
450
308
  fanModeSuccess: 'Successfully updated fan mode!',
451
309
  fanModeError: 'Error updating fan mode. Please try again.',
452
- manualOverrideSuccess: 'Successfully updated manual override!',
453
- manualOverrideError: 'Error updating manual override. Please try again.',
454
310
  climateSettingError: 'Error updating climate setting. Please try again.',
455
311
  saved: 'Saved',
456
312
  }
@@ -68,7 +68,6 @@ export function DeviceTable({
68
68
  disableDeleteAccessCode = false,
69
69
  disableResourceIds = false,
70
70
  disableConnectedAccountInformation = false,
71
- disableClimateSettingSchedules = false,
72
71
  onBack,
73
72
  className,
74
73
  }: DeviceTableProps = {}): JSX.Element {
@@ -117,7 +116,6 @@ export function DeviceTable({
117
116
  disableDeleteAccessCode={disableDeleteAccessCode}
118
117
  disableResourceIds={disableResourceIds}
119
118
  disableConnectedAccountInformation={disableConnectedAccountInformation}
120
- disableClimateSettingSchedules={disableClimateSettingSchedules}
121
119
  onBack={() => {
122
120
  setSelectedDeviceId(null)
123
121
  }}
@@ -23,7 +23,6 @@ export interface RequiredCommonProps {
23
23
  disableLockUnlock: boolean | undefined
24
24
  disableResourceIds: boolean | undefined
25
25
  disableConnectedAccountInformation: boolean | undefined
26
- disableClimateSettingSchedules: boolean | undefined
27
26
  }
28
27
 
29
28
  export type CommonProps = Partial<RequiredCommonProps>
@@ -1,7 +1,5 @@
1
1
  export * as AccessCodeDetails from './AccessCodeDetails/AccessCodeDetails.element.js'
2
2
  export * as AccessCodeTable from './AccessCodeTable/AccessCodeTable.element.js'
3
- export * as ClimateSettingScheduleDetails from './ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.element.js'
4
- export * as ClimateSettingScheduleTable from './ClimateSettingScheduleTable/ClimateSettingScheduleTable.element.js'
5
3
  export * as ConnectAccountButton from './ConnectAccountButton/ConnectAccountButton.element.js'
6
4
  export * as CreateAccessCodeForm from './CreateAccessCodeForm/CreateAccessCodeForm.element.js'
7
5
  export * as DeviceDetails from './DeviceDetails/DeviceDetails.element.js'
@@ -1,7 +1,5 @@
1
1
  export * from './AccessCodeDetails/AccessCodeDetails.js'
2
2
  export * from './AccessCodeTable/AccessCodeTable.js'
3
- export * from './ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js'
4
- export * from './ClimateSettingScheduleTable/ClimateSettingScheduleTable.js'
5
3
  export * from './common-props.js'
6
4
  export * from './ConnectAccountButton/ConnectAccountButton.js'
7
5
  export * from './CreateAccessCodeForm/CreateAccessCodeForm.js'
@@ -11,7 +11,5 @@ export * from './devices/use-device.js'
11
11
  export * from './devices/use-device-providers.js'
12
12
  export * from './devices/use-devices.js'
13
13
  export * from './SeamProvider.js'
14
- export * from './thermostats/climate-setting-schedules/use-climate-setting-schedule.js'
15
- export * from './thermostats/climate-setting-schedules/use-climate-setting-schedules.js'
16
14
  export * from './use-seam-client.js'
17
15
  export * from './use-seam-query-result.js'
@@ -31,7 +31,6 @@ export interface ClimateSetting {
31
31
  heating_set_point_celsius?: number
32
32
  cooling_set_point_fahrenheit?: number
33
33
  heating_set_point_fahrenheit?: number
34
- manual_override_allowed?: boolean
35
34
  }
36
35
 
37
36
  export const isThermostatDevice = (
@@ -49,4 +49,5 @@ export function FanModeMenu({ mode, onChange }: FanModeMenuProps): JSX.Element {
49
49
  const t = {
50
50
  auto: 'Auto',
51
51
  on: 'On',
52
+ circulate: 'Circulate',
52
53
  }
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '3.1.2'
1
+ const seamapiReactVersion = '4.0.0'
2
2
 
3
3
  export default seamapiReactVersion
@@ -26,8 +26,6 @@
26
26
  @use './snackbar';
27
27
  @use './spinner';
28
28
  @use './switch';
29
- @use './climate-setting-schedule-form';
30
- @use './climate-setting-schedule-details';
31
29
  @use './time-zone-picker';
32
30
  @use './tab-set';
33
31
  @use './noise-sensor';
@@ -62,12 +60,10 @@
62
60
  @include device-table.all;
63
61
  @include access-code-details.all;
64
62
  @include access-code-form.all;
65
- @include climate-setting-schedule-form.all;
66
63
  @include alert.all;
67
64
  @include supported-device-table.all;
68
65
  @include supported-device-table-manufacturer-keys.all;
69
66
  @include thermostat.all;
70
67
  @include seam-table.all;
71
- @include climate-setting-schedule-details.all;
72
68
  @include noise-sensor.all;
73
69
  }
@@ -331,104 +331,6 @@
331
331
  justify-content: center;
332
332
  align-items: center;
333
333
  }
334
-
335
- .seam-climate-setting-schedule-card {
336
- background: colors.$bg-a;
337
- border-radius: 16px;
338
-
339
- .seam-climate-setting-schedule-content {
340
- display: flex;
341
- flex-direction: column;
342
-
343
- .seam-climate-setting-schedule-summary-container {
344
- padding: 16px;
345
- display: flex;
346
- width: 100%;
347
- gap: 8px;
348
-
349
- .seam-climate-setting-schedule-icon-block {
350
- padding: 8px;
351
- }
352
-
353
- .seam-climate-setting-schedule-summary {
354
- display: flex;
355
- flex-direction: column;
356
-
357
- .seam-climate-setting-schedule-heading {
358
- font-weight: 600;
359
- font-size: 21px;
360
- line-height: 132%;
361
- margin-bottom: 8px;
362
- }
363
-
364
- .seam-climate-setting-schedule-subheading {
365
- display: flex;
366
- align-items: center;
367
- color: colors.$text-gray-1;
368
- line-height: 118%;
369
-
370
- .seam-dot-divider {
371
- color: colors.$text-gray-3;
372
- width: 16px;
373
- display: flex;
374
- justify-content: center;
375
- }
376
- }
377
- }
378
- }
379
-
380
- .seam-climate-setting-schedule-device-bar {
381
- border-top: 1px solid colors.$bg-c;
382
- padding: 16px;
383
- display: flex;
384
- align-items: center;
385
- justify-content: space-between;
386
- cursor: pointer;
387
-
388
- .seam-device-image {
389
- width: 30px;
390
- height: 30px;
391
- margin-right: 16px;
392
-
393
- img {
394
- width: 100%;
395
- max-height: 100%;
396
- }
397
- }
398
-
399
- .seam-climate-setting-schedule-device-content {
400
- display: flex;
401
- align-items: center;
402
- width: 100%;
403
- font-weight: 400;
404
- font-size: 14px;
405
- line-height: 134%;
406
-
407
- .seam-climate-setting-schedule-device-details {
408
- display: flex;
409
- flex-direction: column;
410
- gap: 2.5px;
411
-
412
- .seam-device-name {
413
- color: colors.$text-gray-1;
414
- }
415
-
416
- .seam-device-current-climate-setting {
417
- line-height: 118%;
418
- color: colors.$text-gray-2;
419
- display: flex;
420
- align-items: center;
421
- gap: 8px;
422
- }
423
- }
424
- }
425
- }
426
- }
427
-
428
- .seam-climate-setting-schedule-device-chevron {
429
- transform: rotate(270deg);
430
- }
431
- }
432
334
  }
433
335
 
434
336
  @mixin thermostat-card {
@@ -1,7 +0,0 @@
1
- /// <reference types="react" />
2
- interface ClimateSettingScheduleCardProps {
3
- climateSettingScheduleId: string;
4
- onSelectDevice: (deviceId: string) => void;
5
- }
6
- export declare function ClimateSettingScheduleCard({ climateSettingScheduleId, onSelectDevice, }: ClimateSettingScheduleCardProps): JSX.Element;
7
- export {};
@@ -1,43 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { DateTime } from 'luxon';
3
- import { ClimateSettingScheduleIcon } from '../../../../lib/icons/ClimateSettingSchedule.js';
4
- import { ClimateSettingScheduleDeviceBar } from '../../../../lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js';
5
- import { useClimateSettingSchedule } from '../../../../lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js';
6
- import { DotDivider } from '../../../../lib/ui/layout/DotDivider.js';
7
- import { ClimateSettingStatus } from '../../../../lib/ui/thermostat/ClimateSettingStatus.js';
8
- import { useNow } from '../../../../lib/ui/use-now.js';
9
- import { formatDateTime } from './dates.js';
10
- export function ClimateSettingScheduleCard({ climateSettingScheduleId, onSelectDevice, }) {
11
- return (_jsx("div", { className: 'seam-climate-setting-schedule-card', children: _jsx(Content, { climateSettingScheduleId: climateSettingScheduleId, onSelectDevice: onSelectDevice }) }));
12
- }
13
- function Content(props) {
14
- const { climateSettingScheduleId, onSelectDevice } = props;
15
- const { climateSettingSchedule } = useClimateSettingSchedule({
16
- climate_setting_schedule_id: climateSettingScheduleId,
17
- });
18
- if (climateSettingSchedule == null) {
19
- return null;
20
- }
21
- const name = climateSettingSchedule.name ?? t.fallbackName;
22
- return (_jsxs("div", { className: 'seam-climate-setting-schedule-content', children: [_jsxs("div", { className: 'seam-climate-setting-schedule-summary-container', children: [_jsx("div", { className: 'seam-climate-setting-schedule-icon-block', children: _jsx(ClimateSettingScheduleIcon, {}) }), _jsxs("div", { className: 'seam-climate-setting-schedule-summary', children: [_jsx("h5", { className: 'seam-climate-setting-schedule-heading', children: name }), _jsxs("div", { className: 'seam-climate-setting-schedule-subheading', children: [_jsx(ClimateSettingStatus, { climateSetting: climateSettingSchedule }), _jsx(DotDivider, {}), _jsx(ClimateSettingScheduleTiming, { climateSettingSchedule: climateSettingSchedule })] })] })] }), _jsx(ClimateSettingScheduleDeviceBar, { onSelectDevice: onSelectDevice, deviceId: climateSettingSchedule.device_id })] }));
23
- }
24
- function ClimateSettingScheduleTiming(props) {
25
- const { climateSettingSchedule } = props;
26
- const now = useNow();
27
- if (now === null)
28
- return null;
29
- const startTime = DateTime.fromISO(climateSettingSchedule.schedule_starts_at);
30
- const endTime = DateTime.fromISO(climateSettingSchedule.schedule_ends_at);
31
- if (now < startTime)
32
- return (_jsxs("span", { children: [t.starts, " ", formatDateTime(climateSettingSchedule.schedule_starts_at)] }));
33
- if (startTime <= now && now <= endTime)
34
- return (_jsxs("span", { children: [t.ends, " ", formatDateTime(climateSettingSchedule.schedule_starts_at)] }));
35
- return _jsx("span", { children: t.expired });
36
- }
37
- const t = {
38
- starts: 'Starts',
39
- ends: 'Ends',
40
- expired: 'Expired',
41
- fallbackName: 'Climate Setting Schedule',
42
- };
43
- //# sourceMappingURL=ClimateSettingScheduleCard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ClimateSettingScheduleCard.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAA;AAChF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sFAAsF,CAAA;AACtI,OAAO,EAAE,yBAAyB,EAAE,MAAM,gFAAgF,CAAA;AAC1H,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAO3C,MAAM,UAAU,0BAA0B,CAAC,EACzC,wBAAwB,EACxB,cAAc,GACkB;IAChC,OAAO,CACL,cAAK,SAAS,EAAC,oCAAoC,YACjD,KAAC,OAAO,IACN,wBAAwB,EAAE,wBAAwB,EAClD,cAAc,EAAE,cAAc,GAC9B,GACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAGhB;IACC,MAAM,EAAE,wBAAwB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAE1D,MAAM,EAAE,sBAAsB,EAAE,GAAG,yBAAyB,CAAC;QAC3D,2BAA2B,EAAE,wBAAwB;KACtD,CAAC,CAAA;IAEF,IAAI,sBAAsB,IAAI,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,IAAI,CAAC,CAAC,YAAY,CAAA;IAE1D,OAAO,CACL,eAAK,SAAS,EAAC,uCAAuC,aACpD,eAAK,SAAS,EAAC,iDAAiD,aAC9D,cAAK,SAAS,EAAC,0CAA0C,YACvD,KAAC,0BAA0B,KAAG,GAC1B,EACN,eAAK,SAAS,EAAC,uCAAuC,aACpD,aAAI,SAAS,EAAC,uCAAuC,YAAE,IAAI,GAAM,EACjE,eAAK,SAAS,EAAC,0CAA0C,aACvD,KAAC,oBAAoB,IAAC,cAAc,EAAE,sBAAsB,GAAI,EAChE,KAAC,UAAU,KAAG,EACd,KAAC,4BAA4B,IAC3B,sBAAsB,EAAE,sBAAsB,GAC9C,IACE,IACF,IACF,EACN,KAAC,+BAA+B,IAC9B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,sBAAsB,CAAC,SAAS,GAC1C,IACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,KAErC;IACC,MAAM,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAA;IAExC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IAEpB,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAE7B,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;IAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;IAEzE,IAAI,GAAG,GAAG,SAAS;QACjB,OAAO,CACL,2BACG,CAAC,CAAC,MAAM,OAAG,cAAc,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,IAChE,CACR,CAAA;IAEH,IAAI,SAAS,IAAI,GAAG,IAAI,GAAG,IAAI,OAAO;QACpC,OAAO,CACL,2BACG,CAAC,CAAC,IAAI,OAAG,cAAc,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,IAC9D,CACR,CAAA;IAEH,OAAO,yBAAO,CAAC,CAAC,OAAO,GAAQ,CAAA;AACjC,CAAC;AAED,MAAM,CAAC,GAAG;IACR,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,0BAA0B;CACzC,CAAA"}
@@ -1,7 +0,0 @@
1
- /// <reference types="react" />
2
- import { type CommonProps } from '../../../../lib/seam/components/common-props.js';
3
- export interface ClimateSettingScheduleDetailsProps extends CommonProps {
4
- climateSettingScheduleId: string;
5
- }
6
- export declare const NestedClimateSettingScheduleDetails: (props: ClimateSettingScheduleDetailsProps & import("../../../../lib/seam/components/common-props.js").RequiredCommonProps) => JSX.Element | null;
7
- export declare function ClimateSettingScheduleDetails({ climateSettingScheduleId, disableLockUnlock, disableDeleteAccessCode, onBack, className, errorFilter, warningFilter, disableCreateAccessCode, disableEditAccessCode, disableResourceIds, disableConnectedAccountInformation, disableClimateSettingSchedules, }: ClimateSettingScheduleDetailsProps): JSX.Element | null;
@@ -1,55 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import classNames from 'classnames';
3
- import { useState } from 'react';
4
- import { ArrowRightIcon } from '../../../../lib/icons/ArrowRight.js';
5
- import { ClimateSettingScheduleCard } from '../../../../lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js';
6
- import { withRequiredCommonProps, } from '../../../../lib/seam/components/common-props.js';
7
- import { NestedDeviceDetails } from '../../../../lib/seam/components/DeviceDetails/DeviceDetails.js';
8
- import { useClimateSettingSchedule } from '../../../../lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js';
9
- import { useUpdateClimateSettingSchedule } from '../../../../lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.js';
10
- import { useComponentTelemetry } from '../../../../lib/telemetry/index.js';
11
- import { ContentHeader } from '../../../../lib/ui/layout/ContentHeader.js';
12
- import { DetailRow } from '../../../../lib/ui/layout/DetailRow.js';
13
- import { DetailSection } from '../../../../lib/ui/layout/DetailSection.js';
14
- import { DetailSectionGroup } from '../../../../lib/ui/layout/DetailSectionGroup.js';
15
- import { Snackbar } from '../../../../lib/ui/Snackbar/Snackbar.js';
16
- import { Switch } from '../../../../lib/ui/Switch/Switch.js';
17
- import { ClimateSettingStatus } from '../../../../lib/ui/thermostat/ClimateSettingStatus.js';
18
- import { formatDateTime } from './dates.js';
19
- export const NestedClimateSettingScheduleDetails = withRequiredCommonProps(ClimateSettingScheduleDetails);
20
- export function ClimateSettingScheduleDetails({ climateSettingScheduleId, disableLockUnlock = false, disableDeleteAccessCode = false, onBack, className, errorFilter = () => true, warningFilter = () => true, disableCreateAccessCode, disableEditAccessCode, disableResourceIds = false, disableConnectedAccountInformation = false, disableClimateSettingSchedules, }) {
21
- useComponentTelemetry('ClimateSettingScheduleDetails');
22
- const { climateSettingSchedule } = useClimateSettingSchedule({
23
- climate_setting_schedule_id: climateSettingScheduleId,
24
- });
25
- const { mutate, isSuccess, isError } = useUpdateClimateSettingSchedule();
26
- const [selectedDeviceId, selectDevice] = useState(null);
27
- if (climateSettingSchedule == null) {
28
- return null;
29
- }
30
- const isManualOverrideAllowed = climateSettingSchedule.manual_override_allowed ?? false;
31
- if (selectedDeviceId != null) {
32
- return (_jsx(NestedDeviceDetails, { deviceId: selectedDeviceId, errorFilter: errorFilter, warningFilter: warningFilter, disableLockUnlock: disableLockUnlock, disableCreateAccessCode: disableCreateAccessCode, disableEditAccessCode: disableEditAccessCode, disableDeleteAccessCode: disableDeleteAccessCode, disableResourceIds: disableResourceIds, disableConnectedAccountInformation: disableConnectedAccountInformation, disableClimateSettingSchedules: disableClimateSettingSchedules, onBack: () => {
33
- selectDevice(null);
34
- }, className: className }));
35
- }
36
- return (_jsxs(_Fragment, { children: [_jsxs("div", { className: classNames('seam-climate-setting-schedule-details', className), children: [_jsx(ContentHeader, { title: t.climateSettingSchedule, onBack: onBack }), _jsxs("div", { className: 'seam-climate-setting-schedule-details-content', children: [_jsx(ClimateSettingScheduleCard, { climateSettingScheduleId: climateSettingScheduleId, onSelectDevice: selectDevice }), _jsx("div", { className: 'seam-default-setting-message-container', children: _jsxs("span", { className: 'seam-default-setting-message', children: [t.defaultSettingMessagePart1, ' ', _jsx("span", { className: 'seam-default-setting-text', children: t.defaultSetting }), ' ', t.defaultSettingMessagePart2] }) }), _jsxs(DetailSectionGroup, { children: [_jsxs(DetailSection, { children: [_jsx(DetailRow, { label: t.startEndTime, children: _jsxs("span", { className: 'seam-climate-setting-details-value seam-climate-setting-details-schedule-range', children: [formatDateTime(climateSettingSchedule.schedule_starts_at), _jsx(ArrowRightIcon, {}), formatDateTime(climateSettingSchedule.schedule_ends_at)] }) }), _jsx(DetailRow, { label: t.climateSetting, children: _jsx(ClimateSettingStatus, { climateSetting: climateSettingSchedule, iconPlacement: 'right' }) }), _jsx(DetailRow, { label: t.allowManualOverride, children: _jsx("span", { className: 'seam-climate-setting-details-value', children: _jsx(Switch, { checked: isManualOverrideAllowed, onChange: (checked) => {
37
- mutate({
38
- climate_setting_schedule_id: climateSettingSchedule.climate_setting_schedule_id,
39
- manual_override_allowed: checked,
40
- });
41
- } }) }) })] }), _jsx(DetailSection, { children: _jsx(DetailRow, { label: t.creationDate, children: _jsx("div", { className: 'seam-creation-date', children: formatDateTime(climateSettingSchedule.created_at) }) }) })] })] })] }), _jsx(Snackbar, { message: t.manualOverrideSuccess, variant: 'success', visible: isSuccess, automaticVisibility: true }), _jsx(Snackbar, { message: t.manualOverrideError, variant: 'error', visible: isError, automaticVisibility: true })] }));
42
- }
43
- const t = {
44
- climateSettingSchedule: 'Climate setting schedule',
45
- startEndTime: 'Start/End Time',
46
- climateSetting: 'Climate setting',
47
- allowManualOverride: 'Allow manual override',
48
- creationDate: 'Creation date',
49
- defaultSettingMessagePart1: 'Thermostat will return to its',
50
- defaultSetting: 'default setting',
51
- defaultSettingMessagePart2: 'at end time.',
52
- manualOverrideSuccess: 'Successfully updated manual override!',
53
- manualOverrideError: 'Error updating manual override. Please try again.',
54
- };
55
- //# sourceMappingURL=ClimateSettingScheduleDetails.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ClimateSettingScheduleDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export declare function ClimateSettingScheduleDeviceBar({ deviceId, onSelectDevice, }: {
3
- deviceId: string;
4
- onSelectDevice: (deviceId: string) => void;
5
- }): JSX.Element | null;
@@ -1,31 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ChevronWideIcon } from '../../../../lib/icons/ChevronWide.js';
3
- import { useDevice } from '../../../../lib/seam/devices/use-device.js';
4
- import { isThermostatDevice, } from '../../../../lib/seam/thermostats/thermostat-device.js';
5
- import { DeviceImage } from '../../../../lib/ui/device/DeviceImage.js';
6
- import { ClimateSettingStatus } from '../../../../lib/ui/thermostat/ClimateSettingStatus.js';
7
- export function ClimateSettingScheduleDeviceBar({ deviceId, onSelectDevice, }) {
8
- const { isPending, device } = useDevice({
9
- device_id: deviceId,
10
- });
11
- if (isPending) {
12
- return null;
13
- }
14
- if (device == null) {
15
- return null;
16
- }
17
- if (!isThermostatDevice(device)) {
18
- return null;
19
- }
20
- return _jsx(Content, { device: device, onSelectDevice: onSelectDevice });
21
- }
22
- function Content(props) {
23
- const { device, onSelectDevice } = props;
24
- return (_jsxs("div", { className: 'seam-climate-setting-schedule-device-bar', onClick: () => {
25
- onSelectDevice(device.device_id);
26
- }, children: [_jsxs("div", { className: 'seam-climate-setting-schedule-device-content', children: [_jsx("div", { className: 'seam-device-image', children: _jsx(DeviceImage, { device: device }) }), _jsxs("div", { className: 'seam-climate-setting-schedule-device-details', children: [_jsx("div", { className: 'seam-device-name', children: device.properties.name }), _jsxs("div", { className: 'seam-device-current-climate-setting', children: [t.currentClimate, ":", _jsx(ClimateSettingStatus, { climateSetting: device.properties.current_climate_setting })] })] })] }), _jsx("div", { className: 'seam-climate-setting-schedule-device-chevron', children: _jsx(ChevronWideIcon, {}) })] }));
27
- }
28
- const t = {
29
- currentClimate: 'Current climate',
30
- };
31
- //# sourceMappingURL=ClimateSettingScheduleDeviceBar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ClimateSettingScheduleDeviceBar.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EACL,kBAAkB,GAEnB,MAAM,2CAA2C,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAEhF,MAAM,UAAU,+BAA+B,CAAC,EAC9C,QAAQ,EACR,cAAc,GAIf;IACC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QACtC,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAA;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAC,OAAO,IAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAI,CAAA;AACpE,CAAC;AAED,SAAS,OAAO,CAAC,KAGhB;IACC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAExC,OAAO,CACL,eACE,SAAS,EAAC,0CAA0C,EACpD,OAAO,EAAE,GAAG,EAAE;YACZ,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAClC,CAAC,aAED,eAAK,SAAS,EAAC,8CAA8C,aAC3D,cAAK,SAAS,EAAC,mBAAmB,YAChC,KAAC,WAAW,IAAC,MAAM,EAAE,MAAM,GAAI,GAC3B,EACN,eAAK,SAAS,EAAC,8CAA8C,aAC3D,cAAK,SAAS,EAAC,kBAAkB,YAAE,MAAM,CAAC,UAAU,CAAC,IAAI,GAAO,EAChE,eAAK,SAAS,EAAC,qCAAqC,aACjD,CAAC,CAAC,cAAc,OACjB,KAAC,oBAAoB,IACnB,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,uBAAuB,GACzD,IACE,IACF,IACF,EACN,cAAK,SAAS,EAAC,8CAA8C,YAC3D,KAAC,eAAe,KAAG,GACf,IACF,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,cAAc,EAAE,iBAAiB;CAClC,CAAA"}
@@ -1 +0,0 @@
1
- export declare const formatDateTime: (date: string) => string;
@@ -1,9 +0,0 @@
1
- import { DateTime } from 'luxon';
2
- export const formatDateTime = (date) => DateTime.fromISO(date).toLocaleString({
3
- month: 'short',
4
- day: 'numeric',
5
- hour: 'numeric',
6
- minute: '2-digit',
7
- timeZoneName: 'short',
8
- });
9
- //# sourceMappingURL=dates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dates.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/ClimateSettingScheduleDetails/dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAU,EAAE,CACrD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC;IACpC,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;IACjB,YAAY,EAAE,OAAO;CACtB,CAAC,CAAA"}
@@ -1,8 +0,0 @@
1
- /// <reference types="react" />
2
- import type { ClimateSettingSchedule } from '@seamapi/types/connect';
3
- interface ClimateSettingScheduleRowProps {
4
- climateSettingSchedule: ClimateSettingSchedule;
5
- onClick: () => void;
6
- }
7
- export declare function ClimateSettingScheduleRow({ climateSettingSchedule, onClick, }: ClimateSettingScheduleRowProps): JSX.Element;
8
- export {};
@@ -1,10 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ClimateSettingScheduleIcon } from '../../../../lib/icons/ClimateSettingSchedule.js';
3
- import { ClimateSettingScheduleRowDetails } from '../../../../lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js';
4
- import { TableCell } from '../../../../lib/ui/Table/TableCell.js';
5
- import { TableRow } from '../../../../lib/ui/Table/TableRow.js';
6
- import { Title } from '../../../../lib/ui/typography/Title.js';
7
- export function ClimateSettingScheduleRow({ climateSettingSchedule, onClick, }) {
8
- return (_jsxs(TableRow, { onClick: onClick, children: [_jsx(TableCell, { className: 'seam-icon-cell', children: _jsx("div", { children: _jsx(ClimateSettingScheduleIcon, {}) }) }), _jsxs(TableCell, { className: 'seam-name-cell', children: [_jsx(Title, { className: 'seam-truncated-text', children: climateSettingSchedule.name }), _jsx(ClimateSettingScheduleRowDetails, { climateSettingSchedule: climateSettingSchedule })] })] }));
9
- }
10
- //# sourceMappingURL=ClimateSettingScheduleRow.js.map