@ledvance/base 1.2.82 → 1.2.83

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 (165) hide show
  1. package/.babelrc +31 -31
  2. package/.eslintignore +5 -5
  3. package/.eslintrc.js +27 -27
  4. package/.prettierrc.js +1 -1
  5. package/.versionrc +5 -5
  6. package/localazy.json +848 -848
  7. package/localazy.keys.json +4 -4
  8. package/package.json +74 -74
  9. package/rn-cli.config.js +8 -8
  10. package/src/api/native.d.ts +71 -71
  11. package/src/api/native.ts +423 -423
  12. package/src/api/nativeEventEmitter.d.ts +3 -3
  13. package/src/api/nativeEventEmitter.ts +125 -125
  14. package/src/components/AdvanceCard.d.ts +25 -25
  15. package/src/components/AdvanceCard.tsx +117 -117
  16. package/src/components/AdvanceList.d.ts +9 -9
  17. package/src/components/AdvanceList.tsx +69 -69
  18. package/src/components/ApplyForDeviceItem.d.ts +6 -6
  19. package/src/components/ApplyForDeviceItem.tsx +83 -83
  20. package/src/components/ApplyForDeviceList.d.ts +7 -7
  21. package/src/components/ApplyForDeviceList.tsx +61 -61
  22. package/src/components/ApplyForText.d.ts +6 -6
  23. package/src/components/ApplyForText.tsx +52 -52
  24. package/src/components/Card.d.ts +10 -10
  25. package/src/components/Card.tsx +40 -40
  26. package/src/components/Cell.d.ts +21 -21
  27. package/src/components/Cell.tsx +69 -69
  28. package/src/components/CircularProgress.d.ts +8 -8
  29. package/src/components/CircularProgress.tsx +42 -42
  30. package/src/components/ColorAdjustView.d.ts +12 -12
  31. package/src/components/ColorAdjustView.tsx +64 -64
  32. package/src/components/ColorExtractor.d.ts +73 -73
  33. package/src/components/ColorExtractor.tsx +374 -374
  34. package/src/components/ColorTempAdjustView.d.ts +13 -13
  35. package/src/components/ColorTempAdjustView.tsx +57 -57
  36. package/src/components/ColorsLine.d.ts +7 -7
  37. package/src/components/ColorsLine.tsx +47 -47
  38. package/src/components/CustomListDialog.d.ts +15 -15
  39. package/src/components/CustomListDialog.tsx +66 -65
  40. package/src/components/DeleteButton.d.ts +10 -10
  41. package/src/components/DeleteButton.tsx +40 -40
  42. package/src/components/Dialog.d.ts +10 -10
  43. package/src/components/Dialog.tsx +38 -38
  44. package/src/components/DrawToolView.d.ts +46 -46
  45. package/src/components/DrawToolView.tsx +262 -262
  46. package/src/components/FanAdjustView.d.ts +23 -23
  47. package/src/components/FanAdjustView.tsx +141 -141
  48. package/src/components/InfoText.d.ts +11 -11
  49. package/src/components/InfoText.tsx +45 -45
  50. package/src/components/LampAdjustView.d.ts +10 -10
  51. package/src/components/LampAdjustView.tsx +75 -75
  52. package/src/components/LampAdjustView2.d.ts +24 -24
  53. package/src/components/LampAdjustView2.tsx +104 -104
  54. package/src/components/LinearGradientLine.d.ts +9 -9
  55. package/src/components/LinearGradientLine.tsx +63 -63
  56. package/src/components/LoadingView.tsx +39 -39
  57. package/src/components/MoodColorsLine.d.ts +9 -9
  58. package/src/components/MoodColorsLine.tsx +38 -38
  59. package/src/components/Page.d.ts +21 -21
  60. package/src/components/Page.tsx +104 -104
  61. package/src/components/Popup.d.ts +7 -7
  62. package/src/components/Popup.tsx +71 -71
  63. package/src/components/Segmented.d.ts +14 -14
  64. package/src/components/Segmented.tsx +76 -76
  65. package/src/components/ShowSelect.d.ts +1 -1
  66. package/src/components/ShowSelect.tsx +158 -158
  67. package/src/components/SocketItem.d.ts +13 -13
  68. package/src/components/SocketItem.tsx +87 -87
  69. package/src/components/Spacer.d.ts +7 -7
  70. package/src/components/Spacer.tsx +13 -13
  71. package/src/components/Stepper.d.ts +19 -19
  72. package/src/components/Stepper.tsx +130 -130
  73. package/src/components/StripAdjustView.d.ts +16 -16
  74. package/src/components/StripAdjustView.tsx +129 -129
  75. package/src/components/StripLightView.d.ts +14 -14
  76. package/src/components/StripLightView.tsx +24 -24
  77. package/src/components/Summary.tsx +116 -116
  78. package/src/components/Tag.d.ts +8 -8
  79. package/src/components/Tag.tsx +56 -56
  80. package/src/components/TextButton.d.ts +9 -9
  81. package/src/components/TextButton.tsx +31 -31
  82. package/src/components/TextField.d.ts +9 -9
  83. package/src/components/TextField.tsx +92 -92
  84. package/src/components/TextFieldStyleButton.d.ts +8 -8
  85. package/src/components/TextFieldStyleButton.tsx +85 -85
  86. package/src/components/UATabTitle.d.ts +6 -6
  87. package/src/components/UATabTitle.tsx +31 -31
  88. package/src/components/UATabs.d.ts +12 -12
  89. package/src/components/UATabs.tsx +77 -77
  90. package/src/components/connect.d.ts +10 -10
  91. package/src/components/connect.tsx +20 -20
  92. package/src/components/ldvColorBrightness.d.ts +1 -1
  93. package/src/components/ldvColorBrightness.tsx +18 -18
  94. package/src/components/ldvColorSlider.d.ts +14 -14
  95. package/src/components/ldvColorSlider.tsx +131 -131
  96. package/src/components/ldvItemView.d.ts +12 -12
  97. package/src/components/ldvItemView.tsx +43 -43
  98. package/src/components/ldvPickerView.d.ts +13 -13
  99. package/src/components/ldvPickerView.tsx +97 -97
  100. package/src/components/ldvPresetView.d.ts +2 -2
  101. package/src/components/ldvPresetView.tsx +86 -86
  102. package/src/components/ldvSaturation.d.ts +2 -2
  103. package/src/components/ldvSaturation.tsx +22 -22
  104. package/src/components/ldvSlider.d.ts +15 -15
  105. package/src/components/ldvSlider.tsx +103 -103
  106. package/src/components/ldvSwitch.d.ts +10 -10
  107. package/src/components/ldvSwitch.tsx +52 -52
  108. package/src/components/ldvTemperatureSlider.d.ts +13 -13
  109. package/src/components/ldvTemperatureSlider.tsx +139 -139
  110. package/src/components/ldvTopBar.d.ts +10 -10
  111. package/src/components/ldvTopBar.tsx +76 -76
  112. package/src/components/ldvTopName.d.ts +9 -9
  113. package/src/components/ldvTopName.tsx +63 -63
  114. package/src/components/segmentControl.d.ts +1 -1
  115. package/src/components/segmentControl.tsx +65 -65
  116. package/src/components/weekSelect.d.ts +7 -7
  117. package/src/components/weekSelect.tsx +98 -98
  118. package/src/composeLayout.d.ts +30 -30
  119. package/src/composeLayout.tsx +261 -261
  120. package/src/config/dark-theme.ts +61 -61
  121. package/src/config/light-theme.ts +61 -61
  122. package/src/hooks/Hooks.d.ts +2 -2
  123. package/src/hooks/Hooks.ts +8 -8
  124. package/src/i18n/index.d.ts +16 -16
  125. package/src/i18n/index.ts +37 -37
  126. package/src/i18n/strings.d.ts +15953 -15953
  127. package/src/i18n/strings.ts +23723 -23723
  128. package/src/main.tsx +9 -9
  129. package/src/models/GlobalParams.d.ts +14 -14
  130. package/src/models/GlobalParams.ts +14 -14
  131. package/src/models/TuyaApi.d.ts +29 -29
  132. package/src/models/TuyaApi.ts +92 -92
  133. package/src/models/combine.d.ts +26 -26
  134. package/src/models/combine.ts +17 -17
  135. package/src/models/configureStore.d.ts +9 -9
  136. package/src/models/configureStore.ts +33 -33
  137. package/src/models/index.d.ts +31 -31
  138. package/src/models/index.ts +22 -22
  139. package/src/models/modules/NativePropsSlice.d.ts +61 -61
  140. package/src/models/modules/NativePropsSlice.tsx +467 -467
  141. package/src/models/modules/Result.d.ts +14 -14
  142. package/src/models/modules/Result.ts +15 -15
  143. package/src/models/modules/common.d.ts +44 -44
  144. package/src/models/modules/common.ts +161 -161
  145. package/src/res/index.d.ts +70 -70
  146. package/src/res/index.ts +73 -73
  147. package/src/utils/ColorParser.d.ts +66 -66
  148. package/src/utils/ColorParser.ts +189 -189
  149. package/src/utils/ColorUtils.d.ts +71 -71
  150. package/src/utils/ColorUtils.tsx +448 -448
  151. package/src/utils/Support.d.ts +13 -13
  152. package/src/utils/Support.ts +108 -108
  153. package/src/utils/TypeUtils.d.ts +3 -3
  154. package/src/utils/cctUtils.d.ts +1 -1
  155. package/src/utils/cctUtils.ts +110 -110
  156. package/src/utils/common.d.ts +35 -35
  157. package/src/utils/common.ts +379 -379
  158. package/src/utils/index.d.ts +26 -26
  159. package/src/utils/index.ts +191 -191
  160. package/src/utils/interface.d.ts +6 -6
  161. package/src/utils/interface.ts +50 -11
  162. package/src/utils/loopsCompare.d.ts +1 -1
  163. package/src/utils/loopsCompare.ts +62 -62
  164. package/tsconfig.json +50 -50
  165. package/update-localazy.py +52 -52
@@ -1,70 +1,70 @@
1
- import React, { useCallback } from 'react'
2
- import { FlatList, StyleSheet, View, Image } from 'react-native'
3
- import AdvanceCard, { AdvancedData } from './AdvanceCard'
4
- import Spacer from './Spacer'
5
- import { useNavigation } from '@react-navigation/core'
6
- import { Utils } from 'tuya-panel-kit'
7
-
8
- const { convertX: cx } = Utils.RatioUtils
9
-
10
- export interface AdvanceListProps {
11
- advanceData: AdvancedData[],
12
- onAdvanceItemClick?: (advanceData: AdvancedData, index: number) => Promise<void> | undefined
13
- }
14
-
15
- function AdvanceList(props: AdvanceListProps) {
16
- const navigation = useNavigation()
17
-
18
- const { advanceData, onAdvanceItemClick } = props
19
-
20
- const renderItem = useCallback(({ item, index }) => (
21
- <View style={styles.item}>
22
- <AdvanceCard
23
- data={item}
24
- onPress={() => {
25
- if (!onAdvanceItemClick || onAdvanceItemClick(item, index)) {
26
- navigation.navigate(item.router.key, item.router.params)
27
- }
28
- }}>
29
- {item.icons && <View style={{
30
- height: cx(118),
31
- justifyContent: 'center',
32
- alignItems: 'center',
33
- }}>
34
- <Image source={item.icons} style={{ width: cx(80), height: cx(80) }} />
35
- </View>}
36
- </AdvanceCard>
37
- </View>
38
- ), [navigation, onAdvanceItemClick])
39
-
40
- const keyExtractor = useCallback((item: AdvancedData, index: number) => item.dp?.code || `key-${index}`, [])
41
-
42
- const Header = useCallback(() => <Spacer height={cx(10)} />, [])
43
- const Separator = useCallback(() => <Spacer />, [])
44
- const Footer = useCallback(() => <Spacer height={cx(30)} />, [])
45
-
46
- return (
47
- <FlatList
48
- numColumns={2}
49
- style={styles.container}
50
- data={advanceData}
51
- renderItem={renderItem}
52
- keyExtractor={keyExtractor}
53
- ListHeaderComponent={Header}
54
- ItemSeparatorComponent={Separator}
55
- ListFooterComponent={Footer} />
56
- )
57
- }
58
-
59
- const styles = StyleSheet.create({
60
- container: {
61
- marginHorizontal: cx(14),
62
- },
63
- item: {
64
- flex: .5,
65
- justifyContent: 'center',
66
- alignItems: 'center',
67
- },
68
- })
69
-
1
+ import React, { useCallback } from 'react'
2
+ import { FlatList, StyleSheet, View, Image } from 'react-native'
3
+ import AdvanceCard, { AdvancedData } from './AdvanceCard'
4
+ import Spacer from './Spacer'
5
+ import { useNavigation } from '@react-navigation/core'
6
+ import { Utils } from 'tuya-panel-kit'
7
+
8
+ const { convertX: cx } = Utils.RatioUtils
9
+
10
+ export interface AdvanceListProps {
11
+ advanceData: AdvancedData[],
12
+ onAdvanceItemClick?: (advanceData: AdvancedData, index: number) => Promise<void> | undefined
13
+ }
14
+
15
+ function AdvanceList(props: AdvanceListProps) {
16
+ const navigation = useNavigation()
17
+
18
+ const { advanceData, onAdvanceItemClick } = props
19
+
20
+ const renderItem = useCallback(({ item, index }) => (
21
+ <View style={styles.item}>
22
+ <AdvanceCard
23
+ data={item}
24
+ onPress={() => {
25
+ if (!onAdvanceItemClick || onAdvanceItemClick(item, index)) {
26
+ navigation.navigate(item.router.key, item.router.params)
27
+ }
28
+ }}>
29
+ {item.icons && <View style={{
30
+ height: cx(118),
31
+ justifyContent: 'center',
32
+ alignItems: 'center',
33
+ }}>
34
+ <Image source={item.icons} style={{ width: cx(80), height: cx(80) }} />
35
+ </View>}
36
+ </AdvanceCard>
37
+ </View>
38
+ ), [navigation, onAdvanceItemClick])
39
+
40
+ const keyExtractor = useCallback((item: AdvancedData, index: number) => item.dp?.code || `key-${index}`, [])
41
+
42
+ const Header = useCallback(() => <Spacer height={cx(10)} />, [])
43
+ const Separator = useCallback(() => <Spacer />, [])
44
+ const Footer = useCallback(() => <Spacer height={cx(30)} />, [])
45
+
46
+ return (
47
+ <FlatList
48
+ numColumns={2}
49
+ style={styles.container}
50
+ data={advanceData}
51
+ renderItem={renderItem}
52
+ keyExtractor={keyExtractor}
53
+ ListHeaderComponent={Header}
54
+ ItemSeparatorComponent={Separator}
55
+ ListFooterComponent={Footer} />
56
+ )
57
+ }
58
+
59
+ const styles = StyleSheet.create({
60
+ container: {
61
+ marginHorizontal: cx(14),
62
+ },
63
+ item: {
64
+ flex: .5,
65
+ justifyContent: 'center',
66
+ alignItems: 'center',
67
+ },
68
+ })
69
+
70
70
  export default React.memo(AdvanceList)
@@ -1,6 +1,6 @@
1
- import { DeviceInfo } from '../api/native';
2
- export interface ApplyForDeviceItemProps {
3
- deviceInfo: DeviceInfo;
4
- }
5
- declare const ApplyForDeviceItem: (props: ApplyForDeviceItemProps) => JSX.Element;
6
- export default ApplyForDeviceItem;
1
+ import { DeviceInfo } from '../api/native';
2
+ export interface ApplyForDeviceItemProps {
3
+ deviceInfo: DeviceInfo;
4
+ }
5
+ declare const ApplyForDeviceItem: (props: ApplyForDeviceItemProps) => JSX.Element;
6
+ export default ApplyForDeviceItem;
@@ -1,84 +1,84 @@
1
- import { Image, StyleSheet, Text, View } from 'react-native'
2
- import React from 'react'
3
- import { Utils } from 'tuya-panel-kit'
4
- import { DeviceInfo } from '../api/native'
5
- import Spacer from './Spacer'
6
- import res from '../res'
7
-
8
- const cx = Utils.RatioUtils.convertX
9
-
10
- export interface ApplyForDeviceItemProps {
11
- deviceInfo: DeviceInfo
12
- }
13
-
14
- const ApplyForDeviceItem = (props: ApplyForDeviceItemProps) => {
15
- return (
16
- <View style={styles.root}>
17
- <View style={{ flex: 1 }}>
18
- <View style={styles.deviceInfo}>
19
- <Image style={styles.deviceIcon} source={{ uri: props.deviceInfo.deviceIcon }} />
20
- <Text style={styles.deviceName}>{props.deviceInfo.deviceName}</Text>
21
- </View>
22
- <View style={styles.deviceRoomInfo}>
23
- <View style={styles.roomNameTag}>
24
- <Text style={styles.roomName}>{props.deviceInfo.roomName}</Text>
25
- </View>
26
- </View>
27
- <Spacer height={cx(6)} />
28
- </View>
29
- <View style={[styles.offlineIcon, {marginRight: cx(5)}]}>
30
- {!props.deviceInfo.status && <Image style={styles.offlineIcon} source={res.offline_wifi} />}
31
- </View>
32
- </View>
33
- )
34
- }
35
-
36
- const styles = StyleSheet.create({
37
- root: {
38
- marginHorizontal: cx(8),
39
- backgroundColor: '#fff',
40
- flexDirection: 'row',
41
- alignItems: 'center'
42
- },
43
- deviceInfo: {
44
- flex: 1,
45
- flexDirection: 'row',
46
- alignItems: 'center',
47
- marginTop: cx(4),
48
- },
49
- deviceIcon: {
50
- width: cx(24),
51
- height: cx(24),
52
- marginStart: cx(6),
53
- },
54
- deviceName: {
55
- flex: 1,
56
- marginStart: cx(8),
57
- color: '#666',
58
- fontSize: cx(16),
59
- fontFamily: 'helvetica_neue_lt_std_roman',
60
- },
61
- deviceRoomInfo: {
62
- marginStart: cx(38),
63
- flexDirection: 'row',
64
- },
65
- roomNameTag: {
66
- height: cx(16),
67
- display: 'flex',
68
- justifyContent: 'center',
69
- backgroundColor: '#cbcbcb',
70
- borderRadius: cx(8),
71
- },
72
- roomName: {
73
- marginHorizontal: cx(12),
74
- color: '#000',
75
- fontSize: cx(10),
76
- fontFamily: 'helvetica_neue_lt_std_roman',
77
- },
78
- offlineIcon: {
79
- width: cx(24),
80
- height: cx(24)
81
- }
82
- })
83
-
1
+ import { Image, StyleSheet, Text, View } from 'react-native'
2
+ import React from 'react'
3
+ import { Utils } from 'tuya-panel-kit'
4
+ import { DeviceInfo } from '../api/native'
5
+ import Spacer from './Spacer'
6
+ import res from '../res'
7
+
8
+ const cx = Utils.RatioUtils.convertX
9
+
10
+ export interface ApplyForDeviceItemProps {
11
+ deviceInfo: DeviceInfo
12
+ }
13
+
14
+ const ApplyForDeviceItem = (props: ApplyForDeviceItemProps) => {
15
+ return (
16
+ <View style={styles.root}>
17
+ <View style={{ flex: 1 }}>
18
+ <View style={styles.deviceInfo}>
19
+ <Image style={styles.deviceIcon} source={{ uri: props.deviceInfo.deviceIcon }} />
20
+ <Text style={styles.deviceName}>{props.deviceInfo.deviceName}</Text>
21
+ </View>
22
+ <View style={styles.deviceRoomInfo}>
23
+ <View style={styles.roomNameTag}>
24
+ <Text style={styles.roomName}>{props.deviceInfo.roomName}</Text>
25
+ </View>
26
+ </View>
27
+ <Spacer height={cx(6)} />
28
+ </View>
29
+ <View style={[styles.offlineIcon, {marginRight: cx(5)}]}>
30
+ {!props.deviceInfo.status && <Image style={styles.offlineIcon} source={res.offline_wifi} />}
31
+ </View>
32
+ </View>
33
+ )
34
+ }
35
+
36
+ const styles = StyleSheet.create({
37
+ root: {
38
+ marginHorizontal: cx(8),
39
+ backgroundColor: '#fff',
40
+ flexDirection: 'row',
41
+ alignItems: 'center'
42
+ },
43
+ deviceInfo: {
44
+ flex: 1,
45
+ flexDirection: 'row',
46
+ alignItems: 'center',
47
+ marginTop: cx(4),
48
+ },
49
+ deviceIcon: {
50
+ width: cx(24),
51
+ height: cx(24),
52
+ marginStart: cx(6),
53
+ },
54
+ deviceName: {
55
+ flex: 1,
56
+ marginStart: cx(8),
57
+ color: '#666',
58
+ fontSize: cx(16),
59
+ fontFamily: 'helvetica_neue_lt_std_roman',
60
+ },
61
+ deviceRoomInfo: {
62
+ marginStart: cx(38),
63
+ flexDirection: 'row',
64
+ },
65
+ roomNameTag: {
66
+ height: cx(16),
67
+ display: 'flex',
68
+ justifyContent: 'center',
69
+ backgroundColor: '#cbcbcb',
70
+ borderRadius: cx(8),
71
+ },
72
+ roomName: {
73
+ marginHorizontal: cx(12),
74
+ color: '#000',
75
+ fontSize: cx(10),
76
+ fontFamily: 'helvetica_neue_lt_std_roman',
77
+ },
78
+ offlineIcon: {
79
+ width: cx(24),
80
+ height: cx(24)
81
+ }
82
+ })
83
+
84
84
  export default ApplyForDeviceItem
@@ -1,7 +1,7 @@
1
- import { DeviceInfo } from '../api/native';
2
- export interface ApplyForDeviceListProps {
3
- devices: DeviceInfo[];
4
- expand?: boolean;
5
- onExpandChange?: (expand: boolean) => void;
6
- }
7
- export default function ApplyForDeviceList(props: ApplyForDeviceListProps): JSX.Element;
1
+ import { DeviceInfo } from '../api/native';
2
+ export interface ApplyForDeviceListProps {
3
+ devices: DeviceInfo[];
4
+ expand?: boolean;
5
+ onExpandChange?: (expand: boolean) => void;
6
+ }
7
+ export default function ApplyForDeviceList(props: ApplyForDeviceListProps): JSX.Element;
@@ -1,62 +1,62 @@
1
- import { DeviceInfo } from '../api/native'
2
- import React from 'react'
3
- import ApplyForText from './ApplyForText'
4
- import { FlatList, StyleSheet, View } from 'react-native'
5
- import Spacer from './Spacer'
6
- import ApplyForDeviceItem from './ApplyForDeviceItem'
7
- import { Utils } from 'tuya-panel-kit'
8
- import { useReactive, useUpdateEffect } from 'ahooks'
9
-
10
- const cx = Utils.RatioUtils.convertX
11
-
12
- export interface ApplyForDeviceListProps {
13
- devices: DeviceInfo[]
14
- expand?: boolean
15
- onExpandChange?: (expand: boolean) => void
16
- }
17
-
18
- export default function ApplyForDeviceList(props: ApplyForDeviceListProps) {
19
- const state = useReactive({
20
- expand: props.expand || false
21
- })
22
-
23
- useUpdateEffect(() =>{
24
- state.expand = props.expand || false
25
- }, [props.expand])
26
-
27
- return <View>
28
- <ApplyForText
29
- expand={state.expand}
30
- onExpandChange={(expand) =>{
31
- if(props.onExpandChange){
32
- props.onExpandChange(expand)
33
- }else{
34
- state.expand = expand
35
- }
36
- }}/>
37
- <Spacer height={cx(2)}/>
38
- {state.expand &&
39
- <FlatList
40
- style={styles.deviceList}
41
- data={props.devices}
42
- renderItem={({ item }) => <ApplyForDeviceItem deviceInfo={item}/>}
43
- keyExtractor={item => item.deviceId}
44
- ItemSeparatorComponent={() => {
45
- return (
46
- <Spacer
47
- style={{
48
- backgroundColor: 'rgb(241,241,241)',
49
- }}
50
- height={cx(8)}/>
51
- )
52
- }}/>}
53
- </View>
54
- }
55
-
56
- const styles = StyleSheet.create({
57
- deviceList: {
58
- marginHorizontal: cx(16),
59
- paddingVertical: cx(8),
60
- backgroundColor: 'rgb(241,241,241)',
61
- },
1
+ import { DeviceInfo } from '../api/native'
2
+ import React from 'react'
3
+ import ApplyForText from './ApplyForText'
4
+ import { FlatList, StyleSheet, View } from 'react-native'
5
+ import Spacer from './Spacer'
6
+ import ApplyForDeviceItem from './ApplyForDeviceItem'
7
+ import { Utils } from 'tuya-panel-kit'
8
+ import { useReactive, useUpdateEffect } from 'ahooks'
9
+
10
+ const cx = Utils.RatioUtils.convertX
11
+
12
+ export interface ApplyForDeviceListProps {
13
+ devices: DeviceInfo[]
14
+ expand?: boolean
15
+ onExpandChange?: (expand: boolean) => void
16
+ }
17
+
18
+ export default function ApplyForDeviceList(props: ApplyForDeviceListProps) {
19
+ const state = useReactive({
20
+ expand: props.expand || false
21
+ })
22
+
23
+ useUpdateEffect(() =>{
24
+ state.expand = props.expand || false
25
+ }, [props.expand])
26
+
27
+ return <View>
28
+ <ApplyForText
29
+ expand={state.expand}
30
+ onExpandChange={(expand) =>{
31
+ if(props.onExpandChange){
32
+ props.onExpandChange(expand)
33
+ }else{
34
+ state.expand = expand
35
+ }
36
+ }}/>
37
+ <Spacer height={cx(2)}/>
38
+ {state.expand &&
39
+ <FlatList
40
+ style={styles.deviceList}
41
+ data={props.devices}
42
+ renderItem={({ item }) => <ApplyForDeviceItem deviceInfo={item}/>}
43
+ keyExtractor={item => item.deviceId}
44
+ ItemSeparatorComponent={() => {
45
+ return (
46
+ <Spacer
47
+ style={{
48
+ backgroundColor: 'rgb(241,241,241)',
49
+ }}
50
+ height={cx(8)}/>
51
+ )
52
+ }}/>}
53
+ </View>
54
+ }
55
+
56
+ const styles = StyleSheet.create({
57
+ deviceList: {
58
+ marginHorizontal: cx(16),
59
+ paddingVertical: cx(8),
60
+ backgroundColor: 'rgb(241,241,241)',
61
+ },
62
62
  })
@@ -1,6 +1,6 @@
1
- export interface ApplyForTextProps {
2
- expand: boolean;
3
- onExpandChange: (expand: boolean) => void;
4
- }
5
- declare const ApplyForText: (props: ApplyForTextProps) => JSX.Element;
6
- export default ApplyForText;
1
+ export interface ApplyForTextProps {
2
+ expand: boolean;
3
+ onExpandChange: (expand: boolean) => void;
4
+ }
5
+ declare const ApplyForText: (props: ApplyForTextProps) => JSX.Element;
6
+ export default ApplyForText;
@@ -1,53 +1,53 @@
1
- import { Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native'
2
- import React from 'react'
3
- import { Utils } from 'tuya-panel-kit'
4
- import res from '../res/index'
5
- import I18n from '../i18n/index'
6
-
7
- const cx = Utils.RatioUtils.convertX
8
-
9
- export interface ApplyForTextProps {
10
- expand: boolean
11
- onExpandChange: (expand: boolean) => void
12
- }
13
-
14
- const ApplyForText = (props: ApplyForTextProps) => {
15
- return (
16
- <TouchableOpacity
17
- onPress={() => {
18
- props.onExpandChange(!props.expand)
19
- }}>
20
- <View style={styles.root}>
21
- <Text style={styles.text}>{I18n.getLang('timeschedule_add_schedule_subheadline_text')}</Text>
22
- <Image
23
- style={
24
- [styles.icon,
25
- {
26
- transform: [{ rotate: props.expand ? '0deg' : '180deg' }],
27
- },
28
- ]}
29
- source={res.ic_top_arrow}/>
30
- </View>
31
- </TouchableOpacity>
32
- )
33
- }
34
-
35
- const styles = StyleSheet.create({
36
- root: {
37
- flexDirection: 'row',
38
- alignItems: 'center',
39
- marginStart: cx(16),
40
- },
41
- text: {
42
- color: '#666',
43
- fontSize: cx(16),
44
- letterSpacing: cx(0.12),
45
- fontFamily: 'helvetica_neue_lt_std_bd',
46
- },
47
- icon: {
48
- width: cx(24),
49
- height: cx(24),
50
- },
51
- })
52
-
1
+ import { Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native'
2
+ import React from 'react'
3
+ import { Utils } from 'tuya-panel-kit'
4
+ import res from '../res/index'
5
+ import I18n from '../i18n/index'
6
+
7
+ const cx = Utils.RatioUtils.convertX
8
+
9
+ export interface ApplyForTextProps {
10
+ expand: boolean
11
+ onExpandChange: (expand: boolean) => void
12
+ }
13
+
14
+ const ApplyForText = (props: ApplyForTextProps) => {
15
+ return (
16
+ <TouchableOpacity
17
+ onPress={() => {
18
+ props.onExpandChange(!props.expand)
19
+ }}>
20
+ <View style={styles.root}>
21
+ <Text style={styles.text}>{I18n.getLang('timeschedule_add_schedule_subheadline_text')}</Text>
22
+ <Image
23
+ style={
24
+ [styles.icon,
25
+ {
26
+ transform: [{ rotate: props.expand ? '0deg' : '180deg' }],
27
+ },
28
+ ]}
29
+ source={res.ic_top_arrow}/>
30
+ </View>
31
+ </TouchableOpacity>
32
+ )
33
+ }
34
+
35
+ const styles = StyleSheet.create({
36
+ root: {
37
+ flexDirection: 'row',
38
+ alignItems: 'center',
39
+ marginStart: cx(16),
40
+ },
41
+ text: {
42
+ color: '#666',
43
+ fontSize: cx(16),
44
+ letterSpacing: cx(0.12),
45
+ fontFamily: 'helvetica_neue_lt_std_bd',
46
+ },
47
+ icon: {
48
+ width: cx(24),
49
+ height: cx(24),
50
+ },
51
+ })
52
+
53
53
  export default ApplyForText
@@ -1,10 +1,10 @@
1
- import { StyleProp, ViewProps, ViewStyle } from 'react-native';
2
- import { PropsWithChildren } from 'react';
3
- interface CardProps extends PropsWithChildren<ViewProps> {
4
- shadowHeight?: number | undefined;
5
- onPress?: () => void;
6
- onLongPress?: () => void;
7
- containerStyle?: StyleProp<ViewStyle>;
8
- }
9
- export default function Card(props: CardProps): JSX.Element;
10
- export {};
1
+ import { StyleProp, ViewProps, ViewStyle } from 'react-native';
2
+ import { PropsWithChildren } from 'react';
3
+ interface CardProps extends PropsWithChildren<ViewProps> {
4
+ shadowHeight?: number | undefined;
5
+ onPress?: () => void;
6
+ onLongPress?: () => void;
7
+ containerStyle?: StyleProp<ViewStyle>;
8
+ }
9
+ export default function Card(props: CardProps): JSX.Element;
10
+ export {};