@seamapi/react 2.2.0 → 2.4.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 +1 -1
- package/dist/elements.js +5088 -4846
- package/dist/elements.js.map +1 -1
- package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js +27 -7
- package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js.map +1 -1
- package/lib/seam/thermostats/use-update-fan-mode.js +2 -2
- package/lib/seam/thermostats/use-update-fan-mode.js.map +1 -1
- package/lib/seam/thermostats/use-update-thermostat.js +2 -2
- package/lib/seam/thermostats/use-update-thermostat.js.map +1 -1
- package/lib/set-point-bounds.d.ts +4 -0
- package/lib/set-point-bounds.js +24 -0
- package/lib/set-point-bounds.js.map +1 -0
- package/lib/temperature-bounds.d.ts +2 -2
- package/lib/temperature-bounds.js +4 -6
- package/lib/temperature-bounds.js.map +1 -1
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js +11 -4
- package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js.map +1 -1
- package/lib/ui/Snackbar/Snackbar.d.ts +2 -1
- package/lib/ui/Snackbar/Snackbar.js +14 -6
- package/lib/ui/Snackbar/Snackbar.js.map +1 -1
- package/lib/ui/Switch/Switch.d.ts +1 -2
- package/lib/ui/Switch/Switch.js +1 -2
- package/lib/ui/Switch/Switch.js.map +1 -1
- package/lib/ui/thermostat/FanModeMenu.js +1 -1
- package/lib/ui/thermostat/FanModeMenu.js.map +1 -1
- package/lib/ui/thermostat/TemperatureControlGroup.js +4 -1
- package/lib/ui/thermostat/TemperatureControlGroup.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +2 -2
- package/src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx +76 -8
- package/src/lib/seam/thermostats/use-update-fan-mode.ts +2 -2
- package/src/lib/seam/thermostats/use-update-thermostat.ts +2 -2
- package/src/lib/set-point-bounds.ts +39 -0
- package/src/lib/temperature-bounds.ts +4 -12
- package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.tsx +14 -2
- package/src/lib/ui/Snackbar/Snackbar.tsx +18 -5
- package/src/lib/ui/Switch/Switch.tsx +1 -3
- package/src/lib/ui/thermostat/FanModeMenu.tsx +1 -2
- package/src/lib/ui/thermostat/TemperatureControlGroup.tsx +8 -4
- package/src/lib/version.ts +1 -1
|
@@ -6,11 +6,16 @@ import { ChevronWideIcon } from '../../../../lib/icons/ChevronWide.js';
|
|
|
6
6
|
import { NestedClimateSettingScheduleTable } from '../../../../lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js';
|
|
7
7
|
import { useConnectedAccount } from '../../../../lib/seam/connected-accounts/use-connected-account.js';
|
|
8
8
|
import { useClimateSettingSchedules } from '../../../../lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js';
|
|
9
|
+
import { useUpdateFanMode } from '../../../../lib/seam/thermostats/use-update-fan-mode.js';
|
|
10
|
+
import { useUpdateThermostat } from '../../../../lib/seam/thermostats/use-update-thermostat.js';
|
|
9
11
|
import { ContentHeader } from '../../../../lib/ui/layout/ContentHeader.js';
|
|
10
12
|
import { DetailRow } from '../../../../lib/ui/layout/DetailRow.js';
|
|
11
13
|
import { DetailSection } from '../../../../lib/ui/layout/DetailSection.js';
|
|
12
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';
|
|
13
17
|
import { ClimateSettingStatus } from '../../../../lib/ui/thermostat/ClimateSettingStatus.js';
|
|
18
|
+
import { FanModeMenu } from '../../../../lib/ui/thermostat/FanModeMenu.js';
|
|
14
19
|
import { ThermostatCard } from '../../../../lib/ui/thermostat/ThermostatCard.js';
|
|
15
20
|
export function ThermostatDeviceDetails({ device, onBack, className, errorFilter = () => true, warningFilter = () => true, disableLockUnlock, disableCreateAccessCode, disableEditAccessCode, disableDeleteAccessCode, disableResourceIds = false, }) {
|
|
16
21
|
const [climateSettingsOpen, setClimateSettingsOpen] = useState(false);
|
|
@@ -18,6 +23,8 @@ export function ThermostatDeviceDetails({ device, onBack, className, errorFilter
|
|
|
18
23
|
const { climateSettingSchedules } = useClimateSettingSchedules({
|
|
19
24
|
device_id: device.device_id,
|
|
20
25
|
});
|
|
26
|
+
const { mutate: updateFanMode, isError: isFanModeError, isSuccess: isFanModeSuccess, } = useUpdateFanMode();
|
|
27
|
+
const { mutate: updateThermostat, isSuccess: isThermostatUpdateSuccess, isError: isThermostatUpdateError, } = useUpdateThermostat();
|
|
21
28
|
if (climateSettingsOpen) {
|
|
22
29
|
return (_jsx(NestedClimateSettingScheduleTable, { deviceId: device.device_id, errorFilter: errorFilter, warningFilter: warningFilter, disableLockUnlock: disableLockUnlock, disableCreateAccessCode: disableCreateAccessCode, disableEditAccessCode: disableEditAccessCode, disableDeleteAccessCode: disableDeleteAccessCode, disableResourceIds: disableResourceIds, onBack: () => {
|
|
23
30
|
setClimateSettingsOpen(false);
|
|
@@ -33,11 +40,21 @@ export function ThermostatDeviceDetails({ device, onBack, className, errorFilter
|
|
|
33
40
|
? t.viewingClimateSchedules
|
|
34
41
|
: `${climateSettingSchedules.length} ${climateSettingSchedulesLabel}`, onClick: () => {
|
|
35
42
|
setClimateSettingsOpen(true);
|
|
36
|
-
}, children: _jsx("div", { className: 'seam-detail-row-rotated-icon', children: _jsx(ChevronWideIcon, {}) }) }) }),
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
}, children: _jsx("div", { className: 'seam-detail-row-rotated-icon', children: _jsx(ChevronWideIcon, {}) }) }) }), _jsxs(DetailSection, { label: t.currentSettings, tooltipContent: t.currentSettingsTooltip, children: [_jsx(DetailRow, { label: t.climate, children: _jsx(ClimateSettingStatus, { climateSetting: device.properties.current_climate_setting, temperatureUnit: 'fahrenheit' }) }), _jsx(DetailRow, { label: t.fanMode, children: _jsx(FanModeMenu, { mode: device.properties.fan_mode_setting, onChange: (fanMode) => {
|
|
44
|
+
updateFanMode({
|
|
45
|
+
device_id: device.device_id,
|
|
46
|
+
fan_mode_setting: fanMode,
|
|
47
|
+
});
|
|
48
|
+
} }) })] }), _jsxs(DetailSection, { label: t.defaultSettings, tooltipContent: t.defaultSettingsTooltip, children: [_jsx(DetailRow, { label: t.defaultClimate, children: device.properties.default_climate_setting != null ? (_jsx(ClimateSettingStatus, { climateSetting: device.properties.default_climate_setting, temperatureUnit: 'fahrenheit' })) : (_jsx("p", { children: t.none })) }), _jsx(DetailRow, { label: t.allowManualOverride, children: _jsx(Switch, { checked: device.properties.default_climate_setting
|
|
49
|
+
?.manual_override_allowed ?? true, onChange: (checked) => {
|
|
50
|
+
updateThermostat({
|
|
51
|
+
device_id: device.device_id,
|
|
52
|
+
default_climate_setting: {
|
|
53
|
+
manual_override_allowed: checked,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
} }) })] }), _jsxs(DetailSection, { label: t.deviceDetails, children: [_jsx(DetailRow, { label: t.manufacturer, children: _jsxs("div", { className: 'seam-detail-row-hstack', children: [device.properties.model.manufacturer_display_name, device.properties.manufacturer === 'ecobee' && _jsx(BeeIcon, {})] }) }), _jsx(DetailRow, { label: t.linkedAccount, sublabel: connectedAccount?.user_identifier?.email ??
|
|
57
|
+
device.connected_account_id }), !disableResourceIds && (_jsx(DetailRow, { label: t.deviceId, sublabel: device.device_id }))] })] }) })] }), _jsx(Snackbar, { message: t.manualOverrideSuccess, variant: 'success', visible: isThermostatUpdateSuccess, automaticVisibility: true }), _jsx(Snackbar, { message: t.manualOverrideError, variant: 'error', visible: isThermostatUpdateError, automaticVisibility: true }), _jsx(Snackbar, { message: t.fanModeSuccess, variant: 'success', visible: isFanModeSuccess, automaticVisibility: true, autoDismiss: true }), _jsx(Snackbar, { message: t.fanModeError, variant: 'error', visible: isFanModeError, automaticVisibility: true })] }));
|
|
41
58
|
}
|
|
42
59
|
const t = {
|
|
43
60
|
thermostat: 'Thermostat',
|
|
@@ -49,6 +66,7 @@ const t = {
|
|
|
49
66
|
currentSettings: 'Current settings',
|
|
50
67
|
currentSettingsTooltip: 'These are the settings currently on the device. If you change them here, they change on the device.',
|
|
51
68
|
climate: 'Climate',
|
|
69
|
+
fanMode: 'Fan mode',
|
|
52
70
|
defaultSettings: 'Default settings',
|
|
53
71
|
defaultSettingsTooltip: 'When a scheduled climate reaches its end time, the default settings will kick in.',
|
|
54
72
|
defaultClimate: 'Default climate',
|
|
@@ -58,7 +76,9 @@ const t = {
|
|
|
58
76
|
linkedAccount: 'Linked account',
|
|
59
77
|
deviceId: 'Device ID',
|
|
60
78
|
none: 'None',
|
|
61
|
-
|
|
62
|
-
|
|
79
|
+
fanModeSuccess: 'Successfully updated fan mode!',
|
|
80
|
+
fanModeError: 'Error updating fan mode. Please try again.',
|
|
81
|
+
manualOverrideSuccess: 'Successfully updated manual override!',
|
|
82
|
+
manualOverrideError: 'Error updating manual override. Please try again.',
|
|
63
83
|
};
|
|
64
84
|
//# sourceMappingURL=ThermostatDeviceDetails.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThermostatDeviceDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ThermostatDeviceDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,13 +10,13 @@ export function useUpdateFanMode() {
|
|
|
10
10
|
return await client.thermostats.setFanMode(mutationParams);
|
|
11
11
|
},
|
|
12
12
|
onSuccess: (_data, variables) => {
|
|
13
|
-
queryClient.setQueryData(['
|
|
13
|
+
queryClient.setQueryData(['devices', 'get', { device_id: variables.device_id }], (thermostat) => {
|
|
14
14
|
if (thermostat == null) {
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
return getUpdatedThermostat(thermostat, variables);
|
|
18
18
|
});
|
|
19
|
-
queryClient.setQueryData(['
|
|
19
|
+
queryClient.setQueryData(['devices', 'list', { device_id: variables.device_id }], (thermostats) => {
|
|
20
20
|
if (thermostats == null) {
|
|
21
21
|
return [];
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-update-fan-mode.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/use-update-fan-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAMhF,MAAM,UAAU,gBAAgB;IAK9B,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,cAA8C,EAAE,EAAE;YACnE,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YAEpD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;QAC5D,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,YAAY,CACtB,CAAC,
|
|
1
|
+
{"version":3,"file":"use-update-fan-mode.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/use-update-fan-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAMhF,MAAM,UAAU,gBAAgB;IAK9B,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,cAA8C,EAAE,EAAE;YACnE,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YAEpD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;QAC5D,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACtD,CAAC,UAAU,EAAE,EAAE;gBACb,IAAI,UAAU,IAAI,IAAI,EAAE;oBACtB,OAAM;iBACP;gBAED,OAAO,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;YACpD,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACvD,CAAC,WAAW,EAAsB,EAAE;gBAClC,IAAI,WAAW,IAAI,IAAI,EAAE;oBACvB,OAAO,EAAE,CAAA;iBACV;gBAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBACpC,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE;wBAChD,OAAO,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;qBACnD;oBAED,OAAO,UAAU,CAAA;gBACnB,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAA4B,EAC5B,SAAyC;IAEzC,OAAO;QACL,GAAG,UAAU;QACb,UAAU,EAAE;YACV,GAAG,UAAU,CAAC,UAAU;YACxB,gBAAgB,EACd,SAAS,CAAC,gBAAgB,IAAI,UAAU,CAAC,UAAU,CAAC,gBAAgB;SACvE;KACF,CAAA;AACH,CAAC"}
|
|
@@ -10,13 +10,13 @@ export function useUpdateThermostat() {
|
|
|
10
10
|
return await client.thermostats.update(mutationParams);
|
|
11
11
|
},
|
|
12
12
|
onSuccess: (_data, variables) => {
|
|
13
|
-
queryClient.setQueryData(['
|
|
13
|
+
queryClient.setQueryData(['devices', 'get', { device_id: variables.device_id }], (thermostat) => {
|
|
14
14
|
if (thermostat == null) {
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
return getUpdatedThermostat(thermostat, variables);
|
|
18
18
|
});
|
|
19
|
-
queryClient.setQueryData(['
|
|
19
|
+
queryClient.setQueryData(['devices', 'list', { device_id: variables.device_id }], (thermostats) => {
|
|
20
20
|
if (thermostats == null) {
|
|
21
21
|
return [];
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-update-thermostat.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/use-update-thermostat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAMhF,MAAM,UAAU,mBAAmB;IAKjC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,cAAiD,EAAE,EAAE;YACtE,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YAEpD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACxD,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,YAAY,CACtB,CAAC,
|
|
1
|
+
{"version":3,"file":"use-update-thermostat.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/use-update-thermostat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAMhF,MAAM,UAAU,mBAAmB;IAKjC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,cAAiD,EAAE,EAAE;YACtE,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YAEpD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACxD,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACtD,CAAC,UAAU,EAAE,EAAE;gBACb,IAAI,UAAU,IAAI,IAAI,EAAE;oBACtB,OAAM;iBACP;gBAED,OAAO,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;YACpD,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACvD,CAAC,WAAW,EAAsB,EAAE;gBAClC,IAAI,WAAW,IAAI,IAAI,EAAE;oBACvB,OAAO,EAAE,CAAA;iBACV;gBAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBACpC,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE;wBAChD,OAAO,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;qBACnD;oBAED,OAAO,UAAU,CAAA;gBACnB,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAA4B,EAC5B,SAA4C;IAE5C,OAAO;QACL,GAAG,UAAU;QAEb,UAAU,EAAE;YACV,GAAG,UAAU,CAAC,UAAU;YAExB,uBAAuB,EAAE;gBACvB,GAAG,UAAU,CAAC,UAAU,CAAC,uBAAuB;gBAChD,uBAAuB,EACrB,UAAU,CAAC,UAAU,EAAE,uBAAuB;oBAC5C,EAAE,uBAAuB,IAAI,IAAI;oBACjC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,uBAAuB;yBAC1C,uBAAuB;oBAC5B,CAAC,CAAC,IAAI;gBAEV,GAAG,SAAS,CAAC,uBAAuB;aACrC;SACF;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ThermostatDeviceProperties } from 'seamapi';
|
|
2
|
+
import type { TemperatureControlGroupProps } from '../lib/ui/thermostat/TemperatureControlGroup.js';
|
|
3
|
+
export type SetPointBounds = Partial<Pick<TemperatureControlGroupProps, 'minCool' | 'maxCool' | 'minHeat' | 'maxHeat' | 'delta'>>;
|
|
4
|
+
export declare const getSetPointBounds: (properties: ThermostatDeviceProperties) => SetPointBounds;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const getSetPointBounds = (properties) => {
|
|
2
|
+
let setPointBounds = {};
|
|
3
|
+
if (properties.is_cooling_available) {
|
|
4
|
+
setPointBounds = {
|
|
5
|
+
minCool: properties.min_cooling_set_point_fahrenheit,
|
|
6
|
+
maxCool: properties.max_cooling_set_point_fahrenheit,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
if (properties.is_heating_available) {
|
|
10
|
+
setPointBounds = {
|
|
11
|
+
...setPointBounds,
|
|
12
|
+
minHeat: properties.min_heating_set_point_fahrenheit,
|
|
13
|
+
maxHeat: properties.max_heating_set_point_fahrenheit,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
if (properties.is_cooling_available && properties.is_heating_available) {
|
|
17
|
+
setPointBounds = {
|
|
18
|
+
...setPointBounds,
|
|
19
|
+
delta: properties.min_heating_cooling_delta_fahrenheit,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return setPointBounds;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=set-point-bounds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-point-bounds.js","sourceRoot":"","sources":["../src/lib/set-point-bounds.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,UAAsC,EACtB,EAAE;IAClB,IAAI,cAAc,GAAmB,EAAE,CAAA;IAEvC,IAAI,UAAU,CAAC,oBAAoB,EAAE;QACnC,cAAc,GAAG;YACf,OAAO,EAAE,UAAU,CAAC,gCAAgC;YACpD,OAAO,EAAE,UAAU,CAAC,gCAAgC;SACrD,CAAA;KACF;IAED,IAAI,UAAU,CAAC,oBAAoB,EAAE;QACnC,cAAc,GAAG;YACf,GAAG,cAAc;YACjB,OAAO,EAAE,UAAU,CAAC,gCAAgC;YACpD,OAAO,EAAE,UAAU,CAAC,gCAAgC;SACrD,CAAA;KACF;IAED,IAAI,UAAU,CAAC,oBAAoB,IAAI,UAAU,CAAC,oBAAoB,EAAE;QACtE,cAAc,GAAG;YACf,GAAG,cAAc;YACjB,KAAK,EAAE,UAAU,CAAC,oCAAoC;SACvD,CAAA;KACF;IACD,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA"}
|
|
@@ -15,7 +15,7 @@ interface TemperatureBounds {
|
|
|
15
15
|
heat: MinMax;
|
|
16
16
|
cool: MinMax;
|
|
17
17
|
}
|
|
18
|
-
export declare const getHeatBounds: ({ mode, minHeat, maxHeat,
|
|
19
|
-
export declare const getCoolBounds: ({ mode, minHeat,
|
|
18
|
+
export declare const getHeatBounds: ({ mode, minHeat, maxHeat, maxCool, delta, }: Omit<ControlBounds, 'minCool'>) => MinMax;
|
|
19
|
+
export declare const getCoolBounds: ({ mode, minHeat, minCool, maxCool, delta, }: Omit<ControlBounds, 'maxHeat'>) => MinMax;
|
|
20
20
|
export declare const getTemperatureBounds: (controlBounds: ControlBounds) => TemperatureBounds;
|
|
21
21
|
export {};
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
export const getHeatBounds = ({ mode, minHeat, maxHeat,
|
|
1
|
+
export const getHeatBounds = ({ mode, minHeat, maxHeat, maxCool, delta, }) => {
|
|
2
2
|
const actualMaxHeat = mode === 'heat_cool' ? Math.min(maxHeat - delta, maxCool - delta) : maxHeat;
|
|
3
|
-
|
|
4
|
-
return { min: actualMinHeat, max: actualMaxHeat };
|
|
3
|
+
return { min: minHeat, max: actualMaxHeat };
|
|
5
4
|
};
|
|
6
|
-
export const getCoolBounds = ({ mode, minHeat,
|
|
7
|
-
const actualMaxCool = mode === 'heat_cool' ? Math.min(maxCool, maxHeat) : maxCool;
|
|
5
|
+
export const getCoolBounds = ({ mode, minHeat, minCool, maxCool, delta, }) => {
|
|
8
6
|
const actualMinCool = mode === 'heat_cool' ? Math.max(minCool + delta, minHeat + delta) : minCool;
|
|
9
|
-
return { min: actualMinCool, max:
|
|
7
|
+
return { min: actualMinCool, max: maxCool };
|
|
10
8
|
};
|
|
11
9
|
export const getTemperatureBounds = (controlBounds) => ({
|
|
12
10
|
heat: getHeatBounds(controlBounds),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temperature-bounds.js","sourceRoot":"","sources":["../src/lib/temperature-bounds.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"temperature-bounds.js","sourceRoot":"","sources":["../src/lib/temperature-bounds.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,GAC0B,EAAU,EAAE;IAC3C,MAAM,aAAa,GACjB,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAE7E,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,GAC0B,EAAU,EAAE;IAC3C,MAAM,aAAa,GACjB,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAE7E,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,aAA4B,EACT,EAAE,CAAC,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC;CACnC,CAAC,CAAA"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Controller } from 'react-hook-form';
|
|
3
|
+
import { isThermostatDevice } from 'seamapi';
|
|
3
4
|
import { useDevice } from '../../../lib/seam/devices/use-device.js';
|
|
5
|
+
import { getSetPointBounds } from '../../../lib/set-point-bounds.js';
|
|
4
6
|
import { Button } from '../../../lib/ui/Button.js';
|
|
5
7
|
import { FormField } from '../../../lib/ui/FormField.js';
|
|
6
8
|
import { InputLabel } from '../../../lib/ui/InputLabel.js';
|
|
@@ -10,12 +12,17 @@ export function ClimateSettingScheduleFormClimateSetting({ title, control, devic
|
|
|
10
12
|
const { device } = useDevice({
|
|
11
13
|
device_id: deviceId,
|
|
12
14
|
});
|
|
13
|
-
|
|
15
|
+
if (device == null)
|
|
16
|
+
return _jsx(_Fragment, {});
|
|
17
|
+
if (!isThermostatDevice(device))
|
|
18
|
+
return _jsx(_Fragment, {});
|
|
19
|
+
const setPointBounds = getSetPointBounds(device.properties);
|
|
20
|
+
return (_jsxs(_Fragment, { children: [_jsx(ContentHeader, { title: title, onBack: onBack, subheading: device?.properties.name }), _jsxs("div", { className: 'seam-main', children: [_jsx("div", { className: 'seam-climate-setting-schedule-form-climate-setting', children: _jsxs("div", { className: 'seam-content', children: [_jsxs("div", { children: [_jsx(InputLabel, { children: t.climateSetting }), _jsx("span", { className: 'seam-label', children: t.climateSettingSubHeading })] }), _jsx(FormContent, { control: control, setPointBounds: setPointBounds })] }) }), _jsxs("div", { className: 'seam-actions', children: [_jsx(Button, { onClick: onCancel, children: t.cancel }), _jsx(Button, { variant: 'solid', onClick: onSave, children: t.save })] })] })] }));
|
|
14
21
|
}
|
|
15
|
-
function FormContent({ control }) {
|
|
22
|
+
function FormContent({ control, setPointBounds, }) {
|
|
16
23
|
return (_jsx(FormField, { children: _jsx(Controller, { name: 'climateSetting', control: control, render: ({ field: { value, onChange } }) => (_jsx(ClimateSettingControlGroup, { mode: value.hvacModeSetting, onModeChange: (mode) => {
|
|
17
24
|
onChange({ ...value, hvacModeSetting: mode });
|
|
18
|
-
}, coolValue: value.coolingSetPoint, heatValue: value.heatingSetPoint, onCoolValueChange: (coolingSetPoint) => {
|
|
25
|
+
}, coolValue: value.coolingSetPoint, heatValue: value.heatingSetPoint, ...setPointBounds, onCoolValueChange: (coolingSetPoint) => {
|
|
19
26
|
onChange({
|
|
20
27
|
...value,
|
|
21
28
|
coolingSetPoint,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClimateSettingScheduleFormClimateSetting.js","sourceRoot":"","sources":["../../../src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAgB,UAAU,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"ClimateSettingScheduleFormClimateSetting.js","sourceRoot":"","sources":["../../../src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.tsx"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ interface SnackbarProps {
|
|
|
12
12
|
autoDismiss?: boolean;
|
|
13
13
|
dismissAfterMs?: number;
|
|
14
14
|
disableCloseButton?: boolean;
|
|
15
|
+
automaticVisibility?: boolean;
|
|
15
16
|
}
|
|
16
|
-
export declare function Snackbar({ message, variant, visible, action, autoDismiss, dismissAfterMs, disableCloseButton, onClose, }: SnackbarProps): JSX.Element;
|
|
17
|
+
export declare function Snackbar({ message, variant, visible, action, autoDismiss, dismissAfterMs, disableCloseButton, automaticVisibility, onClose, }: SnackbarProps): JSX.Element;
|
|
17
18
|
export {};
|
|
@@ -1,26 +1,34 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import classNames from 'classnames';
|
|
3
|
-
import { useEffect } from 'react';
|
|
3
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
4
4
|
import { CheckGreenIcon } from '../../../lib/icons/CheckGreen.js';
|
|
5
5
|
import { CloseWhiteIcon } from '../../../lib/icons/CloseWhite.js';
|
|
6
6
|
import { ExclamationCircleIcon } from '../../../lib/icons/ExclamationCircle.js';
|
|
7
|
-
export function Snackbar({ message, variant, visible, action, autoDismiss = false, dismissAfterMs = 5000, disableCloseButton = false, onClose = () => { }, }) {
|
|
7
|
+
export function Snackbar({ message, variant, visible, action, autoDismiss = false, dismissAfterMs = 5000, disableCloseButton = false, automaticVisibility = false, onClose = () => { }, }) {
|
|
8
|
+
const [hidden, setHidden] = useState(visible);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
setHidden(!visible);
|
|
11
|
+
}, [visible, setHidden]);
|
|
8
12
|
const { label: actionLabel, onClick: handleActionClick } = action ?? {};
|
|
13
|
+
const handleClose = useCallback(() => {
|
|
14
|
+
setHidden(true);
|
|
15
|
+
onClose();
|
|
16
|
+
}, [onClose, setHidden]);
|
|
9
17
|
useEffect(() => {
|
|
10
18
|
if (!autoDismiss) {
|
|
11
19
|
return () => { };
|
|
12
20
|
}
|
|
13
21
|
const timeout = globalThis.setTimeout(() => {
|
|
14
|
-
|
|
22
|
+
handleClose();
|
|
15
23
|
}, dismissAfterMs);
|
|
16
24
|
return () => {
|
|
17
25
|
globalThis.clearTimeout(timeout);
|
|
18
26
|
};
|
|
19
|
-
}, [autoDismiss, dismissAfterMs,
|
|
27
|
+
}, [autoDismiss, dismissAfterMs, handleClose]);
|
|
20
28
|
return (_jsx("div", { className: 'seam-snackbar-wrap', children: _jsxs("div", { className: classNames('seam-snackbar', {
|
|
21
|
-
'seam-snackbar-visible': visible,
|
|
29
|
+
'seam-snackbar-visible': automaticVisibility ? !hidden : visible,
|
|
22
30
|
}), children: [_jsx(SnackbarIcon, { variant: variant }), _jsx("div", { className: 'seam-snackbar-message-wrap', children: _jsx("p", { className: 'seam-snackbar-message', children: message }) }), _jsxs("div", { className: 'seam-snackbar-actions-wrap', children: [action != null && (_jsx("button", { className: 'seam-snackbar-action', onClick: handleActionClick, children: _jsx("span", { className: 'seam-snackbar-action-label', children: actionLabel }) })), !disableCloseButton && (_jsx("button", { className: 'seam-snackbar-close-button', onClick: () => {
|
|
23
|
-
|
|
31
|
+
handleClose();
|
|
24
32
|
}, children: _jsx(CloseWhiteIcon, {}) }))] })] }) }));
|
|
25
33
|
}
|
|
26
34
|
function SnackbarIcon(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Snackbar.js","sourceRoot":"","sources":["../../../src/lib/ui/Snackbar/Snackbar.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Snackbar.js","sourceRoot":"","sources":["../../../src/lib/ui/Snackbar/Snackbar.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAmBtE,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,EACP,OAAO,EACP,OAAO,EACP,MAAM,EACN,WAAW,GAAG,KAAK,EACnB,cAAc,GAAG,IAAI,EACrB,kBAAkB,GAAG,KAAK,EAC1B,mBAAmB,GAAG,KAAK,EAC3B,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,GACJ;IACd,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,CAAC,CAAC,OAAO,CAAC,CAAA;IACrB,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;IAExB,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAEvE,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,SAAS,CAAC,IAAI,CAAC,CAAA;QACf,OAAO,EAAE,CAAA;IACX,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;IAExB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;SAChB;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE;YACzC,WAAW,EAAE,CAAA;QACf,CAAC,EAAE,cAAc,CAAC,CAAA;QAElB,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAClC,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAA;IAE9C,OAAO,CACL,cAAK,SAAS,EAAC,oBAAoB,YACjC,eACE,SAAS,EAAE,UAAU,CAAC,eAAe,EAAE;gBACrC,uBAAuB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;aACjE,CAAC,aAEF,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,EAClC,cAAK,SAAS,EAAC,4BAA4B,YACzC,YAAG,SAAS,EAAC,uBAAuB,YAAE,OAAO,GAAK,GAC9C,EACN,eAAK,SAAS,EAAC,4BAA4B,aACxC,MAAM,IAAI,IAAI,IAAI,CACjB,iBACE,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,iBAAiB,YAE1B,eAAM,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAQ,GAC1D,CACV,EACA,CAAC,kBAAkB,IAAI,CACtB,iBACE,SAAS,EAAC,4BAA4B,EACtC,OAAO,EAAE,GAAG,EAAE;gCACZ,WAAW,EAAE,CAAA;4BACf,CAAC,YAED,KAAC,cAAc,KAAG,GACX,CACV,IACG,IACF,GACF,CACP,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAmC;IACvD,QAAQ,KAAK,CAAC,OAAO,EAAE;QACrB,KAAK,SAAS;YACZ,OAAO,KAAC,cAAc,KAAG,CAAA;QAC3B,KAAK,OAAO;YACV,OAAO,KAAC,qBAAqB,KAAG,CAAA;KACnC;AACH,CAAC"}
|
|
@@ -4,5 +4,4 @@ export interface SwitchProps {
|
|
|
4
4
|
onChange: (checked: boolean) => void;
|
|
5
5
|
enableLabel?: boolean;
|
|
6
6
|
}
|
|
7
|
-
declare function Switch({ checked, onChange, enableLabel, }: SwitchProps): JSX.Element;
|
|
8
|
-
export default Switch;
|
|
7
|
+
export declare function Switch({ checked, onChange, enableLabel, }: SwitchProps): JSX.Element;
|
package/lib/ui/Switch/Switch.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import classNames from 'classnames';
|
|
3
|
-
function Switch({ checked, onChange, enableLabel = false, }) {
|
|
3
|
+
export function Switch({ checked, onChange, enableLabel = false, }) {
|
|
4
4
|
return (_jsxs("div", { className: 'seam-switch-container', children: [enableLabel && (_jsx("label", { className: 'seam-switch-label', children: checked ? t.on : t.off })), _jsx("div", { className: classNames('seam-switch', {
|
|
5
5
|
'seam-switch-checked': checked,
|
|
6
6
|
}), onClick: () => {
|
|
@@ -11,5 +11,4 @@ const t = {
|
|
|
11
11
|
on: 'On',
|
|
12
12
|
off: 'Off',
|
|
13
13
|
};
|
|
14
|
-
export default Switch;
|
|
15
14
|
//# sourceMappingURL=Switch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/lib/ui/Switch/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAQnC,
|
|
1
|
+
{"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/lib/ui/Switch/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAQnC,MAAM,UAAU,MAAM,CAAC,EACrB,OAAO,EACP,QAAQ,EACR,WAAW,GAAG,KAAK,GACP;IACZ,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,aACnC,WAAW,IAAI,CACd,gBAAO,SAAS,EAAC,mBAAmB,YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAS,CACtE,EACD,cACE,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE;oBACnC,qBAAqB,EAAE,OAAO;iBAC/B,CAAC,EACF,OAAO,EAAE,GAAG,EAAE;oBACZ,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAA;gBACpB,CAAC,YAED,cAAK,SAAS,EAAC,oBAAoB,GAAG,GAClC,IACF,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,KAAK;CACX,CAAA"}
|
|
@@ -6,7 +6,7 @@ import { Menu } from '../../../lib/ui/Menu/Menu.js';
|
|
|
6
6
|
import { ThermoModeMenuOption } from '../../../lib/ui/thermostat/ThermoModeMenuOption.js';
|
|
7
7
|
const modes = ['auto', 'on'];
|
|
8
8
|
export function FanModeMenu({ mode, onChange }) {
|
|
9
|
-
return (_jsx(Menu, { renderButton: ({ onOpen }) => (_jsxs("button", { onClick: onOpen, className: 'seam-fan-mode-menu-button', children: [_jsxs("div", { className: 'seam-fan-mode-menu-button-block', children: [_jsx(FanOutlineIcon, {}), _jsx("span", { className: 'seam-fan-mode-menu-button-text', children: mode === 'auto' ? t.auto : t.on })] }), _jsx(ChevronDownIcon, {})] })),
|
|
9
|
+
return (_jsx(Menu, { renderButton: ({ onOpen }) => (_jsxs("button", { onClick: onOpen, className: 'seam-fan-mode-menu-button', children: [_jsxs("div", { className: 'seam-fan-mode-menu-button-block', children: [_jsx(FanOutlineIcon, {}), _jsx("span", { className: 'seam-fan-mode-menu-button-text', children: mode === 'auto' ? t.auto : t.on })] }), _jsx(ChevronDownIcon, {})] })), horizontalOffset: -20, backgroundProps: {
|
|
10
10
|
className: 'seam-thermo-mode-menu',
|
|
11
11
|
}, children: modes.map((m) => (_jsx(ThermoModeMenuOption, { label: t[m], icon: _jsx(FanIcon, {}), isSelected: mode === m, onClick: () => {
|
|
12
12
|
onChange(m);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FanModeMenu.js","sourceRoot":"","sources":["../../../src/lib/ui/thermostat/FanModeMenu.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAEhF,MAAM,KAAK,GAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAO9C,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAoB;IAC9D,OAAO,CACL,KAAC,IAAI,IACH,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAC5B,kBAAQ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAC,2BAA2B,aAC5D,eAAK,SAAS,EAAC,iCAAiC,aAC9C,KAAC,cAAc,KAAG,EAClB,eAAM,SAAS,EAAC,gCAAgC,YAC7C,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAC3B,IACH,EACN,KAAC,eAAe,KAAG,IACZ,CACV,EACD,
|
|
1
|
+
{"version":3,"file":"FanModeMenu.js","sourceRoot":"","sources":["../../../src/lib/ui/thermostat/FanModeMenu.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAEhF,MAAM,KAAK,GAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAO9C,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAoB;IAC9D,OAAO,CACL,KAAC,IAAI,IACH,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAC5B,kBAAQ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAC,2BAA2B,aAC5D,eAAK,SAAS,EAAC,iCAAiC,aAC9C,KAAC,cAAc,KAAG,EAClB,eAAM,SAAS,EAAC,gCAAgC,YAC7C,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAC3B,IACH,EACN,KAAC,eAAe,KAAG,IACZ,CACV,EACD,gBAAgB,EAAE,CAAC,EAAE,EACrB,eAAe,EAAE;YACf,SAAS,EAAE,uBAAuB;SACnC,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAChB,KAAC,oBAAoB,IAEnB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EACX,IAAI,EAAE,KAAC,OAAO,KAAG,EACjB,UAAU,EAAE,IAAI,KAAK,CAAC,EACtB,OAAO,EAAE,GAAG,EAAE;gBACZ,QAAQ,CAAC,CAAC,CAAC,CAAA;YACb,CAAC,IANI,CAAC,CAON,CACH,CAAC,GACG,CACR,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,IAAI;CACT,CAAA"}
|
|
@@ -71,6 +71,9 @@ export function TemperatureControlGroup({ mode, heatValue, onHeatValueChange, co
|
|
|
71
71
|
onHeatValueChange,
|
|
72
72
|
onCoolValueChange,
|
|
73
73
|
]);
|
|
74
|
-
|
|
74
|
+
// This is done so that both sliders are operating on the same range of numbers
|
|
75
|
+
const heatCoolSliderMin = Math.min(minCool, minHeat);
|
|
76
|
+
const heatCoolSliderMax = Math.max(maxCool, maxHeat);
|
|
77
|
+
return (_jsxs("div", { className: 'seam-temperature-control-group', children: [showHeat && (_jsxs("div", { className: 'seam-temperature-control-group-block', children: [_jsx(ThermostatHeatLargeIcon, {}), _jsx(TemperatureControl, { variant: 'heat', value: heatValue, onChange: adjustHeat, min: mode === 'heat_cool' ? heatCoolSliderMin : minHeat, max: mode === 'heat_cool' ? heatCoolSliderMax : maxHeat })] })), showCool && (_jsxs("div", { className: 'seam-temperature-control-group-block', children: [_jsx(ThermostatCoolLargeIcon, {}), _jsx(TemperatureControl, { variant: 'cool', value: coolValue, onChange: adjustCool, min: mode === 'heat_cool' ? heatCoolSliderMin : minCool, max: mode === 'heat_cool' ? heatCoolSliderMax : maxCool })] }))] }));
|
|
75
78
|
}
|
|
76
79
|
//# sourceMappingURL=TemperatureControlGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemperatureControlGroup.js","sourceRoot":"","sources":["../../../src/lib/ui/thermostat/TemperatureControlGroup.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TemperatureControlGroup.js","sourceRoot":"","sources":["../../../src/lib/ui/thermostat/TemperatureControlGroup.tsx"],"names":[],"mappings":"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"}
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const seamapiReactVersion = "2.
|
|
1
|
+
declare const seamapiReactVersion = "2.4.0";
|
|
2
2
|
export default seamapiReactVersion;
|
package/lib/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seamapi/react",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Seam Components.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
"@mui/material": "^5.12.2",
|
|
142
142
|
"@rxfork/r2wc-react-to-web-component": "^2.4.0",
|
|
143
143
|
"@seamapi/fake-devicedb": "^1.2.0",
|
|
144
|
-
"@seamapi/fake-seam-connect": "^1.
|
|
144
|
+
"@seamapi/fake-seam-connect": "^1.42.0",
|
|
145
145
|
"@seamapi/http": "^0.2.1",
|
|
146
146
|
"@seamapi/types": "^1.32.0",
|
|
147
147
|
"@storybook/addon-designs": "^7.0.1",
|
|
@@ -8,11 +8,16 @@ import { NestedClimateSettingScheduleTable } from 'lib/seam/components/ClimateSe
|
|
|
8
8
|
import type { CommonProps } from 'lib/seam/components/common-props.js'
|
|
9
9
|
import { useConnectedAccount } from 'lib/seam/connected-accounts/use-connected-account.js'
|
|
10
10
|
import { useClimateSettingSchedules } from 'lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js'
|
|
11
|
+
import { useUpdateFanMode } from 'lib/seam/thermostats/use-update-fan-mode.js'
|
|
12
|
+
import { useUpdateThermostat } from 'lib/seam/thermostats/use-update-thermostat.js'
|
|
11
13
|
import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
|
|
12
14
|
import { DetailRow } from 'lib/ui/layout/DetailRow.js'
|
|
13
15
|
import { DetailSection } from 'lib/ui/layout/DetailSection.js'
|
|
14
16
|
import { DetailSectionGroup } from 'lib/ui/layout/DetailSectionGroup.js'
|
|
17
|
+
import { Snackbar } from 'lib/ui/Snackbar/Snackbar.js'
|
|
18
|
+
import { Switch } from 'lib/ui/Switch/Switch.js'
|
|
15
19
|
import { ClimateSettingStatus } from 'lib/ui/thermostat/ClimateSettingStatus.js'
|
|
20
|
+
import { FanModeMenu } from 'lib/ui/thermostat/FanModeMenu.js'
|
|
16
21
|
import { ThermostatCard } from 'lib/ui/thermostat/ThermostatCard.js'
|
|
17
22
|
|
|
18
23
|
interface ThermostatDeviceDetailsProps extends CommonProps {
|
|
@@ -39,6 +44,18 @@ export function ThermostatDeviceDetails({
|
|
|
39
44
|
device_id: device.device_id,
|
|
40
45
|
})
|
|
41
46
|
|
|
47
|
+
const {
|
|
48
|
+
mutate: updateFanMode,
|
|
49
|
+
isError: isFanModeError,
|
|
50
|
+
isSuccess: isFanModeSuccess,
|
|
51
|
+
} = useUpdateFanMode()
|
|
52
|
+
|
|
53
|
+
const {
|
|
54
|
+
mutate: updateThermostat,
|
|
55
|
+
isSuccess: isThermostatUpdateSuccess,
|
|
56
|
+
isError: isThermostatUpdateError,
|
|
57
|
+
} = useUpdateThermostat()
|
|
58
|
+
|
|
42
59
|
if (climateSettingsOpen) {
|
|
43
60
|
return (
|
|
44
61
|
<NestedClimateSettingScheduleTable
|
|
@@ -106,6 +123,17 @@ export function ThermostatDeviceDetails({
|
|
|
106
123
|
temperatureUnit='fahrenheit'
|
|
107
124
|
/>
|
|
108
125
|
</DetailRow>
|
|
126
|
+
<DetailRow label={t.fanMode}>
|
|
127
|
+
<FanModeMenu
|
|
128
|
+
mode={device.properties.fan_mode_setting}
|
|
129
|
+
onChange={(fanMode) => {
|
|
130
|
+
updateFanMode({
|
|
131
|
+
device_id: device.device_id,
|
|
132
|
+
fan_mode_setting: fanMode,
|
|
133
|
+
})
|
|
134
|
+
}}
|
|
135
|
+
/>
|
|
136
|
+
</DetailRow>
|
|
109
137
|
</DetailSection>
|
|
110
138
|
|
|
111
139
|
<DetailSection
|
|
@@ -123,12 +151,20 @@ export function ThermostatDeviceDetails({
|
|
|
123
151
|
)}
|
|
124
152
|
</DetailRow>
|
|
125
153
|
<DetailRow label={t.allowManualOverride}>
|
|
126
|
-
<
|
|
127
|
-
{
|
|
128
|
-
.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
154
|
+
<Switch
|
|
155
|
+
checked={
|
|
156
|
+
device.properties.default_climate_setting
|
|
157
|
+
?.manual_override_allowed ?? true
|
|
158
|
+
}
|
|
159
|
+
onChange={(checked) => {
|
|
160
|
+
updateThermostat({
|
|
161
|
+
device_id: device.device_id,
|
|
162
|
+
default_climate_setting: {
|
|
163
|
+
manual_override_allowed: checked,
|
|
164
|
+
},
|
|
165
|
+
})
|
|
166
|
+
}}
|
|
167
|
+
/>
|
|
132
168
|
</DetailRow>
|
|
133
169
|
</DetailSection>
|
|
134
170
|
|
|
@@ -153,6 +189,35 @@ export function ThermostatDeviceDetails({
|
|
|
153
189
|
</DetailSectionGroup>
|
|
154
190
|
</div>
|
|
155
191
|
</div>
|
|
192
|
+
|
|
193
|
+
<Snackbar
|
|
194
|
+
message={t.manualOverrideSuccess}
|
|
195
|
+
variant='success'
|
|
196
|
+
visible={isThermostatUpdateSuccess}
|
|
197
|
+
automaticVisibility
|
|
198
|
+
/>
|
|
199
|
+
|
|
200
|
+
<Snackbar
|
|
201
|
+
message={t.manualOverrideError}
|
|
202
|
+
variant='error'
|
|
203
|
+
visible={isThermostatUpdateError}
|
|
204
|
+
automaticVisibility
|
|
205
|
+
/>
|
|
206
|
+
|
|
207
|
+
<Snackbar
|
|
208
|
+
message={t.fanModeSuccess}
|
|
209
|
+
variant='success'
|
|
210
|
+
visible={isFanModeSuccess}
|
|
211
|
+
automaticVisibility
|
|
212
|
+
autoDismiss
|
|
213
|
+
/>
|
|
214
|
+
|
|
215
|
+
<Snackbar
|
|
216
|
+
message={t.fanModeError}
|
|
217
|
+
variant='error'
|
|
218
|
+
visible={isFanModeError}
|
|
219
|
+
automaticVisibility
|
|
220
|
+
/>
|
|
156
221
|
</div>
|
|
157
222
|
)
|
|
158
223
|
}
|
|
@@ -169,6 +234,7 @@ const t = {
|
|
|
169
234
|
currentSettingsTooltip:
|
|
170
235
|
'These are the settings currently on the device. If you change them here, they change on the device.',
|
|
171
236
|
climate: 'Climate',
|
|
237
|
+
fanMode: 'Fan mode',
|
|
172
238
|
defaultSettings: 'Default settings',
|
|
173
239
|
defaultSettingsTooltip:
|
|
174
240
|
'When a scheduled climate reaches its end time, the default settings will kick in.',
|
|
@@ -179,6 +245,8 @@ const t = {
|
|
|
179
245
|
linkedAccount: 'Linked account',
|
|
180
246
|
deviceId: 'Device ID',
|
|
181
247
|
none: 'None',
|
|
182
|
-
|
|
183
|
-
|
|
248
|
+
fanModeSuccess: 'Successfully updated fan mode!',
|
|
249
|
+
fanModeError: 'Error updating fan mode. Please try again.',
|
|
250
|
+
manualOverrideSuccess: 'Successfully updated manual override!',
|
|
251
|
+
manualOverrideError: 'Error updating manual override. Please try again.',
|
|
184
252
|
}
|