@ibiz-template/mob-vue3-components 0.0.1-alpha.22 → 0.0.1-alpha.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.css +1 -1
- package/dist/index.system.min.js +2 -2
- package/dist/index.system.min.js.map +1 -1
- package/es/control/form/edit-form/edit-form.d.ts +16 -1
- package/es/control/form/edit-form/edit-form.mjs +26 -8
- package/es/control/form/edit-form/index.d.ts +15 -0
- package/es/control/form/form/form.d.ts +1 -5
- package/es/control/form/form/form.mjs +39 -15
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.css +1 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.d.ts +7 -6
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.mjs +51 -58
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.css +1 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.d.ts +19 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.mjs +79 -0
- package/es/control/form/form-detail/form-mdctrl/{form-mdctrl-data-view/form-mdctrl-data-view.d.ts → form-mdctrl-repeater/form-mdctrl-repeater.d.ts} +5 -7
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater.mjs +50 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-multi-form/repeater-multi-form.d.ts +19 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-multi-form/repeater-multi-form.mjs +59 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-single-form/repeater-single-form.css +1 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-single-form/repeater-single-form.d.ts +29 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-single-form/repeater-single-form.mjs +54 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl.d.ts +4 -2
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl.mjs +40 -54
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl.provider.mjs +21 -2
- package/es/control/form/form-detail/form-mdctrl/index.d.ts +2 -4
- package/es/control/form/form-detail/form-mdctrl/index.mjs +10 -1
- package/es/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.css +1 -0
- package/es/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.d.ts +40 -0
- package/es/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.mjs +94 -0
- package/es/control/form/form-detail/index.mjs +0 -1
- package/es/control/form/index.mjs +0 -1
- package/es/control/index.mjs +0 -1
- package/es/editor/upload/upload-editor.controller.mjs +2 -17
- package/es/panel-component/panel-button/index.d.ts +1 -1
- package/es/panel-component/panel-button/panel-button.d.ts +1 -1
- package/es/view/login-view/login-view.mjs +1 -1
- package/lib/control/form/edit-form/edit-form.cjs +26 -8
- package/lib/control/form/form/form.cjs +38 -14
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.cjs +48 -58
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.css +1 -0
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.cjs +81 -0
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.css +1 -0
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater.cjs +52 -0
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-multi-form/repeater-multi-form.cjs +61 -0
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-single-form/repeater-single-form.cjs +56 -0
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-single-form/repeater-single-form.css +1 -0
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.cjs +38 -52
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -0
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.provider.cjs +20 -1
- package/lib/control/form/form-detail/form-mdctrl/index.cjs +9 -1
- package/lib/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.cjs +96 -0
- package/lib/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.css +1 -0
- package/lib/control/form/form-detail/index.cjs +0 -2
- package/lib/control/form/index.cjs +0 -2
- package/lib/control/index.cjs +0 -2
- package/lib/editor/upload/upload-editor.controller.cjs +1 -16
- package/lib/view/login-view/login-view.cjs +1 -1
- package/package.json +6 -6
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-container/form-mdctrl-container.css +0 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-container/form-mdctrl-container.d.ts +0 -36
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-container/form-mdctrl-container.mjs +0 -66
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-data-view/form-mdctrl-data-view.mjs +0 -68
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-list/form-mdctrl-list.d.ts +0 -17
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-list/form-mdctrl-list.mjs +0 -68
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-shell.d.ts +0 -72
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-shell.mjs +0 -157
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.d.ts +0 -17
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.mjs +0 -57
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.d.ts +0 -17
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.mjs +0 -55
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-container/form-mdctrl-container.cjs +0 -71
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-container/form-mdctrl-container.css +0 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-data-view/form-mdctrl-data-view.cjs +0 -73
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-list/form-mdctrl-list.cjs +0 -73
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-shell.cjs +0 -159
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.cjs +0 -62
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.cjs +0 -60
|
@@ -1,85 +1,75 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var vue = require('vue');
|
|
6
|
-
var vue3Util = require('@ibiz-template/vue3-util');
|
|
7
4
|
var runtime = require('@ibiz-template/runtime');
|
|
8
|
-
var
|
|
5
|
+
var vue3Util = require('@ibiz-template/vue3-util');
|
|
6
|
+
require('./form-mdctrl-form.css');
|
|
9
7
|
|
|
10
8
|
"use strict";
|
|
11
|
-
function _isSlot(s) {
|
|
12
|
-
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
|
|
13
|
-
}
|
|
14
9
|
const FormMDCtrlForm = /* @__PURE__ */ vue.defineComponent({
|
|
15
10
|
name: "IBizFormMDCtrlForm",
|
|
16
11
|
props: {
|
|
17
12
|
controller: {
|
|
18
|
-
type:
|
|
13
|
+
type: runtime.FormMDCtrlFormController,
|
|
19
14
|
required: true
|
|
20
15
|
}
|
|
21
16
|
},
|
|
22
17
|
setup(props) {
|
|
23
|
-
const ns = vue3Util.useNamespace("form-mdctrl");
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
const ns = vue3Util.useNamespace("form-mdctrl-form");
|
|
19
|
+
const showActions = vue.computed(() => {
|
|
20
|
+
return props.controller.enableCreate || props.controller.enableDelete;
|
|
21
|
+
});
|
|
22
|
+
const renderAddBtn = () => {
|
|
23
|
+
return vue.createVNode(vue.resolveComponent("van-button"), {
|
|
24
|
+
"class": [ns.be("item-actions", "create"), ns.be("item-actions", "btn")],
|
|
25
|
+
"onClick": () => props.controller.create()
|
|
26
|
+
}, {
|
|
27
|
+
default: () => [vue.createTextVNode("\u6DFB\u52A0")]
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const onCreated = (id, event) => {
|
|
31
|
+
props.controller.setFormController(id, event.ctrl);
|
|
32
|
+
};
|
|
27
33
|
return {
|
|
28
34
|
ns,
|
|
29
|
-
|
|
35
|
+
showActions,
|
|
36
|
+
onCreated,
|
|
37
|
+
renderAddBtn
|
|
30
38
|
};
|
|
31
39
|
},
|
|
32
40
|
render() {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
const {
|
|
42
|
+
state,
|
|
43
|
+
formProvider,
|
|
44
|
+
model
|
|
45
|
+
} = this.controller;
|
|
46
|
+
return vue.createVNode(vue.resolveComponent("iBizMDCtrlContainer"), {
|
|
47
|
+
"class": this.ns.b(),
|
|
48
|
+
"items": state.items || [],
|
|
49
|
+
"enableCreate": this.controller.enableCreate,
|
|
50
|
+
"enableDelete": this.controller.enableDelete,
|
|
51
|
+
"onAddClick": () => this.controller.create(),
|
|
52
|
+
"onRemoveClick": (item) => this.controller.remove(item.id)
|
|
53
|
+
}, {
|
|
54
|
+
item: ({
|
|
55
|
+
data
|
|
56
|
+
}) => {
|
|
57
|
+
if (!formProvider) {
|
|
58
|
+
return vue.createVNode("div", null, [vue.createTextVNode("\u672A\u627E\u5230\u8868\u5355\u7684\u9002\u914D\u5668")]);
|
|
59
|
+
}
|
|
60
|
+
const formComponent = vue.h(vue.resolveComponent(formProvider.component), {
|
|
61
|
+
class: this.ns.be("item", "form"),
|
|
62
|
+
modelData: model.contentControl,
|
|
63
|
+
context: data.context,
|
|
64
|
+
params: data.params,
|
|
65
|
+
onCreated: (event) => {
|
|
66
|
+
this.onCreated(data.id, event);
|
|
42
67
|
}
|
|
43
|
-
const controlProps = {
|
|
44
|
-
modelData: c.controlModel,
|
|
45
|
-
context: tempContext,
|
|
46
|
-
params: c.parent.form.params,
|
|
47
|
-
onFormDataChange: (arg) => c.onFormChange(arg.data, index),
|
|
48
|
-
onRemoveSuccess: () => c.onFormRemoveSuccess(index),
|
|
49
|
-
onCreated: (event) => c.onControlCreated(event, index)
|
|
50
|
-
};
|
|
51
|
-
const controlComponent = vue.h(vue.resolveComponent(c.provider.component), controlProps);
|
|
52
|
-
return vue.createVNode(vue.resolveComponent("van-swipe-cell"), {
|
|
53
|
-
"class": this.ns.b("form-content"),
|
|
54
|
-
"key": item.srfkey
|
|
55
|
-
}, {
|
|
56
|
-
default: () => [controlComponent, {
|
|
57
|
-
default: () => {
|
|
58
|
-
return controlComponent;
|
|
59
|
-
},
|
|
60
|
-
right: () => {
|
|
61
|
-
return c.parent.isDelete && vue.createVNode(vue.resolveComponent("van-button"), {
|
|
62
|
-
"onClick": () => this.c.onDataRemove(index)
|
|
63
|
-
}, {
|
|
64
|
-
default: () => [vue.createTextVNode("\u5220\u9664")]
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}]
|
|
68
|
-
});
|
|
69
68
|
});
|
|
69
|
+
return formComponent;
|
|
70
70
|
}
|
|
71
|
-
};
|
|
72
|
-
return vue.createVNode(formMdctrlContainer.FormMDCtrlContainer, {
|
|
73
|
-
"class": this.ns.b("form"),
|
|
74
|
-
"controller": c.parent,
|
|
75
|
-
"onInsertButtonClick": () => {
|
|
76
|
-
c.onDataInsert();
|
|
77
|
-
}
|
|
78
|
-
}, _isSlot(_slot = renderContent()) ? _slot : {
|
|
79
|
-
default: () => [_slot]
|
|
80
71
|
});
|
|
81
72
|
}
|
|
82
73
|
});
|
|
83
74
|
|
|
84
75
|
exports.FormMDCtrlForm = FormMDCtrlForm;
|
|
85
|
-
exports.default = FormMDCtrlForm;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-form-mdctrl-form-item{display:flex}.ibiz-form-mdctrl-form-item__form{flex-grow:1}.ibiz-form-mdctrl-form-item-actions{flex-shrink:0;width:80px;text-align:center}.ibiz-form-mdctrl-form-item-actions .el-button+.el-button{margin-left:0}.ibiz-form-mdctrl-form-item-actions__btn{margin-top:var(--ibiz-spacing-tight)}.ibiz-form-mdctrl-form-no-data{width:100%;display:flex;justify-content:flex-end}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vue = require('vue');
|
|
4
|
+
var runtime = require('@ibiz-template/runtime');
|
|
5
|
+
var vue3Util = require('@ibiz-template/vue3-util');
|
|
6
|
+
require('./form-mdctrl-md.css');
|
|
7
|
+
|
|
8
|
+
"use strict";
|
|
9
|
+
const FormMDCtrlMD = /* @__PURE__ */ vue.defineComponent({
|
|
10
|
+
name: "IBizFormMDCtrlMD",
|
|
11
|
+
props: {
|
|
12
|
+
controller: {
|
|
13
|
+
type: runtime.FormMDCtrlMDController,
|
|
14
|
+
required: true
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
setup(props) {
|
|
18
|
+
const ns = vue3Util.useNamespace("form-mdctrl-md");
|
|
19
|
+
const showActions = vue.computed(() => {
|
|
20
|
+
return props.controller.enableCreate || props.controller.enableDelete;
|
|
21
|
+
});
|
|
22
|
+
const onCreated = (event) => {
|
|
23
|
+
props.controller.setMDControl(event.ctrl);
|
|
24
|
+
};
|
|
25
|
+
const isSelected = vue.ref(false);
|
|
26
|
+
const onSelectionChange = (event) => {
|
|
27
|
+
isSelected.value = event.data.length > 0;
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
ns,
|
|
31
|
+
showActions,
|
|
32
|
+
isSelected,
|
|
33
|
+
onCreated,
|
|
34
|
+
onSelectionChange
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
render() {
|
|
38
|
+
const {
|
|
39
|
+
mdProvider,
|
|
40
|
+
model
|
|
41
|
+
} = this.controller;
|
|
42
|
+
const isLoaded = this.controller.form.state.isLoaded;
|
|
43
|
+
let controlComponent = null;
|
|
44
|
+
if (isLoaded) {
|
|
45
|
+
const controlProps = {
|
|
46
|
+
class: this.ns.b("content"),
|
|
47
|
+
modelData: model.contentControl,
|
|
48
|
+
context: this.controller.form.context,
|
|
49
|
+
params: this.controller.form.params,
|
|
50
|
+
onCreated: this.onCreated,
|
|
51
|
+
onSelectionChange: this.onSelectionChange
|
|
52
|
+
};
|
|
53
|
+
if (model.contentType === "GRID") {
|
|
54
|
+
controlProps.rowEditOpen = true;
|
|
55
|
+
}
|
|
56
|
+
controlComponent = vue.h(vue.resolveComponent(mdProvider.component), controlProps);
|
|
57
|
+
}
|
|
58
|
+
return vue.createVNode("div", {
|
|
59
|
+
"class": this.ns.b()
|
|
60
|
+
}, [this.controller.enableCreate && vue.createVNode(vue.resolveComponent("van-button"), {
|
|
61
|
+
"class": [this.ns.be("actions", "create"), this.ns.be("actions", "btn")],
|
|
62
|
+
"size": "small",
|
|
63
|
+
"type": "primary",
|
|
64
|
+
"onClick": () => this.controller.create()
|
|
65
|
+
}, {
|
|
66
|
+
default: () => [vue.createTextVNode("\u6DFB\u52A0")]
|
|
67
|
+
}), controlComponent, this.showActions && vue.createVNode("div", {
|
|
68
|
+
"class": this.ns.b("actions")
|
|
69
|
+
}, [this.controller.enableDelete && vue.createVNode(vue.resolveComponent("van-button"), {
|
|
70
|
+
"type": "danger",
|
|
71
|
+
"size": "small",
|
|
72
|
+
"disabled": !this.isSelected,
|
|
73
|
+
"class": [this.ns.be("actions", "remove"), this.ns.be("actions", "btn")],
|
|
74
|
+
"onClick": () => this.controller.remove()
|
|
75
|
+
}, {
|
|
76
|
+
default: () => [vue.createTextVNode("\u5220\u9664")]
|
|
77
|
+
})])]);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
exports.FormMDCtrlMD = FormMDCtrlMD;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-form-mdctrl-md-content{flex-grow:1}.ibiz-form-mdctrl-md-actions{flex-shrink:0;text-align:center}.ibiz-form-mdctrl-md-actions .van-button+.van-button{margin-left:0}.ibiz-form-mdctrl-md-actions__btn{width:calc(100% - var(--ibiz-spacing-base) * 2);margin:0 var(--ibiz-spacing-base)}
|
package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater.cjs
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vue = require('vue');
|
|
4
|
+
var runtime = require('@ibiz-template/runtime');
|
|
5
|
+
var vue3Util = require('@ibiz-template/vue3-util');
|
|
6
|
+
var repeaterSingleForm = require('./repeater-single-form/repeater-single-form.cjs');
|
|
7
|
+
var repeaterMultiForm = require('./repeater-multi-form/repeater-multi-form.cjs');
|
|
8
|
+
|
|
9
|
+
"use strict";
|
|
10
|
+
const FormMDCtrlRepeater = /* @__PURE__ */ vue.defineComponent({
|
|
11
|
+
name: "IBizFormMDCtrlRepeater",
|
|
12
|
+
props: {
|
|
13
|
+
controller: {
|
|
14
|
+
type: runtime.FormMDCtrlRepeaterController,
|
|
15
|
+
required: true
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
setup(props) {
|
|
19
|
+
const ns = vue3Util.useNamespace("form-mdctrl-repeater");
|
|
20
|
+
const onDataChange = (data) => {
|
|
21
|
+
props.controller.setValue(data);
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
ns,
|
|
25
|
+
onDataChange
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
render() {
|
|
29
|
+
const classNames = [this.ns.b()];
|
|
30
|
+
switch (this.controller.repeaterStyle) {
|
|
31
|
+
case "MultiForm":
|
|
32
|
+
return vue.createVNode(repeaterMultiForm.RepeaterMultiForm, {
|
|
33
|
+
"class": classNames,
|
|
34
|
+
"onChange": this.onDataChange,
|
|
35
|
+
"controller": this.controller
|
|
36
|
+
}, null);
|
|
37
|
+
case "SingleForm":
|
|
38
|
+
return vue.createVNode(repeaterSingleForm.RepeaterSingleForm, {
|
|
39
|
+
"class": classNames,
|
|
40
|
+
"data": this.controller.value,
|
|
41
|
+
"controller": this.controller,
|
|
42
|
+
"onChange": this.onDataChange
|
|
43
|
+
}, null);
|
|
44
|
+
default:
|
|
45
|
+
return vue.createVNode("div", {
|
|
46
|
+
"class": classNames
|
|
47
|
+
}, [vue.createTextVNode("\u6682\u672A\u652F\u6301\u91CD\u590D\u5668\u6837\u5F0F"), this.controller.repeaterStyle]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
exports.FormMDCtrlRepeater = FormMDCtrlRepeater;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vue = require('vue');
|
|
4
|
+
var runtime = require('@ibiz-template/runtime');
|
|
5
|
+
var vue3Util = require('@ibiz-template/vue3-util');
|
|
6
|
+
var repeaterSingleForm = require('../repeater-single-form/repeater-single-form.cjs');
|
|
7
|
+
|
|
8
|
+
"use strict";
|
|
9
|
+
const RepeaterMultiForm = /* @__PURE__ */ vue.defineComponent({
|
|
10
|
+
name: "IBizRepeaterMultiForm",
|
|
11
|
+
props: {
|
|
12
|
+
controller: {
|
|
13
|
+
type: runtime.FormMDCtrlRepeaterController,
|
|
14
|
+
required: true
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
emits: {
|
|
18
|
+
change: (_value) => true
|
|
19
|
+
},
|
|
20
|
+
setup(props, {
|
|
21
|
+
emit
|
|
22
|
+
}) {
|
|
23
|
+
const ns = vue3Util.useNamespace("repeater-multi-form");
|
|
24
|
+
const onValueChange = (value, index) => {
|
|
25
|
+
const arrData = [...props.controller.value];
|
|
26
|
+
arrData[index] = value;
|
|
27
|
+
emit("change", arrData);
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
ns,
|
|
31
|
+
onValueChange
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
render() {
|
|
35
|
+
const items = this.controller.value || [];
|
|
36
|
+
return vue.createVNode(vue.resolveComponent("iBizMDCtrlContainer"), {
|
|
37
|
+
"class": this.ns.b(),
|
|
38
|
+
"items": items,
|
|
39
|
+
"enableCreate": this.controller.enableCreate,
|
|
40
|
+
"enableDelete": this.controller.enableDelete,
|
|
41
|
+
"onAddClick": () => this.controller.create(),
|
|
42
|
+
"onRemoveClick": (_item, index) => this.controller.remove(index)
|
|
43
|
+
}, {
|
|
44
|
+
item: ({
|
|
45
|
+
data,
|
|
46
|
+
index
|
|
47
|
+
}) => {
|
|
48
|
+
return vue.createVNode(repeaterSingleForm.RepeaterSingleForm, {
|
|
49
|
+
"key": index,
|
|
50
|
+
"data": data,
|
|
51
|
+
"controller": this.controller,
|
|
52
|
+
"onChange": (value) => {
|
|
53
|
+
this.onValueChange(value, index);
|
|
54
|
+
}
|
|
55
|
+
}, null);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
exports.RepeaterMultiForm = RepeaterMultiForm;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vue = require('vue');
|
|
4
|
+
var runtime = require('@ibiz-template/runtime');
|
|
5
|
+
var core = require('@ibiz-template/core');
|
|
6
|
+
var vue3Util = require('@ibiz-template/vue3-util');
|
|
7
|
+
require('./repeater-single-form.css');
|
|
8
|
+
|
|
9
|
+
"use strict";
|
|
10
|
+
const RepeaterSingleForm = /* @__PURE__ */ vue.defineComponent({
|
|
11
|
+
name: "IBizRepeaterSingleForm",
|
|
12
|
+
props: {
|
|
13
|
+
data: {
|
|
14
|
+
type: Object,
|
|
15
|
+
required: true
|
|
16
|
+
},
|
|
17
|
+
controller: {
|
|
18
|
+
type: runtime.FormMDCtrlRepeaterController,
|
|
19
|
+
required: true
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
emits: {
|
|
23
|
+
change: (_value) => true
|
|
24
|
+
},
|
|
25
|
+
setup(_props, {
|
|
26
|
+
emit
|
|
27
|
+
}) {
|
|
28
|
+
const ns = vue3Util.useNamespace("repeater-single-form");
|
|
29
|
+
const onFormDataChange = (event) => {
|
|
30
|
+
const formData = {
|
|
31
|
+
...event.data[0]
|
|
32
|
+
};
|
|
33
|
+
emit("change", formData);
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
ns,
|
|
37
|
+
onFormDataChange
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
render() {
|
|
41
|
+
if (!this.controller.repeatedForm) {
|
|
42
|
+
throw new core.RuntimeError("\u6CA1\u6709repeatedForm");
|
|
43
|
+
}
|
|
44
|
+
return vue.createVNode(vue.resolveComponent("iBizControlShell"), {
|
|
45
|
+
"class": this.ns.b(),
|
|
46
|
+
"context": this.controller.context,
|
|
47
|
+
"params": this.controller.params,
|
|
48
|
+
"modelData": this.controller.repeatedForm,
|
|
49
|
+
"isSimple": true,
|
|
50
|
+
"data": this.data,
|
|
51
|
+
"onFormDataChange": this.onFormDataChange
|
|
52
|
+
}, null);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
exports.RepeaterSingleForm = RepeaterSingleForm;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-repeater-single-form{--ibiz-repeater-single-form-header-height:32px;width:100%}.ibiz-repeater-single-form__content{width:100%}.ibiz-repeater-single-form-header{height:var(--ibiz-repeater-single-form-header-height)}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var vue = require('vue');
|
|
6
6
|
var vue3Util = require('@ibiz-template/vue3-util');
|
|
7
7
|
var runtime = require('@ibiz-template/runtime');
|
|
8
|
+
require('./form-mdctrl.css');
|
|
8
9
|
|
|
9
10
|
"use strict";
|
|
10
11
|
const FormMDCtrl = /* @__PURE__ */ vue.defineComponent({
|
|
@@ -20,65 +21,50 @@ const FormMDCtrl = /* @__PURE__ */ vue.defineComponent({
|
|
|
20
21
|
}
|
|
21
22
|
},
|
|
22
23
|
setup(props) {
|
|
24
|
+
const ns = vue3Util.useNamespace("form-mdctrl");
|
|
23
25
|
vue3Util.useController(props.controller);
|
|
24
26
|
const c = props.controller;
|
|
25
|
-
const
|
|
26
|
-
switch (c.model.detailStyle) {
|
|
27
|
-
case "STYLE2":
|
|
28
|
-
return vue.createVNode(vue.resolveComponent("iBizFormMDCtrlRepeaterGrid"), {
|
|
29
|
-
"controller": c.mdCtrlContentController
|
|
30
|
-
}, null);
|
|
31
|
-
case "STYLE3":
|
|
32
|
-
return vue.createVNode(vue.resolveComponent("iBizFormMDCtrlRepeaterFormOne"), {
|
|
33
|
-
"controller": c.mdCtrlContentController
|
|
34
|
-
}, null);
|
|
35
|
-
default:
|
|
36
|
-
return vue.createVNode(vue.resolveComponent("iBizFormMDCtrlRepeaterForm"), {
|
|
37
|
-
"controller": c.mdCtrlContentController
|
|
38
|
-
}, null);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
27
|
+
const hasCaption = c.model.showCaption && !!c.model.caption;
|
|
41
28
|
return {
|
|
42
29
|
c,
|
|
43
|
-
|
|
30
|
+
ns,
|
|
31
|
+
hasCaption
|
|
44
32
|
};
|
|
45
33
|
},
|
|
46
34
|
render() {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
};
|
|
81
|
-
return renderContentByType();
|
|
35
|
+
const {
|
|
36
|
+
model
|
|
37
|
+
} = this.c;
|
|
38
|
+
let content;
|
|
39
|
+
switch (model.contentType) {
|
|
40
|
+
case "GRID":
|
|
41
|
+
case "LIST":
|
|
42
|
+
case "DATAVIEW":
|
|
43
|
+
content = vue.createVNode(vue.resolveComponent("iBizFormMDCtrlMD"), {
|
|
44
|
+
"controller": this.c
|
|
45
|
+
}, null);
|
|
46
|
+
break;
|
|
47
|
+
case "FORM":
|
|
48
|
+
content = vue.createVNode(vue.resolveComponent("iBizFormMDCtrlForm"), {
|
|
49
|
+
"controller": this.c
|
|
50
|
+
}, null);
|
|
51
|
+
break;
|
|
52
|
+
case "REPEATER":
|
|
53
|
+
content = vue.createVNode(vue.resolveComponent("iBizFormMDCtrlRepeater"), {
|
|
54
|
+
"controller": this.c
|
|
55
|
+
}, null);
|
|
56
|
+
break;
|
|
57
|
+
default:
|
|
58
|
+
vue.createVNode("div", null, [model.contentType, vue.createTextVNode("\u6682\u672A\u652F\u6301")]);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
return vue.createVNode("div", {
|
|
62
|
+
"class": [this.ns.b(), this.ns.m(this.modelData.codeName), ...this.controller.containerClass, this.hasCaption ? this.ns.m("show-caption") : ""]
|
|
63
|
+
}, [this.hasCaption && vue.createVNode("div", {
|
|
64
|
+
"class": this.ns.b("header")
|
|
65
|
+
}, [vue.createVNode("span", {
|
|
66
|
+
"class": this.ns.e("title")
|
|
67
|
+
}, [this.c.model.caption])]), content]);
|
|
82
68
|
}
|
|
83
69
|
});
|
|
84
70
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-form-mdctrl{--ibiz-form-mdctrl-header-height:32px;--ibiz-form-mdctrl-header-bg-color:var(--ibiz-color-bg-1);--ibiz-form-mdctrl-header-padding:var(--ibiz-spacing-base);--ibiz-form-mdctrl-header-border-color:var(--ibiz-color-border);--ibiz-form-mdctrl-caption-text-color:var(--ibiz-color-text-0);--ibiz-form-mdctrl-caption-font-size:var(--ibiz-font-size-header-6);--ibiz-form-mdctrl-caption-font-weight:var(--ibiz-font-weight-bold)}.ibiz-form-mdctrl__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ibiz-form-mdctrl-caption-font-size);font-weight:var(--ibiz-form-mdctrl-caption-font-weight);color:var(--ibiz-form-mdctrl-caption-text-color)}.ibiz-form-mdctrl-header{padding:var(--ibiz-form-mdctrl-header-padding);line-height:var(--ibiz-form-mdctrl-header-height)}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var core = require('@ibiz-template/core');
|
|
3
4
|
var runtime = require('@ibiz-template/runtime');
|
|
4
5
|
|
|
5
6
|
"use strict";
|
|
@@ -14,7 +15,25 @@ class FormMDCtrlProvider {
|
|
|
14
15
|
__publicField(this, "component", "IBizFormMDCtrl");
|
|
15
16
|
}
|
|
16
17
|
async createController(detailModel, form, parent) {
|
|
17
|
-
|
|
18
|
+
let c;
|
|
19
|
+
switch (detailModel.contentType) {
|
|
20
|
+
case "LIST":
|
|
21
|
+
case "GRID":
|
|
22
|
+
case "DATAVIEW":
|
|
23
|
+
c = new runtime.FormMDCtrlMDController(detailModel, form, parent);
|
|
24
|
+
break;
|
|
25
|
+
case "FORM":
|
|
26
|
+
c = new runtime.FormMDCtrlFormController(detailModel, form, parent);
|
|
27
|
+
break;
|
|
28
|
+
case "REPEATER":
|
|
29
|
+
c = new runtime.FormMDCtrlRepeaterController(detailModel, form, parent);
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
throw new core.ModelError(
|
|
33
|
+
detailModel,
|
|
34
|
+
`\u6682\u672A\u652F\u6301\u5185\u5BB9\u7C7B\u578B\u4E3A${detailModel.contentType}`
|
|
35
|
+
);
|
|
36
|
+
}
|
|
18
37
|
await c.init();
|
|
19
38
|
return c;
|
|
20
39
|
}
|
|
@@ -5,13 +5,21 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var runtime = require('@ibiz-template/runtime');
|
|
6
6
|
var vue3Util = require('@ibiz-template/vue3-util');
|
|
7
7
|
var formMdctrl = require('./form-mdctrl.cjs');
|
|
8
|
+
var formMdctrlForm = require('./form-mdctrl-form/form-mdctrl-form.cjs');
|
|
9
|
+
var formMdctrlMd = require('./form-mdctrl-md/form-mdctrl-md.cjs');
|
|
10
|
+
var formMdctrlRepeater = require('./form-mdctrl-repeater/form-mdctrl-repeater.cjs');
|
|
8
11
|
var formMdctrl_provider = require('./form-mdctrl.provider.cjs');
|
|
12
|
+
var mdctrlContainer = require('./mdctrl-container/mdctrl-container.cjs');
|
|
9
13
|
|
|
10
14
|
"use strict";
|
|
11
15
|
const IBizFormMDCtrl = vue3Util.withInstall(formMdctrl.FormMDCtrl, function(v) {
|
|
16
|
+
v.component(formMdctrl.FormMDCtrl.name, formMdctrl.FormMDCtrl);
|
|
17
|
+
v.component(formMdctrlForm.FormMDCtrlForm.name, formMdctrlForm.FormMDCtrlForm);
|
|
18
|
+
v.component(formMdctrlMd.FormMDCtrlMD.name, formMdctrlMd.FormMDCtrlMD);
|
|
19
|
+
v.component(formMdctrlRepeater.FormMDCtrlRepeater.name, formMdctrlRepeater.FormMDCtrlRepeater);
|
|
20
|
+
v.component(mdctrlContainer.MDCtrlContainer.name, mdctrlContainer.MDCtrlContainer);
|
|
12
21
|
runtime.registerFormDetailProvider("MDCTRL", () => new formMdctrl_provider.FormMDCtrlProvider());
|
|
13
22
|
});
|
|
14
23
|
|
|
15
|
-
exports.FormMDCtrlProvider = formMdctrl_provider.FormMDCtrlProvider;
|
|
16
24
|
exports.IBizFormMDCtrl = IBizFormMDCtrl;
|
|
17
25
|
exports.default = IBizFormMDCtrl;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vue = require('vue');
|
|
4
|
+
var vue3Util = require('@ibiz-template/vue3-util');
|
|
5
|
+
require('./mdctrl-container.css');
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
const MDCtrlContainer = /* @__PURE__ */ vue.defineComponent({
|
|
9
|
+
name: "IBizMDCtrlContainer",
|
|
10
|
+
props: {
|
|
11
|
+
enableCreate: {
|
|
12
|
+
type: Boolean,
|
|
13
|
+
required: true
|
|
14
|
+
},
|
|
15
|
+
enableDelete: {
|
|
16
|
+
type: Boolean,
|
|
17
|
+
required: true
|
|
18
|
+
},
|
|
19
|
+
items: {
|
|
20
|
+
type: Object,
|
|
21
|
+
required: true
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
emits: {
|
|
25
|
+
addClick: () => true,
|
|
26
|
+
removeClick: (_data, _index) => true
|
|
27
|
+
},
|
|
28
|
+
setup(props, {
|
|
29
|
+
emit
|
|
30
|
+
}) {
|
|
31
|
+
const ns = vue3Util.useNamespace("mdctrl-container");
|
|
32
|
+
const showActions = vue.computed(() => {
|
|
33
|
+
return props.enableCreate || props.enableDelete;
|
|
34
|
+
});
|
|
35
|
+
const renderAddBtn = () => {
|
|
36
|
+
return vue.createVNode(vue.resolveComponent("van-button"), {
|
|
37
|
+
"class": [ns.be("item-actions", "create"), ns.be("item-actions", "btn")],
|
|
38
|
+
"size": "small",
|
|
39
|
+
"onClick": () => emit("addClick"),
|
|
40
|
+
"type": "primary"
|
|
41
|
+
}, {
|
|
42
|
+
default: () => [vue.createTextVNode("\u6DFB\u52A0")]
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
const renderRemoveBtn = (item, index) => {
|
|
46
|
+
if (!props.enableDelete) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
if (ibiz.config.form.mdCtrlConfirmBeforeRemove) {
|
|
50
|
+
return vue.createVNode(vue.resolveComponent("van-button"), {
|
|
51
|
+
"class": [ns.be("item-actions", "remove"), ns.be("item-actions", "btn")],
|
|
52
|
+
"size": "small",
|
|
53
|
+
"type": "danger",
|
|
54
|
+
"onClick": () => {
|
|
55
|
+
emit("removeClick", item, index);
|
|
56
|
+
}
|
|
57
|
+
}, {
|
|
58
|
+
default: () => [vue.createTextVNode("\u5220\u9664")]
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return vue.createVNode(vue.resolveComponent("van-button"), {
|
|
62
|
+
"class": [ns.be("item-actions", "remove"), ns.be("item-actions", "btn")],
|
|
63
|
+
"type": "danger",
|
|
64
|
+
"size": "small",
|
|
65
|
+
"onClick": () => {
|
|
66
|
+
emit("removeClick", item, index);
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
default: () => [vue.createTextVNode("\u5220\u9664")]
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
ns,
|
|
74
|
+
showActions,
|
|
75
|
+
renderAddBtn,
|
|
76
|
+
renderRemoveBtn
|
|
77
|
+
};
|
|
78
|
+
},
|
|
79
|
+
render() {
|
|
80
|
+
return vue.createVNode("div", {
|
|
81
|
+
"class": this.ns.b()
|
|
82
|
+
}, [this.enableCreate && this.renderAddBtn(), this.items.map((item, index) => {
|
|
83
|
+
const formComponent = this.$slots.item ? this.$slots.item({
|
|
84
|
+
data: item,
|
|
85
|
+
index
|
|
86
|
+
}) : vue.createVNode("div", null, [vue.createTextVNode("\u672A\u63D0\u4F9Bitem\u63D2\u69FD")]);
|
|
87
|
+
return vue.createVNode("div", {
|
|
88
|
+
"class": this.ns.b("item")
|
|
89
|
+
}, [formComponent, this.showActions && vue.createVNode("div", {
|
|
90
|
+
"class": this.ns.b("item-actions")
|
|
91
|
+
}, [this.renderRemoveBtn(item, index)])]);
|
|
92
|
+
})]);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
exports.MDCtrlContainer = MDCtrlContainer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-mdctrl-container{display:flex;flex-direction:column;gap:10px;padding:var(--ibiz-spacing-tight) 0}.ibiz-mdctrl-container-item__form{flex-grow:1}.ibiz-mdctrl-container-item-actions{flex-shrink:0;width:100%;text-align:center}.ibiz-mdctrl-container-item-actions .van-button+.van-button{margin-left:0}.ibiz-mdctrl-container-item-actions__btn{width:calc(100% - var(--ibiz-spacing-base) * 2);margin:0 var(--ibiz-spacing-base)}.ibiz-mdctrl-container-no-data{width:100%;display:flex;justify-content:flex-end}
|