norma-library 0.4.8 → 0.5.0
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/.babelrc.json +1 -1
- package/.husky/commit-msg +4 -0
- package/.prettierignore +11 -0
- package/.prettierrc.json +20 -0
- package/CHANGELOG.md +0 -0
- package/CONTRIBUTING.md +0 -0
- package/README.md +42 -0
- package/commitlint.config.js +1 -0
- package/dist/Button/index.d.ts +9 -0
- package/dist/Button/types.d.ts +18 -0
- package/dist/Card/Card.d.ts +3 -0
- package/dist/Card/CardHeader.d.ts +3 -0
- package/dist/Card/index.d.ts +4 -0
- package/dist/Card/styles.d.ts +546 -0
- package/dist/Card/types.d.ts +8 -0
- package/dist/esm/components/Accordion.d.ts +2 -2
- package/dist/esm/components/Accordion.js +8 -8
- package/dist/esm/components/Accordion.js.map +1 -1
- package/dist/esm/components/Avatar.d.ts +2 -2
- package/dist/esm/components/Avatar.js +7 -7
- package/dist/esm/components/Avatar.js.map +1 -1
- package/dist/esm/components/Badge.d.ts +2 -2
- package/dist/esm/components/Badge.js +5 -5
- package/dist/esm/components/Badge.js.map +1 -1
- package/dist/esm/components/Button.d.ts +2 -2
- package/dist/esm/components/Button.js +10 -10
- package/dist/esm/components/Button.js.map +1 -1
- package/dist/esm/components/Card.d.ts +3 -3
- package/dist/esm/components/Card.js +8 -8
- package/dist/esm/components/Card.js.map +1 -1
- package/dist/esm/components/ChatMessage.d.ts +2 -2
- package/dist/esm/components/ChatMessage.js +35 -35
- package/dist/esm/components/ChatMessage.js.map +1 -1
- package/dist/esm/components/CheckBox.d.ts +2 -2
- package/dist/esm/components/CheckBox.js +5 -5
- package/dist/esm/components/CheckBox.js.map +1 -1
- package/dist/esm/components/DataGrid/base/dropdown.d.ts +4 -0
- package/dist/esm/components/DataGrid/base/dropdown.js +126 -0
- package/dist/esm/components/DataGrid/base/dropdown.js.map +1 -0
- package/dist/esm/components/DataGrid/base/number-filter.d.ts +4 -0
- package/dist/esm/components/DataGrid/base/number-filter.js +30 -0
- package/dist/esm/components/DataGrid/base/number-filter.js.map +1 -0
- package/dist/esm/components/DataGrid/base/sorting.d.ts +5 -0
- package/dist/esm/components/DataGrid/base/sorting.js +15 -0
- package/dist/esm/components/DataGrid/base/sorting.js.map +1 -0
- package/dist/esm/components/DataGrid/icons.d.ts +4 -0
- package/dist/esm/components/DataGrid/icons.js +15 -0
- package/dist/esm/components/DataGrid/icons.js.map +1 -0
- package/dist/esm/components/DataGrid/index.d.ts +5 -0
- package/dist/esm/components/DataGrid/index.js +137 -0
- package/dist/esm/components/DataGrid/index.js.map +1 -0
- package/dist/esm/components/DataGrid/shared.d.ts +20 -0
- package/dist/esm/components/DataGrid/shared.js +128 -0
- package/dist/esm/components/DataGrid/shared.js.map +1 -0
- package/dist/esm/components/DataGrid/styled.d.ts +10 -0
- package/dist/esm/components/DataGrid/styled.js +73 -0
- package/dist/esm/components/DataGrid/styled.js.map +1 -0
- package/dist/esm/components/DatePicker.d.ts +5 -5
- package/dist/esm/components/DatePicker.js +37 -37
- package/dist/esm/components/DatePicker.js.map +1 -1
- package/dist/esm/components/DropDown.d.ts +2 -2
- package/dist/esm/components/DropDown.js +6 -6
- package/dist/esm/components/DropDown.js.map +1 -1
- package/dist/esm/components/IconButton.d.ts +2 -2
- package/dist/esm/components/IconButton.js +7 -7
- package/dist/esm/components/IconButton.js.map +1 -1
- package/dist/esm/components/Icons.d.ts +2 -2
- package/dist/esm/components/Icons.js +10 -10
- package/dist/esm/components/Icons.js.map +1 -1
- package/dist/esm/components/Modal.d.ts +2 -2
- package/dist/esm/components/Modal.js +8 -8
- package/dist/esm/components/Modal.js.map +1 -1
- package/dist/esm/components/Paper.d.ts +2 -2
- package/dist/esm/components/Paper.js +5 -5
- package/dist/esm/components/Paper.js.map +1 -1
- package/dist/esm/components/ProgressBar.d.ts +2 -2
- package/dist/esm/components/ProgressBar.js +11 -11
- package/dist/esm/components/ProgressBar.js.map +1 -1
- package/dist/esm/components/RadioGroup.d.ts +2 -2
- package/dist/esm/components/RadioGroup.js +7 -7
- package/dist/esm/components/RadioGroup.js.map +1 -1
- package/dist/esm/components/RangerSlider.d.ts +2 -2
- package/dist/esm/components/RangerSlider.js +31 -31
- package/dist/esm/components/RangerSlider.js.map +1 -1
- package/dist/esm/components/Select.d.ts +2 -2
- package/dist/esm/components/Select.js +14 -14
- package/dist/esm/components/Select.js.map +1 -1
- package/dist/esm/components/Svgs.d.ts +1 -1
- package/dist/esm/components/Svgs.js +1 -1
- package/dist/esm/components/Svgs.js.map +1 -1
- package/dist/esm/components/Tabs.d.ts +2 -2
- package/dist/esm/components/Tabs.js +25 -26
- package/dist/esm/components/Tabs.js.map +1 -1
- package/dist/esm/components/Tag.d.ts +2 -2
- package/dist/esm/components/Tag.js +8 -8
- package/dist/esm/components/Tag.js.map +1 -1
- package/dist/esm/components/TextField.d.ts +2 -2
- package/dist/esm/components/TextField.js +8 -8
- package/dist/esm/components/TextField.js.map +1 -1
- package/dist/esm/components/TimeLine.d.ts +2 -2
- package/dist/esm/components/TimeLine.js +20 -20
- package/dist/esm/components/TimeLine.js.map +1 -1
- package/dist/esm/components/TimePicker.d.ts +8 -8
- package/dist/esm/components/TimePicker.js +43 -43
- package/dist/esm/components/TimePicker.js.map +1 -1
- package/dist/esm/components/index.d.ts +23 -22
- package/dist/esm/components/index.js +23 -22
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/helpers/alignments.js +7 -7
- package/dist/esm/helpers/borders.js +11 -11
- package/dist/esm/helpers/colors.js +41 -41
- package/dist/esm/helpers/index.d.ts +5 -5
- package/dist/esm/helpers/index.js +5 -5
- package/dist/esm/helpers/sizes.d.ts +1 -1
- package/dist/esm/helpers/sizes.js +39 -39
- package/dist/esm/helpers/sizes.js.map +1 -1
- package/dist/esm/index.d.ts +17 -17
- package/dist/esm/index.js +17 -17
- package/dist/esm/interfaces/Accordion.d.ts +3 -3
- package/dist/esm/interfaces/Avatar.d.ts +6 -6
- package/dist/esm/interfaces/Badge.d.ts +7 -7
- package/dist/esm/interfaces/Button.d.ts +5 -5
- package/dist/esm/interfaces/Card.d.ts +3 -3
- package/dist/esm/interfaces/ChatMessage.d.ts +1 -1
- package/dist/esm/interfaces/CheckBox.d.ts +10 -10
- package/dist/esm/interfaces/DataGrid.d.ts +40 -0
- package/dist/esm/interfaces/DataGrid.js +2 -0
- package/dist/esm/interfaces/DataGrid.js.map +1 -0
- package/dist/esm/interfaces/DatePicker.d.ts +3 -3
- package/dist/esm/interfaces/DropDown.d.ts +4 -4
- package/dist/esm/interfaces/IconButton.d.ts +5 -5
- package/dist/esm/interfaces/Icons.d.ts +3 -3
- package/dist/esm/interfaces/Modal.d.ts +3 -3
- package/dist/esm/interfaces/Paper.d.ts +4 -4
- package/dist/esm/interfaces/ProgressBar.d.ts +5 -5
- package/dist/esm/interfaces/RadioGroup.d.ts +4 -4
- package/dist/esm/interfaces/RangerSlider.d.ts +8 -8
- package/dist/esm/interfaces/Select.d.ts +3 -3
- package/dist/esm/interfaces/Tabs.d.ts +3 -3
- package/dist/esm/interfaces/Tag.d.ts +5 -5
- package/dist/esm/interfaces/TextField.d.ts +12 -12
- package/dist/esm/interfaces/TimeLine.d.ts +3 -3
- package/dist/esm/interfaces/TimePicker.d.ts +3 -3
- package/dist/esm/interfaces/index.d.ts +23 -22
- package/dist/esm/interfaces/index.js +23 -22
- package/dist/esm/interfaces/index.js.map +1 -1
- package/dist/esm/types/index.d.ts +41 -40
- package/dist/esm/types/index.js +2 -2
- package/dist/esm/types/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.es.js +6992 -0
- package/dist/index.es.js.map +1 -0
- package/dist/index.umd.js +266 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/vite.svg +1 -0
- package/docs/index.md +118 -0
- package/package.json +65 -9
- package/src/components/Accordion.tsx +47 -64
- package/src/components/Avatar.tsx +22 -29
- package/src/components/Badge.tsx +19 -22
- package/src/components/Button.tsx +12 -19
- package/src/components/Card.tsx +44 -47
- package/src/components/ChatMessage.tsx +87 -89
- package/src/components/CheckBox.tsx +8 -19
- package/src/components/DataGrid/allData.json +2918 -0
- package/src/components/DataGrid/base/dropdown.tsx +212 -0
- package/src/components/DataGrid/base/number-filter.tsx +43 -0
- package/src/components/DataGrid/base/sorting.tsx +29 -0
- package/src/components/DataGrid/icons.tsx +53 -0
- package/src/components/DataGrid/index.tsx +254 -0
- package/src/components/DataGrid/shared.ts +154 -0
- package/src/components/DataGrid/styled.ts +96 -0
- package/src/components/DataGrid/styles/dropdown.module.css +86 -0
- package/src/components/DataGrid/styles/number-filter.module.css +16 -0
- package/src/components/DataGrid/styles/styles.module.css +107 -0
- package/src/components/DatePicker.tsx +73 -84
- package/src/components/DropDown.tsx +31 -38
- package/src/components/IconButton.tsx +12 -29
- package/src/components/Icons.tsx +82 -87
- package/src/components/Modal.tsx +114 -123
- package/src/components/Paper.tsx +19 -22
- package/src/components/ProgressBar.tsx +54 -63
- package/src/components/RadioGroup.tsx +47 -55
- package/src/components/RangerSlider.tsx +70 -81
- package/src/components/Select.tsx +82 -98
- package/src/components/Svgs.tsx +498 -522
- package/src/components/Tabs.tsx +111 -140
- package/src/components/Tag.tsx +37 -45
- package/src/components/TextField.tsx +11 -22
- package/src/components/TimeLine.tsx +93 -103
- package/src/components/TimePicker.tsx +84 -95
- package/src/components/index.ts +23 -22
- package/src/helpers/alignments.ts +7 -7
- package/src/helpers/borders.ts +11 -11
- package/src/helpers/colors.ts +42 -42
- package/src/helpers/index.ts +5 -5
- package/src/helpers/sizes.ts +39 -46
- package/src/index.ts +17 -17
- package/src/interfaces/Accordion.ts +12 -12
- package/src/interfaces/Avatar.tsx +15 -18
- package/src/interfaces/Badge.ts +19 -32
- package/src/interfaces/Button.ts +5 -10
- package/src/interfaces/Card.ts +11 -11
- package/src/interfaces/ChatMessage.ts +12 -12
- package/src/interfaces/CheckBox.ts +12 -18
- package/src/interfaces/DataGrid.ts +46 -0
- package/src/interfaces/DatePicker.ts +13 -13
- package/src/interfaces/DropDown.ts +14 -14
- package/src/interfaces/IconButton.ts +5 -10
- package/src/interfaces/Icons.ts +17 -17
- package/src/interfaces/Modal.ts +15 -15
- package/src/interfaces/Paper.ts +12 -12
- package/src/interfaces/ProgressBar.ts +18 -25
- package/src/interfaces/RadioGroup.ts +22 -28
- package/src/interfaces/RangerSlider.ts +21 -32
- package/src/interfaces/Select.ts +17 -17
- package/src/interfaces/Tabs.ts +19 -24
- package/src/interfaces/Tag.ts +17 -17
- package/src/interfaces/TextField.ts +14 -34
- package/src/interfaces/TimeLine.ts +11 -16
- package/src/interfaces/TimePicker.ts +13 -13
- package/src/interfaces/index.ts +23 -22
- package/src/sample-data.json +178 -0
- package/src/stories/Accordion.stories.tsx +65 -65
- package/src/stories/Avatar.stories.tsx +123 -139
- package/src/stories/Badge.stories.tsx +39 -47
- package/src/stories/Button.stories.tsx +18 -26
- package/src/stories/Card.stories.tsx +40 -55
- package/src/stories/ChatMessage.stories.tsx +84 -85
- package/src/stories/CheckBox.stories.tsx +17 -23
- package/src/stories/DataGrid.stories.tsx +28 -0
- package/src/stories/DatePicker.stories.tsx +50 -77
- package/src/stories/DropDown.stories.tsx +57 -57
- package/src/stories/IconButton.stories.tsx +78 -114
- package/src/stories/Modal.stories.tsx +190 -190
- package/src/stories/Paper.stories.tsx +53 -53
- package/src/stories/ProgressBar.stories.tsx +95 -139
- package/src/stories/RadioGroup.stories.tsx +21 -28
- package/src/stories/RangerSlider.stories.tsx +58 -68
- package/src/stories/Select.stories.tsx +100 -128
- package/src/stories/Tabs.stories.tsx +62 -62
- package/src/stories/Tag.stories.tsx +56 -74
- package/src/stories/TextField.stories.tsx +54 -189
- package/src/stories/TimeLine.stories.tsx +35 -43
- package/src/stories/TimePicker.stories.tsx +87 -113
- package/src/types/index.ts +92 -154
- package/tsconfig.json +1 -1
- package/buildcache/front-end +0 -1
- package/norma-library.tar +0 -0
- package/postcss.config.js +0 -6
- package/tailwind.config.js +0 -58
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { DataSourceItem } from '@/interfaces';
|
|
2
|
+
|
|
3
|
+
export function groupByDataSource(dataSource: DataSourceItem[], key: string): (string | number)[] {
|
|
4
|
+
const groupedValues: (string | number)[] = [];
|
|
5
|
+
|
|
6
|
+
dataSource.forEach(item => {
|
|
7
|
+
const value = item[key];
|
|
8
|
+
const existingGroup = groupedValues.find(group => group === value);
|
|
9
|
+
|
|
10
|
+
if (!existingGroup) {
|
|
11
|
+
groupedValues.push(value);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
return groupedValues;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function sortDataSourceByColumn(jsonData: any[], column: string, order: string): any[] {
|
|
19
|
+
return jsonData.sort((a, b) => {
|
|
20
|
+
const valueA = a[column];
|
|
21
|
+
const valueB = b[column];
|
|
22
|
+
|
|
23
|
+
if (typeof valueA === 'string' && typeof valueB === 'string') {
|
|
24
|
+
if (order === 'asc') {
|
|
25
|
+
return valueA.localeCompare(valueB);
|
|
26
|
+
} else if (order === 'desc') {
|
|
27
|
+
return valueB.localeCompare(valueA);
|
|
28
|
+
}
|
|
29
|
+
} else if (typeof valueA === 'number' && typeof valueB === 'number') {
|
|
30
|
+
if (order === 'asc') {
|
|
31
|
+
return valueA - valueB;
|
|
32
|
+
} else if (order === 'desc') {
|
|
33
|
+
return valueB - valueA;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return 0;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function filterDataSource(
|
|
42
|
+
dataSource: DataSourceItem[],
|
|
43
|
+
column: string,
|
|
44
|
+
filter: string,
|
|
45
|
+
exactTime: boolean = false,
|
|
46
|
+
): DataSourceItem[] {
|
|
47
|
+
return dataSource.filter(item => {
|
|
48
|
+
const value = item[column];
|
|
49
|
+
if (typeof value === 'string' || value.constructor === Date) {
|
|
50
|
+
const stringValue = (value as string).toString().toLowerCase();
|
|
51
|
+
const filterValue = filter.toLowerCase();
|
|
52
|
+
|
|
53
|
+
if (exactTime && filterValue.length === 5) {
|
|
54
|
+
return stringValue === filterValue;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (stringValue.includes(filterValue)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (stringValue.includes(':') && filterValue.includes(':')) {
|
|
62
|
+
const [hour, minute] = stringValue.split(':');
|
|
63
|
+
const [filterHour, filterMinute] = filterValue.split(':');
|
|
64
|
+
|
|
65
|
+
if (filterValue.length === 5) {
|
|
66
|
+
return stringValue === filterValue;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (filterHour.length === 1 && hour === filterHour) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (filterMinute.length === 1 && minute === filterMinute) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
} else if (typeof value === 'number') {
|
|
78
|
+
const numberValue = (value as number).toString();
|
|
79
|
+
return numberValue.includes(filter);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return false;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export function filterItemsByColumn(dataSource: any[], column: string, filterValues: any[]): any[] {
|
|
87
|
+
return dataSource.filter(item => {
|
|
88
|
+
const columnValue = item[column];
|
|
89
|
+
return filterValues.includes(columnValue);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// PROVISORIO BAIXO
|
|
94
|
+
export function generateRandomDataSource(numRows: number) {
|
|
95
|
+
const campanhas = ['Campanha 1', 'Campanha 2', 'Campanha 3', 'Campanha 4', 'Campanha 5'];
|
|
96
|
+
const agents = [16321, 16322, 16323, 16324, 16325];
|
|
97
|
+
const disposals = ['Tabulação 1', 'Tabulação 2', 'Tabulação 3', 'Tabulação 4', 'Tabulação 5'];
|
|
98
|
+
|
|
99
|
+
const dataSource = [];
|
|
100
|
+
|
|
101
|
+
for (let i = 0; i < numRows; i++) {
|
|
102
|
+
const data = generateRandomDate();
|
|
103
|
+
const duration = generateRandomDuration();
|
|
104
|
+
const campanha = getRandomElement(campanhas);
|
|
105
|
+
const agente = getRandomElement(agents);
|
|
106
|
+
const ani = generateRandomNumber(50000000, 60000000);
|
|
107
|
+
const dnis = generateRandomNumber(100000, 999999);
|
|
108
|
+
const disposition = getRandomElement(disposals);
|
|
109
|
+
const origem = generateRandomNumber(12000, 13000);
|
|
110
|
+
const id = i + 1;
|
|
111
|
+
|
|
112
|
+
const item = {
|
|
113
|
+
data,
|
|
114
|
+
duration,
|
|
115
|
+
campanha,
|
|
116
|
+
agente,
|
|
117
|
+
ani,
|
|
118
|
+
dnis,
|
|
119
|
+
disposition,
|
|
120
|
+
origem,
|
|
121
|
+
id,
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
dataSource.push(item);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return dataSource;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export function generateRandomDate() {
|
|
131
|
+
const startDate = new Date('2020-01-01');
|
|
132
|
+
const currentDate = new Date();
|
|
133
|
+
const randomTimestamp = Math.random() * (currentDate.getTime() - startDate.getTime()) + startDate.getTime();
|
|
134
|
+
const randomDate = new Date(randomTimestamp);
|
|
135
|
+
const day = randomDate.getDate().toString().padStart(2, '0');
|
|
136
|
+
const month = (randomDate.getMonth() + 1).toString().padStart(2, '0');
|
|
137
|
+
const year = randomDate.getFullYear();
|
|
138
|
+
return `${day}/${month}/${year}`;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export function generateRandomDuration() {
|
|
142
|
+
const hours = generateRandomNumber(0, 10).toString().padStart(2, '0');
|
|
143
|
+
const minutes = generateRandomNumber(0, 59).toString().padStart(2, '0');
|
|
144
|
+
return `${hours}:${minutes}`;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export function generateRandomNumber(min: number, max: number) {
|
|
148
|
+
return Math.floor(Math.random() * (max - min + 1) + min);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export function getRandomElement(array: any[]) {
|
|
152
|
+
const randomIndex = Math.floor(Math.random() * array.length);
|
|
153
|
+
return array[randomIndex];
|
|
154
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Box,
|
|
3
|
+
Button,
|
|
4
|
+
Typography,
|
|
5
|
+
TableRow,
|
|
6
|
+
TableCell,
|
|
7
|
+
tableCellClasses,
|
|
8
|
+
TypographyProps,
|
|
9
|
+
BoxProps,
|
|
10
|
+
ButtonProps,
|
|
11
|
+
TableCellProps,
|
|
12
|
+
TableRowProps,
|
|
13
|
+
} from '@mui/material';
|
|
14
|
+
|
|
15
|
+
import { StyledComponent } from '@emotion/styled';
|
|
16
|
+
import { styled } from '@mui/material/styles';
|
|
17
|
+
|
|
18
|
+
const DataGridHeaderStyled: StyledComponent<BoxProps> = styled(Box)({
|
|
19
|
+
display: 'flex',
|
|
20
|
+
position: 'relative',
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const TotalRecordsStyled: StyledComponent<TypographyProps> = styled(Typography)({
|
|
24
|
+
paddingTop: '24px',
|
|
25
|
+
paddingBottom: '24px',
|
|
26
|
+
paddingLeft: '15px',
|
|
27
|
+
font: 'normal normal normal 18px/24px Source Sans Pro',
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const HeaderCogStyled: StyledComponent<ButtonProps> = styled(Button)({
|
|
31
|
+
position: 'absolute',
|
|
32
|
+
top: '24px',
|
|
33
|
+
right: '30px',
|
|
34
|
+
border: '0',
|
|
35
|
+
padding: 0,
|
|
36
|
+
background: 'none',
|
|
37
|
+
width: '24px',
|
|
38
|
+
height: '24px',
|
|
39
|
+
cursor: 'pointer',
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const TableCellStyled: StyledComponent<TableCellProps> = styled(TableCell)(() => ({
|
|
43
|
+
[`&.${tableCellClasses.head}`]: {
|
|
44
|
+
backgroundColor: '#FFF',
|
|
45
|
+
color: '#333',
|
|
46
|
+
font: 'normal normal 600 14px/20px Source Sans Pro',
|
|
47
|
+
position: 'relative',
|
|
48
|
+
fontWeight: 'bold',
|
|
49
|
+
padding: 15,
|
|
50
|
+
},
|
|
51
|
+
[`&.${tableCellClasses.body}`]: {
|
|
52
|
+
fontSize: 14,
|
|
53
|
+
},
|
|
54
|
+
}));
|
|
55
|
+
|
|
56
|
+
const TableRowStyled: StyledComponent<TableRowProps> = styled(TableRow)(({ theme }) => ({
|
|
57
|
+
'&:nth-of-type(odd)': {
|
|
58
|
+
backgroundColor: theme.palette.action.hover,
|
|
59
|
+
},
|
|
60
|
+
// hide last border
|
|
61
|
+
'&:last-child td, &:last-child th': {
|
|
62
|
+
border: 0,
|
|
63
|
+
},
|
|
64
|
+
}));
|
|
65
|
+
|
|
66
|
+
const ButtonStyled: StyledComponent<ButtonProps> = styled(Button)({
|
|
67
|
+
fontWeight: 'bold',
|
|
68
|
+
margin: 0,
|
|
69
|
+
padding: 0,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
const DropDownStyled: StyledComponent<BoxProps> = styled(Box)({
|
|
73
|
+
position: 'absolute',
|
|
74
|
+
minHeight: '220px',
|
|
75
|
+
top: '30px',
|
|
76
|
+
left: '-50%',
|
|
77
|
+
width: '292px',
|
|
78
|
+
display: 'flex',
|
|
79
|
+
background: '#fff',
|
|
80
|
+
zIndex: 9,
|
|
81
|
+
border: 0,
|
|
82
|
+
boxShadow: '0 0 10px #ccc',
|
|
83
|
+
padding: '5px',
|
|
84
|
+
flexDirection: 'column',
|
|
85
|
+
justifyContent: 'flex-start',
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
export {
|
|
89
|
+
DataGridHeaderStyled,
|
|
90
|
+
TotalRecordsStyled,
|
|
91
|
+
HeaderCogStyled,
|
|
92
|
+
TableCellStyled,
|
|
93
|
+
TableRowStyled,
|
|
94
|
+
ButtonStyled,
|
|
95
|
+
DropDownStyled,
|
|
96
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
.dropdown {
|
|
2
|
+
position: absolute;
|
|
3
|
+
min-height: 330px;
|
|
4
|
+
top: 55px;
|
|
5
|
+
left: 0;
|
|
6
|
+
width: 220px;
|
|
7
|
+
display: flex;
|
|
8
|
+
background: #fff;
|
|
9
|
+
z-index: 9;
|
|
10
|
+
border: 0;
|
|
11
|
+
box-shadow: 0 0 10px #ccc;
|
|
12
|
+
padding: 5px 10px;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
text-align: left;
|
|
15
|
+
justify-content: flex-start;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.dropdown ul ol {
|
|
19
|
+
margin: 0;
|
|
20
|
+
padding: 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.dropdown li {
|
|
24
|
+
list-style: none;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.dropdown li button {
|
|
28
|
+
width: 100%;
|
|
29
|
+
margin: 4px 0;
|
|
30
|
+
position: relative;
|
|
31
|
+
font-weight: 400;
|
|
32
|
+
font-family: "Source Sans Pro";
|
|
33
|
+
}
|
|
34
|
+
.dropdown li button span {
|
|
35
|
+
position: absolute;
|
|
36
|
+
right: 0;
|
|
37
|
+
}
|
|
38
|
+
.dropdown li.search {
|
|
39
|
+
position: relative;
|
|
40
|
+
padding: 10px 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.dropdown li.search button {
|
|
44
|
+
position: absolute;
|
|
45
|
+
top: 13px;
|
|
46
|
+
right: 5px;
|
|
47
|
+
width: 18px;
|
|
48
|
+
height: 18px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.dropdown li.search button svg {
|
|
52
|
+
width: 16px;
|
|
53
|
+
height: 16px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.boxListDataColumn {
|
|
57
|
+
background: #f2f2f2;
|
|
58
|
+
padding: 5px;
|
|
59
|
+
overflow: auto;
|
|
60
|
+
width: 100%;
|
|
61
|
+
height: 120px;
|
|
62
|
+
}
|
|
63
|
+
.boxListDataColumn li {
|
|
64
|
+
padding: 5px 0;
|
|
65
|
+
|
|
66
|
+
height: 20px;
|
|
67
|
+
line-height: 20px;
|
|
68
|
+
font: normal normal normal 16px/22px "Source Sans Pro";
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.dropdown button.submit {
|
|
72
|
+
width: 80px;
|
|
73
|
+
border: 1px solid;
|
|
74
|
+
border-radius: 3px;
|
|
75
|
+
margin: 5px 0 0;
|
|
76
|
+
position: absolute;
|
|
77
|
+
bottom: 10px;
|
|
78
|
+
right: 10px;
|
|
79
|
+
text-align: center !important;
|
|
80
|
+
padding: 5px 10px;
|
|
81
|
+
clear: both;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.dropdown .dropDown_numbers {
|
|
85
|
+
position: relative;
|
|
86
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
.boxNumberFilter {
|
|
2
|
+
position: absolute;
|
|
3
|
+
height: 190px;
|
|
4
|
+
top: 0;
|
|
5
|
+
left: 220px;
|
|
6
|
+
width: 240px;
|
|
7
|
+
display: flex;
|
|
8
|
+
background: #fff;
|
|
9
|
+
z-index: 9;
|
|
10
|
+
border: 0;
|
|
11
|
+
box-shadow: 0 0 10px #ccc;
|
|
12
|
+
padding: 5px 10px;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
text-align: left;
|
|
15
|
+
justify-content: flex-start;
|
|
16
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
@import '../../../../styles/global.css';
|
|
2
|
+
|
|
3
|
+
.tableHeader {
|
|
4
|
+
display: flex;
|
|
5
|
+
position: relative;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.tableHeader h3 {
|
|
9
|
+
padding-top: 24px;
|
|
10
|
+
padding-bottom: 24px;
|
|
11
|
+
padding-left: 15px;
|
|
12
|
+
font: normal normal normal 18px/24px 'Source Sans Pro';
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.button {
|
|
16
|
+
position: absolute;
|
|
17
|
+
top: 24px;
|
|
18
|
+
right: 30px;
|
|
19
|
+
border: 0;
|
|
20
|
+
background: none;
|
|
21
|
+
width: 16px;
|
|
22
|
+
height: 16px;
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.table {
|
|
27
|
+
display: table;
|
|
28
|
+
width: 100%;
|
|
29
|
+
margin-bottom: 1rem;
|
|
30
|
+
color: var(--table-color);
|
|
31
|
+
vertical-align: top;
|
|
32
|
+
border-color: var(--table-border-color);
|
|
33
|
+
caption-side: bottom;
|
|
34
|
+
border-collapse: collapse;
|
|
35
|
+
text-indent: initial;
|
|
36
|
+
border-spacing: 2px;
|
|
37
|
+
text-indent: initial;
|
|
38
|
+
border-spacing: 2px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.table > :not(caption) > * > * {
|
|
42
|
+
padding: 0.5rem 0.5rem;
|
|
43
|
+
background-color: var(--table-bg);
|
|
44
|
+
box-shadow: inset 0 0 0 9999px var(--table-accent-bg);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.table > thead {
|
|
48
|
+
vertical-align: bottom;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.table thead {
|
|
52
|
+
display: table-header-group;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.table tr {
|
|
56
|
+
display: table-row;
|
|
57
|
+
vertical-align: inherit;
|
|
58
|
+
height: 20px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.standard tr:nth-child(even),
|
|
62
|
+
.standard-divider tr:nth-child(even) {
|
|
63
|
+
background: var(--table-striped-bg) 0% 0% no-repeat padding-box;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.standard-divider tr td {
|
|
67
|
+
border-right: 1px solid --table-bg;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.table th {
|
|
71
|
+
display: table-cell;
|
|
72
|
+
vertical-align: inherit;
|
|
73
|
+
font-weight: bold;
|
|
74
|
+
border-bottom-width: 1px;
|
|
75
|
+
position: relative;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.table th button {
|
|
79
|
+
background: none;
|
|
80
|
+
border: 0;
|
|
81
|
+
cursor: pointer;
|
|
82
|
+
font: normal normal 600 16px/22px 'Source Sans Pro';
|
|
83
|
+
text-align: left;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.table th img {
|
|
87
|
+
position: absolute;
|
|
88
|
+
top: 22px;
|
|
89
|
+
right: 15px;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.table th,
|
|
93
|
+
.table td {
|
|
94
|
+
text-align: inherit;
|
|
95
|
+
text-align: -webkit-match-parent;
|
|
96
|
+
position: relative;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.table td {
|
|
100
|
+
font: normal normal normal 16px/22px 'Source Sans Pro';
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.table tbody {
|
|
104
|
+
display: table-row-group;
|
|
105
|
+
vertical-align: middle;
|
|
106
|
+
border-color: inherit;
|
|
107
|
+
}
|
|
@@ -1,84 +1,73 @@
|
|
|
1
|
-
import React, { useMemo } from
|
|
2
|
-
import { ThemeProvider, useMediaQuery } from
|
|
3
|
-
import { DemoContainer } from
|
|
4
|
-
import { AdapterDayjs } from
|
|
5
|
-
import { LocalizationProvider } from
|
|
6
|
-
import { DatePicker as MuiDatePicker } from
|
|
7
|
-
import { MobileDatePicker as MuiMobileDatePicker } from
|
|
8
|
-
import { DesktopDatePicker as MuiDesktopDatePicker } from
|
|
9
|
-
import { DatePickerBaseProps } from
|
|
10
|
-
import { themes } from
|
|
11
|
-
import { styled } from
|
|
12
|
-
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
|
|
17
|
-
const MuiDatePickerStyled = styled(MuiDatePicker)({
|
|
18
|
-
|
|
19
|
-
border:
|
|
20
|
-
borderRadius: 0,
|
|
21
|
-
borderBottom:
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
backgroundColor:
|
|
25
|
-
padding:
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
const MuiMobileDatePickerStyled = styled(MuiMobileDatePicker)({
|
|
30
|
-
|
|
31
|
-
border:
|
|
32
|
-
borderRadius: 0,
|
|
33
|
-
borderBottom:
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
backgroundColor:
|
|
37
|
-
padding:
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
const MuiDesktopDatePickerStyled = styled(MuiDesktopDatePicker)({
|
|
42
|
-
|
|
43
|
-
border:
|
|
44
|
-
borderRadius: 0,
|
|
45
|
-
borderBottom:
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
backgroundColor:
|
|
49
|
-
padding:
|
|
50
|
-
},
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
export const DatePicker = ({
|
|
54
|
-
label,
|
|
55
|
-
format =
|
|
56
|
-
language =
|
|
57
|
-
variant =
|
|
58
|
-
}: DatePickerBaseProps) => {
|
|
59
|
-
const prefersDarkMode = useMediaQuery(
|
|
60
|
-
const theme = useMemo(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
{variant === "mobile" && (
|
|
75
|
-
<MuiMobileDatePickerStyled label={label} format={format} />
|
|
76
|
-
)}
|
|
77
|
-
{variant === "desktop" && (
|
|
78
|
-
<MuiDesktopDatePickerStyled label={label} format={format} />
|
|
79
|
-
)}
|
|
80
|
-
</DemoContainer>
|
|
81
|
-
</LocalizationProvider>
|
|
82
|
-
</ThemeProvider>
|
|
83
|
-
);
|
|
84
|
-
};
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { ThemeProvider, useMediaQuery } from '@mui/material';
|
|
3
|
+
import { DemoContainer } from '@mui/x-date-pickers/internals/demo';
|
|
4
|
+
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
|
|
5
|
+
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
|
|
6
|
+
import { DatePicker as MuiDatePicker } from '@mui/x-date-pickers/DatePicker';
|
|
7
|
+
import { MobileDatePicker as MuiMobileDatePicker } from '@mui/x-date-pickers/MobileDatePicker';
|
|
8
|
+
import { DesktopDatePicker as MuiDesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker';
|
|
9
|
+
import { DatePickerBaseProps } from '../interfaces';
|
|
10
|
+
import { themes } from '../helpers';
|
|
11
|
+
import { styled } from '@mui/material/styles';
|
|
12
|
+
|
|
13
|
+
import 'dayjs/locale/pt-br';
|
|
14
|
+
import 'dayjs/locale/en';
|
|
15
|
+
import 'dayjs/locale/es';
|
|
16
|
+
|
|
17
|
+
const MuiDatePickerStyled = styled(MuiDatePicker)({
|
|
18
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
19
|
+
border: 'none',
|
|
20
|
+
borderRadius: 0,
|
|
21
|
+
borderBottom: '1px solid #666666',
|
|
22
|
+
},
|
|
23
|
+
'& .MuiFormLabel-root': {
|
|
24
|
+
backgroundColor: '#fff',
|
|
25
|
+
padding: '0 5px',
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
const MuiMobileDatePickerStyled = styled(MuiMobileDatePicker)({
|
|
30
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
31
|
+
border: 'none',
|
|
32
|
+
borderRadius: 0,
|
|
33
|
+
borderBottom: '1px solid #666666',
|
|
34
|
+
},
|
|
35
|
+
'& .MuiFormLabel-root': {
|
|
36
|
+
backgroundColor: '#fff',
|
|
37
|
+
padding: '0 5px',
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
const MuiDesktopDatePickerStyled = styled(MuiDesktopDatePicker)({
|
|
42
|
+
'& .MuiOutlinedInput-notchedOutline': {
|
|
43
|
+
border: 'none',
|
|
44
|
+
borderRadius: 0,
|
|
45
|
+
borderBottom: '1px solid #666666',
|
|
46
|
+
},
|
|
47
|
+
'& .MuiFormLabel-root': {
|
|
48
|
+
backgroundColor: '#fff',
|
|
49
|
+
padding: '0 5px',
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
export const DatePicker = ({
|
|
54
|
+
label,
|
|
55
|
+
format = 'DD/MM/YYYY',
|
|
56
|
+
language = 'pt-br',
|
|
57
|
+
variant = 'desktop',
|
|
58
|
+
}: DatePickerBaseProps) => {
|
|
59
|
+
const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
|
|
60
|
+
const theme = useMemo(() => (prefersDarkMode ? themes.light : themes.dark), [prefersDarkMode]);
|
|
61
|
+
|
|
62
|
+
return (
|
|
63
|
+
<ThemeProvider theme={theme}>
|
|
64
|
+
<LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={language}>
|
|
65
|
+
<DemoContainer components={['TimePicker', 'MobileTimePicker', 'DesktopTimePicker']}>
|
|
66
|
+
{variant === 'responsive' && <MuiDatePickerStyled label={label} format={format} />}
|
|
67
|
+
{variant === 'mobile' && <MuiMobileDatePickerStyled label={label} format={format} />}
|
|
68
|
+
{variant === 'desktop' && <MuiDesktopDatePickerStyled label={label} format={format} />}
|
|
69
|
+
</DemoContainer>
|
|
70
|
+
</LocalizationProvider>
|
|
71
|
+
</ThemeProvider>
|
|
72
|
+
);
|
|
73
|
+
};
|
|
@@ -1,38 +1,31 @@
|
|
|
1
|
-
import React, { useMemo } from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
>
|
|
33
|
-
{children}
|
|
34
|
-
</DropDownStyled>
|
|
35
|
-
</>
|
|
36
|
-
</ThemeProvider>
|
|
37
|
-
);
|
|
38
|
-
};
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { Menu as MuiDropDown, ThemeProvider, useMediaQuery } from '@mui/material';
|
|
3
|
+
import { DropDownBaseProps } from '../interfaces';
|
|
4
|
+
import { themes } from '../helpers';
|
|
5
|
+
import { styled } from '@mui/material/styles';
|
|
6
|
+
|
|
7
|
+
const DropDownStyled = styled(MuiDropDown)({});
|
|
8
|
+
|
|
9
|
+
export const DropDown = ({ open, children, ...props }: DropDownBaseProps) => {
|
|
10
|
+
const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
|
|
11
|
+
const theme = useMemo(() => (prefersDarkMode ? themes.light : themes.dark), [prefersDarkMode]);
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<ThemeProvider theme={theme}>
|
|
15
|
+
<>
|
|
16
|
+
<DropDownStyled
|
|
17
|
+
open
|
|
18
|
+
id="basic-menu"
|
|
19
|
+
anchorEl={props.anchorEl}
|
|
20
|
+
onClose={props.onClose}
|
|
21
|
+
MenuListProps={{
|
|
22
|
+
'aria-labelledby': 'basic-button',
|
|
23
|
+
}}
|
|
24
|
+
{...props}
|
|
25
|
+
>
|
|
26
|
+
{children}
|
|
27
|
+
</DropDownStyled>
|
|
28
|
+
</>
|
|
29
|
+
</ThemeProvider>
|
|
30
|
+
);
|
|
31
|
+
};
|