@seamapi/react 1.48.1 → 1.49.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 (56) hide show
  1. package/README.md +1 -1
  2. package/dist/elements.js +3285 -3280
  3. package/dist/elements.js.map +1 -1
  4. package/dist/index.css +188 -2
  5. package/dist/index.css.map +1 -1
  6. package/dist/index.min.css +1 -1
  7. package/dist/index.min.css.map +1 -1
  8. package/lib/icons/ChevronWide.d.ts +2 -0
  9. package/lib/icons/ChevronWide.js +5 -0
  10. package/lib/icons/ChevronWide.js.map +1 -0
  11. package/lib/icons/Copy.js +2 -4
  12. package/lib/icons/Copy.js.map +1 -1
  13. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js +9 -2
  14. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js.map +1 -1
  15. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.d.ts +7 -0
  16. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js +32 -0
  17. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js.map +1 -0
  18. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js +2 -2
  19. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js.map +1 -1
  20. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.d.ts +3 -1
  21. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js +20 -3
  22. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js.map +1 -1
  23. package/lib/ui/layout/AccordionRow.d.ts +7 -0
  24. package/lib/ui/layout/AccordionRow.js +8 -0
  25. package/lib/ui/layout/AccordionRow.js.map +1 -0
  26. package/lib/ui/layout/DetailRow.d.ts +6 -0
  27. package/lib/ui/layout/DetailRow.js +5 -0
  28. package/lib/ui/layout/DetailRow.js.map +1 -0
  29. package/lib/ui/layout/DetailSection.d.ts +7 -0
  30. package/lib/ui/layout/DetailSection.js +6 -0
  31. package/lib/ui/layout/DetailSection.js.map +1 -0
  32. package/lib/ui/layout/DetailSectionGroup.d.ts +2 -0
  33. package/lib/ui/layout/DetailSectionGroup.js +5 -0
  34. package/lib/ui/layout/DetailSectionGroup.js.map +1 -0
  35. package/lib/version.d.ts +1 -1
  36. package/lib/version.js +1 -1
  37. package/package.json +1 -1
  38. package/src/lib/icons/ChevronWide.tsx +21 -0
  39. package/src/lib/icons/Copy.tsx +6 -21
  40. package/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx +23 -2
  41. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.element.ts +13 -0
  42. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx +103 -0
  43. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.tsx +4 -2
  44. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.element.ts +2 -0
  45. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.tsx +37 -2
  46. package/src/lib/ui/layout/AccordionRow.tsx +36 -0
  47. package/src/lib/ui/layout/DetailRow.tsx +17 -0
  48. package/src/lib/ui/layout/DetailSection.tsx +25 -0
  49. package/src/lib/ui/layout/DetailSectionGroup.tsx +7 -0
  50. package/src/lib/version.ts +1 -1
  51. package/src/styles/_access-code-details.scss +42 -1
  52. package/src/styles/_climate-setting-schedule-details.scss +44 -0
  53. package/src/styles/_layout.scss +146 -0
  54. package/src/styles/_main.scss +2 -0
  55. package/src/styles/_seam-table.scss +8 -0
  56. package/src/styles/_thermostat.scss +4 -1
@@ -2,12 +2,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import classNames from 'classnames';
3
3
  import { DateTime } from 'luxon';
4
4
  import { useState } from 'react';
5
+ import { CopyIcon } from '../../../../lib/icons/Copy.js';
5
6
  import { useAccessCode } from '../../../../lib/seam/access-codes/use-access-code.js';
6
7
  import { useDeleteAccessCode } from '../../../../lib/seam/access-codes/use-delete-access-code.js';
7
8
  import { AccessCodeDevice } from '../../../../lib/seam/components/AccessCodeDetails/AccessCodeDevice.js';
8
9
  import { DeviceDetails } from '../../../../lib/seam/components/DeviceDetails/DeviceDetails.js';
9
10
  import { Alerts } from '../../../../lib/ui/Alert/Alerts.js';
10
11
  import { Button } from '../../../../lib/ui/Button.js';
12
+ import { copyToClipboard } from '../../../../lib/ui/clipboard.js';
13
+ import { IconButton } from '../../../../lib/ui/IconButton.js';
11
14
  import { ContentHeader } from '../../../../lib/ui/layout/ContentHeader.js';
12
15
  import { useIsDateInPast } from '../../../../lib/ui/use-is-date-in-past.js';
13
16
  const disableEditAccessCode = true;
@@ -34,9 +37,13 @@ export function AccessCodeDetails({ accessCodeId, disableLockUnlock = false, onB
34
37
  message: warning.message,
35
38
  })),
36
39
  ];
37
- return (_jsxs("div", { className: classNames('seam-access-code-details', className), children: [_jsx(ContentHeader, { title: 'Access code', onBack: onBack }), _jsxs("div", { className: 'seam-summary', children: [_jsxs("div", { className: classNames('seam-top', alerts.length > 0 && 'seam-top-has-alerts'), children: [_jsx("span", { className: 'seam-label', children: t.accessCode }), _jsx("h5", { className: 'seam-access-code-name', children: name }), _jsx("div", { className: 'seam-code', children: accessCode.code }), _jsx("div", { className: 'seam-duration', children: _jsx(Duration, { accessCode: accessCode }) })] }), _jsx(Alerts, { alerts: alerts, className: 'seam-alerts-padded' }), _jsx(AccessCodeDevice, { deviceId: accessCode.device_id, disableLockUnlock: disableLockUnlock, onSelectDevice: selectDevice })] }), (!disableEditAccessCode || !disableDeleteAccessCode) && (_jsxs("div", { className: 'seam-actions', children: [!disableEditAccessCode && (_jsx(Button, { size: 'small', onClick: onEdit, disabled: isDeleting, children: t.editCode })), !disableDeleteAccessCode && (_jsx(Button, { size: 'small', onClick: () => {
40
+ return (_jsxs("div", { className: classNames('seam-access-code-details', className), children: [_jsx(ContentHeader, { title: 'Access code', onBack: onBack }), _jsxs("div", { className: 'seam-summary', children: [_jsxs("div", { className: classNames('seam-top', alerts.length > 0 && 'seam-top-has-alerts'), children: [_jsx("span", { className: 'seam-label', children: t.accessCode }), _jsx("h5", { className: 'seam-access-code-name', children: name }), _jsxs("div", { className: 'seam-code', children: [_jsx("span", { children: accessCode.code }), _jsx(IconButton, { onClick: () => {
41
+ void copyToClipboard(accessCode.code ?? '');
42
+ }, children: _jsx(CopyIcon, {}) })] }), _jsx("div", { className: 'seam-duration', children: _jsx(Duration, { accessCode: accessCode }) })] }), _jsx(Alerts, { alerts: alerts, className: 'seam-alerts-padded' }), _jsx(AccessCodeDevice, { deviceId: accessCode.device_id, disableLockUnlock: disableLockUnlock, onSelectDevice: selectDevice })] }), (!disableEditAccessCode || !disableDeleteAccessCode) && (_jsxs("div", { className: 'seam-actions', children: [!disableEditAccessCode && (_jsx(Button, { size: 'small', onClick: onEdit, disabled: isDeleting, children: t.editCode })), !disableDeleteAccessCode && (_jsx(Button, { size: 'small', onClick: () => {
38
43
  deleteCode({ access_code_id: accessCode.access_code_id });
39
- }, disabled: isDeleting, children: t.deleteCode }))] })), _jsxs("div", { className: 'seam-details', children: [_jsxs("div", { className: 'seam-row', children: [_jsxs("div", { className: 'seam-heading', children: [t.id, ":"] }), _jsx("div", { className: 'seam-content', children: accessCode.access_code_id })] }), _jsxs("div", { className: 'seam-row', children: [_jsxs("div", { className: 'seam-heading', children: [t.created, ":"] }), _jsx("div", { className: 'seam-content', children: formatDate(accessCode.created_at) })] }), _jsxs("div", { className: 'seam-row seam-schedule', children: [_jsxs("div", { className: 'seam-heading', children: [t.timing, ":"] }), _jsx("div", { className: 'seam-content', children: _jsx(ScheduleInfo, { accessCode: accessCode }) })] })] })] }));
44
+ }, disabled: isDeleting, children: t.deleteCode }))] })), _jsxs("div", { className: 'seam-details', children: [_jsxs("div", { className: 'seam-row', children: [_jsxs("div", { className: 'seam-heading', children: [t.id, ":"] }), _jsxs("div", { className: 'seam-content seam-code-id', children: [_jsx("span", { children: accessCode.access_code_id }), _jsx(IconButton, { onClick: () => {
45
+ void copyToClipboard(accessCode.access_code_id);
46
+ }, children: _jsx(CopyIcon, {}) })] })] }), _jsxs("div", { className: 'seam-row', children: [_jsxs("div", { className: 'seam-heading', children: [t.created, ":"] }), _jsx("div", { className: 'seam-content', children: formatDate(accessCode.created_at) })] }), _jsxs("div", { className: 'seam-row seam-schedule', children: [_jsxs("div", { className: 'seam-heading', children: [t.timing, ":"] }), _jsx("div", { className: 'seam-content', children: _jsx(ScheduleInfo, { accessCode: accessCode }) })] })] })] }));
40
47
  }
41
48
  function ScheduleInfo({ accessCode }) {
42
49
  if (accessCode.type === 'ongoing') {
@@ -1 +1 @@
1
- {"version":3,"file":"AccessCodeDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccessCodeDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAQhC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAA;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAA;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAA;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/D,MAAM,qBAAqB,GAAG,IAAI,CAAA;AAWlC,MAAM,UAAU,iBAAiB,CAAC,EAChC,YAAY,EACZ,iBAAiB,GAAG,KAAK,EACzB,MAAM,EACN,MAAM,EACN,SAAS,EACT,uBAAuB,GAAG,KAAK,GACR;IACvB,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;IAClD,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACtE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,mBAAmB,EAAE,CAAA;IAE3E,IAAI,UAAU,IAAI,IAAI,EAAE;QACtB,OAAO,IAAI,CAAA;KACZ;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,YAAY,CAAA;IAE9C,IAAI,gBAAgB,IAAI,IAAI,EAAE;QAC5B,OAAO,CACL,KAAC,aAAa,IACZ,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,GAAG,EAAE;gBACX,YAAY,CAAC,IAAI,CAAC,CAAA;YACpB,CAAC,EACD,iBAAiB,EAAE,iBAAiB,GACpC,CACH,CAAA;KACF;IAED,MAAM,MAAM,GAAG;QACb,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvD,OAAO,EAAE,OAAgB;YACzB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE,SAAkB;YAC3B,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;KACJ,CAAA;IAED,OAAO,CACL,eAAK,SAAS,EAAE,UAAU,CAAC,0BAA0B,EAAE,SAAS,CAAC,aAC/D,KAAC,aAAa,IAAC,KAAK,EAAC,aAAa,EAAC,MAAM,EAAE,MAAM,GAAI,EACrD,eAAK,SAAS,EAAC,cAAc,aAC3B,eACE,SAAS,EAAE,UAAU,CACnB,UAAU,EACV,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,qBAAqB,CAC3C,aAED,eAAM,SAAS,EAAC,YAAY,YAAE,CAAC,CAAC,UAAU,GAAQ,EAClD,aAAI,SAAS,EAAC,uBAAuB,YAAE,IAAI,GAAM,EACjD,eAAK,SAAS,EAAC,WAAW,aACxB,yBAAO,UAAU,CAAC,IAAI,GAAQ,EAC9B,KAAC,UAAU,IACT,OAAO,EAAE,GAAG,EAAE;4CACZ,KAAK,eAAe,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;wCAC7C,CAAC,YAED,KAAC,QAAQ,KAAG,GACD,IACT,EACN,cAAK,SAAS,EAAC,eAAe,YAC5B,KAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,GAAI,GAChC,IACF,EACN,KAAC,MAAM,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAC,oBAAoB,GAAG,EACzD,KAAC,gBAAgB,IACf,QAAQ,EAAE,UAAU,CAAC,SAAS,EAC9B,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,YAAY,GAC5B,IACE,EACL,CAAC,CAAC,qBAAqB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CACvD,eAAK,SAAS,EAAC,cAAc,aAC1B,CAAC,qBAAqB,IAAI,CACzB,KAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,YACvD,CAAC,CAAC,QAAQ,GACJ,CACV,EACA,CAAC,uBAAuB,IAAI,CAC3B,KAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,GAAG,EAAE;4BACZ,UAAU,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,cAAc,EAAE,CAAC,CAAA;wBAC3D,CAAC,EACD,QAAQ,EAAE,UAAU,YAEnB,CAAC,CAAC,UAAU,GACN,CACV,IACG,CACP,EACD,eAAK,SAAS,EAAC,cAAc,aAC3B,eAAK,SAAS,EAAC,UAAU,aACvB,eAAK,SAAS,EAAC,cAAc,aAAE,CAAC,CAAC,EAAE,SAAQ,EAC3C,eAAK,SAAS,EAAC,2BAA2B,aACxC,yBAAO,UAAU,CAAC,cAAc,GAAQ,EACxC,KAAC,UAAU,IACT,OAAO,EAAE,GAAG,EAAE;4CACZ,KAAK,eAAe,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;wCACjD,CAAC,YAED,KAAC,QAAQ,KAAG,GACD,IACT,IACF,EACN,eAAK,SAAS,EAAC,UAAU,aACvB,eAAK,SAAS,EAAC,cAAc,aAAE,CAAC,CAAC,OAAO,SAAQ,EAChD,cAAK,SAAS,EAAC,cAAc,YAC1B,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,GAC9B,IACF,EAEN,eAAK,SAAS,EAAC,wBAAwB,aACrC,eAAK,SAAS,EAAC,cAAc,aAAE,CAAC,CAAC,MAAM,SAAQ,EAC/C,cAAK,SAAS,EAAC,cAAc,YAC3B,KAAC,YAAY,IAAC,UAAU,EAAE,UAAU,GAAI,GACpC,IACF,IACF,IACF,CACP,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,UAAU,EAA8B;IAC9D,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;QACjC,OAAO,yBAAO,CAAC,CAAC,OAAO,GAAQ,CAAA;KAChC;IACD,OAAO,CACL,eAAK,SAAS,EAAC,YAAY,aACzB,0BACE,cAAK,SAAS,EAAC,YAAY,YAAE,CAAC,CAAC,KAAK,GAAO,EAC3C,cAAK,SAAS,EAAC,WAAW,YAAE,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,GAAO,EACnE,cAAK,SAAS,EAAC,WAAW,YAAE,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,GAAO,IAC/D,EACN,0BACE,cAAK,SAAS,EAAC,YAAY,YAAE,CAAC,CAAC,GAAG,GAAO,EACzC,cAAK,SAAS,EAAC,WAAW,YAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,GAAO,EACjE,cAAK,SAAS,EAAC,WAAW,YAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,GAAO,IAC7D,IACF,CACP,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAiC;IACjD,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAE5B,MAAM,UAAU,GACd,eAAe,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,KAAK,CAAA;IAEP,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;QACjC,OAAO,CACL,2BACE,eAAM,SAAS,EAAC,YAAY,uBAAc,kBACrC,CACR,CAAA;KACF;IAED,IAAI,UAAU,EAAE;QACd,OAAO,CACL,2BACE,eAAM,SAAS,EAAC,YAAY,uBAAc,YAAO,GAAG,EACnD,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,SAAK,GAAG,EAC9C,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAC1B,CACR,CAAA;KACF;IAED,OAAO,CACL,sCACU,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,SAAK,GAAG,EACvD,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAC5B,CACR,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC;QAC3C,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;KACf,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC;QAC3C,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC;QAC3C,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,CAClB,KAA4D,EACnD,EAAE;IACX,IAAI,sBAAsB,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,oBAAoB;QAChE,OAAO,IAAI,CAAA;IAEb,IACE,KAAK,CAAC,UAAU,KAAK,yBAAyB;QAC9C,KAAK,CAAC,UAAU,KAAK,4BAA4B,EACjD;QACA,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,GAAG;IACR,UAAU,EAAE,aAAa;IACzB,YAAY,EAAE,MAAM;IACpB,EAAE,EAAE,IAAI;IACR,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,aAAa;CAC1B,CAAA"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ export interface ClimateSettingScheduleDetailsProps {
3
+ climateSettingScheduleId: string;
4
+ onBack?: () => void;
5
+ className?: string;
6
+ }
7
+ export declare function ClimateSettingScheduleDetails({ climateSettingScheduleId, onBack, className, }: ClimateSettingScheduleDetailsProps): JSX.Element | null;
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ import { formatDateAndTime } from '../../../../lib/dates.js';
4
+ import { ArrowRightIcon } from '../../../../lib/icons/ArrowRight.js';
5
+ import { useClimateSettingSchedule } from '../../../../lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js';
6
+ import { ContentHeader } from '../../../../lib/ui/layout/ContentHeader.js';
7
+ import { DetailRow } from '../../../../lib/ui/layout/DetailRow.js';
8
+ import { DetailSection } from '../../../../lib/ui/layout/DetailSection.js';
9
+ import { DetailSectionGroup } from '../../../../lib/ui/layout/DetailSectionGroup.js';
10
+ import { ClimateSettingStatus } from '../../../../lib/ui/thermostat/ClimateSettingStatus.js';
11
+ import { ClimateSettingScheduleCard } from './ClimateSettingScheduleCard.js';
12
+ export function ClimateSettingScheduleDetails({ climateSettingScheduleId, onBack, className, }) {
13
+ const { climateSettingSchedule } = useClimateSettingSchedule(climateSettingScheduleId);
14
+ if (climateSettingSchedule == null) {
15
+ return null;
16
+ }
17
+ const isManualOverrideAllowed = climateSettingSchedule.manual_override_allowed ?? false;
18
+ return (_jsxs("div", { className: classNames('seam-climate-setting-schedule-details', className), children: [_jsx(ContentHeader, { title: t.climateSettingSchedule, onBack: onBack }), _jsxs("div", { className: 'seam-climate-setting-schedule-details-content', children: [_jsx(ClimateSettingScheduleCard, { climateSettingScheduleId: climateSettingScheduleId }), _jsx("div", { className: 'seam-default-setting-message-container', children: _jsxs("span", { className: 'seam-default-setting-message', children: [t.defaultSettingMessagePart1, ' ', _jsx("span", { className: 'seam-default-setting-text', children: t.defaultSetting }), ' ', t.defaultSettingMessagePart2] }) }), _jsxs(DetailSectionGroup, { children: [_jsxs(DetailSection, { children: [_jsx(DetailRow, { label: t.startEndTime, children: _jsxs("span", { className: 'seam-climate-setting-details-value seam-climate-setting-details-schedule-range', children: [`${formatDateAndTime(climateSettingSchedule.schedule_starts_at)}`, _jsx(ArrowRightIcon, {}), `${formatDateAndTime(climateSettingSchedule.schedule_ends_at)}`] }) }), _jsx(DetailRow, { label: t.climateSetting, children: _jsx(ClimateSettingStatus, { climateSetting: climateSettingSchedule, iconPlacement: 'right' }) }), _jsx(DetailRow, { label: t.allowManualOverride, children: _jsx("span", { className: 'seam-climate-setting-details-value', children: isManualOverrideAllowed ? t.on : t.off }) })] }), _jsx(DetailSection, { children: _jsx(DetailRow, { label: t.creationDate, children: _jsx("div", { className: 'seam-creation-date', children: formatDateAndTime(climateSettingSchedule.created_at) }) }) })] })] })] }));
19
+ }
20
+ const t = {
21
+ climateSettingSchedule: 'Climate setting schedule',
22
+ startEndTime: 'Start/End Time',
23
+ climateSetting: 'Climate setting',
24
+ allowManualOverride: 'Allow manual override',
25
+ creationDate: 'Creation date',
26
+ defaultSettingMessagePart1: 'Thermostat will return to its',
27
+ defaultSetting: 'default setting',
28
+ defaultSettingMessagePart2: 'at end time.',
29
+ on: 'On',
30
+ off: 'Off',
31
+ };
32
+ //# sourceMappingURL=ClimateSettingScheduleDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClimateSettingScheduleDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { isThermostatDevice } from 'seamapi';
3
- import { ChevronRightIcon } from '../../../../lib/icons/ChevronRight.js';
3
+ import { ChevronWideIcon } from '../../../../lib/icons/ChevronWide.js';
4
4
  import { useDevice } from '../../../../lib/seam/devices/use-device.js';
5
5
  import { DeviceImage } from '../../../../lib/ui/device/DeviceImage.js';
6
6
  import { ClimateSettingStatus } from '../../../../lib/ui/thermostat/ClimateSettingStatus.js';
@@ -21,7 +21,7 @@ export function ClimateSettingScheduleDeviceBar({ deviceId, }) {
21
21
  }
22
22
  function Content(props) {
23
23
  const { device } = props;
24
- return (_jsxs("div", { className: 'seam-climate-setting-schedule-device-bar', children: [_jsxs("div", { className: 'seam-climate-setting-schedule-device-content', children: [_jsx("div", { className: 'seam-device-image', children: _jsx(DeviceImage, { device: device }) }), _jsxs("div", { className: 'seam-climate-setting-schedule-device-details', children: [_jsx("div", { className: 'seam-device-name', children: device.properties.name }), _jsxs("div", { className: 'seam-device-current-climate-setting', children: [t.currentClimate, ":", _jsx(ClimateSettingStatus, { climateSetting: device.properties.current_climate_setting })] })] })] }), _jsx(ChevronRightIcon, {})] }));
24
+ return (_jsxs("div", { className: 'seam-climate-setting-schedule-device-bar', children: [_jsxs("div", { className: 'seam-climate-setting-schedule-device-content', children: [_jsx("div", { className: 'seam-device-image', children: _jsx(DeviceImage, { device: device }) }), _jsxs("div", { className: 'seam-climate-setting-schedule-device-details', children: [_jsx("div", { className: 'seam-device-name', children: device.properties.name }), _jsxs("div", { className: 'seam-device-current-climate-setting', children: [t.currentClimate, ":", _jsx(ClimateSettingStatus, { climateSetting: device.properties.current_climate_setting })] })] })] }), _jsx("div", { className: 'seam-climate-setting-schedule-device-chevron', children: _jsx(ChevronWideIcon, {}) })] }));
25
25
  }
26
26
  const t = {
27
27
  currentClimate: 'Current climate',
@@ -1 +1 @@
1
- {"version":3,"file":"ClimateSettingScheduleDeviceBar.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAyB,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAEhF,MAAM,UAAU,+BAA+B,CAAC,EAC9C,QAAQ,GAGT;IACC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QACtC,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAA;IAEF,IAAI,SAAS,EAAE;QACb,OAAO,IAAI,CAAA;KACZ;IAED,IAAI,MAAM,IAAI,IAAI,EAAE;QAClB,OAAO,IAAI,CAAA;KACZ;IAED,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;QAC/B,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,KAAC,OAAO,IAAC,MAAM,EAAE,MAAM,GAAI,CAAA;AACpC,CAAC;AAED,SAAS,OAAO,CAAC,KAAmC;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IAExB,OAAO,CACL,eAAK,SAAS,EAAC,0CAA0C,aACvD,eAAK,SAAS,EAAC,8CAA8C,aAC3D,cAAK,SAAS,EAAC,mBAAmB,YAChC,KAAC,WAAW,IAAC,MAAM,EAAE,MAAM,GAAI,GAC3B,EACN,eAAK,SAAS,EAAC,8CAA8C,aAC3D,cAAK,SAAS,EAAC,kBAAkB,YAAE,MAAM,CAAC,UAAU,CAAC,IAAI,GAAO,EAChE,eAAK,SAAS,EAAC,qCAAqC,aACjD,CAAC,CAAC,cAAc,OACjB,KAAC,oBAAoB,IACnB,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,uBAAuB,GACzD,IACE,IACF,IACF,EACN,KAAC,gBAAgB,KAAG,IAChB,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,cAAc,EAAE,iBAAiB;CAClC,CAAA"}
1
+ {"version":3,"file":"ClimateSettingScheduleDeviceBar.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAyB,MAAM,SAAS,CAAA;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAEhF,MAAM,UAAU,+BAA+B,CAAC,EAC9C,QAAQ,GAGT;IACC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QACtC,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAA;IAEF,IAAI,SAAS,EAAE;QACb,OAAO,IAAI,CAAA;KACZ;IAED,IAAI,MAAM,IAAI,IAAI,EAAE;QAClB,OAAO,IAAI,CAAA;KACZ;IAED,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;QAC/B,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,KAAC,OAAO,IAAC,MAAM,EAAE,MAAM,GAAI,CAAA;AACpC,CAAC;AAED,SAAS,OAAO,CAAC,KAAmC;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IAExB,OAAO,CACL,eAAK,SAAS,EAAC,0CAA0C,aACvD,eAAK,SAAS,EAAC,8CAA8C,aAC3D,cAAK,SAAS,EAAC,mBAAmB,YAChC,KAAC,WAAW,IAAC,MAAM,EAAE,MAAM,GAAI,GAC3B,EACN,eAAK,SAAS,EAAC,8CAA8C,aAC3D,cAAK,SAAS,EAAC,kBAAkB,YAAE,MAAM,CAAC,UAAU,CAAC,IAAI,GAAO,EAChE,eAAK,SAAS,EAAC,qCAAqC,aACjD,CAAC,CAAC,cAAc,OACjB,KAAC,oBAAoB,IACnB,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,uBAAuB,GACzD,IACE,IACF,IACF,EACN,cAAK,SAAS,EAAC,8CAA8C,YAC3D,KAAC,eAAe,KAAG,GACf,IACF,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,cAAc,EAAE,iBAAiB;CAClC,CAAA"}
@@ -3,10 +3,12 @@ import type { ClimateSettingSchedule } from 'seamapi';
3
3
  export interface ClimateSettingScheduleTableProps {
4
4
  deviceId: string;
5
5
  disableSearch?: boolean;
6
+ onClimateSettingScheduleClick?: (climateSettingScheduleId: string) => void;
7
+ preventDefaultOnClimateSettingScheduleClick?: boolean;
6
8
  climateSettingScheduleFilter?: (climateSettingSchedule: ClimateSettingSchedule, searchInputValue: string) => boolean;
7
9
  climateSettingScheduleComparator?: (climateSettingScheduleA: ClimateSettingSchedule, climateSettingScheduleB: ClimateSettingSchedule) => number;
8
10
  onBack?: () => void;
9
11
  heading?: string | null;
10
12
  className?: string;
11
13
  }
12
- export declare function ClimateSettingScheduleTable({ deviceId, disableSearch, climateSettingScheduleFilter, climateSettingScheduleComparator, onBack, heading, className, }: ClimateSettingScheduleTableProps): JSX.Element;
14
+ export declare function ClimateSettingScheduleTable({ deviceId, disableSearch, onClimateSettingScheduleClick, preventDefaultOnClimateSettingScheduleClick, climateSettingScheduleFilter, climateSettingScheduleComparator, onBack, heading, className, }: ClimateSettingScheduleTableProps): JSX.Element;
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import classNames from 'classnames';
3
- import { useMemo, useState } from 'react';
3
+ import { useCallback, useMemo, useState } from 'react';
4
4
  import { compareByCreatedAtDesc } from '../../../../lib/dates.js';
5
+ import { ClimateSettingScheduleDetails } from '../../../../lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js';
5
6
  import { useClimateSettingSchedules, } from '../../../../lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js';
6
7
  import { ContentHeader } from '../../../../lib/ui/layout/ContentHeader.js';
7
8
  import { EmptyPlaceholder } from '../../../../lib/ui/Table/EmptyPlaceholder.js';
@@ -18,11 +19,12 @@ const defaultClimateSettingScheduleFilter = (climateSettingSchedule, searchInput
18
19
  const name = climateSettingSchedule.name ?? '';
19
20
  return name.trim().toLowerCase().includes(value);
20
21
  };
21
- export function ClimateSettingScheduleTable({ deviceId, disableSearch = false, climateSettingScheduleFilter = defaultClimateSettingScheduleFilter, climateSettingScheduleComparator = compareByCreatedAtDesc, onBack, heading = t.climateSettingSchedules, className, }) {
22
+ export function ClimateSettingScheduleTable({ deviceId, disableSearch = false, onClimateSettingScheduleClick = () => { }, preventDefaultOnClimateSettingScheduleClick = false, climateSettingScheduleFilter = defaultClimateSettingScheduleFilter, climateSettingScheduleComparator = compareByCreatedAtDesc, onBack, heading = t.climateSettingSchedules, className, }) {
22
23
  const { climateSettingSchedules, isLoading, isError, error } = useClimateSettingSchedules({
23
24
  device_id: deviceId,
24
25
  });
25
26
  const [searchInputValue, setSearchInputValue] = useState('');
27
+ const [selectedViewClimateSettingScheduleId, setSelectedViewClimateSettingScheduleId,] = useState(null);
26
28
  const filteredClimateSettingSchedules = useMemo(() => climateSettingSchedules
27
29
  ?.filter((schedule) => climateSettingScheduleFilter(schedule, searchInputValue))
28
30
  ?.sort(climateSettingScheduleComparator) ?? [], [
@@ -31,13 +33,28 @@ export function ClimateSettingScheduleTable({ deviceId, disableSearch = false, c
31
33
  climateSettingScheduleFilter,
32
34
  climateSettingScheduleComparator,
33
35
  ]);
36
+ const handleClimateSettingScheduleClick = useCallback((climateSettingScheduleId) => {
37
+ onClimateSettingScheduleClick(climateSettingScheduleId);
38
+ if (preventDefaultOnClimateSettingScheduleClick)
39
+ return;
40
+ setSelectedViewClimateSettingScheduleId(climateSettingScheduleId);
41
+ }, [
42
+ onClimateSettingScheduleClick,
43
+ preventDefaultOnClimateSettingScheduleClick,
44
+ setSelectedViewClimateSettingScheduleId,
45
+ ]);
46
+ if (selectedViewClimateSettingScheduleId != null) {
47
+ return (_jsx(ClimateSettingScheduleDetails, { className: className, climateSettingScheduleId: selectedViewClimateSettingScheduleId, onBack: () => {
48
+ setSelectedViewClimateSettingScheduleId(null);
49
+ } }));
50
+ }
34
51
  if (isLoading) {
35
52
  return _jsx("p", { className: className, children: "..." });
36
53
  }
37
54
  if (isError) {
38
55
  return _jsx("p", { className: className, children: error?.message });
39
56
  }
40
- return (_jsxs("div", { className: classNames('seam-table', className), children: [_jsx(ContentHeader, { onBack: onBack }), _jsxs(TableHeader, { children: [heading != null ? (_jsxs(TableTitle, { children: [heading ?? t.climateSettingSchedules, ' ', _jsxs(Caption, { children: ["(", filteredClimateSettingSchedules.length, ")"] })] })) : (_jsx("div", { className: 'seam-fragment' })), !disableSearch && (_jsx(SearchTextField, { value: searchInputValue, onChange: setSearchInputValue, disabled: (climateSettingSchedules?.length ?? 0) === 0 }))] }), _jsx(TableBody, { children: _jsx(Content, { climateSettingSchedules: filteredClimateSettingSchedules, onClimateSettingScheduleClick: () => { } }) })] }));
57
+ return (_jsxs("div", { className: classNames('seam-table', className), children: [_jsx(ContentHeader, { onBack: onBack }), _jsxs(TableHeader, { children: [heading != null ? (_jsxs(TableTitle, { children: [heading ?? t.climateSettingSchedules, ' ', _jsxs(Caption, { children: ["(", filteredClimateSettingSchedules.length, ")"] })] })) : (_jsx("div", { className: 'seam-fragment' })), !disableSearch && (_jsx(SearchTextField, { value: searchInputValue, onChange: setSearchInputValue, disabled: (climateSettingSchedules?.length ?? 0) === 0 }))] }), _jsx(TableBody, { children: _jsx(Content, { climateSettingSchedules: filteredClimateSettingSchedules, onClimateSettingScheduleClick: handleClimateSettingScheduleClick }) })] }));
41
58
  }
42
59
  function Content(props) {
43
60
  const { climateSettingSchedules, onClimateSettingScheduleClick } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"ClimateSettingScheduleTable.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAGzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EACL,0BAA0B,GAE3B,MAAM,iFAAiF,CAAA;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAkB1E,MAAM,mCAAmC,GAAG,CAC1C,sBAA8C,EAC9C,gBAAwB,EACf,EAAE;IACX,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACnD,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAA;IAC7B,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,IAAI,EAAE,CAAA;IAC9C,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAClD,CAAC,CAAA;AAED,MAAM,UAAU,2BAA2B,CAAC,EAC1C,QAAQ,EACR,aAAa,GAAG,KAAK,EACrB,4BAA4B,GAAG,mCAAmC,EAClE,gCAAgC,GAAG,sBAAsB,EACzD,MAAM,EACN,OAAO,GAAG,CAAC,CAAC,uBAAuB,EACnC,SAAS,GACwB;IACjC,MAAM,EAAE,uBAAuB,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,GAC1D,0BAA0B,CAAC;QACzB,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAA;IAEJ,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAE5D,MAAM,+BAA+B,GAAG,OAAO,CAC7C,GAAG,EAAE,CACH,uBAAuB;QACrB,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpB,4BAA4B,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CACzD;QACD,EAAE,IAAI,CAAC,gCAAgC,CAAC,IAAI,EAAE,EAClD;QACE,uBAAuB;QACvB,gBAAgB;QAChB,4BAA4B;QAC5B,gCAAgC;KACjC,CACF,CAAA;IAED,IAAI,SAAS,EAAE;QACb,OAAO,YAAG,SAAS,EAAE,SAAS,oBAAS,CAAA;KACxC;IAED,IAAI,OAAO,EAAE;QACX,OAAO,YAAG,SAAS,EAAE,SAAS,YAAG,KAAK,EAAE,OAAO,GAAK,CAAA;KACrD;IAED,OAAO,CACL,eAAK,SAAS,EAAE,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,aACjD,KAAC,aAAa,IAAC,MAAM,EAAE,MAAM,GAAI,EACjC,MAAC,WAAW,eACT,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CACjB,MAAC,UAAU,eACR,OAAO,IAAI,CAAC,CAAC,uBAAuB,EAAE,GAAG,EAC1C,MAAC,OAAO,oBAAG,+BAA+B,CAAC,MAAM,SAAY,IAClD,CACd,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,eAAe,GAAG,CAClC,EACA,CAAC,aAAa,IAAI,CACjB,KAAC,eAAe,IACd,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,CAAC,uBAAuB,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,GACtD,CACH,IACW,EACd,KAAC,SAAS,cACR,KAAC,OAAO,IACN,uBAAuB,EAAE,+BAA+B,EACxD,6BAA6B,EAAE,GAAG,EAAE,GAAE,CAAC,GACvC,GACQ,IACR,CACP,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAGhB;IACC,MAAM,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,GAAG,KAAK,CAAA;IAExE,IAAI,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE;QACxC,OAAO,CACL,KAAC,gBAAgB,cAAE,CAAC,CAAC,gCAAgC,GAAoB,CAC1E,CAAA;KACF;IAED,OAAO,CACL,4BACG,uBAAuB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACzC,KAAC,yBAAyB,IACxB,sBAAsB,EAAE,QAAQ,EAEhC,OAAO,EAAE,GAAG,EAAE;gBACZ,6BAA6B,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAA;YACrE,CAAC,IAHI,QAAQ,CAAC,2BAA2B,CAIzC,CACH,CAAC,GACD,CACJ,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,uBAAuB,EAAE,2BAA2B;IACpD,gCAAgC,EAC9B,gDAAgD;CACnD,CAAA"}
1
+ {"version":3,"file":"ClimateSettingScheduleTable.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { PropsWithChildren } from 'react';
2
+ interface AccordionRowProps extends PropsWithChildren {
3
+ label: string;
4
+ rightCollapsedContent?: JSX.Element;
5
+ }
6
+ export declare function AccordionRow({ label, rightCollapsedContent, children, }: AccordionRowProps): JSX.Element;
7
+ export {};
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronWideIcon } from '../../../lib/icons/ChevronWide.js';
3
+ import { useToggle } from '../../../lib/ui/use-toggle.js';
4
+ export function AccordionRow({ label, rightCollapsedContent, children, }) {
5
+ const [isExpanded, toggle] = useToggle();
6
+ return (_jsxs("div", { className: 'seam-accordion-row', "aria-expanded": isExpanded, children: [_jsxs("button", { className: 'seam-accordion-row-trigger', onClick: toggle, children: [_jsx("p", { className: 'seam-row-label', children: label }), _jsxs("div", { className: 'seam-row-inner-wrap', children: [_jsx("div", { className: 'seam-row-trigger-right-content', children: rightCollapsedContent }), _jsx("div", { className: 'seam-accordion-icon-wrap', children: _jsx(ChevronWideIcon, {}) })] })] }), _jsx("div", { className: 'seam-accordion-row-content', children: _jsx("div", { className: 'seam-accordion-row-inner-content', children: children }) })] }));
7
+ }
8
+ //# sourceMappingURL=AccordionRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionRow.js","sourceRoot":"","sources":["../../../src/lib/ui/layout/AccordionRow.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAOhD,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,qBAAqB,EACrB,QAAQ,GACU;IAClB,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,CAAA;IAExC,OAAO,CACL,eAAK,SAAS,EAAC,oBAAoB,mBAAgB,UAAU,aAC3D,kBAAQ,SAAS,EAAC,4BAA4B,EAAC,OAAO,EAAE,MAAM,aAC5D,YAAG,SAAS,EAAC,gBAAgB,YAAE,KAAK,GAAK,EACzC,eAAK,SAAS,EAAC,qBAAqB,aAClC,cAAK,SAAS,EAAC,gCAAgC,YAC5C,qBAAqB,GAClB,EACN,cAAK,SAAS,EAAC,0BAA0B,YACvC,KAAC,eAAe,KAAG,GACf,IACF,IACC,EACT,cAAK,SAAS,EAAC,4BAA4B,YACzC,cAAK,SAAS,EAAC,kCAAkC,YAAE,QAAQ,GAAO,GAC9D,IACF,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { PropsWithChildren } from 'react';
2
+ interface DetailRowProps {
3
+ label: string;
4
+ }
5
+ export declare function DetailRow({ label, children, }: PropsWithChildren<DetailRowProps>): JSX.Element;
6
+ export {};
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function DetailRow({ label, children, }) {
3
+ return (_jsxs("div", { className: 'seam-detail-row', children: [_jsx("p", { className: 'seam-row-label', children: label }), _jsx("div", { className: 'seam-detail-row-right-area-content', children: children })] }));
4
+ }
5
+ //# sourceMappingURL=DetailRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailRow.js","sourceRoot":"","sources":["../../../src/lib/ui/layout/DetailRow.tsx"],"names":[],"mappings":";AAMA,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,GAC0B;IAClC,OAAO,CACL,eAAK,SAAS,EAAC,iBAAiB,aAC9B,YAAG,SAAS,EAAC,gBAAgB,YAAE,KAAK,GAAK,EACzC,cAAK,SAAS,EAAC,oCAAoC,YAAE,QAAQ,GAAO,IAChE,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { PropsWithChildren } from 'react';
2
+ interface DetailSectionProps {
3
+ label?: string;
4
+ tooltipContent?: string;
5
+ }
6
+ export declare function DetailSection({ label, tooltipContent, children, }: PropsWithChildren<DetailSectionProps>): JSX.Element;
7
+ export {};
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Tooltip } from '../../../lib/ui/Tooltip/Tooltip.js';
3
+ export function DetailSection({ label, tooltipContent, children, }) {
4
+ return (_jsxs("div", { className: 'seam-detail-section', children: [_jsxs("div", { className: 'seam-detail-label-wrap', children: [label != null && _jsx("p", { className: 'seam-detail-label', children: label }), tooltipContent != null && _jsx(Tooltip, { children: tooltipContent })] }), _jsx("div", { className: 'seam-detail-group', children: children })] }));
5
+ }
6
+ //# sourceMappingURL=DetailSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailSection.js","sourceRoot":"","sources":["../../../src/lib/ui/layout/DetailSection.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAOnD,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,cAAc,EACd,QAAQ,GAC8B;IACtC,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,eAAK,SAAS,EAAC,wBAAwB,aACpC,KAAK,IAAI,IAAI,IAAI,YAAG,SAAS,EAAC,mBAAmB,YAAE,KAAK,GAAK,EAC7D,cAAc,IAAI,IAAI,IAAI,KAAC,OAAO,cAAE,cAAc,GAAW,IAC1D,EAEN,cAAK,SAAS,EAAC,mBAAmB,YAAE,QAAQ,GAAO,IAC/C,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { PropsWithChildren } from 'react';
2
+ export declare function DetailSectionGroup({ children, }: PropsWithChildren): JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function DetailSectionGroup({ children, }) {
3
+ return _jsx("div", { className: 'seam-detail-sections', children: children });
4
+ }
5
+ //# sourceMappingURL=DetailSectionGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailSectionGroup.js","sourceRoot":"","sources":["../../../src/lib/ui/layout/DetailSectionGroup.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,GACU;IAClB,OAAO,cAAK,SAAS,EAAC,sBAAsB,YAAE,QAAQ,GAAO,CAAA;AAC/D,CAAC"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const seamapiReactVersion = "1.48.1";
1
+ declare const seamapiReactVersion = "1.49.0";
2
2
  export default seamapiReactVersion;
package/lib/version.js CHANGED
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '1.48.1';
1
+ const seamapiReactVersion = '1.49.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": "1.48.1",
3
+ "version": "1.49.0",
4
4
  "description": "Seam Components.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -0,0 +1,21 @@
1
+ /*
2
+ * Automaically generated by SVGR from assets/icons/*.svg.
3
+ * Do not edit this file or add other components to this directory.
4
+ */
5
+ import type { SVGProps } from 'react'
6
+ export function ChevronWideIcon(props: SVGProps<SVGSVGElement>): JSX.Element {
7
+ return (
8
+ <svg
9
+ xmlns='http://www.w3.org/2000/svg'
10
+ width={25}
11
+ height={24}
12
+ fill='none'
13
+ {...props}
14
+ >
15
+ <path
16
+ fill='#D5D8DC'
17
+ d='m22.123 8-10 10-10-10 1.775-1.775 8.225 8.225 8.225-8.225L22.123 8Z'
18
+ />
19
+ </svg>
20
+ )
21
+ }
@@ -7,30 +7,15 @@ export function CopyIcon(props: SVGProps<SVGSVGElement>): JSX.Element {
7
7
  return (
8
8
  <svg
9
9
  xmlns='http://www.w3.org/2000/svg'
10
- width={18}
11
- height={18}
10
+ width={25}
11
+ height={25}
12
12
  fill='none'
13
13
  {...props}
14
14
  >
15
- <mask
16
- id='copy_svg__a'
17
- width={18}
18
- height={18}
19
- x={0}
20
- y={0}
21
- maskUnits='userSpaceOnUse'
22
- style={{
23
- maskType: 'alpha',
24
- }}
25
- >
26
- <path fill='#D9D9D9' d='M0 0h18v18H0z' />
27
- </mask>
28
- <g mask='url(#copy_svg__a)'>
29
- <path
30
- fill='#007AFC'
31
- d='M3.75 16.5c-.413 0-.766-.147-1.06-.44A1.446 1.446 0 0 1 2.25 15V4.5h1.5V15H12v1.5H3.75Zm3-3c-.412 0-.766-.147-1.059-.44A1.445 1.445 0 0 1 5.25 12V3c0-.413.147-.766.441-1.06.293-.293.647-.44 1.059-.44h6.75c.412 0 .766.147 1.06.44.293.294.44.647.44 1.06v9c0 .412-.147.766-.44 1.06-.294.293-.648.44-1.06.44H6.75Zm0-1.5h6.75V3H6.75v9Z'
32
- />
33
- </g>
15
+ <path
16
+ fill='#232B3A'
17
+ d='M5.84 22.988c-.55 0-1.02-.195-1.412-.587a1.928 1.928 0 0 1-.587-1.413v-14h2v14h11v2h-11Zm4-4c-.55 0-1.02-.195-1.411-.587a1.927 1.927 0 0 1-.588-1.413v-12c0-.55.196-1.02.588-1.413a1.925 1.925 0 0 1 1.412-.587h9c.55 0 1.02.196 1.413.587.391.392.587.863.587 1.413v12c0 .55-.196 1.021-.587 1.413a1.928 1.928 0 0 1-1.413.587h-9Zm0-2h9v-12h-9v12Z'
18
+ />
34
19
  </svg>
35
20
  )
36
21
  }
@@ -8,12 +8,15 @@ import type {
8
8
  DeviceError,
9
9
  } from 'seamapi'
10
10
 
11
+ import { CopyIcon } from 'lib/icons/Copy.js'
11
12
  import { useAccessCode } from 'lib/seam/access-codes/use-access-code.js'
12
13
  import { useDeleteAccessCode } from 'lib/seam/access-codes/use-delete-access-code.js'
13
14
  import { AccessCodeDevice } from 'lib/seam/components/AccessCodeDetails/AccessCodeDevice.js'
14
15
  import { DeviceDetails } from 'lib/seam/components/DeviceDetails/DeviceDetails.js'
15
16
  import { Alerts } from 'lib/ui/Alert/Alerts.js'
16
17
  import { Button } from 'lib/ui/Button.js'
18
+ import { copyToClipboard } from 'lib/ui/clipboard.js'
19
+ import { IconButton } from 'lib/ui/IconButton.js'
17
20
  import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
18
21
  import { useIsDateInPast } from 'lib/ui/use-is-date-in-past.js'
19
22
 
@@ -82,7 +85,16 @@ export function AccessCodeDetails({
82
85
  >
83
86
  <span className='seam-label'>{t.accessCode}</span>
84
87
  <h5 className='seam-access-code-name'>{name}</h5>
85
- <div className='seam-code'>{accessCode.code}</div>
88
+ <div className='seam-code'>
89
+ <span>{accessCode.code}</span>
90
+ <IconButton
91
+ onClick={() => {
92
+ void copyToClipboard(accessCode.code ?? '')
93
+ }}
94
+ >
95
+ <CopyIcon />
96
+ </IconButton>
97
+ </div>
86
98
  <div className='seam-duration'>
87
99
  <Duration accessCode={accessCode} />
88
100
  </div>
@@ -117,7 +129,16 @@ export function AccessCodeDetails({
117
129
  <div className='seam-details'>
118
130
  <div className='seam-row'>
119
131
  <div className='seam-heading'>{t.id}:</div>
120
- <div className='seam-content'>{accessCode.access_code_id}</div>
132
+ <div className='seam-content seam-code-id'>
133
+ <span>{accessCode.access_code_id}</span>
134
+ <IconButton
135
+ onClick={() => {
136
+ void copyToClipboard(accessCode.access_code_id)
137
+ }}
138
+ >
139
+ <CopyIcon />
140
+ </IconButton>
141
+ </div>
121
142
  </div>
122
143
  <div className='seam-row'>
123
144
  <div className='seam-heading'>{t.created}:</div>
@@ -0,0 +1,13 @@
1
+ import type { ElementProps } from 'lib/element.js'
2
+
3
+ import type { ClimateSettingScheduleDetailsProps } from './ClimateSettingScheduleDetails.js'
4
+
5
+ export const name = 'seam-climate-setting-schedule-details'
6
+
7
+ export const props: ElementProps<ClimateSettingScheduleDetailsProps> = {
8
+ climateSettingScheduleId: 'string',
9
+ onBack: 'object',
10
+ className: 'string',
11
+ }
12
+
13
+ export { ClimateSettingScheduleDetails as Component } from './ClimateSettingScheduleDetails.js'
@@ -0,0 +1,103 @@
1
+ import classNames from 'classnames'
2
+
3
+ import { formatDateAndTime } from 'lib/dates.js'
4
+ import { ArrowRightIcon } from 'lib/icons/ArrowRight.js'
5
+ import { useClimateSettingSchedule } from 'lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js'
6
+ import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
7
+ import { DetailRow } from 'lib/ui/layout/DetailRow.js'
8
+ import { DetailSection } from 'lib/ui/layout/DetailSection.js'
9
+ import { DetailSectionGroup } from 'lib/ui/layout/DetailSectionGroup.js'
10
+ import { ClimateSettingStatus } from 'lib/ui/thermostat/ClimateSettingStatus.js'
11
+
12
+ import { ClimateSettingScheduleCard } from './ClimateSettingScheduleCard.js'
13
+
14
+ export interface ClimateSettingScheduleDetailsProps {
15
+ climateSettingScheduleId: string
16
+ onBack?: () => void
17
+ className?: string
18
+ }
19
+
20
+ export function ClimateSettingScheduleDetails({
21
+ climateSettingScheduleId,
22
+ onBack,
23
+ className,
24
+ }: ClimateSettingScheduleDetailsProps): JSX.Element | null {
25
+ const { climateSettingSchedule } = useClimateSettingSchedule(
26
+ climateSettingScheduleId
27
+ )
28
+
29
+ if (climateSettingSchedule == null) {
30
+ return null
31
+ }
32
+
33
+ const isManualOverrideAllowed =
34
+ climateSettingSchedule.manual_override_allowed ?? false
35
+
36
+ return (
37
+ <div
38
+ className={classNames('seam-climate-setting-schedule-details', className)}
39
+ >
40
+ <ContentHeader title={t.climateSettingSchedule} onBack={onBack} />
41
+ <div className='seam-climate-setting-schedule-details-content'>
42
+ <ClimateSettingScheduleCard
43
+ climateSettingScheduleId={climateSettingScheduleId}
44
+ />
45
+ <div className='seam-default-setting-message-container'>
46
+ <span className='seam-default-setting-message'>
47
+ {t.defaultSettingMessagePart1}{' '}
48
+ <span className='seam-default-setting-text'>
49
+ {t.defaultSetting}
50
+ </span>{' '}
51
+ {t.defaultSettingMessagePart2}
52
+ </span>
53
+ </div>
54
+ <DetailSectionGroup>
55
+ <DetailSection>
56
+ <DetailRow label={t.startEndTime}>
57
+ <span className='seam-climate-setting-details-value seam-climate-setting-details-schedule-range'>
58
+ {`${formatDateAndTime(
59
+ climateSettingSchedule.schedule_starts_at
60
+ )}`}
61
+ <ArrowRightIcon />
62
+ {`${formatDateAndTime(
63
+ climateSettingSchedule.schedule_ends_at
64
+ )}`}
65
+ </span>
66
+ </DetailRow>
67
+ <DetailRow label={t.climateSetting}>
68
+ <ClimateSettingStatus
69
+ climateSetting={climateSettingSchedule}
70
+ iconPlacement='right'
71
+ />
72
+ </DetailRow>
73
+ <DetailRow label={t.allowManualOverride}>
74
+ <span className='seam-climate-setting-details-value'>
75
+ {isManualOverrideAllowed ? t.on : t.off}
76
+ </span>
77
+ </DetailRow>
78
+ </DetailSection>
79
+ <DetailSection>
80
+ <DetailRow label={t.creationDate}>
81
+ <div className='seam-creation-date'>
82
+ {formatDateAndTime(climateSettingSchedule.created_at)}
83
+ </div>
84
+ </DetailRow>
85
+ </DetailSection>
86
+ </DetailSectionGroup>
87
+ </div>
88
+ </div>
89
+ )
90
+ }
91
+
92
+ const t = {
93
+ climateSettingSchedule: 'Climate setting schedule',
94
+ startEndTime: 'Start/End Time',
95
+ climateSetting: 'Climate setting',
96
+ allowManualOverride: 'Allow manual override',
97
+ creationDate: 'Creation date',
98
+ defaultSettingMessagePart1: 'Thermostat will return to its',
99
+ defaultSetting: 'default setting',
100
+ defaultSettingMessagePart2: 'at end time.',
101
+ on: 'On',
102
+ off: 'Off',
103
+ }
@@ -1,6 +1,6 @@
1
1
  import { isThermostatDevice, type ThermostatDevice } from 'seamapi'
2
2
 
3
- import { ChevronRightIcon } from 'lib/icons/ChevronRight.js'
3
+ import { ChevronWideIcon } from 'lib/icons/ChevronWide.js'
4
4
  import { useDevice } from 'lib/seam/devices/use-device.js'
5
5
  import { DeviceImage } from 'lib/ui/device/DeviceImage.js'
6
6
  import { ClimateSettingStatus } from 'lib/ui/thermostat/ClimateSettingStatus.js'
@@ -48,7 +48,9 @@ function Content(props: { device: ThermostatDevice }): JSX.Element {
48
48
  </div>
49
49
  </div>
50
50
  </div>
51
- <ChevronRightIcon />
51
+ <div className='seam-climate-setting-schedule-device-chevron'>
52
+ <ChevronWideIcon />
53
+ </div>
52
54
  </div>
53
55
  )
54
56
  }
@@ -7,6 +7,8 @@ export const name = 'seam-climate-setting-schedule-table'
7
7
  export const props: ElementProps<ClimateSettingScheduleTableProps> = {
8
8
  deviceId: 'string',
9
9
  disableSearch: 'boolean',
10
+ onClimateSettingScheduleClick: 'object',
11
+ preventDefaultOnClimateSettingScheduleClick: 'boolean',
10
12
  climateSettingScheduleFilter: 'object',
11
13
  climateSettingScheduleComparator: 'object',
12
14
  onBack: 'object',