amotify 0.0.4 → 0.0.5

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 (186) hide show
  1. package/package.json +1 -1
  2. package/public/amotify.js +1 -0
  3. package/public/amotify.min.css +24 -0
  4. package/dist/src/@jsminAmotifyExtension/_.d.ts +0 -4
  5. package/dist/src/@jsminAmotifyExtension/fetch.d.ts +0 -9
  6. package/dist/src/@jsminAmotifyExtension/formCollect.d.ts +0 -1
  7. package/dist/src/@jsminAmotifyExtension/spreadSheet.d.ts +0 -4
  8. package/dist/src/@jsminAmotifyExtension/variables.d.ts +0 -0
  9. package/dist/src/@types/_.d.ts +0 -6
  10. package/dist/src/@types/amot.d.ts +0 -260
  11. package/dist/src/@types/fn.d.ts +0 -1040
  12. package/dist/src/@types/index.d.ts +0 -62
  13. package/dist/src/@types/jsminAmotifyExtension.d.ts +0 -134
  14. package/dist/src/@types/module.d.ts +0 -2
  15. package/dist/src/@types/state.d.ts +0 -145
  16. package/dist/src/Atoms/@export.d.ts +0 -4
  17. package/dist/src/Atoms/FAIcon/parts.d.ts +0 -2
  18. package/dist/src/Atoms/Logo/parts.d.ts +0 -1
  19. package/dist/src/Atoms/Various/parts.d.ts +0 -9
  20. package/dist/src/Functions/@export.d.ts +0 -12
  21. package/dist/src/Functions/Button/_.d.ts +0 -1
  22. package/dist/src/Functions/Cropper/parts.d.ts +0 -1
  23. package/dist/src/Functions/Effects/Fade.d.ts +0 -1
  24. package/dist/src/Functions/Effects/Ripple.d.ts +0 -1
  25. package/dist/src/Functions/Effects/_.d.ts +0 -3
  26. package/dist/src/Functions/Input/Chips/Selector.d.ts +0 -1
  27. package/dist/src/Functions/Input/Chips/_.d.ts +0 -2
  28. package/dist/src/Functions/Input/DigitCharacters.d.ts +0 -1
  29. package/dist/src/Functions/Input/File/_.d.ts +0 -2
  30. package/dist/src/Functions/Input/Hidden.d.ts +0 -1
  31. package/dist/src/Functions/Input/List/_.d.ts +0 -1
  32. package/dist/src/Functions/Input/Segmented/_.d.ts +0 -1
  33. package/dist/src/Functions/Input/Select/_.d.ts +0 -1
  34. package/dist/src/Functions/Input/Slider/_.d.ts +0 -1
  35. package/dist/src/Functions/Input/Switch/_.d.ts +0 -1
  36. package/dist/src/Functions/Input/Text.d.ts +0 -5
  37. package/dist/src/Functions/Input/TextArea.d.ts +0 -1
  38. package/dist/src/Functions/Input/Time/Picker.d.ts +0 -1
  39. package/dist/src/Functions/Input/Time/_.d.ts +0 -2
  40. package/dist/src/Functions/Input/_.d.ts +0 -5
  41. package/dist/src/Functions/Input/core.d.ts +0 -34
  42. package/dist/src/Functions/Inputs/_.d.ts +0 -3
  43. package/dist/src/Functions/Inputs/text.d.ts +0 -12
  44. package/dist/src/Functions/Layout/PageNotFound.d.ts +0 -1
  45. package/dist/src/Functions/Layout/PageRouter.d.ts +0 -2
  46. package/dist/src/Functions/Layout/PageViewController/parts.d.ts +0 -1
  47. package/dist/src/Functions/Layout/Plate.d.ts +0 -1
  48. package/dist/src/Functions/Layout/RootViewController/parts.d.ts +0 -1
  49. package/dist/src/Functions/Layout/SwipeView/parts.d.ts +0 -2
  50. package/dist/src/Functions/Layout/TabBar.d.ts +0 -1
  51. package/dist/src/Functions/Layout/_.d.ts +0 -2
  52. package/dist/src/Functions/Loader/corner.d.ts +0 -1
  53. package/dist/src/Functions/Loader/mini.d.ts +0 -33
  54. package/dist/src/Functions/Loader/parts.d.ts +0 -3
  55. package/dist/src/Functions/Loader/top.d.ts +0 -1
  56. package/dist/src/Functions/Sheet/parts.d.ts +0 -2
  57. package/dist/src/Functions/SnackBar/parts.d.ts +0 -2
  58. package/dist/src/Functions/Table/Data/parts.d.ts +0 -3
  59. package/dist/src/Functions/Table/Drag/parts.d.ts +0 -1
  60. package/dist/src/Functions/Table/Normal/parts.d.ts +0 -1
  61. package/dist/src/Functions/Table/_.d.ts +0 -9
  62. package/dist/src/Functions/Tooltips/parts.d.ts +0 -2
  63. package/dist/src/Global/@export.d.ts +0 -12
  64. package/dist/src/Global/LaunchReactApplication.d.ts +0 -1
  65. package/dist/src/Global/styleConverter.d.ts +0 -2
  66. package/dist/src/Molecules/@export.d.ts +0 -21
  67. package/dist/src/Molecules/Accordion/parts.d.ts +0 -2
  68. package/dist/src/Molecules/LinkifyText/parts.d.ts +0 -1
  69. package/dist/src/Molecules/List.d.ts +0 -1
  70. package/dist/src/Organisms/@export.d.ts +0 -2
  71. package/dist/src/Organisms/DisplayStyleInput/_.d.ts +0 -1
  72. package/dist/src/Organisms/DisplayStyleInput/darkmode.d.ts +0 -1
  73. package/dist/src/Organisms/DisplayStyleInput/themeColor.d.ts +0 -27
  74. package/dist/src/Templates/@export.d.ts +0 -2
  75. package/dist/src/Templates/PlayGround/parts.d.ts +0 -1
  76. package/dist/src/config.d.ts +0 -16
  77. package/dist/src/launch.d.ts +0 -9
  78. package/dist/src/preload.d.ts +0 -1
  79. package/src/@jsminAmotifyExtension/_.tsx +0 -4
  80. package/src/@jsminAmotifyExtension/fetch.tsx +0 -107
  81. package/src/@jsminAmotifyExtension/formCollect.tsx +0 -89
  82. package/src/@jsminAmotifyExtension/spreadSheet.tsx +0 -159
  83. package/src/@jsminAmotifyExtension/variables.tsx +0 -130
  84. package/src/@styles/@app.scss +0 -4
  85. package/src/@styles/@variables/customProps.scss +0 -109
  86. package/src/@styles/@variables/styleSet.scss +0 -38
  87. package/src/@styles/@variables/themeColor.scss +0 -71
  88. package/src/@styles/@variables/var.scss +0 -171
  89. package/src/@styles/UniStyling.scss +0 -996
  90. package/src/@styles/init.scss +0 -154
  91. package/src/@types/_.tsx +0 -6
  92. package/src/@types/amot.tsx +0 -323
  93. package/src/@types/fn.tsx +0 -1210
  94. package/src/@types/index.tsx +0 -74
  95. package/src/@types/jsminAmotifyExtension.tsx +0 -143
  96. package/src/@types/module.tsx +0 -2
  97. package/src/@types/state.tsx +0 -199
  98. package/src/Atoms/@export.tsx +0 -32
  99. package/src/Atoms/FAIcon/parts.tsx +0 -117
  100. package/src/Atoms/FAIcon/style.module.scss +0 -9
  101. package/src/Atoms/Logo/parts.tsx +0 -335
  102. package/src/Atoms/Logo/style.module.scss +0 -96
  103. package/src/Atoms/Various/parts.tsx +0 -157
  104. package/src/Atoms/Various/style.module.scss +0 -40
  105. package/src/Functions/@export.tsx +0 -29
  106. package/src/Functions/Button/_.tsx +0 -305
  107. package/src/Functions/Button/style.module.scss +0 -183
  108. package/src/Functions/Cropper/parts.tsx +0 -1061
  109. package/src/Functions/Cropper/style.module.scss +0 -62
  110. package/src/Functions/Effects/Fade.tsx +0 -81
  111. package/src/Functions/Effects/Ripple.tsx +0 -141
  112. package/src/Functions/Effects/_.tsx +0 -33
  113. package/src/Functions/Effects/style.module.scss +0 -83
  114. package/src/Functions/Input/Chips/Selector.tsx +0 -451
  115. package/src/Functions/Input/Chips/_.tsx +0 -286
  116. package/src/Functions/Input/Chips/style.module.scss +0 -6
  117. package/src/Functions/Input/DigitCharacters.tsx +0 -241
  118. package/src/Functions/Input/File/_.tsx +0 -596
  119. package/src/Functions/Input/File/style.module.scss +0 -34
  120. package/src/Functions/Input/Hidden.tsx +0 -18
  121. package/src/Functions/Input/List/_.tsx +0 -383
  122. package/src/Functions/Input/List/style.module.scss +0 -84
  123. package/src/Functions/Input/Segmented/_.tsx +0 -238
  124. package/src/Functions/Input/Segmented/style.module.scss +0 -81
  125. package/src/Functions/Input/Select/_.tsx +0 -225
  126. package/src/Functions/Input/Select/style.module.scss +0 -10
  127. package/src/Functions/Input/Slider/_.tsx +0 -519
  128. package/src/Functions/Input/Slider/style.module.scss +0 -67
  129. package/src/Functions/Input/Switch/_.tsx +0 -177
  130. package/src/Functions/Input/Switch/style.module.scss +0 -18
  131. package/src/Functions/Input/Text.tsx +0 -437
  132. package/src/Functions/Input/TextArea.tsx +0 -115
  133. package/src/Functions/Input/Time/Picker.tsx +0 -950
  134. package/src/Functions/Input/Time/_.tsx +0 -736
  135. package/src/Functions/Input/Time/style.module.scss +0 -72
  136. package/src/Functions/Input/_.tsx +0 -793
  137. package/src/Functions/Input/core.tsx +0 -461
  138. package/src/Functions/Input/style.module.scss +0 -43
  139. package/src/Functions/Inputs/_.tsx +0 -5
  140. package/src/Functions/Inputs/style.module.scss +0 -15
  141. package/src/Functions/Inputs/text.tsx +0 -67
  142. package/src/Functions/Inputs/types.d.ts +0 -1
  143. package/src/Functions/Layout/PageNotFound.tsx +0 -81
  144. package/src/Functions/Layout/PageRouter.tsx +0 -107
  145. package/src/Functions/Layout/PageViewController/parts.tsx +0 -32
  146. package/src/Functions/Layout/Plate.tsx +0 -30
  147. package/src/Functions/Layout/RootViewController/parts.tsx +0 -290
  148. package/src/Functions/Layout/RootViewController/style.module.scss +0 -24
  149. package/src/Functions/Layout/SwipeView/parts.tsx +0 -380
  150. package/src/Functions/Layout/SwipeView/style.module.scss +0 -19
  151. package/src/Functions/Layout/TabBar.tsx +0 -64
  152. package/src/Functions/Layout/_.tsx +0 -20
  153. package/src/Functions/Loader/corner.tsx +0 -78
  154. package/src/Functions/Loader/mini.tsx +0 -117
  155. package/src/Functions/Loader/parts.tsx +0 -105
  156. package/src/Functions/Loader/style.module.scss +0 -222
  157. package/src/Functions/Loader/top.tsx +0 -90
  158. package/src/Functions/Sheet/parts.tsx +0 -972
  159. package/src/Functions/Sheet/style.module.scss +0 -235
  160. package/src/Functions/SnackBar/parts.tsx +0 -215
  161. package/src/Functions/SnackBar/style.module.scss +0 -25
  162. package/src/Functions/Table/Data/parts.tsx +0 -955
  163. package/src/Functions/Table/Drag/parts.tsx +0 -448
  164. package/src/Functions/Table/Normal/parts.tsx +0 -123
  165. package/src/Functions/Table/_.tsx +0 -170
  166. package/src/Functions/Table/style.module.scss +0 -92
  167. package/src/Functions/Tooltips/parts.tsx +0 -52
  168. package/src/Global/@export.tsx +0 -138
  169. package/src/Global/LaunchReactApplication.tsx +0 -30
  170. package/src/Global/exe.tsx +0 -0
  171. package/src/Global/styleConverter.tsx +0 -435
  172. package/src/Molecules/@export.tsx +0 -95
  173. package/src/Molecules/Accordion/parts.tsx +0 -146
  174. package/src/Molecules/Accordion/style.module.scss +0 -13
  175. package/src/Molecules/LinkifyText/parts.tsx +0 -54
  176. package/src/Molecules/List.tsx +0 -30
  177. package/src/Organisms/@export.tsx +0 -5
  178. package/src/Organisms/DisplayStyleInput/_.tsx +0 -18
  179. package/src/Organisms/DisplayStyleInput/darkmode.tsx +0 -112
  180. package/src/Organisms/DisplayStyleInput/themeColor.tsx +0 -210
  181. package/src/Templates/@export.tsx +0 -7
  182. package/src/Templates/PlayGround/parts.tsx +0 -115
  183. package/src/Templates/PlayGround/style.module.scss +0 -38
  184. package/src/config.tsx +0 -132
  185. package/src/launch.tsx +0 -100
  186. package/src/preload.tsx +0 -49
@@ -1,286 +0,0 @@
1
- import {
2
- useRecycle,
3
- useStore
4
- } from '@global';
5
- const {
6
- useEffect,
7
- useState
8
- } = React;
9
- import {
10
- FAIcon
11
- } from '@atoms';
12
- import {
13
- Column,
14
- Row,
15
- Text
16
- } from '@mols';
17
- import {
18
- Input,
19
- Buttons,
20
- Loader,
21
- Sheet
22
- } from '@functions';
23
-
24
- import {
25
- BoxWrapper,
26
- SubmitForm,
27
- ValidationCheck,
28
- CommonEffects
29
- } from '../core';
30
-
31
- import {
32
- ChipsInputFNs
33
- } from './Selector';
34
-
35
- import coreStyle from '../style.module.scss';
36
-
37
- function DefaultValidation( props: {
38
- value: any
39
- params: any
40
- } ): amotify.fn.Input.Validation.Result {
41
- let {
42
- value,
43
- params
44
- } = props;
45
- let {
46
- required
47
- } = params as amotify.fn.Input.Chips.PlainParams;
48
- let notice: amotify.fn.Input.Validation.NoticeTypes[] = [];
49
-
50
- if ( required && !value.length ) {
51
- notice.push( { type: 'invalid',label: '一つ以上選択してください' } );
52
- }
53
-
54
- return {
55
- ok: !notice.filter( ( { type } ) => type == 'invalid' ).length,
56
- notice: notice
57
- }
58
- }
59
-
60
- const DataWrapping: FNC<amotify.fn.Input.Chips.PlainParams> = ( params ) => {
61
- let DefaultValues = [ ...( params.value || [] ) ];
62
- let Values = DefaultValues.splice( 0,params.limit || 65535 );
63
-
64
- return ( <Core
65
- SelectedCellComponent={ ( params ) => {
66
- let {
67
- value,
68
- label,
69
- removeCallback
70
- } = params;
71
-
72
- return <Row.Left
73
- ssCardBox
74
- padding={ '1/2' }
75
- gap={ '1/2' }
76
- isRounded
77
- textAlign='left'
78
- >
79
- { label }
80
- { params.defaultRemoveButton }
81
- </Row.Left>;
82
- } }
83
- AddButtonComponent={ ( props ) => {
84
- if ( params.limit && params.limit <= props.selected.length ) return null;
85
-
86
- return <Buttons.Button.Sub.R
87
- color='cloud'
88
- padding={ '1/2' }
89
- onClick={ () => {
90
- props.openCallback();
91
- } }
92
- >
93
- <FAIcon.Plus />
94
- 追加する
95
- </Buttons.Button.Sub.R>;
96
- } }
97
- { ...params }
98
- value={ Values }
99
- /> );
100
- }
101
-
102
- const Core: FNC<amotify.fn.Input.Chips.PlainParams> = ( params ) => {
103
- let {
104
- required,
105
- form,
106
- name,
107
-
108
- checkValidationAtFirst,
109
- onValidate,
110
- onUpdateValue,onUpdateValidValue,
111
- value = [],
112
- limit,
113
-
114
- SelectedCellComponent,
115
- AddButtonComponent,
116
-
117
- ...others
118
- } = params;
119
- AddButtonComponent = AddButtonComponent!;
120
-
121
- let [ val_selectorID ] = useState( $.uuidGen() );
122
- let [ val_status,set_status ] = useState( {
123
- componentID: params.componentID || '',
124
- dataValue: value.map( ( val: any ) => val ),
125
- eventID: $.uuidGen(),
126
- eventType: 'init'
127
- } as amotify.fn.Input.Status.Plain );
128
- let [ val_validate,set_validate ] = useState( {
129
- ok: false,
130
- notice: []
131
- } as amotify.fn.Input.Validation.Result );
132
-
133
- let [ val_selected,set_selected ] = useState( [ ...value ] );
134
-
135
- CommonEffects( {
136
- params,
137
- val_status,set_status,
138
- val_validate,set_validate,
139
- DefaultValidation,
140
- onUpdateValue,onUpdateValidValue,
141
- ExtraOverrideParams: {
142
- formatValue: val_selected,
143
- dataValue: val_selected.map( ( val: any ) => val )
144
- },
145
- ExtraStoreParams: {
146
- searchTimer: null
147
- }
148
- } );
149
-
150
- const UpdateValue = ( values: amotify.fn.Input.Chips.OptionParams[] ) => {
151
- set_selected( values );
152
- set_status( {
153
- ...val_status,
154
- dataValue: values.map( ( val: any ) => val ),
155
- eventID: $.uuidGen(),
156
- eventType: 'update'
157
- } as amotify.fn.Input.Status.Plain );
158
- }
159
- const OpenSelector = () => {
160
- ChipsInputFNs.openSelector( {
161
- parent: DefaultParentQuerySelector,
162
- gravityPoint: params.selectorGravityPoint,
163
- SelectorCellComponent: params.SelectorCellComponent,
164
- selectorID: val_selectorID,
165
- options: params.defaultOptions || [],
166
- selected: val_selected,
167
- limit: params.limit,
168
- onDynamicSearch: params.onDynamicSearch,
169
- onUpdated: ( args ) => {
170
- UpdateValue( args.values );
171
- },
172
- onClosed: () => {
173
- $( DefaultParentQuerySelector ).focus();
174
- }
175
- } );
176
- }
177
-
178
- let DefaultParentQuerySelector = `[data-chips-input-wrapper="${ val_selectorID }"]`;
179
- let isFully = limit && limit <= val_selected.length;
180
-
181
- const mounted = React.useRef( false );
182
- useEffect( () => {
183
- if ( mounted.current ) {
184
- if ( isFully ) {
185
- Sheet.close( val_selectorID );
186
- $( DefaultParentQuerySelector ).focus();
187
- }
188
- } else {
189
- mounted.current = true;
190
- }
191
- },[ val_selected ] );
192
-
193
- let Selected = val_selected.map( ( s ) => {
194
- let { value,label } = s;
195
- SelectedCellComponent = SelectedCellComponent!;
196
-
197
- const removeCallback = () => {
198
- let findIndex = val_selected.findIndex( ( v ) => v.value == value );
199
- if ( findIndex == -1 ) return;
200
- let newSelected = [ ...val_selected ];
201
- newSelected.splice( findIndex,1 );
202
- UpdateValue( newSelected );
203
- if ( !newSelected.length ) {
204
- setTimeout( () => {
205
- $( DefaultParentQuerySelector ).focus();
206
- },200 );
207
- }
208
- }
209
- return <SelectedCellComponent
210
- value={ value }
211
- label={ label }
212
- removeCallback={ removeCallback }
213
- defaultRemoveButton={ <Buttons.Button.Sub.S
214
- flexSizing={ 'none' }
215
- color='cloud'
216
- backgroundColor='cloud'
217
- isRounded
218
- onClick={ () => {
219
- removeCallback();
220
- } }
221
- >
222
- <FAIcon.Times />
223
- </Buttons.Button.Sub.S> }
224
- openCallback={ () => {
225
- OpenSelector();
226
- } }
227
- />
228
- } );
229
-
230
- return ( <BoxWrapper
231
- val_status={ val_status }
232
- set_status={ set_status }
233
- val_validate={ val_validate }
234
- params={ params }
235
- >
236
- <Input.Hidden
237
- data-value={ JSON.stringify( val_status.dataValue.map( ( v: any ) => v.value ) ) }
238
- name={ name }
239
- form={ form }
240
- data-input-type={ 'chips-' + [ 'single','multi' ][ Number( params.limit != 1 ) ] }
241
- data-validation={ val_validate.ok }
242
- componentID={ val_status.componentID }
243
- data-focusor={ val_selectorID }
244
- />
245
- <button
246
- data-chips-input-wrapper={ val_selectorID }
247
- onKeyDown={ ( e ) => {
248
- let { key,ctrlKey,metaKey,keyCode } = e;
249
- let auxKey = ctrlKey || metaKey;
250
- let isString = ( keyCode >= 48 && keyCode <= 57 ) || ( keyCode >= 65 && keyCode <= 90 ) || ( keyCode >= 96 && keyCode <= 105 );
251
-
252
- if ( isString ) {
253
- if ( isFully ) return;
254
- OpenSelector();
255
- } else if ( key == 'Tab' ) {
256
-
257
- } else if ( key == 'Backspace' ) {
258
- if ( !val_selected.length ) return;
259
- if ( auxKey ) {
260
- UpdateValue( [] );
261
- } else {
262
- let newSelected = [ ...val_selected ];
263
- newSelected.pop();
264
- UpdateValue( newSelected );
265
- }
266
- }
267
- } }
268
- onClick={ () => {
269
- if ( isFully ) return;
270
- if ( val_selected.length ) return;
271
- OpenSelector();
272
- } }
273
- { ...others }
274
- >
275
- { !isFully ? <AddButtonComponent
276
- selected={ val_selected }
277
- openCallback={ OpenSelector }
278
- /> : null }
279
- { Selected }
280
- </button>
281
- </BoxWrapper> );
282
- }
283
-
284
- const ChipsInput: amotify.fn.Input.Chips.Methods = DataWrapping as any;
285
- ChipsInput.fn = ChipsInputFNs;
286
- export { ChipsInput }
@@ -1,6 +0,0 @@
1
- @use '@uniVar' as *;
2
- @use'@styleSet' as *;
3
-
4
- .SelectorWrapper {
5
- @include OriginScrollBar();
6
- }
@@ -1,241 +0,0 @@
1
- import {
2
- React
3
- } from '@global';
4
- const {
5
- useState
6
- } = React;
7
-
8
- import {
9
- Flex
10
- } from '@atoms';
11
- import {
12
- Input
13
- } from '@functions';
14
- import {
15
- BoxWrapper,
16
- SubmitForm,
17
- CommonEffects
18
- } from './core'
19
-
20
- import style from './style.module.scss';
21
-
22
- function DefaultValidation( props: {
23
- value: any
24
- params: any
25
- } ): amotify.fn.Input.Validation.Result {
26
- let { value,params } = props;
27
- let {
28
- required,
29
- numericOnly = false,
30
- digits
31
- } = params as amotify.fn.Input.DigitCharacters.PlainParams;
32
- let notice: amotify.fn.Input.Validation.NoticeTypes[] = [];
33
-
34
- if ( required && !value ) {
35
- notice.push( { type: 'invalid',label: '必須項目です' } );
36
- }
37
- if ( value ) {
38
- if ( numericOnly && value.match( /\D/ ) ) {
39
- notice.push( { type: 'invalid',label: '数字のみで入力してください' } );
40
- }
41
- if ( value.length != digits ) {
42
- notice.push( { type: 'warn',label: '最後まで入力してください' } );
43
- }
44
- }
45
-
46
- return {
47
- ok: !notice.filter( ( { type } ) => type == 'invalid' || type == 'warn' ).length,
48
- notice: notice
49
- }
50
- }
51
-
52
-
53
- const dataToFormat = ( digits: number,value: any = '' ) => {
54
- let dataValue = String( value );
55
- let formatValue: any = [];
56
- for ( let index = 0; index < digits; index++ ) {
57
- formatValue[ index ] = dataValue[ index ] || '';
58
- }
59
- return {
60
- formatValue,
61
- dataValue
62
- };
63
- }
64
- const formatToData = ( value: any = '' ) => {
65
- let formatValue = value;
66
- let dataValue = formatValue.join( '' );
67
- return {
68
- formatValue,
69
- dataValue
70
- }
71
- }
72
-
73
-
74
- export const DigitCharactersInput: FNC<amotify.fn.Input.DigitCharacters.PlainParams> = ( params ) => {
75
- let {
76
- tone,
77
- required,
78
- form,
79
- name,
80
-
81
- className = '',
82
- digits,
83
- numericOnly = false,
84
- enableFormSubmit,
85
-
86
- checkValidationAtFirst,
87
- onChange,onKeyDown,
88
- onValidate,
89
- onUpdateValue,
90
- onUpdateValidValue,
91
- value = '',
92
-
93
- override,
94
- statusID,
95
- componentID,
96
- listStyles,
97
- ...others
98
- } = params;
99
-
100
- if ( numericOnly ) {
101
- params.inputMode = params.inputMode || 'numeric';
102
- }
103
-
104
- let Default_Status: amotify.fn.Input.Status.DigitCharacters = {
105
- componentID: params.componentID || '',
106
- ...dataToFormat( digits,value ),
107
- eventType: 'init',
108
- eventID: $.uuidGen()
109
- }
110
-
111
- let [ val_status,set_status ] = useState( Default_Status );
112
- let [ val_validate,set_validate ] = useState( {
113
- ok: false,
114
- notice: []
115
- } as amotify.fn.Input.Validation.Result );
116
-
117
- CommonEffects( {
118
- params,
119
- val_status,
120
- set_status,
121
- val_validate,
122
- set_validate,
123
- onUpdateValue,
124
- onUpdateValidValue,
125
- DefaultValidation
126
- } );
127
-
128
- let Digits = [];
129
- for ( let index = 0; index < digits; index++ ) {
130
- let Character = val_status.formatValue[ index ];
131
-
132
- let Styles: React.CSSProperties = {}
133
-
134
- if ( params.combineInput ) {
135
- if ( index == 0 ) {
136
- Styles = {
137
- borderTopLeftRadius: 'inherit',
138
- borderBottomLeftRadius: 'inherit'
139
- }
140
- } else if ( index == digits - 1 ) {
141
- Styles = {
142
- borderTopRightRadius: 'inherit',
143
- borderBottomRightRadius: 'inherit'
144
- }
145
- }
146
- }
147
-
148
- Digits.push( <input
149
- type={ 'text' }
150
- inputMode={ params.inputMode || 'text' }
151
- value={ Character }
152
- data-form-name={ form }
153
- id={ 'Digit-' + index + '-' + val_status.componentID }
154
- className={ className }
155
- style={ {
156
- ...params.style,
157
- ...Styles
158
- } }
159
- onKeyDown={ ( event ) => {
160
- let {
161
- key,
162
- code
163
- } = event;
164
-
165
- if ( key == 'Tab' ) return;
166
- event.preventDefault();
167
- let nextFocusIndex = null;
168
-
169
- if ( key == 'Backspace' ) {
170
- let newFormatValue = val_status.formatValue;
171
- newFormatValue[ index ] = '';
172
-
173
- set_status( {
174
- ...val_status,
175
- ...formatToData( newFormatValue ),
176
- eventType: 'update',
177
- eventID: $.uuidGen()
178
- } );
179
- nextFocusIndex = index - 1;
180
- } else if ( [ 'ArrowLeft','ArrowRight' ].includes( key ) ) {
181
- let dir = Number( key == 'ArrowRight' ) * 2 - 1;
182
- nextFocusIndex = index + dir;
183
- } else {
184
- if ( enableFormSubmit ) SubmitForm( event );
185
-
186
- ( () => {
187
- let regExp = code.match( /^(Key(.)|Digit(\d)|Numpad(\d))/ );
188
- if ( !regExp ) return;
189
-
190
- let newCharacter: string = regExp[ 2 ] || regExp[ 3 ] || regExp[ 4 ];
191
- if ( numericOnly ) {
192
- if ( !newCharacter.match( /\d/ ) ) return;
193
- }
194
- if ( !newCharacter ) return;
195
-
196
- let newFormatValue = val_status.formatValue;
197
- newFormatValue[ index ] = newCharacter;
198
-
199
- set_status( {
200
- ...val_status,
201
- ...formatToData( newFormatValue ),
202
- eventType: 'update',
203
- eventID: $.uuidGen()
204
- } );
205
- nextFocusIndex = index + 1;
206
- } )();
207
- }
208
-
209
- if ( $.is.exist( nextFocusIndex ) ) {
210
- $( '#Digit-' + nextFocusIndex + '-' + val_status.componentID ).focus();
211
- }
212
- } }
213
- /> );
214
- }
215
-
216
- return ( <BoxWrapper
217
- val_status={ val_status }
218
- set_status={ set_status }
219
- val_validate={ val_validate }
220
- params={ params }
221
- >
222
- <Input.Hidden
223
- name={ name }
224
- data-input-type={ 'digitCharacters' }
225
- data-form={ form }
226
- data-validation={ val_validate.ok }
227
- componentID={ val_status.componentID }
228
- data-value={ val_status.dataValue }
229
- { ...others }
230
- />
231
- <Flex
232
- gap={ '1/2' }
233
- flexChilds='even'
234
- flexWrap={ false }
235
- flexSizing='auto'
236
- { ...listStyles }
237
- >
238
- { Digits }
239
- </Flex>
240
- </BoxWrapper> );
241
- }