venice-ui 1.2.0 → 1.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/dist/cjs/components/DropdownMenu/DropdownMenu.js +0 -1
- package/dist/cjs/components/Filters/filtersHelper.js +8 -10
- package/dist/cjs/components/Form/Form.js +60 -0
- package/dist/cjs/components/Form/FormElements.js +28 -0
- package/dist/cjs/components/Form/formHelper.js +7 -0
- package/dist/cjs/components/Form/formTypes.js +2 -0
- package/dist/cjs/components/Form/index.js +17 -0
- package/dist/cjs/components/Icons/IconsPath.js +7 -0
- package/dist/cjs/components/Input/Input.js +36 -9
- package/dist/cjs/components/Input/Input.styles.js +20 -3
- package/dist/cjs/components/Table/Table.js +24 -49
- package/dist/cjs/components/Table/Table.styles.js +1 -4
- package/dist/cjs/components/common/inputStyles.js +17 -1
- package/dist/cjs/index.js +1 -0
- package/dist/esm/components/DropdownMenu/DropdownMenu.js +0 -1
- package/dist/esm/components/Filters/filtersHelper.js +8 -10
- package/dist/esm/components/Form/Form.js +53 -0
- package/dist/esm/components/Form/FormElements.js +22 -0
- package/dist/esm/components/Form/formHelper.js +3 -0
- package/dist/esm/components/Form/formTypes.js +1 -0
- package/dist/esm/components/Form/index.js +1 -0
- package/dist/esm/components/Icons/IconsPath.js +7 -0
- package/dist/esm/components/Input/Input.js +37 -10
- package/dist/esm/components/Input/Input.styles.js +20 -3
- package/dist/esm/components/Table/Table.js +27 -52
- package/dist/esm/components/Table/Table.styles.js +0 -3
- package/dist/esm/components/common/inputStyles.js +15 -0
- package/dist/esm/index.js +1 -0
- package/dist/types/components/Filters/Filters.d.ts +6 -0
- package/dist/types/components/Filters/filtersHelper.d.ts +2 -3
- package/dist/types/components/Form/Form.d.ts +10 -0
- package/dist/types/components/Form/FormElements.d.ts +8 -0
- package/dist/types/components/Form/formHelper.d.ts +1 -0
- package/dist/types/components/Form/formTypes.d.ts +23 -0
- package/dist/types/components/Form/index.d.ts +1 -0
- package/dist/types/components/Icons/IconsPath.d.ts +7 -0
- package/dist/types/components/Input/Input.styles.d.ts +6 -0
- package/dist/types/components/Table/Table.d.ts +0 -9
- package/dist/types/components/Table/Table.styles.d.ts +0 -1
- package/dist/types/components/common/inputStyles.d.ts +6 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/types/types.d.ts +1 -0
- package/package.json +1 -1
|
@@ -56,7 +56,6 @@ const DropdownMenu = ({ size = 'medium', iconName = 'more_vert', header = false,
|
|
|
56
56
|
document.removeEventListener('click', handleClickOutside, true);
|
|
57
57
|
};
|
|
58
58
|
}, [open]);
|
|
59
|
-
console.log(open);
|
|
60
59
|
return (react_1.default.createElement(DropdownMenu_styles_1.DropdownMenuElement, null,
|
|
61
60
|
react_1.default.createElement(Icons_1.Icon, { name: iconName, onClick: () => toogleOpen(!open), size: (0, common_1.setIconSize)(size), isActive: open, right: right, left: left, iconColor: iconColor, iconHoverColor: iconHoverColor, iconBgColor: iconBgColor, iconBgHoverColor: iconBgHoverColor }),
|
|
62
61
|
open && (react_1.default.createElement(common_1.Panel, { ref: ref, size: size, position: "right" },
|
|
@@ -17,16 +17,14 @@ exports.getMaxValue = getMaxValue;
|
|
|
17
17
|
const setTableFilterSet = (headers, elements) => {
|
|
18
18
|
const filterSetting = [];
|
|
19
19
|
headers.forEach((filter) => {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
});
|
|
29
|
-
}
|
|
20
|
+
filterSetting.push({
|
|
21
|
+
label: filter.name,
|
|
22
|
+
name: filter.valueSource,
|
|
23
|
+
type: filter.filterType ? filter.filterType : 'select',
|
|
24
|
+
allowValues: (0, exports.getUniqueValues)(elements, filter.valueSource),
|
|
25
|
+
min: (0, exports.getMinValue)(elements, filter.valueSource),
|
|
26
|
+
max: (0, exports.getMaxValue)(elements, filter.valueSource),
|
|
27
|
+
});
|
|
30
28
|
});
|
|
31
29
|
return filterSetting;
|
|
32
30
|
};
|
|
@@ -0,0 +1,60 @@
|
|
|
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.Form = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const Input_1 = require("../Input");
|
|
9
|
+
const File_1 = require("../File");
|
|
10
|
+
const FormElements_1 = require("./FormElements");
|
|
11
|
+
const Form = ({ formData, size = 'medium', read }) => {
|
|
12
|
+
const onChangeHandler = (name, value) => {
|
|
13
|
+
formData.action(name, value);
|
|
14
|
+
};
|
|
15
|
+
const onIntChangeHandler = (name, value) => {
|
|
16
|
+
let valueString = value;
|
|
17
|
+
if (valueString.length > 0) {
|
|
18
|
+
const modify = valueString
|
|
19
|
+
.replaceAll(',', '.')
|
|
20
|
+
.replace(/[^\d.-]/g, '')
|
|
21
|
+
.split('.');
|
|
22
|
+
let digit = modify.shift();
|
|
23
|
+
if (modify.length > 0) {
|
|
24
|
+
digit = digit + '.' + modify.join('');
|
|
25
|
+
}
|
|
26
|
+
valueString = digit;
|
|
27
|
+
}
|
|
28
|
+
formData.action(name, valueString);
|
|
29
|
+
};
|
|
30
|
+
const onFileHandler = (event) => {
|
|
31
|
+
const fileList = event.currentTarget.files;
|
|
32
|
+
if (!fileList)
|
|
33
|
+
return;
|
|
34
|
+
if (event.currentTarget.files) {
|
|
35
|
+
}
|
|
36
|
+
formData.action(event.currentTarget.name, event.currentTarget.files ? event.currentTarget.files[0] : null);
|
|
37
|
+
};
|
|
38
|
+
const selectType = (item) => {
|
|
39
|
+
switch (item.type) {
|
|
40
|
+
case 'text':
|
|
41
|
+
return (react_1.default.createElement(Input_1.Input, { label: item.label, value: item.value, name: item.name, type: "text", size: size, handleChange: onChangeHandler, readOnly: read }));
|
|
42
|
+
case 'number':
|
|
43
|
+
return (react_1.default.createElement(Input_1.Input, { label: item.label, value: item.value, name: item.name, type: "number", size: size, min: item.min, max: item.max, step: item.step, handleChange: onIntChangeHandler, readOnly: read }));
|
|
44
|
+
case 'increase':
|
|
45
|
+
return (react_1.default.createElement(Input_1.Input, { type: "increase", label: item.label, value: item.value, name: item.name, size: size, handleChange: onIntChangeHandler, min: item.min, max: item.max, step: item.step, readOnly: read }));
|
|
46
|
+
case 'file':
|
|
47
|
+
return (react_1.default.createElement(File_1.File, { label: item.label, fileValue: item.value, name: item.name, size: size, handleChange: onFileHandler, readOnly: read }));
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
return (react_1.default.createElement(FormElements_1.FormWrapper, null, formData.data.map((item) => {
|
|
51
|
+
if ('row' in item) {
|
|
52
|
+
return (react_1.default.createElement(FormElements_1.FormRow, { key: `subRow-${item.row[0].name}` }, item.row.map((rowItem) => (react_1.default.createElement(FormElements_1.FormSubRow, { factor: item.row.length, key: rowItem.name }, selectType(rowItem))))));
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
return react_1.default.createElement(FormElements_1.FormRow, { key: item.name }, selectType(item));
|
|
56
|
+
}
|
|
57
|
+
})));
|
|
58
|
+
};
|
|
59
|
+
exports.Form = Form;
|
|
60
|
+
exports.default = exports.Form;
|
|
@@ -0,0 +1,28 @@
|
|
|
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.IntputWrapperBig = exports.FormSubRow = exports.FormRow = exports.FormWrapper = void 0;
|
|
7
|
+
const styled_components_1 = __importDefault(require("styled-components"));
|
|
8
|
+
exports.FormWrapper = styled_components_1.default.div `
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
width: 100%;
|
|
12
|
+
`;
|
|
13
|
+
exports.FormRow = styled_components_1.default.div `
|
|
14
|
+
width: 100%;
|
|
15
|
+
margin-bottom: 0.8rem;
|
|
16
|
+
display: flex;
|
|
17
|
+
justify-content: space-between;
|
|
18
|
+
`;
|
|
19
|
+
exports.FormSubRow = styled_components_1.default.div `
|
|
20
|
+
display: flex;
|
|
21
|
+
width: calc((100% - ((${(p) => p.factor} - 1) * 2rem)) / ${(p) => p.factor});
|
|
22
|
+
`;
|
|
23
|
+
exports.IntputWrapperBig = styled_components_1.default.div `
|
|
24
|
+
width: 100%;
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
margin-bottom: 1.6rem;
|
|
28
|
+
`;
|
|
@@ -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("./Form"), exports);
|
|
@@ -30,10 +30,17 @@ exports.iconsPath = {
|
|
|
30
30
|
search: 'm19.6 21-6.3-6.3q-.75.6-1.725.95Q10.6 16 9.5 16q-2.725 0-4.612-1.887Q3 12.225 3 9.5q0-2.725 1.888-4.613Q6.775 3 9.5 3t4.613 1.887Q16 6.775 16 9.5q0 1.1-.35 2.075-.35.975-.95 1.725l6.3 6.3ZM9.5 14q1.875 0 3.188-1.312Q14 11.375 14 9.5q0-1.875-1.312-3.188Q11.375 5 9.5 5 7.625 5 6.312 6.312 5 7.625 5 9.5q0 1.875 1.312 3.188Q7.625 14 9.5 14Z',
|
|
31
31
|
more_vert: 'M12 20q-.825 0-1.412-.587Q10 18.825 10 18q0-.825.588-1.413Q11.175 16 12 16t1.413.587Q14 17.175 14 18q0 .825-.587 1.413Q12.825 20 12 20Zm0-6q-.825 0-1.412-.588Q10 12.825 10 12t.588-1.413Q11.175 10 12 10t1.413.587Q14 11.175 14 12q0 .825-.587 1.412Q12.825 14 12 14Zm0-6q-.825 0-1.412-.588Q10 6.825 10 6t.588-1.412Q11.175 4 12 4t1.413.588Q14 5.175 14 6t-.587 1.412Q12.825 8 12 8Z',
|
|
32
32
|
more_horiz: 'M6 14C5.45 14 4.97917 13.8042 4.5875 13.4125C4.19583 13.0208 4 12.55 4 12C4 11.45 4.19583 10.9792 4.5875 10.5875C4.97917 10.1958 5.45 10 6 10C6.55 10 7.02083 10.1958 7.4125 10.5875C7.80417 10.9792 8 11.45 8 12C8 12.55 7.80417 13.0208 7.4125 13.4125C7.02083 13.8042 6.55 14 6 14ZM12 14C11.45 14 10.9792 13.8042 10.5875 13.4125C10.1958 13.0208 10 12.55 10 12C10 11.45 10.1958 10.9792 10.5875 10.5875C10.9792 10.1958 11.45 10 12 10C12.55 10 13.0208 10.1958 13.4125 10.5875C13.8042 10.9792 14 11.45 14 12C14 12.55 13.8042 13.0208 13.4125 13.4125C13.0208 13.8042 12.55 14 12 14ZM18 14C17.45 14 16.9792 13.8042 16.5875 13.4125C16.1958 13.0208 16 12.55 16 12C16 11.45 16.1958 10.9792 16.5875 10.5875C16.9792 10.1958 17.45 10 18 10C18.55 10 19.0208 10.1958 19.4125 10.5875C19.8042 10.9792 20 11.45 20 12C20 12.55 19.8042 13.0208 19.4125 13.4125C19.0208 13.8042 18.55 14 18 14Z',
|
|
33
|
+
move: 'M15 3L17.3 5.3L14.41 8.17L15.83 9.59L18.7 6.7L21 9V3H15ZM3 9L5.3 6.7L8.17 9.59L9.59 8.17L6.7 5.3L9 3H3V9ZM9 21L6.7 18.7L9.59 15.83L8.17 14.41L5.3 17.3L3 15V21H9ZM21 15L18.7 17.3L15.83 14.41L14.41 15.83L17.3 18.7L15 21H21V15Z',
|
|
34
|
+
move_ne: 'M9 5V7H15.59L4 18.59L5.41 20L17 8.41V15H19V5H9Z',
|
|
35
|
+
move_nw: 'M5 15H7V8.41L18.59 20L20 18.59L8.41 7H15V5H5V15Z',
|
|
36
|
+
move_se: 'M19 9H17V15.59L5.41 4L4 5.41L15.59 17H9V19H19V9Z',
|
|
37
|
+
move_sw: 'M15 19V17H8.41L20 5.41L18.59 4L7 15.59V9H5V19H15Z',
|
|
33
38
|
menu: 'M3 18v-2h18v2Zm0-5v-2h18v2Zm0-5V6h18v2Z',
|
|
34
39
|
unlock: 'M6 8h9V6q0-1.25-.875-2.125T12 3q-1.25 0-2.125.875T9 6H7q0-2.075 1.463-3.538Q9.925 1 12 1t3.538 1.462Q17 3.925 17 6v2h1q.825 0 1.413.587Q20 9.175 20 10v10q0 .825-.587 1.413Q18.825 22 18 22H6q-.825 0-1.412-.587Q4 20.825 4 20V10q0-.825.588-1.413Q5.175 8 6 8Zm0 12h12V10H6v10Zm6-3q.825 0 1.413-.587Q14 15.825 14 15q0-.825-.587-1.413Q12.825 13 12 13q-.825 0-1.412.587Q10 14.175 10 15q0 .825.588 1.413Q11.175 17 12 17Zm-6 3V10v10Z',
|
|
35
40
|
lock: 'M6 22q-.825 0-1.412-.587Q4 20.825 4 20V10q0-.825.588-1.413Q5.175 8 6 8h1V6q0-2.075 1.463-3.538Q9.925 1 12 1t3.538 1.462Q17 3.925 17 6v2h1q.825 0 1.413.587Q20 9.175 20 10v10q0 .825-.587 1.413Q18.825 22 18 22Zm0-2h12V10H6v10Zm6-3q.825 0 1.413-.587Q14 15.825 14 15q0-.825-.587-1.413Q12.825 13 12 13q-.825 0-1.412.587Q10 14.175 10 15q0 .825.588 1.413Q11.175 17 12 17ZM9 8h6V6q0-1.25-.875-2.125T12 3q-1.25 0-2.125.875T9 6ZM6 20V10v10Z',
|
|
36
41
|
person: 'M12 12q-1.65 0-2.825-1.175Q8 9.65 8 8q0-1.65 1.175-2.825Q10.35 4 12 4q1.65 0 2.825 1.175Q16 6.35 16 8q0 1.65-1.175 2.825Q13.65 12 12 12Zm-8 8v-2.8q0-.85.438-1.563.437-.712 1.162-1.087 1.55-.775 3.15-1.163Q10.35 13 12 13t3.25.387q1.6.388 3.15 1.163.725.375 1.162 1.087Q20 16.35 20 17.2V20Zm2-2h12v-.8q0-.275-.137-.5-.138-.225-.363-.35-1.35-.675-2.725-1.013Q13.4 15 12 15t-2.775.337Q7.85 15.675 6.5 16.35q-.225.125-.362.35-.138.225-.138.5Zm6-8q.825 0 1.413-.588Q14 8.825 14 8t-.587-1.412Q12.825 6 12 6q-.825 0-1.412.588Q10 7.175 10 8t.588 1.412Q11.175 10 12 10Zm0-2Zm0 10Z',
|
|
42
|
+
point_here: 'M5.54 8.46L2 12L5.54 15.54L7.3 13.77L5.54 12L7.3 10.23L5.54 8.46ZM12 18.46L10.23 16.7L8.46 18.46L12 22L15.54 18.46L13.77 16.7L12 18.46ZM18.46 8.46L16.7 10.23L18.46 12L16.7 13.77L18.46 15.54L22 12L18.46 8.46ZM8.46 5.54L10.23 7.3L12 5.54L13.77 7.3L15.54 5.54L12 2L8.46 5.54Z M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z',
|
|
43
|
+
point_dot: 'M12 8C9.79 8 8 9.79 8 12C8 14.21 9.79 16 12 16C14.21 16 16 14.21 16 12C16 9.79 14.21 8 12 8ZM20.94 11C20.48 6.83 17.17 3.52 13 3.06V1H11V3.06C6.83 3.52 3.52 6.83 3.06 11H1V13H3.06C3.52 17.17 6.83 20.48 11 20.94V23H13V20.94C17.17 20.48 20.48 17.17 20.94 13H23V11H20.94ZM12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19Z',
|
|
37
44
|
radio_checked: 'M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 20C7.58 20 4 16.42 4 12C4 7.58 7.58 4 12 4C16.42 4 20 7.58 20 12C20 16.42 16.42 20 12 20ZM12 17C14.7614 17 17 14.7614 17 12C17 9.23858 14.7614 7 12 7C9.23858 7 7 9.23858 7 12C7 14.7614 9.23858 17 12 17Z',
|
|
38
45
|
radio_unchecked: 'M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 20C7.58 20 4 16.42 4 12C4 7.58 7.58 4 12 4C16.42 4 20 7.58 20 12C20 16.42 16.42 20 12 20Z',
|
|
39
46
|
remove: 'M19 13H5V11H19V13Z',
|
|
@@ -30,9 +30,34 @@ const Aligment_1 = require("../Aligment");
|
|
|
30
30
|
const Input_styles_1 = require("./Input.styles");
|
|
31
31
|
const Icons_1 = require("../Icons");
|
|
32
32
|
const Theme_1 = require("../../Theme");
|
|
33
|
-
const Input = ({ label, labelPosition = 'top', value, type = 'text', name, disabled = false, size = 'medium', handleChange, handleSubmit, width, error, placeholder, min, max, step = 0.1, autoFocus, theme = Theme_1.mainTheme, }) => {
|
|
33
|
+
const Input = ({ label, labelPosition = 'top', value, type = 'text', name, disabled = false, size = 'medium', handleChange, handleSubmit, width, error, placeholder, min, max, step = 0.1, autoFocus, theme = Theme_1.mainTheme, readOnly = false, }) => {
|
|
34
|
+
const calculateNumberValue = (numberValue) => {
|
|
35
|
+
return isNaN(parseFloat(numberValue))
|
|
36
|
+
? numberValue
|
|
37
|
+
: parseFloat(numberValue);
|
|
38
|
+
};
|
|
34
39
|
const onChange = (e) => {
|
|
35
|
-
|
|
40
|
+
let returnedValue = type === 'number' || type === 'increase'
|
|
41
|
+
? calculateNumberValue(e.target.value)
|
|
42
|
+
: e.target.value.toString();
|
|
43
|
+
handleChange(name, returnedValue);
|
|
44
|
+
};
|
|
45
|
+
const onBlurValidation = () => {
|
|
46
|
+
if (type === 'number' || type === 'increase') {
|
|
47
|
+
let validateValue = value;
|
|
48
|
+
if (isNaN(parseFloat(validateValue.toString()))) {
|
|
49
|
+
validateValue = min !== undefined ? min : 0;
|
|
50
|
+
}
|
|
51
|
+
if (typeof value === 'number') {
|
|
52
|
+
if (min !== undefined && value < min) {
|
|
53
|
+
validateValue = min;
|
|
54
|
+
}
|
|
55
|
+
else if (max !== undefined && value > max) {
|
|
56
|
+
validateValue = max;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
handleChange(name, validateValue);
|
|
60
|
+
}
|
|
36
61
|
};
|
|
37
62
|
const onKeyDown = (e) => {
|
|
38
63
|
if (handleSubmit && e.key === 'Enter') {
|
|
@@ -61,16 +86,18 @@ const Input = ({ label, labelPosition = 'top', value, type = 'text', name, disab
|
|
|
61
86
|
}
|
|
62
87
|
handleChange(name, newValue);
|
|
63
88
|
};
|
|
89
|
+
// ${Theme.fontSize.m}/
|
|
64
90
|
return (react_1.default.createElement(styled_components_1.ThemeProvider, { theme: theme },
|
|
65
91
|
react_1.default.createElement(Aligment_1.Aligment, { align: labelPosition === 'top' ? 'flex-start' : 'center', direction: labelPosition === 'top' ? 'column' : 'row', wrap: 'nowrap' },
|
|
66
92
|
label && (react_1.default.createElement(Input_styles_1.InputLabelElement, { size: size, labelPosition: labelPosition }, label)),
|
|
67
93
|
react_1.default.createElement(Input_styles_1.InputWrapper, { width: width },
|
|
68
|
-
react_1.default.createElement(
|
|
69
|
-
|
|
70
|
-
react_1.default.createElement(
|
|
71
|
-
|
|
72
|
-
react_1.default.createElement(
|
|
73
|
-
|
|
74
|
-
|
|
94
|
+
react_1.default.createElement(react_1.default.Fragment, null, readOnly ? (react_1.default.createElement(Input_styles_1.InputReadOnlyElement, { inputSize: size }, inputType === 'password' ? '******' : value)) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
95
|
+
react_1.default.createElement(Input_styles_1.InputTextElement, { autoFocus: autoFocus, inputSize: size, type: showPassword ? 'text' : inputType, disabled: disabled, name: name, value: value, onChange: onChange, onKeyDown: onKeyDown, onBlur: onBlurValidation, error: error, placeholder: placeholder, min: min, max: max, step: step }),
|
|
96
|
+
inputType === 'password' && (react_1.default.createElement(Input_styles_1.EyeIconWrapper, { size: size },
|
|
97
|
+
react_1.default.createElement(Icons_1.Icon, { name: showPassword ? 'visability_off' : 'visibility', size: 24, onClick: tooglePassword, iconColor: theme.inputDefaultTextColor, iconBgHoverColor: "transparent" }))),
|
|
98
|
+
type === 'increase' && (react_1.default.createElement(Input_styles_1.IconsWrapper, null,
|
|
99
|
+
react_1.default.createElement(Icons_1.Icon, { name: "add", size: size === 'small' ? 16 : 24, onClick: () => increaseValue(value), iconColor: theme.inputDefaultTextColor }),
|
|
100
|
+
react_1.default.createElement(Icons_1.Icon, { name: "remove", size: size === 'small' ? 16 : 24, onClick: () => decreaseValue(value), iconColor: theme.inputDefaultTextColor }))),
|
|
101
|
+
error && react_1.default.createElement(Input_styles_1.InputErrorMsg, null, error))))))));
|
|
75
102
|
};
|
|
76
103
|
exports.Input = Input;
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.IconsWrapper = exports.EyeIconWrapper = exports.InputErrorMsg = exports.InputWrapper = exports.InputLabelElement = exports.InputTextElement = void 0;
|
|
6
|
+
exports.IconsWrapper = exports.EyeIconWrapper = exports.InputErrorMsg = exports.InputWrapper = exports.InputLabelElement = exports.InputReadOnlyElement = exports.InputTextElement = void 0;
|
|
7
7
|
const common_1 = require("../common");
|
|
8
8
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
9
9
|
const Theme_1 = require("../../Theme");
|
|
@@ -49,6 +49,24 @@ exports.InputTextElement = styled_components_1.default.input `
|
|
|
49
49
|
-moz-appearance: textfield;
|
|
50
50
|
appearance: textfield;
|
|
51
51
|
`;
|
|
52
|
+
exports.InputReadOnlyElement = styled_components_1.default.div `
|
|
53
|
+
position: relative;
|
|
54
|
+
box-sizing: border-box;
|
|
55
|
+
background-color: ${(p) => p.theme.inputDefaultBackground};
|
|
56
|
+
border: 1px solid transparent;
|
|
57
|
+
border-radius: ${Theme_1.Theme.borderRadius.m};
|
|
58
|
+
font-family: 'Lato', sans-serif;
|
|
59
|
+
outline: 0;
|
|
60
|
+
white-space: nowrap;
|
|
61
|
+
overflow: hidden;
|
|
62
|
+
text-overflow: ellipsis;
|
|
63
|
+
${(p) => (0, common_1.setSize)(p.inputSize)}
|
|
64
|
+
${(p) => (0, common_1.setHeight)(p.inputSize)}
|
|
65
|
+
color: ${(p) => p.theme.inputDefaultTextColor};
|
|
66
|
+
width: ${(p) => (p.width ? p.width : '100%')};
|
|
67
|
+
padding-left:0;
|
|
68
|
+
border-bottom:1px solid #dddddd;
|
|
69
|
+
`;
|
|
52
70
|
exports.InputLabelElement = (0, styled_components_1.default)(Typography_1.TextLabel) `
|
|
53
71
|
${(p) => p.labelPosition === 'top' && `margin-bottom: ${Theme_1.Theme.padding.s};`}
|
|
54
72
|
${(p) => p.labelPosition === 'left' && `margin-right: ${Theme_1.Theme.padding.s};`}
|
|
@@ -70,7 +88,6 @@ exports.EyeIconWrapper = styled_components_1.default.div `
|
|
|
70
88
|
${(p) => (0, common_1.setEyeTopPosition)(p.size)}
|
|
71
89
|
`;
|
|
72
90
|
exports.IconsWrapper = styled_components_1.default.div `
|
|
73
|
-
display:flex;
|
|
91
|
+
display: flex;
|
|
74
92
|
align-items: center;
|
|
75
|
-
|
|
76
93
|
`;
|
|
@@ -30,17 +30,14 @@ const Table_styles_1 = require("./Table.styles");
|
|
|
30
30
|
const Theme_1 = require("../../Theme");
|
|
31
31
|
const date_fns_1 = require("date-fns");
|
|
32
32
|
const Icons_1 = require("../Icons");
|
|
33
|
-
const Aligment_1 = require("../Aligment");
|
|
34
|
-
const Filters_1 = require("../Filters");
|
|
35
33
|
const tableHelper_1 = require("./tableHelper");
|
|
36
|
-
const Chips_1 = require("../Chips");
|
|
37
34
|
const DropdownMenu_1 = require("../DropdownMenu");
|
|
38
35
|
const Table = ({ theme = Theme_1.mainTheme, headers, elements,
|
|
39
36
|
// isBulkAction = false,
|
|
40
|
-
hover = true, selectable = true, sortable = true,
|
|
37
|
+
hover = true, selectable = true, sortable = true, sort = {
|
|
41
38
|
name: '',
|
|
42
39
|
order: 'none',
|
|
43
|
-
},
|
|
40
|
+
}, moreActions = [], onRowClick, }) => {
|
|
44
41
|
const checkHeaders = () => {
|
|
45
42
|
const tableHeaders = [...headers];
|
|
46
43
|
if (moreActions.length > 0) {
|
|
@@ -53,31 +50,16 @@ hover = true, selectable = true, sortable = true, filtrable = false, sort = {
|
|
|
53
50
|
return tableHeaders;
|
|
54
51
|
};
|
|
55
52
|
const [tableProps, setTableProps] = (0, react_1.useState)({
|
|
56
|
-
elements:
|
|
53
|
+
elements: elements,
|
|
57
54
|
sort: sort,
|
|
58
|
-
filters: filters,
|
|
59
55
|
headers: checkHeaders(),
|
|
60
56
|
});
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
(0, react_1.useEffect)(() => {
|
|
68
|
-
setTableProps({
|
|
69
|
-
...tableProps,
|
|
70
|
-
elements: (0, tableHelper_1.setElements)(elements, sort, filters),
|
|
71
|
-
});
|
|
72
|
-
}, [elements]);
|
|
73
|
-
(0, react_1.useEffect)(() => {
|
|
74
|
-
if (!isElementsArrayEqual(elements, tableProps.elements)) {
|
|
75
|
-
setTableProps({
|
|
76
|
-
...tableProps,
|
|
77
|
-
elements: (0, tableHelper_1.setElements)(elements, sort, filters),
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
});
|
|
57
|
+
// useEffect(() => {
|
|
58
|
+
// setTableProps({
|
|
59
|
+
// ...tableProps,
|
|
60
|
+
// elements: setElements(elements, sort, filters),
|
|
61
|
+
// })
|
|
62
|
+
// }, [elements])
|
|
81
63
|
const [selectedRow, setSelectedRow] = (0, react_1.useState)('');
|
|
82
64
|
const handleRowClick = (id) => {
|
|
83
65
|
if (selectable) {
|
|
@@ -95,28 +77,21 @@ hover = true, selectable = true, sortable = true, filtrable = false, sort = {
|
|
|
95
77
|
});
|
|
96
78
|
}
|
|
97
79
|
};
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
},
|
|
113
|
-
});
|
|
114
|
-
};
|
|
80
|
+
// const resetSorting = () => {
|
|
81
|
+
// setTableProps({
|
|
82
|
+
// ...tableProps,
|
|
83
|
+
// elements: setElements(
|
|
84
|
+
// elements,
|
|
85
|
+
// { name: '', order: 'asc' },
|
|
86
|
+
// tableProps.filters,
|
|
87
|
+
// ),
|
|
88
|
+
// sort: {
|
|
89
|
+
// name: '',
|
|
90
|
+
// order: 'asc',
|
|
91
|
+
// },
|
|
92
|
+
// })
|
|
93
|
+
// }
|
|
115
94
|
return (react_1.default.createElement(styled_components_1.ThemeProvider, { theme: theme },
|
|
116
|
-
(filtrable || sortable) && (react_1.default.createElement(Table_styles_1.TableTopBar, null,
|
|
117
|
-
react_1.default.createElement(Aligment_1.Aligment, { justify: "flex-start", gap: 10 },
|
|
118
|
-
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) })),
|
|
119
|
-
sortable && tableProps.sort.name !== '' && (react_1.default.createElement(Chips_1.Chips, { label: sortClearLabel, handleClose: resetSorting }))))),
|
|
120
95
|
react_1.default.createElement(Table_styles_1.TableWrapper, { cellPadding: "0", cellSpacing: "0" },
|
|
121
96
|
react_1.default.createElement(Table_styles_1.TableHead, null,
|
|
122
97
|
react_1.default.createElement(Table_styles_1.TableRow, { hover: false, selectable: false, active: false }, tableProps.headers.map((header) => (react_1.default.createElement(react_1.default.Fragment, null, header.action ? (react_1.default.createElement(Table_styles_1.OptionTableHeaderCell, null)) : (react_1.default.createElement(Table_styles_1.TableHeaderCell, { key: header.name, sortable: sortable, onClick: () => handleHeaderCellClick(header.valueSource), isSorted: tableProps.sort.name === header.valueSource &&
|
|
@@ -127,7 +102,7 @@ hover = true, selectable = true, sortable = true, filtrable = false, sort = {
|
|
|
127
102
|
react_1.default.createElement(Icons_1.Icon, { name: tableProps.sort.order === 'asc'
|
|
128
103
|
? 'arrow_drop_down'
|
|
129
104
|
: 'arrow_drop_up', iconColor: theme.tableCellSortIcon, size: 20 })))))))))),
|
|
130
|
-
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) }, tableProps.headers.map((header) => (react_1.default.createElement(react_1.default.Fragment, null, header.action ? (react_1.default.createElement(Table_styles_1.OptionTableCell,
|
|
105
|
+
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) }, tableProps.headers.map((header) => (react_1.default.createElement(react_1.default.Fragment, null, header.action ? (react_1.default.createElement(Table_styles_1.OptionTableCell, { key: `${item.id}-${header.name}-action` },
|
|
131
106
|
react_1.default.createElement(Table_styles_1.OptionTableCellWrapper, { onClick: (e) => e.stopPropagation() },
|
|
132
107
|
react_1.default.createElement(DropdownMenu_1.DropdownMenu, { options: moreActions, targetID: item.id, iconName: "more_vert", iconColor: theme.tableMoreIconColor })))) : (react_1.default.createElement(Table_styles_1.TableCell, { key: `${item.id}-${header.name}` }, header.date
|
|
133
108
|
? (0, date_fns_1.format)(item[header.valueSource], 'dd-MM-yyyy')
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.OptionTableCellWrapper = exports.OptionTableCell = exports.
|
|
6
|
+
exports.OptionTableCellWrapper = exports.OptionTableCell = exports.TableCell = exports.TableRow = exports.TableHeaderSortIcon = exports.OptionTableHeaderCell = exports.TableHeaderCell = exports.TableHead = exports.TableWrapper = void 0;
|
|
7
7
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
8
8
|
exports.TableWrapper = styled_components_1.default.table `
|
|
9
9
|
width: 100%;
|
|
@@ -79,9 +79,6 @@ exports.TableCell = styled_components_1.default.td `
|
|
|
79
79
|
padding: 8px;
|
|
80
80
|
border-bottom: 1px solid ${(p) => p.theme.tableBorderColor};
|
|
81
81
|
`;
|
|
82
|
-
exports.TableTopBar = styled_components_1.default.div `
|
|
83
|
-
padding-bottom: 4px;
|
|
84
|
-
`;
|
|
85
82
|
exports.OptionTableCell = styled_components_1.default.td `
|
|
86
83
|
border-bottom: 1px solid ${(p) => p.theme.tableBorderColor};
|
|
87
84
|
text-align: center;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setAnimationParams = exports.animationParams = exports.setFieldHeight = exports.fieldHeight = exports.setPanelPosition = exports.panelPosition = exports.setPanelTop = exports.panelTop = exports.setIconSize = exports.iconSize = exports.setLabelFontSize = exports.lableFontSize = exports.inputColorSchema = exports.setEyeTopPosition = exports.setButtonLoaderSize = exports.setButtonSize = exports.setSize = exports.eyeTopPosition = exports.buttonLoaderHeight = exports.buttonLoaderPadding = exports.buttonPadding = exports.inputPadding = exports.sizes = exports.defaultStyles = void 0;
|
|
3
|
+
exports.setAnimationParams = exports.animationParams = exports.setFieldHeight = exports.fieldHeight = exports.setPanelPosition = exports.panelPosition = exports.setPanelTop = exports.panelTop = exports.setIconSize = exports.iconSize = exports.setLabelFontSize = exports.lableFontSize = exports.inputColorSchema = exports.setEyeTopPosition = exports.setButtonLoaderSize = exports.setButtonSize = exports.setHeight = exports.setSize = exports.eyeTopPosition = exports.buttonLoaderHeight = exports.buttonLoaderPadding = exports.buttonPadding = exports.inputPadding = exports.height = exports.sizes = exports.defaultStyles = void 0;
|
|
4
4
|
const polished_1 = require("polished");
|
|
5
5
|
const Theme_1 = require("../../Theme");
|
|
6
6
|
exports.defaultStyles = `
|
|
@@ -30,6 +30,18 @@ exports.sizes = {
|
|
|
30
30
|
line-height: ${Theme_1.Theme.lineHeight.l};
|
|
31
31
|
`,
|
|
32
32
|
};
|
|
33
|
+
exports.height = {
|
|
34
|
+
small: `
|
|
35
|
+
height: calc( ${Theme_1.Theme.lineHeight.s} + 2 * (${Theme_1.Theme.padding.s}) + 2px);
|
|
36
|
+
`,
|
|
37
|
+
medium: `
|
|
38
|
+
height: calc( ${Theme_1.Theme.lineHeight.m} + 2 * (${Theme_1.Theme.padding.m}) + 2px);
|
|
39
|
+
|
|
40
|
+
`,
|
|
41
|
+
large: `
|
|
42
|
+
font-height: calc( ${Theme_1.Theme.lineHeight.l} + 2 * (${Theme_1.Theme.padding.m}) + 2px);
|
|
43
|
+
`,
|
|
44
|
+
};
|
|
33
45
|
exports.inputPadding = {
|
|
34
46
|
small: `
|
|
35
47
|
padding: ${Theme_1.Theme.padding.s};
|
|
@@ -79,6 +91,10 @@ const setSize = (size) => {
|
|
|
79
91
|
return exports.sizes[size] + exports.inputPadding[size];
|
|
80
92
|
};
|
|
81
93
|
exports.setSize = setSize;
|
|
94
|
+
const setHeight = (size) => {
|
|
95
|
+
return exports.height[size];
|
|
96
|
+
};
|
|
97
|
+
exports.setHeight = setHeight;
|
|
82
98
|
const setButtonSize = (size, loader) => {
|
|
83
99
|
return (exports.sizes[size] + (loader ? exports.buttonLoaderPadding[size] : exports.buttonPadding[size]));
|
|
84
100
|
};
|
package/dist/cjs/index.js
CHANGED
|
@@ -23,6 +23,7 @@ __exportStar(require("./components/Dropdown"), exports);
|
|
|
23
23
|
__exportStar(require("./components/DropdownMenu"), exports);
|
|
24
24
|
__exportStar(require("./components/ElementHeader"), exports);
|
|
25
25
|
__exportStar(require("./components/DropdownMenu"), exports);
|
|
26
|
+
__exportStar(require("./components/Form"), exports);
|
|
26
27
|
__exportStar(require("./components/File"), exports);
|
|
27
28
|
__exportStar(require("./components/Filters"), exports);
|
|
28
29
|
__exportStar(require("./components/Icons"), exports);
|
|
@@ -30,7 +30,6 @@ export const DropdownMenu = ({ size = 'medium', iconName = 'more_vert', header =
|
|
|
30
30
|
document.removeEventListener('click', handleClickOutside, true);
|
|
31
31
|
};
|
|
32
32
|
}, [open]);
|
|
33
|
-
console.log(open);
|
|
34
33
|
return (React.createElement(DropdownMenuElement, null,
|
|
35
34
|
React.createElement(Icon, { name: iconName, onClick: () => toogleOpen(!open), size: setIconSize(size), isActive: open, right: right, left: left, iconColor: iconColor, iconHoverColor: iconHoverColor, iconBgColor: iconBgColor, iconBgHoverColor: iconBgHoverColor }),
|
|
36
35
|
open && (React.createElement(Panel, { ref: ref, size: size, position: "right" },
|
|
@@ -11,16 +11,14 @@ export const getMaxValue = (elements, source) => {
|
|
|
11
11
|
export const setTableFilterSet = (headers, elements) => {
|
|
12
12
|
const filterSetting = [];
|
|
13
13
|
headers.forEach((filter) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
});
|
|
23
|
-
}
|
|
14
|
+
filterSetting.push({
|
|
15
|
+
label: filter.name,
|
|
16
|
+
name: filter.valueSource,
|
|
17
|
+
type: filter.filterType ? filter.filterType : 'select',
|
|
18
|
+
allowValues: getUniqueValues(elements, filter.valueSource),
|
|
19
|
+
min: getMinValue(elements, filter.valueSource),
|
|
20
|
+
max: getMaxValue(elements, filter.valueSource),
|
|
21
|
+
});
|
|
24
22
|
});
|
|
25
23
|
return filterSetting;
|
|
26
24
|
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Input } from '../Input';
|
|
3
|
+
import { File } from '../File';
|
|
4
|
+
import { FormRow, FormSubRow, FormWrapper } from './FormElements';
|
|
5
|
+
export const Form = ({ formData, size = 'medium', read }) => {
|
|
6
|
+
const onChangeHandler = (name, value) => {
|
|
7
|
+
formData.action(name, value);
|
|
8
|
+
};
|
|
9
|
+
const onIntChangeHandler = (name, value) => {
|
|
10
|
+
let valueString = value;
|
|
11
|
+
if (valueString.length > 0) {
|
|
12
|
+
const modify = valueString
|
|
13
|
+
.replaceAll(',', '.')
|
|
14
|
+
.replace(/[^\d.-]/g, '')
|
|
15
|
+
.split('.');
|
|
16
|
+
let digit = modify.shift();
|
|
17
|
+
if (modify.length > 0) {
|
|
18
|
+
digit = digit + '.' + modify.join('');
|
|
19
|
+
}
|
|
20
|
+
valueString = digit;
|
|
21
|
+
}
|
|
22
|
+
formData.action(name, valueString);
|
|
23
|
+
};
|
|
24
|
+
const onFileHandler = (event) => {
|
|
25
|
+
const fileList = event.currentTarget.files;
|
|
26
|
+
if (!fileList)
|
|
27
|
+
return;
|
|
28
|
+
if (event.currentTarget.files) {
|
|
29
|
+
}
|
|
30
|
+
formData.action(event.currentTarget.name, event.currentTarget.files ? event.currentTarget.files[0] : null);
|
|
31
|
+
};
|
|
32
|
+
const selectType = (item) => {
|
|
33
|
+
switch (item.type) {
|
|
34
|
+
case 'text':
|
|
35
|
+
return (React.createElement(Input, { label: item.label, value: item.value, name: item.name, type: "text", size: size, handleChange: onChangeHandler, readOnly: read }));
|
|
36
|
+
case 'number':
|
|
37
|
+
return (React.createElement(Input, { label: item.label, value: item.value, name: item.name, type: "number", size: size, min: item.min, max: item.max, step: item.step, handleChange: onIntChangeHandler, readOnly: read }));
|
|
38
|
+
case 'increase':
|
|
39
|
+
return (React.createElement(Input, { type: "increase", label: item.label, value: item.value, name: item.name, size: size, handleChange: onIntChangeHandler, min: item.min, max: item.max, step: item.step, readOnly: read }));
|
|
40
|
+
case 'file':
|
|
41
|
+
return (React.createElement(File, { label: item.label, fileValue: item.value, name: item.name, size: size, handleChange: onFileHandler, readOnly: read }));
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
return (React.createElement(FormWrapper, null, formData.data.map((item) => {
|
|
45
|
+
if ('row' in item) {
|
|
46
|
+
return (React.createElement(FormRow, { key: `subRow-${item.row[0].name}` }, item.row.map((rowItem) => (React.createElement(FormSubRow, { factor: item.row.length, key: rowItem.name }, selectType(rowItem))))));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return React.createElement(FormRow, { key: item.name }, selectType(item));
|
|
50
|
+
}
|
|
51
|
+
})));
|
|
52
|
+
};
|
|
53
|
+
export default Form;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
export const FormWrapper = styled.div `
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
width: 100%;
|
|
6
|
+
`;
|
|
7
|
+
export const FormRow = styled.div `
|
|
8
|
+
width: 100%;
|
|
9
|
+
margin-bottom: 0.8rem;
|
|
10
|
+
display: flex;
|
|
11
|
+
justify-content: space-between;
|
|
12
|
+
`;
|
|
13
|
+
export const FormSubRow = styled.div `
|
|
14
|
+
display: flex;
|
|
15
|
+
width: calc((100% - ((${(p) => p.factor} - 1) * 2rem)) / ${(p) => p.factor});
|
|
16
|
+
`;
|
|
17
|
+
export const IntputWrapperBig = styled.div `
|
|
18
|
+
width: 100%;
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
margin-bottom: 1.6rem;
|
|
22
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Form';
|
|
@@ -27,10 +27,17 @@ export const iconsPath = {
|
|
|
27
27
|
search: 'm19.6 21-6.3-6.3q-.75.6-1.725.95Q10.6 16 9.5 16q-2.725 0-4.612-1.887Q3 12.225 3 9.5q0-2.725 1.888-4.613Q6.775 3 9.5 3t4.613 1.887Q16 6.775 16 9.5q0 1.1-.35 2.075-.35.975-.95 1.725l6.3 6.3ZM9.5 14q1.875 0 3.188-1.312Q14 11.375 14 9.5q0-1.875-1.312-3.188Q11.375 5 9.5 5 7.625 5 6.312 6.312 5 7.625 5 9.5q0 1.875 1.312 3.188Q7.625 14 9.5 14Z',
|
|
28
28
|
more_vert: 'M12 20q-.825 0-1.412-.587Q10 18.825 10 18q0-.825.588-1.413Q11.175 16 12 16t1.413.587Q14 17.175 14 18q0 .825-.587 1.413Q12.825 20 12 20Zm0-6q-.825 0-1.412-.588Q10 12.825 10 12t.588-1.413Q11.175 10 12 10t1.413.587Q14 11.175 14 12q0 .825-.587 1.412Q12.825 14 12 14Zm0-6q-.825 0-1.412-.588Q10 6.825 10 6t.588-1.412Q11.175 4 12 4t1.413.588Q14 5.175 14 6t-.587 1.412Q12.825 8 12 8Z',
|
|
29
29
|
more_horiz: 'M6 14C5.45 14 4.97917 13.8042 4.5875 13.4125C4.19583 13.0208 4 12.55 4 12C4 11.45 4.19583 10.9792 4.5875 10.5875C4.97917 10.1958 5.45 10 6 10C6.55 10 7.02083 10.1958 7.4125 10.5875C7.80417 10.9792 8 11.45 8 12C8 12.55 7.80417 13.0208 7.4125 13.4125C7.02083 13.8042 6.55 14 6 14ZM12 14C11.45 14 10.9792 13.8042 10.5875 13.4125C10.1958 13.0208 10 12.55 10 12C10 11.45 10.1958 10.9792 10.5875 10.5875C10.9792 10.1958 11.45 10 12 10C12.55 10 13.0208 10.1958 13.4125 10.5875C13.8042 10.9792 14 11.45 14 12C14 12.55 13.8042 13.0208 13.4125 13.4125C13.0208 13.8042 12.55 14 12 14ZM18 14C17.45 14 16.9792 13.8042 16.5875 13.4125C16.1958 13.0208 16 12.55 16 12C16 11.45 16.1958 10.9792 16.5875 10.5875C16.9792 10.1958 17.45 10 18 10C18.55 10 19.0208 10.1958 19.4125 10.5875C19.8042 10.9792 20 11.45 20 12C20 12.55 19.8042 13.0208 19.4125 13.4125C19.0208 13.8042 18.55 14 18 14Z',
|
|
30
|
+
move: 'M15 3L17.3 5.3L14.41 8.17L15.83 9.59L18.7 6.7L21 9V3H15ZM3 9L5.3 6.7L8.17 9.59L9.59 8.17L6.7 5.3L9 3H3V9ZM9 21L6.7 18.7L9.59 15.83L8.17 14.41L5.3 17.3L3 15V21H9ZM21 15L18.7 17.3L15.83 14.41L14.41 15.83L17.3 18.7L15 21H21V15Z',
|
|
31
|
+
move_ne: 'M9 5V7H15.59L4 18.59L5.41 20L17 8.41V15H19V5H9Z',
|
|
32
|
+
move_nw: 'M5 15H7V8.41L18.59 20L20 18.59L8.41 7H15V5H5V15Z',
|
|
33
|
+
move_se: 'M19 9H17V15.59L5.41 4L4 5.41L15.59 17H9V19H19V9Z',
|
|
34
|
+
move_sw: 'M15 19V17H8.41L20 5.41L18.59 4L7 15.59V9H5V19H15Z',
|
|
30
35
|
menu: 'M3 18v-2h18v2Zm0-5v-2h18v2Zm0-5V6h18v2Z',
|
|
31
36
|
unlock: 'M6 8h9V6q0-1.25-.875-2.125T12 3q-1.25 0-2.125.875T9 6H7q0-2.075 1.463-3.538Q9.925 1 12 1t3.538 1.462Q17 3.925 17 6v2h1q.825 0 1.413.587Q20 9.175 20 10v10q0 .825-.587 1.413Q18.825 22 18 22H6q-.825 0-1.412-.587Q4 20.825 4 20V10q0-.825.588-1.413Q5.175 8 6 8Zm0 12h12V10H6v10Zm6-3q.825 0 1.413-.587Q14 15.825 14 15q0-.825-.587-1.413Q12.825 13 12 13q-.825 0-1.412.587Q10 14.175 10 15q0 .825.588 1.413Q11.175 17 12 17Zm-6 3V10v10Z',
|
|
32
37
|
lock: 'M6 22q-.825 0-1.412-.587Q4 20.825 4 20V10q0-.825.588-1.413Q5.175 8 6 8h1V6q0-2.075 1.463-3.538Q9.925 1 12 1t3.538 1.462Q17 3.925 17 6v2h1q.825 0 1.413.587Q20 9.175 20 10v10q0 .825-.587 1.413Q18.825 22 18 22Zm0-2h12V10H6v10Zm6-3q.825 0 1.413-.587Q14 15.825 14 15q0-.825-.587-1.413Q12.825 13 12 13q-.825 0-1.412.587Q10 14.175 10 15q0 .825.588 1.413Q11.175 17 12 17ZM9 8h6V6q0-1.25-.875-2.125T12 3q-1.25 0-2.125.875T9 6ZM6 20V10v10Z',
|
|
33
38
|
person: 'M12 12q-1.65 0-2.825-1.175Q8 9.65 8 8q0-1.65 1.175-2.825Q10.35 4 12 4q1.65 0 2.825 1.175Q16 6.35 16 8q0 1.65-1.175 2.825Q13.65 12 12 12Zm-8 8v-2.8q0-.85.438-1.563.437-.712 1.162-1.087 1.55-.775 3.15-1.163Q10.35 13 12 13t3.25.387q1.6.388 3.15 1.163.725.375 1.162 1.087Q20 16.35 20 17.2V20Zm2-2h12v-.8q0-.275-.137-.5-.138-.225-.363-.35-1.35-.675-2.725-1.013Q13.4 15 12 15t-2.775.337Q7.85 15.675 6.5 16.35q-.225.125-.362.35-.138.225-.138.5Zm6-8q.825 0 1.413-.588Q14 8.825 14 8t-.587-1.412Q12.825 6 12 6q-.825 0-1.412.588Q10 7.175 10 8t.588 1.412Q11.175 10 12 10Zm0-2Zm0 10Z',
|
|
39
|
+
point_here: 'M5.54 8.46L2 12L5.54 15.54L7.3 13.77L5.54 12L7.3 10.23L5.54 8.46ZM12 18.46L10.23 16.7L8.46 18.46L12 22L15.54 18.46L13.77 16.7L12 18.46ZM18.46 8.46L16.7 10.23L18.46 12L16.7 13.77L18.46 15.54L22 12L18.46 8.46ZM8.46 5.54L10.23 7.3L12 5.54L13.77 7.3L15.54 5.54L12 2L8.46 5.54Z M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z',
|
|
40
|
+
point_dot: 'M12 8C9.79 8 8 9.79 8 12C8 14.21 9.79 16 12 16C14.21 16 16 14.21 16 12C16 9.79 14.21 8 12 8ZM20.94 11C20.48 6.83 17.17 3.52 13 3.06V1H11V3.06C6.83 3.52 3.52 6.83 3.06 11H1V13H3.06C3.52 17.17 6.83 20.48 11 20.94V23H13V20.94C17.17 20.48 20.48 17.17 20.94 13H23V11H20.94ZM12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12C19 15.87 15.87 19 12 19Z',
|
|
34
41
|
radio_checked: 'M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 20C7.58 20 4 16.42 4 12C4 7.58 7.58 4 12 4C16.42 4 20 7.58 20 12C20 16.42 16.42 20 12 20ZM12 17C14.7614 17 17 14.7614 17 12C17 9.23858 14.7614 7 12 7C9.23858 7 7 9.23858 7 12C7 14.7614 9.23858 17 12 17Z',
|
|
35
42
|
radio_unchecked: 'M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 20C7.58 20 4 16.42 4 12C4 7.58 7.58 4 12 4C16.42 4 20 7.58 20 12C20 16.42 16.42 20 12 20Z',
|
|
36
43
|
remove: 'M19 13H5V11H19V13Z',
|
|
@@ -1,12 +1,37 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import { ThemeProvider } from 'styled-components';
|
|
3
3
|
import { Aligment } from '../Aligment';
|
|
4
|
-
import { InputTextElement, InputLabelElement, InputErrorMsg, InputWrapper, EyeIconWrapper, IconsWrapper, } from './Input.styles';
|
|
4
|
+
import { InputTextElement, InputLabelElement, InputErrorMsg, InputWrapper, EyeIconWrapper, IconsWrapper, InputReadOnlyElement, } from './Input.styles';
|
|
5
5
|
import { Icon } from '../Icons';
|
|
6
6
|
import { mainTheme } from '../../Theme';
|
|
7
|
-
export const Input = ({ label, labelPosition = 'top', value, type = 'text', name, disabled = false, size = 'medium', handleChange, handleSubmit, width, error, placeholder, min, max, step = 0.1, autoFocus, theme = mainTheme, }) => {
|
|
7
|
+
export const Input = ({ label, labelPosition = 'top', value, type = 'text', name, disabled = false, size = 'medium', handleChange, handleSubmit, width, error, placeholder, min, max, step = 0.1, autoFocus, theme = mainTheme, readOnly = false, }) => {
|
|
8
|
+
const calculateNumberValue = (numberValue) => {
|
|
9
|
+
return isNaN(parseFloat(numberValue))
|
|
10
|
+
? numberValue
|
|
11
|
+
: parseFloat(numberValue);
|
|
12
|
+
};
|
|
8
13
|
const onChange = (e) => {
|
|
9
|
-
|
|
14
|
+
let returnedValue = type === 'number' || type === 'increase'
|
|
15
|
+
? calculateNumberValue(e.target.value)
|
|
16
|
+
: e.target.value.toString();
|
|
17
|
+
handleChange(name, returnedValue);
|
|
18
|
+
};
|
|
19
|
+
const onBlurValidation = () => {
|
|
20
|
+
if (type === 'number' || type === 'increase') {
|
|
21
|
+
let validateValue = value;
|
|
22
|
+
if (isNaN(parseFloat(validateValue.toString()))) {
|
|
23
|
+
validateValue = min !== undefined ? min : 0;
|
|
24
|
+
}
|
|
25
|
+
if (typeof value === 'number') {
|
|
26
|
+
if (min !== undefined && value < min) {
|
|
27
|
+
validateValue = min;
|
|
28
|
+
}
|
|
29
|
+
else if (max !== undefined && value > max) {
|
|
30
|
+
validateValue = max;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
handleChange(name, validateValue);
|
|
34
|
+
}
|
|
10
35
|
};
|
|
11
36
|
const onKeyDown = (e) => {
|
|
12
37
|
if (handleSubmit && e.key === 'Enter') {
|
|
@@ -35,15 +60,17 @@ export const Input = ({ label, labelPosition = 'top', value, type = 'text', name
|
|
|
35
60
|
}
|
|
36
61
|
handleChange(name, newValue);
|
|
37
62
|
};
|
|
63
|
+
// ${Theme.fontSize.m}/
|
|
38
64
|
return (React.createElement(ThemeProvider, { theme: theme },
|
|
39
65
|
React.createElement(Aligment, { align: labelPosition === 'top' ? 'flex-start' : 'center', direction: labelPosition === 'top' ? 'column' : 'row', wrap: 'nowrap' },
|
|
40
66
|
label && (React.createElement(InputLabelElement, { size: size, labelPosition: labelPosition }, label)),
|
|
41
67
|
React.createElement(InputWrapper, { width: width },
|
|
42
|
-
React.createElement(
|
|
43
|
-
|
|
44
|
-
React.createElement(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
68
|
+
React.createElement(React.Fragment, null, readOnly ? (React.createElement(InputReadOnlyElement, { inputSize: size }, inputType === 'password' ? '******' : value)) : (React.createElement(React.Fragment, null,
|
|
69
|
+
React.createElement(InputTextElement, { autoFocus: autoFocus, inputSize: size, type: showPassword ? 'text' : inputType, disabled: disabled, name: name, value: value, onChange: onChange, onKeyDown: onKeyDown, onBlur: onBlurValidation, error: error, placeholder: placeholder, min: min, max: max, step: step }),
|
|
70
|
+
inputType === 'password' && (React.createElement(EyeIconWrapper, { size: size },
|
|
71
|
+
React.createElement(Icon, { name: showPassword ? 'visability_off' : 'visibility', size: 24, onClick: tooglePassword, iconColor: theme.inputDefaultTextColor, iconBgHoverColor: "transparent" }))),
|
|
72
|
+
type === 'increase' && (React.createElement(IconsWrapper, null,
|
|
73
|
+
React.createElement(Icon, { name: "add", size: size === 'small' ? 16 : 24, onClick: () => increaseValue(value), iconColor: theme.inputDefaultTextColor }),
|
|
74
|
+
React.createElement(Icon, { name: "remove", size: size === 'small' ? 16 : 24, onClick: () => decreaseValue(value), iconColor: theme.inputDefaultTextColor }))),
|
|
75
|
+
error && React.createElement(InputErrorMsg, null, error))))))));
|
|
49
76
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { setSize, setEyeTopPosition } from '../common';
|
|
1
|
+
import { setSize, setEyeTopPosition, setHeight } from '../common';
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
import { Theme } from '../../Theme';
|
|
4
4
|
import { TextLabel } from '../Typography';
|
|
@@ -43,6 +43,24 @@ export const InputTextElement = styled.input `
|
|
|
43
43
|
-moz-appearance: textfield;
|
|
44
44
|
appearance: textfield;
|
|
45
45
|
`;
|
|
46
|
+
export const InputReadOnlyElement = styled.div `
|
|
47
|
+
position: relative;
|
|
48
|
+
box-sizing: border-box;
|
|
49
|
+
background-color: ${(p) => p.theme.inputDefaultBackground};
|
|
50
|
+
border: 1px solid transparent;
|
|
51
|
+
border-radius: ${Theme.borderRadius.m};
|
|
52
|
+
font-family: 'Lato', sans-serif;
|
|
53
|
+
outline: 0;
|
|
54
|
+
white-space: nowrap;
|
|
55
|
+
overflow: hidden;
|
|
56
|
+
text-overflow: ellipsis;
|
|
57
|
+
${(p) => setSize(p.inputSize)}
|
|
58
|
+
${(p) => setHeight(p.inputSize)}
|
|
59
|
+
color: ${(p) => p.theme.inputDefaultTextColor};
|
|
60
|
+
width: ${(p) => (p.width ? p.width : '100%')};
|
|
61
|
+
padding-left:0;
|
|
62
|
+
border-bottom:1px solid #dddddd;
|
|
63
|
+
`;
|
|
46
64
|
export const InputLabelElement = styled(TextLabel) `
|
|
47
65
|
${(p) => p.labelPosition === 'top' && `margin-bottom: ${Theme.padding.s};`}
|
|
48
66
|
${(p) => p.labelPosition === 'left' && `margin-right: ${Theme.padding.s};`}
|
|
@@ -64,7 +82,6 @@ export const EyeIconWrapper = styled.div `
|
|
|
64
82
|
${(p) => setEyeTopPosition(p.size)}
|
|
65
83
|
`;
|
|
66
84
|
export const IconsWrapper = styled.div `
|
|
67
|
-
display:flex;
|
|
85
|
+
display: flex;
|
|
68
86
|
align-items: center;
|
|
69
|
-
|
|
70
87
|
`;
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
2
|
import { ThemeProvider } from 'styled-components';
|
|
3
|
-
import { OptionTableCell, OptionTableCellWrapper, OptionTableHeaderCell, TableCell, TableHead, TableHeaderCell, TableHeaderSortIcon, TableRow,
|
|
3
|
+
import { OptionTableCell, OptionTableCellWrapper, OptionTableHeaderCell, TableCell, TableHead, TableHeaderCell, TableHeaderSortIcon, TableRow, TableWrapper, } from './Table.styles';
|
|
4
4
|
import { mainTheme } from '../../Theme';
|
|
5
5
|
import { format } from 'date-fns';
|
|
6
6
|
import { Icon } from '../Icons';
|
|
7
|
-
import {
|
|
8
|
-
import { Filters, setTableFilterSet } from '../Filters';
|
|
9
|
-
import { applySort, setElements, setSortParams } from './tableHelper';
|
|
10
|
-
import { Chips } from '../Chips';
|
|
7
|
+
import { applySort, setSortParams } from './tableHelper';
|
|
11
8
|
import { DropdownMenu } from '../DropdownMenu';
|
|
12
9
|
export const Table = ({ theme = mainTheme, headers, elements,
|
|
13
10
|
// isBulkAction = false,
|
|
14
|
-
hover = true, selectable = true, sortable = true,
|
|
11
|
+
hover = true, selectable = true, sortable = true, sort = {
|
|
15
12
|
name: '',
|
|
16
13
|
order: 'none',
|
|
17
|
-
},
|
|
14
|
+
}, moreActions = [], onRowClick, }) => {
|
|
18
15
|
const checkHeaders = () => {
|
|
19
16
|
const tableHeaders = [...headers];
|
|
20
17
|
if (moreActions.length > 0) {
|
|
@@ -27,31 +24,16 @@ hover = true, selectable = true, sortable = true, filtrable = false, sort = {
|
|
|
27
24
|
return tableHeaders;
|
|
28
25
|
};
|
|
29
26
|
const [tableProps, setTableProps] = useState({
|
|
30
|
-
elements:
|
|
27
|
+
elements: elements,
|
|
31
28
|
sort: sort,
|
|
32
|
-
filters: filters,
|
|
33
29
|
headers: checkHeaders(),
|
|
34
30
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
useEffect(() => {
|
|
42
|
-
setTableProps({
|
|
43
|
-
...tableProps,
|
|
44
|
-
elements: setElements(elements, sort, filters),
|
|
45
|
-
});
|
|
46
|
-
}, [elements]);
|
|
47
|
-
useEffect(() => {
|
|
48
|
-
if (!isElementsArrayEqual(elements, tableProps.elements)) {
|
|
49
|
-
setTableProps({
|
|
50
|
-
...tableProps,
|
|
51
|
-
elements: setElements(elements, sort, filters),
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
});
|
|
31
|
+
// useEffect(() => {
|
|
32
|
+
// setTableProps({
|
|
33
|
+
// ...tableProps,
|
|
34
|
+
// elements: setElements(elements, sort, filters),
|
|
35
|
+
// })
|
|
36
|
+
// }, [elements])
|
|
55
37
|
const [selectedRow, setSelectedRow] = useState('');
|
|
56
38
|
const handleRowClick = (id) => {
|
|
57
39
|
if (selectable) {
|
|
@@ -69,28 +51,21 @@ hover = true, selectable = true, sortable = true, filtrable = false, sort = {
|
|
|
69
51
|
});
|
|
70
52
|
}
|
|
71
53
|
};
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
},
|
|
87
|
-
});
|
|
88
|
-
};
|
|
54
|
+
// const resetSorting = () => {
|
|
55
|
+
// setTableProps({
|
|
56
|
+
// ...tableProps,
|
|
57
|
+
// elements: setElements(
|
|
58
|
+
// elements,
|
|
59
|
+
// { name: '', order: 'asc' },
|
|
60
|
+
// tableProps.filters,
|
|
61
|
+
// ),
|
|
62
|
+
// sort: {
|
|
63
|
+
// name: '',
|
|
64
|
+
// order: 'asc',
|
|
65
|
+
// },
|
|
66
|
+
// })
|
|
67
|
+
// }
|
|
89
68
|
return (React.createElement(ThemeProvider, { theme: theme },
|
|
90
|
-
(filtrable || sortable) && (React.createElement(TableTopBar, null,
|
|
91
|
-
React.createElement(Aligment, { justify: "flex-start", gap: 10 },
|
|
92
|
-
filtrable && (React.createElement(Filters, { title: filtersTitle, labelConfirm: filtersConfirmLabel, labelClose: filtersCancelLabel, labelClearAll: filterClearAllLabel, handleSubmitFilters: handleFilters, filters: setTableFilterSet(headers, elements) })),
|
|
93
|
-
sortable && tableProps.sort.name !== '' && (React.createElement(Chips, { label: sortClearLabel, handleClose: resetSorting }))))),
|
|
94
69
|
React.createElement(TableWrapper, { cellPadding: "0", cellSpacing: "0" },
|
|
95
70
|
React.createElement(TableHead, null,
|
|
96
71
|
React.createElement(TableRow, { hover: false, selectable: false, active: false }, tableProps.headers.map((header) => (React.createElement(React.Fragment, null, header.action ? (React.createElement(OptionTableHeaderCell, null)) : (React.createElement(TableHeaderCell, { key: header.name, sortable: sortable, onClick: () => handleHeaderCellClick(header.valueSource), isSorted: tableProps.sort.name === header.valueSource &&
|
|
@@ -101,7 +76,7 @@ hover = true, selectable = true, sortable = true, filtrable = false, sort = {
|
|
|
101
76
|
React.createElement(Icon, { name: tableProps.sort.order === 'asc'
|
|
102
77
|
? 'arrow_drop_down'
|
|
103
78
|
: 'arrow_drop_up', iconColor: theme.tableCellSortIcon, size: 20 })))))))))),
|
|
104
|
-
React.createElement("tbody", null, tableProps.elements.map((item) => (React.createElement(TableRow, { key: item.id, hover: hover, active: selectedRow === item.id, selectable: selectable, onClick: () => handleRowClick(item.id) }, tableProps.headers.map((header) => (React.createElement(React.Fragment, null, header.action ? (React.createElement(OptionTableCell,
|
|
79
|
+
React.createElement("tbody", null, tableProps.elements.map((item) => (React.createElement(TableRow, { key: item.id, hover: hover, active: selectedRow === item.id, selectable: selectable, onClick: () => handleRowClick(item.id) }, tableProps.headers.map((header) => (React.createElement(React.Fragment, null, header.action ? (React.createElement(OptionTableCell, { key: `${item.id}-${header.name}-action` },
|
|
105
80
|
React.createElement(OptionTableCellWrapper, { onClick: (e) => e.stopPropagation() },
|
|
106
81
|
React.createElement(DropdownMenu, { options: moreActions, targetID: item.id, iconName: "more_vert", iconColor: theme.tableMoreIconColor })))) : (React.createElement(TableCell, { key: `${item.id}-${header.name}` }, header.date
|
|
107
82
|
? format(item[header.valueSource], 'dd-MM-yyyy')
|
|
@@ -73,9 +73,6 @@ export const TableCell = styled.td `
|
|
|
73
73
|
padding: 8px;
|
|
74
74
|
border-bottom: 1px solid ${(p) => p.theme.tableBorderColor};
|
|
75
75
|
`;
|
|
76
|
-
export const TableTopBar = styled.div `
|
|
77
|
-
padding-bottom: 4px;
|
|
78
|
-
`;
|
|
79
76
|
export const OptionTableCell = styled.td `
|
|
80
77
|
border-bottom: 1px solid ${(p) => p.theme.tableBorderColor};
|
|
81
78
|
text-align: center;
|
|
@@ -27,6 +27,18 @@ export const sizes = {
|
|
|
27
27
|
line-height: ${Theme.lineHeight.l};
|
|
28
28
|
`,
|
|
29
29
|
};
|
|
30
|
+
export const height = {
|
|
31
|
+
small: `
|
|
32
|
+
height: calc( ${Theme.lineHeight.s} + 2 * (${Theme.padding.s}) + 2px);
|
|
33
|
+
`,
|
|
34
|
+
medium: `
|
|
35
|
+
height: calc( ${Theme.lineHeight.m} + 2 * (${Theme.padding.m}) + 2px);
|
|
36
|
+
|
|
37
|
+
`,
|
|
38
|
+
large: `
|
|
39
|
+
font-height: calc( ${Theme.lineHeight.l} + 2 * (${Theme.padding.m}) + 2px);
|
|
40
|
+
`,
|
|
41
|
+
};
|
|
30
42
|
export const inputPadding = {
|
|
31
43
|
small: `
|
|
32
44
|
padding: ${Theme.padding.s};
|
|
@@ -75,6 +87,9 @@ export const eyeTopPosition = {
|
|
|
75
87
|
export const setSize = (size) => {
|
|
76
88
|
return sizes[size] + inputPadding[size];
|
|
77
89
|
};
|
|
90
|
+
export const setHeight = (size) => {
|
|
91
|
+
return height[size];
|
|
92
|
+
};
|
|
78
93
|
export const setButtonSize = (size, loader) => {
|
|
79
94
|
return (sizes[size] + (loader ? buttonLoaderPadding[size] : buttonPadding[size]));
|
|
80
95
|
};
|
package/dist/esm/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export * from './components/Dropdown';
|
|
|
7
7
|
export * from './components/DropdownMenu';
|
|
8
8
|
export * from './components/ElementHeader';
|
|
9
9
|
export * from './components/DropdownMenu';
|
|
10
|
+
export * from './components/Form';
|
|
10
11
|
export * from './components/File';
|
|
11
12
|
export * from './components/Filters';
|
|
12
13
|
export * from './components/Icons';
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IApplyFilterResults, IFilterProps } from './Filters';
|
|
1
|
+
import { IApplyFilterResults, IFilterConfigProps, IFilterProps } from './Filters';
|
|
3
2
|
export type TAllowValues = 'string' | 'number';
|
|
4
3
|
export declare const getUniqueValues: (elements: any, source: string) => string[];
|
|
5
4
|
export declare const getMinValue: (elements: any, source: string) => number;
|
|
6
5
|
export declare const getMaxValue: (elements: any, source: string) => number;
|
|
7
|
-
export declare const setTableFilterSet: (headers:
|
|
6
|
+
export declare const setTableFilterSet: (headers: IFilterConfigProps[], elements: any) => IFilterProps[];
|
|
8
7
|
export declare const applyFiltersToTable: (elements: any, filters: IApplyFilterResults[]) => any[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { FormSourceData } from './formTypes';
|
|
3
|
+
import { InputSize } from 'types';
|
|
4
|
+
export interface FormProps {
|
|
5
|
+
formData: FormSourceData;
|
|
6
|
+
size?: InputSize;
|
|
7
|
+
read?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const Form: FC<FormProps>;
|
|
10
|
+
export default Form;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const FormWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
2
|
+
export declare const FormRow: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
interface FormSubRowProps {
|
|
4
|
+
factor: number;
|
|
5
|
+
}
|
|
6
|
+
export declare const FormSubRow: import("styled-components").StyledComponent<"div", any, FormSubRowProps, never>;
|
|
7
|
+
export declare const IntputWrapperBig: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const updateForm: (state: any, updateState: any, field: string, value: string | number) => void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface FormDataProps {
|
|
2
|
+
type: string;
|
|
3
|
+
label: string;
|
|
4
|
+
value: any;
|
|
5
|
+
name: string;
|
|
6
|
+
min?: number;
|
|
7
|
+
max?: number;
|
|
8
|
+
step?: number;
|
|
9
|
+
}
|
|
10
|
+
interface FormDataParentProps {
|
|
11
|
+
row: FormDataProps[];
|
|
12
|
+
}
|
|
13
|
+
export type DataType = FormDataProps | FormDataParentProps;
|
|
14
|
+
export interface FormSourceData {
|
|
15
|
+
data: DataType[];
|
|
16
|
+
action: any;
|
|
17
|
+
}
|
|
18
|
+
export interface IDetailsProps {
|
|
19
|
+
label: string;
|
|
20
|
+
value: any;
|
|
21
|
+
type: string;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Form';
|
|
@@ -27,10 +27,17 @@ export declare const iconsPath: {
|
|
|
27
27
|
search: string;
|
|
28
28
|
more_vert: string;
|
|
29
29
|
more_horiz: string;
|
|
30
|
+
move: string;
|
|
31
|
+
move_ne: string;
|
|
32
|
+
move_nw: string;
|
|
33
|
+
move_se: string;
|
|
34
|
+
move_sw: string;
|
|
30
35
|
menu: string;
|
|
31
36
|
unlock: string;
|
|
32
37
|
lock: string;
|
|
33
38
|
person: string;
|
|
39
|
+
point_here: string;
|
|
40
|
+
point_dot: string;
|
|
34
41
|
radio_checked: string;
|
|
35
42
|
radio_unchecked: string;
|
|
36
43
|
remove: string;
|
|
@@ -11,6 +11,12 @@ interface IInputTextElementProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
|
11
11
|
inputmode?: any;
|
|
12
12
|
}
|
|
13
13
|
export declare const InputTextElement: import("styled-components").StyledComponent<"input", any, IInputTextElementProps, never>;
|
|
14
|
+
interface IInputReadOnlyElementProps {
|
|
15
|
+
inputSize: InputSize;
|
|
16
|
+
width?: string;
|
|
17
|
+
theme: any;
|
|
18
|
+
}
|
|
19
|
+
export declare const InputReadOnlyElement: import("styled-components").StyledComponent<"div", any, IInputReadOnlyElementProps, never>;
|
|
14
20
|
export declare const InputLabelElement: import("styled-components").StyledComponent<"div", any, import("../Typography").ITextLabelProps, never>;
|
|
15
21
|
interface IInputWrapperProps {
|
|
16
22
|
width?: string;
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
|
-
import { IApplyFilterResults } from '../Filters';
|
|
3
2
|
import { IAction } from '../../types';
|
|
4
3
|
export interface ITableHeaderProps {
|
|
5
4
|
name: string;
|
|
6
5
|
valueSource: string;
|
|
7
6
|
sort?: boolean;
|
|
8
7
|
date?: boolean;
|
|
9
|
-
filter?: boolean;
|
|
10
|
-
filterType?: 'select' | 'range';
|
|
11
8
|
action?: boolean;
|
|
12
9
|
}
|
|
13
10
|
export interface ITableSortProps {
|
|
@@ -24,13 +21,7 @@ interface ITableProps {
|
|
|
24
21
|
sortable?: boolean;
|
|
25
22
|
filtrable?: boolean;
|
|
26
23
|
sort?: ITableSortProps;
|
|
27
|
-
filters?: IApplyFilterResults[];
|
|
28
24
|
onRowClick?: (id: string) => void;
|
|
29
|
-
filtersTitle?: string;
|
|
30
|
-
filtersConfirmLabel?: string;
|
|
31
|
-
filtersCancelLabel?: string;
|
|
32
|
-
filterClearAllLabel?: string;
|
|
33
|
-
sortClearLabel?: string;
|
|
34
25
|
}
|
|
35
26
|
export declare const Table: FC<ITableProps>;
|
|
36
27
|
export {};
|
|
@@ -21,7 +21,6 @@ interface ITableCellProps {
|
|
|
21
21
|
theme: any;
|
|
22
22
|
}
|
|
23
23
|
export declare const TableCell: import("styled-components").StyledComponent<"td", any, ITableCellProps, never>;
|
|
24
|
-
export declare const TableTopBar: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
25
24
|
export declare const OptionTableCell: import("styled-components").StyledComponent<"td", any, {}, never>;
|
|
26
25
|
export declare const OptionTableCellWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
27
26
|
export {};
|
|
@@ -5,6 +5,11 @@ export declare const sizes: {
|
|
|
5
5
|
medium: string;
|
|
6
6
|
large: string;
|
|
7
7
|
};
|
|
8
|
+
export declare const height: {
|
|
9
|
+
small: string;
|
|
10
|
+
medium: string;
|
|
11
|
+
large: string;
|
|
12
|
+
};
|
|
8
13
|
export declare const inputPadding: {
|
|
9
14
|
small: string;
|
|
10
15
|
medium: string;
|
|
@@ -31,6 +36,7 @@ export declare const eyeTopPosition: {
|
|
|
31
36
|
large: string;
|
|
32
37
|
};
|
|
33
38
|
export declare const setSize: (size: InputSize) => string;
|
|
39
|
+
export declare const setHeight: (size: InputSize) => string;
|
|
34
40
|
export declare const setButtonSize: (size: InputSize, loader: boolean) => string;
|
|
35
41
|
export declare const setButtonLoaderSize: (size: InputSize) => string;
|
|
36
42
|
export declare const setEyeTopPosition: (size: InputSize) => string;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export * from './components/Dropdown';
|
|
|
7
7
|
export * from './components/DropdownMenu';
|
|
8
8
|
export * from './components/ElementHeader';
|
|
9
9
|
export * from './components/DropdownMenu';
|
|
10
|
+
export * from './components/Form';
|
|
10
11
|
export * from './components/File';
|
|
11
12
|
export * from './components/Filters';
|
|
12
13
|
export * from './components/Icons';
|