Skip to content

Commit 18d806f

Browse files
author
Juan Fernandez
committed
fix validations in uppercase, lowercase and trim, add expression validation
1 parent ba11eb8 commit 18d806f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+648
-134
lines changed

lib/components/DropdownAction.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ interface DropdownActionInterface {
55
onFinished: () => void;
66
onClose?: (e: any) => void;
77
}
8-
export declare const DropdownAction: ({ children, iconComponent, onFinished, onClose }: DropdownActionInterface) => JSX.Element;
8+
export declare const DropdownAction: ({ children, iconComponent, onFinished }: DropdownActionInterface) => JSX.Element;
99
export {};

lib/components/DropdownAction.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
2121
Object.defineProperty(exports, "__esModule", { value: true });
2222
exports.DropdownAction = void 0;
2323
const react_1 = __importStar(require("react"));
24-
const DropdownAction = ({ children, iconComponent, onFinished, onClose }) => {
24+
const DropdownAction = ({ children, iconComponent, onFinished }) => {
2525
const [edit, setEdit] = (0, react_1.useState)(false);
26-
const child = react_1.default.Children.map(children, (c, index) => {
27-
return react_1.default.cloneElement(c, Object.assign(Object.assign({}, c.props), { onEnter: (e) => {
26+
const child = react_1.default.Children.map(children, (c) => {
27+
return react_1.default.cloneElement(c, Object.assign(Object.assign({}, c.props), { activateFocus: edit, onEnter: (e) => {
2828
if (e.key === "Enter") {
2929
onFinished();
3030
setEdit(false);

lib/components/Index.js

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,34 @@
11
"use strict";
2-
var __importDefault = (this && this.__importDefault) || function (mod) {
3-
return (mod && mod.__esModule) ? mod : { "default": mod };
2+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3+
if (k2 === undefined) k2 = k;
4+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5+
}) : (function(o, m, k, k2) {
6+
if (k2 === undefined) k2 = k;
7+
o[k2] = m[k];
8+
}));
9+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10+
Object.defineProperty(o, "default", { enumerable: true, value: v });
11+
}) : function(o, v) {
12+
o["default"] = v;
13+
});
14+
var __importStar = (this && this.__importStar) || function (mod) {
15+
if (mod && mod.__esModule) return mod;
16+
var result = {};
17+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18+
__setModuleDefault(result, mod);
19+
return result;
420
};
521
Object.defineProperty(exports, "__esModule", { value: true });
622
exports.SelectCustom = exports.InputCustom = void 0;
7-
const react_1 = __importDefault(require("react"));
8-
const InputCustom = ({ name, value, onChange, type = "text", placeholder, min = 0, max, required = false, disabled = false, onEnter, onClick, onBlur, className, activateFocus }) => (react_1.default.createElement("input", { type: type, placeholder: placeholder, required: required, min: min, max: max, disabled: disabled, onChange: (e => onChange(e.target.value)), value: value, onBlur: onBlur, autoFocus: activateFocus, name: name, className: className, onKeyUp: onEnter, onClick: onClick, autoComplete: "off" }));
23+
const react_1 = __importStar(require("react"));
24+
const InputCustom = ({ name, value, onChange, type = "text", placeholder, min = 0, max, required = false, disabled = false, onEnter, onClick, onBlur, className, activateFocus }) => {
25+
const ref = (0, react_1.useRef)(null);
26+
(0, react_1.useEffect)(() => {
27+
if (activateFocus && ref.current)
28+
ref.current.focus();
29+
}, [activateFocus, ref]);
30+
return react_1.default.createElement("input", { type: type, placeholder: placeholder, required: required, min: min, max: max, disabled: disabled, onChange: (e => onChange(e.target.value)), value: value, onBlur: onBlur, ref: ref, name: name, className: className, onKeyUp: onEnter, onClick: onClick, autoComplete: "off" });
31+
};
932
exports.InputCustom = InputCustom;
1033
const SelectCustom = ({ name, value = "", onChange, options, required = false, disabled = false, className, onEnter }) => (react_1.default.createElement("select", { name: name, required: required, disabled: disabled, value: value, onChange: (e) => onChange(e.target.value), className: className, onKeyUp: onEnter }, options && options.map((op, key) => react_1.default.createElement("option", { value: op.value, key: key }, op.label))));
1134
exports.SelectCustom = SelectCustom;

lib/interfaces/ValidationBuilderEditorInterface.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,8 @@ export interface DataInterface {
9898
"integer"?: {
9999
"message"?: string;
100100
};
101+
"expression"?: {
102+
"message"?: string;
103+
"value"?: string;
104+
};
101105
}

lib/styles/styles.css

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,13 @@
6363
grid-template-columns: repeat(5, 1fr);
6464
}
6565
.validation-builder-grid{
66-
display: grid;
67-
width: 11rem;
68-
grid-template-columns: repeat(4, 1fr);
66+
display: flex;
6967
align-items: center;
70-
grid-gap: 1px;
7168
}
7269
.validation-builder-label{
7370
padding-left: 0.75rem;
74-
width: 5rem;
71+
flex: 1;
72+
margin-right: 0.5rem;
7573
text-align: left;
7674
}
7775
.validate-editor-container-config-tags .validation-builder-data-tags {
@@ -187,6 +185,9 @@
187185
width: 90%;
188186
margin: 0 auto;
189187
}
188+
.validation-builder-container-dropdown{
189+
margin-left: 0.5rem;
190+
}
190191
.validate-builder-container .validation-builder-field-action{
191192
padding: 0.3rem;
192193
}
@@ -203,6 +204,7 @@
203204
opacity: 0;
204205
transition: all .2s ease-in-out;
205206
text-align: end;
207+
margin-left: 0.5rem;
206208
}
207209
.validation-builder-badge.validation-builder-grid:hover > .validation-builder-container-remove-tag{
208210
opacity: 1;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export declare const getValidations: (fieldValidation: any, values: any) => any;
1+
export declare const getValidations: (fieldValidation: any, values: any, resolveExpressionCallback: any) => any;

lib/transformYup/getValidations.js

Lines changed: 11 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,17 @@
11
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
25
Object.defineProperty(exports, "__esModule", { value: true });
36
exports.getValidations = void 0;
4-
const getValidations = (fieldValidation, values) => {
5-
if (values.required) {
6-
fieldValidation = fieldValidation.required(values.required.message);
7-
}
8-
if (values.min) {
9-
fieldValidation = fieldValidation.min(values.min.limit, values.min.message);
10-
}
11-
if (values.max) {
12-
fieldValidation = fieldValidation.max(values.max.limit, values.max.message);
13-
}
14-
if (values.matches) {
15-
fieldValidation = fieldValidation.matches(values.matches.regex, values.matches.message);
16-
}
17-
if (values.email) {
18-
fieldValidation = fieldValidation.email(values.email.message);
19-
}
20-
if (values.url) {
21-
fieldValidation = fieldValidation.url(values.url.message);
22-
}
23-
if (values.uuid) {
24-
fieldValidation = fieldValidation.uuid(values.uuid.message);
25-
}
26-
if (values.trim) {
27-
fieldValidation = fieldValidation.trim(values.trim.message);
28-
}
29-
if (values.lowercase) {
30-
fieldValidation = fieldValidation.lowercase(values.lowercase.message);
31-
}
32-
if (values.uppercase) {
33-
fieldValidation = fieldValidation.uppercase(values.uppercase.message);
34-
}
35-
if (values.lessThan) {
36-
fieldValidation = fieldValidation.lessThan(values.lessThan.max, values.lessThan.message);
37-
}
38-
if (values.moreThan) {
39-
fieldValidation = fieldValidation.moreThan(values.moreThan.min, values.moreThan.message);
40-
}
41-
if (values.positive) {
42-
fieldValidation = fieldValidation.positive(values.positive.message);
43-
}
44-
if (values.negative) {
45-
fieldValidation = fieldValidation.negative(values.negative.message);
46-
}
47-
if (values.integer) {
48-
fieldValidation = fieldValidation.integer(values.integer.message);
7+
const index_1 = __importDefault(require("./validations/index"));
8+
const getValidations = (fieldValidation, values, resolveExpressionCallback) => {
9+
if (Object.keys(values).length > 0) {
10+
for (const key in values) {
11+
let type = index_1.default[key];
12+
if (type)
13+
fieldValidation = type(values, fieldValidation, resolveExpressionCallback);
14+
}
4915
}
5016
return fieldValidation;
5117
};

lib/transformYup/transformYup.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as yup from 'yup';
2-
declare const transformSchemaToYup: (data: any) => yup.ObjectSchema<{
2+
declare const transformSchemaToYup: (data: any, resolveExpressionCallback: any) => yup.ObjectSchema<{
33
[x: string]: yup.AnySchema<any, any, any> | import("yup/lib/Reference").default<unknown> | import("yup/lib/Lazy").default<any, any>;
44
}, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<{
55
[x: string]: yup.AnySchema<any, any, any> | import("yup/lib/Reference").default<unknown> | import("yup/lib/Lazy").default<any, any>;

lib/transformYup/transformYup.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
2222
const yup = __importStar(require("yup"));
2323
const getValidations_1 = require("./getValidations");
2424
const searchType_1 = require("./searchType");
25-
const transformSchemaToYup = (data) => {
26-
return yup.object().shape(Object.assign({}, transformSchema(data)));
25+
const transformSchemaToYup = (data, resolveExpressionCallback) => {
26+
return yup.object().shape(Object.assign({}, transformSchema(data, resolveExpressionCallback)));
2727
};
28-
const transformSchema = (data) => {
28+
const transformSchema = (data, resolveExpressionCallback) => {
2929
let schema = {};
3030
if (data) {
3131
for (const key in data) {
3232
let nameField = key;
3333
let values = data[key];
3434
let type = (0, searchType_1.searchYupType)(values.type);
35-
let validations = (0, getValidations_1.getValidations)(type, values);
35+
let validations = (0, getValidations_1.getValidations)(type, values, resolveExpressionCallback);
3636
schema = Object.assign(Object.assign({}, schema), { [nameField]: validations });
3737
}
3838
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
declare const email: ({ email }: {
2+
email: any;
3+
}, validation: any) => any;
4+
export default email;

0 commit comments

Comments
 (0)