@ibiz-template/vue3-components 0.6.17 → 0.7.1

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 (96) hide show
  1. package/dist/chart-jfPZ04eU.js +1 -0
  2. package/dist/index-XRnHM6lw.js +4 -0
  3. package/dist/index.min.css +1 -1
  4. package/dist/index.system.min.js +1 -1
  5. package/dist/{xlsx-util-tKOH6BvT.js → xlsx-util-X-Qzwu1f.js} +1 -1
  6. package/es/common/pagination/pagination.d.ts +9 -0
  7. package/es/common/pagination/pagination.mjs +12 -2
  8. package/es/common/view-message/view-message.css +1 -1
  9. package/es/common/view-message/view-message.d.ts +27 -1
  10. package/es/common/view-message/view-message.mjs +133 -17
  11. package/es/control/chart/chart.css +1 -1
  12. package/es/control/chart/chart.d.ts +3 -1
  13. package/es/control/chart/chart.mjs +70 -6
  14. package/es/control/data-view/data-view.mjs +1 -0
  15. package/es/control/drbar/drbar.controller.d.ts +9 -0
  16. package/es/control/drbar/drbar.controller.mjs +16 -1
  17. package/es/control/drtab/drtab.controller.d.ts +9 -0
  18. package/es/control/drtab/drtab.controller.mjs +16 -1
  19. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
  20. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.d.ts +2 -1
  21. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.mjs +13 -4
  22. package/es/control/form/form-detail/form-mdctrl/index.d.ts +1 -0
  23. package/es/control/form/form-detail/form-rawitem/form-rawitem.d.ts +2 -1
  24. package/es/control/form/form-detail/form-rawitem/form-rawitem.mjs +32 -1
  25. package/es/control/form/form-detail/form-rawitem/index.d.ts +1 -0
  26. package/es/control/grid/grid/grid.mjs +1 -0
  27. package/es/control/list/list.mjs +1 -0
  28. package/es/control/search-bar/filter-tree/filter-tree.d.ts +3 -3
  29. package/es/control/search-bar/filter-tree/filter-tree.mjs +98 -37
  30. package/es/control/search-bar/index.d.ts +1 -0
  31. package/es/control/search-bar/index.mjs +2 -0
  32. package/es/control/search-bar/quick-search-select/quick-search-select.css +1 -0
  33. package/es/control/search-bar/quick-search-select/quick-search-select.d.ts +16 -0
  34. package/es/control/search-bar/quick-search-select/quick-search-select.mjs +72 -0
  35. package/es/control/search-bar/search-bar.css +1 -1
  36. package/es/control/search-bar/search-bar.d.ts +1 -0
  37. package/es/control/search-bar/search-bar.mjs +14 -3
  38. package/es/control/tree-grid/tree-grid.mjs +1 -0
  39. package/es/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.mjs +11 -3
  40. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +13 -2
  41. package/es/editor/list-box/ibiz-list-box/ibiz-list-box.mjs +13 -5
  42. package/es/editor/raw/ibiz-raw/ibiz-raw.mjs +7 -0
  43. package/es/editor/user/ibiz-searchcond-edit/ibiz-searchcond-edit.mjs +3 -3
  44. package/es/panel-component/index.mjs +2 -0
  45. package/es/panel-component/panel-index-view-search/index.d.ts +2 -0
  46. package/es/panel-component/panel-index-view-search/panel-index-view-search.d.ts +2 -0
  47. package/es/panel-component/panel-index-view-search/panel-index-view-search.mjs +30 -3
  48. package/es/panel-component/view-msg-pos/index.d.ts +25 -0
  49. package/es/panel-component/view-msg-pos/index.mjs +16 -0
  50. package/es/panel-component/view-msg-pos/view-msg-pos.controller.d.ts +21 -0
  51. package/es/panel-component/view-msg-pos/view-msg-pos.controller.mjs +48 -0
  52. package/es/panel-component/view-msg-pos/view-msg-pos.d.ts +25 -0
  53. package/es/panel-component/view-msg-pos/view-msg-pos.mjs +47 -0
  54. package/es/panel-component/view-msg-pos/view-msg-pos.provider.d.ts +16 -0
  55. package/es/panel-component/view-msg-pos/view-msg-pos.provider.mjs +21 -0
  56. package/es/view-engine/index.mjs +4 -0
  57. package/es/view-engine/panel-view-engine.d.ts +2 -2
  58. package/es/view-engine/tab-search-view.engine.mjs +5 -0
  59. package/es/web-app/App.mjs +9 -1
  60. package/lib/common/pagination/pagination.cjs +12 -2
  61. package/lib/common/view-message/view-message.cjs +132 -16
  62. package/lib/common/view-message/view-message.css +1 -1
  63. package/lib/control/chart/chart.cjs +69 -5
  64. package/lib/control/chart/chart.css +1 -1
  65. package/lib/control/data-view/data-view.cjs +1 -0
  66. package/lib/control/drbar/drbar.controller.cjs +16 -1
  67. package/lib/control/drtab/drtab.controller.cjs +16 -1
  68. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.cjs +13 -4
  69. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
  70. package/lib/control/form/form-detail/form-rawitem/form-rawitem.cjs +31 -0
  71. package/lib/control/grid/grid/grid.cjs +1 -0
  72. package/lib/control/list/list.cjs +1 -0
  73. package/lib/control/search-bar/filter-tree/filter-tree.cjs +98 -37
  74. package/lib/control/search-bar/index.cjs +2 -0
  75. package/lib/control/search-bar/quick-search-select/quick-search-select.cjs +74 -0
  76. package/lib/control/search-bar/quick-search-select/quick-search-select.css +1 -0
  77. package/lib/control/search-bar/search-bar.cjs +14 -3
  78. package/lib/control/search-bar/search-bar.css +1 -1
  79. package/lib/control/tree-grid/tree-grid.cjs +1 -0
  80. package/lib/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.cjs +11 -3
  81. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +13 -2
  82. package/lib/editor/list-box/ibiz-list-box/ibiz-list-box.cjs +13 -5
  83. package/lib/editor/raw/ibiz-raw/ibiz-raw.cjs +7 -0
  84. package/lib/editor/user/ibiz-searchcond-edit/ibiz-searchcond-edit.cjs +2 -2
  85. package/lib/panel-component/index.cjs +2 -0
  86. package/lib/panel-component/panel-index-view-search/panel-index-view-search.cjs +29 -2
  87. package/lib/panel-component/view-msg-pos/index.cjs +22 -0
  88. package/lib/panel-component/view-msg-pos/view-msg-pos.cjs +49 -0
  89. package/lib/panel-component/view-msg-pos/view-msg-pos.controller.cjs +50 -0
  90. package/lib/panel-component/view-msg-pos/view-msg-pos.provider.cjs +23 -0
  91. package/lib/view-engine/index.cjs +4 -0
  92. package/lib/view-engine/tab-search-view.engine.cjs +5 -0
  93. package/lib/web-app/App.cjs +8 -0
  94. package/package.json +12 -12
  95. package/dist/chart-IsmrW_d0.js +0 -1
  96. package/dist/index-fN8w56IX.js +0 -4
@@ -1 +1 @@
1
- .ibiz-view-message__alert.is-no-title.el-alert .el-alert__description{margin:0}
1
+ .ibiz-view-message{--ibiz-view-message-border--warning:1px solid var(--ibiz-color-warning-active);--ibiz-view-message-border--error:1px solid var(--ibiz-color-danger-active);--ibiz-view-message-border--info:1px solid var(--ibiz-color-info-active);padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none)}.ibiz-view-message--hidden{display:none}.ibiz-view-message .el-alert--warning.is-light{border:var(--ibiz-view-message-border--warning)}.ibiz-view-message .el-alert--error.is-light{border:var(--ibiz-view-message-border--error)}.ibiz-view-message .el-alert--info.is-light{border:var(--ibiz-view-message-border--info)}.ibiz-view-message-alert{margin-bottom:var(--ibiz-spacing-tight)}.ibiz-view-message-alert:last-child{margin-bottom:var(--ibiz-spacing-none)}.ibiz-view-message-alert--single .el-alert__description{margin:0}.ibiz-view-message-alert--single-message .el-alert__close-btn{top:calc(var(--ibiz-spacing-tight) + var(--ibiz-spacing-super-tight))}.ibiz-view-message-alert__title{line-height:calc(var(--ibiz-spacing-base-loose) - var(--ibiz-spacing-super-tight))}.ibiz-view-message-alert__message{line-height:var(--ibiz-spacing-base)}.ibiz-view-message-carousel-alert .el-alert__content{overflow:hidden}.ibiz-view-message-carousel-alert__title{height:calc(var(--ibiz-spacing-base-loose) - var(--ibiz-spacing-super-tight));overflow:hidden;line-height:calc(var(--ibiz-spacing-base-loose) - var(--ibiz-spacing-super-tight));text-overflow:ellipsis;white-space:nowrap}.ibiz-view-message-carousel-alert__message{height:var(--ibiz-spacing-base);overflow:hidden;line-height:var(--ibiz-spacing-base);text-overflow:ellipsis;white-space:nowrap}
@@ -5,10 +5,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var vue = require('vue');
6
6
  var vue3Util = require('@ibiz-template/vue3-util');
7
7
  var echarts = require('echarts');
8
- require('./chart.css');
8
+ var qxUtil = require('qx-util');
9
9
  var runtime = require('@ibiz-template/runtime');
10
+ require('./chart.css');
10
11
 
11
12
  "use strict";
13
+ function _isSlot(s) {
14
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
15
+ }
12
16
  const ChartControl = /* @__PURE__ */ vue.defineComponent({
13
17
  name: "IBizChartControl",
14
18
  props: {
@@ -40,27 +44,87 @@ const ChartControl = /* @__PURE__ */ vue.defineComponent({
40
44
  const c = vue3Util.useControlController((...args) => new runtime.ChartController(...args));
41
45
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
42
46
  const chartRef = vue.ref();
47
+ const maxHeight = vue.ref(0);
48
+ const uuid = qxUtil.createUUID();
49
+ const setHeight = async () => {
50
+ await vue.nextTick();
51
+ const el = document.getElementById(uuid);
52
+ if (el) {
53
+ if (c.state.gridPosition === "bottom" || c.state.gridPosition === "top") {
54
+ maxHeight.value = el.offsetHeight / 2 - 8;
55
+ } else {
56
+ maxHeight.value = el.offsetHeight - 16;
57
+ }
58
+ }
59
+ };
60
+ const getGridData = () => {
61
+ return c.state.gridData || [];
62
+ };
43
63
  vue.onMounted(() => {
44
64
  const chart = echarts.init(chartRef.value);
45
65
  c.initChart(chart);
66
+ window.addEventListener("resize", setHeight);
67
+ setHeight();
68
+ });
69
+ vue.watch(() => c.state.showGrid, () => {
70
+ setHeight();
71
+ }, {
72
+ immediate: true
73
+ });
74
+ const renderGrid = () => {
75
+ let _slot;
76
+ return vue.createVNode(vue.resolveComponent("el-table"), {
77
+ "ref": "tableRef",
78
+ "data": getGridData(),
79
+ "border": true,
80
+ "style": {
81
+ width: "100%"
82
+ },
83
+ "max-height": maxHeight.value,
84
+ "header-row-class-name": ns.e("grid-header")
85
+ }, _isSlot(_slot = c.state.gridHeaders.map((column) => {
86
+ return vue.createVNode(vue.resolveComponent("el-table-column"), {
87
+ "prop": column.id,
88
+ "align": "center",
89
+ "label": column.name
90
+ }, null);
91
+ })) ? _slot : {
92
+ default: () => [_slot]
93
+ });
94
+ };
95
+ vue.onBeforeUnmount(() => {
96
+ window.removeEventListener("resize", setHeight);
46
97
  });
47
98
  return {
48
99
  c,
49
100
  ns,
50
- chartRef
101
+ chartRef,
102
+ uuid,
103
+ renderGrid
51
104
  };
52
105
  },
53
106
  render() {
54
107
  return vue.createVNode(vue.resolveComponent("iBizControlBase"), {
55
108
  "controller": this.c
56
109
  }, {
57
- default: () => [vue.createVNode(vue.resolveComponent("el-empty"), {
110
+ default: () => [vue.createVNode("div", {
111
+ "id": this.uuid,
112
+ "class": this.ns.b("chart-container")
113
+ }, [vue.createVNode(vue.resolveComponent("el-empty"), {
58
114
  "class": [this.ns.e("empty"), this.ns.is("no-data", this.c.state.items.length === 0)],
59
115
  "description": "\u6682\u65E0\u6570\u636E"
60
116
  }, null), vue.createVNode("div", {
117
+ "class": [this.ns.e("chart-grid"), this.ns.is("no-data", this.c.state.items.length === 0), this.ns.is("show-grid", this.c.state.showGrid), {
118
+ [this.ns.em("chart-grid", this.c.state.gridPosition)]: this.c.state.showGrid
119
+ }]
120
+ }, [vue.createVNode("div", {
121
+ "class": [this.ns.e("chart-grid-container"), this.ns.is(this.c.state.gridPosition, this.c.state.showGrid), this.ns.is("no-grid", !this.c.state.showGrid)]
122
+ }, [vue.createVNode("div", {
61
123
  "ref": "chartRef",
62
- "class": [this.ns.e("chart"), this.ns.is("no-data", this.c.state.items.length === 0)]
63
- }, [ibiz.i18n.t("control.chart.chartPlaceholder")])]
124
+ "class": [this.ns.e("chart")]
125
+ }, [ibiz.i18n.t("control.chart.chartPlaceholder")])]), this.c.state.showGrid ? vue.createVNode("div", {
126
+ "class": this.ns.e("grid")
127
+ }, [this.renderGrid()]) : null])])]
64
128
  });
65
129
  }
66
130
  });
@@ -1 +1 @@
1
- .ibiz-control-chart{width:100%;height:100%}.ibiz-control-chart__chart{width:100%;height:100%}.ibiz-control-chart__chart.is-no-data{display:none}.ibiz-control-chart__empty{display:none;height:100%}.ibiz-control-chart__empty.is-no-data{display:flex}
1
+ .ibiz-control-chart{width:100%;height:100%}.ibiz-control-chart__chart-grid{width:100%;height:100%}.ibiz-control-chart__chart-grid.is-show-grid{display:flex;height:calc(100% - 16px)}.ibiz-control-chart__chart-grid--bottom{flex-direction:column}.ibiz-control-chart__chart-grid--top{flex-direction:column-reverse}.ibiz-control-chart__chart-grid--left{flex-direction:row-reverse}.ibiz-control-chart__chart-grid--right{flex-direction:row}.ibiz-control-chart__chart-grid.is-no-data{display:none}.ibiz-control-chart__chart-grid-container{flex:1;height:50%}.ibiz-control-chart__chart-grid-container.is-bottom{width:100%;height:50%;min-height:50%}.ibiz-control-chart__chart-grid-container.is-top{width:100%;height:50%;min-height:50%}.ibiz-control-chart__chart-grid-container.is-left{width:50%;min-width:50%;height:100%}.ibiz-control-chart__chart-grid-container.is-right{width:50%;min-width:50%;height:100%}.ibiz-control-chart__chart-grid-container.is-no-grid{flex:unset;width:100%;height:100%}.ibiz-control-chart__chart{width:100%;height:100%}.ibiz-control-chart__grid{flex:1;height:auto}.ibiz-control-chart__grid .cell{text-overflow:ellipsis;white-space:nowrap}.ibiz-control-chart__grid .el-table__body-wrapper{border-bottom:1px solid var(--ibiz-color-border)}.ibiz-control-chart__empty{display:none;height:100%}.ibiz-control-chart__empty.is-no-data{display:flex}.ibiz-control-chart-chart-container{width:100%;height:100%}
@@ -283,6 +283,7 @@ const DataViewControl = /* @__PURE__ */ vue.defineComponent({
283
283
  "total": this.c.state.total,
284
284
  "curPage": this.c.state.curPage,
285
285
  "size": this.c.state.size,
286
+ "totalPages": this.c.state.totalPages,
286
287
  "onChange": this.onPageChange,
287
288
  "onPageSizeChange": this.onPageSizeChange,
288
289
  "onPageRefresh": this.onPageRefresh
@@ -54,7 +54,8 @@ class DRBarController extends runtime.ControlController {
54
54
  * @memberof DRBarController
55
55
  */
56
56
  get form() {
57
- return this.view.getController("form");
57
+ var _a;
58
+ return (_a = this.view) == null ? void 0 : _a.getController("form");
58
59
  }
59
60
  /**
60
61
  * 是否是新建
@@ -443,6 +444,20 @@ class DRBarController extends runtime.ControlController {
443
444
  );
444
445
  }
445
446
  }
447
+ /**
448
+ * 监听组件销毁
449
+ *
450
+ * @author zhanghengfeng
451
+ * @date 2024-04-10 19:04:43
452
+ * @protected
453
+ * @return {*} {Promise<void>}
454
+ */
455
+ async onDestroyed() {
456
+ await super.onDestroyed();
457
+ if (this.counter) {
458
+ this.counter.destroy();
459
+ }
460
+ }
446
461
  }
447
462
 
448
463
  exports.DRBarController = DRBarController;
@@ -45,7 +45,8 @@ class DRTabController extends runtime.ControlController {
45
45
  * @memberof DRTabController
46
46
  */
47
47
  get form() {
48
- return this.view.getController("form");
48
+ var _a;
49
+ return (_a = this.view) == null ? void 0 : _a.getController("form");
49
50
  }
50
51
  /**
51
52
  * 路由层级
@@ -307,6 +308,20 @@ class DRTabController extends runtime.ControlController {
307
308
  );
308
309
  }
309
310
  }
311
+ /**
312
+ * 监听组件销毁
313
+ *
314
+ * @author zhanghengfeng
315
+ * @date 2024-04-10 19:04:40
316
+ * @protected
317
+ * @return {*} {Promise<void>}
318
+ */
319
+ async onDestroyed() {
320
+ await super.onDestroyed();
321
+ if (this.counter) {
322
+ this.counter.destroy();
323
+ }
324
+ }
310
325
  }
311
326
 
312
327
  exports.DRTabController = DRTabController;
@@ -25,10 +25,14 @@ const FormMDCtrl = /* @__PURE__ */ vue.defineComponent({
25
25
  vue3Util.useController(props.controller);
26
26
  const c = props.controller;
27
27
  const hasCaption = c.model.showCaption && !!c.model.caption;
28
+ const onActionClick = async (detail, event) => {
29
+ await props.controller.onActionClick(detail, event);
30
+ };
28
31
  return {
29
32
  c,
30
33
  ns,
31
- hasCaption
34
+ hasCaption,
35
+ onActionClick
32
36
  };
33
37
  },
34
38
  render() {
@@ -60,11 +64,16 @@ const FormMDCtrl = /* @__PURE__ */ vue.defineComponent({
60
64
  }
61
65
  return vue.createVNode("div", {
62
66
  "class": [this.ns.b(), this.ns.m(this.modelData.codeName), ...this.controller.containerClass, this.hasCaption ? this.ns.m("show-caption") : ""]
63
- }, [this.hasCaption && vue.createVNode("div", {
67
+ }, [vue.createVNode("div", {
64
68
  "class": this.ns.b("header")
65
- }, [vue.createVNode("span", {
69
+ }, [vue.createVNode("div", {
66
70
  "class": this.ns.e("title")
67
- }, [this.c.model.caption])]), content]);
71
+ }, [this.hasCaption ? this.c.model.caption : ""]), model.uiactionGroup && vue.createVNode(vue.resolveComponent("iBizActionToolbar"), {
72
+ "class": this.ns.e("toolbar"),
73
+ "action-details": model.uiactionGroup.uiactionGroupDetails,
74
+ "actions-state": this.controller.state.actionGroupState,
75
+ "onActionClick": this.onActionClick
76
+ }, null)]), content]);
68
77
  }
69
78
  });
70
79
 
@@ -1 +1 @@
1
- .ibiz-form-mdctrl{--ibiz-form-mdctrl-header-height:32px}.ibiz-form-mdctrl-header{height:var(--ibiz-form-mdctrl-header-height);line-height:var(--ibiz-form-mdctrl-header-height)}
1
+ .ibiz-form-mdctrl{--ibiz-form-mdctrl-header-height:49px}.ibiz-form-mdctrl__toolbar{display:flex;justify-content:flex-end;width:50%}.ibiz-form-mdctrl__title{width:50%;font-size:var(--ibiz-font-size-header-5);font-weight:var(--ibiz-font-weight-bold)}.ibiz-form-mdctrl-header{display:flex;place-content:center space-between;align-items:center;height:var(--ibiz-form-mdctrl-header-height);padding:var(--ibiz-spacing-base-tight) 0;margin:6px var(--ibiz-spacing-base-tight);line-height:var(--ibiz-form-mdctrl-header-height);border-bottom:1px solid var(--ibiz-color-border)}
@@ -22,14 +22,44 @@ const FormRawItem = /* @__PURE__ */ vue.defineComponent({
22
22
  },
23
23
  setup(props) {
24
24
  const ns = vue3Util.useNamespace("form-raw-item");
25
+ const c = props.controller;
26
+ const content = vue.ref("");
25
27
  const showFormDefaultContent = vue.computed(() => {
26
28
  if (props.controller.form.controlParams && props.controller.form.controlParams.editmode === "hover") {
27
29
  return true;
28
30
  }
29
31
  return false;
30
32
  });
33
+ vue.watch(() => c.data, async (newVal) => {
34
+ if (newVal) {
35
+ const rawItemModel = c.model.rawItem;
36
+ if (!rawItemModel) {
37
+ return;
38
+ }
39
+ let rawItemContent = "";
40
+ const obj = {
41
+ ...newVal
42
+ };
43
+ if (rawItemModel.contentType === "RAW") {
44
+ rawItemContent = rawItemModel.caption;
45
+ } else if (rawItemModel.contentType === "HTML") {
46
+ rawItemContent = rawItemModel.content;
47
+ }
48
+ if (rawItemContent && rawItemModel.templateMode) {
49
+ rawItemContent = await ibiz.util.hbs.render(rawItemContent.replaceAll("//n", "\n"), Object.assign(obj, {
50
+ data: {
51
+ ...newVal
52
+ }
53
+ }));
54
+ }
55
+ content.value = rawItemContent;
56
+ }
57
+ }, {
58
+ immediate: true
59
+ });
31
60
  return {
32
61
  ns,
62
+ content,
33
63
  showFormDefaultContent
34
64
  };
35
65
  },
@@ -40,6 +70,7 @@ const FormRawItem = /* @__PURE__ */ vue.defineComponent({
40
70
  return vue.createVNode(vue.resolveComponent("iBizRawItem"), {
41
71
  "class": [this.ns.b(), ...this.controller.containerClass, this.ns.is("show-default", this.showFormDefaultContent)],
42
72
  "rawItem": this.modelData,
73
+ "content": this.content,
43
74
  "onClick": (event) => this.controller.onClick(event)
44
75
  }, null);
45
76
  }
@@ -294,6 +294,7 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
294
294
  "total": state.total,
295
295
  "curPage": state.curPage,
296
296
  "size": state.size,
297
+ "totalPages": state.totalPages,
297
298
  "onChange": this.onPageChange,
298
299
  "onPageSizeChange": this.onPageSizeChange,
299
300
  "onPageRefresh": this.onPageRefresh
@@ -214,6 +214,7 @@ const ListControl = /* @__PURE__ */ vue.defineComponent({
214
214
  "total": this.c.state.total,
215
215
  "curPage": this.c.state.curPage,
216
216
  "size": this.c.state.size,
217
+ "totalPages": this.c.state.totalPages,
217
218
  "onChange": this.onPageChange,
218
219
  "onPageSizeChange": this.onPageSizeChange,
219
220
  "onPageRefresh": this.onPageRefresh
@@ -4,6 +4,7 @@ var vue = require('vue');
4
4
  var runtime = require('@ibiz-template/runtime');
5
5
  var vue3Util = require('@ibiz-template/vue3-util');
6
6
  require('./filter-tree.css');
7
+ var qxUtil = require('qx-util');
7
8
 
8
9
  "use strict";
9
10
  function _isSlot(s) {
@@ -92,33 +93,49 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
92
93
  const UiFilterNodes = vue.computed(() => {
93
94
  return props.filterNodes;
94
95
  });
95
- const findFilterController = (fieldName, valueOP) => {
96
+ const findFilterController = (node) => {
97
+ if (node.nodeType === "ITEMS" && node.simple) {
98
+ const subNode = node.children[0];
99
+ return props.filterControllers.find((item) => {
100
+ if (item.type === "SIMPLE_ITEMS") {
101
+ const simpleC = item;
102
+ if (simpleC.fieldName === node.field && simpleC.valueOP === node.valueOP && simpleC.subFieldName === subNode.field && simpleC.subValueOP === subNode.valueOP) {
103
+ return true;
104
+ }
105
+ }
106
+ return false;
107
+ });
108
+ }
109
+ const {
110
+ field,
111
+ valueOP
112
+ } = node;
96
113
  return props.filterControllers.find((item) => {
97
- if (item.fieldName === fieldName) {
114
+ if (item.type === "SIMPLE_ITEMS") {
115
+ return false;
116
+ }
117
+ if (item.fieldName === field) {
98
118
  return item.valueOP ? item.valueOP === valueOP : true;
99
119
  }
100
120
  return false;
101
121
  });
102
122
  };
103
123
  const allFields = [];
104
- const getFilterModes = (fieldName, fieldInfos = allFields) => {
105
- if (!fieldName) {
106
- return;
107
- }
108
- const field = fieldInfos.find((item) => item.name === fieldName);
109
- if (!field) {
124
+ props.filterControllers.forEach((filterC) => {
125
+ let find = allFields.find((x) => x.name === filterC.key);
126
+ if (filterC.hidden) {
110
127
  return;
111
128
  }
112
- return field.valueOPs;
113
- };
114
- props.filterControllers.forEach((filterC) => {
115
- let find = allFields.find((x) => x.name === filterC.fieldName);
116
129
  if (find === void 0) {
117
130
  find = {
118
- name: filterC.fieldName,
131
+ name: filterC.key,
132
+ fieldName: filterC.fieldName,
119
133
  label: filterC.label,
120
134
  valueOPs: []
121
135
  };
136
+ if (filterC.type === "SIMPLE_ITEMS") {
137
+ find.simpleFilterC = filterC;
138
+ }
122
139
  allFields.push(find);
123
140
  }
124
141
  if (!filterC.valueOP) {
@@ -127,25 +144,38 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
127
144
  find.valueOPs.push(filterC.valueOP);
128
145
  }
129
146
  });
130
- const onFieldSelect = (node, field) => {
131
- node.value = null;
132
- node.valueOP = null;
133
- node.field = field;
134
- Object.assign(node, {
135
- leaf: true,
136
- logicType: void 0,
137
- children: void 0
138
- });
147
+ const getFilterModes = (fieldName, fieldInfos = allFields) => {
148
+ if (!fieldName) {
149
+ return;
150
+ }
151
+ const field = fieldInfos.find((item) => item.name === fieldName);
152
+ if (!field) {
153
+ return;
154
+ }
155
+ return field.valueOPs;
156
+ };
157
+ const onFieldSelect = (node, key, fields = allFields) => {
158
+ const fieldInfo = fields.find((item) => item.name === key);
159
+ if (!fieldInfo) {
160
+ ibiz.log.error("allFields\u627E\u4E0D\u5230\u5C5E\u6027\u6807\u8BC6\u4E3A".concat(key, "\u7684"));
161
+ return;
162
+ }
163
+ qxUtil.clearAll(node);
164
+ if (fieldInfo.simpleFilterC) {
165
+ fieldInfo.simpleFilterC.addSimpleFilterNode(node);
166
+ return;
167
+ }
168
+ node.nodeType = "FIELD";
169
+ node.field = fieldInfo.fieldName;
139
170
  };
140
171
  const onValueOPSelect = (node, valueOP) => {
141
172
  node.valueOP = valueOP;
142
173
  node.value = null;
143
174
  if (["EXISTS", "NOTEXISTS"].includes(valueOP)) {
144
175
  Object.assign(node, {
145
- leaf: false,
146
- logicType: "ITEMS",
176
+ nodeType: "ITEMS",
147
177
  children: [{
148
- leaf: true,
178
+ nodeType: "FIELD",
149
179
  field: null,
150
180
  valueOP: null,
151
181
  value: null
@@ -153,8 +183,7 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
153
183
  });
154
184
  } else {
155
185
  Object.assign(node, {
156
- leaf: true,
157
- logicType: void 0,
186
+ nodeType: "FIELD",
158
187
  children: void 0
159
188
  });
160
189
  }
@@ -164,10 +193,10 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
164
193
  };
165
194
  const addGroup = (node) => {
166
195
  node.children.push({
167
- leaf: false,
196
+ nodeType: "GROUP",
168
197
  logicType: "AND",
169
198
  children: [{
170
- leaf: true,
199
+ nodeType: "FIELD",
171
200
  field: null,
172
201
  valueOP: null,
173
202
  value: null
@@ -176,7 +205,7 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
176
205
  };
177
206
  const addItem = (node) => {
178
207
  node.children.push({
179
- leaf: true,
208
+ nodeType: "FIELD",
180
209
  field: null,
181
210
  valueOP: null,
182
211
  value: null
@@ -214,6 +243,9 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
214
243
  };
215
244
  const renderFilterItem = (node, itemsC) => {
216
245
  let _slot;
246
+ if (node.hidden) {
247
+ return;
248
+ }
217
249
  let fieldInfos = allFields;
218
250
  if (itemsC) {
219
251
  fieldInfos = itemsC.allFields;
@@ -225,7 +257,7 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
225
257
  const subFilterC = itemsC.getSubFilterController(node.field, node.valueOP);
226
258
  editor = renderEditor(node, subFilterC);
227
259
  } else {
228
- const filterC = findFilterController(node.field, node.valueOP);
260
+ const filterC = findFilterController(node);
229
261
  if (filterC && !["EXISTS", "NOTEXISTS"].includes(filterC.valueOP)) {
230
262
  editor = renderEditor(node, filterC);
231
263
  }
@@ -239,7 +271,7 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
239
271
  "teleported": false,
240
272
  "class": ns.e("field-select"),
241
273
  "onChange": (field) => {
242
- onFieldSelect(node, field);
274
+ onFieldSelect(node, field, fieldInfos);
243
275
  }
244
276
  }, _isSlot(_slot = fieldInfos.map((field) => {
245
277
  return vue.createVNode(vue.resolveComponent("el-option"), {
@@ -261,7 +293,10 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
261
293
  };
262
294
  let renderFilterItems = (_node) => vue.createVNode("div", null, null);
263
295
  const renderFilterGroup = (node, itemsC) => {
264
- if (node.logicType === "ITEMS") {
296
+ if (node.hidden) {
297
+ return;
298
+ }
299
+ if (node.nodeType === "ITEMS") {
265
300
  return renderFilterItems(node);
266
301
  }
267
302
  return vue.createVNode("div", {
@@ -303,7 +338,10 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
303
338
  })]), vue.createVNode("div", {
304
339
  "class": ns.be("group", "list")
305
340
  }, [node.children.length > 0 && node.children.map((child, index) => {
306
- const childContent = child.leaf ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
341
+ const childContent = child.nodeType === "FIELD" ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
342
+ if (!childContent) {
343
+ return null;
344
+ }
307
345
  return vue.createVNode("div", {
308
346
  "class": ns.be("group", "list-item")
309
347
  }, [vue.createVNode("div", {
@@ -320,7 +358,30 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
320
358
  })])]);
321
359
  };
322
360
  renderFilterItems = (node) => {
323
- const itemsC = findFilterController(node.field, node.valueOP);
361
+ const itemsC = findFilterController(node);
362
+ if (node.simple) {
363
+ let _slot2;
364
+ const child = node.children[0];
365
+ if (!child) {
366
+ return;
367
+ }
368
+ return [vue.createVNode(vue.resolveComponent("el-select"), {
369
+ "model-value": itemsC.key,
370
+ "teleported": false,
371
+ "class": ns.e("field-select"),
372
+ "onChange": (field) => {
373
+ onFieldSelect(node, field);
374
+ }
375
+ }, _isSlot(_slot2 = allFields.map((field) => {
376
+ return vue.createVNode(vue.resolveComponent("el-option"), {
377
+ "key": field.name,
378
+ "value": field.name,
379
+ "label": field.label
380
+ }, null);
381
+ })) ? _slot2 : {
382
+ default: () => [_slot2]
383
+ }), renderEditor(child, itemsC)];
384
+ }
324
385
  return vue.createVNode("div", {
325
386
  "class": (ns.b("group"), ns.bm("group", "items"))
326
387
  }, [vue.createVNode("div", {
@@ -335,7 +396,7 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
335
396
  })]), vue.createVNode("div", {
336
397
  "class": ns.be("group", "list")
337
398
  }, [node.children.length > 0 && node.children.map((child, index) => {
338
- const childContent = child.leaf ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
399
+ const childContent = child.nodeType === "FIELD" ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
339
400
  return vue.createVNode("div", {
340
401
  "class": ns.be("group", "list-item")
341
402
  }, [vue.createVNode("div", {
@@ -371,7 +432,7 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
371
432
  return vue.createVNode("div", {
372
433
  "class": [this.ns.b()]
373
434
  }, [this.UiFilterNodes.length > 0 && this.UiFilterNodes.map((node) => {
374
- if (node.leaf) {
435
+ if (node.nodeType === "FIELD") {
375
436
  return this.renderFilterItem(node);
376
437
  }
377
438
  return this.renderFilterGroup(node);
@@ -9,6 +9,7 @@ var searchBar_provider = require('./search-bar.provider.cjs');
9
9
  var filterTree = require('./filter-tree/filter-tree.cjs');
10
10
  var filterModeSelect = require('./filter-mode-select/filter-mode-select.cjs');
11
11
  var searchGroups = require('./search-groups/search-groups.cjs');
12
+ var quickSearchSelect = require('./quick-search-select/quick-search-select.cjs');
12
13
 
13
14
  "use strict";
14
15
  const IBizSearchBarControl = vue3Util.withInstall(
@@ -18,6 +19,7 @@ const IBizSearchBarControl = vue3Util.withInstall(
18
19
  v.component(filterTree.FilterTreeControl.name, filterTree.FilterTreeControl);
19
20
  v.component(filterModeSelect.FilterModeSelect.name, filterModeSelect.FilterModeSelect);
20
21
  v.component(searchGroups.SearchGroups.name, searchGroups.SearchGroups);
22
+ v.component(quickSearchSelect.QuickSearchSelect.name, quickSearchSelect.QuickSearchSelect);
21
23
  runtime.registerControlProvider(
22
24
  runtime.ControlType.SEARCHBAR,
23
25
  () => new searchBar_provider.SearchBarProvider()
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var runtime = require('@ibiz-template/runtime');
5
+ var vue3Util = require('@ibiz-template/vue3-util');
6
+ require('./quick-search-select.css');
7
+
8
+ "use strict";
9
+ function _isSlot(s) {
10
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
11
+ }
12
+ const QuickSearchSelect = /* @__PURE__ */ vue.defineComponent({
13
+ name: "IBizQuickSearchSelect",
14
+ props: {
15
+ controller: {
16
+ type: runtime.SearchBarController,
17
+ required: true
18
+ }
19
+ },
20
+ setup(props) {
21
+ const ns = vue3Util.useNamespace("quick-search-select");
22
+ const onItemClick = (item) => {
23
+ const key = item.fieldName;
24
+ const {
25
+ quickSearchFieldNames
26
+ } = props.controller.state;
27
+ const index = quickSearchFieldNames.indexOf(key);
28
+ if (index === -1) {
29
+ quickSearchFieldNames.push(key);
30
+ } else {
31
+ quickSearchFieldNames.splice(index, 1);
32
+ }
33
+ props.controller.calcQuickSearchPlaceHolder();
34
+ };
35
+ return {
36
+ ns,
37
+ onItemClick
38
+ };
39
+ },
40
+ render() {
41
+ const {
42
+ state
43
+ } = this.controller;
44
+ return vue.createVNode(vue.resolveComponent("el-dropdown"), {
45
+ "onCommand": this.onItemClick,
46
+ "trigger": "click",
47
+ "hide-on-click": false,
48
+ "class": [this.ns.b()],
49
+ "popper-class": [this.ns.b("popover")]
50
+ }, {
51
+ default: () => vue.createVNode("div", {
52
+ "class": this.ns.e("icon")
53
+ }, [vue.createVNode("ion-icon", {
54
+ "name": "settings-outline"
55
+ }, null)]),
56
+ dropdown: () => {
57
+ let _slot;
58
+ return vue.createVNode(vue.resolveComponent("el-dropdown-menu"), null, _isSlot(_slot = state.quickSearchItems.map((item) => {
59
+ const isSelected = state.quickSearchFieldNames.includes(item.fieldName);
60
+ return vue.createVNode(vue.resolveComponent("el-dropdown-item"), {
61
+ "class": [this.ns.be("popover", "item"), isSelected && this.ns.bem("popover", "item", "selected")],
62
+ "command": item
63
+ }, {
64
+ default: () => [item.label]
65
+ });
66
+ })) ? _slot : {
67
+ default: () => [_slot]
68
+ });
69
+ }
70
+ });
71
+ }
72
+ });
73
+
74
+ exports.QuickSearchSelect = QuickSearchSelect;
@@ -0,0 +1 @@
1
+ .ibiz-quick-search-select{width:40px;height:100%;color:var(--ibiz-color-white);cursor:pointer;background-color:var(--ibiz-color-primary);border-top-left-radius:var(--el-input-border-radius);border-bottom-left-radius:var(--el-input-border-radius)}.ibiz-quick-search-select:hover{background-color:var(--ibiz-color-primary-hover)}.ibiz-quick-search-select__icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.ibiz-quick-search-select-popover{--ibiz-quick-search-select-item-text-color:var(--ibiz-color-text-2);--ibiz-quick-search-select-item-bg-color:var(--ibiz-color-bg-1);--ibiz-quick-search-select-item-hover-text-color:var(--ibiz-color-text-0);--ibiz-quick-search-select-item-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-quick-search-select-item-selected-text-color:var(--ibiz-color-primary);--ibiz-quick-search-select-item-selected-bg-color:var(--ibiz-color-bg-1)}.ibiz-quick-search-select-popover.el-popper.el-dropdown__popper .el-scrollbar .el-dropdown__list{background-color:var(--ibiz-color-bg-1)}.ibiz-quick-search-select-popover.el-popper.el-dropdown__popper .el-scrollbar .el-dropdown__list .el-dropdown-menu{background-color:var(--ibiz-color-bg-1)}.ibiz-quick-search-select-popover.el-popper.el-dropdown__popper .el-scrollbar .el-dropdown__list .el-dropdown-menu__item{color:var(--ibiz-quick-search-select-item-text-color);background-color:var(--ibiz-quick-search-select-item-bg-color)}.ibiz-quick-search-select-popover.el-popper.el-dropdown__popper .el-scrollbar .el-dropdown__list .el-dropdown-menu__item:hover{color:var(--ibiz-quick-search-select-item-hover-text-color);background-color:var(--ibiz-quick-search-select-item-hover-bg-color)}.ibiz-quick-search-select-popover__item--selected{font-weight:700;--ibiz-quick-search-select-item-text-color:var(--ibiz-quick-search-select-item-selected-text-color);--ibiz-quick-search-select-item-bg-color:var(--ibiz-quick-search-select-item-selected-bg-color)}