venice-ui 1.0.42 → 1.0.45

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.
Files changed (48) hide show
  1. package/dist/cjs/Theme/Theme.js +14 -1
  2. package/dist/cjs/components/Chips/Chips.js +20 -0
  3. package/dist/cjs/components/Chips/Chips.styles.js +21 -0
  4. package/dist/cjs/components/Chips/index.js +17 -0
  5. package/dist/cjs/components/Filters/Filters.js +198 -0
  6. package/dist/cjs/components/Filters/Filters.styles.js +32 -0
  7. package/dist/cjs/components/Filters/filtersHelper.js +51 -0
  8. package/dist/cjs/components/Filters/index.js +18 -0
  9. package/dist/cjs/components/Icons/IconsPath.js +2 -0
  10. package/dist/cjs/components/Table/Table.js +107 -0
  11. package/dist/cjs/components/Table/Table.styles.js +69 -0
  12. package/dist/cjs/components/Table/index.js +17 -0
  13. package/dist/cjs/components/Table/tableHelper.js +29 -0
  14. package/dist/cjs/components/Typography/Typography.styles.js +2 -2
  15. package/dist/cjs/components/common/commonComponents.js +1 -0
  16. package/dist/cjs/index.js +3 -0
  17. package/dist/esm/Theme/Theme.js +14 -1
  18. package/dist/esm/components/Chips/Chips.js +13 -0
  19. package/dist/esm/components/Chips/Chips.styles.js +15 -0
  20. package/dist/esm/components/Chips/index.js +1 -0
  21. package/dist/esm/components/Filters/Filters.js +171 -0
  22. package/dist/esm/components/Filters/Filters.styles.js +26 -0
  23. package/dist/esm/components/Filters/filtersHelper.js +43 -0
  24. package/dist/esm/components/Filters/index.js +2 -0
  25. package/dist/esm/components/Icons/IconsPath.js +2 -0
  26. package/dist/esm/components/Table/Table.js +80 -0
  27. package/dist/esm/components/Table/Table.styles.js +63 -0
  28. package/dist/esm/components/Table/index.js +1 -0
  29. package/dist/esm/components/Table/tableHelper.js +23 -0
  30. package/dist/esm/components/Typography/Typography.styles.js +2 -2
  31. package/dist/esm/components/common/commonComponents.js +1 -0
  32. package/dist/esm/index.js +3 -0
  33. package/dist/types/Theme/Theme.d.ts +11 -0
  34. package/dist/types/components/Chips/Chips.d.ts +8 -0
  35. package/dist/types/components/Chips/Chips.styles.d.ts +6 -0
  36. package/dist/types/components/Chips/index.d.ts +1 -0
  37. package/dist/types/components/Filters/Filters.d.ts +27 -0
  38. package/dist/types/components/Filters/Filters.styles.d.ts +5 -0
  39. package/dist/types/components/Filters/filtersHelper.d.ts +8 -0
  40. package/dist/types/components/Filters/index.d.ts +2 -0
  41. package/dist/types/components/Icons/IconsPath.d.ts +2 -0
  42. package/dist/types/components/Table/Table.d.ts +33 -0
  43. package/dist/types/components/Table/Table.styles.d.ts +23 -0
  44. package/dist/types/components/Table/index.d.ts +1 -0
  45. package/dist/types/components/Table/tableHelper.d.ts +5 -0
  46. package/dist/types/components/common/commonComponents.d.ts +1 -0
  47. package/dist/types/index.d.ts +3 -0
  48. package/package.json +3 -1
@@ -12,6 +12,7 @@ exports.Theme = {
12
12
  black: "#333333",
13
13
  gray_1: "#b7b7b7",
14
14
  gray_2: "#e3e3e3",
15
+ gray_3: '#f3f3f3',
15
16
  overlayer: 'rgba(0,0,0,0.4)',
16
17
  red: '#ad1616'
17
18
  },
@@ -79,5 +80,17 @@ exports.mainTheme = {
79
80
  contentBackground: exports.Theme.colors.white,
80
81
  // selector / dropdown
81
82
  optionActiveColor: exports.Theme.colors.primary,
82
- optionHoverBackground: (0, polished_1.lighten)(0.3, exports.Theme.colors.primary)
83
+ optionHoverBackground: (0, polished_1.lighten)(0.3, exports.Theme.colors.primary),
84
+ //table
85
+ tableBorderColor: exports.Theme.colors.gray_2,
86
+ tableHeaderBackground: exports.Theme.colors.white,
87
+ tableHeaderActiveBackground: (0, polished_1.lighten)(0.3, exports.Theme.colors.primary),
88
+ tableCellBackground: exports.Theme.colors.white,
89
+ tableCellEvenBackground: exports.Theme.colors.gray_3,
90
+ tableCellHoverBackground: (0, polished_1.lighten)(0.3, exports.Theme.colors.primary),
91
+ tableCellActiveBackground: (0, polished_1.lighten)(0.3, exports.Theme.colors.primary),
92
+ tableCellSortIcon: exports.Theme.colors.primary,
93
+ // chips
94
+ chipsNeutralBackground: exports.Theme.colors.primary,
95
+ chipsNeutralTextColor: exports.Theme.colors.white
83
96
  };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Chips = void 0;
7
+ const Aligment_1 = require("../Aligment");
8
+ const react_1 = __importDefault(require("react"));
9
+ const styled_components_1 = require("styled-components");
10
+ const Theme_1 = require("../../Theme");
11
+ const Chips_styles_1 = require("./Chips.styles");
12
+ const Icons_1 = require("../Icons");
13
+ const Chips = ({ theme = Theme_1.mainTheme, label, handleClose, }) => {
14
+ return (react_1.default.createElement(styled_components_1.ThemeProvider, { theme: theme },
15
+ react_1.default.createElement(Chips_styles_1.ChipsElement, { onClick: () => handleClose() },
16
+ react_1.default.createElement(Aligment_1.Aligment, { gap: 4 },
17
+ react_1.default.createElement(Chips_styles_1.ChipsLabel, null, label),
18
+ react_1.default.createElement(Icons_1.Icon, { name: 'close', color: theme.chipsNeutralTextColor, size: 14 })))));
19
+ };
20
+ exports.Chips = Chips;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ChipsLabel = exports.ChipsElement = void 0;
7
+ const styled_components_1 = __importDefault(require("styled-components"));
8
+ const Theme_1 = require("../../Theme");
9
+ exports.ChipsElement = styled_components_1.default.div `
10
+ display:inline-block;
11
+ cursor: pointer;
12
+ background-color:${p => p.theme.chipsNeutralBackground};
13
+ color:${p => p.theme.chipsNeutralTextColor};
14
+ padding:4px 8px;
15
+ width:auto;
16
+ box-sizing: border-box;
17
+ border-radius:30px;
18
+ `;
19
+ exports.ChipsLabel = styled_components_1.default.div `
20
+ font-size:${Theme_1.Theme.fontSize.s}
21
+ `;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Chips"), exports);
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Filters = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const styled_components_1 = require("styled-components");
29
+ const Typography_1 = require("../Typography");
30
+ const Aligment_1 = require("../Aligment");
31
+ const Icons_1 = require("../Icons");
32
+ const Modal_1 = require("../Modal");
33
+ const Filters_styles_1 = require("./Filters.styles");
34
+ const Theme_1 = require("../../Theme");
35
+ const common_1 = require("../common");
36
+ const Input_1 = require("../Input");
37
+ const Chips_1 = require("../Chips");
38
+ const Filters = ({ theme = Theme_1.mainTheme, title = 'Select filters', labelConfirm = 'Approve', labelClose = "Cancel", filters = [], labelClearAll = 'Clear all filters', handleSubmitFilters }) => {
39
+ const generateStateObj = () => {
40
+ const obj = {};
41
+ filters.forEach((filter) => {
42
+ obj[filter.name] = {
43
+ name: filter.name,
44
+ type: filter.type,
45
+ value: [],
46
+ rangeMin: filter.min,
47
+ rangeMax: filter.max,
48
+ min: '',
49
+ max: '',
50
+ };
51
+ });
52
+ return obj;
53
+ };
54
+ const [openFilters, setOpenFilters] = (0, react_1.useState)(false);
55
+ const [activeFilters, setActiveFilters] = (0, react_1.useState)(generateStateObj());
56
+ const toogleFilter = () => {
57
+ setOpenFilters(!openFilters);
58
+ };
59
+ const isFilterActive = (filter) => {
60
+ let isActive = false;
61
+ if (filter.type === 'select') {
62
+ isActive = filter.value.length > 0;
63
+ }
64
+ else if (filter.type === 'range') {
65
+ isActive = filter.min.length > 0 || filter.max.length > 0;
66
+ }
67
+ return isActive;
68
+ };
69
+ const isAnyFilterActive = () => {
70
+ const activs = Object.keys(activeFilters).find((key) => isFilterActive(activeFilters[key]));
71
+ if (activs) {
72
+ return activs.length > 0;
73
+ }
74
+ return false;
75
+ };
76
+ const setIconColor = () => {
77
+ return isAnyFilterActive() ? theme.action : theme.textColor;
78
+ };
79
+ const clearAll = () => {
80
+ const resetedFilter = { ...activeFilters };
81
+ Object.keys(resetedFilter).forEach((key) => {
82
+ if (resetedFilter[key].type === 'select') {
83
+ resetedFilter[key].value = [];
84
+ }
85
+ else if (resetedFilter[key].type === 'range') {
86
+ resetedFilter[key].min = '';
87
+ resetedFilter[key].max = '';
88
+ }
89
+ });
90
+ return resetedFilter;
91
+ };
92
+ const resetAllFilters = () => {
93
+ const cleared = clearAll();
94
+ setActiveFilters({
95
+ ...cleared,
96
+ });
97
+ };
98
+ const resetAllFiltersAndSubmit = () => {
99
+ resetAllFilters();
100
+ applyFilter();
101
+ };
102
+ const resetFilter = (filterName, filterType) => {
103
+ if (filterType === 'select') {
104
+ setActiveFilters({
105
+ ...activeFilters,
106
+ [filterName]: {
107
+ ...activeFilters[filterName],
108
+ value: [],
109
+ },
110
+ });
111
+ }
112
+ if (filterType === 'range') {
113
+ setActiveFilters({
114
+ ...activeFilters,
115
+ [filterName]: {
116
+ ...activeFilters[filterName],
117
+ min: '',
118
+ max: '',
119
+ },
120
+ });
121
+ }
122
+ };
123
+ const setSelectFilter = (filterValue, filterName) => {
124
+ let values = [];
125
+ const existingValues = activeFilters[filterName].value;
126
+ if (existingValues.includes(filterValue)) {
127
+ values = existingValues.filter((item) => item !== filterValue);
128
+ }
129
+ else {
130
+ existingValues.push(filterValue);
131
+ values = [...existingValues];
132
+ }
133
+ setActiveFilters({
134
+ ...activeFilters,
135
+ [filterName]: {
136
+ ...activeFilters[filterName],
137
+ value: values,
138
+ },
139
+ });
140
+ };
141
+ const setRangeFilter = (name, value) => {
142
+ const filterName = name.split('_')[0];
143
+ const filterParam = name.split('_')[1];
144
+ setActiveFilters({
145
+ ...activeFilters,
146
+ [filterName]: {
147
+ ...activeFilters[filterName],
148
+ [filterParam]: value,
149
+ },
150
+ });
151
+ };
152
+ const applyFilter = () => {
153
+ const obj = [];
154
+ Object.keys(activeFilters).forEach((key) => {
155
+ if (activeFilters[key].type === 'select') {
156
+ if (activeFilters[key].value.length > 0) {
157
+ obj.push({
158
+ name: activeFilters[key].name,
159
+ type: activeFilters[key].type,
160
+ value: activeFilters[key].value,
161
+ });
162
+ }
163
+ }
164
+ else if (activeFilters[key].type === 'range') {
165
+ if (activeFilters[key].min.length > 0 || activeFilters[key].max.length > 0) {
166
+ obj.push({
167
+ name: activeFilters[key].name,
168
+ type: activeFilters[key].type,
169
+ min: activeFilters[key].min.length > 0 ? activeFilters[key].min : undefined,
170
+ max: activeFilters[key].max.length > 0 ? activeFilters[key].max : undefined,
171
+ });
172
+ }
173
+ }
174
+ });
175
+ handleSubmitFilters && handleSubmitFilters(obj);
176
+ setOpenFilters(false);
177
+ };
178
+ return (react_1.default.createElement(styled_components_1.ThemeProvider, { theme: theme },
179
+ react_1.default.createElement(Filters_styles_1.FilterIconArea, null,
180
+ react_1.default.createElement(Icons_1.Icon, { name: "filters", onClick: toogleFilter, color: setIconColor() }),
181
+ isAnyFilterActive() && (react_1.default.createElement(Chips_1.Chips, { label: labelClearAll, handleClose: resetAllFiltersAndSubmit }))),
182
+ openFilters && (react_1.default.createElement(Modal_1.Modal, { title: title, handleConfirm: applyFilter, handleClose: toogleFilter, labelConfirm: labelConfirm, labelClose: labelClose },
183
+ react_1.default.createElement(Aligment_1.Aligment, { direction: "column", align: 'flex-end' },
184
+ react_1.default.createElement(Chips_1.Chips, { handleClose: resetAllFilters, label: labelClearAll }),
185
+ react_1.default.createElement(Filters_styles_1.FiltersArea, null, filters.map((filter) => (react_1.default.createElement(Filters_styles_1.FilterSection, null,
186
+ react_1.default.createElement(Aligment_1.Aligment, { wrap: "nowrap" },
187
+ react_1.default.createElement(Typography_1.TextAccent, null, filter.label),
188
+ react_1.default.createElement(Icons_1.Icon, { name: "close", size: 14, onClick: () => resetFilter(filter.name, filter.type) })),
189
+ filter.type === 'select' && (react_1.default.createElement(Aligment_1.Aligment, { wrap: "nowrap", direction: "column", align: "flex-start", vPadding: Theme_1.Theme.padding.s }, filter.allowValues?.map((item) => {
190
+ return (react_1.default.createElement(common_1.PanelOption, { width: "100%", key: item, active: activeFilters[filter.name].value.includes(item), onClick: () => setSelectFilter(item, filter.name) }, item));
191
+ }))),
192
+ filter.type === 'range' && (react_1.default.createElement(Aligment_1.Aligment, { wrap: "nowrap", direction: "row", align: "flex-start", vPadding: Theme_1.Theme.padding.s, justify: "flex-start", gap: 8 },
193
+ react_1.default.createElement(Filters_styles_1.FilterInputWrapper, null,
194
+ react_1.default.createElement(Input_1.Input, { type: "number", name: `${filter.name}_min`, value: activeFilters[filter.name].min, placeholder: activeFilters[filter.name].rangeMin, handleChange: setRangeFilter })),
195
+ react_1.default.createElement(Filters_styles_1.FilterInputWrapper, null,
196
+ react_1.default.createElement(Input_1.Input, { type: "number", name: `${filter.name}_max`, value: activeFilters[filter.name].max, placeholder: activeFilters[filter.name].rangeMax, handleChange: setRangeFilter })))))))))))));
197
+ };
198
+ exports.Filters = Filters;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FilterInputWrapper = exports.FilterOption = exports.FilterSection = exports.FiltersArea = exports.FilterIconArea = void 0;
7
+ const styled_components_1 = __importDefault(require("styled-components"));
8
+ const Theme_1 = require("../../Theme");
9
+ exports.FilterIconArea = styled_components_1.default.div `
10
+ display:flex;
11
+ flex-direction: row;
12
+ align-items: center;
13
+ gap:8px;
14
+ }
15
+ `;
16
+ exports.FiltersArea = styled_components_1.default.div `
17
+ width:100%;
18
+ `;
19
+ exports.FilterSection = styled_components_1.default.div `
20
+ width:100%;
21
+ display:flex;
22
+ flex-direction:column;
23
+ padding-bottom:${Theme_1.Theme.padding.m}
24
+ `;
25
+ exports.FilterOption = styled_components_1.default.div `
26
+ width:100%;
27
+ display:flex;
28
+ flex-direction:column;
29
+ `;
30
+ exports.FilterInputWrapper = styled_components_1.default.div `
31
+ width:100px
32
+ `;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyFiltersToTable = exports.setTableFilterSet = exports.getMaxValue = exports.getMinValue = exports.getUniqueValues = void 0;
4
+ const getUniqueValues = (elements, source) => {
5
+ const result = [...new Set(elements.map((item) => item[source]))];
6
+ return result;
7
+ };
8
+ exports.getUniqueValues = getUniqueValues;
9
+ const getMinValue = (elements, source) => {
10
+ return Math.min(...elements.map((item) => item[source]));
11
+ };
12
+ exports.getMinValue = getMinValue;
13
+ const getMaxValue = (elements, source) => {
14
+ return Math.max(...elements.map((item) => item[source]));
15
+ };
16
+ exports.getMaxValue = getMaxValue;
17
+ const setTableFilterSet = (headers, elements) => {
18
+ const filterSetting = [];
19
+ headers.forEach((filter) => {
20
+ if (filter.filter) {
21
+ filterSetting.push({
22
+ label: filter.name,
23
+ name: filter.valueSource,
24
+ type: filter.filterType ? filter.filterType : 'select',
25
+ allowValues: (0, exports.getUniqueValues)(elements, filter.valueSource),
26
+ min: (0, exports.getMinValue)(elements, filter.valueSource),
27
+ max: (0, exports.getMaxValue)(elements, filter.valueSource),
28
+ });
29
+ }
30
+ });
31
+ return filterSetting;
32
+ };
33
+ exports.setTableFilterSet = setTableFilterSet;
34
+ const applyFiltersToTable = (elements, filters) => {
35
+ let filtered = [...elements];
36
+ filters.forEach((filter) => {
37
+ if (filter.type === 'select') {
38
+ filtered = filtered.filter((item) => filter.value?.includes(item[filter.name]));
39
+ }
40
+ else if (filter.type === 'range') {
41
+ filtered = filtered.filter((item) => {
42
+ const minValue = filter.min ? filter.min : item[filter.name];
43
+ const maxValue = filter.max ? filter.max : item[filter.name];
44
+ return (item[filter.name] >= minValue &&
45
+ item[filter.name] <= maxValue);
46
+ });
47
+ }
48
+ });
49
+ return filtered;
50
+ };
51
+ exports.applyFiltersToTable = applyFiltersToTable;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Filters"), exports);
18
+ __exportStar(require("./filtersHelper"), exports);
@@ -27,4 +27,6 @@ exports.iconsPath = {
27
27
  check_circle: "m10.6 16.6 7.05-7.05-1.4-1.4-5.65 5.65-2.85-2.85-1.4 1.4ZM12 22q-2.075 0-3.9-.788-1.825-.787-3.175-2.137-1.35-1.35-2.137-3.175Q2 14.075 2 12t.788-3.9q.787-1.825 2.137-3.175 1.35-1.35 3.175-2.138Q9.925 2 12 2t3.9.787q1.825.788 3.175 2.138 1.35 1.35 2.137 3.175Q22 9.925 22 12t-.788 3.9q-.787 1.825-2.137 3.175-1.35 1.35-3.175 2.137Q14.075 22 12 22Zm0-2q3.35 0 5.675-2.325Q20 15.35 20 12q0-3.35-2.325-5.675Q15.35 4 12 4 8.65 4 6.325 6.325 4 8.65 4 12q0 3.35 2.325 5.675Q8.65 20 12 20Zm0-8Z",
28
28
  check_box: "m10.6 16.2 7.05-7.05-1.4-1.4-5.65 5.65-2.85-2.85-1.4 1.4ZM5 21q-.825 0-1.413-.587Q3 19.825 3 19V5q0-.825.587-1.413Q4.175 3 5 3h14q.825 0 1.413.587Q21 4.175 21 5v14q0 .825-.587 1.413Q19.825 21 19 21Zm0-2h14V5H5v14ZM5 5v14V5Z",
29
29
  check: "m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4Z",
30
+ arrow_drop_down: 'M7 14L12 9L17 14H7Z',
31
+ arrow_drop_up: 'M12 15L7 10H17L12 15Z',
30
32
  };
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Table = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const styled_components_1 = require("styled-components");
29
+ const Table_styles_1 = require("./Table.styles");
30
+ const Theme_1 = require("../../Theme");
31
+ const date_fns_1 = require("date-fns");
32
+ const Icons_1 = require("../Icons");
33
+ const Aligment_1 = require("../Aligment");
34
+ const Filters_1 = require("../Filters");
35
+ const tableHelper_1 = require("./tableHelper");
36
+ const Chips_1 = require("../Chips");
37
+ const Table = ({ theme = Theme_1.mainTheme, headers, elements,
38
+ // isBulkAction = false,
39
+ hover = true, selectable = true, sortable = true, filtrable = false, sort = {
40
+ name: '',
41
+ order: 'none',
42
+ }, filters = [],
43
+ // haveMore = false,
44
+ // moreActions = [],
45
+ onRowClick, filtersTitle = 'Select filters', filtersConfirmLabel = 'Approve', filtersCancelLabel = 'Cancel', filterClearAllLabel = 'Clear all filters', sortClearLabel = 'Clear sorting', }) => {
46
+ const [tableProps, setTableProps] = (0, react_1.useState)({
47
+ elements: (0, tableHelper_1.setElements)(elements, sort, filters),
48
+ sort: sort,
49
+ filters: filters,
50
+ });
51
+ const [selectedRow, setSelectedRow] = (0, react_1.useState)('');
52
+ const handleRowClick = (id) => {
53
+ if (selectable) {
54
+ setSelectedRow(id);
55
+ }
56
+ onRowClick && onRowClick(id);
57
+ };
58
+ const handleHeaderCellClick = (targetValue) => {
59
+ if (sortable) {
60
+ const newSort = (0, tableHelper_1.setSortParams)(targetValue, tableProps.sort);
61
+ setTableProps({
62
+ ...tableProps,
63
+ elements: (0, tableHelper_1.applySort)(newSort, tableProps.elements),
64
+ sort: newSort,
65
+ });
66
+ }
67
+ };
68
+ const handleFilters = (newFilters) => {
69
+ setTableProps({
70
+ ...tableProps,
71
+ elements: (0, tableHelper_1.setElements)(elements, tableProps.sort, newFilters),
72
+ filters: newFilters,
73
+ });
74
+ };
75
+ const resetSorting = () => {
76
+ setTableProps({
77
+ ...tableProps,
78
+ elements: (0, tableHelper_1.setElements)(elements, { name: '', order: 'asc' }, tableProps.filters),
79
+ sort: {
80
+ name: '',
81
+ order: 'asc',
82
+ },
83
+ });
84
+ };
85
+ return (react_1.default.createElement(styled_components_1.ThemeProvider, { theme: theme },
86
+ (filtrable || sortable) && (react_1.default.createElement(Table_styles_1.TableTopBar, null,
87
+ react_1.default.createElement(Aligment_1.Aligment, { justify: "flex-start", gap: 10 },
88
+ filtrable && (react_1.default.createElement(Filters_1.Filters, { title: filtersTitle, labelConfirm: filtersConfirmLabel, labelClose: filtersCancelLabel, labelClearAll: filterClearAllLabel, handleSubmitFilters: handleFilters, filters: (0, Filters_1.setTableFilterSet)(headers, elements) })),
89
+ sortable && tableProps.sort.name !== '' && (react_1.default.createElement(Chips_1.Chips, { label: sortClearLabel, handleClose: resetSorting }))))),
90
+ react_1.default.createElement(Table_styles_1.TableWrapper, { cellPadding: "0", cellSpacing: "0" },
91
+ react_1.default.createElement(Table_styles_1.TableHead, null,
92
+ react_1.default.createElement(Table_styles_1.TableRow, { hover: false, selectable: false, active: false }, headers.map((header) => (react_1.default.createElement(Table_styles_1.TableHeaderCell, { key: header.name, sortable: sortable, onClick: () => handleHeaderCellClick(header.valueSource), isSorted: tableProps.sort.name === header.valueSource &&
93
+ tableProps.sort.order != 'none' },
94
+ header.name,
95
+ tableProps.sort.name === header.valueSource &&
96
+ tableProps.sort.order != 'none' && (react_1.default.createElement(Table_styles_1.TableHeaderSortIcon, null,
97
+ react_1.default.createElement(Icons_1.Icon, { name: tableProps.sort.order === 'asc'
98
+ ? 'arrow_drop_down'
99
+ : 'arrow_drop_up', color: theme.tableCellSortIcon, size: 20 })))))))),
100
+ react_1.default.createElement("tbody", null, tableProps.elements.map((item) => (react_1.default.createElement(Table_styles_1.TableRow, { key: item.id, hover: hover, active: selectedRow === item.id, selectable: selectable, onClick: () => handleRowClick(item.id) }, headers.map((header) => {
101
+ return (react_1.default.createElement(Table_styles_1.TableCell, { key: `${item.id}-${header.name}` }, header.date
102
+ ? (0, date_fns_1.format)(item[header.valueSource], 'dd-MM-yyyy')
103
+ : item[header.valueSource]));
104
+ // }
105
+ }))))))));
106
+ };
107
+ exports.Table = Table;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TableTopBar = exports.TableCell = exports.TableRow = exports.TableHeaderSortIcon = exports.TableHeaderCell = exports.TableHead = exports.TableWrapper = void 0;
7
+ const styled_components_1 = __importDefault(require("styled-components"));
8
+ exports.TableWrapper = styled_components_1.default.table `
9
+ width: 100%;
10
+ `;
11
+ exports.TableHead = styled_components_1.default.thead `
12
+ tr:first-child {
13
+ position: sticky;
14
+ top: 0;
15
+ }
16
+ `;
17
+ exports.TableHeaderCell = styled_components_1.default.th `
18
+ font-weight: bold;
19
+ text-align: left;
20
+ padding: 8px;
21
+ transition: 300ms;
22
+ font-size: 14px;
23
+ background-color: ${(p) => p.isSorted ? p.theme.tableHeaderActiveBackground : p.theme.tableHeaderBackground};
24
+ border-bottom: 1px solid ${(p) => p.theme.tableBorderColor};
25
+
26
+ :hover {
27
+ background-color: ${(p) => p.isSorted ? p.theme.tableHeaderActiveBackground : p.theme.tableHeaderBackground};
28
+ }
29
+
30
+ ${(p) => p.sortable &&
31
+ `
32
+ cursor:pointer;
33
+ `}
34
+ position:relative;
35
+
36
+ `;
37
+ exports.TableHeaderSortIcon = styled_components_1.default.div `
38
+ width: 20px;
39
+ height: 20px;
40
+ position:absolute;
41
+ right:0;
42
+ transition: 300ms;
43
+ top: calc(50% - 10px);
44
+ `;
45
+ exports.TableRow = styled_components_1.default.tr `
46
+ background-color: ${(p) => p.active ? p.theme.tableCellActiveBackground : p.theme.tableCellEvenBackground};
47
+ :nth-child(even) {
48
+ background-color: ${(p) => p.active
49
+ ? p.theme.tableCellActiveBackground
50
+ : p.theme.tableCellBackground};
51
+ transition: 300ms;
52
+ }
53
+ ${(p) => p.selectable &&
54
+ `
55
+ cursor:pointer;`}
56
+ ${(p) => p.hover &&
57
+ `
58
+ :hover{
59
+ background-color:${p.theme.tableCellHoverBackground};
60
+ }
61
+ `}
62
+ `;
63
+ exports.TableCell = styled_components_1.default.td `
64
+ padding: 8px;
65
+ border-bottom: 1px solid ${(p) => p.theme.tableBorderColor};
66
+ `;
67
+ exports.TableTopBar = styled_components_1.default.div `
68
+ padding-bottom:4px;
69
+ `;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Table"), exports);
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setElements = exports.applySort = exports.setSortParams = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const Filters_1 = require("../Filters");
6
+ const setSortParams = (target, sort) => {
7
+ const newSort = {
8
+ name: target,
9
+ order: target === sort.name ? (sort.order === 'asc' ? 'desc' : 'asc') : 'asc',
10
+ };
11
+ return newSort;
12
+ };
13
+ exports.setSortParams = setSortParams;
14
+ const applySort = (sort, elements) => {
15
+ let sorted = [...elements];
16
+ if (sort.name !== '') {
17
+ sorted = (0, lodash_1.orderBy)(sorted, sort.name, sort.order);
18
+ }
19
+ return sorted;
20
+ };
21
+ exports.applySort = applySort;
22
+ const setElements = (elements, sort, filters) => {
23
+ let tableElements = [...(0, Filters_1.applyFiltersToTable)(elements, filters)];
24
+ if (sort.name !== '') {
25
+ tableElements = (0, exports.applySort)(sort, tableElements);
26
+ }
27
+ return tableElements;
28
+ };
29
+ exports.setElements = setElements;
@@ -47,7 +47,7 @@ exports.TextLabel = styled_components_1.default.div `
47
47
  ${(p) => p.size && p.labelPosition === 'left'
48
48
  ? (0, common_1.setLabelFontSize)(p.size)
49
49
  : `
50
- font-size: ${Theme_1.Theme.fontSize.xs};
51
- line-height: ${Theme_1.Theme.lineHeight.xs};
50
+ font-size: ${Theme_1.Theme.fontSize.s};
51
+ line-height: ${Theme_1.Theme.lineHeight.s};
52
52
  `}
53
53
  `;
@@ -41,4 +41,5 @@ exports.PanelOption = styled_components_1.default.div `
41
41
  :hover {
42
42
  background-color: ${(0, polished_1.lighten)(0.4, Theme_1.Theme.colors.primary)};
43
43
  }
44
+ ${p => p.width && `width:${p.width};`}
44
45
  `;
package/dist/cjs/index.js CHANGED
@@ -17,11 +17,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./components/Aligment"), exports);
18
18
  __exportStar(require("./components/Button"), exports);
19
19
  __exportStar(require("./components/Card"), exports);
20
+ __exportStar(require("./components/Chips"), exports);
20
21
  __exportStar(require("./components/Dropdown"), exports);
21
22
  __exportStar(require("./components/DropdownMenu"), exports);
22
23
  __exportStar(require("./components/ElementHeader"), exports);
23
24
  __exportStar(require("./components/DropdownMenu"), exports);
24
25
  __exportStar(require("./components/File"), exports);
26
+ __exportStar(require("./components/Filters"), exports);
25
27
  __exportStar(require("./components/Icons"), exports);
26
28
  __exportStar(require("./components/Input"), exports);
27
29
  __exportStar(require("./components/Loader"), exports);
@@ -29,5 +31,6 @@ __exportStar(require("./components/Modal"), exports);
29
31
  __exportStar(require("./components/Section"), exports);
30
32
  __exportStar(require("./components/Selector"), exports);
31
33
  __exportStar(require("./components/Sidepanel"), exports);
34
+ __exportStar(require("./components/Table"), exports);
32
35
  __exportStar(require("./components/Tile"), exports);
33
36
  __exportStar(require("./components/Typography"), exports);