@luomus/laji-form 15.1.24 → 15.1.26
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/dist/laji-form.js +1 -1
- package/dist/styles.css +96 -5
- package/lib/ApiClient.d.ts +2 -1
- package/lib/components/BaseComponent.d.ts +1 -1
- package/lib/components/LajiForm.d.ts +3 -13
- package/lib/components/VirtualSchemaField.d.ts +10 -10
- package/lib/components/fields/AsArrayField.d.ts +131 -7
- package/lib/components/fields/ExtraLabelRowField.d.ts +1 -1
- package/lib/components/fields/ImageArrayField.d.ts +12 -12
- package/lib/components/fields/InitiallyHiddenField.d.ts +1 -1
- package/lib/components/fields/LocationChooserField.d.ts +1 -1
- package/lib/components/fields/MultiTagArrayField.d.ts +2 -2
- package/lib/components/fields/MultiTagArrayField.js +2 -1
- package/lib/components/fields/NamedPlaceChooserField.d.ts +88 -2
- package/lib/components/fields/NamedPlaceChooserField.js +1 -1
- package/lib/components/fields/NamedPlaceSaverField.d.ts +44 -1
- package/lib/components/fields/PdfArrayField.d.ts +2 -2
- package/lib/components/fields/ScopeField.d.ts +1 -1
- package/lib/components/fields/SingleActiveArrayField.js +1 -1
- package/lib/components/fields/SortArrayField.d.ts +93 -6
- package/lib/components/fields/SortArrayField.js +1 -1
- package/lib/components/fields/SplitField.d.ts +1 -1
- package/lib/components/fields/SplitField.js +3 -2
- package/lib/components/fields/StringToArrayField.d.ts +44 -1
- package/lib/components/fields/TagArrayField.js +1 -1
- package/lib/components/fields/ToggleAdditionalArrayFieldsField.d.ts +1 -1
- package/lib/components/fields/UnitListShorthandArrayField.d.ts +44 -1
- package/lib/components/widgets/AutosuggestWidget.js +1 -1
- package/lib/components/widgets/CheckboxWidget.js +7 -6
- package/lib/components/widgets/SelectWidget.d.ts +13 -52
- package/lib/components/widgets/SelectWidget.js +234 -145
- package/lib/services/focus-service.js +3 -2
- package/lib/services/settings-service.d.ts +2 -2
- package/lib/services/submit-hook-service.d.ts +1 -1
- package/lib/themes/theme.d.ts +4 -7
- package/lib/types.d.ts +59 -0
- package/lib/types.js +11 -0
- package/lib/utils.d.ts +13 -7
- package/lib/utils.js +19 -7
- package/package.json +3 -3
- package/test-export/test-utils.js +4 -4
package/lib/utils.js
CHANGED
|
@@ -12,7 +12,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.bsSizeToPixels = exports.canAdd = exports.stringifyKeyCombo = exports.decapitalizeFirstLetter = exports.capitalizeFirstLetter = exports.getKeyHandlerTargetId = exports.isDescendant = exports.getBootstrapCols = exports.getNestedUiFieldsList = exports.updateTailUiSchema = exports.getNestedTailUiSchema = exports.keyboardClick = exports.formDataEquals = exports.formDataIsEmpty = exports.filterItemIdsDeeply = exports.filterItemId = exports.filterLajiFormId = exports.syncScroll = exports._syncScroll = exports.shouldSyncScroll = exports.focusAndScroll = exports.focusById = exports.getSchemaElementById = exports.findNearestParentSchemaElemId = exports.focusNextInput = exports.getNextInput = exports.getNextInputInInputs = exports.ReactUtils = exports.findNearestParentTabbableElem = exports.findNearestParentSchemaElem = exports.canFocusNextInput = exports.isTabbableInput = exports.getTabbableFields = exports.isSelect = exports.isMultiSelect = exports.getReactComponentName = exports.parseJSONPointer = exports.isEmptyString = exports.isNullOrUndefined = exports.getInnerUiSchema = exports.getUiOptions = exports.immutableDelete = exports.getUpdateObjectFromJSONPointer = exports.getUpdateObjectFromJSONPath = exports.propertyHasData = exports.hasData = exports.getDefaultFormState = exports.isDefaultData = exports.isHidden = exports.isObject = void 0;
|
|
15
|
-
exports.translate = exports.classNames = exports.getTitle = exports.toJSONPointer = exports.getReversedFormDataIndex = exports.getFormDataIndex = exports.getIdxWithoutOffset = exports.getIdxWithOffset = exports.constructTranslations = exports.filteredErrors = exports.highlightElem = exports.findPointerForLajiFormId = exports.removeLajiFormIds = exports.getAllLajiFormIdsDeeply = exports.addLajiFormIds = exports.getFieldUUID = exports.getUUID = exports.assignUUID = exports.updateFormDataWithJSONPointer = exports.uiSchemaJSONPointer = exports.schemaJSONPointer = exports.idSchemaIdToJSONPointer = exports.JSONPointerToId = exports.checkJSONPointer = exports.parseUiSchemaFromFormDataPointer = exports.parseSchemaFromFormDataPointer = exports.triggerParentComponent = exports.bringRemoteFormData = exports.checkArrayRules = exports.checkRules = exports.formatErrorMessage = exports.formatValue = exports.dictionarify = exports.injectButtons = exports.updateSafelyWithJSONPointer = exports.updateSafelyWithJSONPath = exports.filter = exports.scrollIntoViewIfNeeded = exports.getScrollPositionForScrollIntoViewIfNeeded = exports.getWindowScrolled = exports.applyFunction = exports.pixelsToBsSize = void 0;
|
|
15
|
+
exports.useBooleanSetter = exports.translate = exports.classNames = exports.getTitle = exports.toJSONPointer = exports.getReversedFormDataIndex = exports.getFormDataIndex = exports.getIdxWithoutOffset = exports.getIdxWithOffset = exports.constructTranslations = exports.filteredErrors = exports.highlightElem = exports.findPointerForLajiFormId = exports.removeLajiFormIds = exports.getAllLajiFormIdsDeeply = exports.addLajiFormIds = exports.getFieldUUID = exports.getUUID = exports.assignUUID = exports.updateFormDataWithJSONPointer = exports.uiSchemaJSONPointer = exports.schemaJSONPointer = exports.idSchemaIdToJSONPointer = exports.JSONPointerToId = exports.checkJSONPointer = exports.parseUiSchemaFromFormDataPointer = exports.parseSchemaFromFormDataPointer = exports.triggerParentComponent = exports.bringRemoteFormData = exports.checkArrayRules = exports.checkRules = exports.formatErrorMessage = exports.formatValue = exports.dictionarify = exports.injectButtons = exports.updateSafelyWithJSONPointer = exports.updateSafelyWithJSONPath = exports.filter = exports.scrollIntoViewIfNeeded = exports.getScrollPositionForScrollIntoViewIfNeeded = exports.getWindowScrolled = exports.applyFunction = exports.pixelsToBsSize = void 0;
|
|
16
16
|
const React = require("react");
|
|
17
17
|
const react_dom_1 = require("react-dom");
|
|
18
18
|
const utils_1 = require("@rjsf/utils");
|
|
@@ -138,12 +138,14 @@ function getUiOptions(container) {
|
|
|
138
138
|
return {};
|
|
139
139
|
}
|
|
140
140
|
exports.getUiOptions = getUiOptions;
|
|
141
|
-
function getInnerUiSchema(parentUiSchema) {
|
|
142
|
-
let
|
|
143
|
-
if (uiSchema
|
|
141
|
+
function getInnerUiSchema(parentUiSchema = {}) {
|
|
142
|
+
let { uiSchema } = parentUiSchema, restOfUiSchema = __rest(parentUiSchema, ["uiSchema"]);
|
|
143
|
+
if (uiSchema
|
|
144
|
+
&& (Context_1.default("VIRTUAL_SCHEMA_NAMES")[uiSchema["ui:field"]]
|
|
145
|
+
|| Context_1.default("SCHEMA_FIELD_WRAPPERS")[uiSchema["ui:field"]]) && parentUiSchema["ui:buttons"]) {
|
|
144
146
|
uiSchema = Object.assign(Object.assign({}, uiSchema), { "ui:buttons": [
|
|
145
147
|
...(uiSchema["ui:buttons"] || []),
|
|
146
|
-
...parentUiSchema["ui:buttons"]
|
|
148
|
+
...(parentUiSchema["ui:buttons"] || [])
|
|
147
149
|
] });
|
|
148
150
|
}
|
|
149
151
|
return Object.assign(Object.assign(Object.assign({}, restOfUiSchema), { "ui:field": undefined, "ui:settings": undefined, "ui:options": uiSchema ? undefined : restOfUiSchema["ui:options"], "ui:buttons": uiSchema ? undefined : parentUiSchema["ui:buttons"] }), (uiSchema || {}));
|
|
@@ -436,10 +438,9 @@ const formDataEquals = (f1, f2, context, id) => {
|
|
|
436
438
|
return _formDataEquals(context)(f1, f2, id);
|
|
437
439
|
};
|
|
438
440
|
exports.formDataEquals = formDataEquals;
|
|
439
|
-
const _keyboardClick = ({ contextId }) => (fn) => {
|
|
441
|
+
const _keyboardClick = ({ contextId }) => (fn, keys = [" ", "Enter"]) => {
|
|
440
442
|
return (e) => {
|
|
441
443
|
var _a, _b;
|
|
442
|
-
let keys = [" ", "Enter"];
|
|
443
444
|
if ((_b = (_a = e.target) === null || _a === void 0 ? void 0 : _a.matches) === null || _b === void 0 ? void 0 : _b.call(_a, tabbableSelectorsQuery)) {
|
|
444
445
|
const { shortcuts } = Context_1.default(contextId);
|
|
445
446
|
keys = keys.filter(k => !(shortcuts === null || shortcuts === void 0 ? void 0 : shortcuts[k]));
|
|
@@ -1183,3 +1184,14 @@ function translate(translations, key, params) {
|
|
|
1183
1184
|
return Object.keys(params || {}).reduce((translated, param) => translated.replace(new RegExp(`%{${param}}`, "g"), (params === null || params === void 0 ? void 0 : params[param]) || ""), translations[key]);
|
|
1184
1185
|
}
|
|
1185
1186
|
exports.translate = translate;
|
|
1187
|
+
/**
|
|
1188
|
+
* @param value the default value of the setter
|
|
1189
|
+
* @returns [stateValue, setTrue, setFalse]
|
|
1190
|
+
*/
|
|
1191
|
+
function useBooleanSetter(value) {
|
|
1192
|
+
const [open, setOpen] = React.useState(value);
|
|
1193
|
+
const setTrue = React.useCallback(() => setOpen(true), []);
|
|
1194
|
+
const setFalse = React.useCallback(() => setOpen(false), []);
|
|
1195
|
+
return [open, setTrue, setFalse];
|
|
1196
|
+
}
|
|
1197
|
+
exports.useBooleanSetter = useBooleanSetter;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luomus/laji-form",
|
|
3
|
-
"version": "15.1.
|
|
3
|
+
"version": "15.1.26",
|
|
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",
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
"luomus"
|
|
36
36
|
],
|
|
37
37
|
"author": "Olli Raitio <olli.raitio@helsinki.fi>",
|
|
38
|
-
"repository": "https://github.com/luomus/laji-form.git",
|
|
38
|
+
"repository": "git+https://github.com/luomus/laji-form.git",
|
|
39
39
|
"license": "MIT",
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@luomus/laji-map": "^5.
|
|
41
|
+
"@luomus/laji-map": "^5.1.2",
|
|
42
42
|
"@luomus/laji-validate": "^0.0.121",
|
|
43
43
|
"@rjsf/core": "~5.1.0",
|
|
44
44
|
"@rjsf/utils": "~5.1.0",
|
|
@@ -39,8 +39,8 @@ function getEnumWidgetForContainer($container) {
|
|
|
39
39
|
return {
|
|
40
40
|
$container,
|
|
41
41
|
openEnums: () => $container.click(),
|
|
42
|
-
$enumContainer: $container.locator(".
|
|
43
|
-
$$enums: $container.locator(".
|
|
42
|
+
$enumContainer: $container.locator(".lajii-form-dropdown"),
|
|
43
|
+
$$enums: $container.locator(".laji-form-dropdown-item"),
|
|
44
44
|
$input: $container.locator("input")
|
|
45
45
|
};
|
|
46
46
|
}
|
|
@@ -140,7 +140,7 @@ class Form {
|
|
|
140
140
|
const $namedPlaceChooserModal = this.page.locator(".named-place-chooser-modal");
|
|
141
141
|
const $mapPopupContainer = this.page.locator(".named-place-popup");
|
|
142
142
|
return {
|
|
143
|
-
select: getEnumWidgetForContainer(
|
|
143
|
+
select: getEnumWidgetForContainer($namedPlaceChooserModal.locator(".laji-form-dropdown-container")),
|
|
144
144
|
mapPopup: {
|
|
145
145
|
$container: $mapPopupContainer,
|
|
146
146
|
$useBtn: $mapPopupContainer.locator(".btn-default")
|
|
@@ -210,7 +210,7 @@ class Form {
|
|
|
210
210
|
return this.$locate(str).locator("textarea");
|
|
211
211
|
}
|
|
212
212
|
$getEnumWidget(str) {
|
|
213
|
-
const $container = this.$locate(str).locator(".
|
|
213
|
+
const $container = this.$locate(str).locator(".laji-form-dropdown-container");
|
|
214
214
|
return getEnumWidgetForContainer($container);
|
|
215
215
|
}
|
|
216
216
|
getDateWidget(str) {
|