@seamapi/react 1.60.4 → 1.61.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.
@@ -10,6 +10,7 @@ import { DeviceHealthBar, } from '../../../../lib/seam/components/DeviceTable/De
10
10
  import { DeviceRow } from '../../../../lib/seam/components/DeviceTable/DeviceRow.js';
11
11
  import { useDevices, } from '../../../../lib/seam/devices/use-devices.js';
12
12
  import { ContentHeader } from '../../../../lib/ui/layout/ContentHeader.js';
13
+ import { LoadingToast } from '../../../../lib/ui/LoadingToast/LoadingToast.js';
13
14
  import { EmptyPlaceholder } from '../../../../lib/ui/Table/EmptyPlaceholder.js';
14
15
  import { TableBody } from '../../../../lib/ui/Table/TableBody.js';
15
16
  import { TableHeader } from '../../../../lib/ui/Table/TableHeader.js';
@@ -25,7 +26,7 @@ export const defaultDeviceFilter = (device, searchInputValue) => {
25
26
  export const NestedDeviceTable = withRequiredCommonProps(DeviceTable);
26
27
  export function DeviceTable({ deviceIds, connectedAccountIds, disableSearch = false, onDeviceClick = () => { }, preventDefaultOnDeviceClick = false, deviceFilter = defaultDeviceFilter, deviceComparator = compareByCreatedAtDesc, heading = t.devices, title = t.devices, disableLockUnlock = false, disableCreateAccessCode = false, disableEditAccessCode = false, disableDeleteAccessCode = false, onBack, className, } = {}) {
27
28
  useComponentTelemetry('DeviceTable');
28
- const { devices, isLoading, isError, error } = useDevices({
29
+ const { devices, isInitialLoading, isError, error } = useDevices({
29
30
  device_ids: deviceIds,
30
31
  connected_account_ids: connectedAccountIds,
31
32
  });
@@ -46,13 +47,10 @@ export function DeviceTable({ deviceIds, connectedAccountIds, disableSearch = fa
46
47
  setSelectedDeviceId(null);
47
48
  }, className: className }));
48
49
  }
49
- if (isLoading) {
50
- return _jsx("p", { className: className, children: "..." });
51
- }
52
50
  if (isError) {
53
51
  return _jsx("p", { className: className, children: error?.message });
54
52
  }
55
- return (_jsxs("div", { className: classNames('seam-device-table', className), children: [_jsx(ContentHeader, { onBack: onBack }), _jsxs(TableHeader, { children: [title != null ? (_jsxs(TableTitle, { children: [heading ?? title ?? t.devices, ' ', _jsxs(Caption, { children: ["(", filteredDevices.length, ")"] })] })) : (_jsx("div", { className: 'seam-fragment' })), !disableSearch && (_jsx(SearchTextField, { value: searchInputValue, onChange: setSearchInputValue, disabled: (devices?.length ?? 0) === 0 }))] }), _jsx(TableBody, { children: _jsx(Content, { devices: filteredDevices, onDeviceClick: handleDeviceClick }) })] }));
53
+ return (_jsxs("div", { className: classNames('seam-device-table', className), children: [_jsx(ContentHeader, { onBack: onBack }), _jsxs(TableHeader, { children: [title != null ? (_jsxs(TableTitle, { children: [heading ?? title ?? t.devices, ' ', _jsxs(Caption, { children: ["(", filteredDevices.length, ")"] })] })) : (_jsx("div", { className: 'seam-fragment' })), _jsx("div", { className: 'seam-table-header-loading-wrap', children: _jsx(LoadingToast, { isLoading: isInitialLoading, label: t.loading, top: -20 }) }), !disableSearch && (_jsx(SearchTextField, { value: searchInputValue, onChange: setSearchInputValue, disabled: (devices?.length ?? 0) === 0 }))] }), _jsx(TableBody, { children: _jsx(Content, { devices: filteredDevices, onDeviceClick: handleDeviceClick }) })] }));
56
54
  }
57
55
  function Content(props) {
58
56
  const { devices, onDeviceClick } = props;
@@ -80,5 +78,6 @@ function Content(props) {
80
78
  const t = {
81
79
  devices: 'Devices',
82
80
  noDevicesMessage: 'Sorry, no devices were found',
81
+ loading: 'Loading devices',
83
82
  };
84
83
  //# sourceMappingURL=DeviceTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceTable.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceTable/DeviceTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DeviceTable.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceTable/DeviceTable.tsx"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
  interface LoadingToastProps {
3
3
  isLoading: boolean;
4
4
  label: string;
5
- top?: number;
6
- left?: number;
5
+ top?: string | number;
6
+ left?: string | number;
7
7
  }
8
8
  export declare function LoadingToast({ isLoading, label, top, left, }: LoadingToastProps): JSX.Element;
9
9
  export {};
@@ -1,24 +1,32 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import classNames from 'classnames';
3
3
  import { useEffect, useState } from 'react';
4
4
  import { CheckBlackIcon } from '../../../lib/icons/CheckBlack.js';
5
5
  import { Spinner } from '../../../lib/ui/Spinner/Spinner.js';
6
6
  export function LoadingToast({ isLoading = true, label, top, left, }) {
7
7
  const [hidden, setHidden] = useState(false);
8
+ const [showToast, setShowToast] = useState(isLoading);
8
9
  useEffect(() => {
9
10
  if (!isLoading) {
10
- const timeout = globalThis.setTimeout(() => {
11
+ const hideTimeout = globalThis.setTimeout(() => {
11
12
  setHidden(true);
12
13
  }, 1000);
14
+ const removeTimeout = globalThis.setTimeout(() => {
15
+ setShowToast(false);
16
+ }, 1500);
13
17
  return () => {
14
- globalThis.clearTimeout(timeout);
18
+ globalThis.clearTimeout(hideTimeout);
19
+ globalThis.clearTimeout(removeTimeout);
15
20
  };
16
21
  }
17
22
  setHidden(false);
23
+ setShowToast(true);
18
24
  return () => {
19
25
  // noop
20
26
  };
21
27
  }, [isLoading]);
28
+ if (!showToast)
29
+ return _jsx(_Fragment, {});
22
30
  return (_jsxs("div", { className: classNames('seam-loading-toast', {
23
31
  'seam-loading-toast-hide': hidden,
24
32
  }), style: { top, left }, children: [_jsx("div", { className: 'seam-loading-toast-icon-wrap', children: isLoading ? _jsx(Spinner, { size: 'small' }) : _jsx(CheckBlackIcon, {}) }), _jsx("p", { className: 'seam-loading-toast-text', children: label })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingToast.js","sourceRoot":"","sources":["../../../src/lib/ui/LoadingToast/LoadingToast.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AASnD,MAAM,UAAU,YAAY,CAAC,EAC3B,SAAS,GAAG,IAAI,EAChB,KAAK,EACL,GAAG,EACH,IAAI,GACc;IAClB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE;gBACzC,SAAS,CAAC,IAAI,CAAC,CAAA;YACjB,CAAC,EAAE,IAAI,CAAC,CAAA;YAER,OAAO,GAAG,EAAE;gBACV,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAClC,CAAC,CAAA;SACF;QAED,SAAS,CAAC,KAAK,CAAC,CAAA;QAEhB,OAAO,GAAG,EAAE;YACV,OAAO;QACT,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,CACL,eACE,SAAS,EAAE,UAAU,CAAC,oBAAoB,EAAE;YAC1C,yBAAyB,EAAE,MAAM;SAClC,CAAC,EACF,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,aAEpB,cAAK,SAAS,EAAC,8BAA8B,YAC1C,SAAS,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,IAAI,EAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAC,cAAc,KAAG,GACtD,EACN,YAAG,SAAS,EAAC,yBAAyB,YAAE,KAAK,GAAK,IAC9C,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"LoadingToast.js","sourceRoot":"","sources":["../../../src/lib/ui/LoadingToast/LoadingToast.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AASnD,MAAM,UAAU,YAAY,CAAC,EAC3B,SAAS,GAAG,IAAI,EAChB,KAAK,EACL,GAAG,EACH,IAAI,GACc;IAClB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAErD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE;gBAC7C,SAAS,CAAC,IAAI,CAAC,CAAA;YACjB,CAAC,EAAE,IAAI,CAAC,CAAA;YAER,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE;gBAC/C,YAAY,CAAC,KAAK,CAAC,CAAA;YACrB,CAAC,EAAE,IAAI,CAAC,CAAA;YAER,OAAO,GAAG,EAAE;gBACV,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;gBACpC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;YACxC,CAAC,CAAA;SACF;QAED,SAAS,CAAC,KAAK,CAAC,CAAA;QAChB,YAAY,CAAC,IAAI,CAAC,CAAA;QAElB,OAAO,GAAG,EAAE;YACV,OAAO;QACT,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,IAAI,CAAC,SAAS;QAAE,OAAO,mBAAK,CAAA;IAE5B,OAAO,CACL,eACE,SAAS,EAAE,UAAU,CAAC,oBAAoB,EAAE;YAC1C,yBAAyB,EAAE,MAAM;SAClC,CAAC,EACF,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,aAEpB,cAAK,SAAS,EAAC,8BAA8B,YAC1C,SAAS,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,IAAI,EAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAC,cAAc,KAAG,GACtD,EACN,YAAG,SAAS,EAAC,yBAAyB,YAAE,KAAK,GAAK,IAC9C,CACP,CAAA;AACH,CAAC"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const seamapiReactVersion = "1.60.4";
1
+ declare const seamapiReactVersion = "1.61.0";
2
2
  export default seamapiReactVersion;
package/lib/version.js CHANGED
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '1.60.4';
1
+ const seamapiReactVersion = '1.61.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.60.4",
3
+ "version": "1.61.0",
4
4
  "description": "Seam Components.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -23,6 +23,7 @@ import { NestedCreateAccessCodeForm } from 'lib/seam/components/CreateAccessCode
23
23
  import { NestedEditAccessCodeForm } from 'lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.js'
24
24
  import { IconButton } from 'lib/ui/IconButton.js'
25
25
  import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
26
+ import { LoadingToast } from 'lib/ui/LoadingToast/LoadingToast.js'
26
27
  import { EmptyPlaceholder } from 'lib/ui/Table/EmptyPlaceholder.js'
27
28
  import { TableBody } from 'lib/ui/Table/TableBody.js'
28
29
  import { TableHeader } from 'lib/ui/Table/TableHeader.js'
@@ -87,7 +88,7 @@ export function AccessCodeTable({
87
88
  }: AccessCodeTableProps): JSX.Element {
88
89
  useComponentTelemetry('AccessCodeTable')
89
90
 
90
- const { accessCodes } = useAccessCodes({
91
+ const { accessCodes, isInitialLoading, isError, error } = useAccessCodes({
91
92
  device_id: deviceId,
92
93
  })
93
94
 
@@ -178,6 +179,10 @@ export function AccessCodeTable({
178
179
  )
179
180
  }
180
181
 
182
+ if (isError) {
183
+ return <p className={className}>{error?.message}</p>
184
+ }
185
+
181
186
  return (
182
187
  <div className={classNames('seam-table', className)}>
183
188
  <ContentHeader onBack={onBack} />
@@ -200,6 +205,13 @@ export function AccessCodeTable({
200
205
  </IconButton>
201
206
  )}
202
207
  </div>
208
+ <div className='seam-table-header-loading-wrap'>
209
+ <LoadingToast
210
+ isLoading={isInitialLoading}
211
+ label={t.loading}
212
+ top={-20}
213
+ />
214
+ </div>
203
215
  {!disableSearch && (
204
216
  <SearchTextField
205
217
  value={searchInputValue}
@@ -283,4 +295,5 @@ function Content(props: {
283
295
  const t = {
284
296
  accessCodes: 'Access Codes',
285
297
  noAccessCodesMessage: 'Sorry, no access codes were found',
298
+ loading: 'Loading access codes',
286
299
  }
@@ -16,6 +16,7 @@ import {
16
16
  type UseClimateSettingSchedulesData,
17
17
  } from 'lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js'
18
18
  import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
19
+ import { LoadingToast } from 'lib/ui/LoadingToast/LoadingToast.js'
19
20
  import { EmptyPlaceholder } from 'lib/ui/Table/EmptyPlaceholder.js'
20
21
  import { TableBody } from 'lib/ui/Table/TableBody.js'
21
22
  import { TableHeader } from 'lib/ui/Table/TableHeader.js'
@@ -70,7 +71,7 @@ export function ClimateSettingScheduleTable({
70
71
  }: ClimateSettingScheduleTableProps): JSX.Element {
71
72
  useComponentTelemetry('ClimateSettingScheduleTable')
72
73
 
73
- const { climateSettingSchedules, isLoading, isError, error } =
74
+ const { climateSettingSchedules, isInitialLoading, isError, error } =
74
75
  useClimateSettingSchedules({
75
76
  device_id: deviceId,
76
77
  })
@@ -125,10 +126,6 @@ export function ClimateSettingScheduleTable({
125
126
  )
126
127
  }
127
128
 
128
- if (isLoading) {
129
- return <p className={className}>...</p>
130
- }
131
-
132
129
  if (isError) {
133
130
  return <p className={className}>{error?.message}</p>
134
131
  }
@@ -145,6 +142,13 @@ export function ClimateSettingScheduleTable({
145
142
  ) : (
146
143
  <div className='seam-fragment' />
147
144
  )}
145
+ <div className='seam-table-header-loading-wrap'>
146
+ <LoadingToast
147
+ isLoading={isInitialLoading}
148
+ label={t.loading}
149
+ top={-20}
150
+ />
151
+ </div>
148
152
  {!disableSearch && (
149
153
  <SearchTextField
150
154
  value={searchInputValue}
@@ -194,4 +198,5 @@ const t = {
194
198
  climateSettingSchedules: 'Climate setting schedules',
195
199
  noClimateSettingSchedulesMessage:
196
200
  'Sorry, no climate setting schedules were found',
201
+ loading: 'Loading schedules',
197
202
  }
@@ -21,6 +21,7 @@ import {
21
21
  type UseDevicesData,
22
22
  } from 'lib/seam/devices/use-devices.js'
23
23
  import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
24
+ import { LoadingToast } from 'lib/ui/LoadingToast/LoadingToast.js'
24
25
  import { EmptyPlaceholder } from 'lib/ui/Table/EmptyPlaceholder.js'
25
26
  import { TableBody } from 'lib/ui/Table/TableBody.js'
26
27
  import { TableHeader } from 'lib/ui/Table/TableHeader.js'
@@ -75,7 +76,7 @@ export function DeviceTable({
75
76
  }: DeviceTableProps = {}): JSX.Element {
76
77
  useComponentTelemetry('DeviceTable')
77
78
 
78
- const { devices, isLoading, isError, error } = useDevices({
79
+ const { devices, isInitialLoading, isError, error } = useDevices({
79
80
  device_ids: deviceIds,
80
81
  connected_account_ids: connectedAccountIds,
81
82
  })
@@ -117,10 +118,6 @@ export function DeviceTable({
117
118
  )
118
119
  }
119
120
 
120
- if (isLoading) {
121
- return <p className={className}>...</p>
122
- }
123
-
124
121
  if (isError) {
125
122
  return <p className={className}>{error?.message}</p>
126
123
  }
@@ -137,6 +134,13 @@ export function DeviceTable({
137
134
  ) : (
138
135
  <div className='seam-fragment' />
139
136
  )}
137
+ <div className='seam-table-header-loading-wrap'>
138
+ <LoadingToast
139
+ isLoading={isInitialLoading}
140
+ label={t.loading}
141
+ top={-20}
142
+ />
143
+ </div>
140
144
  {!disableSearch && (
141
145
  <SearchTextField
142
146
  value={searchInputValue}
@@ -209,4 +213,5 @@ function Content(props: {
209
213
  const t = {
210
214
  devices: 'Devices',
211
215
  noDevicesMessage: 'Sorry, no devices were found',
216
+ loading: 'Loading devices',
212
217
  }
@@ -7,8 +7,8 @@ import { Spinner } from 'lib/ui/Spinner/Spinner.js'
7
7
  interface LoadingToastProps {
8
8
  isLoading: boolean
9
9
  label: string
10
- top?: number
11
- left?: number
10
+ top?: string | number
11
+ left?: string | number
12
12
  }
13
13
 
14
14
  export function LoadingToast({
@@ -18,25 +18,34 @@ export function LoadingToast({
18
18
  left,
19
19
  }: LoadingToastProps): JSX.Element {
20
20
  const [hidden, setHidden] = useState(false)
21
+ const [showToast, setShowToast] = useState(isLoading)
21
22
 
22
23
  useEffect(() => {
23
24
  if (!isLoading) {
24
- const timeout = globalThis.setTimeout(() => {
25
+ const hideTimeout = globalThis.setTimeout(() => {
25
26
  setHidden(true)
26
27
  }, 1000)
27
28
 
29
+ const removeTimeout = globalThis.setTimeout(() => {
30
+ setShowToast(false)
31
+ }, 1500)
32
+
28
33
  return () => {
29
- globalThis.clearTimeout(timeout)
34
+ globalThis.clearTimeout(hideTimeout)
35
+ globalThis.clearTimeout(removeTimeout)
30
36
  }
31
37
  }
32
38
 
33
39
  setHidden(false)
40
+ setShowToast(true)
34
41
 
35
42
  return () => {
36
43
  // noop
37
44
  }
38
45
  }, [isLoading])
39
46
 
47
+ if (!showToast) return <></>
48
+
40
49
  return (
41
50
  <div
42
51
  className={classNames('seam-loading-toast', {
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '1.60.4'
1
+ const seamapiReactVersion = '1.61.0'
2
2
 
3
3
  export default seamapiReactVersion
@@ -14,6 +14,15 @@
14
14
  align-items: center;
15
15
  width: 100%;
16
16
  }
17
+
18
+ .seam-table-header-loading-wrap {
19
+ width: 100%;
20
+ position: absolute;
21
+ left: 0;
22
+ display: flex;
23
+ justify-content: center;
24
+ align-items: center;
25
+ }
17
26
  }
18
27
 
19
28
  .seam-table-title {