@insticc/genericform 1.0.3 → 1.0.5

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 : {
@@ -15,6 +15,7 @@ var CustomDropdown = function CustomDropdown(_ref) {
15
15
  //TODO: HANDLE THIS FIELD TYPE
16
16
  _react["default"].createElement("div", {
17
17
  key: field.name,
18
+ id: field.name,
18
19
  className: "dropdownDiv",
19
20
  style: field.style ? field.style : {
20
21
  display: 'flex',
@@ -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'
@@ -25,7 +25,8 @@ var CustomNumberInput = function CustomNumberInput(_ref) {
25
25
  _ref$tooltip = _ref.tooltip,
26
26
  tooltip = _ref$tooltip === void 0 ? "" : _ref$tooltip;
27
27
  return /*#__PURE__*/_react["default"].createElement("div", {
28
- className: "inputDiv",
28
+ className: "inputNumberDiv",
29
+ id: name,
29
30
  key: name
30
31
  }, /*#__PURE__*/_react["default"].createElement("div", {
31
32
  style: {
@@ -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,
@@ -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) {
@@ -313,6 +423,7 @@ var GenericForm = exports["default"] = /*#__PURE__*/function (_React$Component)
313
423
  _this2.reRenderDropdown(element, true);
314
424
  }
315
425
  });
426
+ this.sortFields(fields);
316
427
  }
317
428
  }
318
429
  }, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@insticc/genericform",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "a generic form with various types of fields",
5
5
  "main": "build/index.js",
6
6
  "scripts": {