"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _utils = require("../utils"); var _mobile = require("../utils/validate/mobile"); var _cell = _interopRequireDefault(require("../cell")); var _field = _interopRequireDefault(require("../field")); var _button = _interopRequireDefault(require("../button")); var _dialog = _interopRequireDefault(require("../dialog")); var _switch = _interopRequireDefault(require("../switch")); // Utils // Components var _createNamespace = (0, _utils.createNamespace)('contact-edit'), createComponent = _createNamespace[0], bem = _createNamespace[1], t = _createNamespace[2]; var defaultContact = { tel: '', name: '' }; var _default2 = createComponent({ props: { isEdit: Boolean, isSaving: Boolean, isDeleting: Boolean, showSetDefault: Boolean, setDefaultLabel: String, contactInfo: { type: Object, default: function _default() { return (0, _extends2.default)({}, defaultContact); } }, telValidator: { type: Function, default: _mobile.isMobile } }, data: function data() { return { data: (0, _extends2.default)({}, defaultContact, this.contactInfo), errorInfo: { name: '', tel: '' } }; }, watch: { contactInfo: function contactInfo(val) { this.data = (0, _extends2.default)({}, defaultContact, val); } }, methods: { onFocus: function onFocus(key) { this.errorInfo[key] = ''; }, getErrorMessageByKey: function getErrorMessageByKey(key) { var value = this.data[key].trim(); switch (key) { case 'name': return value ? '' : t('nameInvalid'); case 'tel': return this.telValidator(value) ? '' : t('telInvalid'); } }, onSave: function onSave() { var _this = this; var isValid = ['name', 'tel'].every(function (item) { var msg = _this.getErrorMessageByKey(item); if (msg) { _this.errorInfo[item] = msg; } return !msg; }); if (isValid && !this.isSaving) { this.$emit('save', this.data); } }, onDelete: function onDelete() { var _this2 = this; _dialog.default.confirm({ title: t('confirmDelete') }).then(function () { _this2.$emit('delete', _this2.data); }); } }, render: function render() { var _this3 = this; var h = arguments[0]; var data = this.data, errorInfo = this.errorInfo; var onFocus = function onFocus(name) { return function () { return _this3.onFocus(name); }; }; return h("div", { "class": bem() }, [h("div", { "class": bem('fields') }, [h(_field.default, { "attrs": { "clearable": true, "maxlength": "30", "label": t('name'), "placeholder": t('nameEmpty'), "errorMessage": errorInfo.name }, "on": { "focus": onFocus('name') }, "model": { value: data.name, callback: function callback($$v) { _this3.$set(data, "name", $$v); } } }), h(_field.default, { "attrs": { "clearable": true, "type": "tel", "label": t('tel'), "placeholder": t('telEmpty'), "errorMessage": errorInfo.tel }, "on": { "focus": onFocus('tel') }, "model": { value: data.tel, callback: function callback($$v) { _this3.$set(data, "tel", $$v); } } })]), this.showSetDefault && h(_cell.default, { "attrs": { "title": this.setDefaultLabel, "border": false }, "class": bem('switch-cell') }, [h(_switch.default, { "attrs": { "size": 24 }, "slot": "right-icon", "on": { "change": function change(event) { _this3.$emit('change-default', event); } }, "model": { value: data.isDefault, callback: function callback($$v) { _this3.$set(data, "isDefault", $$v); } } })]), h("div", { "class": bem('buttons') }, [h(_button.default, { "attrs": { "block": true, "round": true, "type": "danger", "text": t('save'), "loading": this.isSaving }, "on": { "click": this.onSave } }), this.isEdit && h(_button.default, { "attrs": { "block": true, "round": true, "text": t('delete'), "loading": this.isDeleting }, "on": { "click": this.onDelete } })])]); } }); exports.default = _default2;