@luomus/laji-form 15.1.56 → 15.1.57

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.
@@ -91,12 +91,12 @@ function SearchableDrowndown(props) {
91
91
  : "", [enumOptions]);
92
92
  const [filterTerm, setFilterTerm] = react_1.useState(undefined);
93
93
  const [isOpen, show, hide] = utils_1.useBooleanSetter(false);
94
- const displayedEnums = react_1.useMemo(() => {
94
+ const filteredEnums = react_1.useMemo(() => {
95
95
  return filterTerm !== undefined && filterTerm !== ""
96
96
  ? enumOptions.filter(({ label }) => label.toLowerCase().match(filterTerm.toLowerCase()))
97
97
  : enumOptions;
98
98
  }, [filterTerm, enumOptions]);
99
- const [activeIdx, activeIdxUp, activeIdxDown, setActiveIdx] = useRangeIncrementor((displayedEnums || []).length, getDefaultActiveIdx(displayedEnums, value));
99
+ const [activeIdx, activeIdxUp, activeIdxDown, setActiveIdx] = useRangeIncrementor((filteredEnums || []).length, getDefaultActiveIdx(filteredEnums, value));
100
100
  const inputValue = filterTerm !== null && filterTerm !== void 0 ? filterTerm : getLabelFromValue(value);
101
101
  const showAndSelectText = react_1.useCallback(() => {
102
102
  var _a;
@@ -111,9 +111,9 @@ function SearchableDrowndown(props) {
111
111
  const onItemSelected = react_1.useCallback((item) => {
112
112
  onChange(item.value);
113
113
  setFilterTerm(undefined);
114
- setActiveIdx(displayedEnums.findIndex(enu => enu.value === item.value));
114
+ setActiveIdx(enumOptions.findIndex(enu => enu.value === item.value));
115
115
  hide();
116
- }, [displayedEnums, hide, onChange, setActiveIdx]);
116
+ }, [enumOptions, hide, onChange, setActiveIdx]);
117
117
  const onBlur = react_1.useCallback((e) => {
118
118
  // Fixes the issue that when user tries to click an enum item, `setOpen(false)`
119
119
  // hides the enum list, so the elem list item is hidden before the click, thus never
@@ -121,14 +121,14 @@ function SearchableDrowndown(props) {
121
121
  if (e.relatedTarget && utils_1.isDescendant(containerRef.current, e.relatedTarget)) {
122
122
  return;
123
123
  }
124
- if (activeIdx !== undefined && displayedEnums[activeIdx]) {
125
- onItemSelected(displayedEnums[activeIdx]);
124
+ if (activeIdx !== undefined && filteredEnums[activeIdx]) {
125
+ onItemSelected(filteredEnums[activeIdx]);
126
126
  }
127
127
  else {
128
128
  setFilterTerm(undefined);
129
129
  }
130
130
  hide();
131
- }, [activeIdx, displayedEnums, hide, onItemSelected]);
131
+ }, [activeIdx, filteredEnums, hide, onItemSelected]);
132
132
  const onKeyDown = react_1.useCallback((e) => {
133
133
  switch (e.key) {
134
134
  case "ArrowDown":
@@ -150,22 +150,22 @@ function SearchableDrowndown(props) {
150
150
  e.preventDefault();
151
151
  break;
152
152
  case "Enter":
153
- if (activeIdx !== undefined && displayedEnums) {
154
- onItemSelected(displayedEnums[activeIdx]);
153
+ if (activeIdx !== undefined && filteredEnums) {
154
+ onItemSelected(filteredEnums[activeIdx]);
155
155
  }
156
156
  e.preventDefault();
157
157
  break;
158
158
  case "Escape":
159
159
  setFilterTerm(undefined);
160
- setActiveIdx(getDefaultActiveIdx(displayedEnums, value));
160
+ setActiveIdx(getDefaultActiveIdx(filteredEnums, value));
161
161
  e.preventDefault();
162
162
  break;
163
163
  }
164
- }, [activeIdx, activeIdxDown, activeIdxUp, displayedEnums, isOpen, onItemSelected, setActiveIdx, showAndSelectText, value]);
164
+ }, [activeIdx, activeIdxDown, activeIdxUp, filteredEnums, isOpen, onItemSelected, setActiveIdx, showAndSelectText, value]);
165
165
  return (React.createElement("div", { onBlur: onBlur, onKeyDown: onKeyDown, ref: containerRef, style: { position: "relative" }, className: "laji-form-dropdown-container" },
166
166
  React.createElement(FormControl, { disabled: disabled || readonly, id: id, onClick: showAndSelectText, onFocus: showAndSelectText, value: inputValue, onChange: onInputChange, autoComplete: "off", ref: inputRef }),
167
167
  React.createElement(Caret, null),
168
- React.createElement("div", { className: `laji-form-dropdown laji-form-dropdown-${isOpen ? "open" : "closed"}`, style: { position: "absolute" }, tabIndex: -1, ref: dropdownRef }, displayedEnums.map((oneOf, idx) => {
168
+ React.createElement("div", { className: `laji-form-dropdown laji-form-dropdown-${isOpen ? "open" : "closed"}`, style: { position: "absolute" }, tabIndex: -1, ref: dropdownRef }, filteredEnums.map((oneOf, idx) => {
169
169
  var _a;
170
170
  return (React.createElement(ListItem, { key: (_a = oneOf.value) !== null && _a !== void 0 ? _a : "", onSelected: onItemSelected, active: idx === activeIdx }, oneOf));
171
171
  }))));
@@ -189,7 +189,7 @@ function SearchableMultiDrowndown(props) {
189
189
  React.useEffect(() => {
190
190
  setFilterTerm(inputValue);
191
191
  }, [inputValue]);
192
- const displayedEnums = React.useMemo(() => {
192
+ const filteredEnums = React.useMemo(() => {
193
193
  if (!enumOptions) {
194
194
  return [];
195
195
  }
@@ -201,7 +201,7 @@ function SearchableMultiDrowndown(props) {
201
201
  || label.toLowerCase().match(filterTerm.toLowerCase()))
202
202
  : notAlreadySelected;
203
203
  }, [filterTerm, enumOptions, value]);
204
- const [activeIdx, activeIdxUp, activeIdxDown, setActiveIdx] = useRangeIncrementor((displayedEnums || []).length, undefined);
204
+ const [activeIdx, activeIdxUp, activeIdxDown, setActiveIdx] = useRangeIncrementor((filteredEnums || []).length, undefined);
205
205
  const onItemSelected = react_1.useCallback((item) => {
206
206
  var _a;
207
207
  onChange([...(value || []), item.value]);
@@ -263,13 +263,13 @@ function SearchableMultiDrowndown(props) {
263
263
  }
264
264
  setBlurred();
265
265
  hide();
266
- if (activeIdx !== undefined && displayedEnums[activeIdx]) {
267
- onItemSelectedByBlur(displayedEnums[activeIdx]);
266
+ if (activeIdx !== undefined && filteredEnums[activeIdx]) {
267
+ onItemSelectedByBlur(filteredEnums[activeIdx]);
268
268
  }
269
269
  else {
270
270
  setUserTypedInputValue("");
271
271
  }
272
- }, [activeIdx, displayedEnums, hide, onItemSelectedByBlur, setBlurred]);
272
+ }, [activeIdx, filteredEnums, hide, onItemSelectedByBlur, setBlurred]);
273
273
  const onKeyDown = react_1.useCallback((e) => {
274
274
  switch (e.key) {
275
275
  case "ArrowDown":
@@ -281,7 +281,7 @@ function SearchableMultiDrowndown(props) {
281
281
  e.preventDefault();
282
282
  break;
283
283
  case "Enter":
284
- activeIdx !== undefined && displayedEnums && onItemSelected(displayedEnums[activeIdx]);
284
+ activeIdx !== undefined && filteredEnums && onItemSelected(filteredEnums[activeIdx]);
285
285
  e.preventDefault();
286
286
  break;
287
287
  case "Escape":
@@ -297,7 +297,7 @@ function SearchableMultiDrowndown(props) {
297
297
  }
298
298
  break;
299
299
  }
300
- }, [activeIdx, activeIdxDown, activeIdxUp, displayedEnums, inputValue, onChange, onItemSelected, setActiveIdx, value]);
300
+ }, [activeIdx, activeIdxDown, activeIdxUp, filteredEnums, inputValue, onChange, onItemSelected, setActiveIdx, value]);
301
301
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
302
302
  const onDelete = react_1.useCallback((enu) => {
303
303
  const filtered = value.filter(v => v !== enu.value);
@@ -320,7 +320,7 @@ function SearchableMultiDrowndown(props) {
320
320
  React.createElement("input", { disabled: disabled || readonly, id: id, onFocus: onFocus, value: inputValue, onChange: onInputChange, autoComplete: "off", ref: inputRef }),
321
321
  loading && React.createElement(react_spinner_1.default, null)),
322
322
  React.createElement(Caret, null),
323
- React.createElement("div", { className: `laji-form-dropdown laji-form-dropdown-${isOpen ? "open" : "closed"}`, style: { position: "absolute", zIndex: 99999 }, tabIndex: -1 }, displayedEnums.map((oneOf, idx) => {
323
+ React.createElement("div", { className: `laji-form-dropdown laji-form-dropdown-${isOpen ? "open" : "closed"}`, style: { position: "absolute", zIndex: 99999 }, tabIndex: -1 }, filteredEnums.map((oneOf, idx) => {
324
324
  var _a;
325
325
  return (React.createElement(ListItem, { key: (_a = oneOf.value) !== null && _a !== void 0 ? _a : "", onSelected: onItemSelected, active: idx === activeIdx }, oneOf));
326
326
  }))));
@@ -340,6 +340,6 @@ function ListItem({ onSelected, active, children }) {
340
340
  }, [children, onSelected]);
341
341
  return (React.createElement("div", { onClick: onClick, className: utils_1.classNames("laji-form-dropdown-item", active && "active"), tabIndex: -1 }, children.label));
342
342
  }
343
- const getDefaultActiveIdx = (displayedEnums, value) => value !== undefined && value !== ""
344
- ? displayedEnums.findIndex(item => item.value === value)
343
+ const getDefaultActiveIdx = (filteredEnums, value) => value !== undefined && value !== ""
344
+ ? filteredEnums.findIndex(item => item.value === value)
345
345
  : 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luomus/laji-form",
3
- "version": "15.1.56",
3
+ "version": "15.1.57",
4
4
  "description": "React module capable of building dynamic forms from Laji form json schemas",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",