@ibiz-template/vue3-components 0.6.16 → 0.7.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 (120) hide show
  1. package/dist/chart-jfPZ04eU.js +1 -0
  2. package/dist/index-Wk7Kbc7Z.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-94ZSfJEl.js → xlsx-util-keqImqNu.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 +130 -17
  11. package/es/control/caption-bar/caption-bar.css +1 -1
  12. package/es/control/caption-bar/caption-bar.mjs +3 -1
  13. package/es/control/chart/chart.css +1 -1
  14. package/es/control/chart/chart.d.ts +3 -1
  15. package/es/control/chart/chart.mjs +70 -6
  16. package/es/control/data-view/data-view.mjs +1 -0
  17. package/es/control/drbar/drbar.controller.d.ts +9 -0
  18. package/es/control/drbar/drbar.controller.mjs +31 -17
  19. package/es/control/drtab/drtab.controller.d.ts +9 -0
  20. package/es/control/drtab/drtab.controller.mjs +16 -1
  21. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
  22. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.d.ts +2 -1
  23. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.mjs +13 -4
  24. package/es/control/form/form-detail/form-mdctrl/index.d.ts +1 -0
  25. package/es/control/form/form-detail/form-rawitem/form-rawitem.d.ts +2 -1
  26. package/es/control/form/form-detail/form-rawitem/form-rawitem.mjs +31 -1
  27. package/es/control/form/form-detail/form-rawitem/index.d.ts +1 -0
  28. package/es/control/grid/grid/grid.mjs +1 -0
  29. package/es/control/grid/grid-column/grid-field-edit-column/cell-edit.mjs +3 -1
  30. package/es/control/list/list.mjs +1 -0
  31. package/es/control/search-bar/filter-tree/filter-tree.d.ts +3 -3
  32. package/es/control/search-bar/filter-tree/filter-tree.mjs +98 -37
  33. package/es/control/search-bar/index.d.ts +1 -0
  34. package/es/control/search-bar/index.mjs +2 -0
  35. package/es/control/search-bar/quick-search-select/quick-search-select.css +1 -0
  36. package/es/control/search-bar/quick-search-select/quick-search-select.d.ts +16 -0
  37. package/es/control/search-bar/quick-search-select/quick-search-select.mjs +72 -0
  38. package/es/control/search-bar/search-bar.css +1 -1
  39. package/es/control/search-bar/search-bar.d.ts +1 -0
  40. package/es/control/search-bar/search-bar.mjs +14 -3
  41. package/es/control/toolbar/index.d.ts +1 -0
  42. package/es/control/toolbar/toolbar.d.ts +1 -0
  43. package/es/control/toolbar/toolbar.mjs +15 -14
  44. package/es/control/tree-grid/tree-grid.mjs +1 -0
  45. package/es/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-edit-column/cell-edit.mjs +3 -1
  46. package/es/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.mjs +11 -3
  47. package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +5 -7
  48. package/es/editor/date-picker/ibiz-date-picker/ibiz-date-picker.mjs +5 -7
  49. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +19 -10
  50. package/es/editor/list-box/ibiz-list-box/ibiz-list-box.mjs +13 -5
  51. package/es/editor/raw/ibiz-raw/ibiz-raw.mjs +7 -0
  52. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.mjs +6 -8
  53. package/es/editor/text-box/input/input.mjs +7 -9
  54. package/es/editor/user/ibiz-searchcond-edit/ibiz-searchcond-edit.mjs +9 -11
  55. package/es/panel-component/index.mjs +2 -0
  56. package/es/panel-component/nav-tabs/nav-tabs.css +1 -1
  57. package/es/panel-component/nav-tabs/nav-tabs.mjs +7 -1
  58. package/es/panel-component/panel-index-view-search/index.d.ts +1 -0
  59. package/es/panel-component/panel-index-view-search/panel-index-view-search.d.ts +1 -0
  60. package/es/panel-component/panel-index-view-search/panel-index-view-search.mjs +22 -2
  61. package/es/panel-component/view-msg-pos/index.d.ts +25 -0
  62. package/es/panel-component/view-msg-pos/index.mjs +16 -0
  63. package/es/panel-component/view-msg-pos/view-msg-pos.controller.d.ts +21 -0
  64. package/es/panel-component/view-msg-pos/view-msg-pos.controller.mjs +48 -0
  65. package/es/panel-component/view-msg-pos/view-msg-pos.d.ts +25 -0
  66. package/es/panel-component/view-msg-pos/view-msg-pos.mjs +47 -0
  67. package/es/panel-component/view-msg-pos/view-msg-pos.provider.d.ts +16 -0
  68. package/es/panel-component/view-msg-pos/view-msg-pos.provider.mjs +21 -0
  69. package/es/view-engine/index.mjs +4 -0
  70. package/es/view-engine/panel-view-engine.d.ts +2 -2
  71. package/es/web-app/App.mjs +9 -1
  72. package/es/web-app/main.mjs +8 -1
  73. package/lib/common/pagination/pagination.cjs +12 -2
  74. package/lib/common/view-message/view-message.cjs +129 -16
  75. package/lib/common/view-message/view-message.css +1 -1
  76. package/lib/control/caption-bar/caption-bar.cjs +3 -1
  77. package/lib/control/caption-bar/caption-bar.css +1 -1
  78. package/lib/control/chart/chart.cjs +69 -5
  79. package/lib/control/chart/chart.css +1 -1
  80. package/lib/control/data-view/data-view.cjs +1 -0
  81. package/lib/control/drbar/drbar.controller.cjs +31 -17
  82. package/lib/control/drtab/drtab.controller.cjs +16 -1
  83. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.cjs +13 -4
  84. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
  85. package/lib/control/form/form-detail/form-rawitem/form-rawitem.cjs +30 -0
  86. package/lib/control/grid/grid/grid.cjs +1 -0
  87. package/lib/control/grid/grid-column/grid-field-edit-column/cell-edit.cjs +3 -1
  88. package/lib/control/list/list.cjs +1 -0
  89. package/lib/control/search-bar/filter-tree/filter-tree.cjs +98 -37
  90. package/lib/control/search-bar/index.cjs +2 -0
  91. package/lib/control/search-bar/quick-search-select/quick-search-select.cjs +74 -0
  92. package/lib/control/search-bar/quick-search-select/quick-search-select.css +1 -0
  93. package/lib/control/search-bar/search-bar.cjs +14 -3
  94. package/lib/control/search-bar/search-bar.css +1 -1
  95. package/lib/control/toolbar/toolbar.cjs +15 -14
  96. package/lib/control/tree-grid/tree-grid.cjs +1 -0
  97. package/lib/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-edit-column/cell-edit.cjs +3 -1
  98. package/lib/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.cjs +11 -3
  99. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +5 -7
  100. package/lib/editor/date-picker/ibiz-date-picker/ibiz-date-picker.cjs +5 -7
  101. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +19 -10
  102. package/lib/editor/list-box/ibiz-list-box/ibiz-list-box.cjs +13 -5
  103. package/lib/editor/raw/ibiz-raw/ibiz-raw.cjs +7 -0
  104. package/lib/editor/text-box/ibiz-input-number/ibiz-input-number.cjs +6 -8
  105. package/lib/editor/text-box/input/input.cjs +7 -9
  106. package/lib/editor/user/ibiz-searchcond-edit/ibiz-searchcond-edit.cjs +8 -10
  107. package/lib/panel-component/index.cjs +2 -0
  108. package/lib/panel-component/nav-tabs/nav-tabs.cjs +7 -1
  109. package/lib/panel-component/nav-tabs/nav-tabs.css +1 -1
  110. package/lib/panel-component/panel-index-view-search/panel-index-view-search.cjs +21 -1
  111. package/lib/panel-component/view-msg-pos/index.cjs +22 -0
  112. package/lib/panel-component/view-msg-pos/view-msg-pos.cjs +49 -0
  113. package/lib/panel-component/view-msg-pos/view-msg-pos.controller.cjs +50 -0
  114. package/lib/panel-component/view-msg-pos/view-msg-pos.provider.cjs +23 -0
  115. package/lib/view-engine/index.cjs +4 -0
  116. package/lib/web-app/App.cjs +8 -0
  117. package/lib/web-app/main.cjs +7 -0
  118. package/package.json +14 -14
  119. package/dist/chart-IsmrW_d0.js +0 -1
  120. package/dist/index-l_9Kqet_.js +0 -4
@@ -11,6 +11,7 @@ export declare const IBizFormMDCtrl: import("@ibiz-template/vue3-util").TypeWith
11
11
  c: import("@ibiz-template/runtime").FormMDCtrlController;
12
12
  ns: import("@ibiz-template/core").Namespace;
13
13
  hasCaption: boolean | undefined;
14
+ onActionClick: (detail: import("@ibiz/model-core").IUIActionGroupDetail, event: MouseEvent) => Promise<void>;
14
15
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
15
16
  modelData: {
16
17
  type: import("vue").PropType<import("@ibiz/model-core").IDEFormMDCtrl>;
@@ -1,5 +1,5 @@
1
1
  import { IDEFormRawItem } from '@ibiz/model-core';
2
- import { PropType } from 'vue';
2
+ import { PropType, Ref } from 'vue';
3
3
  import { FormRawItemController } from '@ibiz-template/runtime';
4
4
  import './form-rawitem.scss';
5
5
  export declare const FormRawItem: import("vue").DefineComponent<{
@@ -13,6 +13,7 @@ export declare const FormRawItem: import("vue").DefineComponent<{
13
13
  };
14
14
  }, {
15
15
  ns: import("@ibiz-template/core").Namespace;
16
+ content: Ref<string | number | undefined>;
16
17
  showFormDefaultContent: import("vue").ComputedRef<boolean>;
17
18
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
18
19
  modelData: {
@@ -1,4 +1,4 @@
1
- import { computed, resolveComponent, createVNode, defineComponent } from 'vue';
1
+ import { ref, computed, watch, resolveComponent, createVNode, defineComponent } from 'vue';
2
2
  import { useNamespace } from '@ibiz-template/vue3-util';
3
3
  import { FormRawItemController } from '@ibiz-template/runtime';
4
4
  import './form-rawitem.css';
@@ -18,14 +18,43 @@ const FormRawItem = /* @__PURE__ */ defineComponent({
18
18
  },
19
19
  setup(props) {
20
20
  const ns = useNamespace("form-raw-item");
21
+ const c = props.controller;
22
+ const content = ref("");
21
23
  const showFormDefaultContent = computed(() => {
22
24
  if (props.controller.form.controlParams && props.controller.form.controlParams.editmode === "hover") {
23
25
  return true;
24
26
  }
25
27
  return false;
26
28
  });
29
+ watch(() => c.data, async (newVal) => {
30
+ if (newVal) {
31
+ const rawItemModel = c.model.rawItem;
32
+ if (!rawItemModel) {
33
+ return;
34
+ }
35
+ let rawItemContent = "";
36
+ const obj = {
37
+ ...newVal
38
+ };
39
+ if (rawItemModel.contentType === "RAW") {
40
+ rawItemContent = rawItemModel.caption;
41
+ } else if (rawItemModel.contentType === "HTML") {
42
+ rawItemContent = rawItemModel.content;
43
+ }
44
+ if (rawItemContent && rawItemModel.templateMode) {
45
+ content.value = await ibiz.util.hbs.render(rawItemContent.replaceAll("//n", "\n"), Object.assign(obj, {
46
+ data: {
47
+ ...newVal
48
+ }
49
+ }));
50
+ }
51
+ }
52
+ }, {
53
+ immediate: true
54
+ });
27
55
  return {
28
56
  ns,
57
+ content,
29
58
  showFormDefaultContent
30
59
  };
31
60
  },
@@ -36,6 +65,7 @@ const FormRawItem = /* @__PURE__ */ defineComponent({
36
65
  return createVNode(resolveComponent("iBizRawItem"), {
37
66
  "class": [this.ns.b(), ...this.controller.containerClass, this.ns.is("show-default", this.showFormDefaultContent)],
38
67
  "rawItem": this.modelData,
68
+ "content": this.content,
39
69
  "onClick": (event) => this.controller.onClick(event)
40
70
  }, null);
41
71
  }
@@ -9,6 +9,7 @@ export declare const IBizFormRawItem: import("@ibiz-template/vue3-util").TypeWit
9
9
  };
10
10
  }, {
11
11
  ns: import("@ibiz-template/core").Namespace;
12
+ content: import("vue").Ref<string | number | undefined>;
12
13
  showFormDefaultContent: import("vue").ComputedRef<boolean>;
13
14
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
14
15
  modelData: {
@@ -292,6 +292,7 @@ const GridControl = /* @__PURE__ */ defineComponent({
292
292
  "total": state.total,
293
293
  "curPage": state.curPage,
294
294
  "size": state.size,
295
+ "totalPages": state.totalPages,
295
296
  "onChange": this.onPageChange,
296
297
  "onPageSizeChange": this.onPageSizeChange,
297
298
  "onPageRefresh": this.onPageRefresh
@@ -27,7 +27,9 @@ function useCellEdit(props, componentRef) {
27
27
  return !editorShowEdit.value;
28
28
  });
29
29
  const editorDisabled = false;
30
- const isAutoFocus = true;
30
+ const isAutoFocus = computed(() => {
31
+ return !hasError.value;
32
+ });
31
33
  const showEditMask = computed(() => {
32
34
  return cellEditable.value && !editable.value;
33
35
  });
@@ -212,6 +212,7 @@ const ListControl = /* @__PURE__ */ defineComponent({
212
212
  "total": this.c.state.total,
213
213
  "curPage": this.c.state.curPage,
214
214
  "size": this.c.state.size,
215
+ "totalPages": this.c.state.totalPages,
215
216
  "onChange": this.onPageChange,
216
217
  "onPageSizeChange": this.onPageSizeChange,
217
218
  "onPageRefresh": this.onPageRefresh
@@ -1,4 +1,4 @@
1
- import { IFilterBranchNode, IFilterLeafNode, IFilterNode, SearchBarFilterController, SearchBarFilterItemsController } from '@ibiz-template/runtime';
1
+ import { IFilterNodeGroup, IFilterNodeField, IFilterNode, SearchBarFilterController, SearchBarFilterItemsController, IFilterNodeItems } from '@ibiz-template/runtime';
2
2
  import { PropType } from 'vue';
3
3
  import './filter-tree.scss';
4
4
  /** 不需要编辑器的OP */
@@ -27,8 +27,8 @@ export declare const FilterTreeControl: import("vue").DefineComponent<{
27
27
  };
28
28
  }, {
29
29
  ns: import("@ibiz-template/core").Namespace;
30
- renderFilterGroup: (node: IFilterBranchNode, itemsC?: SearchBarFilterItemsController) => JSX.Element;
31
- renderFilterItem: (node: IFilterLeafNode, itemsC?: SearchBarFilterItemsController) => JSX.Element;
30
+ renderFilterGroup: (node: IFilterNodeGroup | IFilterNodeItems, itemsC?: SearchBarFilterItemsController) => any;
31
+ renderFilterItem: (node: IFilterNodeField, itemsC?: SearchBarFilterItemsController) => JSX.Element | undefined;
32
32
  onConfirm: () => void;
33
33
  onCancel: () => void;
34
34
  isInSearchBar: import("vue").ComputedRef<boolean>;
@@ -2,6 +2,7 @@ import { isVNode, computed, resolveComponent, h, createVNode, createTextVNode, d
2
2
  import { ValueOP } from '@ibiz-template/runtime';
3
3
  import { useNamespace } from '@ibiz-template/vue3-util';
4
4
  import './filter-tree.css';
5
+ import { clearAll } from 'qx-util';
5
6
 
6
7
  "use strict";
7
8
  function _isSlot(s) {
@@ -90,33 +91,49 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
90
91
  const UiFilterNodes = computed(() => {
91
92
  return props.filterNodes;
92
93
  });
93
- const findFilterController = (fieldName, valueOP) => {
94
+ const findFilterController = (node) => {
95
+ if (node.nodeType === "ITEMS" && node.simple) {
96
+ const subNode = node.children[0];
97
+ return props.filterControllers.find((item) => {
98
+ if (item.type === "SIMPLE_ITEMS") {
99
+ const simpleC = item;
100
+ if (simpleC.fieldName === node.field && simpleC.valueOP === node.valueOP && simpleC.subFieldName === subNode.field && simpleC.subValueOP === subNode.valueOP) {
101
+ return true;
102
+ }
103
+ }
104
+ return false;
105
+ });
106
+ }
107
+ const {
108
+ field,
109
+ valueOP
110
+ } = node;
94
111
  return props.filterControllers.find((item) => {
95
- if (item.fieldName === fieldName) {
112
+ if (item.type === "SIMPLE_ITEMS") {
113
+ return false;
114
+ }
115
+ if (item.fieldName === field) {
96
116
  return item.valueOP ? item.valueOP === valueOP : true;
97
117
  }
98
118
  return false;
99
119
  });
100
120
  };
101
121
  const allFields = [];
102
- const getFilterModes = (fieldName, fieldInfos = allFields) => {
103
- if (!fieldName) {
104
- return;
105
- }
106
- const field = fieldInfos.find((item) => item.name === fieldName);
107
- if (!field) {
122
+ props.filterControllers.forEach((filterC) => {
123
+ let find = allFields.find((x) => x.name === filterC.key);
124
+ if (filterC.hidden) {
108
125
  return;
109
126
  }
110
- return field.valueOPs;
111
- };
112
- props.filterControllers.forEach((filterC) => {
113
- let find = allFields.find((x) => x.name === filterC.fieldName);
114
127
  if (find === void 0) {
115
128
  find = {
116
- name: filterC.fieldName,
129
+ name: filterC.key,
130
+ fieldName: filterC.fieldName,
117
131
  label: filterC.label,
118
132
  valueOPs: []
119
133
  };
134
+ if (filterC.type === "SIMPLE_ITEMS") {
135
+ find.simpleFilterC = filterC;
136
+ }
120
137
  allFields.push(find);
121
138
  }
122
139
  if (!filterC.valueOP) {
@@ -125,25 +142,38 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
125
142
  find.valueOPs.push(filterC.valueOP);
126
143
  }
127
144
  });
128
- const onFieldSelect = (node, field) => {
129
- node.value = null;
130
- node.valueOP = null;
131
- node.field = field;
132
- Object.assign(node, {
133
- leaf: true,
134
- logicType: void 0,
135
- children: void 0
136
- });
145
+ const getFilterModes = (fieldName, fieldInfos = allFields) => {
146
+ if (!fieldName) {
147
+ return;
148
+ }
149
+ const field = fieldInfos.find((item) => item.name === fieldName);
150
+ if (!field) {
151
+ return;
152
+ }
153
+ return field.valueOPs;
154
+ };
155
+ const onFieldSelect = (node, key, fields = allFields) => {
156
+ const fieldInfo = fields.find((item) => item.name === key);
157
+ if (!fieldInfo) {
158
+ ibiz.log.error("allFields\u627E\u4E0D\u5230\u5C5E\u6027\u6807\u8BC6\u4E3A".concat(key, "\u7684"));
159
+ return;
160
+ }
161
+ clearAll(node);
162
+ if (fieldInfo.simpleFilterC) {
163
+ fieldInfo.simpleFilterC.addSimpleFilterNode(node);
164
+ return;
165
+ }
166
+ node.nodeType = "FIELD";
167
+ node.field = fieldInfo.fieldName;
137
168
  };
138
169
  const onValueOPSelect = (node, valueOP) => {
139
170
  node.valueOP = valueOP;
140
171
  node.value = null;
141
172
  if (["EXISTS", "NOTEXISTS"].includes(valueOP)) {
142
173
  Object.assign(node, {
143
- leaf: false,
144
- logicType: "ITEMS",
174
+ nodeType: "ITEMS",
145
175
  children: [{
146
- leaf: true,
176
+ nodeType: "FIELD",
147
177
  field: null,
148
178
  valueOP: null,
149
179
  value: null
@@ -151,8 +181,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
151
181
  });
152
182
  } else {
153
183
  Object.assign(node, {
154
- leaf: true,
155
- logicType: void 0,
184
+ nodeType: "FIELD",
156
185
  children: void 0
157
186
  });
158
187
  }
@@ -162,10 +191,10 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
162
191
  };
163
192
  const addGroup = (node) => {
164
193
  node.children.push({
165
- leaf: false,
194
+ nodeType: "GROUP",
166
195
  logicType: "AND",
167
196
  children: [{
168
- leaf: true,
197
+ nodeType: "FIELD",
169
198
  field: null,
170
199
  valueOP: null,
171
200
  value: null
@@ -174,7 +203,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
174
203
  };
175
204
  const addItem = (node) => {
176
205
  node.children.push({
177
- leaf: true,
206
+ nodeType: "FIELD",
178
207
  field: null,
179
208
  valueOP: null,
180
209
  value: null
@@ -212,6 +241,9 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
212
241
  };
213
242
  const renderFilterItem = (node, itemsC) => {
214
243
  let _slot;
244
+ if (node.hidden) {
245
+ return;
246
+ }
215
247
  let fieldInfos = allFields;
216
248
  if (itemsC) {
217
249
  fieldInfos = itemsC.allFields;
@@ -223,7 +255,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
223
255
  const subFilterC = itemsC.getSubFilterController(node.field, node.valueOP);
224
256
  editor = renderEditor(node, subFilterC);
225
257
  } else {
226
- const filterC = findFilterController(node.field, node.valueOP);
258
+ const filterC = findFilterController(node);
227
259
  if (filterC && !["EXISTS", "NOTEXISTS"].includes(filterC.valueOP)) {
228
260
  editor = renderEditor(node, filterC);
229
261
  }
@@ -237,7 +269,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
237
269
  "teleported": false,
238
270
  "class": ns.e("field-select"),
239
271
  "onChange": (field) => {
240
- onFieldSelect(node, field);
272
+ onFieldSelect(node, field, fieldInfos);
241
273
  }
242
274
  }, _isSlot(_slot = fieldInfos.map((field) => {
243
275
  return createVNode(resolveComponent("el-option"), {
@@ -259,7 +291,10 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
259
291
  };
260
292
  let renderFilterItems = (_node) => createVNode("div", null, null);
261
293
  const renderFilterGroup = (node, itemsC) => {
262
- if (node.logicType === "ITEMS") {
294
+ if (node.hidden) {
295
+ return;
296
+ }
297
+ if (node.nodeType === "ITEMS") {
263
298
  return renderFilterItems(node);
264
299
  }
265
300
  return createVNode("div", {
@@ -301,7 +336,10 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
301
336
  })]), createVNode("div", {
302
337
  "class": ns.be("group", "list")
303
338
  }, [node.children.length > 0 && node.children.map((child, index) => {
304
- const childContent = child.leaf ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
339
+ const childContent = child.nodeType === "FIELD" ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
340
+ if (!childContent) {
341
+ return null;
342
+ }
305
343
  return createVNode("div", {
306
344
  "class": ns.be("group", "list-item")
307
345
  }, [createVNode("div", {
@@ -318,7 +356,30 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
318
356
  })])]);
319
357
  };
320
358
  renderFilterItems = (node) => {
321
- const itemsC = findFilterController(node.field, node.valueOP);
359
+ const itemsC = findFilterController(node);
360
+ if (node.simple) {
361
+ let _slot2;
362
+ const child = node.children[0];
363
+ if (!child) {
364
+ return;
365
+ }
366
+ return [createVNode(resolveComponent("el-select"), {
367
+ "model-value": itemsC.key,
368
+ "teleported": false,
369
+ "class": ns.e("field-select"),
370
+ "onChange": (field) => {
371
+ onFieldSelect(node, field);
372
+ }
373
+ }, _isSlot(_slot2 = allFields.map((field) => {
374
+ return createVNode(resolveComponent("el-option"), {
375
+ "key": field.name,
376
+ "value": field.name,
377
+ "label": field.label
378
+ }, null);
379
+ })) ? _slot2 : {
380
+ default: () => [_slot2]
381
+ }), renderEditor(child, itemsC)];
382
+ }
322
383
  return createVNode("div", {
323
384
  "class": (ns.b("group"), ns.bm("group", "items"))
324
385
  }, [createVNode("div", {
@@ -333,7 +394,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
333
394
  })]), createVNode("div", {
334
395
  "class": ns.be("group", "list")
335
396
  }, [node.children.length > 0 && node.children.map((child, index) => {
336
- const childContent = child.leaf ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
397
+ const childContent = child.nodeType === "FIELD" ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
337
398
  return createVNode("div", {
338
399
  "class": ns.be("group", "list-item")
339
400
  }, [createVNode("div", {
@@ -369,7 +430,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
369
430
  return createVNode("div", {
370
431
  "class": [this.ns.b()]
371
432
  }, [this.UiFilterNodes.length > 0 && this.UiFilterNodes.map((node) => {
372
- if (node.leaf) {
433
+ if (node.nodeType === "FIELD") {
373
434
  return this.renderFilterItem(node);
374
435
  }
375
436
  return this.renderFilterGroup(node);
@@ -25,6 +25,7 @@ export declare const IBizSearchBarControl: import("@ibiz-template/vue3-util").Ty
25
25
  onGroupClick: (item: import("@ibiz/model-core").ISearchBarGroup) => void;
26
26
  triggerFilter: () => void;
27
27
  handleSave: () => void;
28
+ renderAdvancedSearch: () => JSX.Element | null;
28
29
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
29
30
  modelData: {
30
31
  type: import("vue").PropType<import("@ibiz/model-core").ISearchBar>;
@@ -5,6 +5,7 @@ import { SearchBarProvider } from './search-bar.provider.mjs';
5
5
  import { FilterTreeControl } from './filter-tree/filter-tree.mjs';
6
6
  import { FilterModeSelect } from './filter-mode-select/filter-mode-select.mjs';
7
7
  import { SearchGroups } from './search-groups/search-groups.mjs';
8
+ import { QuickSearchSelect } from './quick-search-select/quick-search-select.mjs';
8
9
 
9
10
  "use strict";
10
11
  const IBizSearchBarControl = withInstall(
@@ -14,6 +15,7 @@ const IBizSearchBarControl = withInstall(
14
15
  v.component(FilterTreeControl.name, FilterTreeControl);
15
16
  v.component(FilterModeSelect.name, FilterModeSelect);
16
17
  v.component(SearchGroups.name, SearchGroups);
18
+ v.component(QuickSearchSelect.name, QuickSearchSelect);
17
19
  registerControlProvider(
18
20
  ControlType.SEARCHBAR,
19
21
  () => new SearchBarProvider()
@@ -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)}
@@ -0,0 +1,16 @@
1
+ import { IQuickSearchItem, SearchBarController } from '@ibiz-template/runtime';
2
+ import './quick-search-select.scss';
3
+ export declare const QuickSearchSelect: import("vue").DefineComponent<{
4
+ controller: {
5
+ type: typeof SearchBarController;
6
+ required: true;
7
+ };
8
+ }, {
9
+ ns: import("@ibiz-template/core").Namespace;
10
+ onItemClick: (item: IQuickSearchItem) => void;
11
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
12
+ controller: {
13
+ type: typeof SearchBarController;
14
+ required: true;
15
+ };
16
+ }>>, {}, {}>;
@@ -0,0 +1,72 @@
1
+ import { isVNode, resolveComponent, createVNode, defineComponent } from 'vue';
2
+ import { SearchBarController } from '@ibiz-template/runtime';
3
+ import { useNamespace } from '@ibiz-template/vue3-util';
4
+ import './quick-search-select.css';
5
+
6
+ "use strict";
7
+ function _isSlot(s) {
8
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
9
+ }
10
+ const QuickSearchSelect = /* @__PURE__ */ defineComponent({
11
+ name: "IBizQuickSearchSelect",
12
+ props: {
13
+ controller: {
14
+ type: SearchBarController,
15
+ required: true
16
+ }
17
+ },
18
+ setup(props) {
19
+ const ns = useNamespace("quick-search-select");
20
+ const onItemClick = (item) => {
21
+ const key = item.fieldName;
22
+ const {
23
+ quickSearchFieldNames
24
+ } = props.controller.state;
25
+ const index = quickSearchFieldNames.indexOf(key);
26
+ if (index === -1) {
27
+ quickSearchFieldNames.push(key);
28
+ } else {
29
+ quickSearchFieldNames.splice(index, 1);
30
+ }
31
+ props.controller.calcQuickSearchPlaceHolder();
32
+ };
33
+ return {
34
+ ns,
35
+ onItemClick
36
+ };
37
+ },
38
+ render() {
39
+ const {
40
+ state
41
+ } = this.controller;
42
+ return createVNode(resolveComponent("el-dropdown"), {
43
+ "onCommand": this.onItemClick,
44
+ "trigger": "click",
45
+ "hide-on-click": false,
46
+ "class": [this.ns.b()],
47
+ "popper-class": [this.ns.b("popover")]
48
+ }, {
49
+ default: () => createVNode("div", {
50
+ "class": this.ns.e("icon")
51
+ }, [createVNode("ion-icon", {
52
+ "name": "settings-outline"
53
+ }, null)]),
54
+ dropdown: () => {
55
+ let _slot;
56
+ return createVNode(resolveComponent("el-dropdown-menu"), null, _isSlot(_slot = state.quickSearchItems.map((item) => {
57
+ const isSelected = state.quickSearchFieldNames.includes(item.fieldName);
58
+ return createVNode(resolveComponent("el-dropdown-item"), {
59
+ "class": [this.ns.be("popover", "item"), isSelected && this.ns.bem("popover", "item", "selected")],
60
+ "command": item
61
+ }, {
62
+ default: () => [item.label]
63
+ });
64
+ })) ? _slot : {
65
+ default: () => [_slot]
66
+ });
67
+ }
68
+ });
69
+ }
70
+ });
71
+
72
+ export { QuickSearchSelect };
@@ -1 +1 @@
1
- @charset "UTF-8";.ibiz-control-searchbar{--ibiz-control-searchbar-quick-search-width:220px;--ibiz-control-searchbar-quick-group-item-padding:var(--ibiz-spacing-tight);--ibiz-control-searchbar-quick-group-item-margin:var(--ibiz-spacing-tight);display:flex;align-items:center;justify-content:flex-start;height:100%}.ibiz-control-searchbar .ibiz-control-searchbar-quick-search{width:var(--ibiz-control-searchbar-quick-search-width);margin-left:var(--ibiz-spacing-base-tight);font-size:14px;color:var(--ibiz-text-color);background:var(--ibiz-color-white);border:1px solid var(--ibiz-border-color);border-radius:4px}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group{height:100%;overflow-x:auto;white-space:nowrap}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item{position:relative;display:inline-block;height:100%;padding:var(--ibiz-control-searchbar-quick-group-item-padding);margin-right:var(--ibiz-control-searchbar-quick-group-item-margin);font-size:var(--ibiz-font-size-regular);cursor:pointer}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item.is-selected::after{position:absolute;bottom:2px;left:0;width:100%;height:2px;content:"";background-color:var(--ibiz-color-primary)}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item:hover{color:var(--ibiz-color-primary)}.ibiz-control-searchbar .el-input__icon{cursor:pointer}.ibiz-control-searchbar-filter{margin-right:var(--ibiz-spacing-extra-tight);margin-left:var(--ibiz-spacing-base-tight)}.ibiz-control-searchbar-save{margin-left:var(--ibiz-spacing-base-tight)}
1
+ @charset "UTF-8";.ibiz-control-searchbar{--ibiz-control-searchbar-quick-search-width:220px;--ibiz-control-searchbar-quick-group-item-padding:var(--ibiz-spacing-tight);--ibiz-control-searchbar-quick-group-item-margin:var(--ibiz-spacing-tight);display:flex;align-items:center;justify-content:flex-start;height:100%}.ibiz-control-searchbar .ibiz-control-searchbar-quick-search{width:var(--ibiz-control-searchbar-quick-search-width);margin-left:var(--ibiz-spacing-base-tight);font-size:14px;color:var(--ibiz-text-color);background:var(--ibiz-color-white);border:1px solid var(--ibiz-border-color);border-radius:4px}.ibiz-control-searchbar .ibiz-control-searchbar-quick-search .el-input-group__prepend,.ibiz-control-searchbar .ibiz-control-searchbar-quick-search.el-input-group__append{padding:0}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group{height:100%;overflow-x:auto;white-space:nowrap}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item{position:relative;display:inline-block;height:100%;padding:var(--ibiz-control-searchbar-quick-group-item-padding);margin-right:var(--ibiz-control-searchbar-quick-group-item-margin);font-size:var(--ibiz-font-size-regular);cursor:pointer}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item.is-selected::after{position:absolute;bottom:2px;left:0;width:100%;height:2px;content:"";background-color:var(--ibiz-color-primary)}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item:hover{color:var(--ibiz-color-primary)}.ibiz-control-searchbar .el-input__icon{cursor:pointer}.ibiz-control-searchbar-filter{margin-right:var(--ibiz-spacing-extra-tight);margin-left:var(--ibiz-spacing-base-tight)}.ibiz-control-searchbar-save{margin-left:var(--ibiz-spacing-base-tight)}
@@ -29,6 +29,7 @@ export declare const SearchBarControl: import("vue").DefineComponent<{
29
29
  onGroupClick: (item: ISearchBarGroup) => void;
30
30
  triggerFilter: () => void;
31
31
  handleSave: () => void;
32
+ renderAdvancedSearch: () => JSX.Element | null;
32
33
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
33
34
  modelData: {
34
35
  type: PropType<ISearchBar>;
@@ -94,6 +94,14 @@ const SearchBarControl = /* @__PURE__ */ defineComponent({
94
94
  const handleSave = () => {
95
95
  c.handleSave();
96
96
  };
97
+ const renderAdvancedSearch = () => {
98
+ if (!c.state.advancedQuickSearch) {
99
+ return null;
100
+ }
101
+ return createVNode(resolveComponent("iBizQuickSearchSelect"), {
102
+ "controller": c
103
+ }, null);
104
+ };
97
105
  return {
98
106
  c,
99
107
  ns,
@@ -104,7 +112,8 @@ const SearchBarControl = /* @__PURE__ */ defineComponent({
104
112
  onKeydown,
105
113
  onGroupClick,
106
114
  triggerFilter,
107
- handleSave
115
+ handleSave,
116
+ renderAdvancedSearch
108
117
  };
109
118
  },
110
119
  render() {
@@ -137,7 +146,7 @@ const SearchBarControl = /* @__PURE__ */ defineComponent({
137
146
  "modelValue": this.c.state.query,
138
147
  "onUpdate:modelValue": ($event) => this.c.state.query = $event,
139
148
  "class": this.ns.b("quick-search"),
140
- "placeholder": this.c.placeHolder,
149
+ "placeholder": this.c.state.quickSearchPlaceHolder,
141
150
  "clearable": true,
142
151
  "onKeydown": this.onKeydown,
143
152
  "onClear": this.onClear,
@@ -146,7 +155,9 @@ const SearchBarControl = /* @__PURE__ */ defineComponent({
146
155
  "class": this.ns.e("search-icon"),
147
156
  "name": "search"
148
157
  }, null)
149
- }, null), this.c.enableFilter && createVNode(resolveComponent("el-button"), {
158
+ }, {
159
+ prepend: () => this.renderAdvancedSearch()
160
+ }), this.c.enableFilter && createVNode(resolveComponent("el-button"), {
150
161
  "ref": "filterButtonRef",
151
162
  "type": "primary",
152
163
  "title": "\u8FC7\u6EE4",
@@ -22,6 +22,7 @@ export declare const IBizToolbarControl: import("@ibiz-template/vue3-util").Type
22
22
  c: import("@ibiz-template/runtime").ToolbarController<import("@ibiz/model-core").IControl, import("@ibiz-template/runtime").IToolbarState, import("@ibiz-template/runtime").IToolbarEvent>;
23
23
  btnSize: import("vue").Ref<string>;
24
24
  ns: import("@ibiz-template/core").Namespace;
25
+ toolbarStyle: string | undefined;
25
26
  handleClick: (item: import("@ibiz/model-core").IDEToolbarItem, event: MouseEvent, params?: IData | undefined) => Promise<void>;
26
27
  renderExtraButtons: (extraButtons: import("@ibiz-template/runtime").IExtraButton[]) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
27
28
  [key: string]: any;
@@ -26,6 +26,7 @@ export declare const ToolbarControl: import("vue").DefineComponent<{
26
26
  c: ToolbarController<import("@ibiz/model-core").IControl, import("@ibiz-template/runtime").IToolbarState, import("@ibiz-template/runtime").IToolbarEvent>;
27
27
  btnSize: import("vue").Ref<string>;
28
28
  ns: import("@ibiz-template/core").Namespace;
29
+ toolbarStyle: string | undefined;
29
30
  handleClick: (item: IDEToolbarItem, event: MouseEvent, params?: IData) => Promise<void>;
30
31
  renderExtraButtons: (extraButtons: IExtraButton[]) => VNode[];
31
32
  renderToolbarItem: (item: IDEToolbarItem) => VNode | null;