amotify 0.0.44 → 0.0.46

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amotify",
3
- "version": "0.0.44",
3
+ "version": "0.0.46",
4
4
  "description": "UI Component for React",
5
5
  "main": "dist/launch.js",
6
6
  "types": "dist/@types.d.ts",
@@ -31,7 +31,7 @@ let YearOptions: {
31
31
  let maxYear = Number( params?.max ?? $.Time().addYear( 10 ).year );
32
32
 
33
33
  for ( let year = minYear; year <= maxYear; year++ ) {
34
- Years.push( {
34
+ Years.unshift( {
35
35
  value: year,
36
36
  label: [ year,...$.transformer.wareki( year ).value ].join( ' - ' ),
37
37
  // displayLabel: year + '年'
@@ -60,6 +60,13 @@ type YearValueTypes = {
60
60
  modifiedType: 'init' | 'override' | 'update'
61
61
  year: number
62
62
  }
63
+ type DateWarekiValueTypes = {
64
+ modifiedType: 'init' | 'override' | 'update'
65
+ era: amotify.fn.Input.Time.EraTypes
66
+ year: number
67
+ month: number
68
+ date: number
69
+ }
63
70
  type SendParams<T> = amotify.fn.Input.Time.PickerParams & {
64
71
  val_value: T
65
72
  set_value: React.Dispatch<React.SetStateAction<T>>
@@ -68,6 +75,7 @@ type SendParams<T> = amotify.fn.Input.Time.PickerParams & {
68
75
  export const Picker: React.FC<amotify.fn.Input.Time.PickerParams> = ( params ) => {
69
76
  let {
70
77
  restrict,
78
+ era = 'year',
71
79
  defaultValue = ''
72
80
  } = params;
73
81
  params = { ...params }
@@ -123,6 +131,19 @@ export const Picker: React.FC<amotify.fn.Input.Time.PickerParams> = ( params ) =
123
131
  modifiedType: 'init',
124
132
  year: Number( year )
125
133
  } as YearValueTypes;
134
+ } else if ( restrict == 'dateWareki' ) {
135
+ let [ year,month,date ] = String( defaultValue )?.split( /\D/ );
136
+ if ( $.is.nullish( year ) || $.is.nullish( month ) || $.is.nullish( date ) ) {
137
+ [ year,month,date ] = $.Time().toFormat( '%Y-%M-%D' ).split( '-' );
138
+ }
139
+
140
+ return {
141
+ modifiedType: 'init',
142
+ era: era || 'year',
143
+ year: Number( year ),
144
+ month: Number( month ),
145
+ date: Number( date )
146
+ } as DateWarekiValueTypes;
126
147
  }
127
148
 
128
149
  return {}
@@ -132,6 +153,7 @@ export const Picker: React.FC<amotify.fn.Input.Time.PickerParams> = ( params ) =
132
153
  if ( mounted.current ) {
133
154
  if ( val_value.modifiedType == 'update' ) {
134
155
  let sendValue = '';
156
+ let sendEra: amotify.fn.Input.Time.EraTypes = era || 'year';
135
157
 
136
158
  if ( restrict == 'clock' ) {
137
159
  let { hour,minutes } = val_value as ClockValueTypes;
@@ -156,8 +178,21 @@ export const Picker: React.FC<amotify.fn.Input.Time.PickerParams> = ( params ) =
156
178
  } else if ( restrict == 'year' ) {
157
179
  let { year } = val_value as YearValueTypes;
158
180
  sendValue = String( year );
181
+ } else if ( restrict == 'dateWareki' ) {
182
+ let {
183
+ year,
184
+ month,
185
+ date,
186
+ era
187
+ } = val_value as DateWarekiValueTypes;
188
+ sendEra = era;
189
+ sendValue = [
190
+ year,
191
+ month.zeroEmbed( 2 ),
192
+ date.zeroEmbed( 2 )
193
+ ].join( '/' );
159
194
  }
160
- params.onValueUpdate( sendValue );
195
+ params.onValueUpdate( sendValue,sendEra );
161
196
  }
162
197
  } else {
163
198
  mounted.current = true;
@@ -173,7 +208,7 @@ export const Picker: React.FC<amotify.fn.Input.Time.PickerParams> = ( params ) =
173
208
  return <Box
174
209
  backgroundColor={ '1.layer.base' }
175
210
  borderRadius={ '2.tone.secondary' }
176
- boxShadow={ 3 }
211
+ boxShadow={ 2 }
177
212
  border
178
213
  overflow='hidden'
179
214
  >
@@ -187,7 +222,7 @@ export const Picker: React.FC<amotify.fn.Input.Time.PickerParams> = ( params ) =
187
222
  : restrict == 'year' ? <Comps.Year._ { ...Params } />
188
223
  : restrict == 'dates' ? ''
189
224
  : restrict == 'months' ? ''
190
- : restrict == 'dateWareki' ? ''
225
+ : restrict == 'dateWareki' ? <Comps.DateWareki._ { ...Params } />
191
226
  : <></> }
192
227
  />
193
228
  </Box>;
@@ -844,7 +879,7 @@ const Comps = {
844
879
  >
845
880
  <Input.Select
846
881
  enableUnSelected={ false }
847
- value={ year }
882
+ value={ year || $.Time().year }
848
883
  override='force'
849
884
  options={ YearOptions( { min,max } ) }
850
885
  onUpdateValidValue={ ( { value } ) => {
@@ -857,14 +892,401 @@ const Comps = {
857
892
  <Comps.Variables.Footer
858
893
  tipsID={ tipsID! }
859
894
  onValueUpdate={ onValueUpdate }
895
+ onSubmit={ () => {
896
+ set_value( {
897
+ modifiedType: 'update',
898
+ year: Number( year || $.Time().year )
899
+ } );
900
+ } }
860
901
  />
861
902
  </Column>;
862
903
  }
863
904
  },
905
+ DateWareki: {
906
+ _: ( params: SendParams<DateWarekiValueTypes> ) => {
907
+ let {
908
+ min,max,
909
+ onValueUpdate,
910
+ tipsID,
911
+ val_value,
912
+ set_value
913
+ } = params;
914
+
915
+ let {
916
+ era,
917
+ year,
918
+ month,
919
+ date
920
+ } = val_value;
921
+
922
+ let Params = {
923
+ val_value,
924
+ set_value
925
+ }
926
+
927
+ return <Box>
928
+ <Row.Left
929
+ verticalAlign='unset'
930
+ borderBottom
931
+ gap={ 0 }
932
+ >
933
+ <Comps.DateWareki.EraSelect { ...Params } />
934
+ <Box borderRight />
935
+ <Comps.DateWareki.Calendar { ...Params } />
936
+ </Row.Left>
937
+ <Box
938
+ padding={ 1 }
939
+ >
940
+ <Comps.Variables.Footer
941
+ tipsID={ tipsID! }
942
+ onValueUpdate={ onValueUpdate }
943
+ />
944
+ </Box>
945
+ </Box>;
946
+ },
947
+ EraSelect: ( params: {
948
+ val_value: DateWarekiValueTypes
949
+ set_value: React.Dispatch<React.SetStateAction<DateWarekiValueTypes>>
950
+ } ) => {
951
+ let {
952
+ val_value,
953
+ set_value
954
+ } = params;
955
+
956
+ let styles: amotifyUniStyleParams = {
957
+ padding: [ '1/2',1.5 ],
958
+ fontColor: '3.blur'
959
+ }
960
+ let isActiveStyles: amotifyUniStyleParams = {
961
+ backgroundColor: 'cloud',
962
+ fontColor: '2.normal',
963
+ isBoldFont: true
964
+ }
965
+
966
+ return <Column
967
+ gap={ 0 }
968
+ padding={ 1 }
969
+ >
970
+ <Buttons.Button.Clear.R
971
+ color='cloud'
972
+ { ...styles }
973
+ isActiveStyles={ isActiveStyles }
974
+ isActive={ val_value.era == 'year' }
975
+ onClick={ () => {
976
+ let today = $.Time();
977
+ set_value( {
978
+ modifiedType: 'update',
979
+ era: 'year',
980
+ year: today.year,month: today.month,date: today.date
981
+ } );
982
+ } }
983
+ >
984
+ 西暦
985
+ </Buttons.Button.Clear.R>
986
+ <Buttons.Button.Clear.R
987
+ color='cloud'
988
+ { ...styles }
989
+ isActiveStyles={ isActiveStyles }
990
+ isActive={ val_value.era == 'reiwa' }
991
+ onClick={ () => {
992
+ let today = $.Time();
993
+ set_value( {
994
+ modifiedType: 'update',
995
+ era: 'reiwa',
996
+ year: today.year,month: today.month,date: today.date
997
+ } );
998
+ } }
999
+ >
1000
+ 令和
1001
+ </Buttons.Button.Clear.R>
1002
+ <Buttons.Button.Clear.R
1003
+ color='cloud'
1004
+ { ...styles }
1005
+ isActiveStyles={ isActiveStyles }
1006
+ isActive={ val_value.era == 'heisei' }
1007
+ onClick={ () => {
1008
+ set_value( {
1009
+ modifiedType: 'update',
1010
+ era: 'heisei',
1011
+ year: 2019,month: 1,date: 1
1012
+ } );
1013
+ } }
1014
+ >
1015
+ 平成
1016
+ </Buttons.Button.Clear.R>
1017
+ <Buttons.Button.Clear.R
1018
+ color='cloud'
1019
+ { ...styles }
1020
+ isActiveStyles={ isActiveStyles }
1021
+ isActive={ val_value.era == 'shouwa' }
1022
+ onClick={ () => {
1023
+ set_value( {
1024
+ modifiedType: 'update',
1025
+ era: 'shouwa',
1026
+ year: 1989,month: 1,date: 1
1027
+ } );
1028
+ } }
1029
+ >
1030
+ 昭和
1031
+ </Buttons.Button.Clear.R>
1032
+ <Buttons.Button.Clear.R
1033
+ color='cloud'
1034
+ { ...styles }
1035
+ isActiveStyles={ isActiveStyles }
1036
+ isActive={ val_value.era == 'taisho' }
1037
+ onClick={ () => {
1038
+ set_value( {
1039
+ modifiedType: 'update',
1040
+ era: 'taisho',
1041
+ year: 1926,month: 1,date: 1
1042
+ } );
1043
+ } }
1044
+ >
1045
+ 大正
1046
+ </Buttons.Button.Clear.R>
1047
+ <Buttons.Button.Clear.R
1048
+ color='cloud'
1049
+ { ...styles }
1050
+ isActiveStyles={ isActiveStyles }
1051
+ isActive={ val_value.era == 'meiji' }
1052
+ onClick={ () => {
1053
+ set_value( {
1054
+ modifiedType: 'update',
1055
+ era: 'meiji',
1056
+ year: 1912,month: 1,date: 1
1057
+ } );
1058
+ } }
1059
+ >
1060
+ 明治
1061
+ </Buttons.Button.Clear.R>
1062
+ </Column>;
1063
+ },
1064
+ Calendar: ( params: {
1065
+ val_value: DateWarekiValueTypes
1066
+ set_value: React.Dispatch<React.SetStateAction<DateWarekiValueTypes>>
1067
+ } ) => {
1068
+ let {
1069
+ val_value,
1070
+ set_value
1071
+ } = params;
1072
+
1073
+ let yearOptions: amotify.fn.Input.Select.OptionProps[] = [];
1074
+ if ( val_value.era == 'year' ) {
1075
+ for ( let i = 1900; i < 2100; i++ ) yearOptions.unshift( { value: i,label: i + '年' } );
1076
+ } else if ( val_value.era == 'reiwa' ) {
1077
+ let thisReiwaYear = $.Time().year - 2018;
1078
+ for ( let i = 1; i <= thisReiwaYear + 10; i++ ) yearOptions.unshift( { value: 2019 + i - 1,label: '令和' + ( i == 1 ? '元' : i ) + '年' } );
1079
+ } else if ( val_value.era == 'heisei' ) {
1080
+ for ( let i = 1; i <= 31; i++ ) yearOptions.unshift( { value: 1989 + i - 1,label: '平成' + ( i == 1 ? '元' : i ) + '年' } );
1081
+ } else if ( val_value.era == 'shouwa' ) {
1082
+ for ( let i = 1; i <= 64; i++ ) yearOptions.unshift( { value: 1926 + i - 1,label: '昭和' + ( i == 1 ? '元' : i ) + '年' } );
1083
+ } else if ( val_value.era == 'taisho' ) {
1084
+ for ( let i = 1; i <= 15; i++ ) yearOptions.unshift( { value: 1912 + i - 1,label: '大正' + ( i == 1 ? '元' : i ) + '年' } );
1085
+ } else if ( val_value.era == 'meiji' ) {
1086
+ for ( let i = 1; i <= 45; i++ ) yearOptions.unshift( { value: 1868 + i - 1,label: '明治' + ( i == 1 ? '元' : i ) + '年' } );
1087
+ }
1088
+
1089
+ return <Column
1090
+ padding={ 1 }
1091
+ key={ val_value.era }
1092
+ >
1093
+ <Row.Separate>
1094
+ <Input.Select
1095
+ tone='cloud'
1096
+ enableUnSelected={ false }
1097
+ override='force'
1098
+ border='1.thin'
1099
+ padding={ [ '1/3','2/3' ] }
1100
+ paddingRight={ 2 }
1101
+ rightIconStyles={ { right: '1/3' } }
1102
+ options={ yearOptions }
1103
+ value={ val_value.year }
1104
+ onUpdateValidValue={ ( { value } ) => {
1105
+ set_value( {
1106
+ ...val_value,
1107
+ modifiedType: 'update',
1108
+ year: Number( value )
1109
+ } );
1110
+ } }
1111
+ />
1112
+ <Row.Center
1113
+ gap={ '1/3' }
1114
+ >
1115
+ <Buttons.Button.Clear.S
1116
+ ssSphere={ 2 }
1117
+ onClick={ () => {
1118
+ let nextMonth = val_value.month - 1;
1119
+ set_value( {
1120
+ modifiedType: 'update',
1121
+ era: val_value.era,
1122
+ year: nextMonth == 0 ? val_value.year - 1 : val_value.year,
1123
+ month: nextMonth == 0 ? 12 : nextMonth,
1124
+ date: 1
1125
+ } );
1126
+ } }
1127
+ >
1128
+ <FAI.ChevronLeft />
1129
+ </Buttons.Button.Clear.S>
1130
+ <Input.Select
1131
+ tone='cloud'
1132
+ enableUnSelected={ false }
1133
+ override='force'
1134
+ border='1.thin'
1135
+ padding={ [ '1/3','2/3' ] }
1136
+ paddingRight={ 2 }
1137
+ rightIconStyles={ { right: '1/3' } }
1138
+ options={ [
1139
+ { value: 1,label: '1月' },
1140
+ { value: 2,label: '2月' },
1141
+ { value: 3,label: '3月' },
1142
+ { value: 4,label: '4月' },
1143
+ { value: 5,label: '5月' },
1144
+ { value: 6,label: '6月' },
1145
+ { value: 7,label: '7月' },
1146
+ { value: 8,label: '8月' },
1147
+ { value: 9,label: '9月' },
1148
+ { value: 10,label: '10月' },
1149
+ { value: 11,label: '11月' },
1150
+ { value: 12,label: '12月' }
1151
+ ] }
1152
+ value={ val_value.month }
1153
+ onUpdateValidValue={ ( { value } ) => {
1154
+ set_value( {
1155
+ modifiedType: 'update',
1156
+ era: val_value.era,
1157
+ year: val_value.year,
1158
+ month: Number( value ),
1159
+ date: 1
1160
+ } );
1161
+ } }
1162
+ />
1163
+ <Buttons.Button.Clear.S
1164
+ ssSphere={ 2 }
1165
+ onClick={ () => {
1166
+ let nextMonth = val_value.month + 1;
1167
+ set_value( {
1168
+ modifiedType: 'update',
1169
+ era: val_value.era,
1170
+ year: nextMonth == 13 ? val_value.year + 1 : val_value.year,
1171
+ month: nextMonth == 13 ? 1 : nextMonth,
1172
+ date: 1
1173
+ } );
1174
+ } }
1175
+ >
1176
+ <FAI.ChevronRight />
1177
+ </Buttons.Button.Clear.S>
1178
+ </Row.Center>
1179
+ </Row.Separate>
1180
+ <Comps.DateWareki.MonthCell { ...params } />
1181
+ </Column>;
1182
+ },
1183
+ MonthCell: ( params: {
1184
+ val_value: DateWarekiValueTypes
1185
+ set_value: React.Dispatch<React.SetStateAction<DateWarekiValueTypes>>
1186
+ } ) => {
1187
+ let {
1188
+ val_value,
1189
+ set_value
1190
+ } = params;
1191
+ let targetDate = $.Time( [
1192
+ val_value.year.zeroEmbed( 4 ),
1193
+ val_value.month.zeroEmbed( 2 ),
1194
+ val_value.date.zeroEmbed( 2 )
1195
+ ].join( '/' ) );
1196
+
1197
+ if ( !targetDate.validate ) return;
1198
+
1199
+ let weekdayOfFirstDay = targetDate.getFirstDayOfTheMonth().weekday;
1200
+ let lastDayOfTheMonth = targetDate.getLastDayOfTheMonth();
1201
+
1202
+ let Cells: ReactElement[] = [];
1203
+ for ( let i = 0; i < 7; i++ ) {
1204
+ Cells.push( <Text.Supplement
1205
+ flexCenter
1206
+ fontColor={ i == 0 ? 'googleRed' : i == 6 ? 'googleBlue' : '3.blur' }
1207
+ >
1208
+ { $.transformer.weekday.shortJP( i ) }
1209
+ </Text.Supplement> );
1210
+ }
1211
+
1212
+ for ( let i = 0; i < weekdayOfFirstDay; i++ ) {
1213
+ let date = $.Time( targetDate ).getFirstDayOfTheMonth().addDate( i - weekdayOfFirstDay );
1214
+ Cells.push( <Buttons.Button.Sub.R
1215
+ color='cloud'
1216
+ border='1.thin'
1217
+ ssSquare={ 3 }
1218
+ opacity='middle'
1219
+ onClick={ ( e ) => {
1220
+ e.preventDefault();
1221
+ e.stopPropagation();
1222
+
1223
+ set_value( {
1224
+ modifiedType: 'update',
1225
+ era: val_value.era,
1226
+ year: date.year,
1227
+ month: date.month,
1228
+ date: date.date
1229
+ } );
1230
+ } }
1231
+ >
1232
+ { date.date }
1233
+ </Buttons.Button.Sub.R> );
1234
+ }
1235
+ for ( let i = 1; i <= lastDayOfTheMonth.date; i++ ) {
1236
+ let date = $.Time( targetDate ).setDate( i );
1237
+ Cells.push( <Buttons.Button.Border.R
1238
+ ssSquare={ 3 }
1239
+ onClick={ () => {
1240
+ set_value( {
1241
+ modifiedType: 'update',
1242
+ era: val_value.era,
1243
+ year: date.year,
1244
+ month: date.month,
1245
+ date: date.date
1246
+ } );
1247
+ } }
1248
+ >
1249
+ { date.date }
1250
+ </Buttons.Button.Border.R> );
1251
+ }
1252
+ for ( let i = 0; i < 7 - lastDayOfTheMonth.weekday - 1; i++ ) {
1253
+ let date = $.Time( targetDate ).addMonth( 1 ).setDate( 1 ).addDate( i );
1254
+ Cells.push( <Buttons.Button.Sub.R
1255
+ color='cloud'
1256
+ border='1.thin'
1257
+ ssSquare={ 3 }
1258
+ opacity='middle'
1259
+ onClick={ ( e ) => {
1260
+ e.preventDefault();
1261
+ e.stopPropagation();
1262
+ set_value( {
1263
+ modifiedType: 'update',
1264
+ era: val_value.era,
1265
+ year: date.year,
1266
+ month: date.month,
1267
+ date: date.date
1268
+ } );
1269
+ } }
1270
+ >
1271
+ { date.date }
1272
+ </Buttons.Button.Sub.R> );
1273
+ }
1274
+
1275
+ return <Grid
1276
+ gridCols={ 7 }
1277
+ gap={ '1/4' }
1278
+ >
1279
+ { Cells }
1280
+ </Grid>;
1281
+ }
1282
+ },
864
1283
  Variables: {
865
1284
  Footer: ( params: {
866
1285
  tipsID: string
867
1286
  onValueUpdate: any
1287
+ onSubmit?: {
1288
+ (): void
1289
+ }
868
1290
  } ) => {
869
1291
  return <Flex
870
1292
  flexWrap={ false }
@@ -887,6 +1309,7 @@ const Comps = {
887
1309
  <Buttons.Button.Prime.R
888
1310
  flexSizing={ 'auto' }
889
1311
  onClick={ () => {
1312
+ params.onSubmit && params.onSubmit();
890
1313
  Tooltips.close( params.tipsID );
891
1314
  } }
892
1315
  tabIndex={ -1 }
@@ -122,12 +122,19 @@ const DataLeveling = ( params: {
122
122
  if ( i == 0 && restrict == 'dateWareki' ) {
123
123
  let Year = Number( v );
124
124
  if ( era != 'year' ) {
125
- if ( Year >= 2019 ) Year -= 2019;
126
- else if ( Year >= 1989 ) Year -= 1989;
127
- else if ( Year >= 1926 ) Year -= 1926;
128
- else if ( Year >= 1912 ) Year -= 1912;
129
- else if ( Year >= 1868 ) Year -= 1868;
130
- Year += 1;
125
+ if ( Year >= 2019 ) {
126
+ if ( era == 'reiwa' ) Year -= ( 2019 - 1 );
127
+ else if ( era == 'heisei' ) Year = 31;
128
+ } else if ( Year >= 1989 ) {
129
+ if ( era == 'heisei' ) Year -= ( 1989 - 1 );
130
+ else if ( era == 'shouwa' ) Year = 64;
131
+ } else if ( Year >= 1926 ) {
132
+ if ( era == 'shouwa' ) Year -= ( 1926 - 1 );
133
+ else if ( era == 'taisho' ) Year = 15;
134
+ } else if ( Year >= 1912 ) {
135
+ if ( era == 'taisho' ) Year -= ( 1912 - 1 );
136
+ else if ( era == 'meiji' ) Year = 45;
137
+ } else if ( Year >= 1868 ) Year -= ( 1868 - 1 );
131
138
  }
132
139
  v = Year.zeroEmbed( 4 );
133
140
  }
@@ -372,6 +379,9 @@ export const TimeInput: React.FC<amotify.fn.Input.Time.OriginParams> = ( params
372
379
  era: val_era
373
380
  } )
374
381
  } );
382
+
383
+ let ParentComponent = useStore.get( 'refreshEra_' + val_status.componentID );
384
+ ParentComponent && ParentComponent.refreshEra( val_era );
375
385
  } else {
376
386
  mounted.current = true;
377
387
  }
@@ -389,17 +399,19 @@ export const TimeInput: React.FC<amotify.fn.Input.Time.OriginParams> = ( params
389
399
  restrict,
390
400
  min,max,
391
401
  defaultValue: val_status.dataValue,
392
- onValueUpdate: ( value ) => {
402
+ era: val_era,
403
+ onValueUpdate: ( value,era ) => {
393
404
  set_status( {
394
405
  ...val_status,
395
406
  ...DataLeveling( {
396
407
  restrict,
397
- value: value,
398
- era: val_era!
408
+ value,
409
+ era
399
410
  } ),
400
411
  eventType: 'update',
401
412
  eventID: $.uuidGen()
402
413
  } );
414
+ set_era( era );
403
415
  }
404
416
  } );
405
417
  },
@@ -702,9 +714,10 @@ export const TimeFNs: amotify.fn.Input.Time.FNTypes = {
702
714
  picker: {
703
715
  launch: ( params ) => {
704
716
  let tipsID = params.tipsID || $.uuidGen();
717
+
705
718
  Tooltips.open( {
706
719
  gravityPoint: params.gravityPoint || 24,
707
- padding: [ 1,0 ],
720
+ padding: '1/2',
708
721
  tipsID,
709
722
  ...params,
710
723
  close_option: {
@@ -716,10 +729,11 @@ export const TimeFNs: amotify.fn.Input.Time.FNTypes = {
716
729
  restrict={ params.restrict }
717
730
  min={ params.min }
718
731
  max={ params.max }
732
+ era={ params.era }
719
733
  defaultValue={ params.defaultValue }
720
734
  tipsID={ tipsID }
721
- onValueUpdate={ ( value ) => {
722
- params.onValueUpdate( value );
735
+ onValueUpdate={ ( value,era ) => {
736
+ params.onValueUpdate( value,era );
723
737
  } }
724
738
  />
725
739
  } )
@@ -236,36 +236,50 @@ const TimeInputs: amotify.fn.Input.Time.Methods & {
236
236
  defaultEra = 'wareki',
237
237
  } = params;
238
238
 
239
- let era = 'year' as amotify.fn.Input.Time.EraTypes;
240
-
241
- if ( defaultEra == 'wareki' ) {
242
- era = 'reiwa';
243
- if ( params.value ) {
244
- let [ year,month,date ] = params.value.split( /\D/ );
245
- if ( year && month && date ) {
246
- let Year = Number( year );
247
- if ( Year >= 2019 ) {
248
- Year -= 2019,era = 'reiwa';
249
- } else if ( Year >= 1989 ) {
250
- Year -= 1989,era = 'heisei';
251
- } else if ( Year >= 1926 ) {
252
- Year -= 1926,era = 'shouwa';
253
- } else if ( Year >= 1912 ) {
254
- Year -= 1912,era = 'taisho';
255
- } else if ( Year >= 1868 ) {
256
- Year -= 1868,era = 'meiji';
239
+ let [ val_era,set_era ] = React.useState<amotify.fn.Input.Time.EraTypes>( ( () => {
240
+ let era: amotify.fn.Input.Time.EraTypes = 'year';
241
+ if ( defaultEra == 'wareki' ) {
242
+ era = 'reiwa';
243
+ if ( params.value ) {
244
+ let [ year,month,date ] = params.value.split( /\D/ );
245
+ if ( year && month && date ) {
246
+ let Year = Number( year );
247
+ if ( Year >= 2019 ) {
248
+ Year -= 2019,era = 'reiwa';
249
+ } else if ( Year >= 1989 ) {
250
+ Year -= 1989,era = 'heisei';
251
+ } else if ( Year >= 1926 ) {
252
+ Year -= 1926,era = 'shouwa';
253
+ } else if ( Year >= 1912 ) {
254
+ Year -= 1912,era = 'taisho';
255
+ } else if ( Year >= 1868 ) {
256
+ Year -= 1868,era = 'meiji';
257
+ }
258
+ Year += 1;
257
259
  }
258
- Year += 1;
259
260
  }
260
261
  }
261
- }
262
+ return era;
263
+ } )() as amotify.fn.Input.Time.EraTypes );
264
+
265
+ React.useEffect( () => {
266
+ useStore.set( {
267
+ key: 'refreshEra_' + val_componentID,
268
+ value: {
269
+ refreshEra: ( value: amotify.fn.Input.Time.EraTypes ) => {
270
+ set_era( value );
271
+ }
272
+ }
273
+ } );
274
+ },[] );
262
275
 
263
276
  return <TimeInputs.Origin
264
277
  restrict='dateWareki'
265
278
  leftIndicator={ <Input.Select
266
279
  enableUnSelected={ false }
267
- value={ era }
280
+ value={ val_era }
268
281
  tone={ params.tone }
282
+ override='force'
269
283
  flexCenter
270
284
  borderTopRightRadius={ '2/3' }
271
285
  borderBottomRightRadius={ '2/3' }
@@ -282,14 +296,13 @@ const TimeInputs: amotify.fn.Input.Time.Methods & {
282
296
  { value: 'meiji',label: '明治' }
283
297
  ] }
284
298
  onUpdateValidValue={ ( { value,eventType } ) => {
299
+ set_era( value );
285
300
  let component = useStore.get( params.componentID! );
286
-
287
- if ( component && component.resetEra ) component.resetEra( value );
301
+ component && component.resetEra && component.resetEra( value );
288
302
  } }
289
- // rightIcon={ false }
290
303
  /> }
291
304
  { ...params }
292
- era={ era }
305
+ era={ val_era }
293
306
  />;
294
307
  },
295
308
  Periods: {