@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.
Files changed (41) hide show
  1. package/README.md +1 -1
  2. package/dist/elements.js +5088 -4846
  3. package/dist/elements.js.map +1 -1
  4. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js +27 -7
  5. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js.map +1 -1
  6. package/lib/seam/thermostats/use-update-fan-mode.js +2 -2
  7. package/lib/seam/thermostats/use-update-fan-mode.js.map +1 -1
  8. package/lib/seam/thermostats/use-update-thermostat.js +2 -2
  9. package/lib/seam/thermostats/use-update-thermostat.js.map +1 -1
  10. package/lib/set-point-bounds.d.ts +4 -0
  11. package/lib/set-point-bounds.js +24 -0
  12. package/lib/set-point-bounds.js.map +1 -0
  13. package/lib/temperature-bounds.d.ts +2 -2
  14. package/lib/temperature-bounds.js +4 -6
  15. package/lib/temperature-bounds.js.map +1 -1
  16. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js +11 -4
  17. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js.map +1 -1
  18. package/lib/ui/Snackbar/Snackbar.d.ts +2 -1
  19. package/lib/ui/Snackbar/Snackbar.js +14 -6
  20. package/lib/ui/Snackbar/Snackbar.js.map +1 -1
  21. package/lib/ui/Switch/Switch.d.ts +1 -2
  22. package/lib/ui/Switch/Switch.js +1 -2
  23. package/lib/ui/Switch/Switch.js.map +1 -1
  24. package/lib/ui/thermostat/FanModeMenu.js +1 -1
  25. package/lib/ui/thermostat/FanModeMenu.js.map +1 -1
  26. package/lib/ui/thermostat/TemperatureControlGroup.js +4 -1
  27. package/lib/ui/thermostat/TemperatureControlGroup.js.map +1 -1
  28. package/lib/version.d.ts +1 -1
  29. package/lib/version.js +1 -1
  30. package/package.json +2 -2
  31. package/src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx +76 -8
  32. package/src/lib/seam/thermostats/use-update-fan-mode.ts +2 -2
  33. package/src/lib/seam/thermostats/use-update-thermostat.ts +2 -2
  34. package/src/lib/set-point-bounds.ts +39 -0
  35. package/src/lib/temperature-bounds.ts +4 -12
  36. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.tsx +14 -2
  37. package/src/lib/ui/Snackbar/Snackbar.tsx +18 -5
  38. package/src/lib/ui/Switch/Switch.tsx +1 -3
  39. package/src/lib/ui/thermostat/FanModeMenu.tsx +1 -2
  40. package/src/lib/ui/thermostat/TemperatureControlGroup.tsx +8 -4
  41. 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, {}) }) }) }), _jsx(DetailSection, { label: t.currentSettings, tooltipContent: t.currentSettingsTooltip, children: _jsx(DetailRow, { label: t.climate, children: _jsx(ClimateSettingStatus, { climateSetting: device.properties.current_climate_setting, temperatureUnit: 'fahrenheit' }) }) }), _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("p", { children: device.properties.current_climate_setting
37
- .manual_override_allowed
38
- ? t.yes
39
- : t.no }) })] }), _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 ??
40
- device.connected_account_id }), !disableResourceIds && (_jsx(DetailRow, { label: t.deviceId, sublabel: device.device_id }))] })] }) })] })] }));
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
- yes: 'Yes',
62
- no: 'No',
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(['thermostats', 'get', { device_id: variables.device_id }], (thermostat) => {
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(['thermostats', 'list', { device_id: variables.device_id }], (thermostats) => {
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,aAAa,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EAC1D,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,aAAa,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EAC3D,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"}
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(['thermostats', 'get', { device_id: variables.device_id }], (thermostat) => {
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(['thermostats', 'list', { device_id: variables.device_id }], (thermostats) => {
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,aAAa,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EAC1D,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,aAAa,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EAC3D,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"}
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, minCool, maxCool, delta, }: ControlBounds) => MinMax;
19
- export declare const getCoolBounds: ({ mode, minHeat, maxHeat, minCool, maxCool, delta, }: ControlBounds) => MinMax;
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, minCool, maxCool, delta, }) => {
1
+ export const getHeatBounds = ({ mode, minHeat, maxHeat, maxCool, delta, }) => {
2
2
  const actualMaxHeat = mode === 'heat_cool' ? Math.min(maxHeat - delta, maxCool - delta) : maxHeat;
3
- const actualMinHeat = mode === 'heat_cool' ? Math.max(minHeat, minCool) : minHeat;
4
- return { min: actualMinHeat, max: actualMaxHeat };
3
+ return { min: minHeat, max: actualMaxHeat };
5
4
  };
6
- export const getCoolBounds = ({ mode, minHeat, maxHeat, minCool, maxCool, delta, }) => {
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: actualMaxCool };
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,OAAO,EACP,KAAK,GACS,EAAU,EAAE;IAC1B,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,MAAM,aAAa,GACjB,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAE7D,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,GACS,EAAU,EAAE;IAC1B,MAAM,aAAa,GACjB,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAE7D,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,aAAa,EAAE,CAAA;AACnD,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
+ {"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 { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
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
- 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 })] }) }), _jsxs("div", { className: 'seam-actions', children: [_jsx(Button, { onClick: onCancel, children: t.cancel }), _jsx(Button, { variant: 'solid', onClick: onSave, children: t.save })] })] })] }));
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;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAA;AAW5F,MAAM,UAAU,wCAAwC,CAAC,EACvD,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,MAAM,GACwC;IAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAA;IAEF,OAAO,CACL,8BACE,KAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,GACnC,EACF,eAAK,SAAS,EAAC,WAAW,aACxB,cAAK,SAAS,EAAC,oDAAoD,YACjE,eAAK,SAAS,EAAC,cAAc,aAC3B,0BACE,KAAC,UAAU,cAAE,CAAC,CAAC,cAAc,GAAc,EAC3C,eAAM,SAAS,EAAC,YAAY,YAAE,CAAC,CAAC,wBAAwB,GAAQ,IAC5D,EACN,KAAC,WAAW,IAAC,OAAO,EAAE,OAAO,GAAI,IAC7B,GACF,EACN,eAAK,SAAS,EAAC,cAAc,aAC3B,KAAC,MAAM,IAAC,OAAO,EAAE,QAAQ,YAAG,CAAC,CAAC,MAAM,GAAU,EAC9C,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,MAAM,YACpC,CAAC,CAAC,IAAI,GACA,IACL,IACF,IACL,CACJ,CAAA;AACH,CAAC;AAMD,SAAS,WAAW,CAAC,EAAE,OAAO,EAAoB;IAChD,OAAO,CACL,KAAC,SAAS,cACR,KAAC,UAAU,IACT,IAAI,EAAC,gBAAgB,EACrB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAC1C,KAAC,0BAA0B,IACzB,IAAI,EAAE,KAAK,CAAC,eAAe,EAC3B,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;oBACrB,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC/C,CAAC,EACD,SAAS,EAAE,KAAK,CAAC,eAAe,EAChC,SAAS,EAAE,KAAK,CAAC,eAAe,EAChC,iBAAiB,EAAE,CAAC,eAAe,EAAE,EAAE;oBACrC,QAAQ,CAAC;wBACP,GAAG,KAAK;wBACR,eAAe;qBAChB,CAAC,CAAA;gBACJ,CAAC,EACD,iBAAiB,EAAE,CAAC,eAAe,EAAE,EAAE;oBACrC,QAAQ,CAAC;wBACP,GAAG,KAAK;wBACR,eAAe;qBAChB,CAAC,CAAA;gBACJ,CAAC,GACD,CACH,GACD,GACQ,CACb,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,cAAc,EAAE,iBAAiB;IACjC,wBAAwB,EAAE,oCAAoC;IAC9D,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACb,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
- onClose();
22
+ handleClose();
15
23
  }, dismissAfterMs);
16
24
  return () => {
17
25
  globalThis.clearTimeout(timeout);
18
26
  };
19
- }, [autoDismiss, dismissAfterMs, onClose]);
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
- onClose();
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;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAkBtE,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,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,GACJ;IACd,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAEvE,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,OAAO,EAAE,CAAA;QACX,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,OAAO,CAAC,CAAC,CAAA;IAE1C,OAAO,CACL,cAAK,SAAS,EAAC,oBAAoB,YACjC,eACE,SAAS,EAAE,UAAU,CAAC,eAAe,EAAE;gBACrC,uBAAuB,EAAE,OAAO;aACjC,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,OAAO,EAAE,CAAA;4BACX,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"}
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;
@@ -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,SAAS,MAAM,CAAC,EACd,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;AAED,eAAe,MAAM,CAAA"}
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, {})] })), verticalOffset: -180, horizontalOffset: -32, backgroundProps: {
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,cAAc,EAAE,CAAC,GAAG,EACpB,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"}
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
- 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: minHeat, max: maxHeat })] })), showCool && (_jsxs("div", { className: 'seam-temperature-control-group-block', children: [_jsx(ThermostatCoolLargeIcon, {}), _jsx(TemperatureControl, { variant: 'cool', value: coolValue, onChange: adjustCool, min: minCool, max: maxCool })] }))] }));
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.2.0";
1
+ declare const seamapiReactVersion = "2.4.0";
2
2
  export default seamapiReactVersion;
package/lib/version.js CHANGED
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '2.2.0';
1
+ const seamapiReactVersion = '2.4.0';
2
2
  export default seamapiReactVersion;
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/react",
3
- "version": "2.2.0",
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.41.0",
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
- <p>
127
- {device.properties.current_climate_setting
128
- .manual_override_allowed
129
- ? t.yes
130
- : t.no}
131
- </p>
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
- yes: 'Yes',
183
- no: 'No',
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
  }