| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623 |
- "use strict";
- var _xeUtils = _interopRequireDefault(require("xe-utils"));
- var _ui = require("../../ui");
- var _vn = require("../../ui/src/vn");
- var _log = require("../../ui/src/log");
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
- var componentDefaultModelProp = 'value';
- /**
- * 已废弃
- * @deprecated
- */
- function getOldComponentName(name) {
- return "vxe-".concat("".concat(name || '').replace('$', ''));
- }
- /**
- * 已废弃
- * @deprecated
- */
- function getOldComponent(_ref) {
- var name = _ref.name;
- return getOldComponentName(name);
- }
- function getDefaultComponent(_ref2) {
- var name = _ref2.name;
- return (0, _ui.getComponent)(name) || name;
- }
- function getNativeAttrs(renderOpts) {
- var name = renderOpts.name,
- attrs = renderOpts.attrs;
- if (name === 'input') {
- attrs = Object.assign({
- type: 'text'
- }, attrs);
- }
- return attrs;
- }
- function getComponentFormItemProps(renderOpts, params, value, defaultProps) {
- return _xeUtils.default.assign({}, defaultProps, renderOpts.props, _defineProperty({}, componentDefaultModelProp, value));
- }
- /**
- * 原生事件处理
- * @param renderOpts
- * @param params
- * @param modelFunc
- * @param changeFunc
- */
- function getElementOns(renderOpts, params, modelFunc, changeFunc) {
- var events = renderOpts.events;
- var modelEvent = (0, _vn.getModelEvent)(renderOpts);
- var changeEvent = (0, _vn.getChangeEvent)(renderOpts);
- var isSameEvent = changeEvent === modelEvent;
- var ons = {};
- if (events) {
- _xeUtils.default.objectEach(events, function (func, key) {
- ons[(0, _vn.getOnName)(key)] = function () {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- func.apply(void 0, [params].concat(args));
- };
- });
- }
- if (modelFunc) {
- ons[(0, _vn.getOnName)(modelEvent)] = function (targetEvnt) {
- modelFunc(targetEvnt);
- if (isSameEvent && changeFunc) {
- changeFunc(targetEvnt);
- }
- if (events && events[modelEvent]) {
- events[modelEvent](params, targetEvnt);
- }
- };
- }
- if (!isSameEvent && changeFunc) {
- ons[(0, _vn.getOnName)(changeEvent)] = function () {
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
- args[_key2] = arguments[_key2];
- }
- changeFunc.apply(void 0, args);
- if (events && events[changeEvent]) {
- events[changeEvent].apply(events, [params].concat(args));
- }
- };
- }
- return ons;
- }
- /**
- * 组件事件处理
- * @param renderOpts
- * @param params
- * @param modelFunc
- * @param changeFunc
- */
- function getComponentOns(renderOpts, params, eFns, eventOns) {
- var events = renderOpts.events;
- var _ref3 = eFns || {},
- modelFunc = _ref3.model,
- changeFunc = _ref3.change;
- var modelEvent = (0, _vn.getModelEvent)(renderOpts);
- var changeEvent = (0, _vn.getChangeEvent)(renderOpts);
- var ons = {};
- _xeUtils.default.objectEach(events, function (func, key) {
- ons[(0, _vn.getOnName)(key)] = function () {
- if (!_xeUtils.default.isFunction(func)) {
- (0, _log.errLog)('vxe.error.errFunc', ["[form] ".concat(func)]);
- }
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
- args[_key3] = arguments[_key3];
- }
- func.apply(void 0, [params].concat(args));
- };
- });
- if (modelFunc) {
- ons[(0, _vn.getOnName)(modelEvent)] = function (targetEvnt) {
- modelFunc(targetEvnt);
- if (events && events[modelEvent]) {
- events[modelEvent](params, targetEvnt);
- }
- };
- }
- if (changeFunc) {
- ons[(0, _vn.getOnName)(changeEvent)] = function () {
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
- args[_key4] = arguments[_key4];
- }
- changeFunc.apply(void 0, args);
- if (events && events[changeEvent]) {
- events[changeEvent].apply(events, [params].concat(args));
- }
- };
- }
- return eventOns ? Object.assign(ons, eventOns) : ons;
- }
- function getItemOns(renderOpts, params) {
- var $form = params.$form,
- data = params.data,
- field = params.field;
- return getComponentOns(renderOpts, params, {
- model: function model(value) {
- // 处理 model 值双向绑定
- _xeUtils.default.set(data, field, value);
- },
- change: function change() {
- // 处理 change 事件相关逻辑
- $form.updateStatus(params);
- }
- });
- }
- function getNativeItemOns(renderOpts, params) {
- var $form = params.$form,
- data = params.data,
- field = params.field;
- return getElementOns(renderOpts, params, function (evnt) {
- // 处理 model 值双向绑定
- var itemValue = evnt.target.value;
- _xeUtils.default.set(data, field, itemValue);
- }, function () {
- // 处理 change 事件相关逻辑
- $form.updateStatus(params);
- });
- }
- function renderNativeOptgroup(h, renderOpts, params, renderOptionsMethods) {
- var optionGroups = renderOpts.optionGroups,
- _renderOpts$optionGro = renderOpts.optionGroupProps,
- optionGroupProps = _renderOpts$optionGro === void 0 ? {} : _renderOpts$optionGro;
- var groupOptions = optionGroupProps.options || 'options';
- var groupLabel = optionGroupProps.label || 'label';
- if (optionGroups) {
- return optionGroups.map(function (group, gIndex) {
- return h('optgroup', {
- key: gIndex,
- attrs: {
- label: group[groupLabel]
- }
- }, renderOptionsMethods(group[groupOptions], renderOpts, params));
- });
- }
- return [];
- }
- /**
- * 渲染表单-项
- * 用于渲染原生的标签
- */
- function nativeItemRender(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var name = renderOpts.name;
- var attrs = getNativeAttrs(renderOpts);
- var itemValue = _xeUtils.default.get(data, field);
- return [h("".concat(name), {
- class: "vxe-default-".concat(name),
- attrs: attrs,
- domProps: {
- value: attrs && name === 'input' && (attrs.type === 'submit' || attrs.type === 'reset') ? null : itemValue
- },
- on: getNativeItemOns(renderOpts, params)
- })];
- }
- function defaultItemRender(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getDefaultComponent(renderOpts), {
- props: getComponentFormItemProps(renderOpts, params, itemValue),
- on: getItemOns(renderOpts, params)
- })];
- }
- /**
- * 已废弃
- * @deprecated
- */
- function oldItemRender(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getOldComponent(renderOpts), {
- props: getComponentFormItemProps(renderOpts, params, itemValue),
- on: getItemOns(renderOpts, params)
- })];
- }
- /**
- * 已废弃
- * @deprecated
- */
- function oldButtonItemRender(h, renderOpts, params) {
- return [h('vxe-button', {
- props: getComponentFormItemProps(renderOpts, params, null),
- on: getComponentOns(renderOpts, params)
- })];
- }
- /**
- * 已废弃
- * @deprecated
- */
- function oldButtonsItemRender(h, renderOpts, params) {
- var children = renderOpts.children;
- return children ? children.map(function (childRenderOpts) {
- return oldButtonItemRender(h, childRenderOpts, params)[0];
- }) : [];
- }
- /**
- * 渲染原生的 select 标签
- */
- function renderNativeFormOptions(h, options, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var _renderOpts$optionPro = renderOpts.optionProps,
- optionProps = _renderOpts$optionPro === void 0 ? {} : _renderOpts$optionPro;
- var labelProp = optionProps.label || 'label';
- var valueProp = optionProps.value || 'value';
- var disabledProp = optionProps.disabled || 'disabled';
- var cellValue = _xeUtils.default.get(data, field);
- if (options) {
- return options.map(function (item, oIndex) {
- return h('option', {
- key: oIndex,
- props: {
- value: item[valueProp],
- disabled: item[disabledProp],
- /* eslint-disable eqeqeq */
- selected: item[valueProp] == cellValue
- }
- }, item[labelProp]);
- });
- }
- return [];
- }
- /**
- * 渲染表单-项
- */
- function defaultFormItemRender(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getDefaultComponent(renderOpts), {
- props: getComponentFormItemProps(renderOpts, params, itemValue),
- on: getItemOns(renderOpts, params)
- })];
- }
- function formItemRadioAndCheckboxRender(h, renderOpts, params) {
- var options = renderOpts.options,
- optionProps = renderOpts.optionProps;
- var data = params.data,
- field = params.field;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getDefaultComponent(renderOpts), {
- props: Object.assign({
- options: options,
- optionProps: optionProps
- }, getComponentFormItemProps(renderOpts, params, itemValue)),
- on: getItemOns(renderOpts, params)
- })];
- }
- /**
- * 已废弃
- * @deprecated
- */
- function oldFormItemRadioAndCheckboxRender(h, renderOpts, params) {
- var name = renderOpts.name,
- options = renderOpts.options,
- _renderOpts$optionPro2 = renderOpts.optionProps,
- optionProps = _renderOpts$optionPro2 === void 0 ? {} : _renderOpts$optionPro2;
- var data = params.data,
- field = params.field;
- var labelProp = optionProps.label || 'label';
- var valueProp = optionProps.value || 'value';
- var disabledProp = optionProps.disabled || 'disabled';
- var itemValue = _xeUtils.default.get(data, field);
- var compName = getOldComponentName(name);
- // 如果是分组
- if (options) {
- return [h("".concat(compName, "-group"), {
- props: getComponentFormItemProps(renderOpts, params, itemValue),
- on: getItemOns(renderOpts, params),
- scopedSlots: {
- default: function _default() {
- return options.map(function (item, index) {
- return h(compName, {
- key: index,
- props: {
- label: item[valueProp],
- content: item[labelProp],
- disabled: item[disabledProp]
- }
- });
- });
- }
- }
- })];
- }
- return [h(compName, {
- props: getComponentFormItemProps(renderOpts, params, itemValue),
- on: getItemOns(renderOpts, params)
- })];
- }
- /**
- * 表单 - 渲染器
- */
- _ui.renderer.mixin({
- input: {
- formItemAutoFocus: 'input',
- renderFormItemContent: nativeItemRender
- },
- textarea: {
- formItemAutoFocus: 'textarea',
- renderFormItemContent: nativeItemRender
- },
- select: {
- formItemAutoFocus: 'input',
- renderFormItemContent: function renderFormItemContent(h, renderOpts, params) {
- return [h('select', {
- class: 'vxe-default-select',
- attrs: Object.assign({}, getNativeAttrs(renderOpts)),
- on: getNativeItemOns(renderOpts, params)
- }, renderOpts.optionGroups ? renderNativeOptgroup(h, renderOpts, params, renderNativeFormOptions) : renderNativeFormOptions(h, renderOpts.options, renderOpts, params))];
- }
- },
- VxeInput: {
- formItemAutoFocus: 'input',
- renderFormItemContent: defaultItemRender
- },
- VxeNumberInput: {
- formItemAutoFocus: 'input',
- renderFormItemContent: defaultItemRender
- },
- VxePasswordInput: {
- formItemAutoFocus: 'input',
- renderFormItemContent: defaultItemRender
- },
- VxeTextarea: {
- formItemAutoFocus: 'textarea',
- renderFormItemContent: defaultItemRender
- },
- VxeDatePicker: {
- formItemAutoFocus: 'input',
- renderFormItemContent: defaultItemRender
- },
- VxeDateRangePicker: {
- formItemAutoFocus: 'input',
- renderFormItemContent: function renderFormItemContent(h, renderOpts, params) {
- var startField = renderOpts.startField,
- endField = renderOpts.endField;
- var $form = params.$form,
- data = params.data,
- field = params.field;
- var itemValue = _xeUtils.default.get(data, field);
- var seProps = {};
- var seOs = {};
- if (startField && endField) {
- seProps.startValue = _xeUtils.default.get(data, startField);
- seProps.endValue = _xeUtils.default.get(data, endField);
- seOs['update:startValue'] = function (value) {
- if (startField) {
- _xeUtils.default.set(data, startField, value);
- }
- };
- seOs['update:endValue'] = function (value) {
- if (endField) {
- _xeUtils.default.set(data, endField, value);
- }
- };
- }
- return [h(getDefaultComponent(renderOpts), {
- props: getComponentFormItemProps(renderOpts, params, itemValue, seProps),
- on: getComponentOns(renderOpts, params, {
- model: function model(value) {
- // 处理 model 值双向绑定
- _xeUtils.default.set(data, field, value);
- },
- change: function change() {
- // 处理 change 事件相关逻辑
- $form.updateStatus(params);
- }
- }, seOs)
- })];
- }
- },
- VxeButton: {
- renderFormItemContent: defaultFormItemRender
- },
- VxeButtonGroup: {
- renderFormItemContent: function renderFormItemContent(h, renderOpts, params) {
- var options = renderOpts.options;
- var data = params.data,
- field = params.field;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getDefaultComponent(renderOpts), {
- props: Object.assign({
- options: options
- }, getComponentFormItemProps(renderOpts, params, itemValue)),
- on: getItemOns(renderOpts, params)
- })];
- }
- },
- VxeSelect: {
- formItemAutoFocus: 'input',
- renderFormItemContent: function renderFormItemContent(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var options = renderOpts.options,
- optionProps = renderOpts.optionProps,
- optionGroups = renderOpts.optionGroups,
- optionGroupProps = renderOpts.optionGroupProps;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getDefaultComponent(renderOpts), {
- props: getComponentFormItemProps(renderOpts, params, itemValue, {
- options: options,
- optionProps: optionProps,
- optionGroups: optionGroups,
- optionGroupProps: optionGroupProps
- }),
- on: getItemOns(renderOpts, params)
- })];
- }
- },
- VxeTreeSelect: {
- formItemAutoFocus: 'input',
- renderFormItemContent: function renderFormItemContent(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var options = renderOpts.options,
- optionProps = renderOpts.optionProps;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getDefaultComponent(renderOpts), {
- props: getComponentFormItemProps(renderOpts, params, itemValue, {
- options: options,
- optionProps: optionProps
- }),
- on: getItemOns(renderOpts, params)
- })];
- }
- },
- VxeTableSelect: {
- formItemAutoFocus: 'input',
- renderFormItemContent: function renderFormItemContent(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var options = renderOpts.options,
- optionProps = renderOpts.optionProps;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getDefaultComponent(renderOpts), {
- props: getComponentFormItemProps(renderOpts, params, itemValue, {
- options: options,
- optionProps: optionProps
- }),
- on: getItemOns(renderOpts, params)
- })];
- }
- },
- VxeColorPicker: {
- formItemAutoFocus: 'input',
- renderFormItemContent: function renderFormItemContent(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var options = renderOpts.options;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getDefaultComponent(renderOpts), {
- props: getComponentFormItemProps(renderOpts, params, itemValue, {
- colors: options
- }),
- on: getItemOns(renderOpts, params)
- })];
- }
- },
- VxeIconPicker: {
- formItemAutoFocus: 'input',
- renderFormItemContent: function renderFormItemContent(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var options = renderOpts.options;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getDefaultComponent(renderOpts), {
- props: getComponentFormItemProps(renderOpts, params, itemValue, {
- icons: options
- }),
- on: getItemOns(renderOpts, params)
- })];
- }
- },
- VxeRadio: {
- renderFormItemContent: defaultFormItemRender
- },
- VxeRadioGroup: {
- renderFormItemContent: formItemRadioAndCheckboxRender
- },
- VxeCheckbox: {
- renderFormItemContent: defaultFormItemRender
- },
- VxeCheckboxGroup: {
- renderFormItemContent: formItemRadioAndCheckboxRender
- },
- VxeSwitch: {
- renderFormItemContent: defaultItemRender
- },
- VxeRate: {
- renderFormItemContent: defaultItemRender
- },
- VxeSlider: {
- renderFormItemContent: defaultItemRender
- },
- VxeImage: {
- renderFormItemContent: function renderFormItemContent(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var props = renderOpts.props;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getDefaultComponent(renderOpts), {
- props: Object.assign(Object.assign({}, props), {
- src: itemValue
- }),
- on: getItemOns(renderOpts, params)
- })];
- }
- },
- VxeImageGroup: {
- renderFormItemContent: function renderFormItemContent(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var props = renderOpts.props;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getDefaultComponent(renderOpts), {
- props: Object.assign(Object.assign({}, props), {
- urlList: itemValue
- }),
- on: getItemOns(renderOpts, params)
- })];
- }
- },
- VxeUpload: {
- renderFormItemContent: defaultItemRender
- },
- // 以下已废弃
- $input: {
- formItemAutoFocus: 'input',
- renderFormItemContent: oldItemRender
- },
- $textarea: {
- formItemAutoFocus: 'textarea',
- renderFormItemContent: oldItemRender
- },
- $button: {
- renderFormItemContent: oldButtonItemRender
- },
- $buttons: {
- renderFormItemContent: oldButtonsItemRender
- },
- $select: {
- formItemAutoFocus: 'input',
- renderFormItemContent: function renderFormItemContent(h, renderOpts, params) {
- var data = params.data,
- field = params.field;
- var options = renderOpts.options,
- optionProps = renderOpts.optionProps,
- optionGroups = renderOpts.optionGroups,
- optionGroupProps = renderOpts.optionGroupProps;
- var itemValue = _xeUtils.default.get(data, field);
- return [h(getOldComponent(renderOpts), {
- props: getComponentFormItemProps(renderOpts, params, itemValue, {
- options: options,
- optionProps: optionProps,
- optionGroups: optionGroups,
- optionGroupProps: optionGroupProps
- }),
- on: getItemOns(renderOpts, params)
- })];
- }
- },
- $radio: {
- renderFormItemContent: oldFormItemRadioAndCheckboxRender
- },
- $checkbox: {
- renderFormItemContent: oldFormItemRadioAndCheckboxRender
- },
- $switch: {
- renderFormItemContent: oldItemRender
- }
- // 以上已废弃
- });
|