@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
67 lines (63 loc) • 2.29 kB
JavaScript
"use client";
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
const require_ref = require('../../utils/ref.cjs');
const require_utils_index = require('../../utils/index.cjs');
const require_hooks_use_controllable_state_index = require('../../hooks/use-controllable-state/index.cjs');
const require_i18n_provider = require('../../providers/i18n-provider/i18n-provider.cjs');
const require_use_field_props = require('../field/use-field-props.cjs');
let react = require("react");
react = require_rolldown_runtime.__toESM(react);
//#region src/components/password-input/use-password-input.tsx
const usePasswordInput = (props = {}) => {
const { props: { defaultVisible, disabled, visible: visibleProp, onVisibleChange,...rest }, ariaProps, dataProps, eventProps } = require_use_field_props.useFieldProps(props);
const [visible, setVisible] = require_hooks_use_controllable_state_index.useControllableState({
defaultValue: defaultVisible,
value: visibleProp,
onChange: onVisibleChange
});
const { t } = require_i18n_provider.useI18n("passwordInput");
const onChangeVisibility = (0, react.useCallback)((ev) => {
if (disabled || ev.button !== 0) return;
ev.preventDefault();
setVisible((prev) => !prev);
}, [disabled, setVisible]);
const getInputProps = (0, react.useCallback)(({ ref,...props$1 } = {}) => ({
type: visible ? "text" : "password",
disabled,
...ariaProps,
...dataProps,
...rest,
...props$1,
ref: require_ref.mergeRefs(ref, rest.ref),
onBlur: (0, require_utils_index.utils_exports.handlerAll)(eventProps.onBlur, props$1.onBlur),
onFocus: (0, require_utils_index.utils_exports.handlerAll)(eventProps.onFocus, props$1.onFocus)
}), [
visible,
rest,
disabled,
dataProps,
eventProps,
ariaProps
]);
return {
setVisible,
visible,
getButtonProps: (0, react.useCallback)((props$1 = {}) => ({
type: "button",
"aria-label": t("Toggle password visibility"),
disabled,
...dataProps,
...props$1,
onClick: (0, require_utils_index.utils_exports.handlerAll)(props$1.onClick, onChangeVisibility)
}), [
onChangeVisibility,
dataProps,
disabled,
t
]),
getInputProps
};
};
//#endregion
exports.usePasswordInput = usePasswordInput;
//# sourceMappingURL=use-password-input.cjs.map