quicksnack 3.27.0 → 3.28.1
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/form/PasswordStrengthField/PasswordStrenghField.d.ts +9 -0
- package/dist/form/PasswordStrengthField/PasswordStrenghField.js +85 -0
- package/dist/form/ScaffoldForm/ScaffoldField.js +3 -0
- package/dist/form/ScaffoldForm/{scaffoldProps.d.ts → scaffoldFormProps.d.ts} +1 -1
- package/dist/form/ScaffoldForm/{scaffoldProps.js → scaffoldFormProps.js} +2 -2
- package/dist/form/ScaffoldForm/scaffoldPasswordProps.d.ts +19 -0
- package/dist/form/ScaffoldForm/scaffoldPasswordProps.js +22 -0
- package/dist/form/ScaffoldForm/types.d.ts +6 -1
- package/dist/form/TextField/TextField.d.ts +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
declare type Props = Omit<React.InputHTMLAttributes<any>, 'type'>;
|
|
3
|
+
export declare const passwordMinLength: (val: string) => boolean;
|
|
4
|
+
export declare const passwordHasNumbers: (val: string) => boolean;
|
|
5
|
+
export declare const passwordHasLowerAndUppercase: (val: string) => boolean;
|
|
6
|
+
export declare const passwordHasSpecialChars: (val: string) => boolean;
|
|
7
|
+
export declare const calculatePasswordScore: (val: string) => number;
|
|
8
|
+
export declare const PasswordStrengthField: React.ForwardRefExoticComponent<Props & React.RefAttributes<unknown>>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
+
return cooked;
|
|
5
|
+
};
|
|
6
|
+
var __assign = (this && this.__assign) || function () {
|
|
7
|
+
__assign = Object.assign || function(t) {
|
|
8
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
+
s = arguments[i];
|
|
10
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
+
t[p] = s[p];
|
|
12
|
+
}
|
|
13
|
+
return t;
|
|
14
|
+
};
|
|
15
|
+
return __assign.apply(this, arguments);
|
|
16
|
+
};
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
41
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.PasswordStrengthField = exports.calculatePasswordScore = exports.passwordHasSpecialChars = exports.passwordHasLowerAndUppercase = exports.passwordHasNumbers = exports.passwordMinLength = void 0;
|
|
45
|
+
var react_1 = __importStar(require("react"));
|
|
46
|
+
var TextField_1 = require("../TextField/TextField");
|
|
47
|
+
var styled_components_1 = __importDefault(require("styled-components"));
|
|
48
|
+
var passwordMinLength = function (val) { return val.length >= 8; };
|
|
49
|
+
exports.passwordMinLength = passwordMinLength;
|
|
50
|
+
var passwordHasNumbers = function (val) { return /\d/.test(val); };
|
|
51
|
+
exports.passwordHasNumbers = passwordHasNumbers;
|
|
52
|
+
var passwordHasLowerAndUppercase = function (val) { return /[a-z]/.test(val) && /[A-Z]/.test(val); };
|
|
53
|
+
exports.passwordHasLowerAndUppercase = passwordHasLowerAndUppercase;
|
|
54
|
+
var passwordHasSpecialChars = function (val) { return /[-’/`~!#*$@_%+=.,^&(){}[\]|;:”<>?\\]/.test(val); };
|
|
55
|
+
exports.passwordHasSpecialChars = passwordHasSpecialChars;
|
|
56
|
+
var checks = [exports.passwordMinLength, exports.passwordHasNumbers, exports.passwordHasLowerAndUppercase, exports.passwordHasSpecialChars];
|
|
57
|
+
var maxScore = checks.length + 1;
|
|
58
|
+
var calculatePasswordScore = function (val) { return checks
|
|
59
|
+
.map(function (check) { return check(val); })
|
|
60
|
+
.reduce(function (acc, value) {
|
|
61
|
+
return value
|
|
62
|
+
? acc + 1
|
|
63
|
+
: acc;
|
|
64
|
+
}, 1); };
|
|
65
|
+
exports.calculatePasswordScore = calculatePasswordScore;
|
|
66
|
+
var Progress = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n margin-top: ", ";\n height: 3px;\n background-color: #f5f5f5;\n border-radius: 4px;\n box-shadow: inset 0 1px 2px rgba(0,0,0,.1);\n"], ["\n margin-top: ", ";\n height: 3px;\n background-color: #f5f5f5;\n border-radius: 4px;\n box-shadow: inset 0 1px 2px rgba(0,0,0,.1);\n"])), function (props) { return props.theme.spacing(1); });
|
|
67
|
+
var ProgressBar = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n width: ", "%;\n height: 100%;\n background-color: ", " ;\n transition: width .6s ease, background-color .6s ease;\n"], ["\n width: ", "%;\n height: 100%;\n background-color: ", " ;\n transition: width .6s ease, background-color .6s ease;\n"])), function (props) { return props.score ? (props.score / maxScore) * 100 : 0; }, function (props) { return props.score <= 2 ? '#e90f10' : props.score <= 3 ? '#ffad00' : '#02b502'; });
|
|
68
|
+
exports.PasswordStrengthField = (0, react_1.forwardRef)(function (props, ref) {
|
|
69
|
+
var _a = (0, react_1.useState)(0), score = _a[0], setScore = _a[1];
|
|
70
|
+
var handleChange = (0, react_1.useCallback)(function (e) {
|
|
71
|
+
var target = e.target;
|
|
72
|
+
setScore(target.value ? (0, exports.calculatePasswordScore)(target.value) : 0);
|
|
73
|
+
}, []);
|
|
74
|
+
var extendedRef = (0, react_1.useMemo)(function () { return function (el) {
|
|
75
|
+
el === null || el === void 0 ? void 0 : el.addEventListener('keyup', handleChange);
|
|
76
|
+
if (typeof ref === 'function') {
|
|
77
|
+
ref === null || ref === void 0 ? void 0 : ref(el);
|
|
78
|
+
}
|
|
79
|
+
}; }, [ref, handleChange]);
|
|
80
|
+
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
81
|
+
react_1.default.createElement(TextField_1.TextField, __assign({}, props, { type: "password", ref: extendedRef })),
|
|
82
|
+
react_1.default.createElement(Progress, null,
|
|
83
|
+
react_1.default.createElement(ProgressBar, { score: score })));
|
|
84
|
+
});
|
|
85
|
+
var templateObject_1, templateObject_2;
|
|
@@ -34,6 +34,7 @@ var Checkbox_1 = require("../Checkbox/Checkbox");
|
|
|
34
34
|
var Select_1 = require("../Select/Select");
|
|
35
35
|
var FileField_1 = require("../FileField/FileField");
|
|
36
36
|
var useScaffoldFormContext_1 = require("./hooks/useScaffoldFormContext");
|
|
37
|
+
var PasswordStrenghField_1 = require("../PasswordStrengthField/PasswordStrenghField");
|
|
37
38
|
var getComponent = function (field) {
|
|
38
39
|
switch (field.type) {
|
|
39
40
|
case "Button":
|
|
@@ -44,6 +45,8 @@ var getComponent = function (field) {
|
|
|
44
45
|
return Select_1.Select;
|
|
45
46
|
case "FileField":
|
|
46
47
|
return FileField_1.FileField;
|
|
48
|
+
case "PasswordStrengthField":
|
|
49
|
+
return PasswordStrenghField_1.PasswordStrengthField;
|
|
47
50
|
case "TextField":
|
|
48
51
|
default:
|
|
49
52
|
return TextField_1.TextField;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.scaffoldFormProps = void 0;
|
|
4
4
|
var FormPositioner_1 = require("./utils/FormPositioner");
|
|
5
|
-
exports.
|
|
5
|
+
exports.scaffoldFormProps = new FormPositioner_1.FormPositioner({
|
|
6
6
|
firstName: {
|
|
7
7
|
type: "TextField",
|
|
8
8
|
props: {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const scaffoldPasswordProps: {
|
|
2
|
+
fields: {
|
|
3
|
+
password: {
|
|
4
|
+
type: "PasswordStrengthField";
|
|
5
|
+
props: {
|
|
6
|
+
type: string;
|
|
7
|
+
label: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
prefix: {
|
|
11
|
+
type: "TextField";
|
|
12
|
+
props: {
|
|
13
|
+
type: "password";
|
|
14
|
+
label: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
columns: import("../..").Responsive<string>;
|
|
19
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scaffoldPasswordProps = void 0;
|
|
4
|
+
var FormPositioner_1 = require("./utils/FormPositioner");
|
|
5
|
+
exports.scaffoldPasswordProps = new FormPositioner_1.FormPositioner({
|
|
6
|
+
password: {
|
|
7
|
+
type: "PasswordStrengthField",
|
|
8
|
+
props: {
|
|
9
|
+
type: 'password',
|
|
10
|
+
label: "Password",
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
prefix: {
|
|
14
|
+
type: "TextField",
|
|
15
|
+
props: {
|
|
16
|
+
type: 'password',
|
|
17
|
+
label: "Repeat password",
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
})
|
|
21
|
+
.setVertical('mobile')
|
|
22
|
+
.getScaffoldProps();
|
|
@@ -5,10 +5,15 @@ import { Button } from "../Button/Button";
|
|
|
5
5
|
import { Checkbox } from "../Checkbox/Checkbox";
|
|
6
6
|
import { Select } from "../Select/Select";
|
|
7
7
|
import { FileField } from "../FileField/FileField";
|
|
8
|
+
import { PasswordStrengthField } from "../PasswordStrengthField/PasswordStrenghField";
|
|
8
9
|
export declare type ScaffoldTextFieldProps = {
|
|
9
10
|
type: "TextField";
|
|
10
11
|
props: React.ComponentPropsWithRef<typeof TextField> & FormGridWrapperProps;
|
|
11
12
|
};
|
|
13
|
+
export declare type ScaffoldPasswordStrengthFieldProps = {
|
|
14
|
+
type: "PasswordStrengthField";
|
|
15
|
+
props: React.ComponentPropsWithRef<typeof PasswordStrengthField> & FormGridWrapperProps;
|
|
16
|
+
};
|
|
12
17
|
export declare type ScaffoldButtonProps = {
|
|
13
18
|
type: "Button";
|
|
14
19
|
props: React.ComponentPropsWithRef<typeof Button> & FormGridWrapperProps;
|
|
@@ -25,5 +30,5 @@ export declare type ScaffoldFileField = {
|
|
|
25
30
|
type: "FileField";
|
|
26
31
|
props: React.ComponentPropsWithRef<typeof FileField> & FormGridWrapperProps;
|
|
27
32
|
};
|
|
28
|
-
export declare type ScaffoldAvailableFields = ScaffoldTextFieldProps | ScaffoldButtonProps | ScaffoldCheckboxProps | ScaffoldSelectProps | ScaffoldFileField;
|
|
33
|
+
export declare type ScaffoldAvailableFields = ScaffoldTextFieldProps | ScaffoldPasswordStrengthFieldProps | ScaffoldButtonProps | ScaffoldCheckboxProps | ScaffoldSelectProps | ScaffoldFileField;
|
|
29
34
|
export declare type Fields = Record<string, ScaffoldAvailableFields>;
|
|
@@ -5,5 +5,5 @@ declare type Props = React.InputHTMLAttributes<any> & {
|
|
|
5
5
|
} | React.TextareaHTMLAttributes<any> & {
|
|
6
6
|
multiline: true;
|
|
7
7
|
};
|
|
8
|
-
export declare const TextField: React.
|
|
8
|
+
export declare const TextField: React.ForwardRefExoticComponent<Props & React.RefAttributes<unknown>>;
|
|
9
9
|
export {};
|
package/dist/index.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export * from './form/Checkbox/Checkbox';
|
|
|
38
38
|
export * from './form/FileField/FileField';
|
|
39
39
|
export * from './form/Select/Select';
|
|
40
40
|
export * from './form/TextField/TextField';
|
|
41
|
+
export * from './form/PasswordStrengthField/PasswordStrenghField';
|
|
41
42
|
export * from './form/ScaffoldForm/FormGrid/FormGridWrapper';
|
|
42
43
|
export { FormGrid } from './form/ScaffoldForm/FormGrid/FormGrid';
|
|
43
44
|
export * from './layouts/BasicLayout/BasicLayout';
|
package/dist/index.js
CHANGED
|
@@ -55,6 +55,7 @@ __exportStar(require("./form/Checkbox/Checkbox"), exports);
|
|
|
55
55
|
__exportStar(require("./form/FileField/FileField"), exports);
|
|
56
56
|
__exportStar(require("./form/Select/Select"), exports);
|
|
57
57
|
__exportStar(require("./form/TextField/TextField"), exports);
|
|
58
|
+
__exportStar(require("./form/PasswordStrengthField/PasswordStrenghField"), exports);
|
|
58
59
|
__exportStar(require("./form/ScaffoldForm/FormGrid/FormGridWrapper"), exports);
|
|
59
60
|
var FormGrid_1 = require("./form/ScaffoldForm/FormGrid/FormGrid");
|
|
60
61
|
Object.defineProperty(exports, "FormGrid", { enumerable: true, get: function () { return FormGrid_1.FormGrid; } });
|