@fto-consult/expo-ui 5.10.0 → 5.10.1
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 +1 -1
- package/src/components/Datagrid/Accordion/index.js +3 -24
- package/src/components/Datagrid/Actions/Header.js +1 -1
- package/src/components/Datagrid/Actions/index.js +0 -1
- package/src/components/Datagrid/Common/Common.js +45 -54
- package/src/components/Datagrid/Dashboard/index.js +2 -1
- package/src/components/Datagrid/Table/index.js +3 -18
package/package.json
CHANGED
|
@@ -315,8 +315,7 @@ const DatagridFactory = (Factory)=>{
|
|
|
315
315
|
isLoading:customIsLoading,
|
|
316
316
|
cacheHeight,
|
|
317
317
|
toggleFilters,
|
|
318
|
-
|
|
319
|
-
dbSelectorProps,
|
|
318
|
+
dataSourceSelector,
|
|
320
319
|
progressBarProps,
|
|
321
320
|
accordion,
|
|
322
321
|
preloaderProps,
|
|
@@ -363,26 +362,6 @@ const DatagridFactory = (Factory)=>{
|
|
|
363
362
|
color: titleColor,
|
|
364
363
|
style : [styles.title,rStyles.lineHeight,titleProps.style]
|
|
365
364
|
}
|
|
366
|
-
|
|
367
|
-
let showDBSelector = false;
|
|
368
|
-
if(dbSelector === true){
|
|
369
|
-
showDBSelector = true;
|
|
370
|
-
}
|
|
371
|
-
dbSelectorProps = defaultObj(dbSelectorProps);
|
|
372
|
-
let title = this.props.title;
|
|
373
|
-
let _dbSelector = undefined;/* showDBSelector ? <div>
|
|
374
|
-
<DBSelector
|
|
375
|
-
{...dbSelectorProps}
|
|
376
|
-
onChange = {this.onChangeDatabases.bind(this)}
|
|
377
|
-
/>
|
|
378
|
-
</div> : null;*/
|
|
379
|
-
if(!title){
|
|
380
|
-
title = _dbSelector;
|
|
381
|
-
_dbSelector = null;
|
|
382
|
-
}
|
|
383
|
-
exportable = defaultBool(exportable,true);
|
|
384
|
-
let exportTableProps = this.getExportableProps();
|
|
385
|
-
|
|
386
365
|
filter = defaultFunc(filter,x=>true);
|
|
387
366
|
const showFooters = this.canShowFooters();
|
|
388
367
|
let restItems = [];
|
|
@@ -422,7 +401,7 @@ const DatagridFactory = (Factory)=>{
|
|
|
422
401
|
const datagridHeader = <View testID={testID+"_HeaderContainer"} pointerEvents={pointerEvents} style={[styles.datagridHeader]}>
|
|
423
402
|
<ScrollView testID={testID+"_HeaderScrollView"} horizontal contentContainerStyle={StyleSheet.flatten([styles.contentContainerStyle,styles.minW100])}>
|
|
424
403
|
<View testID={testID+"_HeaderContentCntainer"} style={[styles.table,styles.pullRight]}>
|
|
425
|
-
{
|
|
404
|
+
{/*this.renderDataSourceSelector()*/}
|
|
426
405
|
<View testID={testID+"_HeaderQueryLimit"} style={[styles.paginationItem]}>
|
|
427
406
|
{this.renderQueryLimit(this.getStateDataSize().formatNumber())}
|
|
428
407
|
</View>
|
|
@@ -528,7 +507,7 @@ const DatagridFactory = (Factory)=>{
|
|
|
528
507
|
{this.props.showActions !== false ? <DatagridActions
|
|
529
508
|
testID={testID+"_Actions"}
|
|
530
509
|
pointerEvents = {pointerEvents}
|
|
531
|
-
title = {
|
|
510
|
+
title = {this.renderDataSourceSelector()}
|
|
532
511
|
context = {this}
|
|
533
512
|
selectedRows = {Object.assign({},this.selectedRows)}
|
|
534
513
|
selectedRowsActions = {this.renderSelectedRowsActions.bind(this)}
|
|
@@ -13,7 +13,7 @@ const selectedTitle ='#f50057';
|
|
|
13
13
|
export const getSelectedBackgroundColor = x=> theme.isDark()?theme.colors.surface : selectedBackgroundColor;
|
|
14
14
|
|
|
15
15
|
export default function DatagridActionsHeaderComponent({title,selected,testID,children,style,pointerEvents,...props}) {
|
|
16
|
-
title =
|
|
16
|
+
title = React.isValidElement(title,true)? title : "";
|
|
17
17
|
const bStyle = selected && theme.isDark()? {
|
|
18
18
|
borderBottomColor : theme.colors.divider,
|
|
19
19
|
borderTopColor : theme.colors.divider,
|
|
@@ -9,7 +9,6 @@ import theme from "$theme"
|
|
|
9
9
|
import Button from "$ecomponents/Button";
|
|
10
10
|
import { StyleSheet } from "react-native";
|
|
11
11
|
import Label from "$ecomponents/Label";
|
|
12
|
-
import APP from "$capp/instance";
|
|
13
12
|
import { useWindowDimensions } from "react-native";
|
|
14
13
|
|
|
15
14
|
export default function DatagridActions (_props){
|
|
@@ -340,39 +340,8 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
|
340
340
|
windowHeight,
|
|
341
341
|
}
|
|
342
342
|
this.selectableColumnRef = React.createRef(null);
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
isPv = this.props.dataSourceSelector !== false;
|
|
346
|
-
} else isPv = this.props.dataSourceSelector === true ? true : false;
|
|
347
|
-
if(isPv){
|
|
348
|
-
let dataSourceSelectorProps = defaultObj(this.props.dataSourceSelectorProps);
|
|
349
|
-
['table','tableName'].map((tb,idx)=>{
|
|
350
|
-
dataSourceSelectorProps[tb] = defaultStr(this.props[tb],dataSourceSelectorProps[tb]);
|
|
351
|
-
});
|
|
352
|
-
let cDB = []//DBSelector.getDefaultSelected(dataSourceSelectorProps,this.currentDataSources,this.props);
|
|
353
|
-
let sDB = this.getSessionData().selectedDataSources;
|
|
354
|
-
cDB = Object.toArray(cDB);
|
|
355
|
-
if(cDB.length){
|
|
356
|
-
this.currentDataSources = cDB
|
|
357
|
-
} else {
|
|
358
|
-
this.currentDataSources = sDB;
|
|
359
|
-
}
|
|
360
|
-
this.setSessionData({selectedDataSources:this.currentDataSources});
|
|
361
|
-
} else {
|
|
362
|
-
this.currentDataSources = Object.toArray(this.currentDataSources);
|
|
363
|
-
}
|
|
364
|
-
if(isPv){
|
|
365
|
-
isPv = this.props.dataSourceSelector !== false;
|
|
366
|
-
} else isPv = this.props.dataSourceSelector === true ? true : false;
|
|
367
|
-
if(isPv){
|
|
368
|
-
let dataSourceSelectorProps = defaultObj(this.props.dataSourceSelectorProps);
|
|
369
|
-
['table','tableName'].map((tb)=>{
|
|
370
|
-
dataSourceSelectorProps[tb] = defaultStr(this.props[tb],this[tb],dataSourceSelectorProps[tb]);
|
|
371
|
-
});
|
|
372
|
-
this.setSessionData({selectedDataSources:this.currentDataSources});
|
|
373
|
-
} else {
|
|
374
|
-
this.currentDataSources = Object.toArray(this.currentDataSources);
|
|
375
|
-
}
|
|
343
|
+
this.currentDataSources = Object.toArray(this.getSessionData().selectedDataSources);
|
|
344
|
+
this.setSessionData({selectedDataSources:this.currentDataSources});
|
|
376
345
|
this.persistDisplayType(this.state.displayType);
|
|
377
346
|
}
|
|
378
347
|
/*** si l'on peut récuperer à distance, les colonnes seulement visibles */
|
|
@@ -622,13 +591,13 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
|
622
591
|
return this.selectedRowsCount <= 1 ? true : false;
|
|
623
592
|
}
|
|
624
593
|
/**** fonction appelée lorsque l'on clique sur la checkbox permettant de sélectionner la ligne */
|
|
625
|
-
handleRowToggle ({
|
|
626
|
-
if(
|
|
627
|
-
|
|
594
|
+
handleRowToggle ({rowIndex,rowKey,index, selected,cb,callback},cb2){
|
|
595
|
+
if((typeof rowKey !=='string' && typeof rowKey !=='number')) return false;
|
|
596
|
+
const row = this.getRowByKey(rowKey);
|
|
597
|
+
if(!isObj(row) || !this.canSelectRow(row)) return false;
|
|
628
598
|
let selectableMultiple = this.isSelectableMultiple();
|
|
629
599
|
rowIndex = defaultNumber(rowIndex,index);
|
|
630
600
|
cb = defaultFunc(cb,callback,cb2)
|
|
631
|
-
row = rowData = defaultObj(row,rowData);
|
|
632
601
|
const size = this.selectedRowsCount;
|
|
633
602
|
if(selected && !this.canSelectCheckedRow()){
|
|
634
603
|
notify.warning("Vous ne pouvez sélectionner plus d'un élément");
|
|
@@ -656,14 +625,13 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
|
656
625
|
this.selectedRowsCount = Math.max(this.selectedRowsCount-1,0);
|
|
657
626
|
delete selectedRows[rowKey];
|
|
658
627
|
}
|
|
659
|
-
|
|
660
628
|
this.toggleSelectableColumnCheckbox();
|
|
661
629
|
if(isObj(this.datagridActionsContext) && isFunction(this.datagridActionsContext.setSelectedRows)){
|
|
662
630
|
this.datagridActionsContext.setSelectedRows(selectedRows,x =>{
|
|
663
631
|
this.callSRowCallback({selected,row,rowIndex,rowKey,cb})
|
|
664
632
|
});
|
|
665
633
|
} else {
|
|
666
|
-
this.callSRowCallback({selected,rowData,row,rowIndex,rowKey,cb});
|
|
634
|
+
this.callSRowCallback({selected,rowData:row,row,rowIndex,rowKey,cb});
|
|
667
635
|
}
|
|
668
636
|
return true;
|
|
669
637
|
}
|
|
@@ -1055,6 +1023,25 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
|
1055
1023
|
}
|
|
1056
1024
|
return null;
|
|
1057
1025
|
}
|
|
1026
|
+
renderDataSourceSelector(){
|
|
1027
|
+
const t = isNonNullString(this.props.title)? <Label testID={"RN_DatagridTitleProp"}>{this.props.title}</Label> : React.isValidElement(this.props.title)? this.props.title : null;
|
|
1028
|
+
const table = defaultStr(this.props.table,this.props.tableName);
|
|
1029
|
+
const dS = dS === false ? null : typeof this.props.dataSourceSelector ==='function'? this.props.dataSourceSelector({
|
|
1030
|
+
defaultValue : this.currentDataSources,
|
|
1031
|
+
onChange : this.onChangeDataSources.bind(this),
|
|
1032
|
+
tableName:table,
|
|
1033
|
+
table,
|
|
1034
|
+
isAccordion : this.isAccordion,
|
|
1035
|
+
context : this,
|
|
1036
|
+
}) : null;
|
|
1037
|
+
if(React.isValidElement(dS)){
|
|
1038
|
+
return <View testID={'RN_Datagrid_DataSourceSelectorContainer'} style={[theme.styles.flex,theme.styles.flexRow,theme.styles.justifyContentFlexStart,theme.styles.alignItemsCenter]}>
|
|
1039
|
+
{dS}
|
|
1040
|
+
{t}
|
|
1041
|
+
</View>
|
|
1042
|
+
}
|
|
1043
|
+
return t;
|
|
1044
|
+
}
|
|
1058
1045
|
/*** permet de faire le rendu de certaines entête personalisés
|
|
1059
1046
|
* utile lorsque l'on veut par exemple afficher d'autres information au niveau de l'entête du tableau
|
|
1060
1047
|
*/
|
|
@@ -2717,7 +2704,9 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
|
2717
2704
|
const canUpdateFooters = !!(updateFooters !== false && hasFootersFields);
|
|
2718
2705
|
this.hasFoundSectionData.current = false;
|
|
2719
2706
|
this.sectionListDataSize.current = 0;
|
|
2707
|
+
this.rowsByKeys = {};
|
|
2720
2708
|
const isSList = this.isSectionList(sectionListColumns);
|
|
2709
|
+
this.rowsByKeys = {};
|
|
2721
2710
|
const sortingField = isNonNullString(this.sortRef.current.column) && isObj(this.state.columns) && this.state.columns[this.sortRef.current.column] || {};
|
|
2722
2711
|
const hasSortField = Object.size(sortingField,true);
|
|
2723
2712
|
if(this.canAutoSort() && isNonNullString(this.sortRef.current.column) && hasSortField){
|
|
@@ -2941,7 +2930,7 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
|
2941
2930
|
}
|
|
2942
2931
|
const isCollapsed = this.isSectionListCollapsed(key);
|
|
2943
2932
|
return <View testID={testID+"_ContentContainer"} style={[theme.styles.w100,isA && this.state.displayOnlySectionListHeaders && {borderTopColor:theme.colors.divider,borderTopWidth:1},isA ? [theme.styles.ph2,theme.styles.pt1] : [theme.styles.pt1,theme.styles.noPadding,theme.styles.noMargin],theme.styles.justifyContentCenter,theme.styles.alignItemsCenter,theme.styles.pb1,!cells && theme.styles.ml1,theme.styles.mr1,cStyle]}>
|
|
2944
|
-
{false && <View testID={testID+"_LabelAndCollapsedContainer"} style={[theme.styles.w100,theme.styles.row,theme.styles.alignItemsCenter,theme.styles.
|
|
2933
|
+
{false && <View testID={testID+"_LabelAndCollapsedContainer"} style={[theme.styles.w100,theme.styles.row,theme.styles.alignItemsCenter,theme.styles.justifyContentFlexStart]}>
|
|
2945
2934
|
<Icon
|
|
2946
2935
|
name = {isCollapsed?"chevron-up":"chevron-right"}
|
|
2947
2936
|
color = {theme.colors.primaryOnSurface}
|
|
@@ -2961,9 +2950,9 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
|
2961
2950
|
if(isObj(rowKey)){
|
|
2962
2951
|
rowKey = this.getRowKey(rowKey,rowIndex);
|
|
2963
2952
|
}
|
|
2964
|
-
if(
|
|
2965
|
-
if(
|
|
2966
|
-
return !!this.selectedRowsRefs[rowKey].checked;
|
|
2953
|
+
if(typeof rowKey !=='string' && typeof rowKey !=='number') return false;
|
|
2954
|
+
if(!isObj(this.selectedRowsRefs[rowKey])) return false;
|
|
2955
|
+
return !!(isObj(this.selectedRows[rowKey]) && this.selectedRowsRefs[rowKey].checked);
|
|
2967
2956
|
}
|
|
2968
2957
|
/*** permet de définir les lignes sélectionnées du datagrid */
|
|
2969
2958
|
setSelectedRows (rows){
|
|
@@ -3153,20 +3142,18 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
|
3153
3142
|
}
|
|
3154
3143
|
return anchor(toggleItem)
|
|
3155
3144
|
}
|
|
3145
|
+
/**** cette fonction est appeléee lorsque la source de données change
|
|
3146
|
+
le composant dataSourceSelector doit retourner un table dataSelector, qui prendra en paramètre l'objet onChange, qui systématiquement doit être appelé lorsque la source de données change
|
|
3147
|
+
*/
|
|
3156
3148
|
onChangeDataSources(args){
|
|
3157
|
-
let {dataSources
|
|
3149
|
+
let {dataSources} = defaultObj(args);
|
|
3150
|
+
if(!Array.isArray(dataSources)) return;//la fonction onChangeDataSource doit retourner un dataSource de type array
|
|
3158
3151
|
if(this.props.onChangeDataSources =='function' && this.props.onChangeDataSources({dataSources,prev:this.currentDataSources}) === false) return;
|
|
3152
|
+
if(React.isEquals(this.previousDataSources,dataSources)) return;
|
|
3159
3153
|
this.currentDataSources = dataSources;
|
|
3160
3154
|
this.setSessionData({selectedDatabases:dataSources})
|
|
3161
|
-
|
|
3162
|
-
if(isObj(this.props.dataSourceSelectorProps) && isFunction(this.props.dataSourceSelectorProps.onChange)){
|
|
3163
|
-
args.datagridContext = this;
|
|
3164
|
-
this.props.dataSourceSelectorProps.onChange(args);
|
|
3165
|
-
}
|
|
3166
|
-
this.refresh(true);
|
|
3167
|
-
}
|
|
3155
|
+
this.refresh(true);
|
|
3168
3156
|
this.previousDataSources = dataSources;
|
|
3169
|
-
this.previousServer = server;
|
|
3170
3157
|
}
|
|
3171
3158
|
prepareFetchData(fetchData){
|
|
3172
3159
|
this.INITIAL_STATE.fetchData = defaultVal(fetchData,this.props.fetchData);
|
|
@@ -3746,6 +3733,9 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
|
3746
3733
|
renderSelectFieldCell(args){
|
|
3747
3734
|
return this.renderSelectFieldCell(args);
|
|
3748
3735
|
}
|
|
3736
|
+
getRowByKey(rowKey){
|
|
3737
|
+
return this.rowsByKeys[rowKey] || null;
|
|
3738
|
+
}
|
|
3749
3739
|
/*** retourne le rendu d'une cellule de la ligne du tableau
|
|
3750
3740
|
@parm, rowData, object, la ligne à afficher le rendu du contenu
|
|
3751
3741
|
@param , rowInidex, l'indice de la ligne dont on affiche le rendu en cours
|
|
@@ -3763,10 +3753,11 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
|
3763
3753
|
const renderText = isSectionListHeader === true || customRenderRowCell === false ? true : false;
|
|
3764
3754
|
if(!isObj(rowData)) return renderText ? null : {render:null,extra:{}};
|
|
3765
3755
|
rowIndex = isDecimal(rowIndex)? rowIndex : isDecimal(index)? index : undefined;
|
|
3756
|
+
rowKey = rowKey || typeof rowKey =='number' ? rowKey : this.getRowKey(rowData,rowIndex);
|
|
3757
|
+
this.rowsByKeys[rowKey] = rowData;
|
|
3766
3758
|
rowCounterIndex = isDecimal(rowCounterIndex) ? rowCounterIndex : isDecimal(rowIndex)? rowIndex+1 : defaultDecimal(rowCounterIndex);
|
|
3767
3759
|
if(this.isSelectableColumn(columnDef,columnField)){
|
|
3768
3760
|
if(renderText) return null;
|
|
3769
|
-
rowKey = rowKey ? rowKey : this.getRowKey(rowData,rowIndex);
|
|
3770
3761
|
return {render :handleSelectableColumn === false ? null : this.renderSelectableCheckboxCell({
|
|
3771
3762
|
...arg,
|
|
3772
3763
|
rowKey,
|
|
@@ -3774,7 +3765,7 @@ export default class CommonDatagridComponent extends AppComponent {
|
|
|
3774
3765
|
checked : this.isRowSelected(rowKey,rowIndex),
|
|
3775
3766
|
rowsRefs : this.selectedRowsRefs,
|
|
3776
3767
|
onPress : ({checked})=>{
|
|
3777
|
-
return this.handleRowToggle({
|
|
3768
|
+
return this.handleRowToggle({rowIndex,rowKey,selected:!checked});
|
|
3778
3769
|
}
|
|
3779
3770
|
}),style:{},extra:{style:{}}};
|
|
3780
3771
|
} else if((columnField == this.getIndexColumnName())){
|
|
@@ -80,7 +80,8 @@ export default class DatagridDashboard extends TableData {
|
|
|
80
80
|
autoSort,
|
|
81
81
|
exportable,
|
|
82
82
|
selectable,pagin,showPagination,
|
|
83
|
-
sessionName,onMount,onUnmount,onFetchData,dataSourceSelector,
|
|
83
|
+
sessionName,onMount,onUnmount,onFetchData,dataSourceSelector,
|
|
84
|
+
queryLimit,
|
|
84
85
|
filters,
|
|
85
86
|
filterOrOperator,
|
|
86
87
|
filterAndOperator,
|
|
@@ -115,7 +115,8 @@ const DatagridFactory = (Factory)=>{
|
|
|
115
115
|
autoSort,
|
|
116
116
|
exportable,
|
|
117
117
|
selectable,pagin,showPagination,
|
|
118
|
-
sessionName,onMount,onUnmount,onFetchData,dataSourceSelector,
|
|
118
|
+
sessionName,onMount,onUnmount,onFetchData,dataSourceSelector,
|
|
119
|
+
queryLimit,
|
|
119
120
|
filters,
|
|
120
121
|
chartContainerProps,
|
|
121
122
|
accordion, //pour le rendu du header en accordion
|
|
@@ -125,22 +126,6 @@ const DatagridFactory = (Factory)=>{
|
|
|
125
126
|
chartContainerProps = defaultObj(chartContainerProps);
|
|
126
127
|
testID = this.getTestID();
|
|
127
128
|
rest = defaultObj(rest);
|
|
128
|
-
if(dataSourceSelector === true){
|
|
129
|
-
showDataSourceSelector = true;
|
|
130
|
-
} else if(dataSourceSelector ===false){
|
|
131
|
-
showDataSourceSelector = false;
|
|
132
|
-
}
|
|
133
|
-
dataSourceSelectorProps = defaultObj(dataSourceSelectorProps);
|
|
134
|
-
let _dataSourceSelector = undefined;/* showDataSourceSelector ? <div>
|
|
135
|
-
<DBSelector
|
|
136
|
-
{...dataSourceSelectorProps}
|
|
137
|
-
onChange = {this.onChangeDatabases.bind(this)}
|
|
138
|
-
/>
|
|
139
|
-
</div> : null;*/
|
|
140
|
-
if(!title){
|
|
141
|
-
title = _dataSourceSelector;
|
|
142
|
-
_dataSourceSelector = null;
|
|
143
|
-
}
|
|
144
129
|
exportable = defaultBool(exportable,true);
|
|
145
130
|
let isMobile = isMobileOrTabletMedia();
|
|
146
131
|
selectable = defaultVal(selectable,true);
|
|
@@ -295,7 +280,7 @@ const DatagridFactory = (Factory)=>{
|
|
|
295
280
|
<View ref={this.layoutRef} testID={testID+"_LayoutContainer"}>
|
|
296
281
|
{this.props.showActions !== false ? <DatagridActions
|
|
297
282
|
pointerEvents = {pointerEvents}
|
|
298
|
-
title = {
|
|
283
|
+
title = {this.renderDataSourceSelector()}
|
|
299
284
|
context = {this}
|
|
300
285
|
selectedRows = {Object.assign({},this.selectedRows)}
|
|
301
286
|
selectedRowsActions = {this.renderSelectedRowsActions.bind(this)}
|