@synerise/ds-form 0.2.19 → 0.4.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/CHANGELOG.md +37 -0
- package/dist/editable-list/__spec__/editable-list.spec.d.ts +0 -0
- package/dist/editable-list/__spec__/editable-list.spec.js +9 -0
- package/dist/editable-list/editable-list.d.ts +4 -0
- package/dist/editable-list/editable-list.js +99 -0
- package/dist/editable-list/editable-list.styles.d.ts +10 -0
- package/dist/editable-list/editable-list.styles.js +32 -0
- package/dist/editable-list/editable-list.types.d.ts +20 -0
- package/dist/editable-list/editable-list.types.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/package.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,43 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [0.4.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-form@0.3.1...@synerise/ds-form@0.4.0) (2022-08-29)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **form:** add index for render column functions in EditableList ([54a2699](https://github.com/Synerise/synerise-design/commit/54a26997a4b6d136273da47f20b14ff17939119b))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [0.3.1](https://github.com/Synerise/synerise-design/compare/@synerise/ds-form@0.3.0...@synerise/ds-form@0.3.1) (2022-08-25)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @synerise/ds-form
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# [0.3.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-form@0.2.19...@synerise/ds-form@0.3.0) (2022-08-22)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* **form:** editable-list imports refactor and fix + export in index.ts ([369a6d9](https://github.com/Synerise/synerise-design/commit/369a6d9f8c7aa562eb860fcb105b1f2d1c0b2a99))
|
|
31
|
+
* **form:** initial value, renderProps in EditableList ([9f6ffeb](https://github.com/Synerise/synerise-design/commit/9f6ffeb40efb8e77f16692c5d2f4c91b4e563536))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Features
|
|
35
|
+
|
|
36
|
+
* **form:** add new component editable-list ([3f3331c](https://github.com/Synerise/synerise-design/commit/3f3331c6e832f396c7f26123539fe074be35e498))
|
|
37
|
+
* **form:** add new component editable-list ([35edb08](https://github.com/Synerise/synerise-design/commit/35edb08fc02079b04ae828664c618849cedb3525))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
6
43
|
## [0.2.19](https://github.com/Synerise/synerise-design/compare/@synerise/ds-form@0.2.14...@synerise/ds-form@0.2.19) (2022-08-11)
|
|
7
44
|
|
|
8
45
|
**Note:** Version bump only for package @synerise/ds-form
|
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
describe('editable-list', function () {
|
|
2
|
+
it.todo('is able to invalidate every second row'
|
|
3
|
+
/* () => {
|
|
4
|
+
const container = renderWithProvider(<EditableList value={[{}, {}, {}, {}]} renderLeftColumn={(param, i) => <input className={i % 2 == 'error' : ''}/>}>)
|
|
5
|
+
container.querySelectorAll('.error')
|
|
6
|
+
return render
|
|
7
|
+
} */
|
|
8
|
+
);
|
|
9
|
+
});
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { Input } from '@synerise/ds-input';
|
|
2
|
+
import Autocomplete from '@synerise/ds-autocomplete';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import theme from '@synerise/ds-core/dist/js/DSProvider/ThemeProvider/theme';
|
|
5
|
+
import Icon, { Add3M } from '@synerise/ds-icon';
|
|
6
|
+
import Cruds from '@synerise/ds-cruds';
|
|
7
|
+
import * as S from './editable-list.styles';
|
|
8
|
+
export var EditableList = function EditableList(_ref) {
|
|
9
|
+
var _renderAddButton;
|
|
10
|
+
|
|
11
|
+
var leftColumnName = _ref.leftColumnName,
|
|
12
|
+
rightColumnName = _ref.rightColumnName,
|
|
13
|
+
autocompleteOptions = _ref.autocompleteOptions,
|
|
14
|
+
value = _ref.value,
|
|
15
|
+
_onChange = _ref.onChange,
|
|
16
|
+
textAddButton = _ref.textAddButton,
|
|
17
|
+
onSearch = _ref.onSearch,
|
|
18
|
+
onClickAddRow = _ref.onClickAddRow,
|
|
19
|
+
renderAddButton = _ref.renderAddButton,
|
|
20
|
+
renderLeftColumn = _ref.renderLeftColumn,
|
|
21
|
+
renderRightColumn = _ref.renderRightColumn,
|
|
22
|
+
renderAdditionalColumn = _ref.renderAdditionalColumn,
|
|
23
|
+
renderActions = _ref.renderActions;
|
|
24
|
+
|
|
25
|
+
var _React$useState = React.useState([]),
|
|
26
|
+
params = _React$useState[0],
|
|
27
|
+
setParams = _React$useState[1];
|
|
28
|
+
|
|
29
|
+
var paramsWithNewValue = function paramsWithNewValue(id, name, newValue) {
|
|
30
|
+
var updatedParams = [].concat(params || []);
|
|
31
|
+
updatedParams[id] = {
|
|
32
|
+
name: name,
|
|
33
|
+
value: newValue
|
|
34
|
+
};
|
|
35
|
+
return updatedParams;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
React.useEffect(function () {
|
|
39
|
+
setParams(value);
|
|
40
|
+
}, [value]);
|
|
41
|
+
|
|
42
|
+
var onSetParamsDefault = function onSetParamsDefault() {
|
|
43
|
+
return setParams(function (prevParams) {
|
|
44
|
+
return [].concat(prevParams || [], [{
|
|
45
|
+
name: '',
|
|
46
|
+
value: ''
|
|
47
|
+
}]);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
return /*#__PURE__*/React.createElement("div", null, params == null ? void 0 : params.map(function (param, id) {
|
|
52
|
+
var _renderLeftColumn, _renderRightColumn;
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
/*#__PURE__*/
|
|
56
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
57
|
+
React.createElement(S.RowWrapper, {
|
|
58
|
+
key: id
|
|
59
|
+
}, (_renderLeftColumn = renderLeftColumn == null ? void 0 : renderLeftColumn(param, id)) != null ? _renderLeftColumn : /*#__PURE__*/React.createElement(S.AutoCompleteWrapper, null, /*#__PURE__*/React.createElement(Autocomplete, {
|
|
60
|
+
style: {
|
|
61
|
+
width: 350
|
|
62
|
+
},
|
|
63
|
+
onSearch: onSearch,
|
|
64
|
+
value: param.name,
|
|
65
|
+
onChange: function onChange(paramName) {
|
|
66
|
+
var newParams = paramsWithNewValue(id, paramName, param.value);
|
|
67
|
+
setParams(newParams);
|
|
68
|
+
if (_onChange) _onChange(newParams);
|
|
69
|
+
},
|
|
70
|
+
label: id === 0 ? leftColumnName : null
|
|
71
|
+
}, autocompleteOptions)), (_renderRightColumn = renderRightColumn == null ? void 0 : renderRightColumn(param, id)) != null ? _renderRightColumn : /*#__PURE__*/React.createElement(S.InputWrapper, null, /*#__PURE__*/React.createElement(Input, {
|
|
72
|
+
value: param.value,
|
|
73
|
+
onChange: function onChange(ev) {
|
|
74
|
+
var newParams = paramsWithNewValue(id, param.name, ev.target.value);
|
|
75
|
+
setParams(newParams);
|
|
76
|
+
if (_onChange) _onChange(newParams);
|
|
77
|
+
},
|
|
78
|
+
style: {
|
|
79
|
+
width: '300px'
|
|
80
|
+
},
|
|
81
|
+
label: id === 0 ? rightColumnName : null
|
|
82
|
+
})), renderAdditionalColumn == null ? void 0 : renderAdditionalColumn(), typeof renderActions === 'function' && (renderActions == null ? void 0 : renderActions(param, id, params)) || renderActions === true && /*#__PURE__*/React.createElement(S.CrudWrapper, {
|
|
83
|
+
marginWithLabel: id === 0 ? leftColumnName : null
|
|
84
|
+
}, /*#__PURE__*/React.createElement(Cruds, {
|
|
85
|
+
onRemove: function onRemove() {
|
|
86
|
+
return setParams([].concat(params.slice(0, id), params.slice(id + 1, params.length)));
|
|
87
|
+
}
|
|
88
|
+
})) || undefined)
|
|
89
|
+
);
|
|
90
|
+
}), (_renderAddButton = renderAddButton == null ? void 0 : renderAddButton()) != null ? _renderAddButton : /*#__PURE__*/React.createElement(S.ButtonWrapper, null, /*#__PURE__*/React.createElement(S.AddButton, {
|
|
91
|
+
onClick: onClickAddRow || onSetParamsDefault,
|
|
92
|
+
type: "ghost-primary"
|
|
93
|
+
}, /*#__PURE__*/React.createElement(S.AddIconWrapper, null, /*#__PURE__*/React.createElement(Icon, {
|
|
94
|
+
component: /*#__PURE__*/React.createElement(Add3M, null),
|
|
95
|
+
size: 24,
|
|
96
|
+
color: theme.palette['blue-600']
|
|
97
|
+
})), /*#__PURE__*/React.createElement("span", null, textAddButton))));
|
|
98
|
+
};
|
|
99
|
+
export default EditableList;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Button from '@synerise/ds-button';
|
|
2
|
+
export declare const RowWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
3
|
+
export declare const AutoCompleteWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
4
|
+
export declare const ButtonWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
5
|
+
export declare const AddButton: import("styled-components").StyledComponent<typeof Button, any, {}, never>;
|
|
6
|
+
export declare const AddIconWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
7
|
+
export declare const CrudWrapper: import("styled-components").StyledComponent<"div", any, {
|
|
8
|
+
marginWithLabel?: boolean | React.ReactNode;
|
|
9
|
+
}, never>;
|
|
10
|
+
export declare const InputWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
import Button from '@synerise/ds-button';
|
|
3
|
+
export var RowWrapper = styled.div.withConfig({
|
|
4
|
+
displayName: "editable-liststyles__RowWrapper",
|
|
5
|
+
componentId: "ctaimf-0"
|
|
6
|
+
})(["@media (min-width:1280px){display:flex;padding:8px 200px 8px 0px;align-items:start;}padding:8px 0px 8px 0px;"]);
|
|
7
|
+
export var AutoCompleteWrapper = styled.div.withConfig({
|
|
8
|
+
displayName: "editable-liststyles__AutoCompleteWrapper",
|
|
9
|
+
componentId: "ctaimf-1"
|
|
10
|
+
})(["padding-right:10px;margin-bottom:15px;"]);
|
|
11
|
+
export var ButtonWrapper = styled.div.withConfig({
|
|
12
|
+
displayName: "editable-liststyles__ButtonWrapper",
|
|
13
|
+
componentId: "ctaimf-2"
|
|
14
|
+
})([""]);
|
|
15
|
+
export var AddButton = styled(Button).withConfig({
|
|
16
|
+
displayName: "editable-liststyles__AddButton",
|
|
17
|
+
componentId: "ctaimf-3"
|
|
18
|
+
})(["span{padding:0 4px;}"]);
|
|
19
|
+
export var AddIconWrapper = styled.div.withConfig({
|
|
20
|
+
displayName: "editable-liststyles__AddIconWrapper",
|
|
21
|
+
componentId: "ctaimf-4"
|
|
22
|
+
})(["display:inline-block;"]);
|
|
23
|
+
export var CrudWrapper = styled.div.withConfig({
|
|
24
|
+
displayName: "editable-liststyles__CrudWrapper",
|
|
25
|
+
componentId: "ctaimf-5"
|
|
26
|
+
})(["padding-left:4px;margin-top:", ";"], function (props) {
|
|
27
|
+
return props.marginWithLabel ? '30px' : '4px';
|
|
28
|
+
});
|
|
29
|
+
export var InputWrapper = styled.div.withConfig({
|
|
30
|
+
displayName: "editable-liststyles__InputWrapper",
|
|
31
|
+
componentId: "ctaimf-6"
|
|
32
|
+
})(["padding-left:4px;"]);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare type EditableParam = {
|
|
3
|
+
name: string;
|
|
4
|
+
value: string;
|
|
5
|
+
};
|
|
6
|
+
export declare type EditListProps = {
|
|
7
|
+
autocompleteOptions?: string | React.ReactNode;
|
|
8
|
+
leftColumnName?: string | React.ReactNode;
|
|
9
|
+
rightColumnName?: string | React.ReactNode;
|
|
10
|
+
value?: EditableParam[];
|
|
11
|
+
onChange?: (params: EditableParam[]) => void;
|
|
12
|
+
onSearch?: (query: string) => void;
|
|
13
|
+
onClickAddRow?: () => void;
|
|
14
|
+
textAddButton?: string;
|
|
15
|
+
renderAddButton?: (params?: EditableParam[]) => JSX.Element;
|
|
16
|
+
renderLeftColumn?: (param?: EditableParam, index?: number) => JSX.Element;
|
|
17
|
+
renderRightColumn?: (param?: EditableParam, index?: number, ref?: React.ClassAttributes<{}>['ref']) => JSX.Element;
|
|
18
|
+
renderAdditionalColumn?: (row?: EditableParam[]) => JSX.Element;
|
|
19
|
+
renderActions?: boolean | ((param?: EditableParam, idx?: number, params?: EditableParam[]) => JSX.Element);
|
|
20
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synerise/ds-form",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Form UI Component for the Synerise Design System",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"repository": "Synerise/synerise-design",
|
|
@@ -32,7 +32,11 @@
|
|
|
32
32
|
],
|
|
33
33
|
"types": "dist/index.d.ts",
|
|
34
34
|
"dependencies": {
|
|
35
|
+
"@synerise/ds-button": "^0.17.8",
|
|
36
|
+
"@synerise/ds-cruds": "^0.3.16",
|
|
35
37
|
"@synerise/ds-divider": "^0.5.19",
|
|
38
|
+
"@synerise/ds-icon": "^0.50.0",
|
|
39
|
+
"@synerise/ds-input": "^0.18.18",
|
|
36
40
|
"@synerise/ds-typography": "^0.12.7"
|
|
37
41
|
},
|
|
38
42
|
"peerDependencies": {
|
|
@@ -42,5 +46,5 @@
|
|
|
42
46
|
"devDependencies": {
|
|
43
47
|
"@synerise/ds-utils": "^0.22.8"
|
|
44
48
|
},
|
|
45
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "c92d02f04157e6b1189eb59bba9dea4c1594c123"
|
|
46
50
|
}
|