@archbase/components 3.0.0 → 3.0.3
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/LICENSE +21 -0
- package/README.md +56 -0
- package/dist/buttons/ArchbaseActionButtons.d.ts +1 -1
- package/dist/charts/vis-timeline/ArchbaseVisTimeline.d.ts +1 -1
- package/dist/charts/vis-timeline/ArchbaseVisTimeline.types.d.ts +1 -1
- package/dist/charts/vis-timeline/utils/timelineOptions.d.ts +1 -1
- package/dist/datagrid/components/index.d.ts +2 -2
- package/dist/datagrid/components/pagination/grid-pagination.d.ts +1 -1
- package/dist/datagrid/components/toolbar/global-search-input.d.ts +1 -1
- package/dist/datagrid/components/toolbar/grid-toolbar.d.ts +1 -1
- package/dist/datagrid/hooks/use-grid-details-panel.d.ts +2 -2
- package/dist/datagrid/main/archbase-data-grid-pagination.d.ts +1 -1
- package/dist/datagrid/main/archbase-data-grid-toolbar.d.ts +1 -1
- package/dist/datagrid/main/archbase-data-grid-types.d.ts +28 -3
- package/dist/datagrid/main/archbase-data-grid-utils.d.ts +1 -1
- package/dist/datagrid/main/archbase-detail-panel-component.d.ts +1 -1
- package/dist/datagrid/main/archbase-expand-button.d.ts +1 -1
- package/dist/datagrid/main/archbase-grid-popover.d.ts +1 -1
- package/dist/datagrid/modals/print-data.d.ts +0 -1
- package/dist/editors/ArchbaseAsyncMultiSelect.d.ts +1 -1
- package/dist/editors/ArchbaseAsyncSelect.context.d.ts +1 -1
- package/dist/editors/ArchbaseAsyncSelect.d.ts +1 -5
- package/dist/editors/ArchbaseAvatarEdit.d.ts +2 -2
- package/dist/editors/ArchbaseCheckbox.d.ts +2 -3
- package/dist/editors/ArchbaseChip.d.ts +2 -3
- package/dist/editors/ArchbaseChipGroup.d.ts +1 -1
- package/dist/editors/ArchbaseDatePickerEdit.d.ts +3 -3
- package/dist/editors/ArchbaseDatePickerRange.d.ts +1 -2
- package/dist/editors/ArchbaseDateTimePickerEdit.d.ts +2 -3
- package/dist/editors/ArchbaseDateTimePickerRange.d.ts +2 -3
- package/dist/editors/ArchbaseEdit.d.ts +2 -7
- package/dist/editors/ArchbaseFileAttachment.d.ts +1 -1
- package/dist/editors/ArchbaseImageEdit.d.ts +2 -2
- package/dist/editors/ArchbaseJsonEdit.d.ts +2 -3
- package/dist/editors/ArchbaseLookupEdit.d.ts +2 -3
- package/dist/editors/ArchbaseLookupNumber.d.ts +2 -3
- package/dist/editors/ArchbaseMarkdownEdit.d.ts +1 -1
- package/dist/editors/ArchbaseMaskEdit.d.ts +3 -8
- package/dist/editors/ArchbaseNumberEdit.d.ts +1 -2
- package/dist/editors/ArchbasePasswordEdit.d.ts +2 -3
- package/dist/editors/ArchbaseRadioGroup.d.ts +2 -3
- package/dist/editors/ArchbaseRating.d.ts +1 -1
- package/dist/editors/ArchbaseRichTextEdit.d.ts +3 -3
- package/dist/editors/ArchbaseSelect.context.d.ts +1 -1
- package/dist/editors/ArchbaseSelect.d.ts +1 -1
- package/dist/editors/ArchbaseSwitch.d.ts +2 -3
- package/dist/editors/ArchbaseTextArea.d.ts +2 -3
- package/dist/editors/ArchbaseTimeEdit.d.ts +2 -3
- package/dist/editors/ArchbaseTimeRangeSelector.d.ts +1 -1
- package/dist/editors/ArchbaseTreeSelect.d.ts +1 -1
- package/dist/editors/index.d.ts +5 -5
- package/dist/filters/ArchbaseCompositeFilters.d.ts +1 -1
- package/dist/filters/ArchbaseCompositeFilters.types.d.ts +1 -1
- package/dist/filters/ArchbaseCompositeFilters.utils.d.ts +1 -1
- package/dist/filters/components/FilterPill.d.ts +1 -1
- package/dist/filters/hooks/useArchbaseFilterHistory.d.ts +1 -1
- package/dist/filters/hooks/useArchbaseFilterPresets.d.ts +1 -1
- package/dist/filters/hooks/useArchbaseFilters.d.ts +1 -1
- package/dist/filters/hooks/useArchbaseQuickFilters.d.ts +1 -1
- package/dist/hooks/useArchbaseListContext.d.ts +1 -1
- package/dist/hooks/useArchbaseNavigateParams.d.ts +2 -2
- package/dist/hooks/useArchbaseVisible.d.ts +1 -1
- package/dist/image/ArchbaseImage.d.ts +1 -1
- package/dist/image/editor/components/BasicFilters/BasicFilter.d.ts +1 -1
- package/dist/image/editor/components/CropprWrapper/ArchbaseCropperWrapper.d.ts +1 -2
- package/dist/image/editor/components/EditImage/ArchbaseEditImage.d.ts +1 -2
- package/dist/image/editor/components/Input/Input.d.ts +1 -1
- package/dist/image/editor/components/Tab/Tab.d.ts +1 -2
- package/dist/image/editor/functions/croppr/core.d.ts +1 -5
- package/dist/image/editor/functions/croppr/croppr.d.ts +1 -10
- package/dist/image/editor/functions/croppr/index.d.ts +1 -1
- package/dist/image/editor/index.d.ts +1 -2
- package/dist/index.d.ts +0 -3
- package/dist/index.js +5315 -5379
- package/dist/jsonschema/JsonSchemaEditor/ArchbaseJsonSchemaEditor.context.d.ts +1 -1
- package/dist/list/ArchbaseList.context.d.ts +1 -1
- package/dist/list/ArchbaseList.d.ts +1 -1
- package/dist/list/index.d.ts +1 -1
- package/dist/list/treeview/ArchbaseTreeView.d.ts +1 -1
- package/dist/list/treeview/ArchbaseTreeViewItem.d.ts +1 -1
- package/dist/list-view/ArchbaseListViewTable.d.ts +1 -1
- package/dist/markdown/ArchbaseMarkdown.d.ts +1 -1
- package/dist/markdown/ArchbaseMarkdown.types.d.ts +2 -2
- package/dist/markdown/components/CodeBlock.d.ts +2 -2
- package/dist/markdown/components/LinkRenderer.d.ts +1 -1
- package/dist/masonry/ArchbaseMasonry.context.d.ts +1 -1
- package/dist/masonry/ArchbaseMasonry.d.ts +1 -5
- package/dist/masonry/index.d.ts +1 -1
- package/dist/notification/ArchbaseAlert.d.ts +1 -5
- package/dist/onboarding/ArchbaseOnboardingTour.d.ts +1 -1
- package/dist/printer/ArchbaseThermalPrinter.d.ts +1 -1
- package/dist/printer/ArchbaseThermalPrinter.types.d.ts +1 -1
- package/dist/printer/utils/escpos.d.ts +1 -1
- package/dist/theme-editor/ArchbaseThemeEditor.d.ts +1 -1
- package/dist/theme-editor/ArchbaseThemeEditor.types.d.ts +2 -2
- package/dist/theme-editor/utils/themeExport.d.ts +2 -2
- package/dist/themes/ArchbaseThemeEditor.d.ts +2 -3
- package/dist/video/ArchbaseVideoPlayer.d.ts +1 -1
- package/dist/video/ArchbaseVideoPlayer.types.d.ts +1 -1
- package/dist/video/hooks/useVideoPlayer.d.ts +5 -5
- package/dist/viewers/ArchbasePDFViewer.annotations.d.ts +1 -1
- package/dist/viewers/ArchbasePDFViewer.d.ts +1 -1
- package/dist/viewers/ArchbasePDFViewer.toolbar.d.ts +1 -1
- package/dist/viewers/ArchbasePDFViewer.types.d.ts +2 -2
- package/dist/viewers/file-preview/ArchbaseFilePreviewer.d.ts +1 -1
- package/dist/viewers/file-preview/ArchbaseFilePreviewer.types.d.ts +1 -1
- package/dist/viewers/file-preview/utils/fileTypeDetector.d.ts +1 -1
- package/package.json +21 -21
- package/src/datagrid/main/archbase-data-grid-pagination.tsx +16 -5
- package/src/datagrid/main/archbase-data-grid-toolbar.tsx +15 -4
- package/src/datagrid/main/archbase-data-grid-types.tsx +32 -0
- package/src/datagrid/main/archbase-data-grid.tsx +64 -4
- package/src/index.ts +0 -1
- package/dist/archbase-components-3.0.0.tgz +0 -0
- package/dist/debug/index.d.ts +0 -4
- package/dist/debug/jsonpathpicker/ArchbaseJsonPathPicker.d.ts +0 -37
- package/dist/debug/jsonpathpicker/index.d.ts +0 -1
- package/dist/debug/jsonview/ArchbaseJsonViewDataRenderer.d.ts +0 -34
- package/dist/debug/jsonview/ArchbaseJsonViewDataTypeDetection.d.ts +0 -8
- package/dist/debug/jsonview/index.d.ts +0 -11
- package/dist/debug/objectinspector/ArchbaseDebugInspector.d.ts +0 -23
- package/dist/debug/objectinspector/ArchbaseFloatingWindow.d.ts +0 -24
- package/dist/debug/objectinspector/ArchbaseObjectInspector.d.ts +0 -6
- package/dist/debug/objectinspector/index.d.ts +0 -3
- package/dist/spreadsheet/ArchbaseSpreadsheetImport.d.ts +0 -4
- package/dist/spreadsheet/ArchbaseSpreadsheetImport.types.d.ts +0 -65
- package/dist/spreadsheet/index.d.ts +0 -2
- package/src/debug/jsonview/styles.module.css.d.ts +0 -4
- package/src/spreadsheet/ArchbaseSpreadsheetImport.tsx +0 -223
- package/src/spreadsheet/ArchbaseSpreadsheetImport.types.ts +0 -66
- package/src/spreadsheet/index.ts +0 -10
|
@@ -156,12 +156,14 @@ function ArchbaseDataGrid<T extends object = any, ID = any>(props: ArchbaseDataG
|
|
|
156
156
|
csvOptions,
|
|
157
157
|
toolbarAlignment = 'right',
|
|
158
158
|
positionActionsColumn = 'first',
|
|
159
|
+
actionsColumnWidth = 60,
|
|
159
160
|
toolbarLeftContent,
|
|
160
161
|
columnAutoWidth = false,
|
|
161
162
|
rowHeight = 52,
|
|
162
163
|
paginationLabels,
|
|
163
164
|
onExport,
|
|
164
165
|
onPrint,
|
|
166
|
+
onFilterModelChange,
|
|
165
167
|
showProgressBars = true,
|
|
166
168
|
variant = 'filled',
|
|
167
169
|
fontSize,
|
|
@@ -192,6 +194,11 @@ function ArchbaseDataGrid<T extends object = any, ID = any>(props: ArchbaseDataG
|
|
|
192
194
|
activeFilters: externalActiveFilters,
|
|
193
195
|
onFiltersChange: externalOnFiltersChange,
|
|
194
196
|
hideMuiFilters = false,
|
|
197
|
+
// Props para controle de bordas internas
|
|
198
|
+
withToolbarBorder = true,
|
|
199
|
+
withPaginationBorder = true,
|
|
200
|
+
toolbarPadding,
|
|
201
|
+
paginationPadding,
|
|
195
202
|
} = props
|
|
196
203
|
const theme = useArchbaseTheme()
|
|
197
204
|
const { colorScheme } = useMantineColorScheme();
|
|
@@ -567,6 +574,11 @@ function ArchbaseDataGrid<T extends object = any, ID = any>(props: ArchbaseDataG
|
|
|
567
574
|
// Atualizar o estado do filtro primeiro
|
|
568
575
|
setFilterModel(newFilterModel)
|
|
569
576
|
|
|
577
|
+
// Notificar callback externo (parent component) se fornecido
|
|
578
|
+
if (onFilterModelChange) {
|
|
579
|
+
onFilterModelChange(newFilterModel)
|
|
580
|
+
}
|
|
581
|
+
|
|
570
582
|
// Certificar que estamos usando o valor mais recente
|
|
571
583
|
console.log('[FILTER] Aplicando filtro:', newFilterModel)
|
|
572
584
|
|
|
@@ -727,15 +739,17 @@ function ArchbaseDataGrid<T extends object = any, ID = any>(props: ArchbaseDataG
|
|
|
727
739
|
expandRow: (rowId: GridRowId) => expandDetailPanel(rowId),
|
|
728
740
|
collapseRow: (rowId: GridRowId) => closeDetailPanel(rowId),
|
|
729
741
|
collapseAllRows: closeAllDetailPanels,
|
|
730
|
-
getExpandedRows: () => Array.from(expandedRowIds)
|
|
742
|
+
getExpandedRows: () => Array.from(expandedRowIds),
|
|
743
|
+
getFilterModel: () => filterModel
|
|
731
744
|
}),
|
|
732
|
-
[selectedRows, expandedRowIds, expandDetailPanel, closeDetailPanel, closeAllDetailPanels]
|
|
745
|
+
[selectedRows, expandedRowIds, expandDetailPanel, closeDetailPanel, closeAllDetailPanels, filterModel]
|
|
733
746
|
)
|
|
734
747
|
|
|
735
748
|
// Configurar estilos personalizados para o grid
|
|
736
749
|
const getThemedStyles = () => {
|
|
737
750
|
return {
|
|
738
751
|
root: {
|
|
752
|
+
height: '100%', // Garante que o DataGrid ocupe toda a altura do container
|
|
739
753
|
border: withBorder
|
|
740
754
|
? `1px solid ${theme.colors.gray[colorScheme === 'dark' ? 8 : 3]}`
|
|
741
755
|
: '0',
|
|
@@ -743,6 +757,46 @@ function ArchbaseDataGrid<T extends object = any, ID = any>(props: ArchbaseDataG
|
|
|
743
757
|
overflow: 'hidden', // Garante que o conteúdo respeite o border-radius
|
|
744
758
|
backgroundColor: colorScheme === 'dark' ? theme.colors.dark[6] : theme.white,
|
|
745
759
|
color: colorScheme === 'dark' ? theme.colors.gray[0] : theme.colors.dark[9],
|
|
760
|
+
|
|
761
|
+
// Scrollbar customizada do MUI DataGrid - estilo Mantine (mais fina e elegante)
|
|
762
|
+
'& .MuiDataGrid-scrollbar': {
|
|
763
|
+
'&.MuiDataGrid-scrollbar--horizontal': {
|
|
764
|
+
height: '8px !important',
|
|
765
|
+
},
|
|
766
|
+
'&.MuiDataGrid-scrollbar--vertical': {
|
|
767
|
+
width: '8px !important',
|
|
768
|
+
},
|
|
769
|
+
backgroundColor: colorScheme === 'dark' ? theme.colors.dark[6] : theme.colors.gray[1],
|
|
770
|
+
borderRadius: '4px',
|
|
771
|
+
'& .MuiDataGrid-scrollbarContent': {
|
|
772
|
+
borderRadius: '4px',
|
|
773
|
+
},
|
|
774
|
+
},
|
|
775
|
+
|
|
776
|
+
// Scrollbar nativa (fallback) - estilo Mantine
|
|
777
|
+
'& .MuiDataGrid-virtualScroller': {
|
|
778
|
+
'&::-webkit-scrollbar': {
|
|
779
|
+
width: '8px',
|
|
780
|
+
height: '8px',
|
|
781
|
+
},
|
|
782
|
+
'&::-webkit-scrollbar-track': {
|
|
783
|
+
backgroundColor: colorScheme === 'dark' ? theme.colors.dark[6] : theme.colors.gray[1],
|
|
784
|
+
borderRadius: '4px',
|
|
785
|
+
},
|
|
786
|
+
'&::-webkit-scrollbar-thumb': {
|
|
787
|
+
backgroundColor: colorScheme === 'dark' ? theme.colors.dark[3] : theme.colors.gray[4],
|
|
788
|
+
borderRadius: '4px',
|
|
789
|
+
'&:hover': {
|
|
790
|
+
backgroundColor: colorScheme === 'dark' ? theme.colors.dark[2] : theme.colors.gray[5],
|
|
791
|
+
},
|
|
792
|
+
},
|
|
793
|
+
// Firefox
|
|
794
|
+
scrollbarWidth: 'thin',
|
|
795
|
+
scrollbarColor: colorScheme === 'dark'
|
|
796
|
+
? `${theme.colors.dark[3]} ${theme.colors.dark[6]}`
|
|
797
|
+
: `${theme.colors.gray[4]} ${theme.colors.gray[1]}`,
|
|
798
|
+
},
|
|
799
|
+
|
|
746
800
|
fontSize:
|
|
747
801
|
typeof fontSize === 'string' &&
|
|
748
802
|
['xs', 'sm', 'md', 'lg', 'xl'].includes(fontSize as string)
|
|
@@ -868,7 +922,7 @@ function ArchbaseDataGrid<T extends object = any, ID = any>(props: ArchbaseDataG
|
|
|
868
922
|
type: 'string' as const,
|
|
869
923
|
sortable: false,
|
|
870
924
|
filterable: false,
|
|
871
|
-
width:
|
|
925
|
+
width: actionsColumnWidth,
|
|
872
926
|
renderCell: (params) => renderRowActions(params.row as T)
|
|
873
927
|
}
|
|
874
928
|
|
|
@@ -1368,6 +1422,9 @@ function ArchbaseDataGrid<T extends object = any, ID = any>(props: ArchbaseDataG
|
|
|
1368
1422
|
activeFilters={activeFilters}
|
|
1369
1423
|
onFiltersChange={handleCompositeFiltersChange}
|
|
1370
1424
|
hideMuiFilters={hideMuiFilters}
|
|
1425
|
+
// Props para controle de bordas
|
|
1426
|
+
withBorder={withToolbarBorder}
|
|
1427
|
+
padding={toolbarPadding}
|
|
1371
1428
|
/>
|
|
1372
1429
|
)}
|
|
1373
1430
|
|
|
@@ -1377,7 +1434,7 @@ function ArchbaseDataGrid<T extends object = any, ID = any>(props: ArchbaseDataG
|
|
|
1377
1434
|
renderFixedDetailPanel()}
|
|
1378
1435
|
|
|
1379
1436
|
{/* Grid sem toolbar interna */}
|
|
1380
|
-
<Box style={{ flex: 1, overflow: 'hidden', position: 'relative' }}>
|
|
1437
|
+
<Box style={{ flex: 1, overflow: 'hidden', position: 'relative', minHeight: 0 }}>
|
|
1381
1438
|
<DataGrid
|
|
1382
1439
|
apiRef={apiRef}
|
|
1383
1440
|
rows={rows}
|
|
@@ -1427,6 +1484,9 @@ function ArchbaseDataGrid<T extends object = any, ID = any>(props: ArchbaseDataG
|
|
|
1427
1484
|
paginationLabels={paginationLabels}
|
|
1428
1485
|
bottomToolbarMinHeight={bottomToolbarMinHeight}
|
|
1429
1486
|
theme={theme}
|
|
1487
|
+
// Props para controle de bordas
|
|
1488
|
+
withBorder={withPaginationBorder}
|
|
1489
|
+
padding={paginationPadding}
|
|
1430
1490
|
/>:null}
|
|
1431
1491
|
|
|
1432
1492
|
{/* Painéis de detalhes nos modos não-inline (modal/drawer) */}
|
package/src/index.ts
CHANGED
|
Binary file
|
package/dist/debug/index.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Component } from 'react';
|
|
2
|
-
import './ArchbaseJsonPathPicker.css';
|
|
3
|
-
export interface ArchbaseJsonPathPickerOptions {
|
|
4
|
-
outputCollapsed: boolean;
|
|
5
|
-
outputWithQuotes: boolean;
|
|
6
|
-
pathNotation: string;
|
|
7
|
-
pathQuotesType: string;
|
|
8
|
-
processKeys: boolean;
|
|
9
|
-
keyReplaceRegexPattern: string | undefined;
|
|
10
|
-
keyReplaceRegexFlags: string | undefined;
|
|
11
|
-
keyReplacementText: string;
|
|
12
|
-
pickerIcon: string;
|
|
13
|
-
withoutPicker: boolean;
|
|
14
|
-
}
|
|
15
|
-
export interface ArchbaseJsonPathPickerProps {
|
|
16
|
-
data: any;
|
|
17
|
-
onSelect: (path: string) => void;
|
|
18
|
-
options?: ArchbaseJsonPathPickerOptions;
|
|
19
|
-
}
|
|
20
|
-
export declare class ArchbaseJsonPathPicker extends Component<ArchbaseJsonPathPickerProps> {
|
|
21
|
-
static defaultProps: {
|
|
22
|
-
options: ArchbaseJsonPathPickerOptions;
|
|
23
|
-
};
|
|
24
|
-
private pickerRef;
|
|
25
|
-
private destRef;
|
|
26
|
-
private jsonPathPickerInstance;
|
|
27
|
-
constructor(props: ArchbaseJsonPathPickerProps);
|
|
28
|
-
json2jsx: (json: any, options: any) => import("react/jsx-runtime").JSX.Element | "[]" | "{}";
|
|
29
|
-
handlerEventToggle: (elm: any, event: any) => void;
|
|
30
|
-
toggleEventListener: (event: any) => void;
|
|
31
|
-
simulateClickHandler: (elm: any, event: any) => void;
|
|
32
|
-
simulateClickEventListener: (event: any) => void;
|
|
33
|
-
pickPathHandler: (elm: any) => void;
|
|
34
|
-
pickEventListener: (event: any) => void;
|
|
35
|
-
componentDidMount(): void;
|
|
36
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
37
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { ArchbaseJsonPathPicker } from './ArchbaseJsonPathPicker';
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
export interface StyleProps {
|
|
2
|
-
container: string;
|
|
3
|
-
basicChildStyle: string;
|
|
4
|
-
expander: string;
|
|
5
|
-
label: string;
|
|
6
|
-
nullValue: string;
|
|
7
|
-
undefinedValue: string;
|
|
8
|
-
numberValue: string;
|
|
9
|
-
stringValue: string;
|
|
10
|
-
booleanValue: string;
|
|
11
|
-
otherValue: string;
|
|
12
|
-
punctuation: string;
|
|
13
|
-
pointer: string;
|
|
14
|
-
}
|
|
15
|
-
export interface JsonRenderProps<T> {
|
|
16
|
-
field?: string;
|
|
17
|
-
value: T;
|
|
18
|
-
lastElement: boolean;
|
|
19
|
-
level: number;
|
|
20
|
-
style: StyleProps;
|
|
21
|
-
shouldInitiallyExpand: (level: number, value: any, field?: string) => boolean;
|
|
22
|
-
}
|
|
23
|
-
export interface ExpandableRenderProps {
|
|
24
|
-
field?: string;
|
|
25
|
-
value: Array<any> | object;
|
|
26
|
-
data: Array<[string | undefined, any]>;
|
|
27
|
-
openBracket: string;
|
|
28
|
-
closeBracket: string;
|
|
29
|
-
lastElement: boolean;
|
|
30
|
-
level: number;
|
|
31
|
-
style: StyleProps;
|
|
32
|
-
shouldInitiallyExpand: (level: number, value: any, field?: string) => boolean;
|
|
33
|
-
}
|
|
34
|
-
export default function ArchbaseJsonViewDataRender(props: JsonRenderProps<any>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export declare const isBoolean: (data: any) => data is boolean | Boolean;
|
|
2
|
-
export declare const isNumber: (data: any) => data is number | Number;
|
|
3
|
-
export declare const isBigInt: (data: any) => data is bigint | BigInt;
|
|
4
|
-
export declare const isString: (data: any) => data is string | String;
|
|
5
|
-
export declare const isArray: (data: any) => data is any[];
|
|
6
|
-
export declare const isObject: (data: any) => boolean;
|
|
7
|
-
export declare const isNull: (data: any) => boolean;
|
|
8
|
-
export declare const isUndefined: (data: any) => boolean;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { StyleProps } from './ArchbaseJsonViewDataRenderer';
|
|
2
|
-
export interface ArchbaseJsonViewProps {
|
|
3
|
-
data: NonNullable<unknown> | Array<any>;
|
|
4
|
-
style?: StyleProps;
|
|
5
|
-
shouldInitiallyExpand?: (level: number, value: any, field?: string) => boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare const defaultStyles: StyleProps;
|
|
8
|
-
export declare const darkStyles: StyleProps;
|
|
9
|
-
export declare const allExpanded: () => boolean;
|
|
10
|
-
export declare const collapseAllNested: (level: number) => boolean;
|
|
11
|
-
export declare const ArchbaseJsonView: ({ data, style, shouldInitiallyExpand, }: ArchbaseJsonViewProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export interface ArchbaseDebugInspectorProps {
|
|
2
|
-
/** Título a ser exibido */
|
|
3
|
-
title?: string;
|
|
4
|
-
/** Título a ser exibido*/
|
|
5
|
-
icon?: string | HTMLImageElement;
|
|
6
|
-
/** Comando para abrir e fechar o Object Inspector */
|
|
7
|
-
debugObjectInspectorHotKey?: string;
|
|
8
|
-
/** Lista de objetos a serem inspecionados */
|
|
9
|
-
objectsToInspect?: ArchbaseObjectToInspect[];
|
|
10
|
-
/** Indica se o Object Inspector será visível inicialmente ou não */
|
|
11
|
-
visible?: boolean;
|
|
12
|
-
/** Altura inicial do Object Inspector */
|
|
13
|
-
height?: number;
|
|
14
|
-
/** Largura inicial do Object Inspector */
|
|
15
|
-
width?: number;
|
|
16
|
-
}
|
|
17
|
-
export interface ArchbaseObjectToInspect {
|
|
18
|
-
/**Nome do objeto a ser inspecionado*/
|
|
19
|
-
name: string;
|
|
20
|
-
/**Objeto a ser inspecionado*/
|
|
21
|
-
object: NonNullable<unknown>;
|
|
22
|
-
}
|
|
23
|
-
export declare function ArchbaseDebugInspector({ title, icon, debugObjectInspectorHotKey, objectsToInspect, visible, height, width, }: ArchbaseDebugInspectorProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import './ArchbaseFloatingWindow.css';
|
|
3
|
-
export interface ArchbaseFloatingWindowProps {
|
|
4
|
-
id: string;
|
|
5
|
-
children?: any;
|
|
6
|
-
height: number;
|
|
7
|
-
width: number;
|
|
8
|
-
top?: number;
|
|
9
|
-
left?: number;
|
|
10
|
-
resizable?: boolean;
|
|
11
|
-
titleBar?: {
|
|
12
|
-
icon?: string | HTMLImageElement;
|
|
13
|
-
title?: string;
|
|
14
|
-
buttons?: {
|
|
15
|
-
minimize?: boolean;
|
|
16
|
-
maximize?: boolean;
|
|
17
|
-
close?: () => void;
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
style?: React.CSSProperties;
|
|
21
|
-
/** Referência para o container que envolve o componente filho */
|
|
22
|
-
innerRef?: React.RefObject<HTMLInputElement> | undefined;
|
|
23
|
-
}
|
|
24
|
-
export declare const ArchbaseFloatingWindow: React.FC<ArchbaseFloatingWindowProps>;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { ArchbaseSpreadsheetImportProps } from './ArchbaseSpreadsheetImport.types';
|
|
2
|
-
export declare function ArchbaseSpreadsheetImport<T = any>({ dataSource, onDataLoaded, onRowAdded, fields, isOpen, onClose, title, description, allowedFileTypes, maxFileSize, // 10MB
|
|
3
|
-
maxRows, customHeaderComponent, customButtonComponent, translations, style, className, disabled, initialData, mapRows, validationCallback, }: ArchbaseSpreadsheetImportProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
-
export type { ArchbaseSpreadsheetImportProps, SpreadsheetField, SpreadsheetRow, SpreadsheetFileType, } from './ArchbaseSpreadsheetImport.types';
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import type { CSSProperties, ReactNode } from 'react';
|
|
2
|
-
import type { IArchbaseDataSourceBase } from '@archbase/data';
|
|
3
|
-
export type SpreadsheetFileType = 'csv' | 'xlsx' | 'xls' | 'all';
|
|
4
|
-
export interface SpreadsheetField {
|
|
5
|
-
key: string;
|
|
6
|
-
label: string;
|
|
7
|
-
required?: boolean;
|
|
8
|
-
fieldType?: 'text' | 'number' | 'date' | 'email' | 'boolean' | 'select';
|
|
9
|
-
options?: string[];
|
|
10
|
-
validations?: {
|
|
11
|
-
min?: number;
|
|
12
|
-
max?: number;
|
|
13
|
-
pattern?: string;
|
|
14
|
-
custom?: (value: any) => boolean | string;
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
export interface SpreadsheetRow {
|
|
18
|
-
[key: string]: any;
|
|
19
|
-
}
|
|
20
|
-
export interface ArchbaseSpreadsheetImportProps<T = any> {
|
|
21
|
-
dataSource?: IArchbaseDataSourceBase<T>;
|
|
22
|
-
onDataLoaded?: (data: T[]) => void;
|
|
23
|
-
onRowAdded?: (row: T) => void;
|
|
24
|
-
fields?: SpreadsheetField[];
|
|
25
|
-
isOpen?: boolean;
|
|
26
|
-
onClose?: () => void;
|
|
27
|
-
title?: string;
|
|
28
|
-
description?: string;
|
|
29
|
-
allowedFileTypes?: SpreadsheetFileType[];
|
|
30
|
-
maxFileSize?: number;
|
|
31
|
-
maxRows?: number;
|
|
32
|
-
customHeaderComponent?: ReactNode;
|
|
33
|
-
customButtonComponent?: ReactNode;
|
|
34
|
-
translations?: {
|
|
35
|
-
uploadStep?: string;
|
|
36
|
-
selectFile?: string;
|
|
37
|
-
dragDrop?: string;
|
|
38
|
-
supportedFormats?: string;
|
|
39
|
-
reviewStep?: string;
|
|
40
|
-
reviewDescription?: string;
|
|
41
|
-
confirmStep?: string;
|
|
42
|
-
confirmDescription?: string;
|
|
43
|
-
successStep?: string;
|
|
44
|
-
successDescription?: string;
|
|
45
|
-
uploadButton?: string;
|
|
46
|
-
nextButton?: string;
|
|
47
|
-
backButton?: string;
|
|
48
|
-
confirmButton?: string;
|
|
49
|
-
doneButton?: string;
|
|
50
|
-
closeButton?: string;
|
|
51
|
-
invalidRow?: string;
|
|
52
|
-
requiredField?: string;
|
|
53
|
-
rowsAdded?: string;
|
|
54
|
-
rowsSkipped?: string;
|
|
55
|
-
};
|
|
56
|
-
style?: CSSProperties;
|
|
57
|
-
className?: string;
|
|
58
|
-
disabled?: boolean;
|
|
59
|
-
initialData?: SpreadsheetRow[];
|
|
60
|
-
mapRows?: (rows: SpreadsheetRow[]) => T[];
|
|
61
|
-
validationCallback?: (row: SpreadsheetRow, index: number) => {
|
|
62
|
-
valid: boolean;
|
|
63
|
-
errors?: string[];
|
|
64
|
-
};
|
|
65
|
-
}
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
import React, { useState, useCallback, useMemo } from 'react';
|
|
2
|
-
import { Modal, Button, Group, Text, Stack, Paper, Progress, Alert } from '@mantine/core';
|
|
3
|
-
import { useArchbaseTranslation } from '@archbase/core';
|
|
4
|
-
import { ReactSpreadsheetImport } from 'react-spreadsheet-import';
|
|
5
|
-
import type {
|
|
6
|
-
ArchbaseSpreadsheetImportProps,
|
|
7
|
-
SpreadsheetField,
|
|
8
|
-
SpreadsheetRow,
|
|
9
|
-
} from './ArchbaseSpreadsheetImport.types';
|
|
10
|
-
|
|
11
|
-
type RsiField = {
|
|
12
|
-
label: string;
|
|
13
|
-
key: string;
|
|
14
|
-
description?: string;
|
|
15
|
-
alternateMatches?: string[];
|
|
16
|
-
validations?: any[];
|
|
17
|
-
fieldType: { type: 'input' } | { type: 'checkbox'; booleanMatches?: { [key: string]: boolean } } | { type: 'select'; options: { label: string; value: string }[] };
|
|
18
|
-
example?: string;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
function convertFieldToRsi(field: SpreadsheetField): RsiField {
|
|
22
|
-
const baseField: RsiField = {
|
|
23
|
-
label: field.label,
|
|
24
|
-
key: field.key,
|
|
25
|
-
fieldType: { type: 'input' },
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
if (field.fieldType === 'boolean') {
|
|
29
|
-
baseField.fieldType = { type: 'checkbox' };
|
|
30
|
-
} else if (field.fieldType === 'select' && field.options) {
|
|
31
|
-
baseField.fieldType = {
|
|
32
|
-
type: 'select',
|
|
33
|
-
options: field.options.map((opt) => ({ label: opt, value: opt })),
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Add validations
|
|
38
|
-
if (field.validations) {
|
|
39
|
-
baseField.validations = [];
|
|
40
|
-
|
|
41
|
-
if (field.validations.pattern) {
|
|
42
|
-
baseField.validations!.push({
|
|
43
|
-
rule: 'regex',
|
|
44
|
-
value: field.validations.pattern,
|
|
45
|
-
errorMessage: 'Invalid format',
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return baseField;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export function ArchbaseSpreadsheetImport<T = any>({
|
|
54
|
-
dataSource,
|
|
55
|
-
onDataLoaded,
|
|
56
|
-
onRowAdded,
|
|
57
|
-
fields,
|
|
58
|
-
isOpen = true,
|
|
59
|
-
onClose,
|
|
60
|
-
title,
|
|
61
|
-
description,
|
|
62
|
-
allowedFileTypes = ['csv', 'xlsx', 'xls'],
|
|
63
|
-
maxFileSize = 10 * 1024 * 1024, // 10MB
|
|
64
|
-
maxRows = 1000,
|
|
65
|
-
customHeaderComponent,
|
|
66
|
-
customButtonComponent,
|
|
67
|
-
translations,
|
|
68
|
-
style,
|
|
69
|
-
className,
|
|
70
|
-
disabled = false,
|
|
71
|
-
initialData,
|
|
72
|
-
mapRows,
|
|
73
|
-
validationCallback,
|
|
74
|
-
}: ArchbaseSpreadsheetImportProps<T>) {
|
|
75
|
-
const { t } = useArchbaseTranslation();
|
|
76
|
-
const [isOpenState, setIsOpenState] = useState(isOpen);
|
|
77
|
-
const [step, setStep] = useState<'upload' | 'review' | 'complete'>('upload');
|
|
78
|
-
const [isProcessing, setIsProcessing] = useState(false);
|
|
79
|
-
const [errors, setErrors] = useState<string[]>([]);
|
|
80
|
-
const [resultData, setResultData] = useState<{ validCount: number; invalidCount: number } | null>(null);
|
|
81
|
-
|
|
82
|
-
const rsiFields = useMemo(() => {
|
|
83
|
-
if (!fields) return undefined;
|
|
84
|
-
|
|
85
|
-
return fields.map(convertFieldToRsi) as RsiField[];
|
|
86
|
-
}, [fields]);
|
|
87
|
-
|
|
88
|
-
const defaultFields = useMemo<RsiField[]>(() => {
|
|
89
|
-
if (rsiFields) return rsiFields;
|
|
90
|
-
|
|
91
|
-
return [
|
|
92
|
-
{ label: 'Column 1', key: 'column1', fieldType: { type: 'input' }, validations: [{ rule: 'required' }] },
|
|
93
|
-
{ label: 'Column 2', key: 'column2', fieldType: { type: 'input' } },
|
|
94
|
-
{ label: 'Column 3', key: 'column3', fieldType: { type: 'input' } },
|
|
95
|
-
];
|
|
96
|
-
}, [rsiFields]);
|
|
97
|
-
|
|
98
|
-
const rsiTranslations = useMemo(() => ({
|
|
99
|
-
uploadStep: {
|
|
100
|
-
title: translations?.uploadStep || String(t('Import Spreadsheet')),
|
|
101
|
-
description: translations?.dragDrop || String(t('Drag and drop your file here')),
|
|
102
|
-
fileFormatError: translations?.supportedFormats || String(t('Supported formats: CSV, XLSX, XLS')),
|
|
103
|
-
maxSizeError: `File size exceeds ${maxFileSize} bytes`,
|
|
104
|
-
},
|
|
105
|
-
selectHeaderStep: {
|
|
106
|
-
title: String(t('Select File')),
|
|
107
|
-
description: String(t('Upload File')),
|
|
108
|
-
},
|
|
109
|
-
matchColumnsStep: {
|
|
110
|
-
title: translations?.reviewStep || String(t('Review Data')),
|
|
111
|
-
description: translations?.reviewDescription || String(t('Review and edit your data before importing')),
|
|
112
|
-
},
|
|
113
|
-
validationStep: {
|
|
114
|
-
title: translations?.confirmStep || String(t('Confirm Import')),
|
|
115
|
-
description: translations?.confirmDescription || String(t('Confirm the data to be imported')),
|
|
116
|
-
},
|
|
117
|
-
}), [translations, t, maxFileSize]);
|
|
118
|
-
|
|
119
|
-
const handleClose = useCallback(() => {
|
|
120
|
-
setIsOpenState(false);
|
|
121
|
-
setStep('upload');
|
|
122
|
-
setResultData(null);
|
|
123
|
-
setErrors([]);
|
|
124
|
-
onClose?.();
|
|
125
|
-
}, [onClose]);
|
|
126
|
-
|
|
127
|
-
const handleSubmit = useCallback(async (data: any, file: File) => {
|
|
128
|
-
setIsProcessing(true);
|
|
129
|
-
setStep('complete');
|
|
130
|
-
|
|
131
|
-
try {
|
|
132
|
-
// Combine valid and invalid data
|
|
133
|
-
const allData = [...data.validData, ...data.invalidData];
|
|
134
|
-
|
|
135
|
-
// Map rows if mapper provided
|
|
136
|
-
const mappedData = mapRows ? mapRows(allData as SpreadsheetRow[]) : (allData as unknown[] as T[]);
|
|
137
|
-
|
|
138
|
-
// Add to data source if provided
|
|
139
|
-
if (dataSource && mappedData.length > 0) {
|
|
140
|
-
for (const row of mappedData) {
|
|
141
|
-
onRowAdded?.(row);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// Set result data
|
|
146
|
-
setResultData({
|
|
147
|
-
validCount: data.validData.length,
|
|
148
|
-
invalidCount: data.invalidData.length,
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
// Callback with loaded data
|
|
152
|
-
onDataLoaded?.(mappedData);
|
|
153
|
-
|
|
154
|
-
setIsProcessing(false);
|
|
155
|
-
} catch (error) {
|
|
156
|
-
setErrors([String(error)]);
|
|
157
|
-
setIsProcessing(false);
|
|
158
|
-
}
|
|
159
|
-
}, [mapRows, dataSource, onRowAdded, onDataLoaded]);
|
|
160
|
-
|
|
161
|
-
const controlledIsOpen = isOpen !== undefined ? isOpen : isOpenState;
|
|
162
|
-
|
|
163
|
-
return (
|
|
164
|
-
<Modal
|
|
165
|
-
opened={controlledIsOpen}
|
|
166
|
-
onClose={handleClose}
|
|
167
|
-
size={step === 'complete' ? 'md' : 'xl'}
|
|
168
|
-
title={title || String(t('Import Spreadsheet'))}
|
|
169
|
-
style={style}
|
|
170
|
-
className={className}
|
|
171
|
-
>
|
|
172
|
-
<Stack gap="md">
|
|
173
|
-
{description && <Text size="sm">{description}</Text>}
|
|
174
|
-
|
|
175
|
-
{errors.length > 0 && (
|
|
176
|
-
<Alert color="red" title={String(t('Error'))}>
|
|
177
|
-
{errors.map((error, i) => (
|
|
178
|
-
<Text key={i} size="sm">{error}</Text>
|
|
179
|
-
))}
|
|
180
|
-
</Alert>
|
|
181
|
-
)}
|
|
182
|
-
|
|
183
|
-
{isProcessing && (
|
|
184
|
-
<Progress value={undefined} size="sm" />
|
|
185
|
-
)}
|
|
186
|
-
|
|
187
|
-
{step === 'complete' && resultData ? (
|
|
188
|
-
<Stack align="center" gap="md">
|
|
189
|
-
<Text size="lg" fw={500}>
|
|
190
|
-
{resultData.validCount} {String(t('rows imported'))}
|
|
191
|
-
</Text>
|
|
192
|
-
{resultData.invalidCount > 0 && (
|
|
193
|
-
<Text size="sm" c="orange">
|
|
194
|
-
{resultData.invalidCount} {String(t('rows skipped'))}
|
|
195
|
-
</Text>
|
|
196
|
-
)}
|
|
197
|
-
<Button onClick={handleClose}>
|
|
198
|
-
{translations?.closeButton || String(t('Close'))}
|
|
199
|
-
</Button>
|
|
200
|
-
</Stack>
|
|
201
|
-
) : (
|
|
202
|
-
<ReactSpreadsheetImport
|
|
203
|
-
isOpen={controlledIsOpen}
|
|
204
|
-
onClose={handleClose}
|
|
205
|
-
onSubmit={handleSubmit}
|
|
206
|
-
fields={defaultFields}
|
|
207
|
-
translations={rsiTranslations}
|
|
208
|
-
maxRecords={maxRows}
|
|
209
|
-
maxFileSize={maxFileSize}
|
|
210
|
-
/>
|
|
211
|
-
)}
|
|
212
|
-
</Stack>
|
|
213
|
-
</Modal>
|
|
214
|
-
);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
// Export types
|
|
218
|
-
export type {
|
|
219
|
-
ArchbaseSpreadsheetImportProps,
|
|
220
|
-
SpreadsheetField,
|
|
221
|
-
SpreadsheetRow,
|
|
222
|
-
SpreadsheetFileType,
|
|
223
|
-
} from './ArchbaseSpreadsheetImport.types';
|