You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.0 KiB
84 lines
2.0 KiB
import _mergeJSXProps from "@vue/babel-helper-vue-jsx-merge-props";
|
|
// Utils
|
|
import { createNamespace, addUnit } from '../utils';
|
|
import { emit, inherit } from '../utils/functional';
|
|
import { BORDER_LEFT, BORDER_SURROUND } from '../utils/constant'; // Types
|
|
|
|
var _createNamespace = createNamespace('password-input'),
|
|
createComponent = _createNamespace[0],
|
|
bem = _createNamespace[1];
|
|
|
|
function PasswordInput(h, props, slots, ctx) {
|
|
var _ref2;
|
|
|
|
var mask = props.mask,
|
|
value = props.value,
|
|
length = props.length,
|
|
gutter = props.gutter,
|
|
focused = props.focused,
|
|
errorInfo = props.errorInfo;
|
|
var info = errorInfo || props.info;
|
|
var Points = [];
|
|
|
|
for (var i = 0; i < length; i++) {
|
|
var _ref;
|
|
|
|
var _char = value[i];
|
|
var showBorder = i !== 0 && !gutter;
|
|
var showCursor = focused && i === value.length;
|
|
var style = void 0;
|
|
|
|
if (i !== 0 && gutter) {
|
|
style = {
|
|
marginLeft: addUnit(gutter)
|
|
};
|
|
}
|
|
|
|
Points.push(h("li", {
|
|
"class": [(_ref = {}, _ref[BORDER_LEFT] = showBorder, _ref), bem('item', {
|
|
focus: showCursor
|
|
})],
|
|
"style": style
|
|
}, [mask ? h("i", {
|
|
"style": {
|
|
visibility: _char ? 'visible' : 'hidden'
|
|
}
|
|
}) : _char, showCursor && h("div", {
|
|
"class": bem('cursor')
|
|
})]));
|
|
}
|
|
|
|
return h("div", {
|
|
"class": bem()
|
|
}, [h("ul", _mergeJSXProps([{
|
|
"class": [bem('security'), (_ref2 = {}, _ref2[BORDER_SURROUND] = !gutter, _ref2)],
|
|
"on": {
|
|
"touchstart": function touchstart(event) {
|
|
event.stopPropagation();
|
|
emit(ctx, 'focus', event);
|
|
}
|
|
}
|
|
}, inherit(ctx, true)]), [Points]), info && h("div", {
|
|
"class": bem(errorInfo ? 'error-info' : 'info')
|
|
}, [info])]);
|
|
}
|
|
|
|
PasswordInput.props = {
|
|
info: String,
|
|
gutter: [Number, String],
|
|
focused: Boolean,
|
|
errorInfo: String,
|
|
mask: {
|
|
type: Boolean,
|
|
default: true
|
|
},
|
|
value: {
|
|
type: String,
|
|
default: ''
|
|
},
|
|
length: {
|
|
type: [Number, String],
|
|
default: 6
|
|
}
|
|
};
|
|
export default createComponent(PasswordInput); |