Password.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _vue = require("vue");
  8. var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
  9. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  10. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  11. var _classNames2 = _interopRequireDefault(require("../_util/classNames"));
  12. var _propsUtil = require("../_util/props-util");
  13. var _vnode = require("../_util/vnode");
  14. var _Input = _interopRequireDefault(require("./Input"));
  15. var _EyeOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/EyeOutlined"));
  16. var _EyeInvisibleOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/EyeInvisibleOutlined"));
  17. var _inputProps = _interopRequireDefault(require("./inputProps"));
  18. var _useConfigInject2 = _interopRequireDefault(require("../_util/hooks/useConfigInject"));
  19. var _omit = _interopRequireDefault(require("../_util/omit"));
  20. var _excluded = ["size", "visibilityToggle"];
  21. var ActionMap = {
  22. click: 'onClick',
  23. hover: 'onMouseover'
  24. };
  25. var defaultIconRender = function defaultIconRender(visible) {
  26. return visible ? (0, _vue.createVNode)(_EyeOutlined.default, null, null) : (0, _vue.createVNode)(_EyeInvisibleOutlined.default, null, null);
  27. };
  28. var _default = (0, _vue.defineComponent)({
  29. compatConfig: {
  30. MODE: 3
  31. },
  32. name: 'AInputPassword',
  33. inheritAttrs: false,
  34. props: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _inputProps.default)()), {}, {
  35. prefixCls: String,
  36. inputPrefixCls: String,
  37. action: {
  38. type: String,
  39. default: 'click'
  40. },
  41. visibilityToggle: {
  42. type: Boolean,
  43. default: true
  44. },
  45. iconRender: Function
  46. }),
  47. setup: function setup(props, _ref) {
  48. var slots = _ref.slots,
  49. attrs = _ref.attrs,
  50. expose = _ref.expose;
  51. var visible = (0, _vue.ref)(false);
  52. var onVisibleChange = function onVisibleChange() {
  53. var disabled = props.disabled;
  54. if (disabled) {
  55. return;
  56. }
  57. visible.value = !visible.value;
  58. };
  59. var inputRef = (0, _vue.ref)();
  60. var focus = function focus() {
  61. var _inputRef$value;
  62. (_inputRef$value = inputRef.value) === null || _inputRef$value === void 0 ? void 0 : _inputRef$value.focus();
  63. };
  64. var blur = function blur() {
  65. var _inputRef$value2;
  66. (_inputRef$value2 = inputRef.value) === null || _inputRef$value2 === void 0 ? void 0 : _inputRef$value2.blur();
  67. };
  68. expose({
  69. focus: focus,
  70. blur: blur
  71. });
  72. var getIcon = function getIcon(prefixCls) {
  73. var _iconProps;
  74. var action = props.action,
  75. _props$iconRender = props.iconRender,
  76. iconRender = _props$iconRender === void 0 ? slots.iconRender || defaultIconRender : _props$iconRender;
  77. var iconTrigger = ActionMap[action] || '';
  78. var icon = iconRender(visible.value);
  79. var iconProps = (_iconProps = {}, (0, _defineProperty2.default)(_iconProps, iconTrigger, onVisibleChange), (0, _defineProperty2.default)(_iconProps, "class", "".concat(prefixCls, "-icon")), (0, _defineProperty2.default)(_iconProps, "key", 'passwordIcon'), (0, _defineProperty2.default)(_iconProps, "onMousedown", function onMousedown(e) {
  80. // Prevent focused state lost
  81. // https://github.com/ant-design/ant-design/issues/15173
  82. e.preventDefault();
  83. }), (0, _defineProperty2.default)(_iconProps, "onMouseup", function onMouseup(e) {
  84. // Prevent caret position change
  85. // https://github.com/ant-design/ant-design/issues/23524
  86. e.preventDefault();
  87. }), _iconProps);
  88. return (0, _vnode.cloneElement)((0, _propsUtil.isValidElement)(icon) ? icon : (0, _vue.createVNode)("span", null, [icon]), iconProps);
  89. };
  90. var _useConfigInject = (0, _useConfigInject2.default)('input-password', props),
  91. prefixCls = _useConfigInject.prefixCls,
  92. getPrefixCls = _useConfigInject.getPrefixCls;
  93. var inputPrefixCls = (0, _vue.computed)(function () {
  94. return getPrefixCls('input', props.inputPrefixCls);
  95. });
  96. var renderPassword = function renderPassword() {
  97. var size = props.size,
  98. visibilityToggle = props.visibilityToggle,
  99. restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
  100. var suffixIcon = visibilityToggle && getIcon(prefixCls.value);
  101. var inputClassName = (0, _classNames2.default)(prefixCls.value, attrs.class, (0, _defineProperty2.default)({}, "".concat(prefixCls.value, "-").concat(size), !!size));
  102. var omittedProps = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _omit.default)(restProps, ['suffix', 'iconRender', 'action'])), attrs), {}, {
  103. type: visible.value ? 'text' : 'password',
  104. class: inputClassName,
  105. prefixCls: inputPrefixCls.value,
  106. suffix: suffixIcon
  107. });
  108. if (size) {
  109. omittedProps.size = size;
  110. }
  111. return (0, _vue.createVNode)(_Input.default, (0, _objectSpread2.default)({
  112. "ref": inputRef
  113. }, omittedProps), slots);
  114. };
  115. return function () {
  116. return renderPassword();
  117. };
  118. }
  119. });
  120. exports.default = _default;