@luomus/laji-form 14.3.8 → 15.1.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 +4 -0
- package/cypress/fixtures/example.json +5 -0
- closes suggestion list (failed).png +0 -0
- is marked as suggested (failed).png +0 -0
- package/dist/laji-form.js +1 -1
- package/lib/components/LajiForm.js +0 -1
- package/lib/components/fields/ImageArrayField.js +2 -4
- package/lib/components/fields/NamedPlaceSaverField.js +1 -1
- package/lib/components/fields/SectionArrayField.js +5 -1
- package/lib/components/fields/SingleActiveArrayField.js +1 -1
- package/lib/components/fields/UnitShorthandField.js +2 -2
- package/lib/components/templates/ArrayFieldTemplate.js +3 -2
- package/lib/components/templates/FieldTemplate.js +2 -2
- package/lib/utils.d.ts +6 -2
- package/lib/utils.js +13 -13
- package/llol +10 -0
- package/llol.pdf +10 -0
- package/migrate.sh +33 -0
- package/package.json +14 -21
- package/playwright-report/index.html +62 -0
- package/playwright.config.ts +77 -0
- package/q +196 -0
- package/rename.sh +24 -0
- package/test-export/test-utils.d.ts +177 -150
- package/test-export/test-utils.js +214 -218
- package/trip-report.spec.ts +594 -0
- package/tsconfig.test.json +1 -1
- package/lib/components/fields/AsArrayField.d.ts +0 -292
- package/lib/components/fields/AsArrayField.js +0 -39
- package/test-export/array-spec.d.ts +0 -1
- package/test-export/array-spec.js +0 -204
- package/test-export/bird-point-count-spec.d.ts +0 -1
- package/test-export/bird-point-count-spec.js +0 -62
- package/test-export/collection-contest-form-spec.d.ts +0 -1
- package/test-export/collection-contest-form-spec.js +0 -38
- package/test-export/dataset-form-spec.d.ts +0 -1
- package/test-export/dataset-form-spec.js +0 -50
- package/test-export/date-time-widget-spec.d.ts +0 -1
- package/test-export/date-time-widget-spec.js +0 -188
- package/test-export/geocoder-spec.d.ts +0 -1
- package/test-export/geocoder-spec.js +0 -135
- package/test-export/image-array-spec.d.ts +0 -1
- package/test-export/image-array-spec.js +0 -94
- package/test-export/inject-field-spec.d.ts +0 -1
- package/test-export/inject-field-spec.js +0 -148
- package/test-export/internal-uuids-spec.d.ts +0 -1
- package/test-export/internal-uuids-spec.js +0 -157
- package/test-export/invasive-species-eradication-np-spec.d.ts +0 -1
- package/test-export/invasive-species-eradication-np-spec.js +0 -18
- package/test-export/invasive-species-eradication-spec.d.ts +0 -1
- package/test-export/invasive-species-eradication-spec.js +0 -25
- package/test-export/line-transect-spec.d.ts +0 -1
- package/test-export/line-transect-spec.js +0 -121
- package/test-export/mobile-form-spec.d.ts +0 -1
- package/test-export/mobile-form-spec.js +0 -84
- package/test-export/nafi-spec.d.ts +0 -1
- package/test-export/nafi-spec.js +0 -85
- package/test-export/select-widget-spec.d.ts +0 -1
- package/test-export/select-widget-spec.js +0 -68
- package/test-export/single-item-array-field-spec.d.ts +0 -1
- package/test-export/single-item-array-field-spec.js +0 -92
- package/test-export/syke-butterfly-spec.d.ts +0 -1
- package/test-export/syke-butterfly-spec.js +0 -163
- package/test-export/transaction-form-spec.d.ts +0 -1
- package/test-export/transaction-form-spec.js +0 -63
- package/test-export/trip-report-autosuggest-spec.d.ts +0 -1
- package/test-export/trip-report-autosuggest-spec.js +0 -272
- package/test-export/trip-report-spec.d.ts +0 -1
- package/test-export/trip-report-spec.js +0 -456
- package/test-export/unit-list-shorthand-array-field-spec.d.ts +0 -1
- package/test-export/unit-list-shorthand-array-field-spec.js +0 -71
- package/test-export/validation-spec.d.ts +0 -1
- package/test-export/validation-spec.js +0 -336
- package/test-export/water-bird-spec.d.ts +0 -1
- package/test-export/water-bird-spec.js +0 -30
- package/test-export/wbc-spec.d.ts +0 -1
- package/test-export/wbc-spec.js +0 -82
|
@@ -102,7 +102,6 @@ const fields = importLocalComponents("fields", [
|
|
|
102
102
|
"InputWithDefaultValueButtonField",
|
|
103
103
|
"MultiTagArrayField",
|
|
104
104
|
"PdfArrayField",
|
|
105
|
-
"AsArrayField",
|
|
106
105
|
{ "InputTransformerField": "ConditionalOnChangeField" },
|
|
107
106
|
{ "ConditionalField": "ConditionalUiSchemaField" },
|
|
108
107
|
{ "UnitRapidField": "UnitShorthandField" },
|
|
@@ -415,7 +415,7 @@ function MediaArrayField(ComposedComponent) {
|
|
|
415
415
|
? Promise.resolve(Object.assign(Object.assign({}, mediaMetadata), { capturerVerbatim: [mediaMetadata.capturerVerbatim] }))
|
|
416
416
|
: MACode
|
|
417
417
|
? this.apiClient.fetchCached(`/person/by-id/${MACode}`).then(({ fullName = MACode }) => (Object.assign(Object.assign({ capturerVerbatim: Array.isArray(fullName) ? fullName : [fullName] }, mediaMetadata), { intellectualOwner: fullName }))).catch(() => Promise.resolve(mediaMetadata))
|
|
418
|
-
: mediaMetadata;
|
|
418
|
+
: Promise.resolve(mediaMetadata);
|
|
419
419
|
};
|
|
420
420
|
this.getMaxFileSizeAsString = () => {
|
|
421
421
|
let maxSize = this.MAX_FILE_SIZE.toString().substring(0, this.MAX_FILE_SIZE.toString().length - 6);
|
|
@@ -505,8 +505,6 @@ function MediaArrayField(ComposedComponent) {
|
|
|
505
505
|
const { dragging } = this.state;
|
|
506
506
|
const { Row, Col } = this.context.theme;
|
|
507
507
|
const { DescriptionFieldTemplate } = this.props.registry.templates;
|
|
508
|
-
const mediaCount = (this.props.formData || []).length + (this.state.tmpMedias || []).length;
|
|
509
|
-
const showAdd = utils_1.isNullOrUndefined(this.props.schema.maxItems) || mediaCount < this.props.schema.maxItems;
|
|
510
508
|
return (React.createElement(Row, null,
|
|
511
509
|
React.createElement(Col, { xs: 12 },
|
|
512
510
|
React.createElement(TitleFieldTemplate, { title: title, schema: schema, uiSchema: uiSchema, id: idSchema.$id, registry: this.props.registry }),
|
|
@@ -514,7 +512,7 @@ function MediaArrayField(ComposedComponent) {
|
|
|
514
512
|
React.createElement("div", { className: `laji-form-medias ${this.CONTAINER_CLASS}` },
|
|
515
513
|
this.renderMedias(),
|
|
516
514
|
this.renderLoadingMedias(),
|
|
517
|
-
|
|
515
|
+
React.createElement(OverlayTrigger, { overlay: tooltip },
|
|
518
516
|
React.createElement(react_dropzone_1.default, { accept: this.ACCEPT_FILE_TYPES, onDragEnter: this.onDragEnter, onDragLeave: this.onDragLeave, onDrop: this.onDrop, disabled: readonly || disabled, noKeyboard: true }, ({ getRootProps, getInputProps }) => {
|
|
519
517
|
const _a = getRootProps(), { onClick: _onClick } = _a, rootProps = __rest(_a, ["onClick"]);
|
|
520
518
|
const onClick = addModal ? this.defaultOnClick : _onClick;
|
|
@@ -146,7 +146,7 @@ class PlaceSaverDialog extends React.Component {
|
|
|
146
146
|
}
|
|
147
147
|
componentDidMount() {
|
|
148
148
|
this.mounted = true;
|
|
149
|
-
this.apiClient.fetchCached("/named-places", { includePublic: false, pageSize:
|
|
149
|
+
this.apiClient.fetchCached("/named-places", { includePublic: false, pageSize: 10000 }).then(response => {
|
|
150
150
|
if (!this.mounted)
|
|
151
151
|
return;
|
|
152
152
|
const state = {
|
|
@@ -200,8 +200,12 @@ let SectionArrayFieldTemplate = class SectionArrayFieldTemplate extends React.Co
|
|
|
200
200
|
};
|
|
201
201
|
this.onNewSectionKeyDown = (e) => {
|
|
202
202
|
if (e.key === "Enter") {
|
|
203
|
-
this.sectorIsValid(this.state.newSection)
|
|
203
|
+
if (!this.sectorIsValid(this.state.newSection)) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
this.addSection();
|
|
204
207
|
this.hideAddSection();
|
|
208
|
+
e.stopPropagation();
|
|
205
209
|
}
|
|
206
210
|
};
|
|
207
211
|
this.addSection = () => {
|
|
@@ -770,7 +770,7 @@ let TableArrayFieldTemplate = class TableArrayFieldTemplate extends React.Compon
|
|
|
770
770
|
if (utils_1.filteredErrors(errorSchema)[utils_1.getFormDataIndex(idx, uiSchema)])
|
|
771
771
|
className = className ? `${className} bg-danger` : "bg-danger";
|
|
772
772
|
return [
|
|
773
|
-
React.createElement("tr", { key: utils_1.getUUID(this.props.formData[item.index]) || item.key, onClick: this.getOnChangeActive(idx), className: className, tabIndex: idx === activeIdx ? undefined : 0, id: idx !== activeIdx ? `_laji-form_${
|
|
773
|
+
React.createElement("tr", { key: utils_1.getUUID(this.props.formData[item.index]) || item.key, onClick: this.getOnChangeActive(idx), className: className, tabIndex: idx === activeIdx ? undefined : 0, id: idx !== activeIdx ? `_laji-form_${ArrayField_2.ArrayFieldPatched.prototype.getIdSchema(this.props, idx).$id}` : undefined, ref: setItemRef(idx), style: idx === activeIdx ? this.state.activeTrStyle : undefined, onMouseEnter: onMouseEnter(idx), onMouseLeave: onMouseLeave(idx), onKeyDown: this.onKeyDownActivate(idx) },
|
|
774
774
|
cols.length ? cols.map(col => React.createElement("td", { key: col }, utils_1.formatValue(Object.assign(Object.assign({}, that.props), { schema: schema.items.properties[col], uiSchema: (uiSchema.items || {})[col], formData: formData[idx][col] }), formatters[col], { formData: formData[idx] }))) : React.createElement("td", null),
|
|
775
775
|
(activeIdx !== undefined && items[activeIdx] && idx === activeIdx) ? (React.createElement("td", { key: utils_1.getUUID(formData[activeIdx]) || activeIdx, className: "single-active-array-table-content-col" },
|
|
776
776
|
React.createElement("div", { className: "laji-form-field-template-item keep-vertical", style: this.state.activeStyle, ref: this.setActiveRef },
|
|
@@ -96,14 +96,14 @@ let UnitShorthandField = class UnitShorthandField extends React.Component {
|
|
|
96
96
|
const uiSchemaWithoutHelp = utils_1.isEmptyString(help) ? uiSchema : utils_1.updateTailUiSchema(uiSchema, { [shorthandFieldName]: { "ui:belowHelp": { $set: undefined } } });
|
|
97
97
|
const id = (shorthandFieldName && this.props.idSchema[shorthandFieldName]) ?
|
|
98
98
|
this.props.idSchema[shorthandFieldName].$id :
|
|
99
|
-
`${this.props.idSchema.$id}
|
|
99
|
+
`${this.props.idSchema.$id}-shortHandField`;
|
|
100
100
|
let innerUiSchema = undefined;
|
|
101
101
|
if (this.state.showSchema) {
|
|
102
102
|
innerUiSchema = utils_1.getInnerUiSchema(Object.assign({}, uiSchemaWithoutHelp));
|
|
103
103
|
const innerOptions = utils_1.getUiOptions(innerUiSchema);
|
|
104
104
|
innerUiSchema = Object.assign(Object.assign({}, innerUiSchema), { "ui:options": Object.assign(Object.assign({}, innerOptions), { buttons: [...(innerOptions.buttons || []), toggleButton] }) });
|
|
105
105
|
}
|
|
106
|
-
return !this.state.showSchema ? (React.createElement("div", { className: "laji-form-field-template-item", id: `_laji-form_${
|
|
106
|
+
return !this.state.showSchema ? (React.createElement("div", { className: "laji-form-field-template-item", id: `_laji-form_${id}` },
|
|
107
107
|
React.createElement(CodeReader, { translations: this.props.formContext.translations, onChange: this.onCodeChange, value: this.props.formData[shorthandFieldName], formID: utils_1.getUiOptions(this.props.uiSchema).formID || formContext.formID || formContext.uiSchemaContext.formID, help: help, id: id, formContext: formContext, disabled: disabled, readonly: readonly, className: "laji-form-field-template-schema" }),
|
|
108
108
|
React.createElement("div", { className: "laji-form-field-template-buttons" }, ArrayFieldTemplate_1.getButton(toggleButton)))) : (React.createElement(SchemaField, Object.assign({}, this.props, { uiSchema: innerUiSchema })));
|
|
109
109
|
}
|
|
@@ -152,7 +152,7 @@ function handlesArrayKeys(ComposedComponent) {
|
|
|
152
152
|
const context = Context_1.default(this.props.formContext.contextId);
|
|
153
153
|
if (target === "last") {
|
|
154
154
|
context.idToFocus = `${this.props.idSchema.$id}_${this.props.formData.length - 1}`;
|
|
155
|
-
context.idToScroll = `_laji-form_${this.props.
|
|
155
|
+
context.idToScroll = `_laji-form_${this.props.idSchema.$id}_${this.props.formData.length - 2}`;
|
|
156
156
|
}
|
|
157
157
|
else {
|
|
158
158
|
console.warn(`custom event "focus" has only "last" implemented. Target value was: ${target}`);
|
|
@@ -277,8 +277,9 @@ class ArrayFieldTemplateWithoutKeyHandling extends React.Component {
|
|
|
277
277
|
const bottomButtons = getButtonsElem(getButtonsForPosition(props, _buttons, "bottom"), props);
|
|
278
278
|
const getRefFor = i => elem => { this.deleteButtonRefs[i] = elem; };
|
|
279
279
|
const items = props.items.map((item, i) => {
|
|
280
|
+
const index = utils_1.getFormDataIndex(i, props.uiSchema);
|
|
280
281
|
const getDeleteButton = () => (React.createElement("div", { className: "laji-form-field-template-buttons" },
|
|
281
|
-
React.createElement(components_1.DeleteButton, { id: `${props.idSchema.$id}_${
|
|
282
|
+
React.createElement(components_1.DeleteButton, { id: `${props.idSchema.$id}_${index}`, disabled: disabled || readonly, ref: getRefFor(i), onClick: item.onDropIndexClick(item.index), confirm: confirmDelete, corner: deleteCorner, tooltip: deleteHelp, translations: props.formContext.translations })));
|
|
282
283
|
if (!this.onFocuses[i]) {
|
|
283
284
|
this.onFocuses[i] = this.getOnFocus(i);
|
|
284
285
|
}
|
|
@@ -58,7 +58,7 @@ class _FieldTemplate extends React.Component {
|
|
|
58
58
|
this.props.formContext.services.DOMIds.release(this.props.id, this.receiveId);
|
|
59
59
|
}
|
|
60
60
|
render() {
|
|
61
|
-
const { id, classNames: _classNames, children, rawErrors, description, hidden, required, displayLabel, schema, uiSchema,
|
|
61
|
+
const { id, classNames: _classNames, children, rawErrors, description, hidden, required, displayLabel, schema, uiSchema, label: _label, forceDisplayLabel } = this.props;
|
|
62
62
|
const label = "ui:title" in uiSchema
|
|
63
63
|
? uiSchema["ui:title"]
|
|
64
64
|
: "title" in schema
|
|
@@ -69,7 +69,7 @@ class _FieldTemplate extends React.Component {
|
|
|
69
69
|
}
|
|
70
70
|
const inlineHelp = uiSchema["ui:inlineHelp"];
|
|
71
71
|
const belowHelp = uiSchema["ui:belowHelp"];
|
|
72
|
-
const htmlId = this.state.id ? `_laji-form_${
|
|
72
|
+
const htmlId = this.state.id ? `_laji-form_${this.state.id}` : undefined;
|
|
73
73
|
const _displayLabel = forceDisplayLabel ||
|
|
74
74
|
((schema.items && schema.items.enum && !utils_1.isMultiSelect(schema, uiSchema)) ? false : displayLabel);
|
|
75
75
|
let warnings = [];
|
package/lib/utils.d.ts
CHANGED
|
@@ -51,8 +51,8 @@ export declare const ReactUtils: (context: FormContext) => ReactUtilsType;
|
|
|
51
51
|
export declare const getNextInputInInputs: (formContext: FormContext) => (inputElem: HTMLElement | undefined, reverseDirection: boolean | undefined, fields: HTMLElement[]) => HTMLElement | undefined;
|
|
52
52
|
export declare const getNextInput: (formContext: FormContext) => (inputElem: HTMLElement, reverseDirection?: boolean) => HTMLElement | undefined;
|
|
53
53
|
export declare const focusNextInput: (formContext: FormContext) => (reverseDirection?: boolean) => boolean;
|
|
54
|
-
export declare const findNearestParentSchemaElemId: (
|
|
55
|
-
export declare const getSchemaElementById: (
|
|
54
|
+
export declare const findNearestParentSchemaElemId: (elem: HTMLElement) => string | undefined;
|
|
55
|
+
export declare const getSchemaElementById: (id: string) => HTMLElement | null;
|
|
56
56
|
export declare const focusById: (context: FormContext, id: string, focus?: boolean | undefined) => boolean;
|
|
57
57
|
export declare const focusAndScroll: (context: FormContext, idToFocus?: string | undefined, idToScroll?: string | undefined, focus?: boolean | undefined) => boolean | undefined;
|
|
58
58
|
export declare const shouldSyncScroll: (context: FormContext) => boolean;
|
|
@@ -164,4 +164,8 @@ export declare const classNames: (...cs: any[]) => string;
|
|
|
164
164
|
export declare function translate(translations: ByLang, key: string, params?: {
|
|
165
165
|
[key: string]: string | undefined;
|
|
166
166
|
}): string;
|
|
167
|
+
export declare type JSONSerializable = string | number | boolean | JSONSerializableObject | JSONSerializable[] | null;
|
|
168
|
+
export declare type JSONSerializableObject = {
|
|
169
|
+
[prop: string]: JSONSerializable;
|
|
170
|
+
};
|
|
167
171
|
export {};
|
package/lib/utils.js
CHANGED
|
@@ -245,8 +245,8 @@ function findNearestParentTabbableElem(elem) {
|
|
|
245
245
|
}
|
|
246
246
|
exports.findNearestParentTabbableElem = findNearestParentTabbableElem;
|
|
247
247
|
const ReactUtils = (context) => ({
|
|
248
|
-
findNearestParentSchemaElemId: _findNearestParentSchemaElemId
|
|
249
|
-
getSchemaElementById: _getSchemaElementById
|
|
248
|
+
findNearestParentSchemaElemId: _findNearestParentSchemaElemId,
|
|
249
|
+
getSchemaElementById: _getSchemaElementById,
|
|
250
250
|
focusById: _focusById(context),
|
|
251
251
|
focusAndScroll: _focusAndScroll(context),
|
|
252
252
|
shouldSyncScroll: _shouldSyncScroll(context),
|
|
@@ -322,23 +322,23 @@ const focusNextInput = (formContext) => (reverseDirection = false) => {
|
|
|
322
322
|
return false;
|
|
323
323
|
};
|
|
324
324
|
exports.focusNextInput = focusNextInput;
|
|
325
|
-
const _findNearestParentSchemaElemId = (
|
|
326
|
-
const nearestParentSchemaElem = findNearestParentSchemaElem(elem) || document.getElementById(
|
|
327
|
-
return nearestParentSchemaElem ? nearestParentSchemaElem.id.replace(
|
|
325
|
+
const _findNearestParentSchemaElemId = (elem) => {
|
|
326
|
+
const nearestParentSchemaElem = findNearestParentSchemaElem(elem) || document.getElementById("_laji-form_root");
|
|
327
|
+
return nearestParentSchemaElem ? nearestParentSchemaElem.id.replace("_laji-form_", "") : undefined;
|
|
328
328
|
};
|
|
329
|
-
const findNearestParentSchemaElemId = (
|
|
330
|
-
return _findNearestParentSchemaElemId(
|
|
329
|
+
const findNearestParentSchemaElemId = (elem) => {
|
|
330
|
+
return _findNearestParentSchemaElemId(elem);
|
|
331
331
|
};
|
|
332
332
|
exports.findNearestParentSchemaElemId = findNearestParentSchemaElemId;
|
|
333
|
-
const _getSchemaElementById = (
|
|
334
|
-
return document.getElementById(`_laji-form_${
|
|
333
|
+
const _getSchemaElementById = (id) => {
|
|
334
|
+
return document.getElementById(`_laji-form_${id}`);
|
|
335
335
|
};
|
|
336
|
-
const getSchemaElementById = (
|
|
337
|
-
return _getSchemaElementById(
|
|
336
|
+
const getSchemaElementById = (id) => {
|
|
337
|
+
return _getSchemaElementById(id);
|
|
338
338
|
};
|
|
339
339
|
exports.getSchemaElementById = getSchemaElementById;
|
|
340
340
|
const _focusById = (context) => (id, focus = true) => {
|
|
341
|
-
const elem = exports.getSchemaElementById(
|
|
341
|
+
const elem = exports.getSchemaElementById(id);
|
|
342
342
|
if (elem && document.body.contains(elem)) {
|
|
343
343
|
const tabbableFields = getTabbableFields(elem);
|
|
344
344
|
if (tabbableFields && tabbableFields.length) {
|
|
@@ -363,7 +363,7 @@ const _focusAndScroll = (context) => (idToFocus, idToScroll, focus = true) => {
|
|
|
363
363
|
return false;
|
|
364
364
|
if (idToScroll) {
|
|
365
365
|
const elemToScroll = document.getElementById(getKeyHandlerTargetId(idToScroll, _context));
|
|
366
|
-
const elemToFocus = exports.getSchemaElementById(
|
|
366
|
+
const elemToFocus = exports.getSchemaElementById(getKeyHandlerTargetId(idToFocus, _context));
|
|
367
367
|
if (!elemToScroll || !elemToFocus) {
|
|
368
368
|
return end();
|
|
369
369
|
}
|
package/llol
ADDED
package/llol.pdf
ADDED
package/migrate.sh
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
files="$@"
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
echo "Add playwright import..."
|
|
5
|
+
sed -i '1s/^/import { test, expect } from "@playwright\/test";\n/' $files
|
|
6
|
+
|
|
7
|
+
echo "Removing protractor imports..."
|
|
8
|
+
sed -i"" -e '/import.*protractor/d' $files
|
|
9
|
+
|
|
10
|
+
#echo "Adding serial mode..."
|
|
11
|
+
#sed -i"" -e '/import/,/^$/s/^$/\ntest.describe.configure\({ mode: "serial" }\);\n/g' $files
|
|
12
|
+
|
|
13
|
+
echo "Replacing protractor cmds with playwright..."
|
|
14
|
+
sed -i"" -E 's/\w?describe\(/test.describe\(/' $files
|
|
15
|
+
sed -i"" -E 's/\w?it\(/test\(/' $files
|
|
16
|
+
sed -i"" -E 's/\w?afterEach\(/test.afterEach\(/' $files
|
|
17
|
+
sed -i"" -E 's/\w?beforeAll\(/test.beforeAll\(/' $files
|
|
18
|
+
sed -i"" -E 's/\w?beforeEach\(/test.beforeEach\(/' $files
|
|
19
|
+
sed -i"" -E 's/\w?afterAll\(/test.afterAll\(/' $files
|
|
20
|
+
sed -i"" -E 's/\.\$\$\(/\.locator\(/g' $files
|
|
21
|
+
sed -i"" -E 's/\.\$\(/\.locator\(/g' $files
|
|
22
|
+
sed -i"" -E 's/\.get\(/\.nth\(/g' $files
|
|
23
|
+
sed -i"" -E 's/ElementArrayFinder/ElementFinder/g' $files
|
|
24
|
+
sed -i"" -E 's/ElementFinder/Locator/g' $files
|
|
25
|
+
sed -i"" -E 's/sendKeys/fill/g' $files
|
|
26
|
+
sed -i"" -E 's/protractor.Key.ENTER/"Enter"/g' $files
|
|
27
|
+
sed -i"" -E 's/protractor.Key.TAB/"Tab"/g' $files
|
|
28
|
+
sed -i"" -E 's/protractor.Key.DOWN/"ArrowDown"/g' $files
|
|
29
|
+
|
|
30
|
+
#laji form specific
|
|
31
|
+
sed -i"" -E 's/beforeAll\(async \(\)/beforeAll\(async \({browser}\)/' $files
|
|
32
|
+
sed -i"" -E 's/createForm\(/createForm\(await browser.newPage(), /' $files
|
|
33
|
+
sed -i"" -E 's/updateValue/form.updateValue/' $files
|
package/package.json
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luomus/laji-form",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "15.1.0",
|
|
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",
|
|
7
7
|
"scripts": {
|
|
8
|
+
"prepare": "self-import",
|
|
8
9
|
"start": "npx webpack serve",
|
|
9
10
|
"staging": "webpack-dev-server --content-base playground playground/app.js --host 0.0.0.0 --port 4010",
|
|
10
11
|
"build:lib": "rimraf lib && NODE_ENV=production tsc -p tsconfig.lib.json",
|
|
11
12
|
"build:dist": "rimraf dist && NODE_ENV=production webpack --config webpack.config.dist.js && rimraf dist/styles.js",
|
|
12
|
-
"build:tests": "rimraf test-export
|
|
13
|
+
"build:tests": "rimraf test-export & NODE_ENV=production tsc -p tsconfig.test.json",
|
|
13
14
|
"build": "npm run build:lib && npm run build:dist && npm run build:tests",
|
|
14
|
-
"preversion": "npm run lint && npm run test
|
|
15
|
+
"preversion": "npm run lint && npm run test",
|
|
15
16
|
"version": "bin/update-changelog.sh",
|
|
16
17
|
"postversion": "npm run build && npm publish && git push & git push --tags",
|
|
17
18
|
"lint": "eslint -c .eslintrc.prod.json src playground",
|
|
18
|
-
"test": "
|
|
19
|
-
"test:multi": "TEST_BROWSER=multi HOST=127.0.0.1 PORT=8083 protractor protractor.conf.js",
|
|
20
|
-
"test:ffox": "TEST_BROWSER=firefox HOST=127.0.0.1 PORT=8083 protractor protractor.conf.js",
|
|
21
|
-
"test:debug": "HOST=127.0.0.1 PORT=8083 HEADLESS=false node --inspect-brk node_modules/protractor/bin/protractor protractor.conf.js",
|
|
22
|
-
"patch": "patch-package"
|
|
19
|
+
"test": "playwright test"
|
|
23
20
|
},
|
|
24
21
|
"keywords": [
|
|
25
22
|
"react-jsonschema-form",
|
|
@@ -30,7 +27,7 @@
|
|
|
30
27
|
"repository": "https://github.com/luomus/laji-form.git",
|
|
31
28
|
"license": "MIT",
|
|
32
29
|
"dependencies": {
|
|
33
|
-
"@luomus/laji-map": "^
|
|
30
|
+
"@luomus/laji-map": "^4.0.2",
|
|
34
31
|
"@luomus/laji-validate": "0.0.120",
|
|
35
32
|
"@rjsf/core": "~5.1.0",
|
|
36
33
|
"@rjsf/utils": "~5.1.0",
|
|
@@ -58,26 +55,22 @@
|
|
|
58
55
|
"react-widgets-moment": "^4.0.30"
|
|
59
56
|
},
|
|
60
57
|
"devDependencies": {
|
|
61
|
-
"@
|
|
58
|
+
"@playwright/test": "^1.40.1",
|
|
59
|
+
"@types/node": "^20.10.1",
|
|
62
60
|
"@typescript-eslint/eslint-plugin": "^4.28.1",
|
|
63
61
|
"@typescript-eslint/parser": "^4.28.1",
|
|
64
62
|
"copy-webpack-plugin": "^9.0.1",
|
|
65
63
|
"css-loader": "^5.2.6",
|
|
66
64
|
"eslint": "^7.30.0",
|
|
67
|
-
"eslint-plugin-jasmine": "^4.1.2",
|
|
68
|
-
"eslint-plugin-protractor": "^2.1.1",
|
|
69
65
|
"eslint-plugin-react": "^7.24.0",
|
|
70
66
|
"eslint-plugin-react-hooks": "^4.2.0",
|
|
71
67
|
"mini-css-extract-plugin": "^2.1.0",
|
|
72
68
|
"notus": "^0.3.2",
|
|
73
|
-
"patch-package": "^8.0.0",
|
|
74
|
-
"protractor": "^7.0.0",
|
|
75
|
-
"protractor-console-plugin": "^0.1.1",
|
|
76
69
|
"querystring": "^0.2.1",
|
|
77
70
|
"rimraf": "^2.5.4",
|
|
71
|
+
"self-import": "^1.0.1",
|
|
78
72
|
"style-loader": "^3.0.0",
|
|
79
73
|
"ts-loader": "^9.2.3",
|
|
80
|
-
"ts-node": "^9.1.1",
|
|
81
74
|
"typescript": "^4.3.5",
|
|
82
75
|
"webpack": "^5.41.1",
|
|
83
76
|
"webpack-cli": "^4.8.0",
|
|
@@ -85,15 +78,15 @@
|
|
|
85
78
|
"webpack-node-externals": "^3.0.0"
|
|
86
79
|
},
|
|
87
80
|
"optionalDependencies": {
|
|
88
|
-
"@types/react-bootstrap": "^0.32.22",
|
|
89
|
-
"react-bootstrap": "^0.33.1",
|
|
90
|
-
"react-bootstrap-5": "npm:react-bootstrap@^2.5.0",
|
|
91
81
|
"@fortawesome/fontawesome-svg-core": "^6.2.0",
|
|
92
82
|
"@fortawesome/free-solid-svg-icons": "^6.2.0",
|
|
93
|
-
"@fortawesome/react-fontawesome": "^0.2.0"
|
|
83
|
+
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
84
|
+
"@types/react-bootstrap": "^0.32.22",
|
|
85
|
+
"react-bootstrap": "^0.33.1",
|
|
86
|
+
"react-bootstrap-5": "npm:react-bootstrap@^2.5.0"
|
|
94
87
|
},
|
|
95
88
|
"volta": {
|
|
96
|
-
"node": "
|
|
89
|
+
"node": "16.20.2"
|
|
97
90
|
},
|
|
98
91
|
"publishConfig": {
|
|
99
92
|
"access": "public"
|