@plesk/ui-library 3.27.0 → 3.27.3
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/cjs/components/Dialog/Dialog.js +11 -2
- package/cjs/components/Drawer/DrawerProgress.js +15 -1
- package/cjs/components/FormFieldPassword/FormFieldPassword.js +24 -214
- package/cjs/components/FormFieldPassword/PasswordMeter.js +81 -0
- package/cjs/components/FormFieldPassword/estimatePassword.js +203 -0
- package/cjs/components/FormFieldPassword/generatePassword.js +21 -0
- package/cjs/components/FormFieldPassword/index.js +5 -5
- package/cjs/components/Icon/Icon.js +1 -1
- package/cjs/components/List/List.js +1 -1
- package/cjs/components/ProgressDialog/ProgressDialog.js +2 -1
- package/cjs/components/Rating/images/rating.svg +5 -5
- package/cjs/index.js +1 -1
- package/dist/images/rating.svg +5 -5
- package/dist/plesk-ui-library-rtl.css +1 -1
- package/dist/plesk-ui-library-rtl.css.map +1 -1
- package/dist/plesk-ui-library.css +1 -1
- package/dist/plesk-ui-library.css.map +1 -1
- package/dist/plesk-ui-library.js +336 -309
- package/dist/plesk-ui-library.js.map +1 -1
- package/dist/plesk-ui-library.min.js +5 -5
- package/dist/plesk-ui-library.min.js.map +1 -1
- package/esm/components/Dialog/Dialog.js +11 -2
- package/esm/components/Drawer/DrawerProgress.js +16 -2
- package/esm/components/FormFieldPassword/FormFieldPassword.js +22 -206
- package/esm/components/FormFieldPassword/PasswordMeter.js +61 -0
- package/esm/components/FormFieldPassword/estimatePassword.js +187 -0
- package/esm/components/FormFieldPassword/generatePassword.js +14 -0
- package/esm/components/FormFieldPassword/index.js +3 -2
- package/esm/components/Icon/Icon.js +1 -1
- package/esm/components/List/List.js +1 -1
- package/esm/components/ProgressDialog/ProgressDialog.js +2 -1
- package/esm/components/Rating/images/rating.svg +5 -5
- package/esm/index.js +1 -1
- package/package.json +13 -8
- package/styleguide/build/bundle.f38c467d.js +2 -0
- package/styleguide/build/{bundle.ff1f903a.js.LICENSE.txt → bundle.f38c467d.js.LICENSE.txt} +0 -0
- package/styleguide/images/rating.svg +5 -5
- package/styleguide/index.html +2 -2
- package/types/package.d.ts +5 -0
- package/types/src/components/FormFieldPassword/FormFieldPassword.d.ts +91 -0
- package/types/src/components/FormFieldPassword/PasswordMeter.d.ts +9 -0
- package/types/src/components/FormFieldPassword/estimatePassword.d.ts +13 -0
- package/types/src/components/FormFieldPassword/index.d.ts +2 -0
- package/cjs/components/FormFieldPassword/passwordScore.js +0 -131
- package/esm/components/FormFieldPassword/passwordScore.js +0 -122
- package/styleguide/build/bundle.ff1f903a.js +0 -2
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.DEFAULT_RULES = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _Translate = _interopRequireDefault(require("../Translate"));
|
|
13
|
+
|
|
14
|
+
var _enUS = _interopRequireDefault(require("./locale/en-US"));
|
|
15
|
+
|
|
16
|
+
// Copyright 1999-2022. Plesk International GmbH. All rights reserved.
|
|
17
|
+
const DEFAULT_RULES = [{
|
|
18
|
+
name: 'passwordTooShort',
|
|
19
|
+
suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
|
|
20
|
+
content: `FormFieldPassword.passwordTooShort`,
|
|
21
|
+
fallback: _enUS.default.passwordTooShort
|
|
22
|
+
}),
|
|
23
|
+
|
|
24
|
+
score(passwd) {
|
|
25
|
+
return passwd.length < 5 ? -1 : 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
}, {
|
|
29
|
+
name: 'passwordLength',
|
|
30
|
+
|
|
31
|
+
score(passwd) {
|
|
32
|
+
if (passwd.length < 5) {
|
|
33
|
+
return 3;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (passwd.length > 4 && passwd.length < 8) {
|
|
37
|
+
return 6;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (passwd.length > 7 && passwd.length < 16) {
|
|
41
|
+
return 12;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return 18;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
}, {
|
|
48
|
+
name: 'lettersLowerCase',
|
|
49
|
+
suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
|
|
50
|
+
content: `FormFieldPassword.lettersLowerCase`,
|
|
51
|
+
fallback: _enUS.default.lettersLowerCase
|
|
52
|
+
}),
|
|
53
|
+
|
|
54
|
+
score(passwd) {
|
|
55
|
+
// [verified] at least one lower case letter
|
|
56
|
+
return passwd.match(/[a-z]/) ? 1 : -1;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
}, {
|
|
60
|
+
name: 'lettersUpperCase',
|
|
61
|
+
suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
|
|
62
|
+
content: `FormFieldPassword.lettersUpperCase`,
|
|
63
|
+
fallback: _enUS.default.lettersUpperCase
|
|
64
|
+
}),
|
|
65
|
+
|
|
66
|
+
score(passwd) {
|
|
67
|
+
// [verified] at least one upper case letter
|
|
68
|
+
return passwd.match(/[A-Z]/) ? 5 : -1;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
}, {
|
|
72
|
+
name: 'numbers1',
|
|
73
|
+
suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
|
|
74
|
+
content: `FormFieldPassword.numbers1`,
|
|
75
|
+
fallback: _enUS.default.numbers1
|
|
76
|
+
}),
|
|
77
|
+
|
|
78
|
+
score(passwd) {
|
|
79
|
+
// [verified] at least one number
|
|
80
|
+
return passwd.match(/\d+/) ? 5 : -1;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
}, {
|
|
84
|
+
name: 'numbers3',
|
|
85
|
+
suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
|
|
86
|
+
content: `FormFieldPassword.numbers3`,
|
|
87
|
+
fallback: _enUS.default.numbers3
|
|
88
|
+
}),
|
|
89
|
+
|
|
90
|
+
score(passwd) {
|
|
91
|
+
// [verified] at least three numbers
|
|
92
|
+
return passwd.match(/(.*[0-9].*[0-9].*[0-9])/) ? 5 : -1;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
}, {
|
|
96
|
+
name: 'specialChar1',
|
|
97
|
+
suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
|
|
98
|
+
content: `FormFieldPassword.specialChar1`,
|
|
99
|
+
fallback: _enUS.default.specialChar1
|
|
100
|
+
}),
|
|
101
|
+
|
|
102
|
+
score(passwd) {
|
|
103
|
+
// [verified] at least one special character
|
|
104
|
+
return passwd.match(/[!@#$%^&*?_~]/) ? 5 : -1;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
}, {
|
|
108
|
+
name: 'specialChar2',
|
|
109
|
+
suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
|
|
110
|
+
content: `FormFieldPassword.specialChar2`,
|
|
111
|
+
fallback: _enUS.default.specialChar2
|
|
112
|
+
}),
|
|
113
|
+
|
|
114
|
+
score(passwd) {
|
|
115
|
+
// [verified] at least two special characters
|
|
116
|
+
return passwd.match(/(.*[!@#$%^&*?_~].*[!@#$%^&*?_~])/) ? 5 : -1;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
}, {
|
|
120
|
+
name: 'comboUpperAndLower',
|
|
121
|
+
suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
|
|
122
|
+
content: `FormFieldPassword.comboUpperAndLower`,
|
|
123
|
+
fallback: _enUS.default.comboUpperAndLower
|
|
124
|
+
}),
|
|
125
|
+
|
|
126
|
+
score(passwd) {
|
|
127
|
+
// [verified] both upper and lower case
|
|
128
|
+
return passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/) ? 2 : -1;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
}, {
|
|
132
|
+
name: 'comboLettersAndNumbers',
|
|
133
|
+
suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
|
|
134
|
+
content: `FormFieldPassword.comboLettersAndNumbers`,
|
|
135
|
+
fallback: _enUS.default.comboLettersAndNumbers
|
|
136
|
+
}),
|
|
137
|
+
|
|
138
|
+
score(passwd) {
|
|
139
|
+
// [verified] both letters and numbers
|
|
140
|
+
return passwd.match(/([a-zA-Z])/) && passwd.match(/([0-9])/) ? 2 : -1;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
}, {
|
|
144
|
+
name: 'comboLettersNumbersSpecial',
|
|
145
|
+
suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
|
|
146
|
+
content: `FormFieldPassword.comboLettersNumbersSpecial`,
|
|
147
|
+
fallback: _enUS.default.comboLettersNumbersSpecial
|
|
148
|
+
}),
|
|
149
|
+
|
|
150
|
+
score(passwd) {
|
|
151
|
+
// [verified] letters, numbers, and special characters
|
|
152
|
+
return passwd.match(/([a-zA-Z0-9].*[!@#$%^&*?_~])|([!@#$%^&*?_~].*[a-zA-Z0-9])/) ? 2 : -1;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
}];
|
|
156
|
+
exports.DEFAULT_RULES = DEFAULT_RULES;
|
|
157
|
+
|
|
158
|
+
var _default = (password, rules = DEFAULT_RULES) => {
|
|
159
|
+
const suggestions = [];
|
|
160
|
+
let passwordScore = 0;
|
|
161
|
+
rules.forEach(({
|
|
162
|
+
suggestion,
|
|
163
|
+
score
|
|
164
|
+
}) => {
|
|
165
|
+
const ruleScore = score(password);
|
|
166
|
+
|
|
167
|
+
if (ruleScore < 0 && suggestion) {
|
|
168
|
+
suggestions.push(suggestion);
|
|
169
|
+
} else {
|
|
170
|
+
passwordScore += ruleScore;
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
let strength;
|
|
174
|
+
|
|
175
|
+
switch (true) {
|
|
176
|
+
case passwordScore < 16:
|
|
177
|
+
strength = 'VeryWeak';
|
|
178
|
+
break;
|
|
179
|
+
|
|
180
|
+
case passwordScore < 25:
|
|
181
|
+
strength = 'Weak';
|
|
182
|
+
break;
|
|
183
|
+
|
|
184
|
+
case passwordScore < 35:
|
|
185
|
+
strength = 'Medium';
|
|
186
|
+
break;
|
|
187
|
+
|
|
188
|
+
case passwordScore < 45:
|
|
189
|
+
strength = 'Strong';
|
|
190
|
+
break;
|
|
191
|
+
|
|
192
|
+
default:
|
|
193
|
+
strength = 'VeryStrong';
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
return {
|
|
198
|
+
strength,
|
|
199
|
+
suggestions
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
exports.default = _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
// Copyright 1999-2022. Plesk International GmbH. All rights reserved.
|
|
8
|
+
const symbolClasses = {
|
|
9
|
+
upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
|
|
10
|
+
lower: 'abcdefghijklmnopqrstuvwxyz',
|
|
11
|
+
number: '0123456789',
|
|
12
|
+
special: '!@#$%^&*?_~'
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const generatePassword = () => {
|
|
16
|
+
const password = ['upper', 'upper', 'upper', 'lower', 'lower', 'lower', 'lower', 'lower', 'lower', 'lower', 'lower', 'number', 'number', 'number', 'special', 'special'];
|
|
17
|
+
return password.sort((a, b) => Math.floor(b.length * Math.random()) - Math.floor(a.length * Math.random())).map(symbolClass => symbolClasses[symbolClass][Math.floor(symbolClasses[symbolClass].length * Math.random())]).join('');
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
var _default = generatePassword;
|
|
21
|
+
exports.default = _default;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -12,12 +14,10 @@ Object.defineProperty(exports, "default", {
|
|
|
12
14
|
Object.defineProperty(exports, "generatePassword", {
|
|
13
15
|
enumerable: true,
|
|
14
16
|
get: function () {
|
|
15
|
-
return
|
|
17
|
+
return _generatePassword.default;
|
|
16
18
|
}
|
|
17
19
|
});
|
|
18
20
|
|
|
19
|
-
var _FormFieldPassword =
|
|
20
|
-
|
|
21
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
var _FormFieldPassword = _interopRequireDefault(require("./FormFieldPassword"));
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
var _generatePassword = _interopRequireDefault(require("./generatePassword"));
|
|
@@ -126,7 +126,7 @@ const Icon = ({
|
|
|
126
126
|
}, props), newName ? /*#__PURE__*/_react.default.createElement("svg", {
|
|
127
127
|
focusable: "false"
|
|
128
128
|
}, /*#__PURE__*/_react.default.createElement("use", {
|
|
129
|
-
|
|
129
|
+
href: getHref(newName, newSize)
|
|
130
130
|
})) : src && /*#__PURE__*/_react.default.createElement("img", {
|
|
131
131
|
src: src,
|
|
132
132
|
alt: alt
|
|
@@ -1207,7 +1207,7 @@ class List extends _react.Component {
|
|
|
1207
1207
|
[`${baseClassName}__table--vertical`]: vertical,
|
|
1208
1208
|
[`${baseClassName}__table--reorderable`]: reorderable
|
|
1209
1209
|
})
|
|
1210
|
-
},
|
|
1210
|
+
}, reorderableProps), hasTitle && /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", {
|
|
1211
1211
|
className: (0, _classnames.default)(`${baseClassName}__table-thead`, {
|
|
1212
1212
|
[`${baseClassName}__row--expanded`]: this.isAllRowsExpanded(data, this.state.expandedRows)
|
|
1213
1213
|
})
|
|
@@ -151,7 +151,8 @@ class ProgressDialog extends _react.Component {
|
|
|
151
151
|
}, props, {
|
|
152
152
|
isOpen: isOpen,
|
|
153
153
|
onClose: this.handleClose,
|
|
154
|
-
closable: canClose || canCancel
|
|
154
|
+
closable: canClose || canCancel,
|
|
155
|
+
canClose: canClose
|
|
155
156
|
}), description && /*#__PURE__*/_react.default.createElement("div", {
|
|
156
157
|
className: `${baseClassName}__description`
|
|
157
158
|
}, description), /*#__PURE__*/_react.default.createElement(_Progress.default, {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
|
|
1
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="56" height="248" viewBox="0 0 51 248">
|
|
2
2
|
<defs><symbol id="star"><path stroke-width="3" d="m25,1 6,17h18l-14,11 5,17-15-10-15,10 5-17-14-11h18z"></path></symbol></defs>
|
|
3
|
-
<use x="0" y="0" fill="none" stroke="#ff9500"
|
|
4
|
-
<use x="0" y="100" fill="#ff9500" stroke="#ff9500"
|
|
5
|
-
<use x="0" y="200" fill="#848484" stroke="#848484"
|
|
6
|
-
</svg>
|
|
3
|
+
<use x="0" y="0" fill="none" stroke="#ff9500" href="#star"></use>
|
|
4
|
+
<use x="0" y="100" fill="#ff9500" stroke="#ff9500" href="#star"></use>
|
|
5
|
+
<use x="0" y="200" fill="#848484" stroke="#848484" href="#star"></use>
|
|
6
|
+
</svg>
|
package/cjs/index.js
CHANGED
package/dist/images/rating.svg
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
|
|
1
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="56" height="248" viewBox="0 0 51 248">
|
|
2
2
|
<defs><symbol id="star"><path stroke-width="3" d="m25,1 6,17h18l-14,11 5,17-15-10-15,10 5-17-14-11h18z"></path></symbol></defs>
|
|
3
|
-
<use x="0" y="0" fill="none" stroke="#ff9500"
|
|
4
|
-
<use x="0" y="100" fill="#ff9500" stroke="#ff9500"
|
|
5
|
-
<use x="0" y="200" fill="#848484" stroke="#848484"
|
|
6
|
-
</svg>
|
|
3
|
+
<use x="0" y="0" fill="none" stroke="#ff9500" href="#star"></use>
|
|
4
|
+
<use x="0" y="100" fill="#ff9500" stroke="#ff9500" href="#star"></use>
|
|
5
|
+
<use x="0" y="200" fill="#848484" stroke="#848484" href="#star"></use>
|
|
6
|
+
</svg>
|