@@ -21,14 +21,21 @@ export type configChangeParams = {
21
21
chart ?: string ;
22
22
margin ?: string ;
23
23
padding ?: string ;
24
- gridColumns ?: string ; // Added By Aqib Mirza
25
24
borderStyle ?: string ;
26
25
borderColor ?: string ;
27
26
borderWidth ?: string ;
28
27
fontFamily ?: string ;
29
28
components ?: Record < string , object > ,
30
29
showComponentLoadingIndicators ?: boolean ;
31
30
showDataLoadingIndicators ?: boolean ;
31
+ gridColumns ?: string ;
32
+ gridRowHeight ?: string ;
33
+ gridPadding ?: string ;
34
+ gridBgImage ?: string ;
35
+ gridBgImageRepeat ?: string ;
36
+ gridBgImageSize ?: string ;
37
+ gridBgImagePosition ?: string ;
38
+ gridBgImageOrigin ?: string ;
32
39
} ;
33
40
34
41
type ColorConfigProps = {
@@ -47,10 +54,16 @@ type ColorConfigProps = {
47
54
fontFamily ?: string ;
48
55
margin ?: string ;
49
56
padding ?: string ;
50
- gridColumns ?: string ; // Added By Aqib Mirza
51
57
showComponentLoadingIndicators ?: boolean ;
52
58
showDataLoadingIndicators ?: boolean ;
53
- canvasItemValue ?: string ;
59
+ gridColumns ?: string ;
60
+ gridRowHeight ?: string ;
61
+ gridPadding ?: string ;
62
+ gridBgImage ?: string ;
63
+ gridBgImageRepeat ?: string ;
64
+ gridBgImageSize ?: string ;
65
+ gridBgImagePosition ?: string ;
66
+ gridBgImageOrigin ?: string ;
54
67
} ;
55
68
56
69
export default function ThemeSettingsSelector ( props : ColorConfigProps ) {
@@ -64,29 +77,41 @@ export default function ThemeSettingsSelector(props: ColorConfigProps) {
64
77
showVarName = true ,
65
78
margin : defaultMargin ,
66
79
padding : defaultPadding ,
67
- gridColumns : defaultGridColumns ,
68
80
borderStyle : defaultBorderStyle ,
69
81
borderWidth : defaultBorderWidth ,
70
82
borderColor : defaultBorderColor ,
71
83
fontFamily : defaultFontFamily ,
72
84
showComponentLoadingIndicators : defaultShowComponentLoaders ,
73
85
showDataLoadingIndicators : defaultShowDataLoaders ,
74
- canvasItemValue : defaultCanvasItemValue ,
86
+ gridColumns : defaultGridColumns ,
87
+ gridRowHeight : defaultGridRowHeight ,
88
+ gridPadding : defaultGridPadding ,
89
+ gridBgImage : defaultGridBgImage ,
90
+ gridBgImageRepeat : defaultGridBgImageRepeat ,
91
+ gridBgImageSize : defaultGridBgImageSize ,
92
+ gridBgImagePosition : defaultGridBgImagePosition ,
93
+ gridBgImageOrigin : defaultGridBgImageOrigin ,
75
94
} = props ;
76
95
77
96
const configChangeWithDebounce = _ . debounce ( configChange , 0 ) ;
78
97
const [ color , setColor ] = useState ( defaultColor ) ;
79
98
const [ radius , setRadius ] = useState ( defaultRadius ) ;
80
99
const [ margin , setMargin ] = useState ( defaultMargin ) ;
81
100
const [ padding , setPadding ] = useState ( defaultPadding ) ;
82
- const [ gridColumns , setGridColumns ] = useState ( defaultGridColumns ) ;
83
101
const [ borderStyle , setBorderStyle ] = useState ( defaultBorderStyle ) ;
84
102
const [ borderWidth , setBorderWidth ] = useState ( defaultBorderWidth ) ;
85
103
const [ borderColor , setBorderColor ] = useState ( defaultBorderColor ) ;
86
104
const [ fontFamily , setFontFamily ] = useState ( defaultFontFamily ) ;
87
105
const [ showComponentLoaders , setComponentLoaders ] = useState ( defaultShowComponentLoaders ) ;
88
106
const [ showDataLoaders , setDataLoaders ] = useState ( defaultShowDataLoaders ) ;
89
- const [ canvasValue , setCanvasValue ] = useState ( defaultCanvasItemValue ) ;
107
+ const [ gridColumns , setGridColumns ] = useState ( defaultGridColumns ) ;
108
+ const [ gridRowHeight , setGridRowHeight ] = useState ( defaultGridRowHeight ) ;
109
+ const [ gridPadding , setGridPadding ] = useState ( defaultGridPadding ) ;
110
+ const [ gridBgImage , setGridBgImage ] = useState ( defaultGridBgImage ) ;
111
+ const [ gridBgImageRepeat , setGridBgImageRepeat ] = useState ( defaultGridBgImageRepeat ) ;
112
+ const [ gridBgImageSize , setGridBgImageSize ] = useState ( defaultGridBgImageSize ) ;
113
+ const [ gridBgImagePosition , setGridBgImagePosition ] = useState ( defaultGridBgImagePosition ) ;
114
+ const [ gridBgImageOrigin , setGridBgImageOrigin ] = useState ( defaultGridBgImageOrigin ) ;
90
115
91
116
const varName = `(${ themeSettingKey } )` ;
92
117
@@ -139,20 +164,15 @@ export default function ThemeSettingsSelector(props: ColorConfigProps) {
139
164
result = padding ;
140
165
} else {
141
166
result = "3px" ;
142
- }
143
- setPadding ( result ) ;
144
- configChange ( { themeSettingKey, padding : result } ) ;
145
- } ;
167
+ }
146
168
147
- const gridColumnsInputBlur = ( gridColumns : string ) => {
148
- let result = "" ;
149
- if ( ! gridColumns ) {
150
- result = "24" ;
151
- } else {
152
- result = gridColumns ;
169
+ if ( themeSettingKey === 'gridPadding' ) {
170
+ setGridPadding ( result ) ;
171
+ configChange ( { themeSettingKey, gridPadding : result } ) ;
172
+ return ;
153
173
}
154
- setGridColumns ( result ) ;
155
- configChange ( { themeSettingKey, gridColumns : result } ) ;
174
+ setPadding ( result ) ;
175
+ configChange ( { themeSettingKey, padding : result } ) ;
156
176
} ;
157
177
158
178
const borderStyleInputBlur = ( borderStyle : string ) => {
@@ -197,6 +217,46 @@ export default function ThemeSettingsSelector(props: ColorConfigProps) {
197
217
configChange ( { themeSettingKey, fontFamily : result } ) ;
198
218
} ;
199
219
220
+ const gridSizeInputBlur = ( value : string ) => {
221
+ let result = "" ;
222
+ if ( ! value ) {
223
+ result = themeSettingKey === 'gridRowHeight' ? '8' : '24' ;
224
+ } else {
225
+ result = value ;
226
+ }
227
+ if ( themeSettingKey === 'gridRowHeight' ) {
228
+ setGridRowHeight ( result ) ;
229
+ configChange ( { themeSettingKey, gridRowHeight : result } ) ;
230
+ return ;
231
+ }
232
+ setGridColumns ( result ) ;
233
+ configChange ( { themeSettingKey, gridColumns : result } ) ;
234
+ } ;
235
+
236
+ const gridBackgroundInputBlur = ( value : string ) => {
237
+ switch ( themeSettingKey ) {
238
+ case 'gridBgImage' :
239
+ setGridBgImage ( value ) ;
240
+ configChange ( { themeSettingKey, gridBgImage : value } ) ;
241
+ break ;
242
+ case 'gridBgImageRepeat' :
243
+ setGridBgImageRepeat ( value || 'no-repeat' ) ;
244
+ configChange ( { themeSettingKey, gridBgImageRepeat : value } ) ;
245
+ break ;
246
+ case 'gridBgImageSize' :
247
+ setGridBgImageSize ( value || "cover" ) ;
248
+ configChange ( { themeSettingKey, gridBgImageSize : value } ) ;
249
+ break ;
250
+ case 'gridBgImagePosition' :
251
+ setGridBgImagePosition ( value || "center" ) ;
252
+ configChange ( { themeSettingKey, gridBgImagePosition : value } ) ;
253
+ break ;
254
+ case 'gridBgImageOrigin' :
255
+ setGridBgImageOrigin ( value || 'padding-box' ) ;
256
+ configChange ( { themeSettingKey, gridBgImageOrigin : value } ) ;
257
+ break ;
258
+ }
259
+ }
200
260
201
261
useEffect ( ( ) => {
202
262
if ( color && isValidColor ( color ) ) {
@@ -248,10 +308,6 @@ export default function ThemeSettingsSelector(props: ColorConfigProps) {
248
308
setDataLoaders ( defaultShowDataLoaders ) ;
249
309
} , [ defaultShowDataLoaders ] ) ;
250
310
251
- useEffect ( ( ) => {
252
- setCanvasValue ( defaultCanvasItemValue ) ;
253
- } , [ defaultCanvasItemValue ] ) ;
254
-
255
311
return (
256
312
< ConfigItem className = { props . className } >
257
313
{ themeSettingKey !== "showDataLoadingIndicators"
@@ -268,12 +324,19 @@ export default function ThemeSettingsSelector(props: ColorConfigProps) {
268
324
{ themeSettingKey !== "radius" &&
269
325
themeSettingKey !== "margin" &&
270
326
themeSettingKey !== "padding" &&
271
- themeSettingKey !== "gridColumns" &&
272
327
themeSettingKey !== "borderStyle" &&
273
328
themeSettingKey !== "borderWidth" &&
274
329
themeSettingKey !== "fontFamily" &&
275
330
themeSettingKey !== "showComponentLoadingIndicators" &&
276
- themeSettingKey !== "showDataLoadingIndicators" && (
331
+ themeSettingKey !== "showDataLoadingIndicators" &&
332
+ themeSettingKey !== "gridColumns" &&
333
+ themeSettingKey !== "gridRowHeight" &&
334
+ themeSettingKey !== "gridPadding" &&
335
+ themeSettingKey !== "gridBgImage" &&
336
+ themeSettingKey !== "gridBgImageRepeat" &&
337
+ themeSettingKey !== "gridBgImageSize" &&
338
+ themeSettingKey !== "gridBgImagePosition" &&
339
+ themeSettingKey !== "gridBgImageOrigin" && (
277
340
< div className = "config-input" >
278
341
< ColorSelect
279
342
changeColor = { _ . debounce ( setColor , 500 , {
@@ -396,25 +459,6 @@ export default function ThemeSettingsSelector(props: ColorConfigProps) {
396
459
</ div >
397
460
) }
398
461
399
- { themeSettingKey === "gridColumns" && (
400
- < div className = "config-input" >
401
- < GridColumns $gridColumns = { defaultGridColumns || "24" } >
402
- < div >
403
- < TableCellsIcon title = "" />
404
- </ div >
405
- </ GridColumns >
406
-
407
- < Slider
408
- style = { { width : "90%" , margin : "8px 5% 0 5%" } }
409
- min = { 8 } // Define the minimum value for the slider
410
- max = { 48 } // Define the maximum value for the slider
411
- value = { parseInt ( gridColumns || "24" ) }
412
- onChange = { ( value ) => setGridColumns ( value . toString ( ) ) }
413
- onChangeComplete = { ( value ) => gridColumnsInputBlur ( value . toString ( ) ) }
414
- />
415
- </ div >
416
- ) }
417
-
418
462
{ themeSettingKey === "fontFamily" && (
419
463
< div className = "config-input" >
420
464
< TacoInput
@@ -460,6 +504,116 @@ export default function ThemeSettingsSelector(props: ColorConfigProps) {
460
504
< span > { name } </ span >
461
505
</ div >
462
506
) }
507
+
508
+ { themeSettingKey === "gridColumns" && (
509
+ < div className = "config-input" >
510
+ < GridColumns $gridColumns = { defaultGridColumns || "24" } >
511
+ < div >
512
+ < TableCellsIcon title = "" />
513
+ </ div >
514
+ </ GridColumns >
515
+
516
+ < Slider
517
+ style = { { width : "90%" , margin : "8px 5% 0 5%" } }
518
+ min = { 8 } // Define the minimum value for the slider
519
+ max = { 48 } // Define the maximum value for the slider
520
+ value = { parseInt ( gridColumns || "24" ) }
521
+ onChange = { ( value ) => setGridColumns ( value . toString ( ) ) }
522
+ onChangeComplete = { ( value ) => gridSizeInputBlur ( value . toString ( ) ) }
523
+ />
524
+ </ div >
525
+ ) }
526
+
527
+ { themeSettingKey === "gridRowHeight" && (
528
+ < div className = "config-input" >
529
+ < GridColumns $gridColumns = { defaultGridColumns || "24" } >
530
+ < div >
531
+ < TableCellsIcon title = "" />
532
+ </ div >
533
+ </ GridColumns >
534
+
535
+ < Slider
536
+ style = { { width : "90%" , margin : "8px 5% 0 5%" } }
537
+ min = { 6 } // Define the minimum value for the slider
538
+ max = { 16 } // Define the maximum value for the slider
539
+ value = { parseInt ( gridRowHeight || "8" ) }
540
+ onChange = { ( value ) => setGridRowHeight ( value . toString ( ) ) }
541
+ onChangeComplete = { ( value ) => gridSizeInputBlur ( value . toString ( ) ) }
542
+ />
543
+ </ div >
544
+ ) }
545
+
546
+ { themeSettingKey === "gridPadding" && (
547
+ < div className = "config-input" >
548
+ < Padding $padding = { defaultGridPadding || "0px" } >
549
+ < div > < CompressIcon title = "" /> </ div >
550
+ </ Padding >
551
+ < TacoInput
552
+ value = { gridPadding }
553
+ onChange = { ( e ) => setGridPadding ( e . target . value ) }
554
+ onBlur = { ( e ) => paddingInputBlur ( e . target . value ) }
555
+ onKeyUp = { ( e ) =>
556
+ e . nativeEvent . key === "Enter" &&
557
+ paddingInputBlur ( e . currentTarget . value )
558
+ }
559
+ />
560
+ </ div >
561
+ ) }
562
+
563
+ { themeSettingKey === "gridBgImage" && (
564
+ < div className = "config-input" >
565
+ < TacoInput
566
+ value = { gridBgImage }
567
+ onChange = { ( e ) => setGridBgImage ( e . target . value ) }
568
+ onBlur = { ( e ) => gridBackgroundInputBlur ( e . target . value ) }
569
+ onKeyUp = { ( e ) => e . nativeEvent . key === "Enter" && gridBackgroundInputBlur ( e . currentTarget . value ) }
570
+ />
571
+ </ div >
572
+ ) }
573
+
574
+ { themeSettingKey === "gridBgImageRepeat" && (
575
+ < div className = "config-input" >
576
+ < TacoInput
577
+ value = { gridBgImageRepeat }
578
+ onChange = { ( e ) => setGridBgImageRepeat ( e . target . value ) }
579
+ onBlur = { ( e ) => gridBackgroundInputBlur ( e . target . value ) }
580
+ onKeyUp = { ( e ) => e . nativeEvent . key === "Enter" && gridBackgroundInputBlur ( e . currentTarget . value ) }
581
+ />
582
+ </ div >
583
+ ) }
584
+
585
+ { themeSettingKey === "gridBgImageSize" && (
586
+ < div className = "config-input" >
587
+ < TacoInput
588
+ value = { gridBgImageSize }
589
+ onChange = { ( e ) => setGridBgImageSize ( e . target . value ) }
590
+ onBlur = { ( e ) => gridBackgroundInputBlur ( e . target . value ) }
591
+ onKeyUp = { ( e ) => e . nativeEvent . key === "Enter" && gridBackgroundInputBlur ( e . currentTarget . value ) }
592
+ />
593
+ </ div >
594
+ ) }
595
+
596
+ { themeSettingKey === "gridBgImagePosition" && (
597
+ < div className = "config-input" >
598
+ < TacoInput
599
+ value = { gridBgImagePosition }
600
+ onChange = { ( e ) => setGridBgImagePosition ( e . target . value ) }
601
+ onBlur = { ( e ) => gridBackgroundInputBlur ( e . target . value ) }
602
+ onKeyUp = { ( e ) => e . nativeEvent . key === "Enter" && gridBackgroundInputBlur ( e . currentTarget . value ) }
603
+ />
604
+ </ div >
605
+ ) }
606
+
607
+ { themeSettingKey === "gridBgImageOrigin" && (
608
+ < div className = "config-input" >
609
+ < TacoInput
610
+ value = { gridBgImageOrigin }
611
+ onChange = { ( e ) => setGridBgImageOrigin ( e . target . value ) }
612
+ onBlur = { ( e ) => gridBackgroundInputBlur ( e . target . value ) }
613
+ onKeyUp = { ( e ) => e . nativeEvent . key === "Enter" && gridBackgroundInputBlur ( e . currentTarget . value ) }
614
+ />
615
+ </ div >
616
+ ) }
463
617
</ ConfigItem >
464
618
) ;
465
619
}
0 commit comments