@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 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
@@ -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,4 @@
1
+ import * as React from 'react';
2
+ import { EditListProps } from './editable-list.types';
3
+ export declare const EditableList: React.FC<EditListProps>;
4
+ export default EditableList;
@@ -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
@@ -1 +1,3 @@
1
+ import { EditableList } from './editable-list/editable-list';
2
+ export { EditableList };
1
3
  export { default } from './Form';
package/dist/index.js CHANGED
@@ -1 +1,3 @@
1
+ import { EditableList } from './editable-list/editable-list';
2
+ export { EditableList };
1
3
  export { default } from './Form';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-form",
3
- "version": "0.2.19",
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": "a95bdd142863a7e132acf2cc4bf66e247d06a26c"
49
+ "gitHead": "c92d02f04157e6b1189eb59bba9dea4c1594c123"
46
50
  }