@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
115 lines (112 loc) • 3.41 kB
JavaScript
import React from 'react';
import { useBooleanToggle } from '@mantine/hooks';
import { ActionIcon } from '../ActionIcon/ActionIcon.js';
import { TextInput } from '../TextInput/TextInput.js';
import { PasswordToggleIcon } from './PasswordToggleIcon.js';
import { getSizeValue } from '../../theme/utils/get-size-value/get-size-value.js';
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
const buttonSizes = {
xs: 22,
sm: 28,
md: 26,
lg: 32,
xl: 40
};
const iconSizes = {
xs: 12,
sm: 15,
md: 17,
lg: 19,
xl: 21
};
const rightSectionWidth = {
xs: 28,
sm: 34,
md: 34,
lg: 44,
xl: 54
};
function PasswordInput(_a) {
var _b = _a, {
radius,
disabled,
hidePasswordLabel,
showPasswordLabel,
themeOverride,
size = "sm",
toggleTabIndex = -1
} = _b, others = __objRest(_b, [
"radius",
"disabled",
"hidePasswordLabel",
"showPasswordLabel",
"themeOverride",
"size",
"toggleTabIndex"
]);
const [reveal, toggle] = useBooleanToggle(false);
const rightSection = /* @__PURE__ */ React.createElement(ActionIcon, {
onMouseDown: (event) => {
event.preventDefault();
toggle();
},
onKeyDown: (event) => {
if (event.nativeEvent.code === "Space") {
event.preventDefault();
toggle();
}
},
tabIndex: toggleTabIndex,
themeOverride,
title: reveal ? hidePasswordLabel : showPasswordLabel,
"aria-label": reveal ? hidePasswordLabel : showPasswordLabel,
radius,
size: getSizeValue({ size, sizes: buttonSizes })
}, /* @__PURE__ */ React.createElement(PasswordToggleIcon, {
reveal,
size: getSizeValue({ size, sizes: iconSizes })
}));
return /* @__PURE__ */ React.createElement(TextInput, __spreadProps(__spreadValues({}, others), {
disabled,
themeOverride,
type: reveal ? "text" : "password",
rightSection: disabled ? null : rightSection,
rightSectionWidth: getSizeValue({ size, sizes: rightSectionWidth }),
size,
radius,
__staticSelector: "password-input"
}));
}
PasswordInput.displayName = "@mantine/core/PasswordInput";
export { PasswordInput };
//# sourceMappingURL=PasswordInput.js.map