jobsys-newbie 2.2.0 → 2.2.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.
- package/components/search/NewbieSearch.jsx +12 -4
- package/components/search/components/SearchItem.jsx +33 -18
- package/components/table/NewbieTable.jsx +11 -2
- package/dist/jobsys-newbie.cjs +18 -18
- package/dist/jobsys-newbie.cjs.map +1 -1
- package/dist/jobsys-newbie.js +2216 -2164
- package/dist/jobsys-newbie.js.map +1 -1
- package/package.json +1 -1
- package/playground/search/TestSearch.vue +26 -4
- package/playground/table/TestTable.vue +6 -3
|
@@ -40,7 +40,8 @@ export default defineComponent({
|
|
|
40
40
|
* @property {Array} [conditions] 搜索项的条件,可选项为不同类型的内置条件
|
|
41
41
|
* @property {*} [defaultValue] 默认搜索值
|
|
42
42
|
* @property {*} [defaultCondition] 默认搜索条件
|
|
43
|
-
* @property {Function} [
|
|
43
|
+
* @property {Function} [customRender] 自定义渲染搜索项, 接收 { item, queryForm, context } 作为参数,返回一个对象,包含 conditions, Component, displayValue, onComponentOpen 四个属性
|
|
44
|
+
* @property {Function} [collectItem] 收集搜索项的内容]
|
|
44
45
|
* */
|
|
45
46
|
|
|
46
47
|
/**
|
|
@@ -80,7 +81,7 @@ export default defineComponent({
|
|
|
80
81
|
*/
|
|
81
82
|
"search",
|
|
82
83
|
],
|
|
83
|
-
setup(props, { expose, emit }) {
|
|
84
|
+
setup(props, { expose, emit, slots }) {
|
|
84
85
|
const searchProvider = inject(NEWBIE_SEARCH, () => {})
|
|
85
86
|
|
|
86
87
|
const state = reactive({
|
|
@@ -333,7 +334,7 @@ export default defineComponent({
|
|
|
333
334
|
state.searchLabels = []
|
|
334
335
|
|
|
335
336
|
concat(state.fieldColumns, state.expandColumns).forEach((item) => {
|
|
336
|
-
let { value, searchLabel } = item.collectItem ? item.collectItem() : {}
|
|
337
|
+
let { value, searchLabel } = item.collectItem ? item.collectItem({ queryForm: state.queryForm, item }) : {}
|
|
337
338
|
const { condition, type } = state.queryForm[item.key]
|
|
338
339
|
|
|
339
340
|
if (
|
|
@@ -369,7 +370,13 @@ export default defineComponent({
|
|
|
369
370
|
*/
|
|
370
371
|
const setQueryForm = (fields) => {
|
|
371
372
|
Object.keys(fields).forEach((key) => {
|
|
372
|
-
state.queryForm[key]
|
|
373
|
+
if (state.queryForm[key]) {
|
|
374
|
+
state.queryForm[key].value = fields[key]
|
|
375
|
+
} else {
|
|
376
|
+
state.queryForm[key] = {
|
|
377
|
+
value: fields[key],
|
|
378
|
+
}
|
|
379
|
+
}
|
|
373
380
|
})
|
|
374
381
|
}
|
|
375
382
|
|
|
@@ -398,6 +405,7 @@ export default defineComponent({
|
|
|
398
405
|
return state.fieldColumns.map((item) =>
|
|
399
406
|
createSearchItem(item, state.queryForm, searchState[item.key], {
|
|
400
407
|
props,
|
|
408
|
+
slots,
|
|
401
409
|
searchProvider,
|
|
402
410
|
}),
|
|
403
411
|
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { find } from "lodash-es"
|
|
1
|
+
import { find, isFunction } from "lodash-es"
|
|
2
2
|
import { computed, nextTick, ref, Transition, withModifiers } from "vue"
|
|
3
3
|
import { Dropdown, Menu, MenuItem, TypographyText } from "ant-design-vue"
|
|
4
4
|
import { DownOutlined } from "@ant-design/icons-vue"
|
|
@@ -16,29 +16,44 @@ import { useT } from "../../../hooks/index.js"
|
|
|
16
16
|
* @return {JSX.Element}
|
|
17
17
|
*/
|
|
18
18
|
const render = (item, queryForm, itemState, context) => {
|
|
19
|
-
const { searchProvider, props } = context
|
|
19
|
+
const { searchProvider, props, slots } = context
|
|
20
20
|
|
|
21
21
|
const panelRef = ref(null)
|
|
22
22
|
|
|
23
23
|
let field = {}
|
|
24
24
|
|
|
25
|
-
if (
|
|
26
|
-
field =
|
|
27
|
-
} else
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
25
|
+
if (item.customRender) {
|
|
26
|
+
field = item.customRender({ item, queryForm, context })
|
|
27
|
+
} else {
|
|
28
|
+
switch (item.type) {
|
|
29
|
+
case "number":
|
|
30
|
+
field = Fields.createNumber(item, queryForm, context)
|
|
31
|
+
break
|
|
32
|
+
case "select":
|
|
33
|
+
field = Fields.createSelect(item, queryForm, context)
|
|
34
|
+
break
|
|
35
|
+
case "textarea":
|
|
36
|
+
field = Fields.createTextarea(item, queryForm, context)
|
|
37
|
+
break
|
|
38
|
+
case "date":
|
|
39
|
+
field = Fields.createDate(item, queryForm, context)
|
|
40
|
+
break
|
|
41
|
+
case "cascade":
|
|
42
|
+
field = Fields.createCascader(item, queryForm, context)
|
|
43
|
+
break
|
|
44
|
+
case "switch":
|
|
45
|
+
field = Fields.createSwitch(item, queryForm, context)
|
|
46
|
+
break
|
|
47
|
+
default:
|
|
48
|
+
field = Fields.createInput(item, queryForm, context)
|
|
49
|
+
break
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (slots[item.key]) {
|
|
53
|
+
field.Component = slots[item.key]({ item, queryForm, context })
|
|
39
54
|
}
|
|
40
55
|
|
|
41
|
-
const { conditions, Component, displayValue, onComponentOpen } = field
|
|
56
|
+
const { conditions = [], Component, displayValue = "", onComponentOpen = null } = field
|
|
42
57
|
|
|
43
58
|
/**
|
|
44
59
|
* 选择条件
|
|
@@ -144,7 +159,7 @@ const render = (item, queryForm, itemState, context) => {
|
|
|
144
159
|
</Dropdown>
|
|
145
160
|
)}
|
|
146
161
|
</div>
|
|
147
|
-
<div class={"newbie-search-input-container"}>{Component}</div>
|
|
162
|
+
<div class={"newbie-search-input-container"}>{isFunction(Component) ? Component() : Component}</div>
|
|
148
163
|
</div>
|
|
149
164
|
) : null}
|
|
150
165
|
</Transition>
|
|
@@ -71,10 +71,15 @@ export default defineComponent({
|
|
|
71
71
|
tableEvents: { type: Object, default: () => ({}) },
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
|
-
* 原生
|
|
74
|
+
* 原生 slots
|
|
75
75
|
*/
|
|
76
76
|
tableSlots: { type: Object, default: () => ({}) },
|
|
77
77
|
|
|
78
|
+
/**
|
|
79
|
+
* NewbieSearch slots
|
|
80
|
+
*/
|
|
81
|
+
searchSlots: { type: Object, default: () => ({}) },
|
|
82
|
+
|
|
78
83
|
/**
|
|
79
84
|
* 是否使用分页,为 Object 时时使用自定义分页
|
|
80
85
|
*/
|
|
@@ -682,7 +687,11 @@ export default defineComponent({
|
|
|
682
687
|
filterableColumns={state.filterableColumns}
|
|
683
688
|
sortableColumns={state.sortableColumns}
|
|
684
689
|
onSearch={onSearch}
|
|
685
|
-
|
|
690
|
+
>
|
|
691
|
+
{{
|
|
692
|
+
...props.searchSlots,
|
|
693
|
+
}}
|
|
694
|
+
</NewbieSearch>,
|
|
686
695
|
<Divider></Divider>,
|
|
687
696
|
]
|
|
688
697
|
: null
|