@plesk/ui-library 3.27.2 → 3.28.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.
Files changed (71) hide show
  1. package/cjs/components/Dialog/Dialog.js +11 -2
  2. package/cjs/components/Form/Form.js +4 -2
  3. package/cjs/components/FormFieldPassword/FormFieldPassword.js +25 -239
  4. package/cjs/components/FormFieldPassword/PasswordMeter.js +81 -0
  5. package/cjs/components/FormFieldPassword/estimatePassword.js +212 -0
  6. package/cjs/components/FormFieldPassword/generatePassword.js +21 -0
  7. package/cjs/components/FormFieldPassword/index.js +5 -5
  8. package/cjs/components/Icon/constants.js +2 -2
  9. package/cjs/components/Icon/images/symbols.svg +9 -1
  10. package/cjs/components/ProgressDialog/ProgressDialog.js +2 -1
  11. package/cjs/components/Skeleton/Skeleton.js +49 -0
  12. package/cjs/components/Skeleton/Skeleton.stories.js +26 -0
  13. package/cjs/components/Skeleton/SkeletonTabs.js +41 -0
  14. package/cjs/components/Skeleton/SkeletonTabs.stories.js +17 -0
  15. package/cjs/components/Skeleton/SkeletonText.js +45 -0
  16. package/cjs/components/Skeleton/SkeletonText.stories.js +35 -0
  17. package/cjs/components/Skeleton/index.js +31 -0
  18. package/cjs/components/index.js +22 -1
  19. package/cjs/components/utils.js +6 -2
  20. package/cjs/index.js +1 -1
  21. package/dist/images/symbols.svg +9 -1
  22. package/dist/plesk-ui-library-rtl.css +1 -1
  23. package/dist/plesk-ui-library-rtl.css.map +1 -1
  24. package/dist/plesk-ui-library.css +1 -1
  25. package/dist/plesk-ui-library.css.map +1 -1
  26. package/dist/plesk-ui-library.js +607 -339
  27. package/dist/plesk-ui-library.js.map +1 -1
  28. package/dist/plesk-ui-library.min.js +5 -5
  29. package/dist/plesk-ui-library.min.js.map +1 -1
  30. package/esm/components/Dialog/Dialog.js +11 -2
  31. package/esm/components/Form/Form.js +4 -2
  32. package/esm/components/FormFieldPassword/FormFieldPassword.js +23 -232
  33. package/esm/components/FormFieldPassword/PasswordMeter.js +61 -0
  34. package/esm/components/FormFieldPassword/estimatePassword.js +196 -0
  35. package/esm/components/FormFieldPassword/generatePassword.js +14 -0
  36. package/esm/components/FormFieldPassword/index.js +3 -2
  37. package/esm/components/Icon/constants.js +2 -2
  38. package/esm/components/Icon/images/symbols.svg +9 -1
  39. package/esm/components/ProgressDialog/ProgressDialog.js +2 -1
  40. package/esm/components/Skeleton/Skeleton.js +34 -0
  41. package/esm/components/Skeleton/Skeleton.stories.js +10 -0
  42. package/esm/components/Skeleton/SkeletonTabs.js +26 -0
  43. package/esm/components/Skeleton/SkeletonTabs.stories.js +4 -0
  44. package/esm/components/Skeleton/SkeletonText.js +30 -0
  45. package/esm/components/Skeleton/SkeletonText.stories.js +16 -0
  46. package/esm/components/Skeleton/index.js +4 -0
  47. package/esm/components/index.js +3 -1
  48. package/esm/components/utils.js +2 -1
  49. package/esm/index.js +1 -1
  50. package/package.json +3 -3
  51. package/styleguide/build/bundle.24d5b0eb.js +2 -0
  52. package/styleguide/build/{bundle.1c9c8500.js.LICENSE.txt → bundle.24d5b0eb.js.LICENSE.txt} +0 -0
  53. package/styleguide/images/symbols.svg +9 -1
  54. package/styleguide/index.html +2 -2
  55. package/types/src/components/FormFieldPassword/FormFieldPassword.d.ts +91 -0
  56. package/types/src/components/FormFieldPassword/PasswordMeter.d.ts +9 -0
  57. package/types/src/components/FormFieldPassword/estimatePassword.d.ts +13 -0
  58. package/types/src/components/FormFieldPassword/index.d.ts +2 -0
  59. package/types/src/components/Icon/constants.d.ts +1 -1
  60. package/types/src/components/Skeleton/Skeleton.d.ts +49 -0
  61. package/types/src/components/Skeleton/Skeleton.stories.d.ts +12 -0
  62. package/types/src/components/Skeleton/SkeletonTabs.d.ts +23 -0
  63. package/types/src/components/Skeleton/SkeletonTabs.stories.d.ts +6 -0
  64. package/types/src/components/Skeleton/SkeletonText.d.ts +34 -0
  65. package/types/src/components/Skeleton/SkeletonText.stories.d.ts +38 -0
  66. package/types/src/components/Skeleton/index.d.ts +3 -0
  67. package/types/src/components/index.d.ts +2 -0
  68. package/types/src/components/utils.d.ts +1 -0
  69. package/cjs/components/FormFieldPassword/passwordScore.js +0 -132
  70. package/esm/components/FormFieldPassword/passwordScore.js +0 -123
  71. package/styleguide/build/bundle.1c9c8500.js +0 -2
@@ -5753,6 +5753,7 @@ const Dialog = ({
5753
5753
  closable,
5754
5754
  onClose,
5755
5755
  closingConfirmation,
5756
+ canClose,
5756
5757
  ...props
5757
5758
  }) => {
5758
5759
  const [isVisible, setIsVisible] = (0, _react.useState)(isOpen);
@@ -5863,8 +5864,8 @@ const Dialog = ({
5863
5864
  className: (0, _classnames.default)(baseClassName, className),
5864
5865
  isOpen: isVisible,
5865
5866
  onClose: onCloseWithConfirmation,
5866
- canCloseOnBackdropClick: closable,
5867
- canCloseOnEscapePress: closable,
5867
+ canCloseOnBackdropClick: canClose && closable,
5868
+ canCloseOnEscapePress: canClose && closable,
5868
5869
  size: size
5869
5870
  }, props), (title || subtitle || actions) && /*#__PURE__*/_react.default.createElement("header", {
5870
5871
  className: `${baseClassName}__header`
@@ -5887,6 +5888,7 @@ const Dialog = ({
5887
5888
  className: `${baseClassName}__header-actions`
5888
5889
  }, actions, closable && /*#__PURE__*/_react.default.createElement(_Button.default, {
5889
5890
  className: `${baseClassName}__header-close`,
5891
+ disabled: !canClose,
5890
5892
  ghost: true,
5891
5893
  size: "lg",
5892
5894
  icon: "cross-mark",
@@ -5992,6 +5994,12 @@ Dialog.propTypes = {
5992
5994
  */
5993
5995
  closable: _propTypes.default.bool,
5994
5996
 
5997
+ /**
5998
+ * Disable close dialog button
5999
+ * @since 4.0.0
6000
+ */
6001
+ canClose: _propTypes.default.bool,
6002
+
5995
6003
  /**
5996
6004
  * On close event handler. Called immediately after dialog closed by "cancel" button or "Esc" key.
5997
6005
  * @since 0.0.68
@@ -6035,6 +6043,7 @@ Dialog.defaultProps = {
6035
6043
  form: undefined,
6036
6044
  size: 'md',
6037
6045
  closable: true,
6046
+ canClose: true,
6038
6047
  onClose: undefined,
6039
6048
  closingConfirmation: undefined,
6040
6049
  children: undefined,
@@ -8180,9 +8189,11 @@ class Form extends _react.Component {
8180
8189
  let field;
8181
8190
  let fieldErrors;
8182
8191
  Object.keys(this.fields).every(name => {
8183
- if (errors && errors[name] && typeof errors[name] === 'object' && Object.keys(errors[name]).length > 0) {
8192
+ const foundError = (0, _utils.getIn)(errors, name);
8193
+
8194
+ if (foundError && typeof foundError === 'object' && Object.keys(foundError).length > 0) {
8184
8195
  field = this.fields[name];
8185
- fieldErrors = errors[name];
8196
+ fieldErrors = foundError;
8186
8197
  return false;
8187
8198
  }
8188
8199
 
@@ -9408,10 +9419,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
9408
9419
 
9409
9420
  /***/ }),
9410
9421
 
9411
- /***/ "./components/FormFieldPassword/FormFieldPassword.js":
9412
- /*!***********************************************************!*\
9413
- !*** ./components/FormFieldPassword/FormFieldPassword.js ***!
9414
- \***********************************************************/
9422
+ /***/ "./components/FormFieldPassword/FormFieldPassword.tsx":
9423
+ /*!************************************************************!*\
9424
+ !*** ./components/FormFieldPassword/FormFieldPassword.tsx ***!
9425
+ \************************************************************/
9415
9426
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9416
9427
 
9417
9428
  "use strict";
@@ -9420,12 +9431,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
9420
9431
  Object.defineProperty(exports, "__esModule", ({
9421
9432
  value: true
9422
9433
  }));
9423
- exports.generatePassword = exports["default"] = void 0;
9434
+ exports["default"] = void 0;
9424
9435
 
9425
9436
  var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
9426
9437
 
9427
- var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
9428
-
9429
9438
  var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "../node_modules/classnames/index.js"));
9430
9439
 
9431
9440
  var _constants = __webpack_require__(/*! ../../constants */ "./constants.js");
@@ -9436,11 +9445,11 @@ var _FormField = _interopRequireDefault(__webpack_require__(/*! ../FormField */
9436
9445
 
9437
9446
  var _Input = _interopRequireDefault(__webpack_require__(/*! ../Input */ "./components/Input/index.tsx"));
9438
9447
 
9439
- var _Popover = _interopRequireDefault(__webpack_require__(/*! ../Popover */ "./components/Popover/index.js"));
9440
-
9441
9448
  var _Translate = _interopRequireDefault(__webpack_require__(/*! ../Translate */ "./components/Translate/index.js"));
9442
9449
 
9443
- var _passwordScore = _interopRequireWildcard(__webpack_require__(/*! ./passwordScore */ "./components/FormFieldPassword/passwordScore.js"));
9450
+ var _PasswordMeter = _interopRequireDefault(__webpack_require__(/*! ./PasswordMeter */ "./components/FormFieldPassword/PasswordMeter.tsx"));
9451
+
9452
+ var _generatePassword = _interopRequireDefault(__webpack_require__(/*! ./generatePassword */ "./components/FormFieldPassword/generatePassword.js"));
9444
9453
 
9445
9454
  var _enUS = _interopRequireDefault(__webpack_require__(/*! ./locale/en-US */ "./components/FormFieldPassword/locale/en-US.js"));
9446
9455
 
@@ -9456,42 +9465,19 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
9456
9465
 
9457
9466
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9458
9467
 
9459
- const symbolClasses = {
9460
- upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
9461
- lower: 'abcdefghijklmnopqrstuvwxyz',
9462
- number: '0123456789',
9463
- special: '!@#$%^&*?_~'
9464
- };
9465
-
9466
- const generatePassword = () => {
9467
- const password = ['upper', 'lower', 'lower', 'lower', 'number', 'number', 'special', 'number', 'upper', 'upper', 'lower', 'lower', 'lower', 'lower', 'lower', 'lower'];
9468
- 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('');
9469
- };
9470
9468
  /**
9471
9469
  * `FormFieldPassword` component provides secure way to enter a password.
9472
9470
  * @since 0.0.58
9473
9471
  */
9474
-
9475
-
9476
- exports.generatePassword = generatePassword;
9477
-
9478
9472
  class FormFieldPassword extends _react.Component {
9479
9473
  constructor(...args) {
9480
9474
  super(...args);
9481
9475
 
9482
9476
  _defineProperty(this, "state", {
9483
9477
  visible: false,
9484
- passwordMeterVisible: false,
9485
- scoreResult: {
9486
- password: null,
9487
- intent: null,
9488
- strength: null,
9489
- unusedRules: []
9490
- }
9478
+ passwordMeterVisible: false
9491
9479
  });
9492
9480
 
9493
- _defineProperty(this, "passwordOnScoring", null);
9494
-
9495
9481
  _defineProperty(this, "targetRef", /*#__PURE__*/(0, _react.createRef)());
9496
9482
 
9497
9483
  _defineProperty(this, "handleToggleClick", () => {
@@ -9511,135 +9497,6 @@ class FormFieldPassword extends _react.Component {
9511
9497
  _defineProperty(this, "handleBlur", this.handleClosePasswordMeter);
9512
9498
  }
9513
9499
 
9514
- async passwordScore(value) {
9515
- if (!value) {
9516
- return {
9517
- password: null,
9518
- intent: null,
9519
- strength: null,
9520
- unusedRules: []
9521
- };
9522
- }
9523
-
9524
- const {
9525
- passwordScoreRules
9526
- } = this.props;
9527
- const {
9528
- password,
9529
- score,
9530
- unusedRules
9531
- } = await (0, _passwordScore.default)(value, passwordScoreRules);
9532
- let intent = 'success';
9533
-
9534
- let strength = /*#__PURE__*/_react.default.createElement(_Translate.default, {
9535
- content: "FormFieldPassword.strengthVeryStrong",
9536
- fallback: _enUS.default.strengthVeryStrong
9537
- });
9538
-
9539
- if (score < 16) {
9540
- intent = 'danger';
9541
- strength = /*#__PURE__*/_react.default.createElement(_Translate.default, {
9542
- content: "FormFieldPassword.strengthVeryWeak",
9543
- fallback: _enUS.default.strengthVeryWeak
9544
- });
9545
- } else if (score < 25) {
9546
- intent = 'danger';
9547
- strength = /*#__PURE__*/_react.default.createElement(_Translate.default, {
9548
- content: "FormFieldPassword.strengthWeak",
9549
- fallback: _enUS.default.strengthWeak
9550
- });
9551
- } else if (score < 35) {
9552
- intent = 'warning';
9553
- strength = /*#__PURE__*/_react.default.createElement(_Translate.default, {
9554
- content: "FormFieldPassword.strengthMedium",
9555
- fallback: _enUS.default.strengthMedium
9556
- });
9557
- } else if (score < 45) {
9558
- intent = 'success';
9559
- strength = /*#__PURE__*/_react.default.createElement(_Translate.default, {
9560
- content: "FormFieldPassword.strengthStrong",
9561
- fallback: _enUS.default.strengthStrong
9562
- });
9563
- }
9564
-
9565
- return {
9566
- password,
9567
- intent,
9568
- strength,
9569
- unusedRules
9570
- };
9571
- }
9572
-
9573
- renderPasswordMeter(value, target) {
9574
- const {
9575
- passwordMeterVisible
9576
- } = this.state;
9577
- const {
9578
- passwordMeterProps
9579
- } = this.props;
9580
- const {
9581
- password,
9582
- intent,
9583
- strength,
9584
- unusedRules
9585
- } = this.state.scoreResult;
9586
-
9587
- if (!!value && value !== password && value !== this.passwordOnScoring) {
9588
- this.passwordOnScoring = value;
9589
- this.passwordScore(value).then(scoreResult => {
9590
- if (this.passwordOnScoring === scoreResult.password) {
9591
- this.passwordOnScoring = null;
9592
- this.setState({
9593
- scoreResult
9594
- });
9595
- }
9596
- });
9597
- }
9598
-
9599
- return /*#__PURE__*/_react.default.createElement(_Popover.default, _extends({
9600
- visible: passwordMeterVisible && !!value,
9601
- target: target,
9602
- targetRef: this.targetRef,
9603
- placement: "bottom-right",
9604
- intent: intent,
9605
- canCloseOnOutsideClick: false,
9606
- canCloseOnEscapePress: false,
9607
- onClose: this.handleClosePasswordMeter
9608
- }, passwordMeterProps), /*#__PURE__*/_react.default.createElement(_Translate.default, {
9609
- content: "FormFieldPassword.passwordStrength",
9610
- fallback: _enUS.default.passwordStrength,
9611
- params: {
9612
- strength: /*#__PURE__*/_react.default.createElement("b", null, strength)
9613
- }
9614
- }), /*#__PURE__*/_react.default.createElement("br", null), unusedRules.length ? /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_Translate.default, {
9615
- content: "FormFieldPassword.improvePassword",
9616
- fallback: _enUS.default.improvePassword
9617
- }), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("ul", null, unusedRules.slice(0, 3).map(({
9618
- rule
9619
- }, index) => {
9620
- const {
9621
- name
9622
- } = rule;
9623
- let {
9624
- message
9625
- } = rule;
9626
-
9627
- if (name && !message) {
9628
- message = /*#__PURE__*/_react.default.createElement(_Translate.default, {
9629
- content: `FormFieldPassword.${name}`,
9630
- fallback: _enUS.default[name]
9631
- });
9632
- }
9633
-
9634
- return /*#__PURE__*/_react.default.createElement("li", {
9635
- key: name || index.toString()
9636
- }, message);
9637
- }))) : /*#__PURE__*/_react.default.createElement(_Translate.default, {
9638
- content: "FormFieldPassword.yourPasswordIsStrong",
9639
- fallback: _enUS.default.yourPasswordIsStrong
9640
- }));
9641
- }
9642
-
9643
9500
  renderGenerateButton({
9644
9501
  setValue,
9645
9502
  isDisabled
@@ -9650,7 +9507,7 @@ class FormFieldPassword extends _react.Component {
9650
9507
  } = this.props;
9651
9508
  const generateButtonProps = {
9652
9509
  className: `${baseClassName}__button--generate`,
9653
- onClick: () => setValue(generatePassword()),
9510
+ onClick: () => setValue((0, _generatePassword.default)()),
9654
9511
  tooltip: /*#__PURE__*/_react.default.createElement(_Translate.default, {
9655
9512
  content: "FormFieldPassword.generateButtonHint",
9656
9513
  fallback: _enUS.default.generateButtonHint
@@ -9681,12 +9538,15 @@ class FormFieldPassword extends _react.Component {
9681
9538
  hideGenerateButton,
9682
9539
  hidePasswordMeter,
9683
9540
  passwordMeterProps,
9684
- passwordScoreRules,
9685
9541
  size,
9686
9542
  autoFocus,
9687
9543
  autoComplete,
9688
9544
  ...props
9689
9545
  } = this.props;
9546
+ const {
9547
+ visible,
9548
+ passwordMeterVisible
9549
+ } = this.state;
9690
9550
  return /*#__PURE__*/_react.default.createElement(_FormField.default, _extends({
9691
9551
  className: (0, _classnames.default)(baseClassName, className)
9692
9552
  }, props), ({
@@ -9696,18 +9556,19 @@ class FormFieldPassword extends _react.Component {
9696
9556
  setValue,
9697
9557
  isDisabled
9698
9558
  }) => {
9559
+ const value = getValue('');
9560
+
9699
9561
  const input = /*#__PURE__*/_react.default.createElement(_Input.default, {
9700
9562
  id: getId(),
9701
9563
  name: getName(),
9702
- type: this.state.visible ? 'text' : 'password',
9703
- value: getValue(''),
9564
+ type: visible ? 'text' : 'password',
9565
+ value: value,
9704
9566
  onChange: e => {
9705
9567
  setValue(e.target.value);
9706
9568
  this.setState({
9707
9569
  passwordMeterVisible: true
9708
9570
  });
9709
9571
  },
9710
- onFocus: this.handleFocus,
9711
9572
  onBlur: this.handleBlur,
9712
9573
  autoFocus: autoFocus,
9713
9574
  autoComplete: autoComplete,
@@ -9716,8 +9577,8 @@ class FormFieldPassword extends _react.Component {
9716
9577
  suffix: hideShowButton ? null : /*#__PURE__*/_react.default.createElement(_Button.default, {
9717
9578
  className: `${baseClassName}__button--show`,
9718
9579
  onClick: this.handleToggleClick,
9719
- icon: this.state.visible ? 'visible' : 'invisible',
9720
- tooltip: this.state.visible ? /*#__PURE__*/_react.default.createElement(_Translate.default, {
9580
+ icon: visible ? 'visible' : 'invisible',
9581
+ tooltip: visible ? /*#__PURE__*/_react.default.createElement(_Translate.default, {
9721
9582
  content: "FormFieldPassword.hidePassword",
9722
9583
  fallback: _enUS.default.hidePassword
9723
9584
  }) : /*#__PURE__*/_react.default.createElement(_Translate.default, {
@@ -9737,7 +9598,12 @@ class FormFieldPassword extends _react.Component {
9737
9598
  className: (0, _classnames.default)(`${baseClassName}__control`, `${baseClassName}__control--${size}`)
9738
9599
  }, /*#__PURE__*/_react.default.createElement("div", {
9739
9600
  className: (0, _classnames.default)(`${baseClassName}__field`, `${baseClassName}__field--${size}`)
9740
- }, hidePasswordMeter ? input : this.renderPasswordMeter(getValue(), input)), hideGenerateButton ? null : this.renderGenerateButton({
9601
+ }, hidePasswordMeter ? input : /*#__PURE__*/_react.default.createElement(_PasswordMeter.default, _extends({
9602
+ value: value,
9603
+ targetRef: this.targetRef,
9604
+ visible: passwordMeterVisible && value !== '',
9605
+ onClose: this.handleClosePasswordMeter
9606
+ }, passwordMeterProps), input)), hideGenerateButton ? null : this.renderGenerateButton({
9741
9607
  setValue,
9742
9608
  isDisabled
9743
9609
  }));
@@ -9746,98 +9612,28 @@ class FormFieldPassword extends _react.Component {
9746
9612
 
9747
9613
  }
9748
9614
 
9749
- FormFieldPassword.propTypes = {
9750
- /**
9751
- * Is show button hidden?
9752
- * @since 0.0.59
9753
- */
9754
- hideShowButton: _propTypes.default.bool,
9755
-
9756
- /**
9757
- * Is generate button hidden?
9758
- * @since 0.0.59
9759
- */
9760
- hideGenerateButton: _propTypes.default.bool,
9761
-
9762
- /**
9763
- * Is password meter hidden?
9764
- * @since 0.0.59
9765
- */
9766
- hidePasswordMeter: _propTypes.default.bool,
9767
-
9768
- /**
9769
- * Additional props for password meter. . See [Popover](#!/Popover) for more information.
9770
- * @since 1.5.6
9771
- */
9772
- passwordMeterProps: _propTypes.default.object,
9773
-
9774
- /**
9775
- * A set of custom password score rules.
9776
- * @since 3.21.0
9777
- */
9778
- passwordScoreRules: _propTypes.default.arrayOf(_propTypes.default.shape({
9779
- name: _propTypes.default.string,
9780
- message: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.element]),
9781
- score: _propTypes.default.func.isRequired
9782
- })),
9783
-
9784
- /**
9785
- * Size of the control
9786
- * @since 1.5.6
9787
- */
9788
- size: _propTypes.default.oneOf(['md', 'lg', 'xl', 'fill']),
9789
-
9790
- /**
9791
- * The browser will automatically focus on the component upon rendering the screen
9792
- * @since 1.9.0
9793
- */
9794
- autoFocus: _propTypes.default.bool,
9795
-
9796
- /**
9797
- * Prevent password autocompletion.
9798
- * @since 2.5.1
9799
- */
9800
- autoComplete: _propTypes.default.oneOf(['new-password']),
9801
-
9802
- /**
9803
- * A render function for customizing the password generation button.
9804
- * @since 3.13.0
9805
- */
9806
- generateButton: _propTypes.default.func,
9807
-
9808
- /**
9809
- * @ignore
9810
- */
9811
- className: _propTypes.default.string,
9812
-
9813
- /**
9814
- * @ignore
9815
- */
9816
- baseClassName: _propTypes.default.string
9817
- };
9818
- FormFieldPassword.defaultProps = {
9615
+ _defineProperty(FormFieldPassword, "defaultProps", {
9819
9616
  hideShowButton: false,
9820
9617
  generateButton: undefined,
9821
9618
  hideGenerateButton: false,
9822
9619
  hidePasswordMeter: false,
9823
9620
  passwordMeterProps: {},
9824
- passwordScoreRules: undefined,
9825
9621
  size: 'md',
9826
9622
  autoFocus: undefined,
9827
9623
  autoComplete: undefined,
9828
9624
  className: undefined,
9829
9625
  baseClassName: `${_constants.CLS_PREFIX}form-field-password`
9830
- };
9831
- FormFieldPassword.PASSWORD_SCORE_RULES = _passwordScore.PASSWORD_SCORE_RULES;
9626
+ });
9627
+
9832
9628
  var _default = FormFieldPassword;
9833
9629
  exports["default"] = _default;
9834
9630
 
9835
9631
  /***/ }),
9836
9632
 
9837
- /***/ "./components/FormFieldPassword/index.js":
9838
- /*!***********************************************!*\
9839
- !*** ./components/FormFieldPassword/index.js ***!
9840
- \***********************************************/
9633
+ /***/ "./components/FormFieldPassword/PasswordMeter.tsx":
9634
+ /*!********************************************************!*\
9635
+ !*** ./components/FormFieldPassword/PasswordMeter.tsx ***!
9636
+ \********************************************************/
9841
9637
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9842
9638
 
9843
9639
  "use strict";
@@ -9846,74 +9642,89 @@ exports["default"] = _default;
9846
9642
  Object.defineProperty(exports, "__esModule", ({
9847
9643
  value: true
9848
9644
  }));
9849
- Object.defineProperty(exports, "default", ({
9850
- enumerable: true,
9851
- get: function () {
9852
- return _FormFieldPassword.default;
9853
- }
9854
- }));
9855
- Object.defineProperty(exports, "generatePassword", ({
9856
- enumerable: true,
9857
- get: function () {
9858
- return _FormFieldPassword.generatePassword;
9859
- }
9860
- }));
9645
+ exports["default"] = void 0;
9861
9646
 
9862
- var _FormFieldPassword = _interopRequireWildcard(__webpack_require__(/*! ./FormFieldPassword */ "./components/FormFieldPassword/FormFieldPassword.js"));
9647
+ var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
9648
+
9649
+ var _Popover = _interopRequireDefault(__webpack_require__(/*! ../Popover */ "./components/Popover/index.js"));
9650
+
9651
+ var _Translate = _interopRequireDefault(__webpack_require__(/*! ../Translate */ "./components/Translate/index.js"));
9652
+
9653
+ var _estimatePassword = _interopRequireWildcard(__webpack_require__(/*! ./estimatePassword */ "./components/FormFieldPassword/estimatePassword.tsx"));
9654
+
9655
+ var _enUS = _interopRequireDefault(__webpack_require__(/*! ./locale/en-US */ "./components/FormFieldPassword/locale/en-US.js"));
9656
+
9657
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9863
9658
 
9864
9659
  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); }
9865
9660
 
9866
9661
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
9867
9662
 
9868
- /***/ }),
9869
-
9870
- /***/ "./components/FormFieldPassword/locale/en-US.js":
9871
- /*!******************************************************!*\
9872
- !*** ./components/FormFieldPassword/locale/en-US.js ***!
9873
- \******************************************************/
9874
- /***/ ((__unused_webpack_module, exports) => {
9663
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
9875
9664
 
9876
- "use strict";
9665
+ const strengthIntents = {
9666
+ VeryWeak: 'danger',
9667
+ Weak: 'danger',
9668
+ Medium: 'warning',
9669
+ Strong: 'success',
9670
+ VeryStrong: 'success'
9671
+ };
9877
9672
 
9673
+ const PasswordMeter = ({
9674
+ value,
9675
+ visible,
9676
+ onEstimate,
9677
+ children,
9678
+ ...props
9679
+ }) => {
9680
+ const [result, setResult] = (0, _react.useState)(null);
9681
+ (0, _react.useEffect)(() => {
9682
+ if (!visible) {
9683
+ return;
9684
+ }
9878
9685
 
9879
- Object.defineProperty(exports, "__esModule", ({
9880
- value: true
9881
- }));
9882
- exports["default"] = void 0;
9883
- // Copyright 1999-2017. Plesk International GmbH. All rights reserved.
9884
- var _default = {
9885
- improvePassword: 'To improve your password:',
9886
- passwordTooShort: 'Make the password longer.',
9887
- lettersLowerCase: 'Use at least one lower-case character.',
9888
- lettersUpperCase: 'Use at least one upper-case character.',
9889
- numbers1: 'Use at least one number.',
9890
- numbers3: 'Use at least three numbers.',
9891
- specialChar1: 'Use at least one special character (for example: !, @, #, $, % ,^, &, *, ?, _, ~).',
9892
- specialChar2: 'Use at least two special characters (for example: !, @, #, $, %, ^, &, *, ?, _, ~).',
9893
- comboUpperAndLower: 'Use both upper and lower-case characters.',
9894
- comboLettersAndNumbers: 'Use both numbers and characters.',
9895
- comboLettersNumbersSpecial: 'Use numbers, characters and special characters.',
9896
- yourPasswordIsStrong: 'You can make it even stronger by increasing its length.',
9897
- passwordStrength: 'The password strength is %%strength%%.',
9898
- strengthVeryStrong: 'VERY STRONG',
9899
- strengthStrong: 'STRONG',
9900
- strengthVeryWeak: 'VERY WEAK',
9901
- strengthWeak: 'WEAK',
9902
- strengthMedium: 'MEDIUM',
9903
- hidePassword: 'Hide password',
9904
- showPassword: 'Show password',
9905
- generateButton: 'Generate',
9906
- generateButtonHint: 'Generate a strong password'
9686
+ Promise.resolve(onEstimate ? onEstimate(value, _estimatePassword.default, _estimatePassword.DEFAULT_RULES) : (0, _estimatePassword.default)(value)).then(result => {
9687
+ setResult(result);
9688
+ });
9689
+ }, [visible, value, onEstimate]);
9690
+ return /*#__PURE__*/_react.default.createElement(_Popover.default, _extends({
9691
+ visible: visible && result !== null,
9692
+ target: children,
9693
+ placement: "bottom-right",
9694
+ intent: result ? strengthIntents[result.strength] : undefined,
9695
+ canCloseOnOutsideClick: false,
9696
+ canCloseOnEscapePress: false
9697
+ }, props), result !== null && result !== void 0 && result.strength ? /*#__PURE__*/_react.default.createElement(_Translate.default, {
9698
+ component: "div",
9699
+ content: "FormFieldPassword.passwordStrength",
9700
+ fallback: _enUS.default.passwordStrength,
9701
+ params: {
9702
+ strength: /*#__PURE__*/_react.default.createElement("b", null, /*#__PURE__*/_react.default.createElement(_Translate.default, {
9703
+ content: `FormFieldPassword.strength${result === null || result === void 0 ? void 0 : result.strength}`,
9704
+ fallback: _enUS.default[`strength${result === null || result === void 0 ? void 0 : result.strength}`]
9705
+ }))
9706
+ }
9707
+ }) : null, result !== null && result !== void 0 && result.suggestions.length ? /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_Translate.default, {
9708
+ content: "FormFieldPassword.improvePassword",
9709
+ fallback: _enUS.default.improvePassword
9710
+ }), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("ul", null, result.suggestions.slice(0, 3).map((suggestion, index) => /*#__PURE__*/_react.default.createElement("li", {
9711
+ key: index.toString()
9712
+ }, suggestion)))) : /*#__PURE__*/_react.default.createElement(_Translate.default, {
9713
+ content: "FormFieldPassword.yourPasswordIsStrong",
9714
+ fallback: _enUS.default.yourPasswordIsStrong
9715
+ }));
9907
9716
  };
9717
+
9718
+ var _default = PasswordMeter;
9908
9719
  exports["default"] = _default;
9909
9720
 
9910
9721
  /***/ }),
9911
9722
 
9912
- /***/ "./components/FormFieldPassword/passwordScore.js":
9913
- /*!*******************************************************!*\
9914
- !*** ./components/FormFieldPassword/passwordScore.js ***!
9915
- \*******************************************************/
9916
- /***/ ((__unused_webpack_module, exports) => {
9723
+ /***/ "./components/FormFieldPassword/estimatePassword.tsx":
9724
+ /*!***********************************************************!*\
9725
+ !*** ./components/FormFieldPassword/estimatePassword.tsx ***!
9726
+ \***********************************************************/
9727
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9917
9728
 
9918
9729
  "use strict";
9919
9730
 
@@ -9921,33 +9732,29 @@ exports["default"] = _default;
9921
9732
  Object.defineProperty(exports, "__esModule", ({
9922
9733
  value: true
9923
9734
  }));
9924
- exports["default"] = exports.PASSWORD_SCORE_RULES = void 0;
9735
+ exports["default"] = exports.DEFAULT_RULES = void 0;
9925
9736
 
9926
- // Copyright 1999-2021. Plesk International GmbH. All rights reserved.
9927
- const passwordScore = (password, rules = PASSWORD_SCORE_RULES) => {
9928
- const unusedRules = [];
9929
- let score = 0;
9930
- rules.forEach(rule => {
9931
- const mark = rule.score(password);
9737
+ var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
9932
9738
 
9933
- if (mark < 0) {
9934
- unusedRules.push({
9935
- rule,
9936
- value: -mark
9937
- });
9938
- } else {
9939
- score += mark;
9940
- }
9941
- });
9942
- return Promise.resolve({
9943
- password,
9944
- score,
9945
- unusedRules
9946
- });
9947
- };
9739
+ var _Translate = _interopRequireDefault(__webpack_require__(/*! ../Translate */ "./components/Translate/index.js"));
9948
9740
 
9949
- const PASSWORD_SCORE_RULES = [{
9741
+ var _enUS = _interopRequireDefault(__webpack_require__(/*! ./locale/en-US */ "./components/FormFieldPassword/locale/en-US.js"));
9742
+
9743
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9744
+
9745
+ // Copyright 1999-2022. Plesk International GmbH. All rights reserved.
9746
+ const EXCLUSIONS = {
9747
+ numbers1: 'numbers3',
9748
+ specialChar1: 'specialChar2',
9749
+ lettersLowerCase: 'comboUpperAndLower',
9750
+ lettersUpperCase: 'comboUpperAndLower'
9751
+ };
9752
+ const DEFAULT_RULES = [{
9950
9753
  name: 'passwordTooShort',
9754
+ suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
9755
+ content: `FormFieldPassword.passwordTooShort`,
9756
+ fallback: _enUS.default.passwordTooShort
9757
+ }),
9951
9758
 
9952
9759
  score(passwd) {
9953
9760
  return passwd.length < 5 ? -1 : 0;
@@ -9974,6 +9781,10 @@ const PASSWORD_SCORE_RULES = [{
9974
9781
 
9975
9782
  }, {
9976
9783
  name: 'lettersLowerCase',
9784
+ suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
9785
+ content: `FormFieldPassword.lettersLowerCase`,
9786
+ fallback: _enUS.default.lettersLowerCase
9787
+ }),
9977
9788
 
9978
9789
  score(passwd) {
9979
9790
  // [verified] at least one lower case letter
@@ -9982,6 +9793,10 @@ const PASSWORD_SCORE_RULES = [{
9982
9793
 
9983
9794
  }, {
9984
9795
  name: 'lettersUpperCase',
9796
+ suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
9797
+ content: `FormFieldPassword.lettersUpperCase`,
9798
+ fallback: _enUS.default.lettersUpperCase
9799
+ }),
9985
9800
 
9986
9801
  score(passwd) {
9987
9802
  // [verified] at least one upper case letter
@@ -9990,6 +9805,10 @@ const PASSWORD_SCORE_RULES = [{
9990
9805
 
9991
9806
  }, {
9992
9807
  name: 'numbers1',
9808
+ suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
9809
+ content: `FormFieldPassword.numbers1`,
9810
+ fallback: _enUS.default.numbers1
9811
+ }),
9993
9812
 
9994
9813
  score(passwd) {
9995
9814
  // [verified] at least one number
@@ -9998,6 +9817,10 @@ const PASSWORD_SCORE_RULES = [{
9998
9817
 
9999
9818
  }, {
10000
9819
  name: 'numbers3',
9820
+ suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
9821
+ content: `FormFieldPassword.numbers3`,
9822
+ fallback: _enUS.default.numbers3
9823
+ }),
10001
9824
 
10002
9825
  score(passwd) {
10003
9826
  // [verified] at least three numbers
@@ -10006,6 +9829,10 @@ const PASSWORD_SCORE_RULES = [{
10006
9829
 
10007
9830
  }, {
10008
9831
  name: 'specialChar1',
9832
+ suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
9833
+ content: `FormFieldPassword.specialChar1`,
9834
+ fallback: _enUS.default.specialChar1
9835
+ }),
10009
9836
 
10010
9837
  score(passwd) {
10011
9838
  // [verified] at least one special character
@@ -10014,6 +9841,10 @@ const PASSWORD_SCORE_RULES = [{
10014
9841
 
10015
9842
  }, {
10016
9843
  name: 'specialChar2',
9844
+ suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
9845
+ content: `FormFieldPassword.specialChar2`,
9846
+ fallback: _enUS.default.specialChar2
9847
+ }),
10017
9848
 
10018
9849
  score(passwd) {
10019
9850
  // [verified] at least two special characters
@@ -10022,6 +9853,10 @@ const PASSWORD_SCORE_RULES = [{
10022
9853
 
10023
9854
  }, {
10024
9855
  name: 'comboUpperAndLower',
9856
+ suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
9857
+ content: `FormFieldPassword.comboUpperAndLower`,
9858
+ fallback: _enUS.default.comboUpperAndLower
9859
+ }),
10025
9860
 
10026
9861
  score(passwd) {
10027
9862
  // [verified] both upper and lower case
@@ -10030,6 +9865,10 @@ const PASSWORD_SCORE_RULES = [{
10030
9865
 
10031
9866
  }, {
10032
9867
  name: 'comboLettersAndNumbers',
9868
+ suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
9869
+ content: `FormFieldPassword.comboLettersAndNumbers`,
9870
+ fallback: _enUS.default.comboLettersAndNumbers
9871
+ }),
10033
9872
 
10034
9873
  score(passwd) {
10035
9874
  // [verified] both letters and numbers
@@ -10038,6 +9877,10 @@ const PASSWORD_SCORE_RULES = [{
10038
9877
 
10039
9878
  }, {
10040
9879
  name: 'comboLettersNumbersSpecial',
9880
+ suggestion: /*#__PURE__*/_react.default.createElement(_Translate.default, {
9881
+ content: `FormFieldPassword.comboLettersNumbersSpecial`,
9882
+ fallback: _enUS.default.comboLettersNumbersSpecial
9883
+ }),
10041
9884
 
10042
9885
  score(passwd) {
10043
9886
  // [verified] letters, numbers, and special characters
@@ -10045,8 +9888,162 @@ const PASSWORD_SCORE_RULES = [{
10045
9888
  }
10046
9889
 
10047
9890
  }];
10048
- exports.PASSWORD_SCORE_RULES = PASSWORD_SCORE_RULES;
10049
- var _default = passwordScore;
9891
+ exports.DEFAULT_RULES = DEFAULT_RULES;
9892
+
9893
+ var _default = (password, rules = DEFAULT_RULES) => {
9894
+ let passwordScore = 0;
9895
+ const suggestions = [];
9896
+ const skippedRules = new Set();
9897
+ rules.forEach(rule => {
9898
+ const ruleScore = rule.score(password);
9899
+
9900
+ if (ruleScore >= 0) {
9901
+ passwordScore += ruleScore;
9902
+ return;
9903
+ }
9904
+
9905
+ skippedRules.add(EXCLUSIONS[rule.name]);
9906
+
9907
+ if (!skippedRules.has(rule.name) && rule.suggestion) {
9908
+ suggestions.push(rule.suggestion);
9909
+ }
9910
+ });
9911
+ let strength;
9912
+
9913
+ switch (true) {
9914
+ case passwordScore < 16:
9915
+ strength = 'VeryWeak';
9916
+ break;
9917
+
9918
+ case passwordScore < 25:
9919
+ strength = 'Weak';
9920
+ break;
9921
+
9922
+ case passwordScore < 35:
9923
+ strength = 'Medium';
9924
+ break;
9925
+
9926
+ case passwordScore < 45:
9927
+ strength = 'Strong';
9928
+ break;
9929
+
9930
+ default:
9931
+ strength = 'VeryStrong';
9932
+ break;
9933
+ }
9934
+
9935
+ return {
9936
+ strength,
9937
+ suggestions
9938
+ };
9939
+ };
9940
+
9941
+ exports["default"] = _default;
9942
+
9943
+ /***/ }),
9944
+
9945
+ /***/ "./components/FormFieldPassword/generatePassword.js":
9946
+ /*!**********************************************************!*\
9947
+ !*** ./components/FormFieldPassword/generatePassword.js ***!
9948
+ \**********************************************************/
9949
+ /***/ ((__unused_webpack_module, exports) => {
9950
+
9951
+ "use strict";
9952
+
9953
+
9954
+ Object.defineProperty(exports, "__esModule", ({
9955
+ value: true
9956
+ }));
9957
+ exports["default"] = void 0;
9958
+ // Copyright 1999-2022. Plesk International GmbH. All rights reserved.
9959
+ const symbolClasses = {
9960
+ upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
9961
+ lower: 'abcdefghijklmnopqrstuvwxyz',
9962
+ number: '0123456789',
9963
+ special: '!@#$%^&*?_~'
9964
+ };
9965
+
9966
+ const generatePassword = () => {
9967
+ const password = ['upper', 'upper', 'upper', 'lower', 'lower', 'lower', 'lower', 'lower', 'lower', 'lower', 'lower', 'number', 'number', 'number', 'special', 'special'];
9968
+ 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('');
9969
+ };
9970
+
9971
+ var _default = generatePassword;
9972
+ exports["default"] = _default;
9973
+
9974
+ /***/ }),
9975
+
9976
+ /***/ "./components/FormFieldPassword/index.tsx":
9977
+ /*!************************************************!*\
9978
+ !*** ./components/FormFieldPassword/index.tsx ***!
9979
+ \************************************************/
9980
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9981
+
9982
+ "use strict";
9983
+
9984
+
9985
+ Object.defineProperty(exports, "__esModule", ({
9986
+ value: true
9987
+ }));
9988
+ Object.defineProperty(exports, "default", ({
9989
+ enumerable: true,
9990
+ get: function () {
9991
+ return _FormFieldPassword.default;
9992
+ }
9993
+ }));
9994
+ Object.defineProperty(exports, "generatePassword", ({
9995
+ enumerable: true,
9996
+ get: function () {
9997
+ return _generatePassword.default;
9998
+ }
9999
+ }));
10000
+
10001
+ var _FormFieldPassword = _interopRequireDefault(__webpack_require__(/*! ./FormFieldPassword */ "./components/FormFieldPassword/FormFieldPassword.tsx"));
10002
+
10003
+ var _generatePassword = _interopRequireDefault(__webpack_require__(/*! ./generatePassword */ "./components/FormFieldPassword/generatePassword.js"));
10004
+
10005
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10006
+
10007
+ /***/ }),
10008
+
10009
+ /***/ "./components/FormFieldPassword/locale/en-US.js":
10010
+ /*!******************************************************!*\
10011
+ !*** ./components/FormFieldPassword/locale/en-US.js ***!
10012
+ \******************************************************/
10013
+ /***/ ((__unused_webpack_module, exports) => {
10014
+
10015
+ "use strict";
10016
+
10017
+
10018
+ Object.defineProperty(exports, "__esModule", ({
10019
+ value: true
10020
+ }));
10021
+ exports["default"] = void 0;
10022
+ // Copyright 1999-2017. Plesk International GmbH. All rights reserved.
10023
+ var _default = {
10024
+ improvePassword: 'To improve your password:',
10025
+ passwordTooShort: 'Make the password longer.',
10026
+ lettersLowerCase: 'Use at least one lower-case character.',
10027
+ lettersUpperCase: 'Use at least one upper-case character.',
10028
+ numbers1: 'Use at least one number.',
10029
+ numbers3: 'Use at least three numbers.',
10030
+ specialChar1: 'Use at least one special character (for example: !, @, #, $, % ,^, &, *, ?, _, ~).',
10031
+ specialChar2: 'Use at least two special characters (for example: !, @, #, $, %, ^, &, *, ?, _, ~).',
10032
+ comboUpperAndLower: 'Use both upper and lower-case characters.',
10033
+ comboLettersAndNumbers: 'Use both numbers and characters.',
10034
+ comboLettersNumbersSpecial: 'Use numbers, characters and special characters.',
10035
+ yourPasswordIsStrong: 'You can make it even stronger by increasing its length.',
10036
+ passwordStrength: 'The password strength is %%strength%%.',
10037
+ strengthVeryStrong: 'VERY STRONG',
10038
+ strengthStrong: 'STRONG',
10039
+ strengthVeryWeak: 'VERY WEAK',
10040
+ strengthWeak: 'WEAK',
10041
+ strengthMedium: 'MEDIUM',
10042
+ hidePassword: 'Hide password',
10043
+ showPassword: 'Show password',
10044
+ generateButton: 'Generate',
10045
+ generateButtonHint: 'Generate a strong password'
10046
+ };
10050
10047
  exports["default"] = _default;
10051
10048
 
10052
10049
  /***/ }),
@@ -11303,9 +11300,9 @@ exports.NAMES_12 = exports.NAMES = void 0;
11303
11300
 
11304
11301
  /* eslint-disable max-len */
11305
11302
  // This file is generated by create-svg-sprite. Do not edit.
11306
- const NAMES_12 = ['archive', 'arrow-back', 'arrow-diagonal-out', 'arrow-down', 'arrow-down-in', 'arrow-down-out', 'arrow-down-tray', 'arrow-left', 'arrow-right', 'arrow-right-in', 'arrow-right-out', 'arrow-up', 'arrow-up-circle', 'arrow-up-in', 'arrow-up-in-cloud', 'arrow-up-out', 'arrow-up-tray', 'arrows-four-directions', 'arrows-inward', 'arrows-loop', 'arrows-opposite', 'arrows-outward', 'backup', 'backup2', 'bar-chart-vertical', 'bar-chart-vertical-arrow-up', 'bell', 'book-email', 'boundary', 'box-diagonal-bottom-in', 'box-diagonal-top-in', 'brush', 'bug', 'calendar', 'calendar-clock', 'camera', 'card', 'card-ribbon', 'card-row', 'card-tile', 'cd', 'cd-up-in-cloud', 'chain', 'chain-broken', 'chat', 'check-list', 'check-mark', 'check-mark-circle', 'check-mark-circle-filled', 'chevron-double-down', 'chevron-double-up', 'chevron-down', 'chevron-left', 'chevron-right', 'chevron-up', 'circle-diagonal', 'clean', 'clip', 'clock', 'clone', 'cloud', 'cloud-checkmark', 'cloud-crossed', 'cloud-graph', 'code', 'connection', 'console', 'console-filled', 'copy', 'copy-indicator', 'cpu', 'crane', 'credit-cards', 'cross-mark', 'cross-mark-circle', 'cross-mark-circle-filled', 'crown-transfer', 'dashboard', 'database', 'database-box', 'database-plus', 'deploy', 'docker-filled', 'dollar', 'dollar-filled', 'dot', 'emoticon-confused', 'emoticon-dead', 'emoticon-excited', 'emoticon-happy', 'emoticon-neutral', 'emoticon-sad', 'emoticon-smile', 'enter', 'exclamation-mark-circle', 'exclamation-mark-circle-filled', 'eye', 'eye-closed', 'facebook', 'facebook-filled', 'feedback', 'filter', 'filter-check-mark', 'fire', 'flag-globe', 'floppy-disk', 'folder-closed', 'folder-key', 'folder-network', 'folder-open', 'folders-tree', 'four-squares', 'gear', 'git', 'github', 'globe', 'hard-drive', 'hard-drive-key', 'hat', 'hexagons', 'home', 'info-circle', 'info-circle-filled', 'ip-addresses', 'kebab', 'key', 'lifebuoy', 'lightbulb', 'limit', 'linux', 'list', 'list-check-mark', 'location', 'lock-closed', 'lock-closed-check', 'lock-closed-filled', 'lock-open', 'lock-open-cross', 'lock-open-filled', 'mail', 'mail-settings', 'megaphone', 'menu', 'menu-thin', 'microsoft', 'minimize', 'minus', 'minus-circle', 'minus-circle-filled', 'monitoring', 'monitoring-off', 'my-little-admin', 'net', 'nine-dots', 'node-js', 'package', 'panel', 'panel-check', 'panel-eye', 'panel-key', 'panel-settings', 'panels', 'pause-circle', 'pencil', 'pencil-dialog', 'php', 'phpmyadmin', 'pin', 'pipette', 'plans', 'plugins', 'plus', 'power', 'projects', 'puzzle', 'question-mark-circle', 'question-mark-circle-filled', 'ram', 'react-js', 'recycle', 'refresh', 'reload', 'remove', 'reset', 'resource', 'ribbon', 'rocket', 'ruby', 'sand-clock', 'scan', 'screen', 'search', 'security-check', 'send', 'servers', 'share', 'shield', 'shield-chain', 'shopping-cart', 'sidebar-right-hide', 'sidebar-right-show', 'signal-light', 'site-page', 'sleep', 'sliders', 'square-with-circles', 'star', 'star-circle-filled', 'star-filled', 'star-half-filled', 'start', 'start-circle', 'stop', 'stop-circle', 'storage', 'themes', 'three-dots-horizontal', 'three-dots-vertical', 'tools', 'transfer', 'triangle-exclamation-mark', 'triangle-exclamation-mark-filled', 'unarchive', 'user', 'volume', 'web', 'web-plus', 'web-settings', 'windows', 'wordpress'];
11303
+ const NAMES_12 = ['archive', 'arrow-back', 'arrow-diagonal-out', 'arrow-down', 'arrow-down-in', 'arrow-down-out', 'arrow-down-tray', 'arrow-left', 'arrow-right', 'arrow-right-in', 'arrow-right-out', 'arrow-up', 'arrow-up-circle', 'arrow-up-in', 'arrow-up-in-cloud', 'arrow-up-out', 'arrow-up-tray', 'arrows-four-directions', 'arrows-inward', 'arrows-loop', 'arrows-opposite', 'arrows-outward', 'backup', 'backup2', 'bar-chart-vertical', 'bar-chart-vertical-arrow-up', 'bell', 'book-email', 'boundary', 'box-diagonal-bottom-in', 'box-diagonal-top-in', 'brush', 'bug', 'calendar', 'calendar-clock', 'camera', 'card', 'card-ribbon', 'card-row', 'card-tile', 'cd', 'cd-up-in-cloud', 'chain', 'chain-broken', 'chat', 'check-list', 'check-mark', 'check-mark-circle', 'check-mark-circle-filled', 'chevron-double-down', 'chevron-double-up', 'chevron-down', 'chevron-left', 'chevron-right', 'chevron-up', 'circle-diagonal', 'clean', 'clip', 'clock', 'clone', 'cloud', 'cloud-checkmark', 'cloud-crossed', 'cloud-graph', 'code', 'connection', 'console', 'console-filled', 'copy', 'copy-indicator', 'cpu', 'crane', 'credit-cards', 'cross-mark', 'cross-mark-circle', 'cross-mark-circle-filled', 'crown-transfer', 'dashboard', 'database', 'database-box', 'database-plus', 'deploy', 'docker-filled', 'dollar', 'dollar-filled', 'dot', 'emoticon-confused', 'emoticon-dead', 'emoticon-excited', 'emoticon-happy', 'emoticon-neutral', 'emoticon-sad', 'emoticon-smile', 'enter', 'exclamation-mark-circle', 'exclamation-mark-circle-filled', 'eye', 'eye-closed', 'facebook', 'facebook-filled', 'feedback', 'filter', 'filter-check-mark', 'fire', 'flag-globe', 'floppy-disk', 'folder-closed', 'folder-key', 'folder-network', 'folder-open', 'folders-tree', 'four-squares', 'gear', 'git', 'github', 'globe', 'hard-drive', 'hard-drive-key', 'hat', 'hexagons', 'home', 'info-circle', 'info-circle-filled', 'ip-addresses', 'kebab', 'key', 'lifebuoy', 'lightbulb', 'limit', 'linux', 'list', 'list-check-mark', 'location', 'lock-closed', 'lock-closed-check', 'lock-closed-filled', 'lock-open', 'lock-open-cross', 'lock-open-filled', 'mail', 'mail-settings', 'megaphone', 'menu', 'menu-thin', 'microsoft', 'minimize', 'minus', 'minus-circle', 'minus-circle-filled', 'monitoring', 'monitoring-off', 'my-little-admin', 'net', 'nine-dots', 'node-js', 'package', 'panel', 'panel-check', 'panel-eye', 'panel-key', 'panel-settings', 'panels', 'pause-circle', 'pencil', 'pencil-dialog', 'php', 'phpmyadmin', 'pin', 'pipette', 'plans', 'plugins', 'plus', 'power', 'projects', 'puzzle', 'question-mark-circle', 'question-mark-circle-filled', 'ram', 'react-js', 'recycle', 'refresh', 'reload', 'remove', 'reset', 'resource', 'ribbon', 'rocket', 'ruby', 'sand-clock', 'scan', 'screen', 'search', 'security-check', 'send', 'server', 'servers', 'share', 'shield', 'shield-chain', 'shopping-cart', 'sidebar-right-hide', 'sidebar-right-show', 'signal-light', 'site-page', 'sleep', 'sliders', 'square-with-circles', 'star', 'star-circle-filled', 'star-filled', 'star-half-filled', 'start', 'start-circle', 'stop', 'stop-circle', 'storage', 'themes', 'three-dots-horizontal', 'three-dots-vertical', 'tools', 'transfer', 'triangle-exclamation-mark', 'triangle-exclamation-mark-filled', 'unarchive', 'user', 'volume', 'web', 'web-plus', 'web-settings', 'windows', 'wordpress'];
11307
11304
  exports.NAMES_12 = NAMES_12;
11308
- const NAMES = ['archive', 'arrow-back', 'arrow-diagonal-out', 'arrow-down', 'arrow-down-in', 'arrow-down-out', 'arrow-down-tray', 'arrow-left', 'arrow-right', 'arrow-right-in', 'arrow-right-out', 'arrow-up', 'arrow-up-circle', 'arrow-up-in', 'arrow-up-in-cloud', 'arrow-up-out', 'arrow-up-tray', 'arrows-four-directions', 'arrows-inward', 'arrows-loop', 'arrows-opposite', 'arrows-outward', 'backup', 'backup2', 'bar-chart-vertical', 'bar-chart-vertical-arrow-up', 'bell', 'book-email', 'boundary', 'box-diagonal-bottom-in', 'box-diagonal-top-in', 'brush', 'bug', 'calendar', 'calendar-clock', 'camera', 'card', 'card-ribbon', 'card-row', 'card-tile', 'cd', 'cd-up-in-cloud', 'chain', 'chain-broken', 'chat', 'check-list', 'check-mark', 'check-mark-circle', 'check-mark-circle-filled', 'chevron-double-down', 'chevron-double-up', 'chevron-down', 'chevron-left', 'chevron-right', 'chevron-up', 'circle-diagonal', 'clean', 'clip', 'clock', 'clone', 'cloud', 'cloud-checkmark', 'cloud-crossed', 'cloud-graph', 'code', 'connection', 'console', 'console-filled', 'copy', 'copy-indicator', 'cpu', 'crane', 'credit-cards', 'cross-mark', 'cross-mark-circle', 'cross-mark-circle-filled', 'crown-transfer', 'dashboard', 'database', 'database-box', 'database-plus', 'deploy', 'docker-filled', 'dollar', 'dollar-filled', 'dot', 'emoticon-confused', 'emoticon-dead', 'emoticon-excited', 'emoticon-happy', 'emoticon-neutral', 'emoticon-sad', 'emoticon-smile', 'enter', 'exclamation-mark-circle', 'exclamation-mark-circle-filled', 'eye', 'eye-closed', 'facebook', 'facebook-filled', 'feedback', 'filter', 'filter-check-mark', 'fire', 'flag-globe', 'floppy-disk', 'folder-closed', 'folder-key', 'folder-network', 'folder-open', 'folders-tree', 'four-squares', 'gear', 'git', 'github', 'globe', 'hard-drive', 'hard-drive-key', 'hat', 'hexagons', 'home', 'info-circle', 'info-circle-filled', 'ip-addresses', 'kebab', 'key', 'lifebuoy', 'lightbulb', 'limit', 'linux', 'list', 'list-check-mark', 'location', 'lock-closed', 'lock-closed-check', 'lock-closed-filled', 'lock-open', 'lock-open-cross', 'lock-open-filled', 'mail', 'mail-settings', 'megaphone', 'menu', 'menu-thin', 'microsoft', 'minimize', 'minus', 'minus-circle', 'minus-circle-filled', 'monitoring', 'monitoring-off', 'my-little-admin', 'net', 'nine-dots', 'node-js', 'package', 'panel', 'panel-check', 'panel-eye', 'panel-key', 'panel-settings', 'panels', 'pause-circle', 'pencil', 'pencil-dialog', 'php', 'phpmyadmin', 'pin', 'pipette', 'plans', 'plugins', 'plus', 'power', 'projects', 'puzzle', 'question-mark-circle', 'question-mark-circle-filled', 'ram', 'react-js', 'recycle', 'refresh', 'reload', 'remove', 'reset', 'resource', 'ribbon', 'rocket', 'ruby', 'sand-clock', 'scan', 'screen', 'search', 'security-check', 'send', 'servers', 'share', 'shield', 'shield-chain', 'shopping-cart', 'sidebar-right-hide', 'sidebar-right-show', 'signal-light', 'site-page', 'sleep', 'sliders', 'square-with-circles', 'star', 'star-circle-filled', 'star-filled', 'star-half-filled', 'start', 'start-circle', 'stop', 'stop-circle', 'storage', 'themes', 'three-dots-horizontal', 'three-dots-vertical', 'tools', 'transfer', 'triangle-exclamation-mark', 'triangle-exclamation-mark-filled', 'unarchive', 'user', 'volume', 'web', 'web-plus', 'web-settings', 'windows', 'wordpress'];
11305
+ const NAMES = ['archive', 'arrow-back', 'arrow-diagonal-out', 'arrow-down', 'arrow-down-in', 'arrow-down-out', 'arrow-down-tray', 'arrow-left', 'arrow-right', 'arrow-right-in', 'arrow-right-out', 'arrow-up', 'arrow-up-circle', 'arrow-up-in', 'arrow-up-in-cloud', 'arrow-up-out', 'arrow-up-tray', 'arrows-four-directions', 'arrows-inward', 'arrows-loop', 'arrows-opposite', 'arrows-outward', 'backup', 'backup2', 'bar-chart-vertical', 'bar-chart-vertical-arrow-up', 'bell', 'book-email', 'boundary', 'box-diagonal-bottom-in', 'box-diagonal-top-in', 'brush', 'bug', 'calendar', 'calendar-clock', 'camera', 'card', 'card-ribbon', 'card-row', 'card-tile', 'cd', 'cd-up-in-cloud', 'chain', 'chain-broken', 'chat', 'check-list', 'check-mark', 'check-mark-circle', 'check-mark-circle-filled', 'chevron-double-down', 'chevron-double-up', 'chevron-down', 'chevron-left', 'chevron-right', 'chevron-up', 'circle-diagonal', 'clean', 'clip', 'clock', 'clone', 'cloud', 'cloud-checkmark', 'cloud-crossed', 'cloud-graph', 'code', 'connection', 'console', 'console-filled', 'copy', 'copy-indicator', 'cpu', 'crane', 'credit-cards', 'cross-mark', 'cross-mark-circle', 'cross-mark-circle-filled', 'crown-transfer', 'dashboard', 'database', 'database-box', 'database-plus', 'deploy', 'docker-filled', 'dollar', 'dollar-filled', 'dot', 'emoticon-confused', 'emoticon-dead', 'emoticon-excited', 'emoticon-happy', 'emoticon-neutral', 'emoticon-sad', 'emoticon-smile', 'enter', 'exclamation-mark-circle', 'exclamation-mark-circle-filled', 'eye', 'eye-closed', 'facebook', 'facebook-filled', 'feedback', 'filter', 'filter-check-mark', 'fire', 'flag-globe', 'floppy-disk', 'folder-closed', 'folder-key', 'folder-network', 'folder-open', 'folders-tree', 'four-squares', 'gear', 'git', 'github', 'globe', 'hard-drive', 'hard-drive-key', 'hat', 'hexagons', 'home', 'info-circle', 'info-circle-filled', 'ip-addresses', 'kebab', 'key', 'lifebuoy', 'lightbulb', 'limit', 'linux', 'list', 'list-check-mark', 'location', 'lock-closed', 'lock-closed-check', 'lock-closed-filled', 'lock-open', 'lock-open-cross', 'lock-open-filled', 'mail', 'mail-settings', 'megaphone', 'menu', 'menu-thin', 'microsoft', 'minimize', 'minus', 'minus-circle', 'minus-circle-filled', 'monitoring', 'monitoring-off', 'my-little-admin', 'net', 'nine-dots', 'node-js', 'package', 'panel', 'panel-check', 'panel-eye', 'panel-key', 'panel-settings', 'panels', 'pause-circle', 'pencil', 'pencil-dialog', 'php', 'phpmyadmin', 'pin', 'pipette', 'plans', 'plugins', 'plus', 'power', 'projects', 'puzzle', 'question-mark-circle', 'question-mark-circle-filled', 'ram', 'react-js', 'recycle', 'refresh', 'reload', 'remove', 'reset', 'resource', 'ribbon', 'rocket', 'ruby', 'sand-clock', 'scan', 'screen', 'search', 'security-check', 'send', 'server', 'servers', 'share', 'shield', 'shield-chain', 'shopping-cart', 'sidebar-right-hide', 'sidebar-right-show', 'signal-light', 'site-page', 'sleep', 'sliders', 'square-with-circles', 'star', 'star-circle-filled', 'star-filled', 'star-half-filled', 'start', 'start-circle', 'stop', 'stop-circle', 'storage', 'themes', 'three-dots-horizontal', 'three-dots-vertical', 'tools', 'transfer', 'triangle-exclamation-mark', 'triangle-exclamation-mark-filled', 'unarchive', 'user', 'volume', 'web', 'web-plus', 'web-settings', 'windows', 'wordpress'];
11309
11306
  exports.NAMES = NAMES;
11310
11307
 
11311
11308
  /***/ }),
@@ -20067,7 +20064,8 @@ class ProgressDialog extends _react.Component {
20067
20064
  }, props, {
20068
20065
  isOpen: isOpen,
20069
20066
  onClose: this.handleClose,
20070
- closable: canClose || canCancel
20067
+ closable: canClose || canCancel,
20068
+ canClose: canClose
20071
20069
  }), description && /*#__PURE__*/_react.default.createElement("div", {
20072
20070
  className: `${baseClassName}__description`
20073
20071
  }, description), /*#__PURE__*/_react.default.createElement(_Progress.default, {
@@ -22623,6 +22621,212 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
22623
22621
 
22624
22622
  /***/ }),
22625
22623
 
22624
+ /***/ "./components/Skeleton/Skeleton.tsx":
22625
+ /*!******************************************!*\
22626
+ !*** ./components/Skeleton/Skeleton.tsx ***!
22627
+ \******************************************/
22628
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
22629
+
22630
+ "use strict";
22631
+
22632
+
22633
+ Object.defineProperty(exports, "__esModule", ({
22634
+ value: true
22635
+ }));
22636
+ exports["default"] = void 0;
22637
+
22638
+ var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
22639
+
22640
+ var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "../node_modules/classnames/index.js"));
22641
+
22642
+ var _utils = __webpack_require__(/*! ../utils */ "./components/utils.tsx");
22643
+
22644
+ var _constants = __webpack_require__(/*! ../../constants */ "./constants.js");
22645
+
22646
+ __webpack_require__(/*! ./Skeleton.less */ "./components/Skeleton/Skeleton.less");
22647
+
22648
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22649
+
22650
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
22651
+
22652
+ /**
22653
+ * `Skeleton` (or content-placeholder) is placeholder preview of content before the data gets loaded to reduce load-time frustration.
22654
+ * Skeleton is used for non-text components, images, media-objects, etc.
22655
+ * @since 3.28.0
22656
+ */
22657
+ const Skeleton = ({
22658
+ width,
22659
+ maxWidth,
22660
+ height,
22661
+ style,
22662
+ component: Tag = 'span',
22663
+ className,
22664
+ baseClassName = `${_constants.CLS_PREFIX}skeleton`,
22665
+ ...props
22666
+ }) => {
22667
+ const finalStyle = { ...style,
22668
+ width: (0, _utils.normalizeSize)(width),
22669
+ maxWidth: (0, _utils.normalizeSize)(maxWidth),
22670
+ height: (0, _utils.normalizeSize)(height)
22671
+ };
22672
+ return /*#__PURE__*/_react.default.createElement(Tag, _extends({
22673
+ className: (0, _classnames.default)(baseClassName, className),
22674
+ style: finalStyle
22675
+ }, props));
22676
+ };
22677
+
22678
+ var _default = Skeleton;
22679
+ exports["default"] = _default;
22680
+
22681
+ /***/ }),
22682
+
22683
+ /***/ "./components/Skeleton/SkeletonTabs.tsx":
22684
+ /*!**********************************************!*\
22685
+ !*** ./components/Skeleton/SkeletonTabs.tsx ***!
22686
+ \**********************************************/
22687
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
22688
+
22689
+ "use strict";
22690
+
22691
+
22692
+ Object.defineProperty(exports, "__esModule", ({
22693
+ value: true
22694
+ }));
22695
+ exports["default"] = void 0;
22696
+
22697
+ var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
22698
+
22699
+ var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "../node_modules/classnames/index.js"));
22700
+
22701
+ var _SkeletonText = _interopRequireDefault(__webpack_require__(/*! ./SkeletonText */ "./components/Skeleton/SkeletonText.tsx"));
22702
+
22703
+ var _constants = __webpack_require__(/*! ../../constants */ "./constants.js");
22704
+
22705
+ __webpack_require__(/*! ./SkeletonTabs.less */ "./components/Skeleton/SkeletonTabs.less");
22706
+
22707
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22708
+
22709
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
22710
+
22711
+ /**
22712
+ * Skeleton for tabs component
22713
+ * @since `3.28.0
22714
+ */
22715
+ const SkeletonTabs = ({
22716
+ count = 3,
22717
+ className,
22718
+ baseClassName = `${_constants.CLS_PREFIX}skeleton-tabs`,
22719
+ ...props
22720
+ }) => /*#__PURE__*/_react.default.createElement("div", _extends({
22721
+ className: (0, _classnames.default)(baseClassName, className)
22722
+ }, props), /*#__PURE__*/_react.default.createElement(_SkeletonText.default, {
22723
+ lineProps: {
22724
+ maxWidth: 100
22725
+ },
22726
+ lines: count
22727
+ }));
22728
+
22729
+ var _default = SkeletonTabs;
22730
+ exports["default"] = _default;
22731
+
22732
+ /***/ }),
22733
+
22734
+ /***/ "./components/Skeleton/SkeletonText.tsx":
22735
+ /*!**********************************************!*\
22736
+ !*** ./components/Skeleton/SkeletonText.tsx ***!
22737
+ \**********************************************/
22738
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
22739
+
22740
+ "use strict";
22741
+
22742
+
22743
+ Object.defineProperty(exports, "__esModule", ({
22744
+ value: true
22745
+ }));
22746
+ exports["default"] = void 0;
22747
+
22748
+ var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
22749
+
22750
+ var _classnames = _interopRequireDefault(__webpack_require__(/*! classnames */ "../node_modules/classnames/index.js"));
22751
+
22752
+ var _Skeleton = _interopRequireDefault(__webpack_require__(/*! ./Skeleton */ "./components/Skeleton/Skeleton.tsx"));
22753
+
22754
+ var _constants = __webpack_require__(/*! ../../constants */ "./constants.js");
22755
+
22756
+ __webpack_require__(/*! ./SkeletonText.less */ "./components/Skeleton/SkeletonText.less");
22757
+
22758
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22759
+
22760
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
22761
+
22762
+ /**
22763
+ * Skeleton for text-containing components. Is can be used inside Paragraph, as title, or single text
22764
+ * @since 3.28.0
22765
+ */
22766
+ const SkeletonText = ({
22767
+ lines = 3,
22768
+ component: Tag = 'span',
22769
+ className,
22770
+ baseClassName = `${_constants.CLS_PREFIX}skeleton-text`,
22771
+ lineProps = {},
22772
+ ...props
22773
+ }) => /*#__PURE__*/_react.default.createElement(Tag, _extends({
22774
+ className: (0, _classnames.default)(baseClassName, className)
22775
+ }, props), Array.from({
22776
+ length: lines
22777
+ }).map((_, key) => /*#__PURE__*/_react.default.createElement(_Skeleton.default // eslint-disable-next-line react/no-array-index-key
22778
+ , _extends({
22779
+ key: key
22780
+ }, lineProps, {
22781
+ className: (0, _classnames.default)(`${baseClassName}__line`, lineProps === null || lineProps === void 0 ? void 0 : lineProps.className)
22782
+ }))));
22783
+
22784
+ var _default = SkeletonText;
22785
+ exports["default"] = _default;
22786
+
22787
+ /***/ }),
22788
+
22789
+ /***/ "./components/Skeleton/index.tsx":
22790
+ /*!***************************************!*\
22791
+ !*** ./components/Skeleton/index.tsx ***!
22792
+ \***************************************/
22793
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
22794
+
22795
+ "use strict";
22796
+
22797
+
22798
+ Object.defineProperty(exports, "__esModule", ({
22799
+ value: true
22800
+ }));
22801
+ Object.defineProperty(exports, "SkeletonTabs", ({
22802
+ enumerable: true,
22803
+ get: function () {
22804
+ return _SkeletonTabs.default;
22805
+ }
22806
+ }));
22807
+ Object.defineProperty(exports, "SkeletonText", ({
22808
+ enumerable: true,
22809
+ get: function () {
22810
+ return _SkeletonText.default;
22811
+ }
22812
+ }));
22813
+ Object.defineProperty(exports, "default", ({
22814
+ enumerable: true,
22815
+ get: function () {
22816
+ return _Skeleton.default;
22817
+ }
22818
+ }));
22819
+
22820
+ var _Skeleton = _interopRequireDefault(__webpack_require__(/*! ./Skeleton */ "./components/Skeleton/Skeleton.tsx"));
22821
+
22822
+ var _SkeletonText = _interopRequireDefault(__webpack_require__(/*! ./SkeletonText */ "./components/Skeleton/SkeletonText.tsx"));
22823
+
22824
+ var _SkeletonTabs = _interopRequireDefault(__webpack_require__(/*! ./SkeletonTabs */ "./components/Skeleton/SkeletonTabs.tsx"));
22825
+
22826
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22827
+
22828
+ /***/ }),
22829
+
22626
22830
  /***/ "./components/Spinner/Spinner.tsx":
22627
22831
  /*!****************************************!*\
22628
22832
  !*** ./components/Spinner/Spinner.tsx ***!
@@ -28198,7 +28402,8 @@ var _exportNames = {
28198
28402
  Tooltip: true,
28199
28403
  Tour: true,
28200
28404
  Translate: true,
28201
- Link: true
28405
+ Link: true,
28406
+ Skeleton: true
28202
28407
  };
28203
28408
  Object.defineProperty(exports, "Action", ({
28204
28409
  enumerable: true,
@@ -28602,6 +28807,12 @@ Object.defineProperty(exports, "Select", ({
28602
28807
  return _Select.default;
28603
28808
  }
28604
28809
  }));
28810
+ Object.defineProperty(exports, "Skeleton", ({
28811
+ enumerable: true,
28812
+ get: function () {
28813
+ return _Skeleton.default;
28814
+ }
28815
+ }));
28605
28816
  Object.defineProperty(exports, "SplitButton", ({
28606
28817
  enumerable: true,
28607
28818
  get: function () {
@@ -28815,7 +29026,7 @@ var _FormField = _interopRequireDefault(__webpack_require__(/*! ./FormField */ "
28815
29026
 
28816
29027
  var _FormFieldCheckbox = _interopRequireDefault(__webpack_require__(/*! ./FormFieldCheckbox */ "./components/FormFieldCheckbox/index.js"));
28817
29028
 
28818
- var _FormFieldPassword = _interopRequireWildcard(__webpack_require__(/*! ./FormFieldPassword */ "./components/FormFieldPassword/index.js"));
29029
+ var _FormFieldPassword = _interopRequireWildcard(__webpack_require__(/*! ./FormFieldPassword */ "./components/FormFieldPassword/index.tsx"));
28819
29030
 
28820
29031
  Object.keys(_FormFieldPassword).forEach(function (key) {
28821
29032
  if (key === "default" || key === "__esModule") return;
@@ -29045,6 +29256,20 @@ var _Translate = _interopRequireDefault(__webpack_require__(/*! ./Translate */ "
29045
29256
 
29046
29257
  var _Link = _interopRequireDefault(__webpack_require__(/*! ./Link */ "./components/Link/index.tsx"));
29047
29258
 
29259
+ var _Skeleton = _interopRequireWildcard(__webpack_require__(/*! ./Skeleton */ "./components/Skeleton/index.tsx"));
29260
+
29261
+ Object.keys(_Skeleton).forEach(function (key) {
29262
+ if (key === "default" || key === "__esModule") return;
29263
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
29264
+ if (key in exports && exports[key] === _Skeleton[key]) return;
29265
+ Object.defineProperty(exports, key, {
29266
+ enumerable: true,
29267
+ get: function () {
29268
+ return _Skeleton[key];
29269
+ }
29270
+ });
29271
+ });
29272
+
29048
29273
  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); }
29049
29274
 
29050
29275
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -29090,7 +29315,7 @@ exports.intentIconMap = intentIconMap;
29090
29315
  Object.defineProperty(exports, "__esModule", ({
29091
29316
  value: true
29092
29317
  }));
29093
- exports.wrapFunction = exports.scrollIntoView = exports.safeInvoke = exports.mergeRefs = exports.isClickable = exports.createProxyProps = exports.createFocusManager = exports.EventEmitter = void 0;
29318
+ exports.wrapFunction = exports.scrollIntoView = exports.safeInvoke = exports.normalizeSize = exports.mergeRefs = exports.isClickable = exports.createProxyProps = exports.createFocusManager = exports.EventEmitter = void 0;
29094
29319
 
29095
29320
  var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
29096
29321
 
@@ -29345,6 +29570,10 @@ const mergeRefs = (...refs) => value => {
29345
29570
 
29346
29571
  exports.mergeRefs = mergeRefs;
29347
29572
 
29573
+ const normalizeSize = value => String(Number(value)) === String(value) ? `${value}px` : value;
29574
+
29575
+ exports.normalizeSize = normalizeSize;
29576
+
29348
29577
  /***/ }),
29349
29578
 
29350
29579
  /***/ "./constants.js":
@@ -81259,6 +81488,45 @@ __webpack_require__.r(__webpack_exports__);
81259
81488
  // extracted by mini-css-extract-plugin
81260
81489
 
81261
81490
 
81491
+ /***/ }),
81492
+
81493
+ /***/ "./components/Skeleton/Skeleton.less":
81494
+ /*!*******************************************!*\
81495
+ !*** ./components/Skeleton/Skeleton.less ***!
81496
+ \*******************************************/
81497
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
81498
+
81499
+ "use strict";
81500
+ __webpack_require__.r(__webpack_exports__);
81501
+ // extracted by mini-css-extract-plugin
81502
+
81503
+
81504
+ /***/ }),
81505
+
81506
+ /***/ "./components/Skeleton/SkeletonTabs.less":
81507
+ /*!***********************************************!*\
81508
+ !*** ./components/Skeleton/SkeletonTabs.less ***!
81509
+ \***********************************************/
81510
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
81511
+
81512
+ "use strict";
81513
+ __webpack_require__.r(__webpack_exports__);
81514
+ // extracted by mini-css-extract-plugin
81515
+
81516
+
81517
+ /***/ }),
81518
+
81519
+ /***/ "./components/Skeleton/SkeletonText.less":
81520
+ /*!***********************************************!*\
81521
+ !*** ./components/Skeleton/SkeletonText.less ***!
81522
+ \***********************************************/
81523
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
81524
+
81525
+ "use strict";
81526
+ __webpack_require__.r(__webpack_exports__);
81527
+ // extracted by mini-css-extract-plugin
81528
+
81529
+
81262
81530
  /***/ }),
81263
81531
 
81264
81532
  /***/ "./components/Spinner/Spinner.less":
@@ -92159,7 +92427,7 @@ module.exports = __webpack_require__.p + "images/no-image.svg?2f8dd4286fb9a8bd9a
92159
92427
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
92160
92428
 
92161
92429
  "use strict";
92162
- module.exports = __webpack_require__.p + "images/symbols.svg?147027a4906d0c1e2b29";
92430
+ module.exports = __webpack_require__.p + "images/symbols.svg?6bd5879cb9a032639fb3";
92163
92431
 
92164
92432
  /***/ }),
92165
92433
 
@@ -92292,7 +92560,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
92292
92560
  /***/ ((module) => {
92293
92561
 
92294
92562
  "use strict";
92295
- module.exports = JSON.parse('{"name":"@plesk/ui-library","version":"3.27.2","description":"Plesk UI Library","main":"index.js","module":"esm/index.js","types":"./types/src","sideEffects":["cjs/index.js","esm/index.js","dist/*.js","dist/*.css"],"scripts":{"pretest":"yarn lint","test":"jest --ci --coverage --coverageReporters text-summary","test:vr":"cross-env VISUAL_REGRESSION=true jest","build":"yarn build:types && yarn build:umd && yarn build:esm && yarn build:cjs","build:umd":"webpack --config ./configs/build.config.js","build:esm":"cross-env NODE_ENV=esm node ./scripts/build.js","build:cjs":"cross-env NODE_ENV=cjs node ./scripts/build.js","build:types":"rimraf ./types && tsc --project ./configs/types-generator.config.json","create-svg-sprite":"node ./scripts/create-svg-sprite.js","lint":"yarn lint:es && yarn lint:types && yarn lint:style","lint:es":"eslint --ext js,md,tsx src configs scripts styleguidist","lint:types":"tsc","lint:style":"stylelint \\"src/**/*.less\\"","styleguide":"styleguidist server --config ./configs/styleguide.config.js","styleguide:build":"styleguidist build --config ./configs/styleguide.config.js","create-component":"node scripts/create-component.js","prepublishOnly":"yarn install && yarn test && yarn build && yarn styleguide:build","storybook":"webpack serve --config ./configs/storybook.config.js","postinstall":"node ./scripts/postinstall.js"},"files":["esm","cjs","dist","styleguide","types","/scripts/postinstall.js","/index.js"],"dependencies":{"@babel/runtime":"^7.15.4","@plesk/react-movable":"^2.6.0","@types/classnames":"2.2.7","@types/react":"16.8.13","@types/react-dom":"16.8.4","@types/react-measure":"2.0.8","@types/react-transition-group":"^4.4.4","@types/svg4everybody":"2.1.0","classnames":"^2.3.1","codemirror":"5.48.0","marked":"0.3.19","memoize-one":"^5.1.1","popper.js":"1.14.3","prop-types":"^15.7.2","react-measure":"2.3.0","react-sortable-hoc":"0.6.8","react-transition-group":"^4.4.2","scroll-into-view-if-needed":"^2.2.20","svg4everybody":"2.1.9","use-focus-visible":"^1.0.0"},"devDependencies":{"@babel/core":"^7.15.8","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-runtime":"^7.15.8","@babel/preset-env":"^7.15.8","@babel/preset-react":"^7.14.5","@babel/preset-typescript":"^7.15.0","@plesk/eslint-config":"^1.1.0","@plesk/stylelint-config":"^1.0.0","@types/buble":"^0.19.2","@types/cheerio":"^0.22.30","@types/doctrine":"^0.0.3","@types/enzyme":"^3.10.9","@types/jest":"^23.3.12","@types/webpack-dev-server":"^3.10.1","@typescript-eslint/eslint-plugin":"^2.7.0","@typescript-eslint/parser":"^2.7.0","autoprefixer":"^10.3.7","babel-loader":"^8.2.3","babel-plugin-dynamic-import-node":"^2.3.3","babel-plugin-transform-require-ignore":"^0.1.1","clean-webpack-plugin":"^4.0.0","cross-env":"^5.2.0","css-loader":"^6.4.0","css-minimizer-webpack-plugin":"^3.1.1","enzyme":"^3.11.0","enzyme-adapter-react-16":"^1.15.6","enzyme-to-json":"^3.6.2","eslint-config-prettier":"^6.11.0","eslint-plugin-markdown":"^1.0.2","eslint-plugin-prettier":"^3.1.3","expect-puppeteer":"^4.4.0","fs-extra":"^7.0.0","html-webpack-plugin":"^5.5.0","inquirer":"^3.2.1","jest":"^24.9.0","jest-dev-server":"^4.4.0","jest-image-snapshot":"^4.0.2","less":"^4.1.2","less-loader":"^10.2.0","mini-css-extract-plugin":"^2.4.3","postcss":"^8.4.6","postcss-less":"^6.0.0","postcss-loader":"^6.2.1","postcss-logical":"^5.0.3","prettier":"^2.0.5","puppeteer-core":"^5.2.1","react":"^16.8.6","react-dom":"^16.8.6","react-styleguidist":"^11.1.7","react-test-renderer":"^16.8.6","rimraf":"^3.0.1","rtlcss":"^3.4.0","style-loader":"^3.3.1","stylelint":"^14.3.0","stylelint-config-prettier":"^9.0.3","stylelint-declaration-block-no-ignored-properties":"^2.5.0","stylelint-no-unsupported-browser-features":"^5.0.2","stylelint-prettier":"^2.0.0","stylelint-use-logical-spec":"^3.2.2","svg-mixer":"^2.3.14","terser-webpack-plugin":"^5.2.4","typescript":"^3.7.2","webpack":"^5.60.0","webpack-cli":"^4.9.1"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"resolutions":{"@babel/types":"^7.15.6","@types/node":"^12.12.8","**/caniuse-lite":"1.0.30001307"},"browserslist":["last 2 versions",">1%","not op_mini all","not dead","not ie 11"],"author":"Plesk Developers <plesk-dev-leads@plesk.com> (https://www.plesk.com/)","license":"Apache-2.0"}');
92563
+ module.exports = JSON.parse('{"name":"@plesk/ui-library","version":"3.28.0","description":"Plesk UI Library","main":"index.js","module":"esm/index.js","types":"./types/src","sideEffects":["cjs/index.js","esm/index.js","dist/*.js","dist/*.css"],"scripts":{"pretest":"yarn lint","test":"jest --ci --coverage --coverageReporters text-summary","test:vr":"cross-env VISUAL_REGRESSION=true jest","build":"yarn build:types && yarn build:umd && yarn build:esm && yarn build:cjs","build:umd":"webpack --config ./configs/build.config.js","build:esm":"cross-env NODE_ENV=esm node ./scripts/build.js","build:cjs":"cross-env NODE_ENV=cjs node ./scripts/build.js","build:types":"rimraf ./types && tsc --project ./configs/types-generator.config.json","create-svg-sprite":"node ./scripts/create-svg-sprite.js","lint":"yarn lint:es && yarn lint:types && yarn lint:style","lint:es":"eslint --ext js,md,tsx src configs scripts styleguidist","lint:types":"tsc","lint:style":"stylelint \\"src/**/*.less\\"","styleguide":"styleguidist server --config ./configs/styleguide.config.js","styleguide:build":"styleguidist build --config ./configs/styleguide.config.js","create-component":"node scripts/create-component.js","prepublishOnly":"yarn install && yarn test && yarn build && yarn styleguide:build","storybook":"webpack serve --config ./configs/storybook.config.js --disable-host-check","postinstall":"node ./scripts/postinstall.js"},"files":["esm","cjs","dist","styleguide","types","/scripts/postinstall.js","/index.js"],"dependencies":{"@babel/runtime":"^7.15.4","@plesk/react-movable":"^2.6.0","@types/classnames":"2.2.7","@types/react":"16.8.13","@types/react-dom":"16.8.4","@types/react-measure":"2.0.8","@types/react-transition-group":"^4.4.4","@types/svg4everybody":"2.1.0","classnames":"^2.3.1","codemirror":"5.48.0","marked":"0.3.19","memoize-one":"^5.1.1","popper.js":"1.14.3","prop-types":"^15.7.2","react-measure":"2.3.0","react-sortable-hoc":"0.6.8","react-transition-group":"^4.4.2","scroll-into-view-if-needed":"^2.2.20","svg4everybody":"2.1.9","use-focus-visible":"^1.0.0"},"devDependencies":{"@babel/core":"^7.15.8","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-runtime":"^7.15.8","@babel/preset-env":"^7.15.8","@babel/preset-react":"^7.14.5","@babel/preset-typescript":"^7.15.0","@plesk/eslint-config":"^1.1.0","@plesk/stylelint-config":"^1.0.0","@types/buble":"^0.19.2","@types/cheerio":"^0.22.30","@types/doctrine":"^0.0.3","@types/enzyme":"^3.10.9","@types/jest":"^23.3.12","@types/webpack-dev-server":"^3.10.1","@typescript-eslint/eslint-plugin":"^2.7.0","@typescript-eslint/parser":"^2.7.0","autoprefixer":"^10.3.7","babel-loader":"^8.2.3","babel-plugin-dynamic-import-node":"^2.3.3","babel-plugin-transform-require-ignore":"^0.1.1","clean-webpack-plugin":"^4.0.0","cross-env":"^5.2.0","css-loader":"^6.4.0","css-minimizer-webpack-plugin":"^3.1.1","enzyme":"^3.11.0","enzyme-adapter-react-16":"^1.15.6","enzyme-to-json":"^3.6.2","eslint-config-prettier":"^6.11.0","eslint-plugin-markdown":"^1.0.2","eslint-plugin-prettier":"^3.1.3","expect-puppeteer":"^4.4.0","fs-extra":"^7.0.0","html-webpack-plugin":"^5.5.0","inquirer":"^3.2.1","jest":"^24.9.0","jest-dev-server":"^4.4.0","jest-image-snapshot":"^4.0.2","less":"^4.1.2","less-loader":"^10.2.0","mini-css-extract-plugin":"^2.4.3","postcss":"^8.4.6","postcss-less":"^6.0.0","postcss-loader":"^6.2.1","postcss-logical":"^5.0.3","prettier":"^2.0.5","puppeteer-core":"13.1.3","react":"^16.8.6","react-dom":"^16.8.6","react-styleguidist":"^11.1.7","react-test-renderer":"^16.8.6","rimraf":"^3.0.1","rtlcss":"^3.4.0","style-loader":"^3.3.1","stylelint":"^14.3.0","stylelint-config-prettier":"^9.0.3","stylelint-declaration-block-no-ignored-properties":"^2.5.0","stylelint-no-unsupported-browser-features":"^5.0.2","stylelint-prettier":"^2.0.0","stylelint-use-logical-spec":"^3.2.2","svg-mixer":"^2.3.14","terser-webpack-plugin":"^5.2.4","typescript":"^3.7.2","webpack":"^5.60.0","webpack-cli":"^4.9.1"},"peerDependencies":{"react":"^16.8.6","react-dom":"^16.8.6"},"resolutions":{"@babel/types":"^7.15.6","@types/node":"^12.12.8","**/caniuse-lite":"1.0.30001307"},"browserslist":["last 2 versions",">1%","not op_mini all","not dead","not ie 11"],"author":"Plesk Developers <plesk-dev-leads@plesk.com> (https://www.plesk.com/)","license":"Apache-2.0"}');
92296
92564
 
92297
92565
  /***/ }),
92298
92566