@ibiz-template/mob-vue3-components 0.7.41-alpha.7 → 0.7.41-alpha.9
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-O-XmMUt3.js → index-JSf84k9b.js} +2 -2
- package/dist/index-JSf84k9b.js.map +1 -0
- package/dist/{index-NP0RBfWK.js → index-OsiEgFnw.js} +2 -2
- package/dist/index-OsiEgFnw.js.map +1 -0
- package/dist/index-m5kpisiW.js +76 -0
- package/dist/index-m5kpisiW.js.map +1 -0
- package/dist/index.min.css +8 -8
- package/dist/index.system.min.js +1 -1
- package/dist/{quill-editor-preview-Dui7L0ne.js → quill-editor-preview-4GJgBqkz.js} +2 -2
- package/dist/{quill-editor-preview-Dui7L0ne.js.map → quill-editor-preview-4GJgBqkz.js.map} +1 -1
- package/dist/{quill-editor-BMC0diFC.js → quill-editor-wtClM5Dv.js} +2 -2
- package/dist/{quill-editor-BMC0diFC.js.map → quill-editor-wtClM5Dv.js.map} +1 -1
- package/dist/{quill-O7hIDmrl.js → quill-fQu2PNuh.js} +2 -2
- package/dist/{quill-O7hIDmrl.js.map → quill-fQu2PNuh.js.map} +1 -1
- package/es/common/button-list/button-list.d.ts +1 -0
- package/es/common/date-range-picker/components/range-picker/range-picker.d.ts +1 -1
- package/es/common/date-range-picker/date-range-picker.d.ts +2 -2
- package/es/common/emoji-select/components/emoji-list/emoji-list.d.ts +1 -1
- package/es/common/emoji-select/icons/search.d.ts +1 -0
- package/es/common/index.mjs +2 -1
- package/es/common/md-ctrl-setting/md-ctrl-setting.d.ts +3 -3
- package/es/control/app-menu/custom-menu-design/custom-menu-design.d.ts +1 -1
- package/es/control/dashboard/portlet/portlet-part/portlet-part.state.d.ts +1 -0
- package/es/control/dashboard/portlet/portlet-part/portlet-part.state.mjs +1 -0
- package/es/control/data-view/data-view.d.ts +2 -2
- package/es/control/data-view/data-view.mjs +2 -3
- package/es/control/data-view/index.d.ts +2 -2
- package/es/control/drbar/drbar.controller.d.ts +1 -0
- package/es/control/drbar/drbar.controller.mjs +3 -0
- package/es/control/drbar/drbar.d.ts +2 -2
- package/es/control/drbar/index.d.ts +2 -2
- package/es/control/drtab/drtab.controller.d.ts +1 -0
- package/es/control/drtab/drtab.controller.mjs +3 -0
- package/es/control/drtab/drtab.d.ts +2 -2
- package/es/control/drtab/index.d.ts +2 -2
- package/es/control/form/form-detail/form-group-panel/form-group-panel.css +1 -1
- package/es/control/form/form-detail/form-item/form-item-container/form-item-container.d.ts +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.d.ts +1 -1
- package/es/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.d.ts +3 -3
- package/es/control/list/list/index.d.ts +2 -2
- package/es/control/list/list/list.d.ts +2 -2
- package/es/control/list/list-render-util.d.ts +1 -0
- package/es/control/list/md-ctrl/index.d.ts +2 -2
- package/es/control/list/md-ctrl/md-ctrl.d.ts +2 -2
- package/es/control/pickup-view-panel/pickup-view-panel.controller.d.ts +2 -0
- package/es/control/pickup-view-panel/pickup-view-panel.controller.mjs +3 -0
- package/es/control/search-bar/filter-tree/filter-tree.d.ts +2 -2
- package/es/control/toolbar/index.d.ts +2 -2
- package/es/control/toolbar/popper-toolbar/popper-toolbar.d.ts +1 -1
- package/es/control/toolbar/toolbar.d.ts +2 -2
- package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.d.ts +1 -1
- package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.mjs +144 -26
- package/es/editor/data-picker/ibiz-picker/ibiz-picker.d.ts +2 -2
- package/es/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.d.ts +2 -2
- package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.d.ts +2 -2
- package/es/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.d.ts +1 -0
- package/es/editor/index.mjs +7 -1
- package/es/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.d.ts +1 -1
- package/es/editor/text-box/index.d.ts +1 -0
- package/es/editor/text-box/index.mjs +1 -0
- package/es/editor/text-box/signature/signature.css +1 -0
- package/es/editor/text-box/signature/signature.d.ts +104 -0
- package/es/editor/text-box/signature/signature.mjs +256 -0
- package/es/editor/text-box/text-box-editor.provider.mjs +3 -0
- package/es/index.mjs +1 -0
- package/es/locale/en/index.d.ts +28 -5
- package/es/locale/en/index.mjs +14 -0
- package/es/locale/zh-CN/index.d.ts +28 -5
- package/es/locale/zh-CN/index.mjs +14 -0
- package/es/mob-app/App.mjs +17 -1
- package/es/mob-app/guard/auth-guard/auth-guard.mjs +95 -2
- package/es/mob-app/util/unauthorized-handler/unauthorized-handler.d.ts +13 -5
- package/es/mob-app/util/unauthorized-handler/unauthorized-handler.mjs +50 -15
- package/es/panel-component/auth-sso/auth-sso.css +1 -1
- package/es/panel-component/auth-sso/auth-sso.d.ts +8 -3
- package/es/panel-component/auth-sso/auth-sso.mjs +78 -6
- package/es/panel-component/auth-sso/index.d.ts +7 -1
- package/es/panel-component/user-message/index.d.ts +1 -1
- package/es/panel-component/user-message/user-message.d.ts +1 -1
- package/es/util/app-util/app-util.d.ts +59 -1
- package/es/util/app-util/app-util.mjs +56 -1
- package/es/view-engine/login-view.engine.d.ts +2 -2
- package/es/view-engine/login-view.engine.mjs +2 -0
- package/es/view-engine/mob-data-view-engine.d.ts +2 -2
- package/es/view-engine/mob-data-view-engine.mjs +0 -1
- package/es/view-engine/mob-edit-view.engine.d.ts +2 -2
- package/es/view-engine/mob-edit-view.engine.mjs +5 -1
- package/es/view-engine/mob-md-view-engine.d.ts +2 -2
- package/es/view-engine/mob-md-view-engine.mjs +0 -1
- package/es/view-engine/mob-mpickup-view-engine.d.ts +20 -14
- package/es/view-engine/mob-mpickup-view-engine.mjs +34 -26
- package/es/view-engine/mob-opt-view.engine.d.ts +2 -2
- package/es/view-engine/mob-pickup-md-view.engine.d.ts +2 -2
- package/es/view-engine/mob-pickup-md-view.engine.mjs +0 -1
- package/es/view-engine/mob-pickup-view.engine.d.ts +9 -2
- package/es/view-engine/mob-pickup-view.engine.mjs +15 -1
- package/es/view-engine/mob-tab-search-view.engine.d.ts +2 -2
- package/es/view-engine/mob-tab-search-view.engine.mjs +0 -1
- package/es/view-engine/mob-wf-dyna-action-view.engine.d.ts +2 -2
- package/es/view-engine/mob-wf-dyna-action-view.engine.mjs +0 -1
- package/es/view-engine/mob-wf-dyna-edit-view.engine.d.ts +2 -2
- package/es/view-engine/mob-wf-dyna-edit-view.engine.mjs +0 -1
- package/es/view-engine/mob-wf-dyna-start-view.engine.d.ts +2 -2
- package/es/view-engine/mob-wf-dyna-start-view.engine.mjs +0 -1
- package/lib/common/index.cjs +1 -0
- package/lib/control/dashboard/portlet/portlet-part/portlet-part.state.cjs +1 -0
- package/lib/control/data-view/data-view.cjs +2 -3
- package/lib/control/drbar/drbar.controller.cjs +3 -0
- package/lib/control/drtab/drtab.controller.cjs +3 -0
- package/lib/control/form/form-detail/form-group-panel/form-group-panel.css +1 -1
- package/lib/control/pickup-view-panel/pickup-view-panel.controller.cjs +3 -0
- package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.cjs +144 -26
- package/lib/editor/index.cjs +7 -0
- package/lib/editor/text-box/index.cjs +2 -0
- package/lib/editor/text-box/signature/signature.cjs +258 -0
- package/lib/editor/text-box/signature/signature.css +1 -0
- package/lib/editor/text-box/text-box-editor.provider.cjs +3 -0
- package/lib/index.cjs +2 -0
- package/lib/locale/en/index.cjs +14 -0
- package/lib/locale/zh-CN/index.cjs +14 -0
- package/lib/mob-app/App.cjs +16 -0
- package/lib/mob-app/guard/auth-guard/auth-guard.cjs +95 -2
- package/lib/mob-app/util/unauthorized-handler/unauthorized-handler.cjs +50 -15
- package/lib/panel-component/auth-sso/auth-sso.cjs +77 -5
- package/lib/panel-component/auth-sso/auth-sso.css +1 -1
- package/lib/util/app-util/app-util.cjs +55 -0
- package/lib/view-engine/login-view.engine.cjs +2 -0
- package/lib/view-engine/mob-data-view-engine.cjs +0 -1
- package/lib/view-engine/mob-edit-view.engine.cjs +5 -1
- package/lib/view-engine/mob-md-view-engine.cjs +0 -1
- package/lib/view-engine/mob-mpickup-view-engine.cjs +34 -26
- package/lib/view-engine/mob-pickup-md-view.engine.cjs +0 -1
- package/lib/view-engine/mob-pickup-view.engine.cjs +15 -1
- package/lib/view-engine/mob-tab-search-view.engine.cjs +0 -1
- package/lib/view-engine/mob-wf-dyna-action-view.engine.cjs +0 -1
- package/lib/view-engine/mob-wf-dyna-edit-view.engine.cjs +0 -1
- package/lib/view-engine/mob-wf-dyna-start-view.engine.cjs +0 -1
- package/package.json +6 -6
- package/dist/index-NP0RBfWK.js.map +0 -1
- package/dist/index-O-XmMUt3.js.map +0 -1
- package/dist/index-komJV5bQ.js +0 -76
- package/dist/index-komJV5bQ.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ref, watch, computed, resolveComponent, createVNode, defineComponent } from 'vue';
|
|
2
2
|
import { getDataPickerProps, getEditorEmits, useNamespace } from '@ibiz-template/vue3-util';
|
|
3
|
+
import { clone } from 'lodash-es';
|
|
3
4
|
import './ibiz-mpicker.css';
|
|
4
5
|
import { IBizDataMPicker } from '../../common/data-mpicker/ibiz-data-mpicker.mjs';
|
|
5
6
|
import { IBizCommonRightIcon } from '../../common/right-icon/right-icon.mjs';
|
|
@@ -24,39 +25,119 @@ const IBizMPicker = /* @__PURE__ */ defineComponent({
|
|
|
24
25
|
value: item[c.keyName] || item.srfkey,
|
|
25
26
|
srfmajortext: item[c.textName] || item.srfmajortext,
|
|
26
27
|
text: item[c.textName] || item.srfmajortext,
|
|
28
|
+
[c.keyName]: item[c.keyName] || item.srfkey,
|
|
29
|
+
[c.textName]: item[c.textName] || item.srfmajortext,
|
|
27
30
|
...item
|
|
28
31
|
};
|
|
29
32
|
};
|
|
30
|
-
|
|
33
|
+
const resetCurValue = () => {
|
|
31
34
|
curValue.value = [];
|
|
32
35
|
selectItems.value = [];
|
|
33
|
-
if (
|
|
34
|
-
|
|
36
|
+
if (props.value) {
|
|
37
|
+
if (c.model.valueType === "OBJECTS") {
|
|
38
|
+
props.value.forEach((item) => {
|
|
39
|
+
const _item = clone(item);
|
|
40
|
+
Object.assign(_item, {
|
|
41
|
+
[c.keyName]: item[c.objectIdField],
|
|
42
|
+
[c.textName]: item[c.objectNameField]
|
|
43
|
+
});
|
|
44
|
+
if (c.objectValueField) {
|
|
45
|
+
Object.assign(_item, {
|
|
46
|
+
...item[c.objectValueField]
|
|
47
|
+
});
|
|
48
|
+
delete _item[c.objectValueField];
|
|
49
|
+
}
|
|
50
|
+
if (_item[c.keyName]) {
|
|
51
|
+
selectItems.value.push(formatter(_item));
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
} else if (c.objectIdField && c.model.valueSeparator) {
|
|
55
|
+
const values = props.value.split(c.model.valueSeparator);
|
|
56
|
+
values.forEach((value) => {
|
|
57
|
+
selectItems.value.push(formatter({
|
|
58
|
+
[c.keyName]: value
|
|
59
|
+
}));
|
|
60
|
+
});
|
|
61
|
+
} else {
|
|
62
|
+
try {
|
|
63
|
+
selectItems.value = JSON.parse(props.value).map(formatter);
|
|
64
|
+
} catch (error) {
|
|
65
|
+
ibiz.log.error(ibiz.i18n.t("editor.mpicker.simpleErr", {
|
|
66
|
+
value: props.value
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
35
70
|
selectItems.value.forEach((item) => {
|
|
36
|
-
curValue.value.push(item.
|
|
37
|
-
const index = items.value.findIndex(
|
|
71
|
+
curValue.value.push(item[c.keyName]);
|
|
72
|
+
const index = items.value.findIndex(
|
|
73
|
+
(i) => Object.is(i[c.keyName], item[c.keyName]) || Object.is(i.srfkey, item.srfkey)
|
|
74
|
+
// 兼容写法,适配移动端老逻辑
|
|
75
|
+
);
|
|
38
76
|
if (index < 0) {
|
|
39
77
|
items.value.push(formatter(item));
|
|
40
78
|
}
|
|
41
79
|
});
|
|
42
80
|
}
|
|
81
|
+
};
|
|
82
|
+
watch(() => props.value, () => {
|
|
83
|
+
resetCurValue();
|
|
43
84
|
}, {
|
|
44
85
|
immediate: true,
|
|
45
86
|
deep: true
|
|
46
87
|
});
|
|
47
|
-
const handleOpenViewClose = (result) => {
|
|
48
|
-
const
|
|
88
|
+
const handleOpenViewClose = async (result) => {
|
|
89
|
+
const selects = [];
|
|
49
90
|
if (result && Array.isArray(result)) {
|
|
50
|
-
result.
|
|
51
|
-
const
|
|
52
|
-
|
|
91
|
+
const calcPromises = result.map(async (select) => {
|
|
92
|
+
const item = formatter(select);
|
|
93
|
+
if (select.srfnodeid) {
|
|
94
|
+
Object.assign(item, select._deData);
|
|
95
|
+
}
|
|
96
|
+
const dataItems = await c.calcFillDataItems(item);
|
|
97
|
+
const res = {};
|
|
98
|
+
dataItems.forEach((dataItem) => {
|
|
99
|
+
Object.assign(res, {
|
|
100
|
+
[dataItem.id]: dataItem.value
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
return res;
|
|
104
|
+
});
|
|
105
|
+
const dataItemsList = await Promise.all(calcPromises);
|
|
106
|
+
result.forEach((select, _index) => {
|
|
107
|
+
Object.assign(select, {
|
|
108
|
+
...formatter(select),
|
|
109
|
+
[c.keyName]: select[c.keyName] ? select[c.keyName] : select.srfkey,
|
|
110
|
+
[c.textName]: select[c.textName] ? select[c.textName] : select.srfmajortext
|
|
111
|
+
});
|
|
112
|
+
const data = dataItemsList[_index];
|
|
113
|
+
if (c.model.valueType === "OBJECTS") {
|
|
114
|
+
selects.push({
|
|
115
|
+
...c.handleObjectParams(select),
|
|
116
|
+
...data
|
|
117
|
+
});
|
|
118
|
+
} else if (c.objectIdField && c.model.valueSeparator) {
|
|
119
|
+
selects.push(select[c.keyName]);
|
|
120
|
+
} else {
|
|
121
|
+
selects.push({
|
|
122
|
+
[c.keyName]: select[c.keyName],
|
|
123
|
+
[c.textName]: select[c.textName],
|
|
124
|
+
...data
|
|
125
|
+
});
|
|
126
|
+
}
|
|
53
127
|
const index = items.value.findIndex((item) => Object.is(item[c.keyName], select[c.keyName]));
|
|
54
128
|
if (index < 0) {
|
|
55
|
-
items.value.push(
|
|
129
|
+
items.value.push(select);
|
|
56
130
|
}
|
|
57
131
|
});
|
|
58
132
|
}
|
|
59
|
-
|
|
133
|
+
let value = null;
|
|
134
|
+
if (selects.length > 0) {
|
|
135
|
+
if (c.model.valueType === "OBJECTS") {
|
|
136
|
+
value = selects;
|
|
137
|
+
} else {
|
|
138
|
+
value = c.objectIdField && c.model.valueSeparator ? selects.join(c.model.valueSeparator) : JSON.stringify(selects);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
60
141
|
emit("change", value);
|
|
61
142
|
};
|
|
62
143
|
const openPickUpView = async (event) => {
|
|
@@ -74,21 +155,58 @@ const IBizMPicker = /* @__PURE__ */ defineComponent({
|
|
|
74
155
|
handleOpenViewClose(res);
|
|
75
156
|
}
|
|
76
157
|
};
|
|
77
|
-
const onSelect = (selects) => {
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
158
|
+
const onSelect = async (selects) => {
|
|
159
|
+
const val = [];
|
|
160
|
+
let value = null;
|
|
161
|
+
const selections = selects.map((select) => {
|
|
162
|
+
let index = items.value.findIndex((item2) => Object.is(item2[c.keyName], select));
|
|
163
|
+
let item = {};
|
|
164
|
+
if (index >= 0) {
|
|
165
|
+
item = items.value[index];
|
|
166
|
+
} else {
|
|
167
|
+
index = selectItems.value.findIndex((selectItem) => Object.is(selectItem[c.keyName], select));
|
|
168
|
+
if (index >= 0) {
|
|
169
|
+
item = selectItems.value[index];
|
|
84
170
|
}
|
|
171
|
+
}
|
|
172
|
+
return item;
|
|
173
|
+
});
|
|
174
|
+
const calcPromises = selections.map(async (select) => {
|
|
175
|
+
const dataItems = await c.calcFillDataItems(select);
|
|
176
|
+
const res = {};
|
|
177
|
+
dataItems.forEach((dataItem) => {
|
|
178
|
+
Object.assign(res, {
|
|
179
|
+
[dataItem.id]: dataItem.value
|
|
180
|
+
});
|
|
85
181
|
});
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
182
|
+
return res;
|
|
183
|
+
});
|
|
184
|
+
const dataItemsList = await Promise.all(calcPromises);
|
|
185
|
+
selections.forEach((item, index) => {
|
|
186
|
+
const data = dataItemsList[index];
|
|
187
|
+
if (c.model.valueType === "OBJECTS") {
|
|
188
|
+
val.push({
|
|
189
|
+
...c.handleObjectParams(item),
|
|
190
|
+
...data
|
|
191
|
+
});
|
|
192
|
+
} else if (c.objectIdField && c.model.valueSeparator) {
|
|
193
|
+
val.push(item[c.keyName]);
|
|
194
|
+
} else {
|
|
195
|
+
val.push({
|
|
196
|
+
[c.keyName]: item[c.keyName],
|
|
197
|
+
[c.textName]: item[c.textName],
|
|
198
|
+
...data
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
if (val.length > 0) {
|
|
203
|
+
if (c.model.valueType === "OBJECTS") {
|
|
204
|
+
value = val;
|
|
205
|
+
} else {
|
|
206
|
+
value = c.objectIdField && c.model.valueSeparator ? val.join(c.model.valueSeparator) : JSON.stringify(val);
|
|
207
|
+
}
|
|
91
208
|
}
|
|
209
|
+
emit("change", value);
|
|
92
210
|
};
|
|
93
211
|
const onSearch = async (query = "") => {
|
|
94
212
|
if (c.model.appDataEntityId) {
|
|
@@ -111,7 +229,7 @@ const IBizMPicker = /* @__PURE__ */ defineComponent({
|
|
|
111
229
|
selectItems.value.forEach((select) => {
|
|
112
230
|
if (c.model.valueType === "OBJECTS") {
|
|
113
231
|
val.push(c.handleObjectParams(select));
|
|
114
|
-
} else if (c.objectIdField) {
|
|
232
|
+
} else if (c.objectIdField && c.model.valueSeparator) {
|
|
115
233
|
val.push(select[c.keyName]);
|
|
116
234
|
} else {
|
|
117
235
|
val.push({
|
|
@@ -124,7 +242,7 @@ const IBizMPicker = /* @__PURE__ */ defineComponent({
|
|
|
124
242
|
if (c.model.valueType === "OBJECTS") {
|
|
125
243
|
value = val;
|
|
126
244
|
} else {
|
|
127
|
-
value = c.objectIdField ? val.join(c.model.valueSeparator) : JSON.stringify(val);
|
|
245
|
+
value = c.objectIdField && c.model.valueSeparator ? val.join(c.model.valueSeparator) : JSON.stringify(val);
|
|
128
246
|
}
|
|
129
247
|
}
|
|
130
248
|
emit("change", value);
|
|
@@ -50,8 +50,8 @@ export declare const IBizPicker: import("vue").DefineComponent<{
|
|
|
50
50
|
onConfirm: (item: IData) => void;
|
|
51
51
|
showPicker: Ref<boolean>;
|
|
52
52
|
openPicker: () => Promise<void>;
|
|
53
|
-
renderPopHeader: () => JSX.Element;
|
|
54
|
-
renderPopContent: () => JSX.Element;
|
|
53
|
+
renderPopHeader: () => import("vue/jsx-runtime").JSX.Element;
|
|
54
|
+
renderPopContent: () => import("vue/jsx-runtime").JSX.Element;
|
|
55
55
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
56
56
|
change: (_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => boolean;
|
|
57
57
|
blur: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
|
|
@@ -51,10 +51,10 @@ export declare const IBizDateRangePicker: import("vue").DefineComponent<{
|
|
|
51
51
|
rangeText: import("vue").ComputedRef<string>;
|
|
52
52
|
showmode: "DEFAULT" | "CALENDAR";
|
|
53
53
|
openCalendar: () => void;
|
|
54
|
-
renderCalendarMode: () => JSX.Element;
|
|
54
|
+
renderCalendarMode: () => import("vue/jsx-runtime").JSX.Element;
|
|
55
55
|
onFocus: () => void;
|
|
56
56
|
onBlur: () => void;
|
|
57
|
-
expandHidden: (text: string) => JSX.Element;
|
|
57
|
+
expandHidden: (text: string) => import("vue/jsx-runtime").JSX.Element;
|
|
58
58
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
59
59
|
change: (_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => boolean;
|
|
60
60
|
blur: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
|
|
@@ -43,8 +43,8 @@ export declare const IBizDropdown: import("vue").DefineComponent<{
|
|
|
43
43
|
treeNodes: Ref<import("@ibiz-template/core").IApiData[]>;
|
|
44
44
|
showPicker: Ref<boolean>;
|
|
45
45
|
getCodeListItem: (text: string | undefined) => import("@ibiz-template/core").IApiData | undefined;
|
|
46
|
-
renderPopHeader: () => JSX.Element;
|
|
47
|
-
renderPopContent: () => JSX.Element;
|
|
46
|
+
renderPopHeader: () => import("vue/jsx-runtime").JSX.Element;
|
|
47
|
+
renderPopContent: () => import("vue/jsx-runtime").JSX.Element;
|
|
48
48
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
49
49
|
change: (_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => boolean;
|
|
50
50
|
blur: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
|
package/es/editor/index.mjs
CHANGED
|
@@ -26,6 +26,7 @@ import './check-box/index.mjs';
|
|
|
26
26
|
import './common/index.mjs';
|
|
27
27
|
import { IBizInput } from './text-box/input/input.mjs';
|
|
28
28
|
import { IBizInputNumber } from './text-box/ibiz-input-number/ibiz-input-number.mjs';
|
|
29
|
+
import { IBizSignature } from './text-box/signature/signature.mjs';
|
|
29
30
|
import { IBizSpan } from './span/span/span.mjs';
|
|
30
31
|
import { IBizSwitch } from './switch/ibiz-switch/ibiz-switch.mjs';
|
|
31
32
|
import { IBizRadio } from './radio-button-list/ibiz-radio/ibiz-radio.mjs';
|
|
@@ -101,6 +102,7 @@ const IBizEditor = {
|
|
|
101
102
|
v.component(NotSupportedEditor.name, NotSupportedEditor);
|
|
102
103
|
v.component(IBizInput.name, IBizInput);
|
|
103
104
|
v.component(IBizInputNumber.name, IBizInputNumber);
|
|
105
|
+
v.component(IBizSignature.name, IBizSignature);
|
|
104
106
|
v.component(IBizSpan.name, IBizSpan);
|
|
105
107
|
v.component(IBizSwitch.name, IBizSwitch);
|
|
106
108
|
v.component(IBizRadio.name, IBizRadio);
|
|
@@ -159,6 +161,10 @@ const IBizEditor = {
|
|
|
159
161
|
registerEditorProvider("PASSWORD", () => textBoxEditorProvider);
|
|
160
162
|
registerEditorProvider("TEXTAREA", () => textBoxEditorProvider);
|
|
161
163
|
registerEditorProvider("NUMBER", () => new TextBoxEditorProvider("NUMBER"));
|
|
164
|
+
registerEditorProvider(
|
|
165
|
+
"MOBTEXT_SIGNATURE",
|
|
166
|
+
() => new TextBoxEditorProvider("SIGNATURE")
|
|
167
|
+
);
|
|
162
168
|
registerEditorProvider(
|
|
163
169
|
"MOBDROPDOWNLIST",
|
|
164
170
|
() => new DropDownListEditorProvider()
|
|
@@ -378,4 +384,4 @@ const IBizEditor = {
|
|
|
378
384
|
}
|
|
379
385
|
};
|
|
380
386
|
|
|
381
|
-
export { CascaderEditorProvider, CheckBoxListEditorProvider, ColorPickerEditorProvider, DataPickerEditorProvider, DatePickerEditorProvider, DateRangeEditorProvider, DropDownListEditorProvider, FileUploaderEditorProvider, HtmlEditorProvider, IBizCascader, IBizCheckboxList, IBizColorPicker, IBizDatePicker, IBizDateRangePicker, IBizDropdown, IBizEditor, IBizEditorCarousel, IBizEmojiPicker, IBizFileUpload, IBizImageCropping, IBizImageSelect, IBizImageUpload, IBizInput, IBizInputNumber, IBizMPicker, IBizNumberRangePicker, IBizPicker, IBizPickerSelectView, IBizRadio, IBizRate, IBizSlider, IBizSpan, IBizStepper, IBizSwitch, MarkDownEditorProvider, NumberRangeEditorProvider, RadioButtonListEditorProvider, RateEditorProvider, SliderEditorProvider, SpanEditorProvider, StepperEditorProvider, SwitchEditorProvider, TextBoxEditorProvider, IBizEditor as default };
|
|
387
|
+
export { CascaderEditorProvider, CheckBoxListEditorProvider, ColorPickerEditorProvider, DataPickerEditorProvider, DatePickerEditorProvider, DateRangeEditorProvider, DropDownListEditorProvider, FileUploaderEditorProvider, HtmlEditorProvider, IBizCascader, IBizCheckboxList, IBizColorPicker, IBizDatePicker, IBizDateRangePicker, IBizDropdown, IBizEditor, IBizEditorCarousel, IBizEmojiPicker, IBizFileUpload, IBizImageCropping, IBizImageSelect, IBizImageUpload, IBizInput, IBizInputNumber, IBizMPicker, IBizNumberRangePicker, IBizPicker, IBizPickerSelectView, IBizRadio, IBizRate, IBizSignature, IBizSlider, IBizSpan, IBizStepper, IBizSwitch, MarkDownEditorProvider, NumberRangeEditorProvider, RadioButtonListEditorProvider, RateEditorProvider, SliderEditorProvider, SpanEditorProvider, StepperEditorProvider, SwitchEditorProvider, TextBoxEditorProvider, IBizEditor as default };
|
|
@@ -52,7 +52,7 @@ export declare const IBizNumberRangePicker: import("vue").DefineComponent<{
|
|
|
52
52
|
endPlaceHolder: string;
|
|
53
53
|
rangeSeparator: string;
|
|
54
54
|
editorRef: Ref<any>;
|
|
55
|
-
renderClear: () => JSX.Element | null;
|
|
55
|
+
renderClear: () => import("vue/jsx-runtime").JSX.Element | null;
|
|
56
56
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
57
57
|
change: (_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => boolean;
|
|
58
58
|
blur: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { IBizInput } from './input/input.mjs';
|
|
2
2
|
export { IBizInputNumber } from './ibiz-input-number/ibiz-input-number.mjs';
|
|
3
|
+
export { IBizSignature } from './signature/signature.mjs';
|
|
3
4
|
export { TextBoxEditorController } from './text-box-editor.controller.mjs';
|
|
4
5
|
export { TextBoxEditorProvider } from './text-box-editor.provider.mjs';
|
|
5
6
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-signature{position:relative;width:100%;height:100%;overflow:hidden;border:none;border-radius:var(--ibiz-border-radius-large)}.ibiz-signature__modal{position:absolute;z-index:6;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.ibiz-signature__modal--background{width:100%;height:100%;background-color:var(--ibiz-color-black);opacity:.1}.ibiz-signature__modal--caption{position:absolute;color:var(--ibiz-color-text-2)}.ibiz-signature__modal--toolbar{position:absolute;top:var(--ibiz-spacing-tight);right:var(--ibiz-spacing-tight)}.ibiz-signature__modal--toolbar .van-button{width:var(--ibiz-spacing-loose);height:auto;height:var(--ibiz-spacing-loose);background-color:var(--van-uploader-delete-background);border:var(--van-uploader-delete-background);opacity:.6}.ibiz-signature__modal--toolbar .van-button+.van-button{margin-left:var(--ibiz-spacing-loose)}.ibiz-signature__content{width:100%;height:100%;background-repeat:no-repeat;background-position:center center;background-size:contain}.ibiz-signature__readonly .ibiz-signature__modal--toolbar{display:none}.ibiz-signature-overlay{--ibiz-signature-overlay-padding-bottom:0px;position:absolute;z-index:1;width:0;height:0;background-color:var(--ibiz-color-bg-1);opacity:0}.ibiz-signature-overlay.is-full-screen{position:fixed;inset:0;z-index:9999;width:100vw;height:100vh;opacity:1}.ibiz-signature-overlay.is-full-screen .ibiz-signature-overlay__container{position:absolute;top:0;left:0;width:calc(100vh - var(--ibiz-signature-overlay-padding-bottom));height:100vw;transform:rotate(90deg) translateY(-100%);transform-origin:top left}.ibiz-signature-overlay.is-full-screen .ibiz-signature-overlay__header{position:absolute;z-index:6;padding:var(--ibiz-spacing-extra-tight);text-align:left}.ibiz-signature-overlay.is-full-screen .ibiz-signature-overlay__footer{position:absolute;right:var(--ibiz-spacing-tight);bottom:var(--ibiz-spacing-base);z-index:6}.ibiz-signature-overlay.is-full-screen .ibiz-signature-overlay__footer .van-button{height:auto;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-loose);font-size:var(--ibiz-font-size-header-6)}.ibiz-signature-overlay.is-full-screen .ibiz-signature-overlay__footer .van-button+.van-button{margin-left:var(--ibiz-spacing-loose)}.ibiz-signature-overlay.is-full-screen .ibiz-signature-overlay__pad{position:absolute;top:0;left:0;width:100vw;height:calc(100vh - var(--ibiz-signature-overlay-padding-bottom));transform:rotate(-90deg) translateX(-100%);transform-origin:top left}.ibiz-signature-overlay.is-readonly .ibiz-signature-pad-container__footer .van-button+.van-button,.ibiz-signature-overlay.is-readonly .ibiz-signature-pad-container__header{display:none}.ibiz-signature-overlay.is-readonly .ibiz-signature-pad{pointer-events:none}.ibiz-signature-overlay.is-disabled .ibiz-signature-pad{pointer-events:none}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { TextBoxEditorController } from '../text-box-editor.controller';
|
|
3
|
+
import './signature.scss';
|
|
4
|
+
/**
|
|
5
|
+
* 电子签名
|
|
6
|
+
*
|
|
7
|
+
* @description 用于在业务系统中采集、展示和保存用户签名信息。基于`移动端文本框`编辑器进行扩展,编辑器样式代码名称为:SIGNATURE
|
|
8
|
+
* @primary
|
|
9
|
+
* @editorparams {name:mode,parameterType:'img' | 'file',defaultvalue:'img',description:指定签名的保存格式。当值为'img'时,直接保存为Base64格式的图片URL(以data:协议开头);当值为'file'时,系统会先将签名图片上传至服务器,再保存服务器返回的文件元信息(包含文件ID和名称)}
|
|
10
|
+
* @editorparams {name:buttons,parameterType:"Array<{label: string;type: string;buttonType?: string}>","defaultvalue":[{"label":"撤销","type":"UNDO"},{"label":"重写","type":"REWRITE"},{"label":"确认","type":"CONFIRM","buttonType":"PRIMARY"}],description:配置全屏签名面板的操作按钮。数组中每个对象表示一个按钮:label为按钮显示文本;type为按钮触发的事件类型(UNDO-撤销上一步,REWRITE-清空重写,CONFIRM-确认保存);buttonType可选,指定按钮样式(支持PRIMARY/SUCCESS/DEFAULT/DANGER/WARNING)。示例:仅显示确认按钮可配置为[{"label":"确认","type":"CONFIRM","buttonType":"PRIMARY"}]}
|
|
11
|
+
* @editorparams {name:dotsize,parameterType:'number',defaultvalue:0,description:点的大小(单位:像素)。控制点击画布时生成的点的尺寸,0表示根据线条宽度自动计算点的大小}
|
|
12
|
+
* @editorparams {name:minwidth,parameterType:'number',defaultvalue:2,description:线条最小宽度(单位:像素)。控制签名线条的最细宽度,绘制速度越快,线条越接近此值}
|
|
13
|
+
* @editorparams {name:maxwidth,parameterType:'number',defaultvalue:2,description:线条最大宽度(单位:像素)。控制签名线条的最粗宽度,绘制速度越慢,线条越接近此值}
|
|
14
|
+
* @editorparams {name:pencolor,parameterType:'string',defaultvalue:'black',description:画笔颜色。签名轨迹的颜色,可接受CSS颜色格式(如#ff0000、rgb(255,0,0)等)}
|
|
15
|
+
* @editorparams {name:velocityfilterweight,parameterType:'number',defaultvalue:0.7,description:速度过滤权重。用于平滑处理绘制速度的计算,影响线条粗细随速度的变化幅度。值越接近1,当前速度对线条粗细影响越大;值越小,线条过渡越平滑}
|
|
16
|
+
* @editorparams {name:mindistance,parameterType:'number',defaultvalue:5,description:连续点最小距离(单位:像素)。当连续两个绘制点的距离小于此值时,不记录新点,用于减少冗余数据并优化绘制流畅度}
|
|
17
|
+
* @editorparams {name:backgroundcolor,parameterType:'string',defaultvalue:'rgba(0,0,0,0)',description:画布背景色。签名画布的背景颜色,导出图片时会包含此背景,可接受CSS颜色格式}
|
|
18
|
+
* @editorparams {name:throttle,parameterType:'number',defaultvalue:16,description:事件节流时间(单位:毫秒)。限制绘制事件的触发频率,避免高频操作导致性能问题}
|
|
19
|
+
* @editorparams {name:canvascontextoptions,parameterType:'object',defaultvalue:'{}',description:Canvas 2D上下文初始化配置。用于设置Canvas渲染上下文的额外参数(如alpha、willReadFrequently等CanvasRenderingContext2DSettings属性)}
|
|
20
|
+
* @ignoreprops overflowMode
|
|
21
|
+
* @ignoreemits infoTextChange
|
|
22
|
+
*/
|
|
23
|
+
export declare const IBizSignature: import("vue").DefineComponent<{
|
|
24
|
+
value: (StringConstructor | NumberConstructor)[];
|
|
25
|
+
controller: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<TextBoxEditorController>, undefined, undefined>;
|
|
26
|
+
data: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<import("@ibiz-template/core").IApiData>, undefined, undefined>;
|
|
27
|
+
disabled: {
|
|
28
|
+
type: BooleanConstructor;
|
|
29
|
+
};
|
|
30
|
+
readonly: {
|
|
31
|
+
type: BooleanConstructor;
|
|
32
|
+
default: boolean;
|
|
33
|
+
};
|
|
34
|
+
autoFocus: {
|
|
35
|
+
type: BooleanConstructor;
|
|
36
|
+
default: boolean;
|
|
37
|
+
};
|
|
38
|
+
overflowMode: {
|
|
39
|
+
type: StringConstructor;
|
|
40
|
+
};
|
|
41
|
+
controlParams: {
|
|
42
|
+
type: ObjectConstructor;
|
|
43
|
+
required: boolean;
|
|
44
|
+
};
|
|
45
|
+
}, {
|
|
46
|
+
c: TextBoxEditorController;
|
|
47
|
+
ns: import("@ibiz-template/core").Namespace;
|
|
48
|
+
signatureRef: Ref<any>;
|
|
49
|
+
fullScreen: Ref<boolean>;
|
|
50
|
+
currentDataURL: Ref<string>;
|
|
51
|
+
buttons: ({
|
|
52
|
+
label: string;
|
|
53
|
+
type: string;
|
|
54
|
+
buttonType?: undefined;
|
|
55
|
+
} | {
|
|
56
|
+
label: string;
|
|
57
|
+
type: string;
|
|
58
|
+
buttonType: string;
|
|
59
|
+
})[];
|
|
60
|
+
getSafeDistance: () => string;
|
|
61
|
+
handleModalClick: () => void;
|
|
62
|
+
handleConfirm: () => void;
|
|
63
|
+
handleRemove: (_evt: MouseEvent) => void;
|
|
64
|
+
handlePadContainerClick: () => void;
|
|
65
|
+
handleButtonClick: (_type: string) => void;
|
|
66
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
67
|
+
change: (_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => boolean;
|
|
68
|
+
blur: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
|
|
69
|
+
focus: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
|
|
70
|
+
enter: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
|
|
71
|
+
infoTextChange: (_text: string) => boolean;
|
|
72
|
+
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
73
|
+
value: (StringConstructor | NumberConstructor)[];
|
|
74
|
+
controller: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<TextBoxEditorController>, undefined, undefined>;
|
|
75
|
+
data: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<import("@ibiz-template/core").IApiData>, undefined, undefined>;
|
|
76
|
+
disabled: {
|
|
77
|
+
type: BooleanConstructor;
|
|
78
|
+
};
|
|
79
|
+
readonly: {
|
|
80
|
+
type: BooleanConstructor;
|
|
81
|
+
default: boolean;
|
|
82
|
+
};
|
|
83
|
+
autoFocus: {
|
|
84
|
+
type: BooleanConstructor;
|
|
85
|
+
default: boolean;
|
|
86
|
+
};
|
|
87
|
+
overflowMode: {
|
|
88
|
+
type: StringConstructor;
|
|
89
|
+
};
|
|
90
|
+
controlParams: {
|
|
91
|
+
type: ObjectConstructor;
|
|
92
|
+
required: boolean;
|
|
93
|
+
};
|
|
94
|
+
}>> & {
|
|
95
|
+
onFocus?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
|
|
96
|
+
onBlur?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
|
|
97
|
+
onChange?: ((_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => any) | undefined;
|
|
98
|
+
onInfoTextChange?: ((_text: string) => any) | undefined;
|
|
99
|
+
onEnter?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
|
|
100
|
+
}, {
|
|
101
|
+
disabled: boolean;
|
|
102
|
+
readonly: boolean;
|
|
103
|
+
autoFocus: boolean;
|
|
104
|
+
}, {}>;
|