Skip to content

Commit 5ed4f07

Browse files
authored
feat: Add disableClimateSettingSchedules prop (#597)
* feat: Add `disableScheduledClimates` prop * Add to `props` * Better `props` typing * Add everywhere else * Add to element * Remove default specifier on all internal components * Rename prop to `disableClimateSettingSchedules` * Add default back to `ThermostatDeviceDetails` to avoid linter issue on nullable bool
1 parent 549f854 commit 5ed4f07

File tree

10 files changed

+41
-19
lines changed

10 files changed

+41
-19
lines changed

src/lib/element.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ const commonProps: R2wcProps<CommonProps> = {
4646
disableEditAccessCode: 'boolean',
4747
disableDeleteAccessCode: 'boolean',
4848
disableResourceIds: 'boolean',
49+
disableClimateSettingSchedules: 'boolean',
4950
onBack: 'object',
5051
className: 'string',
5152
}

src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export function AccessCodeDetails({
4343
disableLockUnlock = false,
4444
disableDeleteAccessCode = false,
4545
disableResourceIds = false,
46+
disableClimateSettingSchedules,
4647
onBack,
4748
className,
4849
}: AccessCodeDetailsProps): JSX.Element | null {
@@ -69,6 +70,7 @@ export function AccessCodeDetails({
6970
disableEditAccessCode={disableEditAccessCode}
7071
disableDeleteAccessCode={disableDeleteAccessCode}
7172
disableResourceIds={disableResourceIds}
73+
disableClimateSettingSchedules={disableClimateSettingSchedules}
7274
onBack={() => {
7375
selectDevice(null)
7476
}}

src/lib/seam/components/AccessCodeTable/AccessCodeTable.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ export function AccessCodeTable({
8484
disableLockUnlock = false,
8585
disableDeleteAccessCode = false,
8686
disableResourceIds = false,
87+
disableClimateSettingSchedules,
8788
}: AccessCodeTableProps): JSX.Element {
8889
useComponentTelemetry('AccessCodeTable')
8990

@@ -147,6 +148,7 @@ export function AccessCodeTable({
147148
disableEditAccessCode={disableEditAccessCode}
148149
disableDeleteAccessCode={disableDeleteAccessCode}
149150
disableResourceIds={disableResourceIds}
151+
disableClimateSettingSchedules={disableClimateSettingSchedules}
150152
onBack={() => {
151153
setSelectedEditAccessCodeId(null)
152154
}}
@@ -182,6 +184,7 @@ export function AccessCodeTable({
182184
disableEditAccessCode={disableEditAccessCode}
183185
disableDeleteAccessCode={disableDeleteAccessCode}
184186
disableResourceIds={disableResourceIds}
187+
disableClimateSettingSchedules={disableClimateSettingSchedules}
185188
onBack={() => {
186189
setSelectedViewAccessCodeId(null)
187190
}}
@@ -202,6 +205,7 @@ export function AccessCodeTable({
202205
disableEditAccessCode={disableEditAccessCode}
203206
disableDeleteAccessCode={disableDeleteAccessCode}
204207
disableResourceIds={disableResourceIds}
208+
disableClimateSettingSchedules={disableClimateSettingSchedules}
205209
onBack={toggleAddAccessCodeForm}
206210
className={className}
207211
onSuccess={() => {

src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export function ClimateSettingScheduleDetails({
3838
disableCreateAccessCode,
3939
disableEditAccessCode,
4040
disableResourceIds = false,
41+
disableClimateSettingSchedules,
4142
}: ClimateSettingScheduleDetailsProps): JSX.Element | null {
4243
useComponentTelemetry('ClimateSettingScheduleDetails')
4344

@@ -65,6 +66,7 @@ export function ClimateSettingScheduleDetails({
6566
disableEditAccessCode={disableEditAccessCode}
6667
disableDeleteAccessCode={disableDeleteAccessCode}
6768
disableResourceIds={disableResourceIds}
69+
disableClimateSettingSchedules={disableClimateSettingSchedules}
6870
onBack={() => {
6971
selectDevice(null)
7072
}}

src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export function ClimateSettingScheduleTable({
7272
disableCreateAccessCode,
7373
disableEditAccessCode,
7474
disableResourceIds = false,
75+
disableClimateSettingSchedules,
7576
}: ClimateSettingScheduleTableProps): JSX.Element {
7677
useComponentTelemetry('ClimateSettingScheduleTable')
7778

@@ -125,6 +126,7 @@ export function ClimateSettingScheduleTable({
125126
disableEditAccessCode={disableEditAccessCode}
126127
disableDeleteAccessCode={disableDeleteAccessCode}
127128
disableResourceIds={disableResourceIds}
129+
disableClimateSettingSchedules={disableClimateSettingSchedules}
128130
onBack={() => {
129131
setSelectedViewClimateSettingScheduleId(null)
130132
}}

src/lib/seam/components/DeviceDetails/DeviceDetails.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export function DeviceDetails({
2323
disableResourceIds = false,
2424
disableCreateAccessCode = false,
2525
disableEditAccessCode = false,
26+
disableClimateSettingSchedules = false,
2627
onBack,
2728
className,
2829
}: DeviceDetailsProps): JSX.Element | null {
@@ -36,12 +37,13 @@ export function DeviceDetails({
3637
return null
3738
}
3839

39-
const props = {
40+
const props: Omit<DeviceDetailsProps, 'deviceId'> = {
4041
disableLockUnlock,
4142
disableDeleteAccessCode,
4243
disableResourceIds,
4344
disableCreateAccessCode,
4445
disableEditAccessCode,
46+
disableClimateSettingSchedules,
4547
onBack,
4648
className,
4749
}

src/lib/seam/components/DeviceDetails/LockDeviceDetails.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export function LockDeviceDetails(
3232
disableEditAccessCode,
3333
disableDeleteAccessCode,
3434
disableResourceIds,
35+
disableClimateSettingSchedules,
3536
onBack,
3637
className,
3738
} = props
@@ -62,6 +63,7 @@ export function LockDeviceDetails(
6263
disableEditAccessCode={disableEditAccessCode}
6364
disableDeleteAccessCode={disableDeleteAccessCode}
6465
disableResourceIds={disableResourceIds}
66+
disableClimateSettingSchedules={disableClimateSettingSchedules}
6567
onBack={toggleAccessCodesOpen}
6668
className={className}
6769
/>

src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export function ThermostatDeviceDetails({
4545
disableEditAccessCode,
4646
disableDeleteAccessCode,
4747
disableResourceIds = false,
48+
disableClimateSettingSchedules = false,
4849
}: ThermostatDeviceDetailsProps): JSX.Element | null {
4950
const [climateSettingsOpen, setClimateSettingsOpen] = useState(false)
5051

@@ -65,6 +66,7 @@ export function ThermostatDeviceDetails({
6566
disableEditAccessCode={disableEditAccessCode}
6667
disableDeleteAccessCode={disableDeleteAccessCode}
6768
disableResourceIds={disableResourceIds}
69+
disableClimateSettingSchedules={disableClimateSettingSchedules}
6870
onBack={() => {
6971
setClimateSettingsOpen(false)
7072
}}
@@ -91,25 +93,27 @@ export function ThermostatDeviceDetails({
9193

9294
<div className='seam-thermostat-device-details'>
9395
<DetailSectionGroup>
94-
<DetailSection
95-
label={t.scheduledClimates}
96-
tooltipContent={t.scheduledClimatesTooltip}
97-
>
98-
<DetailRow
99-
label={
100-
climateSettingSchedules == null
101-
? t.viewingClimateSchedules
102-
: `${climateSettingSchedules.length} ${climateSettingSchedulesLabel}`
103-
}
104-
onClick={() => {
105-
setClimateSettingsOpen(true)
106-
}}
96+
{!disableClimateSettingSchedules && (
97+
<DetailSection
98+
label={t.scheduledClimates}
99+
tooltipContent={t.scheduledClimatesTooltip}
107100
>
108-
<div className='seam-detail-row-rotated-icon'>
109-
<ChevronWideIcon />
110-
</div>
111-
</DetailRow>
112-
</DetailSection>
101+
<DetailRow
102+
label={
103+
climateSettingSchedules == null
104+
? t.viewingClimateSchedules
105+
: `${climateSettingSchedules.length} ${climateSettingSchedulesLabel}`
106+
}
107+
onClick={() => {
108+
setClimateSettingsOpen(true)
109+
}}
110+
>
111+
<div className='seam-detail-row-rotated-icon'>
112+
<ChevronWideIcon />
113+
</div>
114+
</DetailRow>
115+
</DetailSection>
116+
)}
113117

114118
<DetailSection
115119
label={t.currentSettings}

src/lib/seam/components/DeviceTable/DeviceTable.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export function DeviceTable({
7070
disableEditAccessCode = false,
7171
disableDeleteAccessCode = false,
7272
disableResourceIds = false,
73+
disableClimateSettingSchedules = false,
7374
onBack,
7475
className,
7576
}: DeviceTableProps = {}): JSX.Element {
@@ -112,6 +113,7 @@ export function DeviceTable({
112113
disableEditAccessCode={disableEditAccessCode}
113114
disableDeleteAccessCode={disableDeleteAccessCode}
114115
disableResourceIds={disableResourceIds}
116+
disableClimateSettingSchedules={disableClimateSettingSchedules}
115117
onBack={() => {
116118
setSelectedDeviceId(null)
117119
}}

src/lib/seam/components/common-props.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export interface RequiredCommonProps {
1818
disableEditAccessCode: boolean | undefined
1919
disableLockUnlock: boolean | undefined
2020
disableResourceIds: boolean | undefined
21+
disableClimateSettingSchedules: boolean | undefined
2122
}
2223

2324
export type CommonProps = Partial<RequiredCommonProps>

0 commit comments

Comments
 (0)