@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.
- package/README.md +2 -2
- package/dist/elements.js +11198 -11349
- package/dist/elements.js.map +1 -1
- package/dist/index.css +8 -193
- package/dist/index.css.map +1 -1
- package/dist/index.min.css +1 -1
- package/dist/index.min.css.map +1 -1
- package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.d.ts +1 -1
- package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js +3 -3
- package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js.map +1 -1
- package/lib/seam/components/AccessCodeTable/AccessCodeTable.d.ts +1 -1
- package/lib/seam/components/AccessCodeTable/AccessCodeTable.js +4 -4
- package/lib/seam/components/AccessCodeTable/AccessCodeTable.js.map +1 -1
- package/lib/seam/components/DeviceDetails/DeviceDetails.d.ts +1 -1
- package/lib/seam/components/DeviceDetails/DeviceDetails.js +1 -2
- package/lib/seam/components/DeviceDetails/DeviceDetails.js.map +1 -1
- package/lib/seam/components/DeviceDetails/LockDeviceDetails.d.ts +1 -1
- package/lib/seam/components/DeviceDetails/LockDeviceDetails.js +2 -2
- package/lib/seam/components/DeviceDetails/LockDeviceDetails.js.map +1 -1
- package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.d.ts +1 -1
- package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js +2 -46
- package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js.map +1 -1
- package/lib/seam/components/DeviceTable/DeviceTable.d.ts +1 -1
- package/lib/seam/components/DeviceTable/DeviceTable.js +2 -2
- package/lib/seam/components/DeviceTable/DeviceTable.js.map +1 -1
- package/lib/seam/components/common-props.d.ts +0 -1
- package/lib/seam/components/common-props.js.map +1 -1
- package/lib/seam/components/index.d.ts +0 -2
- package/lib/seam/components/index.js +0 -2
- package/lib/seam/components/index.js.map +1 -1
- package/lib/seam/index.d.ts +0 -2
- package/lib/seam/index.js +0 -2
- package/lib/seam/index.js.map +1 -1
- package/lib/seam/thermostats/thermostat-device.d.ts +0 -1
- package/lib/seam/thermostats/thermostat-device.js.map +1 -1
- package/lib/ui/thermostat/FanModeMenu.js +1 -0
- package/lib/ui/thermostat/FanModeMenu.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +8 -8
- package/src/lib/element.tsx +0 -1
- package/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx +0 -3
- package/src/lib/seam/components/AccessCodeTable/AccessCodeTable.tsx +0 -4
- package/src/lib/seam/components/DeviceDetails/DeviceDetails.tsx +0 -2
- package/src/lib/seam/components/DeviceDetails/LockDeviceDetails.tsx +0 -2
- package/src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx +0 -144
- package/src/lib/seam/components/DeviceTable/DeviceTable.tsx +0 -2
- package/src/lib/seam/components/common-props.tsx +0 -1
- package/src/lib/seam/components/elements.ts +0 -2
- package/src/lib/seam/components/index.ts +0 -2
- package/src/lib/seam/index.ts +0 -2
- package/src/lib/seam/thermostats/thermostat-device.ts +0 -1
- package/src/lib/ui/thermostat/FanModeMenu.tsx +1 -0
- package/src/lib/version.ts +1 -1
- package/src/styles/_main.scss +0 -4
- package/src/styles/_thermostat.scss +0 -98
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.d.ts +0 -7
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js +0 -43
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.d.ts +0 -7
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js +0 -55
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.d.ts +0 -5
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js +0 -31
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleDetails/dates.d.ts +0 -1
- package/lib/seam/components/ClimateSettingScheduleDetails/dates.js +0 -9
- package/lib/seam/components/ClimateSettingScheduleDetails/dates.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.d.ts +0 -8
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js +0 -10
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.d.ts +0 -5
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js +0 -28
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js.map +0 -1
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.d.ts +0 -14
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js +0 -80
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js.map +0 -1
- package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.d.ts +0 -5
- package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js +0 -29
- package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js.map +0 -1
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.d.ts +0 -6
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js +0 -16
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js.map +0 -1
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.d.ts +0 -6
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js +0 -28
- package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js.map +0 -1
- package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.d.ts +0 -7
- package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js +0 -25
- package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js.map +0 -1
- package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.d.ts +0 -6
- package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.js +0 -27
- package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.js.map +0 -1
- package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.d.ts +0 -6
- package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.js +0 -46
- package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.js.map +0 -1
- package/lib/seam/thermostats/use-update-thermostat.d.ts +0 -6
- package/lib/seam/thermostats/use-update-thermostat.js +0 -51
- package/lib/seam/thermostats/use-update-thermostat.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.d.ts +0 -32
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js +0 -85
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.d.ts +0 -13
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js +0 -44
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.d.ts +0 -10
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.js +0 -24
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.d.ts +0 -10
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.js +0 -10
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.d.ts +0 -15
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.js +0 -30
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.js.map +0 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.d.ts +0 -9
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.js +0 -16
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.js.map +0 -1
- package/lib/ui/ClimateSettingForm/set-point-bounds.d.ts +0 -4
- package/lib/ui/ClimateSettingForm/set-point-bounds.js +0 -17
- package/lib/ui/ClimateSettingForm/set-point-bounds.js.map +0 -1
- package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx +0 -107
- package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.element.ts +0 -11
- package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx +0 -175
- package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.tsx +0 -72
- package/src/lib/seam/components/ClimateSettingScheduleDetails/dates.ts +0 -10
- package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.tsx +0 -35
- package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.tsx +0 -60
- package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.element.ts +0 -17
- package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.tsx +0 -220
- package/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.element.ts +0 -9
- package/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.tsx +0 -56
- package/src/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.ts +0 -34
- package/src/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.ts +0 -53
- package/src/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.ts +0 -53
- package/src/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.ts +0 -51
- package/src/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.ts +0 -83
- package/src/lib/seam/thermostats/use-update-thermostat.ts +0 -90
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.tsx +0 -189
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.tsx +0 -118
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.tsx +0 -79
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.tsx +0 -36
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.tsx +0 -120
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.tsx +0 -43
- package/src/lib/ui/ClimateSettingForm/set-point-bounds.ts +0 -31
- package/src/styles/_climate-setting-schedule-details.scss +0 -44
- 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'
|
package/src/lib/seam/index.ts
CHANGED
|
@@ -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'
|
package/src/lib/version.ts
CHANGED
package/src/styles/_main.scss
CHANGED
|
@@ -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"}
|
package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.d.ts
DELETED
|
@@ -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
|
package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClimateSettingScheduleDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx"],"names":[],"mappings":"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"}
|
package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js
DELETED
|
@@ -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
|
package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js.map
DELETED
|
@@ -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 +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
|