@ibiz-template/vue3-components 0.7.41-alpha.12 → 0.7.41-alpha.14

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 (154) hide show
  1. package/dist/ibiz-markdown-editor-0VHzFa2l.js +1 -0
  2. package/dist/index-1fHusiqt.js +4 -0
  3. package/dist/index.min.css +1 -1
  4. package/dist/index.system.min.js +1 -1
  5. package/dist/{wang-editor-TYKjfyR5.js → wang-editor-z0RY8bO1.js} +1 -1
  6. package/dist/{xlsx-util-Q9msA8ef.js → xlsx-util-8Du1A340.js} +1 -1
  7. package/es/control/calendar/calendar.mjs +4 -1
  8. package/es/control/calendar/components/calendar-user/calendar-user.css +1 -1
  9. package/es/control/calendar/components/calendar-user/calendar-user.mjs +76 -2
  10. package/es/control/data-view/data-view.d.ts +1 -1
  11. package/es/control/data-view/index.d.ts +1 -1
  12. package/es/control/drbar/drbar.controller.d.ts +6 -0
  13. package/es/control/drbar/drbar.controller.mjs +8 -0
  14. package/es/control/drbar/drbar.mjs +6 -0
  15. package/es/control/drtab/drtab-control.util.mjs +1 -1
  16. package/es/control/drtab/drtab.controller.d.ts +6 -0
  17. package/es/control/drtab/drtab.controller.mjs +9 -0
  18. package/es/control/drtab/drtab.mjs +13 -0
  19. package/es/control/form/form/index.mjs +2 -0
  20. package/es/control/form/form-detail/form-iframe/form-iframe.css +1 -0
  21. package/es/control/form/form-detail/form-iframe/form-iframe.d.ts +29 -0
  22. package/es/control/form/form-detail/form-iframe/form-iframe.mjs +53 -0
  23. package/es/control/form/form-detail/form-iframe/form-iframe.provider.d.ts +13 -0
  24. package/es/control/form/form-detail/form-iframe/form-iframe.provider.mjs +21 -0
  25. package/es/control/form/form-detail/form-iframe/index.d.ts +25 -0
  26. package/es/control/form/form-detail/form-iframe/index.mjs +12 -0
  27. package/es/control/form/form-detail/form-item/form-item.css +1 -1
  28. package/es/control/form/form-detail/form-item/form-item.mjs +6 -4
  29. package/es/control/form/form-detail/index.d.ts +1 -0
  30. package/es/control/form/form-detail/index.mjs +1 -0
  31. package/es/control/form/index.mjs +1 -0
  32. package/es/control/gantt/gantt.d.ts +1 -1
  33. package/es/control/gantt/gantt.mjs +4 -1
  34. package/es/control/gantt/index.d.ts +1 -1
  35. package/es/control/grid/grid/grid.d.ts +1 -1
  36. package/es/control/grid/grid/index.d.ts +1 -1
  37. package/es/control/grid/grid/index.mjs +2 -0
  38. package/es/control/grid/grid-column/grid-field-column/grid-field-column.d.ts +4 -4
  39. package/es/control/grid/grid-column/grid-field-column/grid-field-column.mjs +5 -8
  40. package/es/control/grid/virtualized-table/index.d.ts +136 -0
  41. package/es/control/grid/virtualized-table/index.mjs +18 -0
  42. package/es/control/grid/virtualized-table/virtualized-table.css +1 -0
  43. package/es/control/grid/virtualized-table/virtualized-table.d.ts +200 -0
  44. package/es/control/grid/virtualized-table/virtualized-table.mjs +325 -0
  45. package/es/control/grid/virtualized-table/virtualized-table.provider.d.ts +10 -0
  46. package/es/control/grid/virtualized-table/virtualized-table.provider.mjs +14 -0
  47. package/es/control/grid/virtualized-table/virtualized-table.util.d.ts +95 -0
  48. package/es/control/grid/virtualized-table/virtualized-table.util.mjs +191 -0
  49. package/es/control/index.mjs +1 -0
  50. package/es/control/kanban/index.d.ts +44 -1
  51. package/es/control/kanban/kanban.d.ts +56 -1
  52. package/es/control/kanban/kanban.mjs +36 -2
  53. package/es/control/list/index.d.ts +1 -1
  54. package/es/control/list/list.d.ts +1 -1
  55. package/es/control/list/list.mjs +1 -1
  56. package/es/control/search-bar/search-bar.mjs +3 -0
  57. package/es/control/tab-exp-panel/index.d.ts +1 -0
  58. package/es/control/tab-exp-panel/tab-exp-panel.css +1 -1
  59. package/es/control/tab-exp-panel/tab-exp-panel.d.ts +2 -1
  60. package/es/control/tab-exp-panel/tab-exp-panel.mjs +21 -2
  61. package/es/control/tree/index.d.ts +1 -1
  62. package/es/control/tree/tree.d.ts +1 -1
  63. package/es/control/tree/tree.mjs +4 -1
  64. package/es/control/tree-grid/index.d.ts +1 -1
  65. package/es/control/tree-grid/tree-grid.d.ts +1 -1
  66. package/es/editor/array/ibiz-array/ibiz-array.css +1 -1
  67. package/es/editor/array/ibiz-array/ibiz-array.mjs +4 -1
  68. package/es/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.d.ts +1 -1
  69. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer.d.ts +1 -1
  70. package/es/editor/data-picker/ibiz-transfer-picker/ibiz-transfer-picker.d.ts +3 -2
  71. package/es/editor/date-range-select/date-range-select-picker/date-range-select.d.ts +5 -5
  72. package/es/editor/date-range-select/date-range-select.controller.mjs +9 -0
  73. package/es/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.d.ts +1 -0
  74. package/es/editor/dropdown-list/ibiz-tree-picker/ibiz-tree-picker.d.ts +4 -3
  75. package/es/editor/dropdown-list/ibiz-virtualized-list/ibiz-virtualized-list.css +1 -1
  76. package/es/editor/dropdown-list/ibiz-virtualized-list/ibiz-virtualized-list.d.ts +10 -7
  77. package/es/editor/dropdown-list/ibiz-virtualized-list/ibiz-virtualized-list.mjs +5 -5
  78. package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.mjs +1 -1
  79. package/es/editor/slider/ibiz-slider/ibiz-slider.d.ts +3 -3
  80. package/es/editor/span/span/span.d.ts +1 -1
  81. package/es/editor/text-box/ibiz-input-ip/ibiz-input-ip.css +1 -1
  82. package/es/editor/text-box/ibiz-input-ip/ibiz-input-ip.d.ts +3 -77
  83. package/es/editor/text-box/ibiz-input-ip/ibiz-input-ip.mjs +167 -108
  84. package/es/editor/text-box/input/input.d.ts +4 -4
  85. package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.mjs +1 -1
  86. package/es/index.mjs +1 -0
  87. package/es/panel-component/panel-button/panel-button.controller.mjs +2 -1
  88. package/es/panel-component/panel-button/panel-button.mjs +1 -1
  89. package/es/util/app-util/app-util.d.ts +54 -2
  90. package/es/util/app-util/app-util.mjs +48 -1
  91. package/es/util/fullscreen/fullscreen-util.mjs +1 -1
  92. package/es/view-engine/custom-view.engine.d.ts +1 -1
  93. package/es/view-engine/custom-view.engine.mjs +5 -5
  94. package/es/view-engine/de-index-view-engine.mjs +1 -1
  95. package/es/view-engine/edit-view.engine.mjs +1 -1
  96. package/es/view-engine/md-custom-view.engine.d.ts +1 -1
  97. package/es/view-engine/md-custom-view.engine.mjs +5 -5
  98. package/es/view-engine/opt-view.engine.mjs +1 -1
  99. package/lib/control/calendar/calendar.cjs +4 -1
  100. package/lib/control/calendar/components/calendar-user/calendar-user.cjs +76 -2
  101. package/lib/control/calendar/components/calendar-user/calendar-user.css +1 -1
  102. package/lib/control/drbar/drbar.cjs +6 -0
  103. package/lib/control/drbar/drbar.controller.cjs +8 -0
  104. package/lib/control/drtab/drtab-control.util.cjs +1 -1
  105. package/lib/control/drtab/drtab.cjs +13 -0
  106. package/lib/control/drtab/drtab.controller.cjs +9 -0
  107. package/lib/control/form/form/index.cjs +2 -0
  108. package/lib/control/form/form-detail/form-iframe/form-iframe.cjs +58 -0
  109. package/lib/control/form/form-detail/form-iframe/form-iframe.css +1 -0
  110. package/lib/control/form/form-detail/form-iframe/form-iframe.provider.cjs +23 -0
  111. package/lib/control/form/form-detail/form-iframe/index.cjs +17 -0
  112. package/lib/control/form/form-detail/form-item/form-item.cjs +5 -3
  113. package/lib/control/form/form-detail/form-item/form-item.css +1 -1
  114. package/lib/control/form/form-detail/index.cjs +2 -0
  115. package/lib/control/form/index.cjs +6 -4
  116. package/lib/control/gantt/gantt.cjs +4 -1
  117. package/lib/control/grid/grid/index.cjs +2 -0
  118. package/lib/control/grid/grid-column/grid-field-column/grid-field-column.cjs +3 -6
  119. package/lib/control/grid/virtualized-table/index.cjs +23 -0
  120. package/lib/control/grid/virtualized-table/virtualized-table.cjs +327 -0
  121. package/lib/control/grid/virtualized-table/virtualized-table.css +1 -0
  122. package/lib/control/grid/virtualized-table/virtualized-table.provider.cjs +16 -0
  123. package/lib/control/grid/virtualized-table/virtualized-table.util.cjs +193 -0
  124. package/lib/control/index.cjs +82 -80
  125. package/lib/control/kanban/kanban.cjs +34 -0
  126. package/lib/control/list/list.cjs +1 -1
  127. package/lib/control/search-bar/search-bar.cjs +3 -0
  128. package/lib/control/tab-exp-panel/tab-exp-panel.cjs +20 -1
  129. package/lib/control/tab-exp-panel/tab-exp-panel.css +1 -1
  130. package/lib/control/tree/tree.cjs +4 -1
  131. package/lib/editor/array/ibiz-array/ibiz-array.cjs +4 -1
  132. package/lib/editor/array/ibiz-array/ibiz-array.css +1 -1
  133. package/lib/editor/date-range-select/date-range-select.controller.cjs +9 -0
  134. package/lib/editor/dropdown-list/ibiz-virtualized-list/ibiz-virtualized-list.cjs +5 -5
  135. package/lib/editor/dropdown-list/ibiz-virtualized-list/ibiz-virtualized-list.css +1 -1
  136. package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.cjs +1 -1
  137. package/lib/editor/text-box/ibiz-input-ip/ibiz-input-ip.cjs +166 -107
  138. package/lib/editor/text-box/ibiz-input-ip/ibiz-input-ip.css +1 -1
  139. package/lib/editor/upload/ibiz-file-upload/ibiz-file-upload.cjs +1 -1
  140. package/lib/index.cjs +112 -110
  141. package/lib/panel-component/panel-button/panel-button.cjs +1 -1
  142. package/lib/panel-component/panel-button/panel-button.controller.cjs +2 -1
  143. package/lib/util/app-util/app-util.cjs +47 -0
  144. package/lib/util/fullscreen/fullscreen-util.cjs +1 -1
  145. package/lib/view-engine/custom-view.engine.cjs +5 -5
  146. package/lib/view-engine/de-index-view-engine.cjs +1 -1
  147. package/lib/view-engine/edit-view.engine.cjs +1 -1
  148. package/lib/view-engine/md-custom-view.engine.cjs +5 -5
  149. package/lib/view-engine/opt-view.engine.cjs +1 -1
  150. package/package.json +5 -5
  151. package/dist/ibiz-markdown-editor-KyK5mBTS.js +0 -1
  152. package/dist/index-pyv7Wdpx.js +0 -4
  153. /package/es/node_modules/.pnpm/{@ibiz-template_core@0.7.41-alpha.12_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.41-alpha.14_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs +0 -0
  154. /package/lib/node_modules/.pnpm/{@ibiz-template_core@0.7.41-alpha.12_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.41-alpha.14_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs +0 -0
@@ -184,7 +184,7 @@ const IBizVirtualizedList = /* @__PURE__ */ defineComponent({
184
184
  emitVal = Number(select);
185
185
  emit("change", emitVal);
186
186
  }
187
- if (c.editorParams.alwaysLoad === "true") {
187
+ if (c.editorParams.alwaysLoad === "true" || c.editorParams.alwaysload === "true") {
188
188
  loadCodeList();
189
189
  }
190
190
  if (props.autoFocus) {
@@ -240,7 +240,7 @@ const IBizVirtualizedList = /* @__PURE__ */ defineComponent({
240
240
  return list.find((item) => item.text === text);
241
241
  };
242
242
  const onVisibleChange = async (visible) => {
243
- if (visible && (!isLoadedCodeList.value || c.editorParams.alwaysLoad === "true")) {
243
+ if (visible && (!isLoadedCodeList.value || c.editorParams.alwaysLoad === "true" || c.editorParams.alwaysload === "true")) {
244
244
  await loadCodeList();
245
245
  if (hasChildren.value && editorRef.value && editorState !== "outside") {
246
246
  nextTick(() => {
@@ -319,7 +319,7 @@ const IBizVirtualizedList = /* @__PURE__ */ defineComponent({
319
319
  };
320
320
  },
321
321
  render() {
322
- const overflowMode = this.c.editorParams.overflowMode || ibiz.config.pickerEditor.overflowMode;
322
+ const overflowMode = this.c.editorParams.overflowMode || this.c.editorParams.overflowmode || ibiz.config.pickerEditor.overflowMode;
323
323
  const isEllipsis = overflowMode === "ellipsis";
324
324
  const editContent = createVNode(resolveComponent("el-select-v2"), mergeProps({
325
325
  "ref": "editorRef",
@@ -334,7 +334,7 @@ const IBizVirtualizedList = /* @__PURE__ */ defineComponent({
334
334
  "disabled": this.disabled,
335
335
  "loading": this.isLoading,
336
336
  "fit-input-width": isEllipsis,
337
- "popper-class": "".concat(this.ns.b("popper"), " ").concat(this.c.editorParams.type === "round" ? this.ns.bm("popper", "round") : "", " ").concat(this.ns.bm("popper", "".concat(this.c.model.id))),
337
+ "popper-class": "".concat(this.ns.b("popper"), " ").concat(this.c.editorParams.type === "round" ? this.ns.bm("popper", "round") : "", " ").concat(this.ns.bm("popper", "".concat(this.c.model.id)), " ").concat(this.ns.b("virtualized-list-popper")),
338
338
  "onFocus": this.onFocus,
339
339
  "onClear": this.handleClear,
340
340
  "onKeyup": this.handleKeyUp,
@@ -384,7 +384,7 @@ const IBizVirtualizedList = /* @__PURE__ */ defineComponent({
384
384
  }, [text])]);
385
385
  });
386
386
  return createVNode("div", {
387
- "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.c.editorParams.type === "round" && this.ns.m("round")]
387
+ "class": [this.ns.b(), this.ns.b("virtualized-list"), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.c.editorParams.type === "round" && this.ns.m("round"), this.ns.is("has-value", this.value != null && this.value !== "")]
388
388
  }, [this.readonly ? readonlyContent : editContent]);
389
389
  }
390
390
  });
@@ -173,7 +173,7 @@ const IBizMarkDown = /* @__PURE__ */ defineComponent({
173
173
  }
174
174
  };
175
175
  const editorInit = () => {
176
- if (props.disabled) {
176
+ if (props.disabled || props.readonly) {
177
177
  defaultModel.value = "previewOnly";
178
178
  }
179
179
  nextTick(() => {
@@ -12,9 +12,9 @@ import './ibiz-slider.scss';
12
12
  * @editorparams {name:showstops,parameterType:boolean,defaultvalue:false,description:当 `type` 为 'line' 时,是否显示间断点,el-slider组件的show-stops属性}
13
13
  * @editorparams {name:range,parameterType:boolean,defaultvalue:false,description:当 `type` 为 'line' 时,是否开启选择范围,el-slider组件的range属性}
14
14
  * @editorparams {name:showinput,parameterType:boolean,defaultvalue:false,description:当 `type` 为 'line' 时,是否显示输入框,仅在非范围选择时有效,el-slider组件的show-input属性}
15
- * @editorparams {name:showtext,parameterType:boolean,defaultvalue:false,description:当 `type` 为 'line' 或为 'circle' 时,是否显示文本}
16
- * @editorparams {name:format,parameterType:string,defaultvalue:'0%',description:当 `type` 为 'line' 或为 'circle' 时,设置显示文本的格式}
17
- * @editorparams {name:textitem,parameterType:string,description:当 `type` 为 'line' 或为 'circle' 时,设置显示文本属性。设置后,环形进度条的显示文本将优先获取主数据内对应属性的数据进行展示}
15
+ * @editorparams {name:showtext,parameterType:boolean,defaultvalue:false,description:当 `type` 为 'line' 'circle' 时,是否显示文本}
16
+ * @editorparams {name:format,parameterType:string,defaultvalue:'0%',description:当 `type` 为 'line' 'circle' 时,设置显示文本的格式}
17
+ * @editorparams {name:textitem,parameterType:string,description:当 `type` 为 'line' 'circle' 时,设置显示文本属性。设置后,环形进度条的显示文本将优先获取主数据内对应属性的数据进行展示}
18
18
  * @editorparams {name:piebg,parameterType:string,description:当 `type` 为 'pie' 时,设置饼图进度条背景色,可配置十六进制颜色、rgb颜色}
19
19
  * @editorparams {name:piepercentbg,parameterType:string,description:当 `type` 为 'pie' 时,设置饼图进度条占比背景色,可配置十六进制颜色、rgb颜色}
20
20
  * @editorparams {"name":"readonly","parameterType":"boolean","defaultvalue":false,"description":"设置编辑器是否为只读态"}
@@ -7,7 +7,7 @@ import { SpanEditorController } from '../span-editor.controller';
7
7
  * @description 直接呈现文本内容,可配置单位,无值时显示全局配置的emptyText,支持编辑器类型包含:`标签`
8
8
  * @primary
9
9
  * @editorparams {"name":"textseparator","parameterType":"string","defaultvalue":"','","description":"文本分隔符。如果是数组数据,在呈现时会使用文本分隔符拼接为字符串显示"}
10
- * @editorparams {name:overflowmode,parameterType:'auto' | 'ellipsis',defaultvalue:'auto',description:文本换行模式。当参数为 'auto' 时,若内容超出宽度则会换行显示;当参数为 'ellipsis' 时,若内容超出宽度则会显示省略号}
10
+ * @editorparams {name:overflowmode,parameterType:'auto' | 'ellipsis',description:文本换行模式。当参数为 'auto' 时,若内容超出宽度则会换行显示;当参数为 'ellipsis' 时,若内容超出宽度则会显示省略号}
11
11
  * @editorparams {"name":"valuetype","parameterType":"string","description":"编辑器的值类型"}
12
12
  * @editorparams {"name":"objectnamefield","parameterType":"string","defaultvalue":"'srfmajortext'","description":"值类型为OBJECT、OBJECTS时显示的对象属性"}
13
13
  * @ignoreprops autoFocus | overflowMode
@@ -1 +1 @@
1
- .ibiz-input-ip{display:flex;flex-wrap:nowrap;height:100%;line-height:var(--ibiz-form-item-line-height)}.ibiz-form-item .ibiz-input-ip.is-show-default{padding:var(--ibiz-form-item-hover-edit-padding)}
1
+ .ibiz-input-ip{display:flex;flex-wrap:nowrap;height:100%;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-form-item-line-height);color:var(--ibiz-form-item-text-color)}.ibiz-input-ip .el-input .el-input__wrapper{background-color:transparent;box-shadow:none}.ibiz-input-ip .el-input.is-disabled .el-input__wrapper{background-color:transparent}.ibiz-input-ip:hover:not(.ibiz-input-ip--disabled) .ibiz-input-ip-content{box-shadow:0 0 0 1px var(--ibiz-editor-hover-border-color) inset}.ibiz-input-ip--disabled .ibiz-input-ip-content{color:var(--el-disabled-text-color);cursor:not-allowed;background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.ibiz-input-ip--readonly{color:var(--ibiz-form-item-readonly-color)}.ibiz-input-ip.is-focus .ibiz-input-ip-content{box-shadow:0 0 0 1px var(--ibiz-color-primary) inset}.ibiz-input-ip-content{display:flex;flex-wrap:nowrap;align-items:center;width:100%;height:100%;color:var(--ibiz-editor-default-text-color);border-radius:var(--ibiz-border-radius-small);box-shadow:0 0 0 1px var(--ibiz-editor-default-border-color) inset}.ibiz-form-item .ibiz-input-ip.is-show-default .ibiz-input-ip-form-default-content{display:block;padding:var(--ibiz-form-item-hover-edit-padding)}.ibiz-form-item .ibiz-input-ip.is-show-default .ibiz-input-ip-content{display:none}.ibiz-form-item .ibiz-input-ip.is-show-default:hover .ibiz-input-ip-form-default-content{display:none}.ibiz-form-item .ibiz-input-ip.is-show-default:hover .ibiz-input-ip-content{display:flex}.ibiz-form-item .ibiz-input-ip.is-show-default.is-focus .ibiz-input-ip-form-default-content{display:none}.ibiz-form-item .ibiz-input-ip.is-show-default.is-focus .ibiz-input-ip-content{display:flex}
@@ -1,86 +1,12 @@
1
- import { Ref } from 'vue';
1
+ import { defineComponent } from 'vue';
2
2
  import './ibiz-input-ip.scss';
3
- import { TextBoxEditorController } from '../text-box-editor.controller';
4
3
  /**
5
4
  * IP地址输入框
6
5
  *
7
- * @description 使用多个el-input组件用于 IP 地址数据的录入,呈现样式为 4 个输入框。支持编辑器类型包含:`IP地址输入框`
6
+ * @description 由多个el-input组件组合而成,用于IP地址数据的录入。支持编辑器类型包含:`IP地址输入框`
8
7
  * @primary
9
8
  * @editorparams {"name":"readonly","parameterType":"boolean","defaultvalue":false,"description":"设置编辑器是否为只读态"}
10
9
  * @ignoreprops overflowMode
11
10
  * @ignoreemits infoTextChange
12
11
  */
13
- export declare const IBizInputIP: import("vue").DefineComponent<{
14
- value: StringConstructor;
15
- controller: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<TextBoxEditorController>, undefined, undefined>;
16
- data: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<import("@ibiz-template/core").IApiData>, undefined, undefined>;
17
- disabled: {
18
- type: BooleanConstructor;
19
- };
20
- readonly: {
21
- type: BooleanConstructor;
22
- default: boolean;
23
- };
24
- autoFocus: {
25
- type: BooleanConstructor;
26
- default: boolean;
27
- };
28
- overflowMode: {
29
- type: StringConstructor;
30
- };
31
- controlParams: {
32
- type: ObjectConstructor;
33
- required: boolean;
34
- };
35
- }, {
36
- ns: import("@ibiz-template/core").Namespace;
37
- c: TextBoxEditorController;
38
- editorRef: Ref<any>;
39
- currentVal: Ref<string[]>;
40
- getFocus: () => void;
41
- blur: () => void;
42
- firstIp: Ref<string>;
43
- secIp: Ref<string>;
44
- thirdIp: Ref<string>;
45
- forIp: Ref<string>;
46
- showFormDefaultContent: import("vue").ComputedRef<boolean>;
47
- handleKeyUp: (e: KeyboardEvent) => void;
48
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
49
- change: (_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => boolean;
50
- blur: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
51
- focus: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
52
- enter: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
53
- infoTextChange: (_text: string) => boolean;
54
- }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
55
- value: StringConstructor;
56
- controller: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<TextBoxEditorController>, undefined, undefined>;
57
- data: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<import("@ibiz-template/core").IApiData>, undefined, undefined>;
58
- disabled: {
59
- type: BooleanConstructor;
60
- };
61
- readonly: {
62
- type: BooleanConstructor;
63
- default: boolean;
64
- };
65
- autoFocus: {
66
- type: BooleanConstructor;
67
- default: boolean;
68
- };
69
- overflowMode: {
70
- type: StringConstructor;
71
- };
72
- controlParams: {
73
- type: ObjectConstructor;
74
- required: boolean;
75
- };
76
- }>> & {
77
- onFocus?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
78
- onBlur?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
79
- onChange?: ((_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => any) | undefined;
80
- onInfoTextChange?: ((_text: string) => any) | undefined;
81
- onEnter?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
82
- }, {
83
- disabled: boolean;
84
- readonly: boolean;
85
- autoFocus: boolean;
86
- }, {}>;
12
+ export declare const IBizInputIP: ReturnType<typeof defineComponent>;
@@ -1,4 +1,4 @@
1
- import { ref, computed, watch, resolveComponent, createVNode, createTextVNode, defineComponent } from 'vue';
1
+ import { computed, ref, watch, resolveComponent, createVNode, createTextVNode, defineComponent } from 'vue';
2
2
  import { getInputIpProps, getEditorEmits, useNamespace } from '@ibiz-template/vue3-util';
3
3
  import './ibiz-input-ip.css';
4
4
 
@@ -12,71 +12,139 @@ const IBizInputIP = /* @__PURE__ */ defineComponent({
12
12
  }) {
13
13
  const ns = useNamespace("input-ip");
14
14
  const c = props.controller;
15
- const editorRef = ref();
16
15
  const showFormDefaultContent = computed(() => {
17
16
  if (props.controlParams && props.controlParams.editmode === "hover" && !props.readonly) {
18
17
  return true;
19
18
  }
20
19
  return false;
21
20
  });
22
- const currentVal = ref([]);
23
21
  const activeElement = ref(false);
24
22
  const isAllBlur = ref(false);
25
- const firstIp = ref("");
26
- const secIp = ref("");
27
- const thirdIp = ref("");
28
- const forIp = ref("");
29
- if (props.value) {
30
- const ipArr = props.value.split(".");
31
- currentVal.value = ipArr;
32
- firstIp.value = currentVal.value[0];
33
- secIp.value = currentVal.value[1];
34
- thirdIp.value = currentVal.value[2];
35
- forIp.value = currentVal.value[3];
36
- }
37
- const checkIpVal = (newVal, oldVal, ip, index) => {
38
- if (newVal === "")
39
- return;
40
- const reg = /^(([0-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5]))))$/g;
41
- if (reg.test(newVal)) {
42
- currentVal.value[index] = newVal;
43
- } else if (ip) {
44
- ibiz.message.warning(ibiz.i18n.t("editor.textBox.warningMessage", {
45
- num: index + 1
46
- }));
47
- ip.value = oldVal;
48
- currentVal.value[index] = oldVal;
23
+ const splitIp = (ip) => {
24
+ const parts = ip.split(".");
25
+ return [parts[0] || "", parts[1] || "", parts[2] || "", parts[3] || ""];
26
+ };
27
+ const joinIp = (parts) => {
28
+ return parts.join(".");
29
+ };
30
+ const isValidIp = (parts) => {
31
+ return parts.every((part) => {
32
+ if (!part) {
33
+ return false;
34
+ }
35
+ return /^(0|[1-9]\d?|1\d\d|2[0-4]\d|25[0-5])$/.test(part);
36
+ });
37
+ };
38
+ const ipSegments = ref(splitIp(props.value || ""));
39
+ const ipInputs = ref([]);
40
+ const handleInput = (value, index) => {
41
+ var _a;
42
+ value = value.replace(/[^0-9]/g, "").slice(0, 3);
43
+ if (value) {
44
+ const num = parseInt(value, 10);
45
+ if (num > 255) {
46
+ value = "255";
47
+ } else {
48
+ value = "".concat(num);
49
+ }
50
+ }
51
+ ipSegments.value[index] = value;
52
+ const target = ipInputs.value[index];
53
+ const input = target == null ? void 0 : target.input;
54
+ if (ipSegments.value[index].length === 3 && index < 3 && input && input.selectionStart === ipSegments.value[index].length && input.selectionEnd === ipSegments.value[index].length) {
55
+ const ipInput = ipInputs.value[index + 1];
56
+ if (ipInput) {
57
+ ipInput.focus();
58
+ (_a = ipInput.input) == null ? void 0 : _a.setSelectionRange(0, ipSegments.value[index + 1].length);
59
+ }
49
60
  }
50
- if (firstIp.value && secIp.value && thirdIp.value && forIp.value) {
51
- emit("change", "".concat(firstIp.value, ".").concat(secIp.value, ".").concat(thirdIp.value, ".").concat(forIp.value));
61
+ if (isValidIp(ipSegments.value)) {
62
+ emit("change", joinIp(ipSegments.value));
52
63
  }
53
64
  };
54
- watch(firstIp, (newVal, oldVal) => {
55
- checkIpVal(newVal, oldVal, firstIp, 0);
56
- });
57
- watch(secIp, (newVal, oldVal) => {
58
- checkIpVal(newVal, oldVal, secIp, 1);
59
- });
60
- watch(thirdIp, (newVal, oldVal) => {
61
- checkIpVal(newVal, oldVal, thirdIp, 2);
62
- });
63
- watch(forIp, (newVal, oldVal) => {
64
- checkIpVal(newVal, oldVal, forIp, 3);
65
- });
66
- watch(editorRef, (newVal) => {
67
- if (props.autoFocus && newVal) {
68
- const input = newVal.$el.getElementsByTagName("input")[0];
69
- input.focus();
65
+ const handleKeydown = (event, index) => {
66
+ var _a, _b, _c, _d, _e;
67
+ if (event.key === "Enter") {
68
+ emit("enter", event);
69
+ return;
70
70
  }
71
- });
72
- const getFocus = () => {
71
+ if (/^[0-9]$/.test(event.key)) {
72
+ const input = event.target;
73
+ if (input && ipSegments.value[index].length === 3 && input.selectionStart === input.selectionEnd) {
74
+ event.preventDefault();
75
+ if (index < 3 && input.selectionEnd === ipSegments.value[index].length) {
76
+ const nextIndex = index + 1;
77
+ const nextInput = ipInputs.value[nextIndex];
78
+ if (nextInput) {
79
+ nextInput.focus();
80
+ (_a = nextInput.input) == null ? void 0 : _a.setSelectionRange(0, ipSegments.value[nextIndex].length);
81
+ }
82
+ }
83
+ }
84
+ return;
85
+ }
86
+ if (event.key === ".") {
87
+ event.preventDefault();
88
+ const input = event.target;
89
+ if (input && index < 3 && input.selectionStart === input.selectionEnd && input.selectionEnd !== 0 && ipSegments.value[index].length) {
90
+ const nextIndex = index + 1;
91
+ const nextInput = ipInputs.value[nextIndex];
92
+ if (nextInput) {
93
+ nextInput.focus();
94
+ (_b = nextInput.input) == null ? void 0 : _b.setSelectionRange(0, ipSegments.value[nextIndex].length);
95
+ }
96
+ }
97
+ return;
98
+ }
99
+ if (event.key === "Backspace") {
100
+ const input = event.target;
101
+ if (input && index > 0 && input.selectionStart === 0 && input.selectionEnd === 0) {
102
+ event.preventDefault();
103
+ const prevIndex = index - 1;
104
+ const prevValue = ipSegments.value[prevIndex];
105
+ const prevInput = ipInputs.value[prevIndex];
106
+ if (prevValue.length > 0) {
107
+ ipSegments.value[prevIndex] = prevValue.slice(0, -1);
108
+ }
109
+ if (prevInput) {
110
+ prevInput.focus();
111
+ (_c = prevInput.input) == null ? void 0 : _c.setSelectionRange(ipSegments.value[prevIndex].length, ipSegments.value[prevIndex].length);
112
+ }
113
+ }
114
+ }
115
+ if (event.key === "ArrowLeft") {
116
+ const input = event.target;
117
+ if (input && index > 0 && input.selectionStart === 0 && input.selectionEnd === 0) {
118
+ event.preventDefault();
119
+ const prevIndex = index - 1;
120
+ const prevInput = ipInputs.value[prevIndex];
121
+ if (prevInput) {
122
+ prevInput.focus();
123
+ (_d = prevInput.input) == null ? void 0 : _d.setSelectionRange(ipSegments.value[prevIndex].length, ipSegments.value[prevIndex].length);
124
+ }
125
+ }
126
+ }
127
+ if (event.key === "ArrowRight") {
128
+ const input = event.target;
129
+ if (input && index < 3 && input.selectionStart === ipSegments.value[index].length && input.selectionEnd === ipSegments.value[index].length) {
130
+ event.preventDefault();
131
+ const nextIndex = index + 1;
132
+ const nextInput = ipInputs.value[nextIndex];
133
+ if (nextInput) {
134
+ nextInput.focus();
135
+ (_e = nextInput.input) == null ? void 0 : _e.setSelectionRange(0, 0);
136
+ }
137
+ }
138
+ }
139
+ };
140
+ const handleFocus = () => {
73
141
  activeElement.value = true;
74
142
  if (isAllBlur.value) {
75
143
  isAllBlur.value = false;
76
144
  emit("focus");
77
145
  }
78
146
  };
79
- const blur = () => {
147
+ const handleBlur = () => {
80
148
  activeElement.value = false;
81
149
  setTimeout(() => {
82
150
  if (!activeElement.value) {
@@ -85,75 +153,66 @@ const IBizInputIP = /* @__PURE__ */ defineComponent({
85
153
  }
86
154
  }, 0);
87
155
  };
88
- const handleKeyUp = (e) => {
89
- if (e && e.code === "Enter") {
90
- emit("enter", e);
156
+ watch(() => props.value, (newVal) => {
157
+ ipSegments.value = splitIp(newVal || "");
158
+ });
159
+ watch(() => ipInputs.value[0], (input) => {
160
+ if (props.autoFocus && input) {
161
+ input.focus();
91
162
  }
92
- };
163
+ });
93
164
  return {
94
165
  ns,
95
166
  c,
96
- editorRef,
97
- currentVal,
98
- getFocus,
99
- blur,
100
- firstIp,
101
- secIp,
102
- thirdIp,
103
- forIp,
104
167
  showFormDefaultContent,
105
- handleKeyUp
168
+ activeElement,
169
+ ipSegments,
170
+ ipInputs,
171
+ joinIp,
172
+ handleInput,
173
+ handleKeydown,
174
+ handleFocus,
175
+ handleBlur
106
176
  };
107
177
  },
108
178
  render() {
109
- return createVNode("div", {
110
- "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("show-default", this.showFormDefaultContent)]
111
- }, [createVNode(resolveComponent("el-input"), {
112
- "ref": "editorRef",
113
- "type": "text",
114
- "size": "small",
115
- "disabled": this.disabled,
116
- "readonly": this.readonly,
117
- "onFocus": this.getFocus,
118
- "onBlur": this.blur,
119
- "onKeyup": this.handleKeyUp,
120
- "maxlength": 3,
121
- "modelValue": this.firstIp,
122
- "onUpdate:modelValue": ($event) => this.firstIp = $event
123
- }, null), createTextVNode("."), createVNode(resolveComponent("el-input"), {
124
- "type": "text",
125
- "size": "small",
126
- "disabled": this.disabled,
127
- "readonly": this.readonly,
128
- "onFocus": this.getFocus,
129
- "onBlur": this.blur,
130
- "onKeyup": this.handleKeyUp,
131
- "maxlength": 3,
132
- "modelValue": this.secIp,
133
- "onUpdate:modelValue": ($event) => this.secIp = $event
134
- }, null), createTextVNode("."), createVNode(resolveComponent("el-input"), {
135
- "type": "text",
136
- "size": "small",
137
- "disabled": this.disabled,
138
- "readonly": this.readonly,
139
- "onFocus": this.getFocus,
140
- "onBlur": this.blur,
141
- "onKeyup": this.handleKeyUp,
142
- "maxlength": 3,
143
- "modelValue": this.thirdIp,
144
- "onUpdate:modelValue": ($event) => this.thirdIp = $event
145
- }, null), createTextVNode("."), createVNode(resolveComponent("el-input"), {
146
- "type": "text",
147
- "size": "small",
148
- "disabled": this.disabled,
149
- "readonly": this.readonly,
150
- "onFocus": this.getFocus,
151
- "onBlur": this.blur,
152
- "onKeyup": this.handleKeyUp,
153
- "maxlength": 3,
154
- "modelValue": this.forIp,
155
- "onUpdate:modelValue": ($event) => this.forIp = $event
179
+ let content = null;
180
+ if (this.readonly) {
181
+ content = this.value;
182
+ } else {
183
+ content = createVNode("div", {
184
+ "class": this.ns.b("content")
185
+ }, [this.ipSegments.map((segment, index) => {
186
+ return [createVNode(resolveComponent("el-input"), {
187
+ "model-value": segment,
188
+ "maxlength": 4,
189
+ "disabled": this.disabled,
190
+ "readonly": this.readonly,
191
+ "ref": (el) => {
192
+ if (el) {
193
+ this.ipInputs[index] = el;
194
+ } else {
195
+ this.ipInputs[index] = void 0;
196
+ }
197
+ },
198
+ "onInput": (value) => this.handleInput(value, index),
199
+ "onKeydown": (e) => this.handleKeydown(e, index),
200
+ "onFocus": this.handleFocus,
201
+ "onBlur": this.handleBlur
202
+ }, null), index < 3 && createVNode("span", {
203
+ "class": this.ns.b("dot")
204
+ }, [createTextVNode(".")])];
205
+ })]);
206
+ }
207
+ const formDefaultContent = createVNode("div", {
208
+ "class": this.ns.b("form-default-content")
209
+ }, [this.ipSegments.some((segment) => segment) ? this.joinIp(this.ipSegments) : createVNode(resolveComponent("iBizEditorEmptyText"), {
210
+ "showPlaceholder": this.c.emptyShowPlaceholder,
211
+ "placeHolder": this.c.placeHolder
156
212
  }, null)]);
213
+ return createVNode("div", {
214
+ "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("show-default", this.showFormDefaultContent), this.ns.is("focus", this.activeElement && !this.disabled && !this.readonly)]
215
+ }, [this.showFormDefaultContent && formDefaultContent, content]);
157
216
  }
158
217
  });
159
218
 
@@ -3,13 +3,13 @@ import './input.scss';
3
3
  /**
4
4
  * 文本框
5
5
  *
6
- * @description 使用el-input组件,用于数据录入,通过鼠标或键盘输入字符。支持编辑器类型包含:`文本框`、`多行输入框`、`多行输入(10行)`、`密码框`
6
+ * @description 使用el-input组件,用于数据录入,通过鼠标或键盘输入字符。支持编辑器类型包含:`文本框`、`多行输入框`、`多行输入框(10行)`、`密码框`
7
7
  * @primary
8
- * @editorparams {name:showlimit,parameterType:boolean,defaultvalue:true,description:el-input组件的show-word-limit属性,控制文本域是否显示字数限制,当编辑器类型为多行输入框、多行输入(10行)时生效}
9
- * @editorparams {name:isauto,parameterType:boolean,defaultvalue:false,description:el-input组件的autosize属性,控制文本域高度是否自适应,当编辑器类型为多行输入框、多行输入(10行)时生效}
8
+ * @editorparams {name:showlimit,parameterType:boolean,defaultvalue:true,description:el-input组件的show-word-limit属性,控制文本域是否显示字数限制,当编辑器类型为多行输入框、多行输入框(10行)时生效}
9
+ * @editorparams {name:isauto,parameterType:boolean,defaultvalue:false,description:el-input组件的autosize属性,控制文本域高度是否自适应,当编辑器类型为多行输入框、多行输入框(10行)时生效}
10
10
  * @editorparams {name:autocomplete,parameterType:boolean,defaultvalue:false,description:el-input组件的autocomplete属性,是否允许自动填充}
11
11
  * @editorparams {name:ac,parameterType:boolean,defaultvalue:false,description:是否启用ac自填模式}
12
- * @editorparams {name:srfaiappendcurdata,parameterType:boolean,defaultvalue:false,description:在打开AI功能时,该参数用于判断是否传入对象参数,主要用于在请求历史记录时,附加当前参数}
12
+ * @editorparams {name:srfaiappendcurdata,parameterType:boolean,defaultvalue:false,description:在打开AI功能时,该参数用于判断是否传入对象参数,主要用于在请求历史记录时,附加当前数据对象}
13
13
  * @editorparams {name:srfaiappendcurcontent,parameterType:string,description:在打开AI功能时,如果该参数存在值,会将其传入编辑内容作为用户消息,主要用于在请求历史记录后,附加当前编辑内容作为用户消息}
14
14
  * @editorparams {"name":"triggermode","parameterType":"'blur' | 'input'","defaultvalue":"'blur'","description":"指定编辑器触发 `change` 值变更事件的模式,input: 输入框输入时触发事件,blur:输入框blur时触发事件"}
15
15
  * @editorparams {name:minlength,parameterType:number,description:指定编辑器输入内容的最小字数}
@@ -78,7 +78,7 @@ const IBizFileUpload = /* @__PURE__ */ defineComponent({
78
78
  "file-list": this.files,
79
79
  "action": this.uploadUrl,
80
80
  "headers": this.headers,
81
- "disabled": this.disabled,
81
+ "disabled": this.disabled || this.readonly,
82
82
  "multiple": this.c.multiple,
83
83
  "limit": this.limit,
84
84
  "drag": !!this.c.isDrag,
package/es/index.mjs CHANGED
@@ -40,6 +40,7 @@ export { IBizFormRawItem } from './control/form/form-detail/form-rawitem/index.m
40
40
  export { IBizFormTabPanel } from './control/form/form-detail/form-tab-panel/index.mjs';
41
41
  export { IBizFormTabPage } from './control/form/form-detail/form-tab-page/index.mjs';
42
42
  export { IBizFormButtonList } from './control/form/form-detail/form-button-list/index.mjs';
43
+ export { IBizFormIFrame } from './control/form/form-detail/form-iframe/index.mjs';
43
44
  export { IBizEditFormControl } from './control/form/edit-form/index.mjs';
44
45
  export { IBizFormControl } from './control/form/form/index.mjs';
45
46
  export { IBizToolbarControl } from './control/toolbar/index.mjs';
@@ -109,7 +109,8 @@ class PanelButtonController extends PanelItemController {
109
109
  data: [this.data],
110
110
  view: this.panel.view,
111
111
  event,
112
- noWaitRoute: true
112
+ noWaitRoute: true,
113
+ ctrl: this.panel
113
114
  },
114
115
  this.model.appId
115
116
  );
@@ -66,7 +66,7 @@ const PanelButton = /* @__PURE__ */ defineComponent({
66
66
  try {
67
67
  state.loading = true;
68
68
  await props.controller.onActionClick(event);
69
- props.controller.onClick();
69
+ props.controller.onClick(event);
70
70
  } finally {
71
71
  state.loading = false;
72
72
  }
@@ -1,8 +1,14 @@
1
1
  import { Router } from 'vue-router';
2
- import { IAppUtil, IAuthResult, IAiChatParam } from '@ibiz-template/runtime';
2
+ import { IAppUtil, IAuthResult, IAiChatParam, IApiViewController } from '@ibiz-template/runtime';
3
3
  import { IChatMessage } from '@ibiz-template/core';
4
4
  export declare class AppUtil implements IAppUtil {
5
- protected router: Router;
5
+ router: Router;
6
+ /**
7
+ * @description 视图缓存中心
8
+ * @type {Map<string, IApiViewController>}
9
+ * @memberof AppUtil
10
+ */
11
+ viewCacheCenter: Map<string, IApiViewController>;
6
12
  /**
7
13
  * Creates an instance of AppUtil.
8
14
  * @author tony001
@@ -109,4 +115,50 @@ export declare class AppUtil implements IAppUtil {
109
115
  * @memberof AppUtil
110
116
  */
111
117
  openAiChat(chartParams: IAiChatParam): Promise<IChatMessage[]>;
118
+ /**
119
+ * @description 当前路由转换成路由路径对象
120
+ * @param {boolean} [isRouteModal]
121
+ * @returns {*} {{
122
+ * appContext?: IParams;
123
+ * pathNodes: {
124
+ * viewName: string;
125
+ * context?: IParams;
126
+ * params?: IParams;
127
+ * srfnav?: string;
128
+ * }[];
129
+ * }}
130
+ * @memberof AppUtil
131
+ */
132
+ route2routeObject(isRouteModal?: boolean): {
133
+ appContext?: IParams;
134
+ pathNodes: {
135
+ viewName: string;
136
+ context?: IParams;
137
+ params?: IParams;
138
+ srfnav?: string;
139
+ }[];
140
+ };
141
+ /**
142
+ * @description 路由路径对象转化为路由路径
143
+ * @param {{
144
+ * appContext?: IParams;
145
+ * pathNodes: {
146
+ * viewName: string;
147
+ * context?: IParams;
148
+ * params?: IParams;
149
+ * srfnav?: string;
150
+ * }[];
151
+ * }} routePath
152
+ * @returns {*} {string}
153
+ * @memberof AppUtil
154
+ */
155
+ routeObject2String(routePath: {
156
+ appContext?: IParams;
157
+ pathNodes: {
158
+ viewName: string;
159
+ context?: IParams;
160
+ params?: IParams;
161
+ srfnav?: string;
162
+ }[];
163
+ }): string;
112
164
  }