Skip to content

Commit 1a7c8a0

Browse files
committed
0.4.0
1 parent fdda2bd commit 1a7c8a0

File tree

1 file changed

+66
-73
lines changed

1 file changed

+66
-73
lines changed

lib/json-editor.min.js

Lines changed: 66 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -483,10 +483,15 @@ module.exports = function (it, tag, stat) {
483483

484484
"use strict";
485485
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
486+
/* harmony export (immutable) */ __webpack_exports__["deepClone"] = deepClone;
486487
/* harmony export (immutable) */ __webpack_exports__["getExtendibleLeaf"] = getExtendibleLeaf;
487488
/* harmony export (immutable) */ __webpack_exports__["getChild"] = getChild;
488489
/* harmony export (immutable) */ __webpack_exports__["initChild"] = initChild;
489490
/* harmony export (immutable) */ __webpack_exports__["setVal"] = setVal;
491+
function deepClone(obj) {
492+
return JSON.parse(JSON.stringify(obj));
493+
}
494+
490495
function getExtendibleLeaf(obj, n, initIt) {
491496
const v = obj[n];
492497
if (v && typeof v === 'object' && !Array.isArray(v)) {
@@ -700,13 +705,10 @@ module.exports = function normalizeComponent (
700705
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_toConsumableArray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_toConsumableArray__);
701706
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_core_js_object_keys__ = __webpack_require__(62);
702707
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_core_js_object_keys___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_core_js_object_keys__);
703-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_core_js_json_stringify__ = __webpack_require__(66);
704-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_core_js_json_stringify___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_core_js_json_stringify__);
705-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_extends__ = __webpack_require__(68);
706-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_extends__);
707-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__parser__ = __webpack_require__(75);
708-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils__ = __webpack_require__(28);
709-
708+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends__ = __webpack_require__(66);
709+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends__);
710+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__parser__ = __webpack_require__(73);
711+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils__ = __webpack_require__(28);
710712

711713

712714

@@ -728,7 +730,7 @@ var components = {
728730
option: { component: 'option', option: option },
729731
button: {
730732
component: 'button',
731-
option: __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_extends___default()({}, option, {
733+
option: __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, option, {
732734
type: 'submit',
733735
label: 'Submit'
734736
})
@@ -740,6 +742,13 @@ var components = {
740742
};
741743
var defaultInput = { component: 'input', option: option };
742744
var defaultGroup = { component: 'div', option: option };
745+
746+
/**
747+
* Edit JSON in UI form with JSON Schema and Vue.js `<json-editor>` component.
748+
*
749+
* @author Yourtion
750+
* @license MIT
751+
*/
743752
/* harmony default export */ __webpack_exports__["a"] = ({
744753
name: 'JsonEditor',
745754
props: {
@@ -758,11 +767,11 @@ var defaultGroup = { component: 'div', option: option };
758767
/**
759768
* This property indicates whether the value of the control can be automatically completed by the browser. Possible values are: `off` and `on`.
760769
*/
761-
autocomplete: { type: String },
770+
autoComplete: { type: String },
762771
/**
763772
* This Boolean attribute indicates that the form is not to be validated when submitted.
764773
*/
765-
novalidate: { type: Boolean },
774+
noValidate: { type: Boolean },
766775
/**
767776
* Define the inputs wrapping class. Leave `undefined` to disable input wrapping.
768777
*/
@@ -777,9 +786,9 @@ var defaultGroup = { component: 'div', option: option };
777786
};
778787
},
779788
created: function created() {
780-
Object(__WEBPACK_IMPORTED_MODULE_5__parser__["a" /* loadFields */])(this, JSON.parse(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_core_js_json_stringify___default()(this.schema)));
781-
this.default = __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_extends___default()({}, this.value);
782-
this.data = __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_extends___default()({}, this.value);
789+
Object(__WEBPACK_IMPORTED_MODULE_4__parser__["a" /* loadFields */])(this, Object(__WEBPACK_IMPORTED_MODULE_5__utils__["deepClone"])(this.schema));
790+
this.default = Object(__WEBPACK_IMPORTED_MODULE_5__utils__["deepClone"])(this.value);
791+
this.data = Object(__WEBPACK_IMPORTED_MODULE_5__utils__["deepClone"])(this.value);
783792
},
784793
render: function render(createElement) {
785794
var _this3 = this;
@@ -808,7 +817,7 @@ var defaultGroup = { component: 'div', option: option };
808817

809818
var node = void 0;
810819
if (sub) {
811-
node = Object(__WEBPACK_IMPORTED_MODULE_6__utils__["setVal"])(formNode, sub, []);
820+
node = Object(__WEBPACK_IMPORTED_MODULE_5__utils__["setVal"])(formNode, sub.pop(), {});
812821
} else {
813822
node = formNode.root;
814823
}
@@ -822,28 +831,28 @@ var defaultGroup = { component: 'div', option: option };
822831
return createForm.call(_this, field, sub ? [].concat(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_toConsumableArray___default()(sub), [key]) : [key]);
823832
}
824833
var fieldName = field.name;
825-
var fieldValue = Object(__WEBPACK_IMPORTED_MODULE_6__utils__["getChild"])(_this.value, field.name.split('.'));
834+
835+
var fieldValue = Object(__WEBPACK_IMPORTED_MODULE_5__utils__["getChild"])(_this.value, fieldName.split('.'));
826836
if (!field.value) {
827837
field.value = fieldValue;
828838
}
829-
var customComponent = field.compoment ? { compoment: field.compoment, option: { native: true } } : undefined;
839+
var customComponent = field.component ? { component: field.component, option: {} } : undefined;
830840
// eslint-disable-next-line
831-
var element = field.compoment ? customComponent : field.hasOwnProperty('items') && field.type !== 'select' ? components[field.type + 'group'] || defaultGroup : components[field.type] || defaultInput;
841+
var element = field.component ? customComponent : field.hasOwnProperty('items') && field.type !== 'select' ? components[field.type + 'group'] || defaultGroup : components[field.type] || defaultInput;
832842
var fieldOptions = _this.elementOptions(element, field, field);
833843
var children = [];
834-
var hasMultitpleElements = false;
835844

836-
var input = __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_extends___default()({
845+
var input = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({
837846
ref: fieldName,
838847
domProps: {
839848
value: fieldValue
840849
},
841850
on: {
842851
input: function input(event) {
843852
var value = event && event.target ? event.target.value : event;
844-
var ns = field.name.split('.');
853+
var ns = fieldName.split('.');
845854
var n = ns.pop();
846-
var ret = ns.length > 0 ? Object(__WEBPACK_IMPORTED_MODULE_6__utils__["initChild"])(_this.data, ns) : _this.data;
855+
var ret = ns.length > 0 ? Object(__WEBPACK_IMPORTED_MODULE_5__utils__["initChild"])(_this.data, ns) : _this.data;
847856
_this.$set(ret, n, value);
848857
/**
849858
* Fired synchronously when the value of an element is changed.
@@ -877,15 +886,15 @@ var defaultGroup = { component: 'div', option: option };
877886
var optionOptions = _this.elementOptions(components.option, {
878887
value: option.value
879888
}, field);
880-
children.push(createElement(components.option.component, __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_extends___default()({
889+
children.push(createElement(components.option.component, __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({
881890
domProps: {
882891
value: option.value
883892
}
884893
}, optionOptions), option.label));
885894
});
886895
break;
887896
}
888-
var inputElement = hasMultitpleElements ? createElement(element.component, input, children) : createElement(element.component, input, children);
897+
var inputElement = createElement(element.component, input, children);
889898

890899
var formControlsNodes = [];
891900
if (field.label && !option.disableWrappingLabel) {
@@ -920,11 +929,7 @@ var defaultGroup = { component: 'div', option: option };
920929
return formNodes.push(node);
921930
});
922931
}
923-
if (sub) {
924-
node.push(formNodes[0]);
925-
} else {
926-
node[key] = formNodes[0];
927-
}
932+
node[key] = formNodes[0];
928933
});
929934
}
930935
}
@@ -933,22 +938,26 @@ var defaultGroup = { component: 'div', option: option };
933938
function createNode(fields, sub) {
934939
var _this2 = this;
935940

936-
if (sub) {
937-
allFormNodes.push(createElement('div', {
938-
class: 'sub-' + sub.length
939-
}, formNode[sub[sub.length - 1]]));
940-
}
941+
var nodes = [];
942+
var subName = sub && sub.pop();
941943
__WEBPACK_IMPORTED_MODULE_2_babel_runtime_core_js_object_keys___default()(fields).forEach(function (key) {
942944
if (key === '$sub') return;
943945
var field = fields[key];
944946
if (field.$sub) {
945-
createNode.call(_this2, field, sub ? [].concat(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_toConsumableArray___default()(sub), [key]) : [key]);
946-
} else if (formNode.root[key]) {
947-
allFormNodes.push(formNode.root[key]);
947+
var node = createNode.call(_this2, field, sub ? [].concat(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_toConsumableArray___default()(sub), [key]) : [key]);
948+
nodes.push(createElement('div', {
949+
class: 'sub'
950+
}, node));
951+
} else if (subName) {
952+
nodes.push(Object(__WEBPACK_IMPORTED_MODULE_5__utils__["getChild"])(formNode, subName.split('.'))[key]);
953+
} else {
954+
nodes.push(formNode.root[key]);
948955
}
949956
});
957+
return nodes;
950958
}
951-
createNode.call(this, this.fields);
959+
var formNodes = createNode.call(this, this.fields);
960+
allFormNodes.push(formNodes);
952961

953962
var labelOptions = this.elementOptions(components.label);
954963
var button = this.$slots.hasOwnProperty('default') ? { component: this.$slots.default, option: option } : components.button;
@@ -963,7 +972,7 @@ var defaultGroup = { component: 'div', option: option };
963972
autocomplete: this.autocomplete,
964973
novalidate: this.novalidate
965974
});
966-
nodes.push(createElement(components.form.component, __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_extends___default()({
975+
nodes.push(createElement(components.form.component, __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({
967976
ref: '__form',
968977
on: {
969978
submit: function submit(event) {
@@ -1003,9 +1012,9 @@ var defaultGroup = { component: 'div', option: option };
10031012
var item = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
10041013

10051014
var attrName = element.option.native ? 'attrs' : 'props';
1006-
var elementProps = typeof element.option === 'function' ? element.option : __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_extends___default()({}, element.option, { native: undefined });
1015+
var elementProps = typeof element.option === 'function' ? element.option : __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, element.option, { native: undefined });
10071016
var options = this.optionValue(field, elementProps, item);
1008-
return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_defineProperty___default()({}, attrName, __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_extends___default()({}, extendingOptions, options));
1017+
return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_defineProperty___default()({}, attrName, __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, extendingOptions, options));
10091018
},
10101019

10111020
/**
@@ -1056,11 +1065,11 @@ var defaultGroup = { component: 'div', option: option };
10561065
* Reset the value of all elements of the parent form.
10571066
*/
10581067
reset: function reset() {
1059-
for (var key in this.default) {
1068+
for (var key in this.data) {
10601069
var ns = key.split('.');
10611070
var n = ns.pop();
1062-
var ret = ns.length > 0 ? Object(__WEBPACK_IMPORTED_MODULE_6__utils__["initChild"])(this.data, ns) : this.data;
1063-
var value = Object(__WEBPACK_IMPORTED_MODULE_6__utils__["getChild"])(this.default, key.split('.'));
1071+
var ret = ns.length > 0 ? Object(__WEBPACK_IMPORTED_MODULE_5__utils__["initChild"])(this.data, ns) : this.data;
1072+
var value = Object(__WEBPACK_IMPORTED_MODULE_5__utils__["getChild"])(this.default, key.split('.'));
10641073
this.$set(ret, n, value);
10651074
}
10661075
},
@@ -1755,29 +1764,12 @@ module.exports = function (KEY, exec) {
17551764
/* 66 */
17561765
/***/ (function(module, exports, __webpack_require__) {
17571766

1758-
module.exports = { "default": __webpack_require__(67), __esModule: true };
1759-
1760-
/***/ }),
1761-
/* 67 */
1762-
/***/ (function(module, exports, __webpack_require__) {
1763-
1764-
var core = __webpack_require__(0);
1765-
var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });
1766-
module.exports = function stringify(it) { // eslint-disable-line no-unused-vars
1767-
return $JSON.stringify.apply($JSON, arguments);
1768-
};
1769-
1770-
1771-
/***/ }),
1772-
/* 68 */
1773-
/***/ (function(module, exports, __webpack_require__) {
1774-
17751767
"use strict";
17761768

17771769

17781770
exports.__esModule = true;
17791771

1780-
var _assign = __webpack_require__(69);
1772+
var _assign = __webpack_require__(67);
17811773

17821774
var _assign2 = _interopRequireDefault(_assign);
17831775

@@ -1798,39 +1790,39 @@ exports.default = _assign2.default || function (target) {
17981790
};
17991791

18001792
/***/ }),
1801-
/* 69 */
1793+
/* 67 */
18021794
/***/ (function(module, exports, __webpack_require__) {
18031795

1804-
module.exports = { "default": __webpack_require__(70), __esModule: true };
1796+
module.exports = { "default": __webpack_require__(68), __esModule: true };
18051797

18061798
/***/ }),
1807-
/* 70 */
1799+
/* 68 */
18081800
/***/ (function(module, exports, __webpack_require__) {
18091801

1810-
__webpack_require__(71);
1802+
__webpack_require__(69);
18111803
module.exports = __webpack_require__(0).Object.assign;
18121804

18131805

18141806
/***/ }),
1815-
/* 71 */
1807+
/* 69 */
18161808
/***/ (function(module, exports, __webpack_require__) {
18171809

18181810
// 19.1.3.1 Object.assign(target, source)
18191811
var $export = __webpack_require__(2);
18201812

1821-
$export($export.S + $export.F, 'Object', { assign: __webpack_require__(72) });
1813+
$export($export.S + $export.F, 'Object', { assign: __webpack_require__(70) });
18221814

18231815

18241816
/***/ }),
1825-
/* 72 */
1817+
/* 70 */
18261818
/***/ (function(module, exports, __webpack_require__) {
18271819

18281820
"use strict";
18291821

18301822
// 19.1.2.1 Object.assign(target, source, ...)
18311823
var getKeys = __webpack_require__(16);
1832-
var gOPS = __webpack_require__(73);
1833-
var pIE = __webpack_require__(74);
1824+
var gOPS = __webpack_require__(71);
1825+
var pIE = __webpack_require__(72);
18341826
var toObject = __webpack_require__(10);
18351827
var IObject = __webpack_require__(21);
18361828
var $assign = Object.assign;
@@ -1863,21 +1855,21 @@ module.exports = !$assign || __webpack_require__(8)(function () {
18631855

18641856

18651857
/***/ }),
1866-
/* 73 */
1858+
/* 71 */
18671859
/***/ (function(module, exports) {
18681860

18691861
exports.f = Object.getOwnPropertySymbols;
18701862

18711863

18721864
/***/ }),
1873-
/* 74 */
1865+
/* 72 */
18741866
/***/ (function(module, exports) {
18751867

18761868
exports.f = {}.propertyIsEnumerable;
18771869

18781870

18791871
/***/ }),
1880-
/* 75 */
1872+
/* 73 */
18811873
/***/ (function(module, __webpack_exports__, __webpack_require__) {
18821874

18831875
"use strict";
@@ -1892,6 +1884,7 @@ const setCommonFields = (schema, field, schemaName) => {
18921884
? schema.default
18931885
: field.hasOwnProperty('value') ? field.value : '';
18941886

1887+
field.component = schema.component;
18951888
field.schemaType = schema.type;
18961889
field.label = schema.title || '';
18971890
field.description = schema.description || '';

0 commit comments

Comments
 (0)