vxe-pc-ui
Version:
A vue based PC component library
88 lines (87 loc) • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.WidgetSelectViewComponent = void 0;
var _vue = require("vue");
var _formItem = _interopRequireDefault(require("../../form/src/form-item"));
var _use = require("../../form-design/src/use");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const WidgetSelectViewComponent = exports.WidgetSelectViewComponent = (0, _vue.defineComponent)({
props: {
renderOpts: {
type: Object,
default: () => ({})
},
renderParams: {
type: Object,
default: () => ({})
}
},
emits: [],
setup(props) {
const $xeFormView = (0, _vue.inject)('$xeFormView', null);
const {
computeKebabCaseName
} = (0, _use.useWidgetName)(props);
const changeEvent = () => {
const {
renderParams
} = props;
const {
widget
} = renderParams;
if ($xeFormView) {
const itemValue = $xeFormView ? $xeFormView.getItemValue(widget) : null;
$xeFormView.updateWidgetStatus(widget, itemValue);
}
};
const renderOptions = () => {
const {
renderParams
} = props;
const {
widget
} = renderParams;
const {
options
} = widget.options;
return options ? options.map(group => {
if (group.options) {
return (0, _vue.h)('optgroup', {
label: group.value
}, group.options.map(item => {
return (0, _vue.h)('option', {
value: item.value
}, item.value);
}));
}
return (0, _vue.h)('option', {}, group.value);
}) : [];
};
return () => {
const {
renderParams
} = props;
const {
widget,
isViewMode
} = renderParams;
const kebabCaseName = computeKebabCaseName.value;
return (0, _vue.h)(_formItem.default, {
class: ['vxe-form-design--widget-render-form-item', `widget-${kebabCaseName}`],
field: widget.field,
title: widget.title,
itemRender: {}
}, {
default() {
return (0, _vue.h)('select', {
class: 'vxe-default-select',
value: $xeFormView ? $xeFormView.getItemValue(widget) : null,
onChange: changeEvent
}, isViewMode ? renderOptions() : []);
}
});
};
}
});