@ibiz-template/vue3-components 0.7.25 → 0.7.26-alpha.0

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.
Files changed (49) hide show
  1. package/dist/index-WMgMgSGZ.js +4 -0
  2. package/dist/index.min.css +1 -1
  3. package/dist/index.system.min.js +1 -1
  4. package/dist/{xlsx-util-xgesm7QP.js → xlsx-util-W01Wk5pi.js} +1 -1
  5. package/es/control/dashboard/index.mjs +4 -1
  6. package/es/control/dashboard/portlet/index.d.ts +1 -0
  7. package/es/control/dashboard/portlet/index.mjs +2 -0
  8. package/es/control/dashboard/portlet/report-portlet/index.d.ts +24 -0
  9. package/es/control/dashboard/portlet/report-portlet/index.mjs +12 -0
  10. package/es/control/dashboard/portlet/report-portlet/report-portlet.d.ts +24 -0
  11. package/es/control/dashboard/portlet/report-portlet/report-portlet.mjs +64 -0
  12. package/es/control/dashboard/portlet/report-portlet/report-portlet.provider.d.ts +15 -0
  13. package/es/control/dashboard/portlet/report-portlet/report-portlet.provider.mjs +21 -0
  14. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.mjs +25 -0
  15. package/es/control/form/form-detail/form-mdctrl/index.mjs +2 -0
  16. package/es/control/form/form-detail/form-mdctrl/mdctrl-container2/icon/index.d.ts +21 -0
  17. package/es/control/form/form-detail/form-mdctrl/mdctrl-container2/icon/index.mjs +75 -0
  18. package/es/control/form/form-detail/form-mdctrl/mdctrl-container2/mdctrl-container2.css +1 -0
  19. package/es/control/form/form-detail/form-mdctrl/mdctrl-container2/mdctrl-container2.d.ts +38 -0
  20. package/es/control/form/form-detail/form-mdctrl/mdctrl-container2/mdctrl-container2.mjs +205 -0
  21. package/es/control/index.mjs +2 -0
  22. package/es/control/report-panel/report-detail/bi-report-panel/bi-report-panel.mjs +7 -1
  23. package/es/editor/data-picker/ibiz-picker-link/ibiz-picker-link.mjs +33 -1
  24. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.css +1 -1
  25. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +50 -32
  26. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.d.ts +2 -0
  27. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.mjs +59 -5
  28. package/es/index.mjs +2 -0
  29. package/es/view-engine/edit-view.engine.mjs +1 -1
  30. package/lib/control/dashboard/index.cjs +5 -0
  31. package/lib/control/dashboard/portlet/index.cjs +4 -0
  32. package/lib/control/dashboard/portlet/report-portlet/index.cjs +18 -0
  33. package/lib/control/dashboard/portlet/report-portlet/report-portlet.cjs +66 -0
  34. package/lib/control/dashboard/portlet/report-portlet/report-portlet.provider.cjs +23 -0
  35. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.cjs +25 -0
  36. package/lib/control/form/form-detail/form-mdctrl/index.cjs +2 -0
  37. package/lib/control/form/form-detail/form-mdctrl/mdctrl-container2/icon/index.cjs +81 -0
  38. package/lib/control/form/form-detail/form-mdctrl/mdctrl-container2/mdctrl-container2.cjs +207 -0
  39. package/lib/control/form/form-detail/form-mdctrl/mdctrl-container2/mdctrl-container2.css +1 -0
  40. package/lib/control/index.cjs +22 -18
  41. package/lib/control/report-panel/report-detail/bi-report-panel/bi-report-panel.cjs +7 -1
  42. package/lib/editor/data-picker/ibiz-picker-link/ibiz-picker-link.cjs +32 -0
  43. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +49 -31
  44. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.css +1 -1
  45. package/lib/editor/text-box/ibiz-input-number/ibiz-input-number.cjs +59 -5
  46. package/lib/index.cjs +52 -48
  47. package/lib/view-engine/edit-view.engine.cjs +1 -1
  48. package/package.json +5 -5
  49. package/dist/index-Kg6lkzg1.js +0 -4
@@ -1,6 +1,7 @@
1
- import { ref, computed, watch, createVNode, defineComponent } from 'vue';
1
+ import { ref, computed, watch, onMounted, createVNode, defineComponent } from 'vue';
2
2
  import { getDataPickerProps, getEditorEmits, useNamespace, useAutoFocusBlur, useFocusAndBlur, renderString } from '@ibiz-template/vue3-util';
3
3
  import './ibiz-picker-link.css';
4
+ import { isNil } from 'ramda';
4
5
 
5
6
  "use strict";
6
7
  const IBizPickerLink = /* @__PURE__ */ defineComponent({
@@ -13,10 +14,23 @@ const IBizPickerLink = /* @__PURE__ */ defineComponent({
13
14
  const ns = useNamespace("picker-link");
14
15
  const c = props.controller;
15
16
  const curValue = ref("");
17
+ const items = ref([]);
16
18
  const {
17
19
  useInFocusAndBlur,
18
20
  useInValueChange
19
21
  } = useAutoFocusBlur(props, emit);
22
+ const onSearch = async (query) => {
23
+ if (c.model.appDataEntityId) {
24
+ let trimQuery = "";
25
+ if (query !== props.value) {
26
+ trimQuery = query.trim();
27
+ }
28
+ const res = await c.getServiceData(trimQuery, props.data);
29
+ if (res) {
30
+ items.value = res.data;
31
+ }
32
+ }
33
+ };
20
34
  const showFormDefaultContent = computed(() => {
21
35
  if (props.controlParams && props.controlParams.editmode === "hover" && !props.readonly) {
22
36
  return true;
@@ -34,6 +48,24 @@ const IBizPickerLink = /* @__PURE__ */ defineComponent({
34
48
  }, {
35
49
  immediate: true
36
50
  });
51
+ onMounted(() => {
52
+ watch(() => props.data[c.valueItem], async (newVal, oldVal) => {
53
+ if (newVal !== oldVal) {
54
+ if (isNil(props.value)) {
55
+ await onSearch("");
56
+ }
57
+ const curItem = items.value.find((item) => Object.is(item[c.keyName], newVal));
58
+ if (curItem) {
59
+ curValue.value = curItem[c.textName];
60
+ }
61
+ if (newVal === null) {
62
+ emit("change", null);
63
+ }
64
+ }
65
+ }, {
66
+ immediate: true
67
+ });
68
+ });
37
69
  const handleOpenViewClose = (data) => {
38
70
  const item = {};
39
71
  Object.assign(item, data);
@@ -1 +1 @@
1
- .ibiz-dropdown{width:var(--ibiz-dropdown-width);--ibiz-dropdown-width:100%;--ibiz-dropdown-readonly-text-item-color:var(--ibiz-form-item-text-color)}.ibiz-dropdown__branch-node>.el-tree-node__content{--ibiz-color-disabled-text:var(--ibiz-color-text-0)}.ibiz-dropdown .el-select{width:100%}.ibiz-dropdown-readonly-text-item{margin-right:var(--ibiz-spacing-tight);font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-dropdown-readonly-text-item-color)}.ibiz-dropdown-readonly-text-item .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-font-size-regular)}.el-select-dropdown__item{width:100%;background-color:var(--ibiz-dropdown-select-option-item-bkcolor)}.ibiz-dropdown-select-option-content{display:flex;align-items:center;justify-content:flex-start;width:100%;height:100%;color:var(--ibiz-dropdown-select-option-item-color)}.ibiz-dropdown-select-option-content__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-dropdown-select-option-content .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-font-size-regular)}.ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default:hover .ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default:hover .ibiz-dropdown-select{display:block}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content{display:flex;align-items:center;width:100%;padding:var(--ibiz-form-item-hover-edit-padding);font-family:Arial,sans-serif;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-text-color)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content.is-multiple{height:var(--ibiz-editor-default-line-height)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content.is-multiple .ibiz-dropdown-content-item{height:calc(var(--ibiz-editor-default-line-height) - var(--ibiz-spacing-tight));padding:0 var(--ibiz-spacing-tight);margin:2px 6px 2px 0;font-size:var(--ibiz-font-size-small);line-height:calc(var(--ibiz-editor-default-line-height) - var(--ibiz-spacing-tight));color:var(--ibiz-editor-default-text-color);background-color:var(--ibiz-color-fill-0);border:1px solid transparent;border-radius:var(--ibiz-border-radius-small)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-select{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default.is-editable .ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default.is-editable .ibiz-dropdown-select{display:block}
1
+ .ibiz-dropdown{width:var(--ibiz-dropdown-width);--ibiz-dropdown-width:100%;--ibiz-dropdown-readonly-text-item-color:var(--ibiz-form-item-text-color)}.ibiz-dropdown__branch-node>.el-tree-node__content{--ibiz-color-disabled-text:var(--ibiz-color-text-0)}.ibiz-dropdown .el-select{width:100%}.ibiz-dropdown-readonly-text-item{margin-right:var(--ibiz-spacing-tight);font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-dropdown-readonly-text-item-color)}.ibiz-dropdown-readonly-text-item .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-font-size-regular)}.el-select-dropdown__item{width:100%;background-color:var(--ibiz-dropdown-select-option-item-bkcolor)}.ibiz-dropdown-select-option-content{display:flex;align-items:center;justify-content:flex-start;width:100%;height:100%;color:var(--ibiz-dropdown-select-option-item-color)}.ibiz-dropdown-select-option-content__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-dropdown-select-option-content .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-font-size-regular)}.ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default:hover .ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default:hover .ibiz-dropdown-select{display:block}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content{display:flex;align-items:center;width:100%;padding:var(--ibiz-form-item-hover-edit-padding);font-family:Arial,sans-serif;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-text-color)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content.is-multiple{height:var(--ibiz-editor-default-line-height)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content.is-multiple .ibiz-dropdown-content-item{height:calc(var(--ibiz-editor-default-line-height) - var(--ibiz-spacing-tight));padding:0 var(--ibiz-spacing-tight);margin:2px 6px 2px 0;font-size:var(--ibiz-font-size-small);line-height:calc(var(--ibiz-editor-default-line-height) - var(--ibiz-spacing-tight));color:var(--ibiz-editor-default-text-color);background-color:var(--ibiz-color-fill-0);border:1px solid transparent;border-radius:var(--ibiz-border-radius-small)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-select{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-select .el-input__prefix-inner>:last-child{margin-right:var(--ibiz-spacing-none)}.ibiz-form-item .ibiz-dropdown.is-show-default.is-editable .ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default.is-editable .ibiz-dropdown-select{display:block}.ibiz-dropdown--round .ibiz-dropdown-readonly-text-item{display:inline-flex;align-items:center;padding-right:var(--ibiz-spacing-base);padding-left:var(--ibiz-spacing-base);margin-right:var(--ibiz-spacing-extra-tight);line-height:var(--ibiz-spacing-loose);color:var(--ibiz-dropdown-select-option-item-color);background-color:var(--ibiz-dropdown-select-option-item-bkcolor);border-radius:var(--ibiz-spacing-base)}.ibiz-dropdown--round .ibiz-dropdown-readonly-text-item:first-child{margin-left:calc(var(--ibiz-spacing-base-tight) - var(--ibiz-spacing-super-tight)/ 2)}.ibiz-dropdown--round .ibiz-dropdown-select .el-select__tags{display:none}.ibiz-dropdown--round .ibiz-dropdown-select .el-input__inner{flex:1 1 0;opacity:0}.ibiz-dropdown--round .ibiz-dropdown-select-option-text{display:inline-flex;align-items:center;padding-right:var(--ibiz-spacing-base);padding-left:var(--ibiz-spacing-base);margin-right:var(--ibiz-spacing-extra-tight);line-height:var(--ibiz-spacing-loose);color:var(--ibiz-dropdown-select-option-item-color);background-color:var(--ibiz-dropdown-select-option-item-bkcolor);border-radius:var(--ibiz-spacing-base)}.ibiz-dropdown-popper--round .el-select-dropdown__item{display:flex;align-items:center;height:calc(var(--ibiz-spacing-extra-loose) + var(--ibiz-spacing-extra-tight));line-height:calc(var(--ibiz-spacing-extra-loose) + var(--ibiz-spacing-extra-tight));background-color:transparent}.ibiz-dropdown-popper--round .ibiz-dropdown-select-option-content{flex:0 0 auto;width:auto;min-width:0;height:auto;padding-right:var(--ibiz-spacing-base);padding-left:var(--ibiz-spacing-base);line-height:var(--ibiz-spacing-loose);color:var(--ibiz-dropdown-select-option-item-color);background-color:var(--ibiz-dropdown-select-option-item-bkcolor);border-radius:var(--ibiz-spacing-base)}
@@ -1,11 +1,8 @@
1
- import { isVNode, ref, computed, watch, nextTick, onMounted, onUnmounted, resolveComponent, mergeProps, createVNode, defineComponent } from 'vue';
1
+ import { ref, computed, watch, nextTick, onMounted, onUnmounted, resolveComponent, mergeProps, createVNode, defineComponent } from 'vue';
2
2
  import { getDropdownProps, getEditorEmits, useNamespace, useCodeListListen, useClickOutside } from '@ibiz-template/vue3-util';
3
3
  import './ibiz-dropdown.css';
4
4
 
5
5
  "use strict";
6
- function _isSlot(s) {
7
- return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
8
- }
9
6
  const IBizDropdown = /* @__PURE__ */ defineComponent({
10
7
  name: "IBizDropdown",
11
8
  props: getDropdownProps(),
@@ -246,7 +243,6 @@ const IBizDropdown = /* @__PURE__ */ defineComponent({
246
243
  };
247
244
  },
248
245
  render() {
249
- let _slot;
250
246
  const overflowMode = this.c.editorParams.overflowMode || ibiz.config.pickerEditor.overflowMode;
251
247
  const isEllipsis = overflowMode === "ellipsis";
252
248
  const editContent = this.hasChildren ? createVNode(resolveComponent("el-tree-select"), mergeProps({
@@ -294,44 +290,66 @@ const IBizDropdown = /* @__PURE__ */ defineComponent({
294
290
  "disabled": this.disabled,
295
291
  "loading": this.isLoading,
296
292
  "fit-input-width": isEllipsis,
293
+ "popper-class": "".concat(this.ns.b("popper"), " ").concat(this.c.editorParams.type === "round" ? this.ns.bm("popper", "round") : ""),
297
294
  "onBlur": this.onBlur,
298
295
  "onFocus": this.onFocus,
299
296
  "onKeyup": this.handleKeyUp,
300
297
  "onVisibleChange": this.onVisibleChange
301
- }, this.$attrs), _isSlot(_slot = this.items.map((item) => {
302
- return createVNode(resolveComponent("el-option"), {
303
- "key": item.value,
304
- "value": item.value.toString(),
305
- "label": item.text,
306
- "disabled": item.disableSelect === true,
307
- "style": item.bkcolor ? this.ns.cssVarBlock({
308
- "select-option-item-bkcolor": "".concat(item.bkcolor)
309
- }) : "",
310
- "class": [item.cls ? item.cls : null],
311
- "title": isEllipsis ? item.text : ""
312
- }, {
313
- default: () => {
298
+ }, this.$attrs), {
299
+ default: () => {
300
+ return this.items.map((item) => {
301
+ return createVNode(resolveComponent("el-option"), {
302
+ "key": item.value,
303
+ "value": item.value.toString(),
304
+ "label": item.text,
305
+ "disabled": item.disableSelect === true,
306
+ "style": item.bkcolor ? this.ns.cssVarBlock({
307
+ "select-option-item-bkcolor": "".concat(item.bkcolor)
308
+ }) : "",
309
+ "class": [item.cls ? item.cls : null],
310
+ "title": isEllipsis ? item.text : ""
311
+ }, {
312
+ default: () => {
313
+ return createVNode("div", {
314
+ "class": [this.ns.b("select-option-content"), item.textCls ? item.textCls : null],
315
+ "style": item.color ? this.ns.cssVarBlock({
316
+ "select-option-item-color": "".concat(item.color)
317
+ }) : ""
318
+ }, [item.sysImage && createVNode(resolveComponent("iBizIcon"), {
319
+ "icon": item.sysImage
320
+ }, null), createVNode("span", {
321
+ "class": [isEllipsis && this.ns.be("select-option-content", "text")]
322
+ }, [item.text])]);
323
+ }
324
+ });
325
+ });
326
+ },
327
+ prefix: () => {
328
+ if (this.c.editorParams.type !== "round") {
329
+ return;
330
+ }
331
+ return this.valueText.split(",").map((text) => {
332
+ const codeListItem = this.getCodeListItem(text);
314
333
  return createVNode("div", {
315
- "class": [this.ns.b("select-option-content"), item.textCls ? item.textCls : null],
316
- "style": item.color ? this.ns.cssVarBlock({
317
- "select-option-item-color": "".concat(item.color)
334
+ "class": [this.ns.b("select-option-text"), codeListItem == null ? void 0 : codeListItem.textCls],
335
+ "style": (codeListItem == null ? void 0 : codeListItem.color) || (codeListItem == null ? void 0 : codeListItem.bkcolor) ? this.ns.cssVarBlock({
336
+ "select-option-item-color": "".concat(codeListItem.color || ""),
337
+ "select-option-item-bkcolor": "".concat(codeListItem.bkcolor || "")
318
338
  }) : ""
319
- }, [item.sysImage && createVNode(resolveComponent("iBizIcon"), {
320
- "icon": item.sysImage
321
- }, null), createVNode("span", {
322
- "class": [isEllipsis && this.ns.be("select-option-content", "text")]
323
- }, [item.text])]);
324
- }
325
- });
326
- })) ? _slot : {
327
- default: () => [_slot]
339
+ }, [(codeListItem == null ? void 0 : codeListItem.sysImage) && createVNode(resolveComponent("iBizIcon"), {
340
+ "icon": codeListItem == null ? void 0 : codeListItem.sysImage
341
+ }, null), text || ""]);
342
+ });
343
+ }
328
344
  });
329
345
  const readonlyContent = this.valueText.split(",").map((text) => {
330
346
  const codeListItem = this.getCodeListItem(text);
331
347
  return createVNode("span", {
332
348
  "class": [this.ns.b("readonly-text-item"), codeListItem == null ? void 0 : codeListItem.textCls],
333
349
  "style": (codeListItem == null ? void 0 : codeListItem.color) ? this.ns.cssVarBlock({
334
- "readonly-text-item-color": "".concat(codeListItem.color)
350
+ "readonly-text-item-color": "".concat(codeListItem.color || ""),
351
+ "select-option-item-color": "".concat(codeListItem.color || ""),
352
+ "select-option-item-bkcolor": "".concat((this.c.editorParams.type === "round" ? codeListItem.bkcolor : "") || "")
335
353
  }) : ""
336
354
  }, [(codeListItem == null ? void 0 : codeListItem.sysImage) && createVNode(resolveComponent("iBizIcon"), {
337
355
  "icon": codeListItem == null ? void 0 : codeListItem.sysImage
@@ -345,7 +363,7 @@ const IBizDropdown = /* @__PURE__ */ defineComponent({
345
363
  }, [text]);
346
364
  }) : "-"]);
347
365
  return createVNode("div", {
348
- "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent)],
366
+ "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent), this.c.editorParams.type === "round" && this.ns.m("round")],
349
367
  "style": this.cssVars
350
368
  }, [this.showFormDefaultContent && formDefaultContent, this.readonly ? readonlyContent : editContent]);
351
369
  }
@@ -37,6 +37,8 @@ export declare const IBizInputNumber: import("vue").DefineComponent<{
37
37
  max: number;
38
38
  min: number;
39
39
  currentFormatVal: import("vue").ComputedRef<string>;
40
+ enablethousands: import("vue").Ref<boolean>;
41
+ onInput: (value: string | number) => void;
40
42
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
41
43
  change: (_value: unknown, _name?: string | undefined) => boolean;
42
44
  blur: (_event?: IData | undefined) => boolean;
@@ -13,6 +13,7 @@ const IBizInputNumber = /* @__PURE__ */ defineComponent({
13
13
  emit
14
14
  }) {
15
15
  const ns = useNamespace("input-number");
16
+ const enablethousands = ref(false);
16
17
  const c = props.controller;
17
18
  const editorModel = c.model;
18
19
  const currentVal = ref(null);
@@ -25,6 +26,9 @@ const IBizInputNumber = /* @__PURE__ */ defineComponent({
25
26
  if (editorModel.editorParams.minvalue) {
26
27
  min = toNumber(editorModel.editorParams.minvalue);
27
28
  }
29
+ if (editorModel.editorParams.enablethousands) {
30
+ enablethousands.value = JSON.parse(editorModel.editorParams.enablethousands);
31
+ }
28
32
  }
29
33
  const isEditable = ref(false);
30
34
  const editorRef = ref();
@@ -34,17 +38,37 @@ const IBizInputNumber = /* @__PURE__ */ defineComponent({
34
38
  }
35
39
  return false;
36
40
  });
41
+ const numberconvertToStr = (num, decimalPlaces = 0) => {
42
+ const options = {
43
+ minimumFractionDigits: decimalPlaces,
44
+ maximumFractionDigits: decimalPlaces
45
+ };
46
+ return num.toLocaleString("en-US", options);
47
+ };
48
+ const convertToNumber = (str) => {
49
+ const stringWithoutCommas = str.replace(/,/g, "");
50
+ const originalNumber = parseFloat(stringWithoutCommas);
51
+ return originalNumber;
52
+ };
37
53
  watch(() => props.value, (newVal, oldVal) => {
38
54
  if (newVal !== oldVal) {
39
55
  const number = newVal != null && !Object.is(newVal, "") ? Number(newVal) : null;
40
- currentVal.value = Number.isNaN(number) ? null : number;
56
+ if (!enablethousands.value) {
57
+ currentVal.value = Number.isNaN(number) ? null : number;
58
+ } else {
59
+ currentVal.value = Number.isNaN(number) ? null : numberconvertToStr(number, c.precision ? c.precision : 0);
60
+ }
41
61
  }
42
62
  }, {
43
63
  immediate: true
44
64
  });
45
65
  const currentFormatVal = computed(() => {
46
- if (currentVal.value || currentVal.value === 0) {
47
- return props.controller.formatValue(currentVal.value);
66
+ if (!enablethousands.value) {
67
+ if (currentVal.value || currentVal.value === 0) {
68
+ return props.controller.formatValue(currentVal.value);
69
+ }
70
+ } else if (currentVal.value || currentVal.value === 0) {
71
+ return numberconvertToStr(Number(currentVal.value), c.precision ? c.precision : 0);
48
72
  }
49
73
  return "";
50
74
  });
@@ -79,6 +103,24 @@ const IBizInputNumber = /* @__PURE__ */ defineComponent({
79
103
  emit("enter", e);
80
104
  }
81
105
  };
106
+ const debounce = (func, wait) => {
107
+ let timeout;
108
+ return (...args) => {
109
+ clearTimeout(timeout);
110
+ timeout = setTimeout(() => func.apply(this, args), wait);
111
+ };
112
+ };
113
+ const debouncedOnInput = debounce((value) => {
114
+ let data = null;
115
+ if (typeof value === "string") {
116
+ data = convertToNumber(value);
117
+ }
118
+ emit("change", data);
119
+ }, 300);
120
+ const onInput = (value) => {
121
+ currentVal.value = value;
122
+ debouncedOnInput(value);
123
+ };
82
124
  return {
83
125
  ns,
84
126
  c,
@@ -93,7 +135,9 @@ const IBizInputNumber = /* @__PURE__ */ defineComponent({
93
135
  showFormDefaultContent,
94
136
  max,
95
137
  min,
96
- currentFormatVal
138
+ currentFormatVal,
139
+ enablethousands,
140
+ onInput
97
141
  };
98
142
  },
99
143
  render() {
@@ -107,7 +151,7 @@ const IBizInputNumber = /* @__PURE__ */ defineComponent({
107
151
  content += unitName;
108
152
  }
109
153
  } else {
110
- content = [createVNode(resolveComponent("el-input-number"), mergeProps({
154
+ content = [!this.enablethousands ? createVNode(resolveComponent("el-input-number"), mergeProps({
111
155
  "ref": "editorRef",
112
156
  "class": [this.ns.b("input")],
113
157
  "model-value": this.currentVal,
@@ -121,6 +165,16 @@ const IBizInputNumber = /* @__PURE__ */ defineComponent({
121
165
  "onFocus": this.onFocus,
122
166
  "onBlur": this.onBlur,
123
167
  "onKeyup": this.handleKeyUp
168
+ }, this.$attrs), null) : createVNode(resolveComponent("el-input"), mergeProps({
169
+ "ref": "editorRef",
170
+ "class": [this.ns.b("input")],
171
+ "model-value": this.currentVal,
172
+ "onInput": this.onInput,
173
+ "placeholder": this.c.placeHolder,
174
+ "disabled": this.disabled,
175
+ "onFocus": this.onFocus,
176
+ "onBlur": this.onBlur,
177
+ "onKeyup": this.handleKeyUp
124
178
  }, this.$attrs), null), unitName && createVNode("i", {
125
179
  "class": this.ns.e("unit")
126
180
  }, [unitName])];
package/es/index.mjs CHANGED
@@ -75,6 +75,8 @@ export { HtmlPortlet } from './control/dashboard/portlet/html-portlet/html-portl
75
75
  export { IBizHtmlPortlet } from './control/dashboard/portlet/html-portlet/index.mjs';
76
76
  export { ActionBarPortlet } from './control/dashboard/portlet/actionbar-portlet/actionbar-portlet.mjs';
77
77
  export { IBizActionBarPortlet } from './control/dashboard/portlet/actionbar-portlet/index.mjs';
78
+ export { ReportPortlet } from './control/dashboard/portlet/report-portlet/report-portlet.mjs';
79
+ export { IBizReportPortlet } from './control/dashboard/portlet/report-portlet/index.mjs';
78
80
  export { IBizDashboardControl } from './control/dashboard/index.mjs';
79
81
  export { IBizCalendarControl } from './control/calendar/index.mjs';
80
82
  export { IBizKanbanControl } from './control/kanban/index.mjs';
@@ -63,7 +63,7 @@ class EditViewEngine extends ViewEngineBase {
63
63
  modal.hooks.shouldDismiss.tapPromise(async (context) => {
64
64
  const uiDomain = ibiz.uiDomainManager.get(this.view.context.srfsessionid);
65
65
  const isChange = (this.form.state.modified || uiDomain.dataModification) && this.view.model.enableDirtyChecking === true;
66
- if (isChange && this.form.model.enableAutoSave) {
66
+ if (isChange && this.form.model.enableAutoSave && !uiDomain.dataModification) {
67
67
  await this.form.immediateAutoSave();
68
68
  } else if (isChange && context.allowClose == null) {
69
69
  const isAllow = await ibiz.confirm.error({
@@ -18,6 +18,7 @@ var index$4 = require('./portlet/rawitem-portlet/index.cjs');
18
18
  var index$5 = require('./portlet/list-portlet/index.cjs');
19
19
  var index$6 = require('./portlet/html-portlet/index.cjs');
20
20
  var index$7 = require('./portlet/actionbar-portlet/index.cjs');
21
+ var index$8 = require('./portlet/report-portlet/index.cjs');
21
22
  var containerPortlet = require('./portlet/container-portlet/container-portlet.cjs');
22
23
  var viewPortlet = require('./portlet/view-portlet/view-portlet.cjs');
23
24
  var menuPortlet = require('./portlet/menu-portlet/menu-portlet.cjs');
@@ -26,6 +27,7 @@ var rawitemPortlet = require('./portlet/rawitem-portlet/rawitem-portlet.cjs');
26
27
  var listPortlet = require('./portlet/list-portlet/list-portlet.cjs');
27
28
  var htmlPortlet = require('./portlet/html-portlet/html-portlet.cjs');
28
29
  var actionbarPortlet = require('./portlet/actionbar-portlet/actionbar-portlet.cjs');
30
+ var reportPortlet = require('./portlet/report-portlet/report-portlet.cjs');
29
31
 
30
32
  "use strict";
31
33
  const IBizDashboardControl = vue3Util.withInstall(
@@ -47,6 +49,7 @@ const IBizDashboardControl = vue3Util.withInstall(
47
49
  v.use(index$5.IBizListPortlet);
48
50
  v.use(index$6.IBizHtmlPortlet);
49
51
  v.use(index$7.IBizActionBarPortlet);
52
+ v.use(index$8.IBizReportPortlet);
50
53
  }
51
54
  );
52
55
 
@@ -59,6 +62,7 @@ exports.IBizRawItemPortlet = index$4.IBizRawItemPortlet;
59
62
  exports.IBizListPortlet = index$5.IBizListPortlet;
60
63
  exports.IBizHtmlPortlet = index$6.IBizHtmlPortlet;
61
64
  exports.IBizActionBarPortlet = index$7.IBizActionBarPortlet;
65
+ exports.IBizReportPortlet = index$8.IBizReportPortlet;
62
66
  exports.ContainerPortlet = containerPortlet.ContainerPortlet;
63
67
  exports.ViewPortlet = viewPortlet.ViewPortlet;
64
68
  exports.MenuPortlet = menuPortlet.MenuPortlet;
@@ -67,5 +71,6 @@ exports.RawItemPortlet = rawitemPortlet.RawItemPortlet;
67
71
  exports.ListPortlet = listPortlet.ListPortlet;
68
72
  exports.HtmlPortlet = htmlPortlet.HtmlPortlet;
69
73
  exports.ActionBarPortlet = actionbarPortlet.ActionBarPortlet;
74
+ exports.ReportPortlet = reportPortlet.ReportPortlet;
70
75
  exports.IBizDashboardControl = IBizDashboardControl;
71
76
  exports.default = IBizDashboardControl;
@@ -9,6 +9,7 @@ var index$4 = require('./rawitem-portlet/index.cjs');
9
9
  var index$5 = require('./list-portlet/index.cjs');
10
10
  var index$6 = require('./html-portlet/index.cjs');
11
11
  var index$7 = require('./actionbar-portlet/index.cjs');
12
+ var index$8 = require('./report-portlet/index.cjs');
12
13
  var containerPortlet = require('./container-portlet/container-portlet.cjs');
13
14
  var viewPortlet = require('./view-portlet/view-portlet.cjs');
14
15
  var menuPortlet = require('./menu-portlet/menu-portlet.cjs');
@@ -17,6 +18,7 @@ var rawitemPortlet = require('./rawitem-portlet/rawitem-portlet.cjs');
17
18
  var listPortlet = require('./list-portlet/list-portlet.cjs');
18
19
  var htmlPortlet = require('./html-portlet/html-portlet.cjs');
19
20
  var actionbarPortlet = require('./actionbar-portlet/actionbar-portlet.cjs');
21
+ var reportPortlet = require('./report-portlet/report-portlet.cjs');
20
22
 
21
23
  "use strict";
22
24
 
@@ -29,6 +31,7 @@ exports.IBizRawItemPortlet = index$4.IBizRawItemPortlet;
29
31
  exports.IBizListPortlet = index$5.IBizListPortlet;
30
32
  exports.IBizHtmlPortlet = index$6.IBizHtmlPortlet;
31
33
  exports.IBizActionBarPortlet = index$7.IBizActionBarPortlet;
34
+ exports.IBizReportPortlet = index$8.IBizReportPortlet;
32
35
  exports.ContainerPortlet = containerPortlet.ContainerPortlet;
33
36
  exports.ViewPortlet = viewPortlet.ViewPortlet;
34
37
  exports.MenuPortlet = menuPortlet.MenuPortlet;
@@ -37,3 +40,4 @@ exports.RawItemPortlet = rawitemPortlet.RawItemPortlet;
37
40
  exports.ListPortlet = listPortlet.ListPortlet;
38
41
  exports.HtmlPortlet = htmlPortlet.HtmlPortlet;
39
42
  exports.ActionBarPortlet = actionbarPortlet.ActionBarPortlet;
43
+ exports.ReportPortlet = reportPortlet.ReportPortlet;
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var runtime = require('@ibiz-template/runtime');
6
+ var vue3Util = require('@ibiz-template/vue3-util');
7
+ var reportPortlet = require('./report-portlet.cjs');
8
+ var reportPortlet_provider = require('./report-portlet.provider.cjs');
9
+
10
+ "use strict";
11
+ const IBizReportPortlet = vue3Util.withInstall(reportPortlet.ReportPortlet, function(v) {
12
+ v.component(reportPortlet.ReportPortlet.name, reportPortlet.ReportPortlet);
13
+ runtime.registerPortletProvider("REPORT", () => new reportPortlet_provider.ReportPortletProvider());
14
+ });
15
+
16
+ exports.ReportPortlet = reportPortlet.ReportPortlet;
17
+ exports.IBizReportPortlet = IBizReportPortlet;
18
+ exports.default = IBizReportPortlet;
@@ -0,0 +1,66 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var vue3Util = require('@ibiz-template/vue3-util');
5
+ var runtime = require('@ibiz-template/runtime');
6
+
7
+ "use strict";
8
+ function _isSlot(s) {
9
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
10
+ }
11
+ const ReportPortlet = /* @__PURE__ */ vue.defineComponent({
12
+ name: "IBizReportPortlet",
13
+ props: {
14
+ modelData: {
15
+ type: Object,
16
+ required: true
17
+ },
18
+ controller: {
19
+ type: runtime.ReportPortletController,
20
+ required: true
21
+ }
22
+ },
23
+ setup(props) {
24
+ var _a, _b;
25
+ const ns = vue3Util.useNamespace("portlet-".concat((_a = props.modelData.portletType) == null ? void 0 : _a.toLowerCase()));
26
+ const report = (_b = props.modelData.controls) == null ? void 0 : _b.find((item) => {
27
+ return item.controlType === runtime.ControlType.REPORT_PANEL;
28
+ });
29
+ let timerTag;
30
+ vue.onMounted(() => {
31
+ const timer = props.controller.model.timer;
32
+ if (timer && timer > 0) {
33
+ timerTag = setInterval(() => {
34
+ props.controller.refresh();
35
+ }, timer);
36
+ }
37
+ });
38
+ vue.onBeforeUnmount(() => {
39
+ clearInterval(timerTag);
40
+ });
41
+ return {
42
+ ns,
43
+ report
44
+ };
45
+ },
46
+ render() {
47
+ let _slot;
48
+ const classArr = [this.ns.b(), this.ns.m(this.modelData.codeName), ...this.controller.containerClass];
49
+ const {
50
+ context,
51
+ params
52
+ } = this.controller;
53
+ return vue.createVNode(vue.resolveComponent("iBizPortletLayout"), {
54
+ "controller": this.controller,
55
+ "class": classArr
56
+ }, _isSlot(_slot = vue.h(vue.resolveComponent("IBizControlShell"), {
57
+ context,
58
+ params,
59
+ modelData: this.report
60
+ })) ? _slot : {
61
+ default: () => [_slot]
62
+ });
63
+ }
64
+ });
65
+
66
+ exports.ReportPortlet = ReportPortlet;
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var runtime = require('@ibiz-template/runtime');
4
+
5
+ "use strict";
6
+ var __defProp = Object.defineProperty;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __publicField = (obj, key, value) => {
9
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
+ return value;
11
+ };
12
+ class ReportPortletProvider {
13
+ constructor() {
14
+ __publicField(this, "component", "IBizReportPortlet");
15
+ }
16
+ async createController(portletModel, dashboard, parent) {
17
+ const c = new runtime.ReportPortletController(portletModel, dashboard, parent);
18
+ await c.init();
19
+ return c;
20
+ }
21
+ }
22
+
23
+ exports.ReportPortletProvider = ReportPortletProvider;
@@ -47,6 +47,31 @@ const FormMDCtrlForm = /* @__PURE__ */ vue.defineComponent({
47
47
  formProvider,
48
48
  model
49
49
  } = this.controller;
50
+ if (model.detailStyle === "STYLE2") {
51
+ return vue.createVNode(vue.resolveComponent("iBizMDCtrlContainer2"), {
52
+ "controller": this.controller,
53
+ "items": state.items
54
+ }, {
55
+ item: ({
56
+ data
57
+ }) => {
58
+ if (!formProvider) {
59
+ return vue.createVNode("div", null, [ibiz.i18n.t("control.form.formMDctrlForm.noFindProvider")]);
60
+ }
61
+ const formComponent = vue.h(vue.resolveComponent(formProvider.component), {
62
+ class: this.ns.be("item", "form"),
63
+ key: data.id,
64
+ modelData: model.contentControl,
65
+ context: data.context,
66
+ params: data.params,
67
+ onCreated: (event) => {
68
+ this.onCreated(data.id, event);
69
+ }
70
+ });
71
+ return formComponent;
72
+ }
73
+ });
74
+ }
50
75
  return vue.createVNode(vue.resolveComponent("iBizMDCtrlContainer"), {
51
76
  "class": this.ns.b(),
52
77
  "items": state.items,
@@ -10,6 +10,7 @@ var formMdctrlMd = require('./form-mdctrl-md/form-mdctrl-md.cjs');
10
10
  var formMdctrlRepeater = require('./form-mdctrl-repeater/form-mdctrl-repeater.cjs');
11
11
  var formMdctrl_provider = require('./form-mdctrl.provider.cjs');
12
12
  var mdctrlContainer = require('./mdctrl-container/mdctrl-container.cjs');
13
+ var mdctrlContainer2 = require('./mdctrl-container2/mdctrl-container2.cjs');
13
14
 
14
15
  "use strict";
15
16
  const IBizFormMDCtrl = vue3Util.withInstall(formMdctrl.FormMDCtrl, function(v) {
@@ -18,6 +19,7 @@ const IBizFormMDCtrl = vue3Util.withInstall(formMdctrl.FormMDCtrl, function(v) {
18
19
  v.component(formMdctrlMd.FormMDCtrlMD.name, formMdctrlMd.FormMDCtrlMD);
19
20
  v.component(formMdctrlRepeater.FormMDCtrlRepeater.name, formMdctrlRepeater.FormMDCtrlRepeater);
20
21
  v.component(mdctrlContainer.MDCtrlContainer.name, mdctrlContainer.MDCtrlContainer);
22
+ v.component(mdctrlContainer2.MDCtrlContainer2.name, mdctrlContainer2.MDCtrlContainer2);
21
23
  runtime.registerFormDetailProvider("MDCTRL", () => new formMdctrl_provider.FormMDCtrlProvider());
22
24
  });
23
25