UNPKG

@tarojs/components

Version:
144 lines (139 loc) 4.76 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); const index = require('./index-a7069008.js'); var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var _Form_value; const Form = class { constructor(hostRef) { index.registerInstance(this, hostRef); this.onSubmit = index.createEvent(this, "submit", 7); _Form_value.set(this, {}); } onButtonSubmit(e) { e.stopPropagation(); __classPrivateFieldSet(this, _Form_value, this.getFormValue(), "f"); this.onSubmit.emit({ value: __classPrivateFieldGet(this, _Form_value, "f") }); } onButtonReset(e) { e.stopPropagation(); this.form.reset(); } componentDidLoad() { __classPrivateFieldSet(this, _Form_value, this.getFormValue(), "f"); Object.defineProperty(this.el, 'value', { get: () => __classPrivateFieldGet(this, _Form_value, "f"), configurable: true }); } componentDidRender() { if (!this.originalAppendChild) { this.originalAppendChild = this.el.appendChild; this.originalInsertBefore = this.el.insertBefore; this.originalReplaceChild = this.el.replaceChild; this.originalRemoveChild = this.el.removeChild; } if (!this.form) { this.el.appendChild = this.originalAppendChild; this.el.insertBefore = this.originalInsertBefore; this.el.replaceChild = this.originalReplaceChild; this.el.removeChild = this.originalRemoveChild; return; } this.el.appendChild = (newChild) => { return this.form.appendChild(newChild); }; this.el.insertBefore = (newChild, refChild) => { return this.form.insertBefore(newChild, refChild); }; this.el.replaceChild = (newChild, oldChild) => { return this.form.replaceChild(newChild, oldChild); }; this.el.removeChild = (oldChild) => { return this.form.removeChild(oldChild); }; } getFormValue() { const el = this.el; const elements = []; const tagElements = el.getElementsByTagName('input'); for (let j = 0; j < tagElements.length; j++) { elements.push(tagElements[j]); } const formItem = {}; const hash = {}; elements.forEach(item => { if (typeof item.name !== 'string') return; if (item.className.indexOf('weui-switch') !== -1) { formItem[item.name] = item.checked; return; } if (item.type === 'radio') { if (item.checked) { hash[item.name] = true; formItem[item.name] = item.value; } else { if (!hash[item.name]) { formItem[item.name] = ''; } } return; } if (item.type === 'checkbox') { if (item.checked) { if (hash[item.name]) { formItem[item.name].push(item.value); } else { hash[item.name] = true; formItem[item.name] = [item.value]; } } else { if (!hash[item.name]) { formItem[item.name] = []; } } return; } formItem[item.name] = item.value; }); const textareaElements = el.getElementsByTagName('textarea'); const textareaEleArr = []; for (let i = 0; i < textareaElements.length; i++) { textareaEleArr.push(textareaElements[i]); } textareaEleArr.forEach(v => { if (typeof v.name !== 'string') return; formItem[v.name] = v.value; }); return formItem; } render() { return (index.h("form", { ref: dom => { this.form = dom; } }, index.h("slot", null))); } get el() { return index.getElement(this); } }; _Form_value = new WeakMap(); exports.taro_form_core = Form;