@etsoo/react 1.5.78 → 1.5.81

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 (255) hide show
  1. package/README.md +7 -2
  2. package/__tests__/ReactUtils.ts +6 -0
  3. package/lib/{mu → components}/DnDList.d.ts +1 -14
  4. package/lib/{mu → components}/DnDList.js +1 -24
  5. package/lib/components/GridMethodRef.d.ts +11 -0
  6. package/lib/{mu → components}/GridMethodRef.js +0 -0
  7. package/lib/components/ScrollerGrid.d.ts +6 -6
  8. package/lib/components/ScrollerList.d.ts +3 -3
  9. package/lib/index.d.ts +2 -74
  10. package/lib/index.js +2 -75
  11. package/lib/notifier/Notifier.d.ts +2 -3
  12. package/lib/uses/useWindowScroll.d.ts +10 -0
  13. package/lib/uses/useWindowScroll.js +46 -0
  14. package/lib/uses/useWindowSize.js +11 -5
  15. package/package.json +9 -21
  16. package/src/{mu → components}/DnDList.tsx +11 -34
  17. package/src/components/GridMethodRef.ts +12 -0
  18. package/src/components/ScrollerGrid.tsx +6 -6
  19. package/src/components/ScrollerList.tsx +5 -3
  20. package/src/index.ts +2 -78
  21. package/src/notifier/Notifier.ts +2 -3
  22. package/src/uses/useWindowScroll.ts +60 -0
  23. package/src/uses/useWindowSize.ts +14 -5
  24. package/__tests__/mu/MUGlobalTests.tsx +0 -58
  25. package/__tests__/mu/NotifierMUTests.tsx +0 -213
  26. package/lib/app/CommonApp.d.ts +0 -39
  27. package/lib/app/CommonApp.js +0 -149
  28. package/lib/app/IServiceAppSettings.d.ts +0 -11
  29. package/lib/app/IServiceAppSettings.js +0 -1
  30. package/lib/app/IServicePage.d.ts +0 -6
  31. package/lib/app/IServicePage.js +0 -1
  32. package/lib/app/IServiceUser.d.ts +0 -14
  33. package/lib/app/IServiceUser.js +0 -1
  34. package/lib/app/ISmartERPUser.d.ts +0 -14
  35. package/lib/app/ISmartERPUser.js +0 -1
  36. package/lib/app/Labels.d.ts +0 -65
  37. package/lib/app/Labels.js +0 -62
  38. package/lib/app/ReactApp.d.ts +0 -194
  39. package/lib/app/ReactApp.js +0 -298
  40. package/lib/app/ServiceApp.d.ts +0 -78
  41. package/lib/app/ServiceApp.js +0 -244
  42. package/lib/components/ShowDataComparison.d.ts +0 -20
  43. package/lib/components/ShowDataComparison.js +0 -60
  44. package/lib/mu/AuditDisplay.d.ts +0 -33
  45. package/lib/mu/AuditDisplay.js +0 -52
  46. package/lib/mu/AutocompleteExtendedProps.d.ts +0 -66
  47. package/lib/mu/AutocompleteExtendedProps.js +0 -1
  48. package/lib/mu/BackButton.d.ts +0 -13
  49. package/lib/mu/BackButton.js +0 -33
  50. package/lib/mu/BridgeCloseButton.d.ts +0 -23
  51. package/lib/mu/BridgeCloseButton.js +0 -32
  52. package/lib/mu/ButtonLink.d.ts +0 -17
  53. package/lib/mu/ButtonLink.js +0 -19
  54. package/lib/mu/ComboBox.d.ts +0 -40
  55. package/lib/mu/ComboBox.js +0 -108
  56. package/lib/mu/CountdownButton.d.ts +0 -23
  57. package/lib/mu/CountdownButton.js +0 -81
  58. package/lib/mu/CustomFabProps.d.ts +0 -27
  59. package/lib/mu/CustomFabProps.js +0 -1
  60. package/lib/mu/DataGridEx.d.ts +0 -96
  61. package/lib/mu/DataGridEx.js +0 -331
  62. package/lib/mu/DataGridRenderers.d.ts +0 -22
  63. package/lib/mu/DataGridRenderers.js +0 -99
  64. package/lib/mu/DialogButton.d.ts +0 -54
  65. package/lib/mu/DialogButton.js +0 -45
  66. package/lib/mu/DraggablePaperComponent.d.ts +0 -8
  67. package/lib/mu/DraggablePaperComponent.js +0 -12
  68. package/lib/mu/EmailInput.d.ts +0 -11
  69. package/lib/mu/EmailInput.js +0 -15
  70. package/lib/mu/FabBox.d.ts +0 -21
  71. package/lib/mu/FabBox.js +0 -31
  72. package/lib/mu/FlexBox.d.ts +0 -14
  73. package/lib/mu/FlexBox.js +0 -18
  74. package/lib/mu/GridDataFormat.d.ts +0 -10
  75. package/lib/mu/GridDataFormat.js +0 -43
  76. package/lib/mu/GridMethodRef.d.ts +0 -11
  77. package/lib/mu/IconButtonLink.d.ts +0 -17
  78. package/lib/mu/IconButtonLink.js +0 -16
  79. package/lib/mu/InputField.d.ts +0 -21
  80. package/lib/mu/InputField.js +0 -39
  81. package/lib/mu/ItemList.d.ts +0 -55
  82. package/lib/mu/ItemList.js +0 -77
  83. package/lib/mu/ListItemRightIcon.d.ts +0 -4
  84. package/lib/mu/ListItemRightIcon.js +0 -8
  85. package/lib/mu/ListMoreDisplay.d.ts +0 -35
  86. package/lib/mu/ListMoreDisplay.js +0 -99
  87. package/lib/mu/LoadingButton.d.ts +0 -16
  88. package/lib/mu/LoadingButton.js +0 -41
  89. package/lib/mu/MUGlobal.d.ts +0 -102
  90. package/lib/mu/MUGlobal.js +0 -184
  91. package/lib/mu/MaskInput.d.ts +0 -34
  92. package/lib/mu/MaskInput.js +0 -43
  93. package/lib/mu/MobileListItemRenderer.d.ts +0 -17
  94. package/lib/mu/MobileListItemRenderer.js +0 -35
  95. package/lib/mu/MoreFab.d.ts +0 -45
  96. package/lib/mu/MoreFab.js +0 -95
  97. package/lib/mu/NotifierMU.d.ts +0 -47
  98. package/lib/mu/NotifierMU.js +0 -387
  99. package/lib/mu/NotifierPromptProps.d.ts +0 -22
  100. package/lib/mu/NotifierPromptProps.js +0 -1
  101. package/lib/mu/OptionGroup.d.ts +0 -62
  102. package/lib/mu/OptionGroup.js +0 -81
  103. package/lib/mu/PList.d.ts +0 -15
  104. package/lib/mu/PList.js +0 -12
  105. package/lib/mu/ProgressCount.d.ts +0 -44
  106. package/lib/mu/ProgressCount.js +0 -79
  107. package/lib/mu/PullToRefreshUI.d.ts +0 -9
  108. package/lib/mu/PullToRefreshUI.js +0 -18
  109. package/lib/mu/RLink.d.ts +0 -14
  110. package/lib/mu/RLink.js +0 -37
  111. package/lib/mu/ResponsibleContainer.d.ts +0 -89
  112. package/lib/mu/ResponsibleContainer.js +0 -159
  113. package/lib/mu/ScrollTopFab.d.ts +0 -7
  114. package/lib/mu/ScrollTopFab.js +0 -25
  115. package/lib/mu/ScrollerListEx.d.ts +0 -81
  116. package/lib/mu/ScrollerListEx.js +0 -167
  117. package/lib/mu/SearchBar.d.ts +0 -29
  118. package/lib/mu/SearchBar.js +0 -262
  119. package/lib/mu/SearchField.d.ts +0 -21
  120. package/lib/mu/SearchField.js +0 -39
  121. package/lib/mu/SearchOptionGroup.d.ts +0 -9
  122. package/lib/mu/SearchOptionGroup.js +0 -14
  123. package/lib/mu/SelectBool.d.ts +0 -14
  124. package/lib/mu/SelectBool.js +0 -22
  125. package/lib/mu/SelectEx.d.ts +0 -54
  126. package/lib/mu/SelectEx.js +0 -156
  127. package/lib/mu/Switch.d.ts +0 -29
  128. package/lib/mu/Switch.js +0 -34
  129. package/lib/mu/SwitchAnt.d.ts +0 -25
  130. package/lib/mu/SwitchAnt.js +0 -40
  131. package/lib/mu/TabBox.d.ts +0 -54
  132. package/lib/mu/TabBox.js +0 -31
  133. package/lib/mu/TableEx.d.ts +0 -68
  134. package/lib/mu/TableEx.js +0 -271
  135. package/lib/mu/TextFieldEx.d.ts +0 -101
  136. package/lib/mu/TextFieldEx.js +0 -127
  137. package/lib/mu/Tiplist.d.ts +0 -18
  138. package/lib/mu/Tiplist.js +0 -158
  139. package/lib/mu/TooltipClick.d.ts +0 -15
  140. package/lib/mu/TooltipClick.js +0 -40
  141. package/lib/mu/UserAvatar.d.ts +0 -24
  142. package/lib/mu/UserAvatar.js +0 -25
  143. package/lib/mu/UserAvatarEditor.d.ts +0 -53
  144. package/lib/mu/UserAvatarEditor.js +0 -129
  145. package/lib/mu/pages/CommonPage.d.ts +0 -11
  146. package/lib/mu/pages/CommonPage.js +0 -60
  147. package/lib/mu/pages/CommonPageProps.d.ts +0 -60
  148. package/lib/mu/pages/CommonPageProps.js +0 -1
  149. package/lib/mu/pages/DataGridPage.d.ts +0 -9
  150. package/lib/mu/pages/DataGridPage.js +0 -81
  151. package/lib/mu/pages/DataGridPageProps.d.ts +0 -17
  152. package/lib/mu/pages/DataGridPageProps.js +0 -1
  153. package/lib/mu/pages/EditPage.d.ts +0 -33
  154. package/lib/mu/pages/EditPage.js +0 -29
  155. package/lib/mu/pages/FixedListPage.d.ts +0 -15
  156. package/lib/mu/pages/FixedListPage.js +0 -72
  157. package/lib/mu/pages/ListPage.d.ts +0 -9
  158. package/lib/mu/pages/ListPage.js +0 -51
  159. package/lib/mu/pages/ListPageProps.d.ts +0 -7
  160. package/lib/mu/pages/ListPageProps.js +0 -1
  161. package/lib/mu/pages/ResponsivePage.d.ts +0 -9
  162. package/lib/mu/pages/ResponsivePage.js +0 -45
  163. package/lib/mu/pages/ResponsivePageProps.d.ts +0 -39
  164. package/lib/mu/pages/ResponsivePageProps.js +0 -1
  165. package/lib/mu/pages/SearchPageProps.d.ts +0 -30
  166. package/lib/mu/pages/SearchPageProps.js +0 -1
  167. package/lib/mu/pages/TablePage.d.ts +0 -9
  168. package/lib/mu/pages/TablePage.js +0 -71
  169. package/lib/mu/pages/TablePageProps.d.ts +0 -7
  170. package/lib/mu/pages/TablePageProps.js +0 -1
  171. package/lib/mu/pages/ViewPage.d.ts +0 -66
  172. package/lib/mu/pages/ViewPage.js +0 -105
  173. package/lib/mu/texts/DateText.d.ts +0 -34
  174. package/lib/mu/texts/DateText.js +0 -25
  175. package/lib/mu/texts/MoneyText.d.ts +0 -21
  176. package/lib/mu/texts/MoneyText.js +0 -14
  177. package/lib/mu/texts/NumberText.d.ts +0 -25
  178. package/lib/mu/texts/NumberText.js +0 -14
  179. package/src/app/CommonApp.ts +0 -225
  180. package/src/app/IServiceAppSettings.ts +0 -13
  181. package/src/app/IServicePage.ts +0 -6
  182. package/src/app/IServiceUser.ts +0 -17
  183. package/src/app/ISmartERPUser.ts +0 -16
  184. package/src/app/Labels.ts +0 -77
  185. package/src/app/ReactApp.ts +0 -500
  186. package/src/app/ServiceApp.ts +0 -353
  187. package/src/components/ShowDataComparison.tsx +0 -108
  188. package/src/mu/AuditDisplay.tsx +0 -117
  189. package/src/mu/AutocompleteExtendedProps.ts +0 -84
  190. package/src/mu/BackButton.tsx +0 -55
  191. package/src/mu/BridgeCloseButton.tsx +0 -69
  192. package/src/mu/ButtonLink.tsx +0 -32
  193. package/src/mu/ComboBox.tsx +0 -244
  194. package/src/mu/CountdownButton.tsx +0 -119
  195. package/src/mu/CustomFabProps.ts +0 -32
  196. package/src/mu/DataGridEx.tsx +0 -712
  197. package/src/mu/DataGridRenderers.tsx +0 -140
  198. package/src/mu/DialogButton.tsx +0 -163
  199. package/src/mu/DraggablePaperComponent.tsx +0 -19
  200. package/src/mu/EmailInput.tsx +0 -24
  201. package/src/mu/FabBox.tsx +0 -51
  202. package/src/mu/FlexBox.tsx +0 -20
  203. package/src/mu/GridDataFormat.tsx +0 -77
  204. package/src/mu/GridMethodRef.ts +0 -12
  205. package/src/mu/IconButtonLink.tsx +0 -29
  206. package/src/mu/InputField.tsx +0 -82
  207. package/src/mu/ItemList.tsx +0 -201
  208. package/src/mu/ListItemRightIcon.tsx +0 -9
  209. package/src/mu/ListMoreDisplay.tsx +0 -205
  210. package/src/mu/LoadingButton.tsx +0 -75
  211. package/src/mu/MUGlobal.ts +0 -220
  212. package/src/mu/MaskInput.tsx +0 -107
  213. package/src/mu/MobileListItemRenderer.tsx +0 -79
  214. package/src/mu/MoreFab.tsx +0 -211
  215. package/src/mu/NotifierMU.tsx +0 -654
  216. package/src/mu/NotifierPromptProps.ts +0 -26
  217. package/src/mu/OptionGroup.tsx +0 -218
  218. package/src/mu/PList.tsx +0 -27
  219. package/src/mu/ProgressCount.tsx +0 -166
  220. package/src/mu/PullToRefreshUI.tsx +0 -21
  221. package/src/mu/RLink.tsx +0 -64
  222. package/src/mu/ResponsibleContainer.tsx +0 -394
  223. package/src/mu/ScrollTopFab.tsx +0 -34
  224. package/src/mu/ScrollerListEx.tsx +0 -387
  225. package/src/mu/SearchBar.tsx +0 -398
  226. package/src/mu/SearchField.tsx +0 -82
  227. package/src/mu/SearchOptionGroup.tsx +0 -25
  228. package/src/mu/SelectBool.tsx +0 -40
  229. package/src/mu/SelectEx.tsx +0 -285
  230. package/src/mu/Switch.tsx +0 -94
  231. package/src/mu/SwitchAnt.tsx +0 -95
  232. package/src/mu/TabBox.tsx +0 -118
  233. package/src/mu/TableEx.tsx +0 -561
  234. package/src/mu/TextFieldEx.tsx +0 -250
  235. package/src/mu/Tiplist.tsx +0 -304
  236. package/src/mu/TooltipClick.tsx +0 -84
  237. package/src/mu/UserAvatar.tsx +0 -64
  238. package/src/mu/UserAvatarEditor.tsx +0 -287
  239. package/src/mu/pages/CommonPage.tsx +0 -128
  240. package/src/mu/pages/CommonPageProps.ts +0 -71
  241. package/src/mu/pages/DataGridPage.tsx +0 -137
  242. package/src/mu/pages/DataGridPageProps.ts +0 -24
  243. package/src/mu/pages/EditPage.tsx +0 -114
  244. package/src/mu/pages/FixedListPage.tsx +0 -134
  245. package/src/mu/pages/ListPage.tsx +0 -86
  246. package/src/mu/pages/ListPageProps.ts +0 -11
  247. package/src/mu/pages/ResponsivePage.tsx +0 -68
  248. package/src/mu/pages/ResponsivePageProps.ts +0 -57
  249. package/src/mu/pages/SearchPageProps.ts +0 -39
  250. package/src/mu/pages/TablePage.tsx +0 -119
  251. package/src/mu/pages/TablePageProps.ts +0 -11
  252. package/src/mu/pages/ViewPage.tsx +0 -285
  253. package/src/mu/texts/DateText.tsx +0 -74
  254. package/src/mu/texts/MoneyText.tsx +0 -49
  255. package/src/mu/texts/NumberText.tsx +0 -40
@@ -1,218 +0,0 @@
1
- import { DataTypes, Utils } from '@etsoo/shared';
2
- import {
3
- Checkbox,
4
- FormControl,
5
- FormControlLabel,
6
- FormControlProps,
7
- FormGroup,
8
- FormLabel,
9
- Radio,
10
- RadioGroup
11
- } from '@mui/material';
12
- import React from 'react';
13
-
14
- /**
15
- * OptionGroup props
16
- */
17
- export type OptionGroupProps<
18
- T extends object = DataTypes.IdLabelItem,
19
- D extends DataTypes.Keys<T> = DataTypes.Keys<T>
20
- > = Omit<FormControlProps<'fieldset'>, 'defaultValue'> & {
21
- /**
22
- * Default value
23
- */
24
- defaultValue?: T[D] | T[D][];
25
-
26
- /**
27
- * Get option label function
28
- */
29
- getOptionLabel?: (option: T) => string;
30
-
31
- /**
32
- * Label
33
- */
34
- label?: string;
35
-
36
- /**
37
- * Multiple choose item
38
- */
39
- multiple?: boolean;
40
-
41
- /**
42
- * Field name
43
- */
44
- name: string;
45
-
46
- /**
47
- * On value change handler
48
- */
49
- onValueChange?: (value: T[D] | T[D][] | undefined) => void;
50
-
51
- /**
52
- * Array of options.
53
- */
54
- options: ReadonlyArray<T>;
55
-
56
- /**
57
- * Is the field read only?
58
- */
59
- readOnly?: boolean;
60
-
61
- /**
62
- * Display group of elements in a compact row
63
- */
64
- row?: boolean;
65
- } & (T extends { id: DataTypes.IdType }
66
- ? {
67
- idField?: D;
68
- }
69
- : {
70
- idField: D;
71
- }) &
72
- (T extends { label: string }
73
- ? {
74
- labelField?: D;
75
- }
76
- : {
77
- labelField: D;
78
- });
79
-
80
- /**
81
- * OptionGroup
82
- * @param props Props
83
- * @returns Component
84
- */
85
- export function OptionGroup<
86
- T extends object = DataTypes.IdLabelItem,
87
- D extends DataTypes.Keys<T> = DataTypes.Keys<T>
88
- >(props: OptionGroupProps<T, D>) {
89
- // Destruct
90
- const {
91
- getOptionLabel,
92
- defaultValue,
93
- idField = 'id' as D,
94
- label,
95
- labelField = 'label' as D,
96
- multiple = false,
97
- name,
98
- onValueChange,
99
- options,
100
- readOnly,
101
- row,
102
- size,
103
- ...rest
104
- } = props;
105
-
106
- // Get option value
107
- // D type should be the source id type
108
- const getOptionValue = (option: T): T[D] | null => {
109
- const value = DataTypes.getValue(option, idField);
110
- if (value == null) return null;
111
- return value as T[D];
112
- };
113
-
114
- // Checkbox values
115
- const [values, setValues] = React.useState(
116
- defaultValue == null
117
- ? []
118
- : Array.isArray(defaultValue)
119
- ? defaultValue
120
- : [defaultValue]
121
- );
122
-
123
- // Item checked
124
- const itemChecked = (option: T) => {
125
- // Value
126
- const value = getOptionValue(option);
127
- if (value == null) return false;
128
-
129
- return values.includes(value);
130
- };
131
-
132
- // First item value
133
- const firstOptionValue = getOptionValue(options[0]);
134
-
135
- // Items
136
- const list = options.map((option) => {
137
- // Control
138
- const control = multiple ? (
139
- <Checkbox
140
- name={name}
141
- readOnly={readOnly}
142
- size={size}
143
- checked={itemChecked(option)}
144
- onChange={(event) => {
145
- if (firstOptionValue == null) return;
146
-
147
- const typeValue = Utils.parseString(
148
- event.target.value,
149
- firstOptionValue
150
- );
151
-
152
- const changedValues = [...values];
153
- if (event.target.checked) {
154
- if (changedValues.includes(typeValue)) return;
155
- changedValues.push(typeValue);
156
- } else {
157
- const index = changedValues.findIndex(
158
- (v) => v === typeValue
159
- );
160
- if (index === -1) return;
161
- changedValues.splice(index, 1);
162
- }
163
-
164
- if (onValueChange) onValueChange(changedValues);
165
- setValues(changedValues);
166
- }}
167
- />
168
- ) : (
169
- <Radio size={size} readOnly={readOnly} />
170
- );
171
-
172
- // Label
173
- const label =
174
- getOptionLabel == null
175
- ? `${option[labelField]}`
176
- : getOptionLabel(option);
177
-
178
- // Value, convert to string
179
- // Will fail when type is number
180
- const value = getOptionValue(option) as unknown as React.Key;
181
-
182
- return (
183
- <FormControlLabel
184
- key={value}
185
- control={control}
186
- value={value}
187
- label={label}
188
- />
189
- );
190
- });
191
-
192
- // Group
193
- const group = multiple ? (
194
- <FormGroup row={row}>{list}</FormGroup>
195
- ) : (
196
- <RadioGroup
197
- row={row}
198
- name={name}
199
- value={values[0]}
200
- onChange={(_event, value) => {
201
- if (firstOptionValue == null) return;
202
- const typeValue = Utils.parseString(value, firstOptionValue);
203
- if (onValueChange) onValueChange(typeValue);
204
- setValues([typeValue]);
205
- }}
206
- >
207
- {list}
208
- </RadioGroup>
209
- );
210
-
211
- // Layout
212
- return (
213
- <FormControl component="fieldset" {...rest}>
214
- {label && <FormLabel component="legend">{label}</FormLabel>}
215
- {group}
216
- </FormControl>
217
- );
218
- }
package/src/mu/PList.tsx DELETED
@@ -1,27 +0,0 @@
1
- import React from 'react';
2
-
3
- /**
4
- * Paragraph items list props
5
- */
6
- export interface PListProps {
7
- /**
8
- * List items
9
- */
10
- items?: string[];
11
- }
12
-
13
- /**
14
- * Paragraph items list
15
- * @param items Items
16
- */
17
- export function PList(props: PListProps) {
18
- const { items } = props;
19
- return (
20
- <React.Fragment>
21
- {items != null &&
22
- items.map((item, index) => {
23
- return <p key={index}>{item}</p>;
24
- })}
25
- </React.Fragment>
26
- );
27
- }
@@ -1,166 +0,0 @@
1
- import {
2
- Box,
3
- CircularProgress,
4
- LinearProgress,
5
- Typography
6
- } from '@mui/material';
7
- import React from 'react';
8
-
9
- /**
10
- * Process count props
11
- */
12
- export interface ProgressCountProps {
13
- /**
14
- * Is countdown or opposite
15
- * @default 'true'
16
- */
17
- countdown?: boolean;
18
-
19
- /**
20
- * Is linear or circular
21
- * @default 'true'
22
- */
23
- linear?: boolean;
24
-
25
- /**
26
- * Min width
27
- * @default 36
28
- */
29
- minWidth?: number;
30
-
31
- /**
32
- * On complete callback, return false will stop it
33
- */
34
- onComplete?: () => boolean;
35
-
36
- /**
37
- * On progress callback
38
- */
39
- onProgress?: (value: number) => void;
40
-
41
- /**
42
- * Seconds for count
43
- */
44
- seconds: number;
45
-
46
- /**
47
- * Value unit, like 's' or '%'
48
- * @default ''
49
- */
50
- valueUnit?: string;
51
- }
52
-
53
- /**
54
- * Progress count
55
- * @param props Props
56
- * @returns Component
57
- */
58
- export function ProgressCount(props: ProgressCountProps) {
59
- // Destruct
60
- const {
61
- countdown = true,
62
- linear = true,
63
- minWidth = 36,
64
- onComplete,
65
- onProgress,
66
- seconds,
67
- valueUnit = ''
68
- } = props;
69
-
70
- // Progress value
71
- const [value, setValue] = React.useState(countdown ? seconds : 0);
72
-
73
- // Variant
74
- const [variant, setVariant] = React.useState<
75
- 'determinate' | 'indeterminate'
76
- >('determinate');
77
-
78
- // Progress value
79
- const progressValue = (100.0 * value) / seconds;
80
-
81
- React.useEffect(() => {
82
- const timer = setInterval(() => {
83
- setValue((prev) => {
84
- const newValue = countdown
85
- ? prev === 0
86
- ? seconds
87
- : prev - 1
88
- : prev === seconds
89
- ? 0
90
- : prev + 1;
91
-
92
- if (countdown) {
93
- if (newValue === 0) {
94
- if (onComplete) {
95
- const result = onComplete();
96
- // Finish
97
- if (result === false) {
98
- clearInterval(timer);
99
- setVariant('indeterminate');
100
- }
101
- }
102
- }
103
- } else {
104
- if (newValue === seconds) {
105
- if (onComplete) {
106
- const result = onComplete();
107
- // Finish
108
- if (result === false) {
109
- clearInterval(timer);
110
- setVariant('indeterminate');
111
- }
112
- }
113
- }
114
- }
115
-
116
- if (onProgress) onProgress(newValue);
117
-
118
- return newValue;
119
- });
120
- }, 1000);
121
- return () => {
122
- clearInterval(timer);
123
- };
124
- }, []);
125
-
126
- if (linear)
127
- return (
128
- <Box sx={{ display: 'flex', alignItems: 'center', width: '100%' }}>
129
- <Box sx={{ width: '100%', mr: 1 }}>
130
- <LinearProgress variant={variant} value={progressValue} />
131
- </Box>
132
- <Box sx={{ minWidth }}>
133
- <Typography
134
- variant="body2"
135
- color="text.secondary"
136
- >{`${value}${valueUnit}`}</Typography>
137
- </Box>
138
- </Box>
139
- );
140
-
141
- return (
142
- <Box sx={{ position: 'relative', display: 'inline-flex' }}>
143
- <CircularProgress variant={variant} value={progressValue} />
144
- <Box
145
- sx={{
146
- top: 0,
147
- left: 0,
148
- bottom: 0,
149
- right: 0,
150
- position: 'absolute',
151
- display: 'flex',
152
- alignItems: 'center',
153
- justifyContent: 'center'
154
- }}
155
- >
156
- <Typography
157
- variant="caption"
158
- component="div"
159
- color="text.secondary"
160
- >
161
- {`${value}${valueUnit}`}
162
- </Typography>
163
- </Box>
164
- </Box>
165
- );
166
- }
@@ -1,21 +0,0 @@
1
- import React from 'react';
2
- import PullToRefresh, { Options } from 'pulltorefreshjs';
3
-
4
- /**
5
- * PullToRefresh UI
6
- * Use hammerjs or touchemulator to simulate browser as mobile device
7
- * @param props Props
8
- * @returns Component
9
- */
10
- export function PullToRefreshUI(props: Options) {
11
- // Ready
12
- React.useEffect(() => {
13
- PullToRefresh.init(props);
14
-
15
- return () => {
16
- PullToRefresh.destroyAll();
17
- };
18
- }, [props]);
19
-
20
- return <React.Fragment />;
21
- }
package/src/mu/RLink.tsx DELETED
@@ -1,64 +0,0 @@
1
- import { Link, LinkProps } from '@mui/material';
2
- import React from 'react';
3
- import { globalApp } from '../app/ReactApp';
4
- import { useDelayedExecutor } from '../uses/useDelayedExecutor';
5
-
6
- /**
7
- * Router Link properties
8
- */
9
- export type RLinkProps = LinkProps & {
10
- delay?: number;
11
- };
12
-
13
- /**
14
- * Router Link
15
- * @param props Props
16
- * @returns Component
17
- */
18
- export const RLink = React.forwardRef<HTMLAnchorElement, RLinkProps>(
19
- (props, ref) => {
20
- // Destruct
21
- const { delay = 0, href, target, onClick, ...rest } = props;
22
-
23
- const delayed = useDelayedExecutor((href: string) => {
24
- // Router push
25
- globalApp.history.push(href);
26
- }, delay);
27
-
28
- // Click handler
29
- const onClickLocl = (
30
- event: React.MouseEvent<HTMLAnchorElement, MouseEvent>
31
- ) => {
32
- if (onClick) onClick(event);
33
-
34
- if (
35
- !event.isDefaultPrevented() &&
36
- href &&
37
- (!target || target === '_self') && // Let browser handle "target=_blank" etc
38
- globalApp
39
- ) {
40
- // Prevent href action
41
- event.preventDefault();
42
-
43
- // Delayed excution
44
- delayed.call(undefined, href);
45
- }
46
- };
47
-
48
- // Clear when exit
49
- React.useEffect(() => {
50
- return () => delayed.clear();
51
- }, [delayed]);
52
-
53
- // Component
54
- return (
55
- <Link
56
- {...rest}
57
- onClick={onClickLocl}
58
- href={href}
59
- target={target}
60
- ref={ref}
61
- />
62
- );
63
- }
64
- );