cnhis-design-vue 3.1.39-release.2 → 3.1.39
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/README.md +123 -123
- package/es/components/bpmn-workflow/src/BpmnWorkflow.d.ts +0 -0
- package/es/components/bpmn-workflow/types/BpmnViewer.d.ts +1 -0
- package/es/components/bpmn-workflow/types/ModelingModule.d.ts +1 -0
- package/es/components/bpmn-workflow/types/MoveCanvasModule.d.ts +1 -0
- package/es/components/button-print/index.d.ts +16 -1
- package/es/components/button-print/src/ButtonPrint.vue.d.ts +16 -1
- package/es/components/button-print/src/ButtonPrint.vue2.js +37 -6
- package/es/components/button-print/src/utils/print.d.ts +1 -0
- package/es/components/button-print/src/utils/print.js +10 -0
- package/es/components/fabric-chart/src/utils/index.d.ts +6823 -0
- package/es/components/form-render/index.js +2 -2
- package/es/components/form-render/src/components/renderer/lineBar/FormCollapse.vue.d.ts +3 -0
- package/es/components/form-render/src/components/renderer/lineBar/FormCollapse.vue.js +9 -4
- package/es/components/form-render/src/components/renderer/lineBar/index.d.ts +3 -0
- package/es/components/form-render/src/components/renderer/radio&checkbox.d.ts +4 -4
- package/es/components/form-render/src/components/renderer/radio_checkbox.js +1 -1
- package/es/components/form-render/src/components/renderer/select.js +26 -8
- package/es/components/form-render/src/hooks/index.js +1 -1
- package/es/components/form-render/src/hooks/useFieldListAdaptor.js +2 -1
- package/es/components/form-render/src/hooks/useFormRenderOptions.d.ts +4 -3
- package/es/components/form-render/src/hooks/useFormRenderOptions.js +53 -13
- package/es/components/form-render/src/utils/index.d.ts +2 -4
- package/es/components/form-render/src/utils/index.js +1 -15
- package/es/components/form-render/style/index.css +1 -1
- package/es/components/iho-table/index.d.ts +120 -120
- package/es/components/iho-table/src/IhoTable.vue.d.ts +120 -120
- package/es/components/iho-table/src/IhoTable.vue.js +6 -6
- package/es/components/iho-table/src/hooks/tapHooks/index.d.ts +60 -62
- package/es/components/iho-table/src/hooks/tapHooks/index.js +2 -6
- package/es/components/iho-table/src/hooks/tapHooks/useEventHooks.d.ts +1 -1
- package/es/components/iho-table/src/hooks/tapHooks/useEventHooks.js +2 -2
- package/es/components/iho-table/src/plugins/anchorPlugin/tableAnchor.js +2 -1
- package/es/components/iho-table/src/plugins/anchorPlugin/useAnchor.d.ts +2 -2
- package/es/components/iho-table/src/plugins/anchorPlugin/useAnchor.js +11 -11
- package/es/components/iho-table/src/plugins/lowCodeFieldAdaptorPlugin/index.js +1 -0
- package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/dateRendererPlugin/index.js +4 -1
- package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/numberRendererPlugin.js +31 -4
- package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/editSeparate.vue.d.ts +12 -7
- package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/editSeparate.vue.js +13 -8
- package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/index.js +8 -6
- package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/timeRendererPlugin.js +1 -2
- package/es/components/iho-table/src/types/index.d.ts +9 -4
- package/es/components/index.css +1 -1
- package/es/components/index.js +2 -2
- package/es/components/keyboard/index.d.ts +4 -0
- package/es/components/keyboard/src/Keyboard.vue.d.ts +4 -0
- package/es/components/keyboard/src/Keyboard.vue.js +10 -2
- package/es/components/keyboard/src/components/InputNumber.vue.d.ts +3 -1
- package/es/components/keyboard/src/components/InputNumber.vue.js +13 -1
- package/es/components/keyboard/src/components/NumberPanel.vue.d.ts +2 -0
- package/es/components/scale-view/src/ScaleView.vue.d.ts +0 -3
- package/es/components/scale-view/src/ScaleView.vue.js +1 -1
- package/es/env.d.ts +24 -24
- package/es/shared/assets/img/failure.js +1 -1
- package/es/shared/assets/img/failure.png.js +1 -1
- package/es/shared/assets/img/icon-asc.js +1 -1
- package/es/shared/assets/img/icon-desc.js +1 -1
- package/es/shared/assets/img/no-permission.js +1 -1
- package/es/shared/assets/img/no-permission.png.js +1 -1
- package/es/shared/assets/img/nodata.js +1 -1
- package/es/shared/assets/img/nodata.png.js +1 -1
- package/es/shared/assets/img/notfound.js +1 -1
- package/es/shared/assets/img/notfound.png.js +1 -1
- package/es/shared/assets/img/qr.js +1 -1
- package/es/shared/assets/img/qr.png.js +1 -1
- package/es/shared/assets/img/success.js +1 -1
- package/es/shared/assets/img/success.png.js +1 -1
- package/es/shared/assets/img/video.js +1 -1
- package/es/shared/assets/img/video.png.js +1 -1
- package/es/shared/assets/img/video_default_cover.js +1 -1
- package/es/shared/assets/img/video_default_cover.png.js +1 -1
- package/es/shared/assets/img/video_hover.js +1 -1
- package/es/shared/assets/img/video_play_hover.js +1 -1
- package/es/shared/assets/img/xb_big.js +1 -1
- package/es/shared/assets/img/xb_big.png.js +1 -1
- package/es/shared/assets/img/xb_small.js +1 -1
- package/es/shared/assets/img/xb_small.png.js +1 -1
- package/es/shared/components/VueDraggable/src/vuedraggable.d.ts +86 -0
- package/es/shared/utils/tapable/index.d.ts +139 -0
- package/package.json +2 -2
|
@@ -15,8 +15,8 @@ export { FormItemDepsCollector, useFormItemDeps } from './src/hooks/useFormItemD
|
|
|
15
15
|
export { useAnchor } from './src/hooks/useAnchor.js';
|
|
16
16
|
export { useFormContext } from './src/hooks/useFormContext.js';
|
|
17
17
|
export { useCommonInjection, useSelectOptionProps } from './src/hooks/useCommonInjection.js';
|
|
18
|
-
export { useAutographOptions, useRecommendOptions, useUrlConfigOptions } from './src/hooks/useFormRenderOptions.js';
|
|
19
|
-
export { combineExtendKey, createInputSlot, createSlot, createUrlConfigParams, formRenderLog, injectOrProvide, isNestedFieldType, isNestedType,
|
|
18
|
+
export { optionMatcherCache, useAutographOptions, useRecommendOptions, useUrlConfigOptions } from './src/hooks/useFormRenderOptions.js';
|
|
19
|
+
export { combineExtendKey, createInputSlot, createSlot, createUrlConfigParams, formRenderLog, injectOrProvide, isNestedFieldType, isNestedType, keywordMatcher, mergeDeepProperties, parseNumberFromMaybeString, presetRequestHandler, splitExtendKey, validateMessageParser } from './src/utils/index.js';
|
|
20
20
|
export * from '@formily/core';
|
|
21
21
|
export { businessDateParser, isIdCard, isMobile, parseAge2Birthday, parseAgeFromContext, parseBirthday, parseIdCard, transformDateFormat } from './src/utils/business.js';
|
|
22
22
|
export { findNextWidget, queryDecorator, queryInput } from './src/utils/dom.js';
|
|
@@ -30,6 +30,9 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
30
30
|
}>> & {}>>;
|
|
31
31
|
_show: import("vue").Ref<boolean>;
|
|
32
32
|
toggleShow: () => void;
|
|
33
|
+
headerClass: import("vue").ComputedRef<(string | {
|
|
34
|
+
'form-render__linebarHeader--disabled': boolean;
|
|
35
|
+
})[]>;
|
|
33
36
|
fieldKey: import("vue").ComputedRef<string>;
|
|
34
37
|
formItemDepsCollector: import("../../../../../../../es/components/form-render").FormItemDepsCollector;
|
|
35
38
|
TooltipMessage: import("vue").DefineComponent<{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, ref, inject, openBlock, createElementBlock, createElementVNode, createTextVNode, toDisplayString, createBlock, createCommentVNode,
|
|
1
|
+
import { defineComponent, ref, computed, inject, openBlock, createElementBlock, createElementVNode, normalizeClass, unref, createTextVNode, toDisplayString, createBlock, createCommentVNode, Fragment, createVNode, withCtx, renderSlot } from 'vue';
|
|
2
2
|
import '../../../../index.js';
|
|
3
3
|
import TooltipMessage from '../../tooltipMessage.vue.js';
|
|
4
4
|
import { InjectionFormItemDepsCollector, FormItemLineBarDepKeyPrepend } from '../../../constants/index.js';
|
|
@@ -28,6 +28,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
28
28
|
return;
|
|
29
29
|
_show.value = !_show.value;
|
|
30
30
|
}
|
|
31
|
+
const headerClass = computed(() => {
|
|
32
|
+
return ["form-render__linebarHeader", { "form-render__linebarHeader--disabled": !!props.disabled }];
|
|
33
|
+
});
|
|
31
34
|
const { fieldKey } = useFormField();
|
|
32
35
|
const formItemDepsCollector = inject(InjectionFormItemDepsCollector);
|
|
33
36
|
formItemDepsCollector.setDeps(fieldKey.value, FormItemLineBarDepKeyPrepend + fieldKey.value, (v = true) => {
|
|
@@ -36,7 +39,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
36
39
|
return (_ctx, _cache) => {
|
|
37
40
|
return openBlock(), createElementBlock("section", _hoisted_1, [
|
|
38
41
|
createElementVNode("header", {
|
|
39
|
-
class:
|
|
42
|
+
class: normalizeClass(unref(headerClass)),
|
|
40
43
|
onClick: toggleShow
|
|
41
44
|
}, [
|
|
42
45
|
createElementVNode("div", _hoisted_2, [
|
|
@@ -46,8 +49,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
46
49
|
message: __props.remark
|
|
47
50
|
}, null, 8, ["message"])) : createCommentVNode("v-if", true)
|
|
48
51
|
]),
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
!__props.disabled ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
53
|
+
_show.value ? (openBlock(), createBlock(unref(ChevronDown), { key: 0 })) : (openBlock(), createBlock(unref(ChevronUp), { key: 1 }))
|
|
54
|
+
], 64)) : createCommentVNode("v-if", true)
|
|
55
|
+
], 2),
|
|
51
56
|
createVNode(unref(NCollapseTransition), {
|
|
52
57
|
class: "form-render__linebarItem",
|
|
53
58
|
show: _show.value
|
|
@@ -30,6 +30,9 @@ export declare const LINEBAR: import("vue").DefineComponent<{
|
|
|
30
30
|
}>> & {}>>;
|
|
31
31
|
_show: import("vue").Ref<boolean>;
|
|
32
32
|
toggleShow: () => void;
|
|
33
|
+
headerClass: import("vue").ComputedRef<(string | {
|
|
34
|
+
'form-render__linebarHeader--disabled': boolean;
|
|
35
|
+
})[]>;
|
|
33
36
|
fieldKey: import("vue").ComputedRef<string>;
|
|
34
37
|
formItemDepsCollector: import("../../../hooks").FormItemDepsCollector;
|
|
35
38
|
TooltipMessage: import("vue").DefineComponent<{
|
|
@@ -2,7 +2,7 @@ import { AnyObject } from '../../../../../../es/shared/types';
|
|
|
2
2
|
import { PropType } from 'vue';
|
|
3
3
|
export declare const RADIO: import("vue").DefineComponent<{
|
|
4
4
|
value: {
|
|
5
|
-
type: (NumberConstructor | ObjectConstructor | StringConstructor)[];
|
|
5
|
+
type: (ArrayConstructor | NumberConstructor | ObjectConstructor | StringConstructor)[];
|
|
6
6
|
};
|
|
7
7
|
options: {
|
|
8
8
|
type: PropType<AnyObject[]>;
|
|
@@ -44,7 +44,7 @@ export declare const RADIO: import("vue").DefineComponent<{
|
|
|
44
44
|
onChange: {};
|
|
45
45
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:value"[], "update:value", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
46
46
|
value: {
|
|
47
|
-
type: (NumberConstructor | ObjectConstructor | StringConstructor)[];
|
|
47
|
+
type: (ArrayConstructor | NumberConstructor | ObjectConstructor | StringConstructor)[];
|
|
48
48
|
};
|
|
49
49
|
options: {
|
|
50
50
|
type: PropType<AnyObject[]>;
|
|
@@ -94,7 +94,7 @@ export declare const RADIO: import("vue").DefineComponent<{
|
|
|
94
94
|
}>;
|
|
95
95
|
export declare const CHECKBOX: import("vue").DefineComponent<{
|
|
96
96
|
value: {
|
|
97
|
-
type: (NumberConstructor | ObjectConstructor | StringConstructor)[];
|
|
97
|
+
type: (ArrayConstructor | NumberConstructor | ObjectConstructor | StringConstructor)[];
|
|
98
98
|
};
|
|
99
99
|
options: {
|
|
100
100
|
type: PropType<AnyObject[]>;
|
|
@@ -136,7 +136,7 @@ export declare const CHECKBOX: import("vue").DefineComponent<{
|
|
|
136
136
|
onChange: {};
|
|
137
137
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:value"[], "update:value", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
138
138
|
value: {
|
|
139
|
-
type: (NumberConstructor | ObjectConstructor | StringConstructor)[];
|
|
139
|
+
type: (ArrayConstructor | NumberConstructor | ObjectConstructor | StringConstructor)[];
|
|
140
140
|
};
|
|
141
141
|
options: {
|
|
142
142
|
type: PropType<AnyObject[]>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { defineComponent, computed, inject, createVNode } from 'vue';
|
|
2
|
-
import {
|
|
2
|
+
import { useDebounceFn } from '@vueuse/core';
|
|
3
|
+
import { cloneDeep, isString } from 'lodash-es';
|
|
3
4
|
import { useCommonInjection, useSelectOptionProps } from '../../hooks/useCommonInjection.js';
|
|
4
5
|
import { InjectionChangeContextCollector } from '../../constants/index.js';
|
|
5
6
|
import '../../../../../shared/utils/index.js';
|
|
6
7
|
import '../../../index.js';
|
|
7
8
|
import '../../utils/index.js';
|
|
8
9
|
import { useFormField } from '../../hooks/useFormField.js';
|
|
9
|
-
import '@vueuse/core';
|
|
10
10
|
import '../../../../../shared/utils/tapable/SyncHook.js';
|
|
11
11
|
import '../../../../../shared/utils/tapable/SyncBailHook.js';
|
|
12
12
|
import '../../../../../shared/utils/tapable/SyncWaterfallHook.js';
|
|
@@ -23,7 +23,7 @@ import 'date-fns';
|
|
|
23
23
|
import { connect, mapProps } from '@formily/vue';
|
|
24
24
|
import '@vue/shared';
|
|
25
25
|
import './index.js';
|
|
26
|
-
import { useUrlConfigOptions, useAutographOptions, useRecommendOptions } from '../../hooks/useFormRenderOptions.js';
|
|
26
|
+
import { useUrlConfigOptions, useAutographOptions, useRecommendOptions, optionMatcherCache } from '../../hooks/useFormRenderOptions.js';
|
|
27
27
|
import { NSelect } from 'naive-ui';
|
|
28
28
|
import { createVisitedSetter, assignUpdateValue, assignClearBindVisited } from '../../utils/schema.js';
|
|
29
29
|
|
|
@@ -101,7 +101,7 @@ const script = defineComponent({
|
|
|
101
101
|
getRecommend,
|
|
102
102
|
postRecommend,
|
|
103
103
|
sortedOptions
|
|
104
|
-
} = useRecommendOptions(props, options, emit, valueKey);
|
|
104
|
+
} = useRecommendOptions(props, options, emit, labelKey, valueKey);
|
|
105
105
|
const {
|
|
106
106
|
field,
|
|
107
107
|
fieldKey
|
|
@@ -115,10 +115,10 @@ const script = defineComponent({
|
|
|
115
115
|
return sortedOptions.value.find((option) => option[valueKey.value] === v2);
|
|
116
116
|
}
|
|
117
117
|
});
|
|
118
|
-
|
|
118
|
+
const fetchData = useDebounceFn(async (content = "") => {
|
|
119
119
|
fetchOptions(content);
|
|
120
|
-
getRecommend();
|
|
121
|
-
}
|
|
120
|
+
getRecommend(content);
|
|
121
|
+
}, 400);
|
|
122
122
|
const {
|
|
123
123
|
injectValueValidate,
|
|
124
124
|
injectValueWatchFromEmpty,
|
|
@@ -131,6 +131,23 @@ const script = defineComponent({
|
|
|
131
131
|
menuProps,
|
|
132
132
|
nodeProps
|
|
133
133
|
} = useSelectOptionProps();
|
|
134
|
+
function renderLabel(option) {
|
|
135
|
+
const label = option[labelKey.value];
|
|
136
|
+
if (!label || !isString(label))
|
|
137
|
+
return "";
|
|
138
|
+
const renderLabels = optionMatcherCache.get(option);
|
|
139
|
+
if (!renderLabels)
|
|
140
|
+
return label;
|
|
141
|
+
return createVNode("section", null, [renderLabels.map((chars, idx) => {
|
|
142
|
+
if (idx === 0 || !chars)
|
|
143
|
+
return null;
|
|
144
|
+
return createVNode("span", {
|
|
145
|
+
"style": {
|
|
146
|
+
color: idx % 2 === 0 ? "var(--n-option-text-color-active)" : ""
|
|
147
|
+
}
|
|
148
|
+
}, [chars]);
|
|
149
|
+
})]);
|
|
150
|
+
}
|
|
134
151
|
return () => createVNode(NSelect, {
|
|
135
152
|
"key": key.value,
|
|
136
153
|
"remote": true,
|
|
@@ -144,7 +161,8 @@ const script = defineComponent({
|
|
|
144
161
|
"options": sortedOptions.value,
|
|
145
162
|
"onSearch": fetchData,
|
|
146
163
|
"onUpdate:show": (show) => show && fetchData(),
|
|
147
|
-
"onFocus": createVisitedSetter(field)
|
|
164
|
+
"onFocus": createVisitedSetter(field),
|
|
165
|
+
"renderLabel": renderLabel
|
|
148
166
|
}, slots);
|
|
149
167
|
}
|
|
150
168
|
});
|
|
@@ -12,4 +12,4 @@ export { FormItemDepsCollector, useFormItemDeps } from './useFormItemDeps.js';
|
|
|
12
12
|
export { useAnchor } from './useAnchor.js';
|
|
13
13
|
export { useFormContext } from './useFormContext.js';
|
|
14
14
|
export { useCommonInjection, useSelectOptionProps } from './useCommonInjection.js';
|
|
15
|
-
export { useAutographOptions, useRecommendOptions, useUrlConfigOptions } from './useFormRenderOptions.js';
|
|
15
|
+
export { optionMatcherCache, useAutographOptions, useRecommendOptions, useUrlConfigOptions } from './useFormRenderOptions.js';
|
|
@@ -276,7 +276,8 @@ function useFieldListAdaptor(collector) {
|
|
|
276
276
|
return fin;
|
|
277
277
|
}, {});
|
|
278
278
|
function bindIndex(schema, idx) {
|
|
279
|
-
|
|
279
|
+
schema["x-index"] = idx;
|
|
280
|
+
return schema;
|
|
280
281
|
}
|
|
281
282
|
function createFieldName(fieldItem) {
|
|
282
283
|
if (fieldItem.suffixConfig) {
|
|
@@ -2,6 +2,7 @@ import { AnyObject, Func } from '../../../../../es/shared/types';
|
|
|
2
2
|
import { Ref } from 'vue';
|
|
3
3
|
import { FormWordbook, RecommendIds, UrlConfig } from '../../../../../es/components/form-render';
|
|
4
4
|
import { RecommendItem } from '../../../../../es/components/recommend-search/src/types';
|
|
5
|
+
export declare const optionMatcherCache: WeakMap<AnyObject, string[]>;
|
|
5
6
|
export declare function useRecommendOptions(props: {
|
|
6
7
|
recommend: boolean;
|
|
7
8
|
commonList?: RecommendItem[];
|
|
@@ -9,10 +10,10 @@ export declare function useRecommendOptions(props: {
|
|
|
9
10
|
getRecommendInfo?: () => RecommendIds;
|
|
10
11
|
recommendCache: boolean;
|
|
11
12
|
recommendNum: number;
|
|
12
|
-
}, options: Ref<AnyObject[]>, emit: Func, valueKey: Ref<string>): {
|
|
13
|
+
}, options: Ref<AnyObject[]>, emit: Func, labelKey: Ref<string>, valueKey: Ref<string>): {
|
|
13
14
|
postRecommend: (value: unknown) => Promise<void>;
|
|
14
|
-
getRecommend: () => Promise<void>;
|
|
15
|
-
sortedOptions: import("vue").ComputedRef<
|
|
15
|
+
getRecommend: (content?: string) => Promise<void>;
|
|
16
|
+
sortedOptions: import("vue").ComputedRef<AnyObject[]>;
|
|
16
17
|
};
|
|
17
18
|
export declare function useUrlConfigOptions(props: {
|
|
18
19
|
urlConfig?: UrlConfig;
|
|
@@ -4,7 +4,7 @@ import { isString, isEqual, omit, isFunction } from 'lodash-es';
|
|
|
4
4
|
import { computed, inject, ref, watch } from 'vue';
|
|
5
5
|
import '../../index.js';
|
|
6
6
|
import { InjectionAsyncQueue, InjectionFormItemDepsCollector } from '../constants/index.js';
|
|
7
|
-
import { createUrlConfigParams, formRenderLog,
|
|
7
|
+
import { createUrlConfigParams, formRenderLog, keywordMatcher } from '../utils/index.js';
|
|
8
8
|
import { useFormField } from './useFormField.js';
|
|
9
9
|
import { useFormRequest } from './useFormRequest.js';
|
|
10
10
|
|
|
@@ -21,9 +21,44 @@ function createPropRef(props, key) {
|
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
const optionMatcherCache = /* @__PURE__ */ new WeakMap();
|
|
25
|
+
const searchContentMatcherCache = /* @__PURE__ */ new Map();
|
|
26
|
+
function useSearchContent() {
|
|
27
|
+
const searchContent = ref();
|
|
28
|
+
const searchContentMatcher = computed(() => {
|
|
29
|
+
if (!searchContent.value)
|
|
30
|
+
return /./;
|
|
31
|
+
return new RegExp(
|
|
32
|
+
`(.*)${searchContent.value.split("").map((char) => `(${char})`).join("(.*)")}(.*)`
|
|
33
|
+
);
|
|
34
|
+
});
|
|
35
|
+
function filter(option, labelKey) {
|
|
36
|
+
if (!searchContent.value)
|
|
37
|
+
return true;
|
|
38
|
+
const label = option ? option[labelKey] : "";
|
|
39
|
+
if (!isString(label))
|
|
40
|
+
return false;
|
|
41
|
+
const cacheObj = searchContentMatcherCache.get(searchContent.value) || {};
|
|
42
|
+
const matched = Reflect.has(cacheObj, label) ? cacheObj[label] : label.match(searchContentMatcher.value);
|
|
43
|
+
cacheObj[label] = matched;
|
|
44
|
+
searchContentMatcherCache.set(searchContent.value, cacheObj);
|
|
45
|
+
if (matched) {
|
|
46
|
+
optionMatcherCache.set(option, matched);
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return keywordMatcher(label, option.keyword);
|
|
50
|
+
}
|
|
51
|
+
function optionSearchFilter(options, _labelKey) {
|
|
52
|
+
if (!searchContent.value)
|
|
53
|
+
return options;
|
|
54
|
+
return options.filter((option) => filter(option, _labelKey));
|
|
55
|
+
}
|
|
56
|
+
return { searchContent, searchContentMatcher, optionSearchFilter };
|
|
57
|
+
}
|
|
58
|
+
function useRecommendOptions(props, options, emit, labelKey, valueKey) {
|
|
25
59
|
const commonListRef = createPropRef(props, "commonList");
|
|
26
60
|
const recentListRef = createPropRef(props, "recentList");
|
|
61
|
+
const { searchContent, optionSearchFilter } = useSearchContent();
|
|
27
62
|
function getRecommendOption(item) {
|
|
28
63
|
return jsonParse(item.itemObj);
|
|
29
64
|
}
|
|
@@ -44,7 +79,11 @@ function useRecommendOptions(props, options, emit, valueKey) {
|
|
|
44
79
|
return item[valueKey.value] !== option[valueKey.value];
|
|
45
80
|
}
|
|
46
81
|
});
|
|
47
|
-
return [
|
|
82
|
+
return [
|
|
83
|
+
...optionSearchFilter(commonOptions.value, labelKey.value),
|
|
84
|
+
...optionSearchFilter(recentOptions.value, labelKey.value),
|
|
85
|
+
...optionWithoutRecommend
|
|
86
|
+
];
|
|
48
87
|
});
|
|
49
88
|
const { getRecommendRequestInfo, getHttpInstance } = useFormRequest();
|
|
50
89
|
function getRecommendConfig(type) {
|
|
@@ -55,9 +94,10 @@ function useRecommendOptions(props, options, emit, valueKey) {
|
|
|
55
94
|
}
|
|
56
95
|
const { fieldKey } = useFormField();
|
|
57
96
|
const asyncQueue = inject(InjectionAsyncQueue);
|
|
58
|
-
async function getRecommend() {
|
|
97
|
+
async function getRecommend(content) {
|
|
59
98
|
if (!props.recommend)
|
|
60
99
|
return;
|
|
100
|
+
searchContent.value = content;
|
|
61
101
|
if (commonListRef.value && recentListRef.value && props.recommendCache)
|
|
62
102
|
return;
|
|
63
103
|
const list = await asyncQueue.addAsync(createParams(fieldKey.value, props.recommendCache));
|
|
@@ -125,11 +165,11 @@ function useUrlConfigOptions(props, valueRef) {
|
|
|
125
165
|
var _a, _b;
|
|
126
166
|
return (_b = (_a = props.urlConfig) == null ? void 0 : _a.valueKey) != null ? _b : "value";
|
|
127
167
|
});
|
|
168
|
+
const { searchContent, optionSearchFilter } = useSearchContent();
|
|
128
169
|
const remoteOptions = ref(null);
|
|
129
|
-
const lastSearch = ref("");
|
|
130
170
|
const { field, fieldKey } = useFormField();
|
|
131
171
|
const fetchData = useDebounceFn(async function(content) {
|
|
132
|
-
|
|
172
|
+
searchContent.value = content || "";
|
|
133
173
|
if (!props.urlConfig) {
|
|
134
174
|
return remoteOptions.value = null;
|
|
135
175
|
}
|
|
@@ -147,10 +187,10 @@ function useUrlConfigOptions(props, valueRef) {
|
|
|
147
187
|
}, 300);
|
|
148
188
|
const options = computed(() => {
|
|
149
189
|
if (remoteOptions.value)
|
|
150
|
-
return
|
|
190
|
+
return optionSearchFilter(remoteOptions.value, labelKey.value);
|
|
151
191
|
if (!Array.isArray(props.options))
|
|
152
192
|
return [];
|
|
153
|
-
return
|
|
193
|
+
return optionSearchFilter(props.options, labelKey.value);
|
|
154
194
|
});
|
|
155
195
|
const formItemDepsCollector = inject(InjectionFormItemDepsCollector);
|
|
156
196
|
watch(
|
|
@@ -183,12 +223,12 @@ function useAutographOptions(props, valueRef) {
|
|
|
183
223
|
var _a, _b;
|
|
184
224
|
return (_b = (_a = props.wordbook) == null ? void 0 : _a.value_key) != null ? _b : "value";
|
|
185
225
|
});
|
|
226
|
+
const { searchContent, optionSearchFilter } = useSearchContent();
|
|
186
227
|
const remoteOptions = ref(null);
|
|
187
|
-
const lastSearch = ref("");
|
|
188
228
|
const { fieldKey } = useFormField();
|
|
189
229
|
const { getSearchRequestInfo } = useFormRequest();
|
|
190
230
|
const fetchData = useDebounceFn(async function(content) {
|
|
191
|
-
|
|
231
|
+
searchContent.value = content || "";
|
|
192
232
|
if (!props.autograph || !props.wordbook) {
|
|
193
233
|
return remoteOptions.value = null;
|
|
194
234
|
}
|
|
@@ -211,10 +251,10 @@ function useAutographOptions(props, valueRef) {
|
|
|
211
251
|
}, 300);
|
|
212
252
|
const options = computed(() => {
|
|
213
253
|
if (remoteOptions.value)
|
|
214
|
-
return
|
|
254
|
+
return optionSearchFilter(remoteOptions.value, labelKey.value);
|
|
215
255
|
if (!Array.isArray(props.options))
|
|
216
256
|
return [];
|
|
217
|
-
return
|
|
257
|
+
return optionSearchFilter(props.options, labelKey.value);
|
|
218
258
|
});
|
|
219
259
|
watch(
|
|
220
260
|
() => props.wordbook,
|
|
@@ -231,4 +271,4 @@ function useAutographOptions(props, valueRef) {
|
|
|
231
271
|
return { labelKey, valueKey, options, fetchData };
|
|
232
272
|
}
|
|
233
273
|
|
|
234
|
-
export { useAutographOptions, useRecommendOptions, useUrlConfigOptions };
|
|
274
|
+
export { optionMatcherCache, useAutographOptions, useRecommendOptions, useUrlConfigOptions };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnyObject, ArrayAble
|
|
1
|
+
import { AnyObject, ArrayAble } from '../../../../../es/shared/types';
|
|
2
2
|
import { GeneralField } from '@formily/core';
|
|
3
3
|
import { FunctionalComponent, InjectionKey, VNode } from 'vue';
|
|
4
4
|
import { FieldItem, UrlConfig } from '../types';
|
|
@@ -14,9 +14,7 @@ export declare function createSlot(renderer: unknown, props: AnyObject, defaultR
|
|
|
14
14
|
};
|
|
15
15
|
export declare function createInputSlot(props: AnyObject, defaultRenderer?: (v: unknown) => unknown[]): import("vue").ComputedRef<Record<string, FunctionalComponent<{}, {}>>>;
|
|
16
16
|
export declare function presetRequestHandler(res: unknown): AnyObject[];
|
|
17
|
-
export declare
|
|
18
|
-
keyword?: string;
|
|
19
|
-
}): AnyObject[];
|
|
17
|
+
export declare const keywordMatcher: import("@vueuse/core").UseMemoizedFn<boolean, [text: unknown, keyword: unknown]>;
|
|
20
18
|
export declare function validateMessageParser(message: string, fieldItem: Omit<FieldItem, 'reactions'>): string;
|
|
21
19
|
export declare function combineExtendKey(fieldList: FieldItem[], values: AnyObject): AnyObject;
|
|
22
20
|
export declare function splitExtendKey(fieldList: FieldItem[], values: AnyObject): AnyObject;
|
|
@@ -138,20 +138,6 @@ const keywordMatcher = useMemoize(function(text, keyword) {
|
|
|
138
138
|
}, "");
|
|
139
139
|
}
|
|
140
140
|
});
|
|
141
|
-
function optionMatcherWithKeyword(options, input, key, matcherOption = {
|
|
142
|
-
keyword: "keyword"
|
|
143
|
-
}) {
|
|
144
|
-
if (!input)
|
|
145
|
-
return options;
|
|
146
|
-
return options.filter((option) => {
|
|
147
|
-
if (!isString(keyFor(option)))
|
|
148
|
-
return;
|
|
149
|
-
return keyFor(option).includes(input) || matcherOption.keyword && keywordMatcher(input, option[matcherOption.keyword]);
|
|
150
|
-
});
|
|
151
|
-
function keyFor(option) {
|
|
152
|
-
return option[key];
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
141
|
function validateMessageParser(message, fieldItem) {
|
|
156
142
|
if (!isString(message) || !message)
|
|
157
143
|
return "";
|
|
@@ -252,4 +238,4 @@ async function createUrlConfigParams({
|
|
|
252
238
|
};
|
|
253
239
|
}
|
|
254
240
|
|
|
255
|
-
export { combineExtendKey, createInputSlot, createSlot, createUrlConfigParams, formRenderLog, injectOrProvide, isNestedFieldType, isNestedType,
|
|
241
|
+
export { combineExtendKey, createInputSlot, createSlot, createUrlConfigParams, formRenderLog, injectOrProvide, isNestedFieldType, isNestedType, keywordMatcher, mergeDeepProperties, parseNumberFromMaybeString, presetRequestHandler, splitExtendKey, validateMessageParser };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.annotation-edit{align-items:center;color:#0067ee;cursor:pointer;display:inline-flex;font-size:16px;user-select:none}.annotation-edit.is-active{color:#ff9828}.annotation-edit__icon{align-items:center;display:inline-flex}.annotation-edit__textarea{min-width:200px}.annotation-edit__footer{align-items:center;display:flex;flex-wrap:nowrap;gap:8px;justify-content:space-between;opacity:.5}.annotation-edit__footer>div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.annotation-edit__footer>div:first-of-type{min-width:30%}.recommend-search__menu{min-height:100px}.recommend-search__menuRecommendList{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.recommend-search__menuRecommendList .n-tag{cursor:pointer}.recommend-search__recentRecommend{margin-bottom:8px}.recommend-search__recentRecommend>header{align-items:center;color:rgba(0,0,0,.4);display:flex;justify-content:space-between}.recommend-search__recentRecommend>header .n-icon:hover{color:rgba(0,0,0,.6);cursor:pointer}.recommend-search__commonRecommend{margin-bottom:8px}.recommend-search__commonRecommend>header{align-items:center;color:rgba(0,0,0,.4);display:flex;justify-content:space-between}.recommend-search__commonRecommend>header .n-icon:hover{color:rgba(0,0,0,.6);cursor:pointer}.recommend-search__option{align-items:center;border-radius:4px;cursor:pointer;display:flex;height:32px;justify-content:space-between;padding:0 8px}.recommend-search__optionText{max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recommend-search__option.is-active{color:var(--n-color)!important}.recommend-search__option.is-active .n-icon{font-size:20px}.recommend-search__option:hover{background:rgba(0,0,0,.03)}.recommend-search__optionContainer{margin:-8px -10px}.recommend-search__empty{align-items:center;color:rgba(0,0,0,.3);display:flex;height:100px;justify-content:center}.search-cascader__menuWrapper{display:flex;flex-wrap:nowrap;margin:-8px -14px}.search-cascader__input input{cursor:pointer!important}.search-cascader__option{align-items:center;border-radius:4px;box-sizing:border-box;display:flex;height:32px;justify-content:space-between;padding:0 8px 0 16px;width:100%}.search-cascader__option--active{background:#f8f8f8}.search-cascader__option:hover{background:#f5f5f5;cursor:pointer}.search-cascader__optionWrapper{background:#fff;height:256px;overflow-x:auto;width:calc(var(--menu-width)*1px)}.search-cascader__optionWrapper:not(:last-of-type){border:solid #e5e5e5;border-width:0 1px 0 0}.search-cascader__optionText{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 20px)}.search-cascader__option svg{color:#bfbfbf;flex-shrink:0;font-size:12px;width:20px}.search-cascader__option svg.rotate{animation:rotate 1s linear infinite}.search-cascader__emptyWrapper{align-items:center;background:#fff;box-sizing:border-box;display:flex;height:300px;justify-content:center;padding:16px;width:100%}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.form-render__wrapper{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr));max-height:var(--form-height);overflow-y:auto;position:relative}.form-render__formItem{grid-column:span min(var(--column),var(--form-item-column)) /span min(var(--column),var(--form-item-column))}.form-render__formItem .n-date-picker,.form-render__formItem .n-input-number{width:100%}.form-render__formItemLabel{align-items:center;display:inline-flex;justify-content:space-between;position:relative}.form-render__formItemLabel--operation{align-items:center;display:flex;gap:2px;position:absolute;right:0;top:50%;transform:translateY(-50%)}.form-render__formItemLabel--tooltip{font-size:0;line-height:1;width:16px}.form-render__formItemLabel--text{white-space:nowrap}.form-render__formItem .n-form-item-label{display:inline-flex}.form-render__formItem .n-form-item-label [annotation-hover-show=true]{visibility:hidden}.form-render__formItem .n-form-item-label:hover [annotation-hover-show=true]{visibility:visible}.form-render__linebar{grid-column:span min(var(--column),var(--column)) /span min(var(--column),var(--column))}.form-render__linebarHeader{align-items:center;background:#f2f2f2;border-radius:4px;cursor:pointer;display:flex;font-size:14px;font-weight:
|
|
1
|
+
.annotation-edit{align-items:center;color:#0067ee;cursor:pointer;display:inline-flex;font-size:16px;user-select:none}.annotation-edit.is-active{color:#ff9828}.annotation-edit__icon{align-items:center;display:inline-flex}.annotation-edit__textarea{min-width:200px}.annotation-edit__footer{align-items:center;display:flex;flex-wrap:nowrap;gap:8px;justify-content:space-between;opacity:.5}.annotation-edit__footer>div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.annotation-edit__footer>div:first-of-type{min-width:30%}.recommend-search__menu{min-height:100px}.recommend-search__menuRecommendList{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.recommend-search__menuRecommendList .n-tag{cursor:pointer}.recommend-search__recentRecommend{margin-bottom:8px}.recommend-search__recentRecommend>header{align-items:center;color:rgba(0,0,0,.4);display:flex;justify-content:space-between}.recommend-search__recentRecommend>header .n-icon:hover{color:rgba(0,0,0,.6);cursor:pointer}.recommend-search__commonRecommend{margin-bottom:8px}.recommend-search__commonRecommend>header{align-items:center;color:rgba(0,0,0,.4);display:flex;justify-content:space-between}.recommend-search__commonRecommend>header .n-icon:hover{color:rgba(0,0,0,.6);cursor:pointer}.recommend-search__option{align-items:center;border-radius:4px;cursor:pointer;display:flex;height:32px;justify-content:space-between;padding:0 8px}.recommend-search__optionText{max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recommend-search__option.is-active{color:var(--n-color)!important}.recommend-search__option.is-active .n-icon{font-size:20px}.recommend-search__option:hover{background:rgba(0,0,0,.03)}.recommend-search__optionContainer{margin:-8px -10px}.recommend-search__empty{align-items:center;color:rgba(0,0,0,.3);display:flex;height:100px;justify-content:center}.search-cascader__menuWrapper{display:flex;flex-wrap:nowrap;margin:-8px -14px}.search-cascader__input input{cursor:pointer!important}.search-cascader__option{align-items:center;border-radius:4px;box-sizing:border-box;display:flex;height:32px;justify-content:space-between;padding:0 8px 0 16px;width:100%}.search-cascader__option--active{background:#f8f8f8}.search-cascader__option:hover{background:#f5f5f5;cursor:pointer}.search-cascader__optionWrapper{background:#fff;height:256px;overflow-x:auto;width:calc(var(--menu-width)*1px)}.search-cascader__optionWrapper:not(:last-of-type){border:solid #e5e5e5;border-width:0 1px 0 0}.search-cascader__optionText{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 20px)}.search-cascader__option svg{color:#bfbfbf;flex-shrink:0;font-size:12px;width:20px}.search-cascader__option svg.rotate{animation:rotate 1s linear infinite}.search-cascader__emptyWrapper{align-items:center;background:#fff;box-sizing:border-box;display:flex;height:300px;justify-content:center;padding:16px;width:100%}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.form-render__wrapper{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr));max-height:var(--form-height);overflow-y:auto;position:relative}.form-render__formItem{grid-column:span min(var(--column),var(--form-item-column)) /span min(var(--column),var(--form-item-column))}.form-render__formItem .n-date-picker,.form-render__formItem .n-input-number{width:100%}.form-render__formItemLabel{align-items:center;display:inline-flex;justify-content:space-between;position:relative}.form-render__formItemLabel--operation{align-items:center;display:flex;gap:2px;position:absolute;right:0;top:50%;transform:translateY(-50%)}.form-render__formItemLabel--tooltip{font-size:0;line-height:1;width:16px}.form-render__formItemLabel--text{white-space:nowrap}.form-render__formItem .n-form-item-label{display:inline-flex}.form-render__formItem .n-form-item-label [annotation-hover-show=true]{visibility:hidden}.form-render__formItem .n-form-item-label:hover [annotation-hover-show=true]{visibility:visible}.form-render__linebar{grid-column:span min(var(--column),var(--column)) /span min(var(--column),var(--column))}.form-render__linebarHeader{align-items:center;background:#f2f2f2;border-radius:4px;cursor:pointer;display:flex;font-size:14px;font-weight:600;height:32px;justify-content:space-between;margin-bottom:8px;padding:0 16px}.form-render__linebarHeader>svg{color:rgba(33,33,33,.4);width:14px}.form-render__linebarHeaderTitle{align-items:center;display:flex;gap:4px;vertical-align:middle}.form-render__linebarHeaderTitle svg{height:16px;transform:translateY(-1px)}.form-render__linebarHeader--disabled{cursor:auto}.form-render__linebarItem{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr))}.form-render__linebreaks{grid-column:span min(var(--column),var(--form-item-column)) /span min(var(--column),var(--form-item-column))}.form-render__inputGroup{align-items:flex-start;display:flex;grid-column:span min(var(--column),var(--column)) /span min(var(--column),var(--column))}.form-render__inputGroup>div{flex:1}.form-render__inputGroup>div:not(:last-of-type) .n-base-selection__border,.form-render__inputGroup>div:not(:last-of-type) .n-input__border{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0}.form-render__inputGroup>div:last-of-type .n-base-selection__border,.form-render__inputGroup>div:last-of-type .n-input__border{border-bottom-left-radius:0;border-top-left-radius:0}.form-render__inputGroup .n-form-item--left-labelled:not(:first-of-type)>label{display:none}.form-render__combination{width:100%}.form-render__combinationHeader{display:flex;gap:12px}.form-render__combinationHeader>h3{font-size:16px;font-weight:700;margin:0;padding:0}.form-render__combinationHeader .n-button__icon{font-size:14px;margin:0 2px 0 0}.form-render__combinationHeaderText{font-size:16px;font-weight:500}.form-render__combinationClose{font-size:16px;height:14px;position:absolute;right:5px;top:5px;width:14px}.form-render__combinationContentJson{position:relative}.form-render__combinationContent{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr));position:relative}.form-render__complex{width:100%}.form-render__complexContent--grid{align-items:start;display:grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr))}.form-render__complexContent--flex{display:flex!important;gap:0 8px}.form-render__selectMenu .n-scrollbar-rail__scrollbar{display:none!important}.form-render__selectMenu .n-virtual-list::-webkit-scrollbar,.form-render__selectMenu .n-virtual-list::-webkit-scrollbar-thumb{display:unset!important;height:6px;width:6px}.form-render__selectMenu .n-virtual-list::-webkit-scrollbar-thumb{background:#bfbfbf;border-radius:4px}.form-render__selectMenu .v-vl-items{min-width:100%;width:max-content}.form-render__selectOption .n-base-select-option__content{overflow:visible!important;text-overflow:unset!important;word-break:keep-all!important}.form-render__labelField{align-items:start;display:grid!important;display:inline-grid!important;gap:0 16px;grid-template-columns:repeat(var(--column),minmax(0,1fr));grid-template-columns:repeat(var(--column),auto)!important;margin-left:16px}.form-render__labelField .n-form-item{display:inline-grid}.form-render__labelField label.n-form-item-label.n-form-item-label--left-mark{align-items:center}.form-render__labelField .n-checkbox[aria-checked=false] .n-checkbox-box{background-color:transparent}.form-render__labelField .n-checkbox[aria-checked=false] .n-checkbox-icon .check-icon{opacity:0}.form-render__labelField .n-checkbox[aria-checked=false] .n-checkbox-box__border{border:var(--n-border)}.form-render .form-render__formItem .n-checkbox,.form-render .form-render__formItem .n-radio{align-items:center}.form-render .form-render__formItem .n-radio-input{left:auto;right:auto}.form-render .form-render__formItem .n-checkbox-group>.n-space:not([vertical-space=true]),.form-render .form-render__formItem .n-radio-group>.n-space:not([vertical-space=true]){align-items:center!important}.form-render .form-render__formItem .n-checkbox__label{align-items:center;display:inline-flex}
|