@insticc/genericform 1.0.2 → 1.0.4

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.
@@ -20,6 +20,7 @@ var CustomCheckbox = function CustomCheckbox(_ref) {
20
20
  helpText = _ref$helpText === void 0 ? "" : _ref$helpText;
21
21
  return /*#__PURE__*/_react["default"].createElement("div", {
22
22
  className: "checkboxDiv",
23
+ id: name,
23
24
  key: name
24
25
  }, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Form.Checkbox, {
25
26
  type: "checkbox",
@@ -21,6 +21,7 @@ var CustomDatePicker = function CustomDatePicker(_ref) {
21
21
  _ref$style = _ref.style,
22
22
  style = _ref$style === void 0 ? null : _ref$style;
23
23
  return /*#__PURE__*/_react["default"].createElement("div", {
24
+ className: "datePickerDiv",
24
25
  key: name,
25
26
  id: 'form-dateDiv-' + name,
26
27
  style: style ? style : {
@@ -22,6 +22,7 @@ var CustomInput = function CustomInput(_ref) {
22
22
  inputStyle = _ref$inputStyle === void 0 ? null : _ref$inputStyle,
23
23
  className = _ref.className;
24
24
  return /*#__PURE__*/_react["default"].createElement("div", {
25
+ className: "inputDiv",
25
26
  id: name,
26
27
  style: style ? style : {
27
28
  marginBottom: '13px'
@@ -12,6 +12,8 @@ var CustomLabel = function CustomLabel(_ref) {
12
12
  _ref$style = _ref.style,
13
13
  style = _ref$style === void 0 ? null : _ref$style;
14
14
  return /*#__PURE__*/_react["default"].createElement("div", {
15
+ className: "labelDiv",
16
+ id: name,
15
17
  key: name,
16
18
  style: style ? style : {
17
19
  marginBottom: '13px'
@@ -21,8 +21,12 @@ var CustomNumberInput = function CustomNumberInput(_ref) {
21
21
  _ref$helpText = _ref.helpText,
22
22
  helpText = _ref$helpText === void 0 ? "" : _ref$helpText,
23
23
  _ref$style = _ref.style,
24
- style = _ref$style === void 0 ? null : _ref$style;
24
+ style = _ref$style === void 0 ? null : _ref$style,
25
+ _ref$tooltip = _ref.tooltip,
26
+ tooltip = _ref$tooltip === void 0 ? "" : _ref$tooltip;
25
27
  return /*#__PURE__*/_react["default"].createElement("div", {
28
+ className: "inputNumberDiv",
29
+ id: name,
26
30
  key: name
27
31
  }, /*#__PURE__*/_react["default"].createElement("div", {
28
32
  style: {
@@ -55,6 +59,10 @@ var CustomNumberInput = function CustomNumberInput(_ref) {
55
59
  onChange: onChange,
56
60
  disabled: disabled,
57
61
  required: required
58
- })));
62
+ }), tooltip != "" ? /*#__PURE__*/_react["default"].createElement("label", {
63
+ style: {
64
+ fontSize: '11px'
65
+ }
66
+ }, tooltip) : null));
59
67
  };
60
68
  var _default = exports["default"] = CustomNumberInput;
@@ -17,6 +17,8 @@ var CustomSearch = function CustomSearch(_ref) {
17
17
  isLoading = _ref.isLoading,
18
18
  options = _ref.options;
19
19
  return /*#__PURE__*/_react["default"].createElement("div", {
20
+ className: "searchDiv",
21
+ id: name,
20
22
  key: name
21
23
  }, /*#__PURE__*/_react["default"].createElement("label", {
22
24
  htmlFor: "form-input-" + name,
@@ -19,8 +19,14 @@ var CustomTextArea = function CustomTextArea(_ref) {
19
19
  _ref$height = _ref.height,
20
20
  height = _ref$height === void 0 ? '90%' : _ref$height,
21
21
  _ref$style = _ref.style,
22
- style = _ref$style === void 0 ? null : _ref$style;
23
- return /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Form.TextArea, {
22
+ style = _ref$style === void 0 ? null : _ref$style,
23
+ _ref$tooltip = _ref.tooltip,
24
+ tooltip = _ref$tooltip === void 0 ? "" : _ref$tooltip;
25
+ return /*#__PURE__*/_react["default"].createElement("div", {
26
+ className: "textAreaDiv",
27
+ id: name,
28
+ key: name
29
+ }, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Form.TextArea, {
24
30
  inline: true,
25
31
  key: name,
26
32
  style: style ? style : {
@@ -45,6 +51,10 @@ var CustomTextArea = function CustomTextArea(_ref) {
45
51
  disabled: disabled,
46
52
  required: required,
47
53
  rows: 10
48
- });
54
+ }), tooltip != "" ? /*#__PURE__*/_react["default"].createElement("label", {
55
+ style: {
56
+ fontSize: '11px'
57
+ }
58
+ }, tooltip) : null);
49
59
  };
50
60
  var _default = exports["default"] = CustomTextArea;
@@ -22,6 +22,7 @@ var MultipleCheckbox = function MultipleCheckbox(_ref) {
22
22
  checkboxDivStyle = _ref$checkboxDivStyle === void 0 ? null : _ref$checkboxDivStyle;
23
23
  return /*#__PURE__*/_react["default"].createElement("div", {
24
24
  key: name,
25
+ id: name,
25
26
  className: "multipleCheckboxDiv",
26
27
  style: divStyle
27
28
  }, /*#__PURE__*/_react["default"].createElement("label", {
@@ -16,6 +16,7 @@ var MultipleDropdown = function MultipleDropdown(_ref) {
16
16
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
17
17
  options = _ref.options;
18
18
  return /*#__PURE__*/_react["default"].createElement("div", {
19
+ className: "multipleDropdownDiv",
19
20
  id: name,
20
21
  key: name
21
22
  }, /*#__PURE__*/_react["default"].createElement("label", {
@@ -22,6 +22,7 @@ var YearDatePicker = function YearDatePicker(_ref) {
22
22
  _ref$currentMaxYear = _ref.currentMaxYear,
23
23
  currentMaxYear = _ref$currentMaxYear === void 0 ? false : _ref$currentMaxYear;
24
24
  return /*#__PURE__*/_react["default"].createElement("div", {
25
+ className: "yearDateDiv",
25
26
  key: name,
26
27
  id: 'form-dateYearDiv-' + name,
27
28
  style: style ? style : {
@@ -70,6 +71,9 @@ var YearDatePicker = function YearDatePicker(_ref) {
70
71
  readOnly: true,
71
72
  onClick: openCalendar // Ensures the calendar opens when the input is clicked
72
73
  }));
74
+ },
75
+ inputProps: {
76
+ placeholder: "Select year"
73
77
  }
74
78
  })));
75
79
  };
@@ -0,0 +1,18 @@
1
+ .form-columns {
2
+ display: flex;
3
+ flex-direction: row;
4
+ gap: 2rem;
5
+ align-items: flex-start;
6
+ flex-wrap: wrap;
7
+ }
8
+
9
+ .form-column {
10
+ width: fit-content;
11
+ min-width: 200px;
12
+ }
13
+
14
+ @media (max-width: 768px) {
15
+ .form-columns {
16
+ flex-direction: column;
17
+ }
18
+ }
package/build/index.js CHANGED
@@ -20,6 +20,7 @@ var _MultipleCheckbox = _interopRequireDefault(require("./FormFields/MultipleChe
20
20
  var _MultipleDropdown = _interopRequireDefault(require("./FormFields/MultipleDropdown"));
21
21
  var _MultipleRadioButton = _interopRequireDefault(require("./FormFields/MultipleRadioButton"));
22
22
  var _YearDatePicker = _interopRequireDefault(require("./FormFields/YearDatePicker"));
23
+ require("./index.css");
23
24
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
24
25
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
25
26
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
@@ -89,7 +90,8 @@ var GenericForm = exports["default"] = /*#__PURE__*/function (_React$Component)
89
90
  options: field.options,
90
91
  onChange: _this.props.handleChange,
91
92
  disabled: field.disabled,
92
- upward: field.openUpward
93
+ upward: field.openUpward,
94
+ placeholder: field.placeholder || 'Select option'
93
95
  });
94
96
  var findList = list.find(function (l) {
95
97
  return l.name === field.name;
@@ -132,15 +134,18 @@ var GenericForm = exports["default"] = /*#__PURE__*/function (_React$Component)
132
134
  formStyle = _this$props.formStyle,
133
135
  _this$props$haveSaveB = _this$props.haveSaveButton,
134
136
  haveSaveButton = _this$props$haveSaveB === void 0 ? true : _this$props$haveSaveB,
135
- handleSubmit = _this$props.handleSubmit;
137
+ handleSubmit = _this$props.handleSubmit,
138
+ _this$props$splitForm = _this$props.splitForm,
139
+ splitForm = _this$props$splitForm === void 0 ? false : _this$props$splitForm,
140
+ splitField = _this$props.splitField,
141
+ splitGroup = _this$props.splitGroup;
136
142
  var sortedFields = _this.state.sortedFields;
143
+
144
+ // Group fields by their group name or 'ungrouped'
137
145
  var groupedFields = {};
138
- // Grouping
139
146
  sortedFields.forEach(function (field) {
140
147
  var group = field.group || 'ungrouped';
141
- if (!groupedFields[group]) {
142
- groupedFields[group] = [];
143
- }
148
+ if (!groupedFields[group]) groupedFields[group] = [];
144
149
  groupedFields[group].push(field);
145
150
  });
146
151
  divStyle = divStyle || {
@@ -149,6 +154,116 @@ var GenericForm = exports["default"] = /*#__PURE__*/function (_React$Component)
149
154
  formStyle = formStyle || {
150
155
  margin: 'auto'
151
156
  };
157
+
158
+ // Helper: split array of fields by splitField name
159
+ var splitByField = function splitByField(fields) {
160
+ var index = fields.findIndex(function (f) {
161
+ return f.name === splitField;
162
+ });
163
+ if (index === -1) {
164
+ return {
165
+ left: fields,
166
+ right: []
167
+ }; // No splitField found, all on left
168
+ }
169
+ return {
170
+ left: fields.slice(0, index + 1),
171
+ right: fields.slice(index + 1)
172
+ };
173
+ };
174
+
175
+ // Helper: render list of fields filtering hidden ones
176
+ var renderFields = function renderFields(fields) {
177
+ return fields.map(function (field) {
178
+ if (!field.hide) {
179
+ return _this.renderField(field);
180
+ }
181
+ return null;
182
+ });
183
+ };
184
+
185
+ // If splitting is requested and splitField is provided
186
+ if (splitForm && splitField) {
187
+ if (splitGroup) {
188
+ // Split at the group level
189
+ var groups = Object.keys(groupedFields).sort();
190
+
191
+ // Find which group contains the splitField
192
+ var splitGroupIndex = groups.findIndex(function (group) {
193
+ return groupedFields[group].some(function (f) {
194
+ return f.name === splitField;
195
+ });
196
+ });
197
+ if (splitGroupIndex === -1) {
198
+ // splitField not found, render normal
199
+ return /*#__PURE__*/_react["default"].createElement("div", {
200
+ style: divStyle
201
+ }, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Form, {
202
+ style: formStyle,
203
+ onSubmit: handleSubmit
204
+ }, groups.map(function (group) {
205
+ return /*#__PURE__*/_react["default"].createElement("div", {
206
+ key: group
207
+ }, group !== 'ungrouped' && /*#__PURE__*/_react["default"].createElement("h2", null, group), renderFields(groupedFields[group]));
208
+ })));
209
+ }
210
+
211
+ // Groups for left and right columns
212
+ var leftGroups = groups.slice(0, splitGroupIndex + 1);
213
+ var rightGroups = groups.slice(splitGroupIndex + 1);
214
+ return /*#__PURE__*/_react["default"].createElement("div", {
215
+ style: divStyle
216
+ }, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Form, {
217
+ style: formStyle,
218
+ onSubmit: handleSubmit
219
+ }, /*#__PURE__*/_react["default"].createElement("div", {
220
+ className: "form-columns"
221
+ }, /*#__PURE__*/_react["default"].createElement("div", {
222
+ className: "form-column"
223
+ }, leftGroups.map(function (group) {
224
+ return /*#__PURE__*/_react["default"].createElement("div", {
225
+ key: group
226
+ }, group !== 'ungrouped' && /*#__PURE__*/_react["default"].createElement("h2", null, group), renderFields(groupedFields[group]));
227
+ })), /*#__PURE__*/_react["default"].createElement("div", {
228
+ className: "form-column"
229
+ }, rightGroups.map(function (group) {
230
+ return /*#__PURE__*/_react["default"].createElement("div", {
231
+ key: group
232
+ }, group !== 'ungrouped' && /*#__PURE__*/_react["default"].createElement("h2", null, group), renderFields(groupedFields[group]));
233
+ })))));
234
+ }
235
+
236
+ // Split inside each group by splitField
237
+ return /*#__PURE__*/_react["default"].createElement("div", {
238
+ style: divStyle
239
+ }, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Form, {
240
+ style: formStyle,
241
+ onSubmit: handleSubmit
242
+ }, /*#__PURE__*/_react["default"].createElement("div", {
243
+ className: "form-columns"
244
+ }, /*#__PURE__*/_react["default"].createElement("div", {
245
+ className: "form-column"
246
+ }, Object.keys(groupedFields).map(function (group) {
247
+ var fields = groupedFields[group];
248
+ var _splitByField = splitByField(fields),
249
+ left = _splitByField.left;
250
+ return /*#__PURE__*/_react["default"].createElement("div", {
251
+ key: group
252
+ }, group !== 'ungrouped' && /*#__PURE__*/_react["default"].createElement("h2", null, group), renderFields(left));
253
+ })), /*#__PURE__*/_react["default"].createElement("div", {
254
+ className: "form-column"
255
+ }, Object.keys(groupedFields).map(function (group) {
256
+ var fields = groupedFields[group];
257
+ var _splitByField2 = splitByField(fields),
258
+ right = _splitByField2.right;
259
+ if (right.length === 0) return null;
260
+ return /*#__PURE__*/_react["default"].createElement("div", {
261
+ key: group
262
+ }, group !== 'ungrouped' && /*#__PURE__*/_react["default"].createElement("h2", null, group), renderFields(right));
263
+ })))));
264
+ }
265
+
266
+ // Default: no split
152
267
  return /*#__PURE__*/_react["default"].createElement("div", {
153
268
  style: divStyle
154
269
  }, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Form, {
@@ -157,12 +272,7 @@ var GenericForm = exports["default"] = /*#__PURE__*/function (_React$Component)
157
272
  }, Object.keys(groupedFields).map(function (group) {
158
273
  return /*#__PURE__*/_react["default"].createElement("div", {
159
274
  key: group
160
- }, group !== 'ungrouped' && /*#__PURE__*/_react["default"].createElement("h2", null, group), groupedFields[group].map(function (field, index) {
161
- var showField = !field.hide;
162
- if (showField) {
163
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, _this.renderField(field));
164
- }
165
- }));
275
+ }, group !== 'ungrouped' && /*#__PURE__*/_react["default"].createElement("h2", null, group), renderFields(groupedFields[group]));
166
276
  })));
167
277
  });
168
278
  _defineProperty(_this, "renderField", function (field) {
@@ -209,7 +319,8 @@ var GenericForm = exports["default"] = /*#__PURE__*/function (_React$Component)
209
319
  CustomNumberInput: {
210
320
  onChange: handleChange,
211
321
  showHelp: field.showHelp,
212
- helpText: field.helpText
322
+ helpText: field.helpText,
323
+ tooltip: field.tooltip
213
324
  },
214
325
  CustomDatePicker: {
215
326
  onChange: onChangeTime,
@@ -236,7 +347,8 @@ var GenericForm = exports["default"] = /*#__PURE__*/function (_React$Component)
236
347
  },
237
348
  CustomTextArea: {
238
349
  onChange: handleChange,
239
- height: field.height
350
+ height: field.height,
351
+ tooltip: field.tooltip
240
352
  },
241
353
  CustomCheckbox: {
242
354
  onChange: handleCheckboxChange,
@@ -311,6 +423,7 @@ var GenericForm = exports["default"] = /*#__PURE__*/function (_React$Component)
311
423
  _this2.reRenderDropdown(element, true);
312
424
  }
313
425
  });
426
+ this.sortFields(fields);
314
427
  }
315
428
  }
316
429
  }, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@insticc/genericform",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "a generic form with various types of fields",
5
5
  "main": "build/index.js",
6
6
  "scripts": {