@robot-admin/naive-ui-components 0.17.0 → 0.17.2
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/CHANGELOG.md +31 -0
- package/README.md +12 -11
- package/README_EN.md +1 -0
- package/dist/C_AntV.css +105 -105
- package/dist/C_AntV2.cjs +3 -3
- package/dist/C_AntV2.js +3 -3
- package/dist/C_AudioPlayer.css +53 -53
- package/dist/C_AudioPlayer2.cjs +1 -1
- package/dist/C_AudioPlayer2.js +1 -1
- package/dist/C_Barcode.css +6 -6
- package/dist/C_Barcode2.cjs +1 -1
- package/dist/C_Barcode2.js +1 -1
- package/dist/C_Chat.css +269 -185
- package/dist/C_Chat2.cjs +1 -1
- package/dist/C_Chat2.js +1 -1
- package/dist/C_Code.css +26 -26
- package/dist/C_Code2.cjs +1 -1
- package/dist/C_Code2.js +1 -1
- package/dist/C_Draggable2.cjs +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_FilePreview.css +96 -57
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_FullCalendar.css +10 -11
- package/dist/C_FullCalendar2.cjs +1 -1
- package/dist/C_FullCalendar2.js +1 -1
- package/dist/C_GlobalSearch.css +140 -118
- package/dist/C_GlobalSearch2.cjs +1 -1
- package/dist/C_GlobalSearch2.js +1 -1
- package/dist/C_ImageCropper.css +10 -10
- package/dist/C_ImageCropper2.cjs +1 -1
- package/dist/C_ImageCropper2.js +1 -1
- package/dist/C_Login.css +79 -79
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Map.css +10 -10
- package/dist/C_Map2.cjs +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_OrgChart.css +28 -4
- package/dist/C_OrgChart2.cjs +1 -1
- package/dist/C_OrgChart2.js +1 -1
- package/dist/C_QRCode2.cjs +1 -1
- package/dist/C_QRCode2.js +1 -1
- package/dist/C_Signature.css +15 -15
- package/dist/C_Signature2.cjs +1 -1
- package/dist/C_Signature2.js +1 -1
- package/dist/C_SplitPane.cjs +1 -1
- package/dist/C_SplitPane.css +231 -77
- package/dist/C_SplitPane.js +1 -1
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Table.base.css +110 -117
- package/dist/C_Table.css +110 -117
- package/dist/C_Table.d.ts +1 -0
- package/dist/C_Tabs.css +18 -18
- package/dist/C_TagsView.css +51 -51
- package/dist/C_TagsView2.cjs +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_Transfer.css +93 -84
- package/dist/C_Transfer2.cjs +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Tree.d.ts +1 -0
- package/dist/C_Upload.css +5 -5
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_VideoPlayer.css +20 -20
- package/dist/C_VideoPlayer2.cjs +4 -3
- package/dist/C_VideoPlayer2.js +4 -3
- package/dist/C_VtableGantt.css +44 -28
- package/dist/C_VtableGantt2.cjs +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_WaterFall.css +29 -29
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WorkFlow.css +111 -111
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/constants3.d.cts +2 -2
- package/dist/constants3.d.ts +2 -2
- package/dist/constants4.d.cts +5 -5
- package/dist/constants4.d.ts +5 -5
- package/dist/constants5.d.cts +12 -15
- package/dist/constants5.d.ts +12 -15
- package/dist/data.d.cts +9 -9
- package/dist/data.d.ts +9 -9
- package/dist/data2.cjs +1 -1
- package/dist/data2.js +1 -1
- package/dist/helpers.cjs +1 -1
- package/dist/helpers.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.vue.d.cts +4 -4
- package/dist/index.vue.d.ts +4 -4
- package/dist/index10.vue.d.cts +2 -2
- package/dist/index10.vue.d.ts +2 -2
- package/dist/index11.vue.d.cts +2 -2
- package/dist/index11.vue.d.ts +5 -5
- package/dist/index12.vue.d.cts +5 -5
- package/dist/index13.vue.d.ts +1 -1
- package/dist/index14.vue.d.cts +1 -1
- package/dist/index14.vue.d.ts +5 -5
- package/dist/index15.vue.d.cts +5 -5
- package/dist/index15.vue.d.ts +1 -1
- package/dist/index16.vue.d.cts +1 -1
- package/dist/index16.vue.d.ts +1 -1
- package/dist/index17.vue.d.cts +1 -1
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.cts +1 -1
- package/dist/index18.vue.d.ts +4 -4
- package/dist/index19.vue.d.cts +4 -4
- package/dist/index19.vue.d.ts +2 -2
- package/dist/index2.vue.d.cts +3 -3
- package/dist/index2.vue.d.ts +3 -3
- package/dist/index20.vue.d.cts +5 -1
- package/dist/index20.vue.d.ts +5 -1
- package/dist/index21.vue.d.cts +2 -2
- package/dist/index21.vue.d.ts +2 -2
- package/dist/index22.vue.d.cts +2 -2
- package/dist/index22.vue.d.ts +2 -2
- package/dist/index23.vue.d.cts +2 -2
- package/dist/index23.vue.d.ts +2 -2
- package/dist/index25.vue.d.cts +9 -4
- package/dist/index25.vue.d.ts +9 -4
- package/dist/index27.vue.d.cts +2 -2
- package/dist/index27.vue.d.ts +2 -2
- package/dist/index28.vue.d.cts +6 -2
- package/dist/index28.vue.d.ts +6 -2
- package/dist/index3.vue.d.cts +4 -4
- package/dist/index3.vue.d.ts +4 -4
- package/dist/index4.vue.d.cts +2 -2
- package/dist/index6.vue.d.ts +8 -5
- package/dist/index7.vue.d.cts +8 -5
- package/dist/index8.vue.d.ts +4 -6
- package/dist/index9.vue.d.cts +4 -6
- package/dist/index9.vue.d.ts +2 -2
- package/dist/mapUtils.d.cts +4 -4
- package/dist/mapUtils.d.ts +4 -4
- package/dist/style.css +1559 -1219
- package/dist/useCalendarEvents.d.cts +10 -0
- package/dist/useCalendarEvents.d.ts +10 -0
- package/dist/useCropperCore.d.cts +10 -10
- package/dist/useCropperCore.d.ts +10 -10
- package/dist/useDraggableLayout.d.cts +16 -14
- package/dist/useDraggableLayout.d.ts +16 -14
- package/dist/useEdgeInteraction.d.cts +4 -2
- package/dist/useEdgeInteraction.d.ts +4 -2
- package/dist/useFullscreen.d.cts +9 -3
- package/dist/useFullscreen.d.ts +9 -3
- package/dist/useGlobalSearch.d.cts +9 -4
- package/dist/useGlobalSearch.d.ts +9 -4
- package/dist/useInfiniteScroll.d.cts +6 -3
- package/dist/useInfiniteScroll.d.ts +6 -3
- package/dist/useQRCode.d.cts +2 -2
- package/dist/useQRCode.d.ts +2 -2
- package/dist/useSearchState.d.cts +2 -2
- package/dist/useSearchState.d.ts +2 -2
- package/dist/useSignatureHistory.d.cts +5 -5
- package/dist/useSignatureHistory.d.ts +5 -5
- package/dist/useSplitResize.d.cts +3 -3
- package/dist/useSplitResize.d.ts +3 -3
- package/dist/useTableQuery.cjs +3 -3
- package/dist/useTableQuery.d.cts +15 -5
- package/dist/useTableQuery.d.ts +15 -5
- package/dist/useTableQuery.js +3 -3
- package/dist/useTimeSelection.d.cts +2 -2
- package/dist/useTimeSelection.d.ts +2 -2
- package/dist/useWorkflowValidation.d.cts +8 -3
- package/dist/useWorkflowValidation.d.ts +8 -3
- package/dist/verification.d.cts +2 -2
- package/dist/verification.d.ts +2 -2
- package/docs/component-review-20261019.md +55 -0
- package/docs/components.en.md +4 -0
- package/docs/components.md +4 -0
- package/docs/guides/runtime-performance.md +38 -0
- package/docs/guides/split-pane.en.md +4 -0
- package/docs/guides/split-pane.md +4 -0
- package/docs/guides/table-density.md +26 -0
- package/docs/guides/transfer.md +11 -0
- package/docs/runtime-review-20261019.md +41 -0
- package/package.json +4 -2
package/dist/constants5.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as vue from "vue";
|
|
2
|
-
import { Ref, ShallowRef } from "vue";
|
|
2
|
+
import { MaybeRefOrGetter, Ref, ShallowRef } from "vue";
|
|
3
3
|
import * as xgplayer from "xgplayer";
|
|
4
4
|
import { IDefinition, IPlayerOptions } from "xgplayer";
|
|
5
5
|
|
|
@@ -257,32 +257,32 @@ interface VideoPlayerExpose {
|
|
|
257
257
|
type PlayerInstance = InstanceType<typeof xgplayer.default>;
|
|
258
258
|
//#endregion
|
|
259
259
|
//#region src/components/C_VideoPlayer/index.vue.d.ts
|
|
260
|
-
declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
260
|
+
declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
|
|
261
|
+
error: (error: Error) => any;
|
|
261
262
|
ready: () => any;
|
|
262
263
|
ended: () => any;
|
|
263
|
-
error: (error: Error) => any;
|
|
264
264
|
stateChange: (state: PlayerState) => any;
|
|
265
|
-
timeUpdate: (currentTime: number, duration: number) => any;
|
|
266
265
|
qualityChange: (quality: QualityLevel) => any;
|
|
267
266
|
rateChange: (rate: number) => any;
|
|
268
267
|
fullscreenChange: (isFullscreen: boolean) => any;
|
|
269
268
|
bookmarkChange: (bookmarks: Bookmark[]) => any;
|
|
270
|
-
quizAnswer: (quizId: string, answer: string | string[], isCorrect: boolean) => any;
|
|
271
269
|
chapterChange: (chapter: Chapter) => any;
|
|
272
270
|
progressUpdate: (data: ProgressData) => any;
|
|
271
|
+
quizAnswer: (quizId: string, answer: string | string[], isCorrect: boolean) => any;
|
|
272
|
+
timeUpdate: (currentTime: number, duration: number) => any;
|
|
273
273
|
}, string, vue.PublicProps, Readonly<VideoPlayerProps> & Readonly<{
|
|
274
|
+
onError?: ((error: Error) => any) | undefined;
|
|
274
275
|
onReady?: (() => any) | undefined;
|
|
275
276
|
onEnded?: (() => any) | undefined;
|
|
276
|
-
onError?: ((error: Error) => any) | undefined;
|
|
277
277
|
onStateChange?: ((state: PlayerState) => any) | undefined;
|
|
278
|
-
onTimeUpdate?: ((currentTime: number, duration: number) => any) | undefined;
|
|
279
278
|
onQualityChange?: ((quality: QualityLevel) => any) | undefined;
|
|
280
279
|
onRateChange?: ((rate: number) => any) | undefined;
|
|
281
280
|
onFullscreenChange?: ((isFullscreen: boolean) => any) | undefined;
|
|
282
281
|
onBookmarkChange?: ((bookmarks: Bookmark[]) => any) | undefined;
|
|
283
|
-
onQuizAnswer?: ((quizId: string, answer: string | string[], isCorrect: boolean) => any) | undefined;
|
|
284
282
|
onChapterChange?: ((chapter: Chapter) => any) | undefined;
|
|
285
283
|
onProgressUpdate?: ((data: ProgressData) => any) | undefined;
|
|
284
|
+
onQuizAnswer?: ((quizId: string, answer: string | string[], isCorrect: boolean) => any) | undefined;
|
|
285
|
+
onTimeUpdate?: ((currentTime: number, duration: number) => any) | undefined;
|
|
286
286
|
}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
287
287
|
declare const _default: typeof __VLS_export;
|
|
288
288
|
//#endregion
|
|
@@ -330,7 +330,7 @@ declare function usePlaybackControl(playerRef: ShallowRef<PlayerInstance | null>
|
|
|
330
330
|
* - localStorage 持久化
|
|
331
331
|
* - 按时间排序
|
|
332
332
|
*/
|
|
333
|
-
declare function useBookmarks(url: Ref<string>, currentTime: Ref<number>, seekFn: (time: number) => void, initialBookmarks?: Bookmark[]): {
|
|
333
|
+
declare function useBookmarks(url: Ref<string>, currentTime: Ref<number>, seekFn: (time: number) => void, initialBookmarks?: MaybeRefOrGetter<Bookmark[] | undefined>): {
|
|
334
334
|
bookmarks: Ref<{
|
|
335
335
|
id: string;
|
|
336
336
|
time: number;
|
|
@@ -374,12 +374,8 @@ declare function useChapters(chapters: Ref<Chapter[]>, currentTime: Ref<number>,
|
|
|
374
374
|
};
|
|
375
375
|
//#endregion
|
|
376
376
|
//#region src/components/C_VideoPlayer/composables/useSubtitle.d.ts
|
|
377
|
-
/**
|
|
378
|
-
|
|
379
|
-
* - fetch VTT → 解析 → 按当前播放时间匹配 cue
|
|
380
|
-
* - 提供切换 / 关闭能力
|
|
381
|
-
*/
|
|
382
|
-
declare function useSubtitle(playerRef: ShallowRef<PlayerInstance | null>, subtitles?: SubtitleTrack[], currentTime?: Ref<number>): {
|
|
377
|
+
/** 字幕管理:复用轨道请求,且迟到的请求不能覆盖新的语言选择。 */
|
|
378
|
+
declare function useSubtitle(playerRef: ShallowRef<PlayerInstance | null>, subtitles?: MaybeRefOrGetter<SubtitleTrack[] | undefined>, currentTime?: Ref<number>): {
|
|
383
379
|
activeLanguage: Ref<string | null, string | null>;
|
|
384
380
|
subtitleList: Ref<{
|
|
385
381
|
language: string;
|
|
@@ -396,6 +392,7 @@ declare function useSubtitle(playerRef: ShallowRef<PlayerInstance | null>, subti
|
|
|
396
392
|
hasSubtitles: vue.ComputedRef<boolean>;
|
|
397
393
|
isLoading: Ref<boolean, boolean>;
|
|
398
394
|
initSubtitles: () => Promise<void>;
|
|
395
|
+
resetSubtitles: () => void;
|
|
399
396
|
switchSubtitle: (language: string) => Promise<void>;
|
|
400
397
|
closeSubtitle: () => void;
|
|
401
398
|
toggleSubtitle: () => void;
|
package/dist/data.d.cts
CHANGED
|
@@ -65,28 +65,28 @@ type __VLS_Slots = {} & { [K in NonNullable<typeof __VLS_37>]?: (props: typeof _
|
|
|
65
65
|
declare const __VLS_base: vue.DefineComponent<CTabsProps, {
|
|
66
66
|
activeValue: vue.WritableComputedRef<TabsValue | null, TabsValue | null>;
|
|
67
67
|
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
|
|
68
|
-
add: () => any;
|
|
69
68
|
"update:modelValue": (value: TabsValue) => any;
|
|
70
69
|
change: (value: TabsValue, item: TabsItem | undefined) => any;
|
|
70
|
+
add: () => any;
|
|
71
71
|
close: (value: TabsValue) => any;
|
|
72
72
|
}, string, vue.PublicProps, Readonly<CTabsProps> & Readonly<{
|
|
73
|
-
onAdd?: (() => any) | undefined;
|
|
74
73
|
"onUpdate:modelValue"?: ((value: TabsValue) => any) | undefined;
|
|
75
74
|
onChange?: ((value: TabsValue, item: TabsItem | undefined) => any) | undefined;
|
|
75
|
+
onAdd?: (() => any) | undefined;
|
|
76
76
|
onClose?: ((value: TabsValue) => any) | undefined;
|
|
77
77
|
}>, {
|
|
78
|
-
size: TabsSize;
|
|
79
|
-
type: TabsType;
|
|
80
78
|
modelValue: TabsValue | null;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
placement: TabsPlacement;
|
|
79
|
+
type: TabsType;
|
|
80
|
+
size: TabsSize;
|
|
84
81
|
justifyContent: TabsJustifyContent;
|
|
85
|
-
|
|
82
|
+
items: readonly TabsItem[];
|
|
86
83
|
closable: boolean;
|
|
84
|
+
displayDirective: TabsDisplayDirective;
|
|
85
|
+
animated: boolean;
|
|
86
|
+
defaultValue: TabsValue | null;
|
|
87
|
+
placement: TabsPlacement;
|
|
87
88
|
addable: boolean;
|
|
88
89
|
tabsOnly: boolean;
|
|
89
|
-
displayDirective: TabsDisplayDirective;
|
|
90
90
|
paneClass: string;
|
|
91
91
|
paneStyle: string | vue.CSSProperties;
|
|
92
92
|
beforeChange: (target: TabsValue, current: TabsValue | null) => boolean | Promise<boolean>;
|
package/dist/data.d.ts
CHANGED
|
@@ -65,28 +65,28 @@ type __VLS_Slots = {} & { [K in NonNullable<typeof __VLS_37>]?: (props: typeof _
|
|
|
65
65
|
declare const __VLS_base: vue.DefineComponent<CTabsProps, {
|
|
66
66
|
activeValue: vue.WritableComputedRef<TabsValue | null, TabsValue | null>;
|
|
67
67
|
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
|
|
68
|
-
add: () => any;
|
|
69
68
|
"update:modelValue": (value: TabsValue) => any;
|
|
70
69
|
change: (value: TabsValue, item: TabsItem | undefined) => any;
|
|
70
|
+
add: () => any;
|
|
71
71
|
close: (value: TabsValue) => any;
|
|
72
72
|
}, string, vue.PublicProps, Readonly<CTabsProps> & Readonly<{
|
|
73
|
-
onAdd?: (() => any) | undefined;
|
|
74
73
|
"onUpdate:modelValue"?: ((value: TabsValue) => any) | undefined;
|
|
75
74
|
onChange?: ((value: TabsValue, item: TabsItem | undefined) => any) | undefined;
|
|
75
|
+
onAdd?: (() => any) | undefined;
|
|
76
76
|
onClose?: ((value: TabsValue) => any) | undefined;
|
|
77
77
|
}>, {
|
|
78
|
-
size: TabsSize;
|
|
79
|
-
type: TabsType;
|
|
80
78
|
modelValue: TabsValue | null;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
placement: TabsPlacement;
|
|
79
|
+
type: TabsType;
|
|
80
|
+
size: TabsSize;
|
|
84
81
|
justifyContent: TabsJustifyContent;
|
|
85
|
-
|
|
82
|
+
items: readonly TabsItem[];
|
|
86
83
|
closable: boolean;
|
|
84
|
+
displayDirective: TabsDisplayDirective;
|
|
85
|
+
animated: boolean;
|
|
86
|
+
defaultValue: TabsValue | null;
|
|
87
|
+
placement: TabsPlacement;
|
|
87
88
|
addable: boolean;
|
|
88
89
|
tabsOnly: boolean;
|
|
89
|
-
displayDirective: TabsDisplayDirective;
|
|
90
90
|
paneClass: string;
|
|
91
91
|
paneStyle: string | vue.CSSProperties;
|
|
92
92
|
beforeChange: (target: TabsValue, current: TabsValue | null) => boolean | Promise<boolean>;
|
package/dist/data2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={key:1,class:`c-tabs__label`},a=(0,n.defineComponent)({name:`C_Tabs`,__name:`index`,props:{modelValue:{default:void 0},defaultValue:{default:void 0},items:{default:()=>[]},type:{default:`line`},size:{default:`small`},placement:{default:`top`},justifyContent:{default:`start`},animated:{type:Boolean,default:!0},closable:{type:Boolean,default:!1},addable:{type:Boolean,default:!1},tabsOnly:{type:Boolean,default:!1},displayDirective:{default:`show:lazy`},paneClass:{default:void 0},paneStyle:{default:void 0},beforeChange:{type:Function,default:void 0}},emits:[`update:modelValue`,`change`,`close`,`add`],setup(t,{expose:a,emit:o}){let s=t,c=o,l=(0,n.defineComponent)({name:`CTabsRenderNode`,props:{render:{type:Function,required:!0},item:{type:Object,required:!0}},setup(e){return()=>e.render(e.item)}}),u=()=>s.items.find(e=>!e.disabled)?.key??null,
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={key:1,class:`c-tabs__label`},a=(0,n.defineComponent)({name:`C_Tabs`,__name:`index`,props:{modelValue:{default:void 0},defaultValue:{default:void 0},items:{default:()=>[]},type:{default:`line`},size:{default:`small`},placement:{default:`top`},justifyContent:{default:`start`},animated:{type:Boolean,default:!0},closable:{type:Boolean,default:!1},addable:{type:Boolean,default:!1},tabsOnly:{type:Boolean,default:!1},displayDirective:{default:`show:lazy`},paneClass:{default:void 0},paneStyle:{default:void 0},beforeChange:{type:Function,default:void 0}},emits:[`update:modelValue`,`change`,`close`,`add`],setup(t,{expose:a,emit:o}){let s=t,c=o,l=(0,n.defineComponent)({name:`CTabsRenderNode`,props:{render:{type:Function,required:!0},item:{type:Object,required:!0}},setup(e){return()=>e.render(e.item)}}),u=e=>e!=null&&s.items.some(t=>t.key===e&&!t.disabled),d=()=>u(s.defaultValue)?s.defaultValue:s.items.find(e=>!e.disabled)?.key??null,f=(0,n.ref)(d()),p=0,m=!1,h=(0,n.computed)({get:()=>{let e=s.modelValue===void 0?f.value:s.modelValue;return e===null||u(e)?e:d()},set:e=>{e!==null&&!u(e)||h.value!==e&&(s.modelValue===void 0&&(f.value=e),e!==null&&(c(`update:modelValue`,e),c(`change`,e,s.items.find(t=>t.key===e))))}}),g=(0,n.computed)(()=>h.value),_=e=>{h.value=e},v=async(e,t)=>{let n=++p;if(!u(e))return!1;try{return(!s.beforeChange||await s.beforeChange(e,t??null)!==!1)&&!m&&n===p&&u(e)&&h.value===(t??null)}catch{return!1}},y=e=>`pane-${String(e.key)}`;return(0,n.watch)([()=>s.modelValue,()=>s.defaultValue,()=>s.items.map(e=>[e.key,e.disabled])],()=>{let e=s.modelValue===void 0?f.value:s.modelValue;if(s.modelValue!==void 0&&(f.value=s.modelValue),e===null&&s.modelValue===null||u(e))return;let t=d();e!==t&&(p+=1,s.modelValue===void 0&&(f.value=t),t!==null&&(c(`update:modelValue`,t),c(`change`,t,s.items.find(e=>e.key===t))))},{deep:!0,immediate:!0}),(0,n.onBeforeUnmount)(()=>{m=!0,p+=1}),a({activeValue:h}),(a,o)=>((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NTabs),{value:g.value,"onUpdate:value":_,class:(0,n.normalizeClass)([`c-tabs`,[`is-${t.type}`,{"is-tabs-only":t.tabsOnly}]]),type:t.type,size:t.size,placement:t.placement,"justify-content":t.justifyContent,animated:t.animated,closable:t.closable,addable:t.addable,"on-before-leave":v,onClose:o[0]||=e=>c(`close`,e),onAdd:o[1]||=e=>c(`add`)},{default:(0,n.withCtx)(()=>[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.items,o=>((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NTabPane),{key:o.key,name:o.key,disabled:o.disabled,closable:o.closable,"display-directive":t.displayDirective,class:(0,n.normalizeClass)(t.paneClass),style:(0,n.normalizeStyle)(t.paneStyle)},{tab:(0,n.withCtx)(()=>[(0,n.renderSlot)(a.$slots,`tab`,{item:o,active:h.value===o.key},()=>[o.renderTab?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(l),{key:0,render:o.renderTab,item:o},null,8,[`render`,`item`])):((0,n.openBlock)(),(0,n.createElementBlock)(`span`,i,[o.icon?((0,n.openBlock)(),(0,n.createBlock)(e.t,{key:0,class:`c-tabs__icon`,name:o.icon,size:14},null,8,[`name`])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(o.label),1),o.badge===void 0?(0,n.createCommentVNode)(`v-if`,!0):((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NBadge),{key:1,class:`c-tabs__badge`,value:o.badge,type:o.badgeType||`info`},null,8,[`value`,`type`]))]))],!0)]),default:(0,n.withCtx)(()=>[t.tabsOnly?(0,n.createCommentVNode)(`v-if`,!0):(0,n.renderSlot)(a.$slots,y(o),{item:o,active:h.value===o.key},()=>[o.render?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(l),{key:0,render:o.render,item:o},null,8,[`render`,`item`])):(0,n.renderSlot)(a.$slots,`pane`,{item:o,active:h.value===o.key},void 0,!0,1)],!0,0)]),_:2},1032,[`name`,`disabled`,`closable`,`display-directive`,`class`,`style`]))),128))]),_:3},8,[`value`,`class`,`type`,`size`,`placement`,`justify-content`,`animated`,`closable`,`addable`]))}});var o=t.t(a,[[`__scopeId`,`data-v-2d475220`]]);function s(e){let t=new Set;for(let n of e){if(typeof n.key!=`string`&&typeof n.key!=`number`)throw TypeError(`C_Tabs 的 item.key 必须是字符串或数字`);if(typeof n.key==`string`&&n.key.trim().length===0)throw TypeError(`C_Tabs 的 item.key 不能为空`);if(t.has(n.key))throw RangeError(`C_Tabs 存在重复 key: ${String(n.key)}`);if(typeof n.label!=`string`||n.label.trim().length===0)throw TypeError(`C_Tabs 的 ${String(n.key)} 缺少有效 label`);t.add(n.key)}return e}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
|
package/dist/data2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,defineComponent as c,normalizeClass as l,normalizeStyle as u,
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,defineComponent as c,normalizeClass as l,normalizeStyle as u,onBeforeUnmount as d,openBlock as f,ref as p,renderList as m,renderSlot as h,toDisplayString as g,unref as _,watch as v,withCtx as y}from"vue";import{NBadge as b,NTabPane as x,NTabs as S}from"naive-ui";const C={key:1,class:`c-tabs__label`};var w=t(c({name:`C_Tabs`,__name:`index`,props:{modelValue:{default:void 0},defaultValue:{default:void 0},items:{default:()=>[]},type:{default:`line`},size:{default:`small`},placement:{default:`top`},justifyContent:{default:`start`},animated:{type:Boolean,default:!0},closable:{type:Boolean,default:!1},addable:{type:Boolean,default:!1},tabsOnly:{type:Boolean,default:!1},displayDirective:{default:`show:lazy`},paneClass:{default:void 0},paneStyle:{default:void 0},beforeChange:{type:Function,default:void 0}},emits:[`update:modelValue`,`change`,`close`,`add`],setup(t,{expose:w,emit:T}){let E=t,D=T,O=c({name:`CTabsRenderNode`,props:{render:{type:Function,required:!0},item:{type:Object,required:!0}},setup(e){return()=>e.render(e.item)}}),k=e=>e!=null&&E.items.some(t=>t.key===e&&!t.disabled),A=()=>k(E.defaultValue)?E.defaultValue:E.items.find(e=>!e.disabled)?.key??null,j=p(A()),M=0,N=!1,P=r({get:()=>{let e=E.modelValue===void 0?j.value:E.modelValue;return e===null||k(e)?e:A()},set:e=>{e!==null&&!k(e)||P.value!==e&&(E.modelValue===void 0&&(j.value=e),e!==null&&(D(`update:modelValue`,e),D(`change`,e,E.items.find(t=>t.key===e))))}}),F=r(()=>P.value),I=e=>{P.value=e},L=async(e,t)=>{let n=++M;if(!k(e))return!1;try{return(!E.beforeChange||await E.beforeChange(e,t??null)!==!1)&&!N&&n===M&&k(e)&&P.value===(t??null)}catch{return!1}},R=e=>`pane-${String(e.key)}`;return v([()=>E.modelValue,()=>E.defaultValue,()=>E.items.map(e=>[e.key,e.disabled])],()=>{let e=E.modelValue===void 0?j.value:E.modelValue;if(E.modelValue!==void 0&&(j.value=E.modelValue),e===null&&E.modelValue===null||k(e))return;let t=A();e!==t&&(M+=1,E.modelValue===void 0&&(j.value=t),t!==null&&(D(`update:modelValue`,t),D(`change`,t,E.items.find(e=>e.key===t))))},{deep:!0,immediate:!0}),d(()=>{N=!0,M+=1}),w({activeValue:P}),(r,c)=>(f(),i(_(S),{value:F.value,"onUpdate:value":I,class:l([`c-tabs`,[`is-${t.type}`,{"is-tabs-only":t.tabsOnly}]]),type:t.type,size:t.size,placement:t.placement,"justify-content":t.justifyContent,animated:t.animated,closable:t.closable,addable:t.addable,"on-before-leave":L,onClose:c[0]||=e=>D(`close`,e),onAdd:c[1]||=e=>D(`add`)},{default:y(()=>[(f(!0),o(n,null,m(t.items,n=>(f(),i(_(x),{key:n.key,name:n.key,disabled:n.disabled,closable:n.closable,"display-directive":t.displayDirective,class:l(t.paneClass),style:u(t.paneStyle)},{tab:y(()=>[h(r.$slots,`tab`,{item:n,active:P.value===n.key},()=>[n.renderTab?(f(),i(_(O),{key:0,render:n.renderTab,item:n},null,8,[`render`,`item`])):(f(),o(`span`,C,[n.icon?(f(),i(e,{key:0,class:`c-tabs__icon`,name:n.icon,size:14},null,8,[`name`])):a(`v-if`,!0),s(`span`,null,g(n.label),1),n.badge===void 0?a(`v-if`,!0):(f(),i(_(b),{key:1,class:`c-tabs__badge`,value:n.badge,type:n.badgeType||`info`},null,8,[`value`,`type`]))]))],!0)]),default:y(()=>[t.tabsOnly?a(`v-if`,!0):h(r.$slots,R(n),{item:n,active:P.value===n.key},()=>[n.render?(f(),i(_(O),{key:0,render:n.render,item:n},null,8,[`render`,`item`])):h(r.$slots,`pane`,{item:n,active:P.value===n.key},void 0,!0,1)],!0,0)]),_:2},1032,[`name`,`disabled`,`closable`,`display-directive`,`class`,`style`]))),128))]),_:3},8,[`value`,`class`,`type`,`size`,`placement`,`justify-content`,`animated`,`closable`,`addable`]))}}),[[`__scopeId`,`data-v-2d475220`]]);function T(e){let t=new Set;for(let n of e){if(typeof n.key!=`string`&&typeof n.key!=`number`)throw TypeError(`C_Tabs 的 item.key 必须是字符串或数字`);if(typeof n.key==`string`&&n.key.trim().length===0)throw TypeError(`C_Tabs 的 item.key 不能为空`);if(t.has(n.key))throw RangeError(`C_Tabs 存在重复 key: ${String(n.key)}`);if(typeof n.label!=`string`||n.label.trim().length===0)throw TypeError(`C_Tabs 的 ${String(n.key)} 缺少有效 label`);t.add(n.key)}return e}export{w as n,T as t};
|
package/dist/helpers.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./density.cjs`),t=require(`./useComponentLocale.cjs`),n=require(`./feedback.cjs`),r=require(`./C_Icon2.cjs`),i=require(`./export-helper.cjs`),a=require(`./data.cjs`);let o=require(`vue`),s=require(`naive-ui`),c=require(`@robot-admin/form-validate`);const l=Symbol(`c-form-global-config`);function u(){return(0,o.getCurrentInstance)()?(0,o.inject)(l,{}):{}}function d(e,t){let n=e??{},r=(e,t)=>e||t?{...e,...t}:void 0;return{...t,...n,grid:r(t.grid,n.grid),inline:r(t.inline,n.inline),card:r(t.card,n.card),tabs:r(t.tabs,n.tabs),steps:r(t.steps,n.steps),dynamic:r(t.dynamic,n.dynamic),custom:r(t.custom,n.custom)}}const f={layout:`default`,labelPlacement:`left`,labelWidth:`auto`,size:`medium`,density:`default`,disabled:!1,readonly:!1,showActions:!0,validateOnChange:!1,preserveRemovedFields:!1,submitText:``,resetText:``,submitSuccessText:``,resetSuccessText:``,mode:`create`},p=[`steps`,`custom`];function m(t){return{...f,...t,size:t?.size??e.t(t?.density).size}}function h(e){return!(e.showActions===!1||p.includes(e.layout))}function g(e,t=new Set){if(!(typeof e!=`object`||!e||t.has(e))){if(t.add(e),e instanceof Map){e.forEach((e,n)=>{g(n,t),g(e,t)});return}if(e instanceof Set){e.forEach(e=>g(e,t));return}Object.values(e).forEach(e=>g(e,t))}}function _(e,t){let n=(0,o.ref)({}),r=(0,o.computed)(()=>i().length>0);function i(){let r=n.value,i=t?(0,o.toValue)(t):void 0,s=new Set(i??[...Object.keys(r),...Object.keys(e)]),c=[];for(let t of s){let n=a.r(e,t);g(n),a.a(a.r(r,t),n)||c.push(t)}return c}function s(t){return!a.a(a.r(n.value,t),a.r(e,t))}function c(){n.value=a.t(e)}function l(){return a.t(n.value)}return{isDirty:r,getChangedFields:i,isFieldDirty:s,markAsClean:c,getCleanModel:l}}const v=c.PRESET_RULES,y=c.NAIVE_COMBOS;function b(e=[]){return e.map(e=>{let t=`validate`in e&&typeof e.validate==`function`?(0,c.toNaiveRule)(e):e;return{...t,...Array.isArray(t.trigger)?{trigger:[...t.trigger]}:{}}})}function x(e,t){return b([{...c.BasicRules.required(e,[`input`,`change`,`blur`]),message:t}])[0]}const S={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:[],upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:!1};function C(e){return a.t((e.value===void 0?S[e.type]:e.value)??null)}function w(e){let t=new Set;e.forEach((e,n)=>{if(!e.prop?.trim())throw TypeError(`[C_Form] options[${n}].prop 不能为空`);if(t.has(e.prop))throw TypeError(`[C_Form] 字段 prop 重复: ${e.prop}`);t.add(e.prop)})}function T(e,r,i,s,c,l){let u=(0,o.reactive)(a.t(c?.value??(r.value.mode===`edit`?r.value.initialValues:void 0)??{})),d=(0,o.reactive)({}),f=new Map,p=(0,o.ref)({}),m=(0,o.ref)({}),h=(0,o.ref)({}),g=(0,o.ref)(!1),v=new Map,y=!1,S,T=new Map,E=new Map,D=new Map,O=new Map,k=new Set,A=!1,j=!1,M=0,N=n.t(()=>r.value.feedback),{t:ee}=t.t(()=>r.value.locale),{isDirty:te,getChangedFields:ne,isFieldDirty:P,markAsClean:F,getCleanModel:I}=_(u,()=>e.value.map(e=>e.prop));function L(e,t,n){if(!y)try{r.value.onError?r.value.onError(e,{source:t,field:n}):N.error(e instanceof Error?e.message:String(e),e)}catch{}}function R(e,t){if(!(y||!t))try{N[e](t)}catch{}}let z=(0,o.computed)(()=>e.value.filter(e=>{if(e.show===!1)return!1;if(!e.showWhen)return!0;try{return e.showWhen(u)}catch(t){return L(t,`callback`,e.prop),!1}}));function B(){j=!0;let e=++M;(0,o.nextTick)(()=>{e===M&&(j=!1)})}function V(){return a.t(u)}function re(t){let n=t?a.t(t):{};return e.value.forEach(e=>{a.i(n,e.prop)||a.c(n,e.prop,C(e))}),n}function H(e){try{let t=b(e.rulesWhen?e.rulesWhen(u):e.rules);if(v.delete(e.prop),e.required&&!t.some(e=>e.required)){let n=e.label||e.prop;t.unshift(x(n,ee(`form.required`,{label:n})))}if(e.crossFieldValidator){let n=e.crossFieldValidator;t.push({async validator(){let e=await n(u);if(e)throw Error(e)},trigger:[`change`,`blur`]})}if(t.length===0){delete d[e.prop];return}d[e.prop]=t.map(t=>({...t,key:e.prop}))}catch(t){delete d[e.prop],v.set(e.prop,t),L(t,`callback`,e.prop)}}function ie(){e.value.forEach(e=>{(e.rulesWhen||e.crossFieldValidator)&&H(e)})}function ae(e){k.forEach(t=>{e.has(t)||(f.delete(t),delete d[t],v.delete(t),G(t),D.delete(t),r.value.preserveRemovedFields||a.n(u,t))})}function oe(t=!1){try{w(e.value);let n=V(),r=new Set(e.value.map(e=>e.prop));ae(r),e.value.forEach(e=>{a.i(u,e.prop)||a.c(u,e.prop,C(e)),H(e),se(e)}),k=r,X(W(n),!1),t&&(0,o.nextTick)(F)}catch(e){throw L(e,`initialize`),e}}function U(e){let t=V();B(),a.s(u,re(e)),X(W(t),!1)}function W(t){return[...new Set([...Object.keys(t),...Object.keys(u),...e.value.map(e=>e.prop)])].filter(e=>!a.a(a.r(t,e),a.r(u,e)))}function G(e){E.get(e)?.abort(),E.delete(e),T.delete(e),O.delete(e),delete p.value[e],delete m.value[e],delete h.value[e]}function se(e){if(D.get(e.prop)!==e.asyncOptions){if(G(e.prop),!e.asyncOptions){D.delete(e.prop);return}D.set(e.prop,e.asyncOptions),K(e,`initialize`)}}function K(e,t){if(y)return;let n=O.get(e.prop),r={item:e,reason:n?.reason===`initialize`?n.reason:t};O.set(e.prop,r),(0,o.nextTick)(()=>{O.get(e.prop)===r&&(O.delete(e.prop),le(r.item,r.reason))})}function q(e,t,n){return y||n.signal.aborted||T.get(e)!==t||E.get(e)!==n}function ce(e){return!y&&!!e.asyncOptions&&D.get(e.prop)===e.asyncOptions}async function le(e,t){if(!ce(e))return;let{prop:n}=e,r=(T.get(n)??0)+1;T.set(n,r),E.get(n)?.abort();let i=new AbortController;E.set(n,i),m.value[n]=!0,delete h.value[n];try{let o=await e.asyncOptions(V(),{field:n,reason:t,signal:i.signal});if(q(n,r,i))return;if(!Array.isArray(o))throw TypeError(`[C_Form] ${n}.asyncOptions 必须返回数组`);p.value[n]=a.t([...o])}catch(e){if(q(n,r,i))return;h.value[n]=e,L(e,`async-options`,n)}finally{T.get(n)===r&&E.get(n)===i&&(m.value[n]=!1,E.delete(n))}}async function J(t){let n=e.value.filter(e=>e.asyncOptions&&(!t||e.prop===t));if(t&&n.length===0)throw Error(`[C_Form] 未找到异步选项字段: ${t}`);await Promise.all(n.map(e=>(O.delete(e.prop),le(e,`manual`))))}function Y(){let t=e.value.filter(e=>e.valueWhen),n=new Set;if(t.length===0)return[];for(let e=0;e<=t.length;e+=1){let e=!1;for(let r of t)try{let t=r.valueWhen?.(u);t!==void 0&&!a.a(a.r(u,r.prop),t)&&(a.c(u,r.prop,a.t(t)),n.add(r.prop),e=!0)}catch(e){L(e,`callback`,r.prop)}if(!e)return[...n]}return L(Error(`[C_Form] valueWhen 存在循环依赖,已停止继续计算`),`callback`),[...n]}function ue(t){let n=t.map(e=>a.o(e).join(`.`));return e.value.filter(e=>!e.asyncOptions||!e.dependsOn?!1:(Array.isArray(e.dependsOn)?e.dependsOn:[e.dependsOn]).some(e=>{let t=a.o(e).join(`.`);return n.some(e=>e===t||e.startsWith(`${t}.`)||t.startsWith(`${e}.`))}))}function X(e,t=!0){let n=[...new Set([...e,...Y()])];ie(),ue(n).forEach(e=>{K(e,`dependency`)}),t&&r.value.validateOnChange&&(0,o.nextTick)(()=>{y||Z(n).catch(()=>void 0)})}function de(e){X([e])}function fe(e,t){t?f.set(e,t):f.delete(e)}async function pe(){if(l?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);try{let e=z.value.find(e=>v.has(e.prop));if(e)throw v.get(e.prop);if(await i.value.validate(),y)throw Error(`[C_Form] 表单已卸载`);s(`validate-success`,V())}catch(e){throw y||s(`validate-error`,e),e}}async function Z(e){if(l?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);let t=[...new Set(Array.isArray(e)?e:[e])],n=t.find(e=>v.has(e));if(n)throw v.get(n);let r=[],a=t.flatMap(e=>{let t=f.get(e);return t?[t.validate()]:(r.push(e),[])});r.length>0&&a.push(i.value.validate(void 0,e=>r.includes(String(e.key??``))));let o=(await Promise.allSettled(a)).filter(e=>e.status===`rejected`).map(e=>e.reason);if(o.length>0)throw o}function me(e){if(!e){i.value?.restoreValidation();return}(Array.isArray(e)?e:[e]).forEach(e=>f.get(e)?.restoreValidation())}async function Q(e){let t=z.value.filter(e).map(e=>e.prop);if(t.length===0)return!0;try{return await Z(t),!0}catch{return!1}}function he(e){let t=typeof e==`string`?e:r.value.steps?.steps?.[e]?.key;return t?Q(e=>e.layout?.step===t):Promise.resolve(!0)}function ge(e){return Q(t=>t.layout?.tab===e)}function $(){return Q(e=>!!e.layout?.dynamic)}function _e(e){return Q(t=>t.layout?.group===e)}function ve(e){Object.entries(a.t(e)).forEach(([e,t])=>{a.c(u,e,t)}),X(Object.keys(e))}function ye(){let e=V();a.s(u,I()),me(),X(W(e),!1),R(`info`,r.value.resetSuccessText)}async function be(e,t,n=!1){a.c(u,e,a.t(t)),de(e),n&&await Z(e)}function xe(e){return a.t(a.r(u,e))}async function Se(e,t=!1){ve(e),t&&await Z(Object.keys(e))}function Ce(){return y||l?.value===!1||g.value||r.value.disabled||r.value.readonly}function we(e,t,n){return!y&&!e.signal.aborted&&l?.value!==!1&&!r.value.disabled&&!r.value.readonly&&n!==null&&i.value===n&&a.a(u,t)}async function Te(){if(Ce())return!1;let e=V(),t=i.value,n=new AbortController;S=n,g.value=!0;try{if(await pe(),!we(n,e,t))return!1;let i={model:e,form:t};try{await r.value.onSubmit?.(i,{signal:n.signal})}catch(e){return n.signal.aborted||L(e,`submit`),!1}return n.signal.aborted?!1:(s(`submit`,i),R(`success`,r.value.submitSuccessText),!0)}catch{return!1}finally{S===n&&(S=void 0),g.value=!1}}function Ee(){oe(!0);let e=c?.value??(r.value.mode===`edit`?r.value.initialValues:void 0);e&&U(e),(0,o.nextTick)(F)}return(0,o.watch)(e,()=>{let e=!A;e&&B(),oe(e),A=!0},{deep:!0,immediate:!0}),c&&(0,o.watch)(c,e=>{e!==void 0&&!a.a(u,e)&&U(e)},{deep:!0,immediate:!0}),(0,o.watch)(()=>[r.value.mode,r.value.initialValues],([e,t])=>{c?.value!==void 0||e!==`edit`||!t||(U(t),(0,o.nextTick)(F))},{deep:!0}),(0,o.watch)(u,e=>{j||s(`update:modelValue`,a.t(e))},{deep:!0,flush:`post`}),(0,o.onScopeDispose)(()=>{y=!0,S?.abort(),E.forEach(e=>e.abort()),E.clear(),O.clear(),f.clear()}),{formModel:u,formRules:d,visibleOptions:z,initialize:Ee,handleFieldChange:de,setFormItemRef:fe,validate:pe,validateField:Z,validateStep:he,validateTab:ge,validateDynamicFields:$,validateCustomGroup:_e,clearValidation:me,getModel:V,setFields:ve,resetFields:ye,setFieldValue:be,getFieldValue:xe,setFieldsValue:Se,submit:Te,handleSubmit:Te,handleReset:ye,isSubmitting:g,isDirty:te,getChangedFields:ne,isFieldDirty:P,markAsClean:F,asyncOptionsCache:p,asyncLoadingMap:m,asyncErrorMap:h,reloadOptions:J}}const E=Symbol(`c-form-renderer-registry`);function D(e={}){let t=(0,o.shallowReactive)(new Map),n={get:e=>t.get(e)?.renderer,register:(e,n)=>{if(!e.trim())throw TypeError(`[C_Form] renderer type 不能为空`);if(typeof n!=`function`)throw TypeError(`[C_Form] renderer ${e} 必须是函数`);let r={renderer:n};return t.set(e,r),()=>t.get(e)===r&&t.delete(e)},unregister:(e,n)=>{let r=t.get(e);return!r||n&&r.renderer!==n?!1:t.delete(e)}};return Object.entries(e).forEach(([e,t])=>{n.register(e,t)}),n}function O(e,t,n){return e===void 0?t:typeof e==`function`?e(n):e}function k(e){return{input:t=>(0,o.h)(e.NInput,{...t}),textarea:t=>(0,o.h)(e.NInput,{...t,type:`textarea`}),inputNumber:t=>(0,o.h)(e.NInputNumber,{...t}),switch:t=>(0,o.h)(e.NSwitch,{...t}),slider:t=>(0,o.h)(e.NSlider,{...t}),rate:t=>(0,o.h)(e.NRate,{...t}),datePicker:t=>(0,o.h)(e.NDatePicker,{...t}),daterange:t=>(0,o.h)(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>(0,o.h)(e.NTimePicker,{...t}),cascader:t=>(0,o.h)(e.NCascader,{...t}),colorPicker:t=>(0,o.h)(e.NColorPicker,{...t}),select:(t,n)=>(0,o.h)(e.NSelect,{...t,options:n.children?.map(e=>({...e}))||[]}),checkbox:(t,n)=>(0,o.h)(e.NCheckboxGroup,{...t},{default:()=>(0,o.h)(e.NSpace,{},{default:()=>n.children?.map(t=>(0,o.h)(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>(0,o.h)(e.NRadioGroup,{...t},{default:()=>(0,o.h)(e.NSpace,{},{default:()=>n.children?.map(t=>(0,o.h)(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>{let a={...t},{value:s}=a,c=a[`onUpdate:value`];return delete a.value,delete a[`onUpdate:value`],(0,o.h)(e.NUpload,{...a,fileList:Array.isArray(s)?s:[],"onUpdate:fileList":e=>c?.(e)},{default:()=>i.slots?.uploadClick?.()||(0,o.h)(e.NButton,{type:`primary`,size:n.attrs?.size??r.size,disabled:a.disabled===!0},{default:()=>`选择文件`}),tip:()=>i.slots?.uploadTip?.()||null})},editor:(t,n)=>{let r={...t},{value:i}=r,a=r[`onUpdate:value`];return delete r.value,delete r[`onUpdate:value`],(0,o.h)(e.C_Editor,{...r,editorId:`editor-${n.prop}`,modelValue:typeof i==`string`?i:``,"onUpdate:modelValue":e=>a?.(e)})}}}const A=D();function j(e,t){return A.register(e,t)}function M(e,t){return A.unregister(e,t)}const N=new Set([`select`,`checkbox`,`radio`,`cascader`]),ee=new Set([`input`,`textarea`,`inputNumber`,`select`,`checkbox`,`radio`,`switch`,`datePicker`,`daterange`,`timePicker`,`cascader`,`colorPicker`]),te=new Set([`input`,`textarea`,`inputNumber`,`rate`,`editor`]);function ne(e){let{formModel:t,visibleOptions:n,config:r,handleFieldChange:i,componentMap:s,instanceSlots:c,asyncOptionsCache:l,asyncLoadingMap:u,renderers:d,setFormItemRef:f,onError:p}=e,m=s,h=k(m),g=(0,o.getCurrentInstance)()?(0,o.inject)(E,void 0):void 0,_=e.registry??g??A,v=e=>d?.value?.[e]??_.get(e)??h[e],y=e=>{let n=O(e.disabled,r.value.disabled,t),o=O(e.readonly,r.value.readonly,t),s=te.has(e.type),c={...ee.has(e.type)?{size:e.attrs?.size??r.value.size}:{},value:a.r(t,e.prop),"onUpdate:value":n=>{O(e.disabled,r.value.disabled,t)||O(e.readonly,r.value.readonly,t)||(a.c(t,e.prop,n),i(e.prop))},disabled:n||o&&!s,readonly:o||e.type===`rate`&&n};return e.type===`textarea`&&(c.type=`textarea`),e.placeholder&&(c.placeholder=e.placeholder),c};function b(e){let t=e.children??[];return Object.prototype.hasOwnProperty.call(l.value,e.prop)?l.value[e.prop]??[]:t}function x(e){return N.has(e.type)?{...e,children:b(e)}:e}function S(e,t){return e.type===`select`&&u.value[e.prop]&&(t.loading=!0),t}let C=e=>{try{let t=x(e),n=v(t.type);return n?n(S(t,(0,o.mergeProps)(t.attrs??{},y(t))),t,r.value,{slots:c,components:m}):(p?.(TypeError(`[C_Form] 未支持的组件类型: ${t.type}`),t.prop),null)}catch(t){return p?.(t,e.prop),null}};function w(e){if(e.label)return e.help?(0,o.h)(`span`,{style:`display:inline-flex;align-items:center;gap:4px`},[e.label,(0,o.h)(m.NTooltip,{trigger:`hover`},{trigger:()=>(0,o.h)(`span`,{style:`cursor:help;opacity:0.5;font-size:14px`,textContent:`ⓘ`}),default:()=>e.help})]):e.label}return{renderFormItem:C,formItems:(0,o.computed)(()=>n.value.map(e=>{let t=!!(e.required||e.rules?.some(e=>e.required)),n=w(e);return(0,o.h)(m.NFormItem,{label:typeof n==`string`?n:void 0,path:e.prop,class:`c-form-field`,key:e.prop,required:t,ref:t=>f?.(e.prop,t)},{...typeof n!=`string`&&n?{label:()=>n}:{},default:()=>C(e)})})),getBaseProps:y}}const P={class:`c-form-default`},F=(0,o.defineComponent)({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(t,n)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,P,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e.formItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(e),{key:e.key??t}))),128))]))}});var I=i.t(F,[[`__scopeId`,`data-v-4313de0c`]]);const L=(0,o.defineComponent)({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=(0,o.computed)(()=>t.layoutConfig?.inline?.itemWidth??280),r=(0,o.computed)(()=>t.layoutConfig?.inline?.gap??16),i=(0,o.computed)(()=>t.layoutConfig?.inline?.rowGap??16),a=(0,o.computed)(()=>t.layoutConfig?.inline?.align??`center`),s=(0,o.computed)(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return a.value}}),c=(0,o.computed)(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),l=(0,o.computed)(()=>({display:`flex`,flexWrap:t.layoutConfig?.inline?.wrap??`wrap`,alignItems:s.value,justifyContent:c.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),u=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},d=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(t,n)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{class:`c-form-inline`,style:(0,o.normalizeStyle)(l.value)},[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e.formItems,(e,t)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{key:u(e,t),class:`c-form-inline-item`,style:(0,o.normalizeStyle)(d(t))},[((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(e)))],4))),128))],4))}});var R=i.t(L,[[`__scopeId`,`data-v-711f6c00`]]);const z={class:`c-grid-layout`},B={class:`config-header`},V={class:`config-controls`},re={class:`config-label`},H={class:`item-wrapper`},ie=(0,o.defineComponent)({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e,{expose:t}){let n=e,i=(0,o.reactive)({cols:24,gutter:16,responsive:!0}),a=(0,o.computed)(()=>n.layoutConfig?.grid||{}),c=(0,o.computed)(()=>a.value.showConfigPanel),l=(0,o.computed)(()=>a.value.showStats),u=(0,o.computed)(()=>({cols:c.value?i.cols:a.value.cols??24,gutter:c.value?i.gutter:a.value.gutter??16,responsive:c.value?i.responsive:a.value.responsive??!0})),d=(0,o.computed)(()=>({cols:u.value.cols,xGap:a.value.xGap??u.value.gutter,yGap:a.value.yGap??a.value.yGutter??u.value.gutter,responsive:u.value.responsive?`screen`:`self`})),f=(0,o.computed)(()=>[{key:`cols`,label:`列数`,component:s.NInputNumber,value:i.cols,update:e=>{typeof e==`number`&&(i.cols=e)},props:{min:1,max:48,size:n.controlSize??`small`}},{key:`gutter`,label:`间距`,component:s.NInputNumber,value:i.gutter,update:e=>{typeof e==`number`&&(i.gutter=e)},props:{min:0,max:48,size:n.controlSize??`small`}},{key:`responsive`,label:`响应式`,component:s.NSwitch,value:i.responsive,update:e=>{typeof e==`boolean`&&(i.responsive=e)},props:{size:n.controlSize??`small`}}]),p=(0,o.computed)(()=>`列数: ${u.value.cols} | 间距: ${u.value.gutter}px | 项目: ${n.formItems.length}个`),m=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,h=(e,t)=>{let r=n.options?.[e]?.layout;return r?.[t]??r?.grid?.[t]},g=()=>{let{cols:e}=u.value;return e<=12?e:e<=24?12:8},_=e=>{let t=h(e,`span`),n=h(e,`offset`),r=h(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=u.value.cols?t:g(),offset:typeof n==`number`&&n>=0&&n<u.value.cols?n:0,suffix:!!r}};return(0,o.watch)(a,e=>{e.cols!==void 0&&(i.cols=e.cols),e.gutter!==void 0&&(i.gutter=e.gutter),e.responsive!==void 0&&(i.responsive=e.responsive)},{immediate:!0}),t({updateGridConfig:e=>Object.assign(i,e),getCurrentConfig:()=>({...u.value}),getGridInfo:()=>({...u.value,itemCount:n.formItems.length})}),(t,n)=>{let i=s.NCard,a=s.NGridItem,u=s.NGrid,h=s.NAlert;return(0,o.openBlock)(),(0,o.createElementBlock)(`div`,z,[(0,o.createCommentVNode)(` 配置面板 `),c.value?((0,o.openBlock)(),(0,o.createBlock)(i,{key:0,size:e.controlSize??`small`,bordered:!1,class:`config-panel`},{header:(0,o.withCtx)(()=>[(0,o.createElementVNode)(`div`,B,[(0,o.createVNode)(r.t,{name:`mdi:view-grid`,size:18}),n[0]||=(0,o.createElementVNode)(`span`,null,`网格配置`,-1)])]),default:(0,o.withCtx)(()=>[(0,o.createElementVNode)(`div`,V,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(f.value,e=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{key:e.key,class:`config-item`},[(0,o.createElementVNode)(`span`,re,(0,o.toDisplayString)(e.label)+`:`,1),((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(e.component),(0,o.mergeProps)({value:e.value},{ref_for:!0},e.props,{"onUpdate:value":e.update}),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1},8,[`size`])):(0,o.createCommentVNode)(`v-if`,!0),(0,o.createCommentVNode)(` 网格容器 `),(0,o.createVNode)(u,(0,o.mergeProps)(d.value,{class:`grid-container`}),{default:(0,o.withCtx)(()=>[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e.formItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(a,(0,o.mergeProps)({key:m(e,t)},{ref_for:!0},_(t),{class:`grid-item`}),{default:(0,o.withCtx)(()=>[(0,o.createElementVNode)(`div`,H,[((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(e)))])]),_:2},1040))),128))]),_:1},16),(0,o.createCommentVNode)(` 统计信息 `),l.value?((0,o.openBlock)(),(0,o.createBlock)(h,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:(0,o.withCtx)(()=>[(0,o.createVNode)(r.t,{name:`mdi:information-outline`,size:16}),n[1]||=(0,o.createTextVNode)(` 网格信息 `,-1)]),default:(0,o.withCtx)(()=>[(0,o.createTextVNode)(` `+(0,o.toDisplayString)(p.value),1)]),_:1})):(0,o.createCommentVNode)(`v-if`,!0)])}}});var ae=i.t(ie,[[`__scopeId`,`data-v-4758bc1e`]]);const oe=[`default`,`inline`,`grid`],U={NFormItem:s.NFormItem,NInput:s.NInput,NInputNumber:s.NInputNumber,NSwitch:s.NSwitch,NSelect:s.NSelect,NCheckboxGroup:s.NCheckboxGroup,NCheckbox:s.NCheckbox,NRadioGroup:s.NRadioGroup,NRadio:s.NRadio,NButton:s.NButton,NSpace:s.NSpace,NTooltip:s.NTooltip,NSlider:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./slider.cjs`))),NRate:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./rate.cjs`))),NDatePicker:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./date-picker.cjs`))),NTimePicker:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./time-picker.cjs`))),NCascader:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./cascader.cjs`))),NColorPicker:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./color-picker.cjs`))),NUpload:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./upload.cjs`))),C_Editor:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./C_Editor.cjs`)).then(e=>e.C_Editor))},W={default:I,inline:R,grid:ae,card:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Card.cjs`))),tabs:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Tabs.cjs`))),steps:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Steps.cjs`))),dynamic:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Dynamic.cjs`))),custom:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Custom.cjs`)))},G=(0,o.defineComponent)({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})},renderers:{}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(n,{expose:r,emit:i}){let a=n,c=i,l=u(),f=(0,o.useAttrs)(),p=(0,o.computed)(()=>d(a.config,l)),g=(0,o.computed)(()=>{let{size:e}=f;return m({...p.value,...e===`small`||e===`medium`||e===`large`?{size:e}:{}})}),_=(0,o.computed)(()=>p.value.density!==void 0),v=(0,o.computed)(()=>e.t(g.value.density)),y=(0,o.computed)(()=>{if(!_.value)return;let{gap:e,rowGap:t,padding:n,formItemGap:r}=v.value;return{"--c-form-gap":`${e}px`,"--c-form-row-gap":`${t}px`,"--c-form-padding":`${n}px`,"--c-form-item-gap":`${r}px`}}),{t:b}=t.t(()=>g.value.locale),x=(0,o.ref)(null),S=(0,o.ref)(null),C=(0,o.computed)(()=>oe.includes(g.value.layout)||S.value===g.value.layout),{formModel:w,formRules:E,visibleOptions:D,initialize:O,handleFieldChange:k,validate:A,validateField:j,validateStep:M,validateTab:N,validateDynamicFields:ee,validateCustomGroup:te,clearValidation:P,getModel:F,setFields:I,resetFields:L,setFieldValue:R,getFieldValue:z,setFieldsValue:B,handleSubmit:V,handleReset:re,isDirty:H,getChangedFields:ie,isFieldDirty:ae,markAsClean:G,asyncOptionsCache:se,asyncLoadingMap:K,asyncErrorMap:q,reloadOptions:ce,setFormItemRef:le,isSubmitting:J,submit:Y}=T((0,o.computed)(()=>a.options),g,x,c,(0,o.computed)(()=>a.modelValue),C),ue=(0,o.computed)(()=>w.value),X=()=>F(),de=(0,o.computed)(()=>({form:x.value,model:ue.value,validate:A,validateField:j,reset:L,setFields:I,getModel:X,clearValidation:P,submit:Y,reloadOptions:ce,submitting:J.value})),fe=(0,o.getCurrentInstance)(),pe=()=>Object.keys(fe?.slots??{}).filter(e=>![`action`,`action-extra`,`step-actions`].includes(e)),{formItems:Z}=ne({formModel:w,visibleOptions:D,config:g,handleFieldChange:k,componentMap:U,instanceSlots:fe?.slots,asyncOptionsCache:se,asyncLoadingMap:K,renderers:(0,o.computed)(()=>a.renderers),setFormItemRef:le,onError:(e,t)=>g.value.onError?.(e,{source:`render`,field:t})}),me=(0,o.computed)(()=>W[g.value.layout]||W.default),Q=(0,o.computed)(()=>{let e=g.value,t={type:e.layout,grid:e.grid,inline:e.inline,card:e.card,tabs:e.tabs,steps:e.steps,dynamic:e.dynamic,custom:e.custom};if(!_.value)return t;let{gap:n,rowGap:r}=v.value;return{...t,grid:{gutter:n,yGutter:e.grid?.gutter??r,...e.grid},inline:{gap:n,rowGap:r,...e.inline},card:{spacing:n,...e.card},tabs:{size:e.size,...e.tabs},steps:{size:e.size===`small`?`small`:`medium`,...e.steps},dynamic:{...e.dynamic,grid:{gutter:n,...e.dynamic?.grid}}}}),he=(0,o.computed)(()=>h(g.value)),ge=(0,o.computed)(()=>{let{layout:e}=g.value;return{...e===`steps`?{beforeStepChange:Ce,validateStep:we,submitting:J.value,disabled:g.value.disabled||g.value.readonly}:e===`tabs`?{beforeTabChange:be,validateTab:xe}:{},controlSize:_.value?g.value.size:void 0,onVnodeMounted:()=>{S.value=e}}}),$=(e,...t)=>{let n=g.value[e];if(typeof n==`function`)try{let e=n(...t);e instanceof Promise&&e.catch(e=>g.value.onError?.(e,{source:`callback`}))}catch(e){g.value.onError?.(e,{source:`callback`})}},_e=e=>{g.value.onFieldsChange?.(e)},ve=e=>{c(`validate-success`,e)},ye=e=>{c(`validate-error`,e)},be=async(e,t)=>{try{return await g.value.onTabBeforeChange?.(e,t)!==!1}catch(e){return g.value.onError?.(e,{source:`callback`}),!1}},xe=async e=>{let t=await N(e);return t&&g.value.onTabValidate?.(e),t},Se=(e,t)=>{g.value.onStepChange?.(e,t)},Ce=async(e,t)=>{try{return await g.value.onStepBeforeChange?.(e,t)!==!1}catch(e){return g.value.onError?.(e,{source:`callback`}),!1}},we=async(e,t)=>{try{return await M(t)?(g.value.onStepValidate?.(e),!0):!1}catch{return!1}};return r({validate:A,validateField:j,validateStep:M,validateTab:N,validateDynamicFields:ee,validateCustomGroup:te,clearValidation:P,getModel:F,setFields:I,resetFields:L,setFieldValue:R,getFieldValue:z,setFieldsValue:B,formRef:x,formModel:w,initialize:O,layoutType:(0,o.computed)(()=>g.value.layout),shouldShowDefaultActions:he,isDirty:H,getChangedFields:ie,isFieldDirty:ae,markAsClean:G,asyncLoadingMap:K,asyncErrorMap:q,reloadOptions:ce,isSubmitting:J,submit:Y}),(e,t)=>((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.NForm),(0,o.mergeProps)({ref_key:`formRef`,ref:x,class:[`c-form`,_.value&&`c-form--${g.value.density}`],style:y.value,model:(0,o.unref)(w),rules:(0,o.unref)(E),"validate-on-rule-change":!1,"label-placement":g.value.labelPlacement,"label-width":g.value.labelWidth,size:g.value.size,disabled:g.value.disabled,readonly:g.value.readonly},e.$attrs,{onSubmit:(0,o.withModifiers)((0,o.unref)(Y),[`prevent`])}),{default:(0,o.withCtx)(()=>[(0,o.createCommentVNode)(` 布局组件渲染 `),((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(me.value),(0,o.mergeProps)({key:g.value.layout,"form-items":(0,o.unref)(Z),"layout-config":Q.value,options:(0,o.unref)(D),"form-data":(0,o.unref)(w)},ge.value,{onTabChange:t[0]||=(e,t)=>$(`onTabChange`,e,t),onStepChange:Se,onFieldAdd:t[1]||=e=>$(`onFieldAdd`,e),onFieldRemove:t[2]||=e=>$(`onFieldRemove`,e),onFieldToggle:t[3]||=(e,t)=>$(`onFieldToggle`,e,t),onFieldsClear:t[4]||=e=>$(`onFieldsClear`),onRenderModeChange:t[5]||=e=>$(`onRenderModeChange`,e),onGroupToggle:t[6]||=(e,t)=>$(`onGroupToggle`,e,t),onGroupReset:t[7]||=e=>$(`onGroupReset`,e),onValidateSuccess:ve,onValidateError:ye,onFieldsChange:_e}),(0,o.createSlots)({"step-actions":(0,o.withCtx)(t=>[(0,o.renderSlot)(e.$slots,`step-actions`,(0,o.mergeProps)(t,{submit:(0,o.unref)(Y),submitting:(0,o.unref)(J)}),()=>[t.isLastStep&&g.value.showActions?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.NButton),{key:0,type:`primary`,size:g.value.size,loading:(0,o.unref)(J)||!C.value,disabled:!C.value||(0,o.unref)(J)||g.value.disabled||g.value.readonly,onClick:(0,o.unref)(Y)},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(g.value.submitText||(0,o.unref)(b)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])):(0,o.createCommentVNode)(`v-if`,!0)],!0)]),_:2},[(0,o.renderList)(pe(),t=>({name:t,fn:(0,o.withCtx)(n=>[(0,o.renderSlot)(e.$slots,t,(0,o.normalizeProps)((0,o.guardReactiveProps)(n)),void 0,!0)])}))]),1040,[`form-items`,`layout-config`,`options`,`form-data`])),(0,o.createCommentVNode)(` 表单操作按钮区域(只在特定布局中显示) `),he.value?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.NFormItem),{key:0,class:`c-form-actions`},{default:(0,o.withCtx)(()=>[(0,o.renderSlot)(e.$slots,`action`,(0,o.normalizeProps)((0,o.guardReactiveProps)(de.value)),()=>[(0,o.createVNode)((0,o.unref)(s.NSpace),{justify:`end`,size:_.value?v.value.gap:void 0,style:{width:`100%`}},{default:(0,o.withCtx)(()=>[(0,o.createVNode)((0,o.unref)(s.NButton),{size:g.value.size,disabled:!C.value||(0,o.unref)(J)||g.value.disabled||g.value.readonly,onClick:(0,o.unref)(re)},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(g.value.resetText||(0,o.unref)(b)(`common.reset`)),1)]),_:1},8,[`size`,`disabled`,`onClick`]),(0,o.renderSlot)(e.$slots,`action-extra`,(0,o.normalizeProps)((0,o.guardReactiveProps)(de.value)),void 0,!0),(0,o.createVNode)((0,o.unref)(s.NButton),{type:`primary`,size:g.value.size,loading:(0,o.unref)(J)||!C.value,disabled:!C.value||(0,o.unref)(J)||g.value.disabled||g.value.readonly,onClick:(0,o.unref)(V)},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(g.value.submitText||(0,o.unref)(b)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])]),_:3},8,[`size`])],!0)]),_:3})):(0,o.createCommentVNode)(`v-if`,!0)]),_:3},16,[`class`,`style`,`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`,`onSubmit`]))}});var se=i.t(G,[[`__scopeId`,`data-v-d94e0e8f`]]);function K(e){return e}function q(e){return e}function ce(e){let t=(0,o.shallowRef)(a.t(e.initialValues)),n=(0,o.shallowRef)(null);return{model:t,formRef:n,bindings:(0,o.computed)(()=>({modelValue:t.value,options:(0,o.toValue)(e.options),config:(0,o.toValue)(e.config),"onUpdate:modelValue":e=>{t.value=a.t(e)}})),validate:()=>n.value?.validate()??Promise.resolve(),submit:()=>n.value?.submit()??Promise.resolve(!1),reset:()=>{n.value?(n.value.resetFields(),t.value=a.t(n.value.getModel())):t.value=a.t(e.initialValues)},getValues:()=>a.t(n.value?.getModel()??t.value),setValues:async(e,r=!1)=>{n.value?(await n.value.setFieldsValue(e,r),t.value=a.t(n.value.getModel())):t.value={...t.value,...a.t(e)}}}}Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return h}});
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./density.cjs`),t=require(`./useComponentLocale.cjs`),n=require(`./feedback.cjs`),r=require(`./C_Icon2.cjs`),i=require(`./export-helper.cjs`),a=require(`./data.cjs`);let o=require(`vue`),s=require(`naive-ui`),c=require(`@robot-admin/form-validate`);const l=Symbol(`c-form-global-config`);function u(){return(0,o.getCurrentInstance)()?(0,o.inject)(l,{}):{}}function d(e,t){let n=e??{},r=(e,t)=>e||t?{...e,...t}:void 0;return{...t,...n,grid:r(t.grid,n.grid),inline:r(t.inline,n.inline),card:r(t.card,n.card),tabs:r(t.tabs,n.tabs),steps:r(t.steps,n.steps),dynamic:r(t.dynamic,n.dynamic),custom:r(t.custom,n.custom)}}const f={layout:`default`,labelPlacement:`left`,labelWidth:`auto`,size:`medium`,density:`default`,disabled:!1,readonly:!1,showActions:!0,validateOnChange:!1,preserveRemovedFields:!1,submitText:``,resetText:``,submitSuccessText:``,resetSuccessText:``,mode:`create`},p=[`steps`,`custom`];function m(t){return{...f,...t,size:t?.size??e.t(t?.density).size}}function h(e){return!(e.showActions===!1||p.includes(e.layout))}function g(e,t=new Set){if(!(typeof e!=`object`||!e||t.has(e))){if(t.add(e),e instanceof Map){e.forEach((e,n)=>{g(n,t),g(e,t)});return}if(e instanceof Set){e.forEach(e=>g(e,t));return}Object.values(e).forEach(e=>g(e,t))}}function _(e,t){let n=(0,o.shallowRef)({}),r=()=>new Set(t?(0,o.toValue)(t):[...Object.keys(n.value),...Object.keys(e)]),i=(0,o.computed)(()=>{for(let e of r())if(c(e))return!0;return!1});function s(){let e=[];for(let t of r())c(t)&&e.push(t);return e}function c(t){let r=a.r(e,t);return g(r),!a.a(a.r(n.value,t),r)}function l(){n.value=a.t(e)}function u(){return a.t(n.value)}return{isDirty:i,getChangedFields:s,isFieldDirty:c,markAsClean:l,getCleanModel:u}}const v=c.PRESET_RULES,y=c.NAIVE_COMBOS;function b(e=[]){return e.map(e=>{let t=`validate`in e&&typeof e.validate==`function`?(0,c.toNaiveRule)(e):e;return{...t,...Array.isArray(t.trigger)?{trigger:[...t.trigger]}:{}}})}function x(e,t){return b([{...c.BasicRules.required(e,[`input`,`change`,`blur`]),message:t}])[0]}const S={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:[],upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:!1};function C(e){return a.t((e.value===void 0?S[e.type]:e.value)??null)}function w(e){let t=new Set;e.forEach((e,n)=>{if(!e.prop?.trim())throw TypeError(`[C_Form] options[${n}].prop 不能为空`);if(t.has(e.prop))throw TypeError(`[C_Form] 字段 prop 重复: ${e.prop}`);t.add(e.prop)})}function T(e,r,i,s,c,l){let u=(0,o.reactive)(a.t(c?.value??(r.value.mode===`edit`?r.value.initialValues:void 0)??{})),d=(0,o.reactive)({}),f=new Map,p=(0,o.ref)({}),m=(0,o.ref)({}),h=(0,o.ref)({}),g=(0,o.ref)(!1),v=new Map,y=!1,S,T=new Map,E=new Map,D=new Map,O=new Map,k=new Set,A=!1,j=!1,M=0,N=n.t(()=>r.value.feedback),{t:ee}=t.t(()=>r.value.locale),{isDirty:te,getChangedFields:ne,isFieldDirty:P,markAsClean:F,getCleanModel:I}=_(u,()=>e.value.map(e=>e.prop));function L(e,t,n){if(!y)try{r.value.onError?r.value.onError(e,{source:t,field:n}):N.error(e instanceof Error?e.message:String(e),e)}catch{}}function R(e,t){if(!(y||!t))try{N[e](t)}catch{}}let z=(0,o.computed)(()=>e.value.filter(e=>{if(e.show===!1)return!1;if(!e.showWhen)return!0;try{return e.showWhen(u)}catch(t){return L(t,`callback`,e.prop),!1}}));function B(){j=!0;let e=++M;(0,o.nextTick)(()=>{e===M&&(j=!1)})}function V(){return a.t(u)}function re(t){let n=t?a.t(t):{};return e.value.forEach(e=>{a.i(n,e.prop)||a.c(n,e.prop,C(e))}),n}function H(e){try{let t=b(e.rulesWhen?e.rulesWhen(u):e.rules);if(v.delete(e.prop),e.required&&!t.some(e=>e.required)){let n=e.label||e.prop;t.unshift(x(n,ee(`form.required`,{label:n})))}if(e.crossFieldValidator){let n=e.crossFieldValidator;t.push({async validator(){let e=await n(u);if(e)throw Error(e)},trigger:[`change`,`blur`]})}if(t.length===0){delete d[e.prop];return}d[e.prop]=t.map(t=>({...t,key:e.prop}))}catch(t){delete d[e.prop],v.set(e.prop,t),L(t,`callback`,e.prop)}}function ie(){e.value.forEach(e=>{(e.rulesWhen||e.crossFieldValidator)&&H(e)})}function ae(e){k.forEach(t=>{e.has(t)||(f.delete(t),delete d[t],v.delete(t),G(t),D.delete(t),r.value.preserveRemovedFields||a.n(u,t))})}function oe(t=!1){try{w(e.value);let n=V(),r=new Set(e.value.map(e=>e.prop));ae(r),e.value.forEach(e=>{a.i(u,e.prop)||a.c(u,e.prop,C(e)),H(e),se(e)}),k=r,X(W(n),!1),t&&(0,o.nextTick)(F)}catch(e){throw L(e,`initialize`),e}}function U(e){let t=V();B(),a.s(u,re(e)),X(W(t),!1)}function W(t){return[...new Set([...Object.keys(t),...Object.keys(u),...e.value.map(e=>e.prop)])].filter(e=>!a.a(a.r(t,e),a.r(u,e)))}function G(e){E.get(e)?.abort(),E.delete(e),T.delete(e),O.delete(e),delete p.value[e],delete m.value[e],delete h.value[e]}function se(e){if(D.get(e.prop)!==e.asyncOptions){if(G(e.prop),!e.asyncOptions){D.delete(e.prop);return}D.set(e.prop,e.asyncOptions),K(e,`initialize`)}}function K(e,t){if(y)return;let n=O.get(e.prop),r={item:e,reason:n?.reason===`initialize`?n.reason:t};O.set(e.prop,r),(0,o.nextTick)(()=>{O.get(e.prop)===r&&(O.delete(e.prop),le(r.item,r.reason))})}function q(e,t,n){return y||n.signal.aborted||T.get(e)!==t||E.get(e)!==n}function ce(e){return!y&&!!e.asyncOptions&&D.get(e.prop)===e.asyncOptions}async function le(e,t){if(!ce(e))return;let{prop:n}=e,r=(T.get(n)??0)+1;T.set(n,r),E.get(n)?.abort();let i=new AbortController;E.set(n,i),m.value[n]=!0,delete h.value[n];try{let o=await e.asyncOptions(V(),{field:n,reason:t,signal:i.signal});if(q(n,r,i))return;if(!Array.isArray(o))throw TypeError(`[C_Form] ${n}.asyncOptions 必须返回数组`);p.value[n]=a.t([...o])}catch(e){if(q(n,r,i))return;h.value[n]=e,L(e,`async-options`,n)}finally{T.get(n)===r&&E.get(n)===i&&(m.value[n]=!1,E.delete(n))}}async function J(t){let n=e.value.filter(e=>e.asyncOptions&&(!t||e.prop===t));if(t&&n.length===0)throw Error(`[C_Form] 未找到异步选项字段: ${t}`);await Promise.all(n.map(e=>(O.delete(e.prop),le(e,`manual`))))}function Y(){let t=e.value.filter(e=>e.valueWhen),n=new Set;if(t.length===0)return[];for(let e=0;e<=t.length;e+=1){let e=!1;for(let r of t)try{let t=r.valueWhen?.(u);t!==void 0&&!a.a(a.r(u,r.prop),t)&&(a.c(u,r.prop,a.t(t)),n.add(r.prop),e=!0)}catch(e){L(e,`callback`,r.prop)}if(!e)return[...n]}return L(Error(`[C_Form] valueWhen 存在循环依赖,已停止继续计算`),`callback`),[...n]}function ue(t){let n=t.map(e=>a.o(e).join(`.`));return e.value.filter(e=>!e.asyncOptions||!e.dependsOn?!1:(Array.isArray(e.dependsOn)?e.dependsOn:[e.dependsOn]).some(e=>{let t=a.o(e).join(`.`);return n.some(e=>e===t||e.startsWith(`${t}.`)||t.startsWith(`${e}.`))}))}function X(e,t=!0){let n=[...new Set([...e,...Y()])];ie(),ue(n).forEach(e=>{K(e,`dependency`)}),t&&r.value.validateOnChange&&(0,o.nextTick)(()=>{y||Z(n).catch(()=>void 0)})}function de(e){X([e])}function fe(e,t){t?f.set(e,t):f.delete(e)}async function pe(){if(l?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);try{let e=z.value.find(e=>v.has(e.prop));if(e)throw v.get(e.prop);if(await i.value.validate(),y)throw Error(`[C_Form] 表单已卸载`);s(`validate-success`,V())}catch(e){throw y||s(`validate-error`,e),e}}async function Z(e){if(l?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);let t=[...new Set(Array.isArray(e)?e:[e])],n=t.find(e=>v.has(e));if(n)throw v.get(n);let r=[],a=t.flatMap(e=>{let t=f.get(e);return t?[t.validate()]:(r.push(e),[])});r.length>0&&a.push(i.value.validate(void 0,e=>r.includes(String(e.key??``))));let o=(await Promise.allSettled(a)).filter(e=>e.status===`rejected`).map(e=>e.reason);if(o.length>0)throw o}function me(e){if(!e){i.value?.restoreValidation();return}(Array.isArray(e)?e:[e]).forEach(e=>f.get(e)?.restoreValidation())}async function Q(e){let t=z.value.filter(e).map(e=>e.prop);if(t.length===0)return!0;try{return await Z(t),!0}catch{return!1}}function he(e){let t=typeof e==`string`?e:r.value.steps?.steps?.[e]?.key;return t?Q(e=>e.layout?.step===t):Promise.resolve(!0)}function ge(e){return Q(t=>t.layout?.tab===e)}function $(){return Q(e=>!!e.layout?.dynamic)}function _e(e){return Q(t=>t.layout?.group===e)}function ve(e){Object.entries(a.t(e)).forEach(([e,t])=>{a.c(u,e,t)}),X(Object.keys(e))}function ye(){let e=V();a.s(u,I()),me(),X(W(e),!1),R(`info`,r.value.resetSuccessText)}async function be(e,t,n=!1){a.c(u,e,a.t(t)),de(e),n&&await Z(e)}function xe(e){return a.t(a.r(u,e))}async function Se(e,t=!1){ve(e),t&&await Z(Object.keys(e))}function Ce(){return y||l?.value===!1||g.value||r.value.disabled||r.value.readonly}function we(e,t,n){return!y&&!e.signal.aborted&&l?.value!==!1&&!r.value.disabled&&!r.value.readonly&&n!==null&&i.value===n&&a.a(u,t)}async function Te(){if(Ce())return!1;let e=V(),t=i.value,n=new AbortController;S=n,g.value=!0;try{if(await pe(),!we(n,e,t))return!1;let i={model:e,form:t};try{await r.value.onSubmit?.(i,{signal:n.signal})}catch(e){return n.signal.aborted||L(e,`submit`),!1}return n.signal.aborted?!1:(s(`submit`,i),R(`success`,r.value.submitSuccessText),!0)}catch{return!1}finally{S===n&&(S=void 0),g.value=!1}}function Ee(){oe(!0);let e=c?.value??(r.value.mode===`edit`?r.value.initialValues:void 0);e&&U(e),(0,o.nextTick)(F)}return(0,o.watch)(e,()=>{let e=!A;e&&B(),oe(e),A=!0},{deep:!0,immediate:!0}),c&&(0,o.watch)(c,e=>{e!==void 0&&!a.a(u,e)&&U(e)},{deep:!0,immediate:!0}),(0,o.watch)(()=>[r.value.mode,r.value.initialValues],([e,t])=>{c?.value!==void 0||e!==`edit`||!t||(U(t),(0,o.nextTick)(F))},{deep:!0}),(0,o.watch)(u,e=>{j||s(`update:modelValue`,a.t(e))},{deep:!0,flush:`post`}),(0,o.onScopeDispose)(()=>{y=!0,S?.abort(),E.forEach(e=>e.abort()),E.clear(),O.clear(),f.clear()}),{formModel:u,formRules:d,visibleOptions:z,initialize:Ee,handleFieldChange:de,setFormItemRef:fe,validate:pe,validateField:Z,validateStep:he,validateTab:ge,validateDynamicFields:$,validateCustomGroup:_e,clearValidation:me,getModel:V,setFields:ve,resetFields:ye,setFieldValue:be,getFieldValue:xe,setFieldsValue:Se,submit:Te,handleSubmit:Te,handleReset:ye,isSubmitting:g,isDirty:te,getChangedFields:ne,isFieldDirty:P,markAsClean:F,asyncOptionsCache:p,asyncLoadingMap:m,asyncErrorMap:h,reloadOptions:J}}const E=Symbol(`c-form-renderer-registry`);function D(e={}){let t=(0,o.shallowReactive)(new Map),n={get:e=>t.get(e)?.renderer,register:(e,n)=>{if(!e.trim())throw TypeError(`[C_Form] renderer type 不能为空`);if(typeof n!=`function`)throw TypeError(`[C_Form] renderer ${e} 必须是函数`);let r={renderer:n};return t.set(e,r),()=>t.get(e)===r&&t.delete(e)},unregister:(e,n)=>{let r=t.get(e);return!r||n&&r.renderer!==n?!1:t.delete(e)}};return Object.entries(e).forEach(([e,t])=>{n.register(e,t)}),n}function O(e,t,n){return e===void 0?t:typeof e==`function`?e(n):e}function k(e){return{input:t=>(0,o.h)(e.NInput,{...t}),textarea:t=>(0,o.h)(e.NInput,{...t,type:`textarea`}),inputNumber:t=>(0,o.h)(e.NInputNumber,{...t}),switch:t=>(0,o.h)(e.NSwitch,{...t}),slider:t=>(0,o.h)(e.NSlider,{...t}),rate:t=>(0,o.h)(e.NRate,{...t}),datePicker:t=>(0,o.h)(e.NDatePicker,{...t}),daterange:t=>(0,o.h)(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>(0,o.h)(e.NTimePicker,{...t}),cascader:t=>(0,o.h)(e.NCascader,{...t}),colorPicker:t=>(0,o.h)(e.NColorPicker,{...t}),select:(t,n)=>(0,o.h)(e.NSelect,{...t,options:n.children?.map(e=>({...e}))||[]}),checkbox:(t,n)=>(0,o.h)(e.NCheckboxGroup,{...t},{default:()=>(0,o.h)(e.NSpace,{},{default:()=>n.children?.map(t=>(0,o.h)(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>(0,o.h)(e.NRadioGroup,{...t},{default:()=>(0,o.h)(e.NSpace,{},{default:()=>n.children?.map(t=>(0,o.h)(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>{let a={...t},{value:s}=a,c=a[`onUpdate:value`];return delete a.value,delete a[`onUpdate:value`],(0,o.h)(e.NUpload,{...a,fileList:Array.isArray(s)?s:[],"onUpdate:fileList":e=>c?.(e)},{default:()=>i.slots?.uploadClick?.()||(0,o.h)(e.NButton,{type:`primary`,size:n.attrs?.size??r.size,disabled:a.disabled===!0},{default:()=>`选择文件`}),tip:()=>i.slots?.uploadTip?.()||null})},editor:(t,n)=>{let r={...t},{value:i}=r,a=r[`onUpdate:value`];return delete r.value,delete r[`onUpdate:value`],(0,o.h)(e.C_Editor,{...r,editorId:`editor-${n.prop}`,modelValue:typeof i==`string`?i:``,"onUpdate:modelValue":e=>a?.(e)})}}}const A=D();function j(e,t){return A.register(e,t)}function M(e,t){return A.unregister(e,t)}const N=new Set([`select`,`checkbox`,`radio`,`cascader`]),ee=new Set([`input`,`textarea`,`inputNumber`,`select`,`checkbox`,`radio`,`switch`,`datePicker`,`daterange`,`timePicker`,`cascader`,`colorPicker`]),te=new Set([`input`,`textarea`,`inputNumber`,`rate`,`editor`]);function ne(e){let{formModel:t,visibleOptions:n,config:r,handleFieldChange:i,componentMap:s,instanceSlots:c,asyncOptionsCache:l,asyncLoadingMap:u,renderers:d,setFormItemRef:f,onError:p}=e,m=s,h=k(m),g=(0,o.getCurrentInstance)()?(0,o.inject)(E,void 0):void 0,_=e.registry??g??A,v=e=>d?.value?.[e]??_.get(e)??h[e],y=e=>{let n=O(e.disabled,r.value.disabled,t),o=O(e.readonly,r.value.readonly,t),s=te.has(e.type),c={...ee.has(e.type)?{size:e.attrs?.size??r.value.size}:{},value:a.r(t,e.prop),"onUpdate:value":n=>{O(e.disabled,r.value.disabled,t)||O(e.readonly,r.value.readonly,t)||(a.c(t,e.prop,n),i(e.prop))},disabled:n||o&&!s,readonly:o||e.type===`rate`&&n};return e.type===`textarea`&&(c.type=`textarea`),e.placeholder&&(c.placeholder=e.placeholder),c};function b(e){let t=e.children??[];return Object.prototype.hasOwnProperty.call(l.value,e.prop)?l.value[e.prop]??[]:t}function x(e){return N.has(e.type)?{...e,children:b(e)}:e}function S(e,t){return e.type===`select`&&u.value[e.prop]&&(t.loading=!0),t}let C=e=>{try{let t=x(e),n=v(t.type);return n?n(S(t,(0,o.mergeProps)(t.attrs??{},y(t))),t,r.value,{slots:c,components:m}):(p?.(TypeError(`[C_Form] 未支持的组件类型: ${t.type}`),t.prop),null)}catch(t){return p?.(t,e.prop),null}};function w(e){if(e.label)return e.help?(0,o.h)(`span`,{style:`display:inline-flex;align-items:center;gap:4px`},[e.label,(0,o.h)(m.NTooltip,{trigger:`hover`},{trigger:()=>(0,o.h)(`span`,{style:`cursor:help;opacity:0.5;font-size:14px`,textContent:`ⓘ`}),default:()=>e.help})]):e.label}return{renderFormItem:C,formItems:(0,o.computed)(()=>n.value.map(e=>{let t=!!(e.required||e.rules?.some(e=>e.required)),n=w(e);return(0,o.h)(m.NFormItem,{label:typeof n==`string`?n:void 0,path:e.prop,class:`c-form-field`,key:e.prop,required:t,ref:t=>f?.(e.prop,t)},{...typeof n!=`string`&&n?{label:()=>n}:{},default:()=>C(e)})})),getBaseProps:y}}const P={class:`c-form-default`},F=(0,o.defineComponent)({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(t,n)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,P,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e.formItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(e),{key:e.key??t}))),128))]))}});var I=i.t(F,[[`__scopeId`,`data-v-4313de0c`]]);const L=(0,o.defineComponent)({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=(0,o.computed)(()=>t.layoutConfig?.inline?.itemWidth??280),r=(0,o.computed)(()=>t.layoutConfig?.inline?.gap??16),i=(0,o.computed)(()=>t.layoutConfig?.inline?.rowGap??16),a=(0,o.computed)(()=>t.layoutConfig?.inline?.align??`center`),s=(0,o.computed)(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return a.value}}),c=(0,o.computed)(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),l=(0,o.computed)(()=>({display:`flex`,flexWrap:t.layoutConfig?.inline?.wrap??`wrap`,alignItems:s.value,justifyContent:c.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),u=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},d=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(t,n)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{class:`c-form-inline`,style:(0,o.normalizeStyle)(l.value)},[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e.formItems,(e,t)=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{key:u(e,t),class:`c-form-inline-item`,style:(0,o.normalizeStyle)(d(t))},[((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(e)))],4))),128))],4))}});var R=i.t(L,[[`__scopeId`,`data-v-711f6c00`]]);const z={class:`c-grid-layout`},B={class:`config-header`},V={class:`config-controls`},re={class:`config-label`},H={class:`item-wrapper`},ie=(0,o.defineComponent)({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e,{expose:t}){let n=e,i=(0,o.reactive)({cols:24,gutter:16,responsive:!0}),a=(0,o.computed)(()=>n.layoutConfig?.grid||{}),c=(0,o.computed)(()=>a.value.showConfigPanel),l=(0,o.computed)(()=>a.value.showStats),u=(0,o.computed)(()=>({cols:c.value?i.cols:a.value.cols??24,gutter:c.value?i.gutter:a.value.gutter??16,responsive:c.value?i.responsive:a.value.responsive??!0})),d=(0,o.computed)(()=>({cols:u.value.cols,xGap:a.value.xGap??u.value.gutter,yGap:a.value.yGap??a.value.yGutter??u.value.gutter,responsive:u.value.responsive?`screen`:`self`})),f=(0,o.computed)(()=>[{key:`cols`,label:`列数`,component:s.NInputNumber,value:i.cols,update:e=>{typeof e==`number`&&(i.cols=e)},props:{min:1,max:48,size:n.controlSize??`small`}},{key:`gutter`,label:`间距`,component:s.NInputNumber,value:i.gutter,update:e=>{typeof e==`number`&&(i.gutter=e)},props:{min:0,max:48,size:n.controlSize??`small`}},{key:`responsive`,label:`响应式`,component:s.NSwitch,value:i.responsive,update:e=>{typeof e==`boolean`&&(i.responsive=e)},props:{size:n.controlSize??`small`}}]),p=(0,o.computed)(()=>`列数: ${u.value.cols} | 间距: ${u.value.gutter}px | 项目: ${n.formItems.length}个`),m=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,h=(e,t)=>{let r=n.options?.[e]?.layout;return r?.[t]??r?.grid?.[t]},g=()=>{let{cols:e}=u.value;return e<=12?e:e<=24?12:8},_=e=>{let t=h(e,`span`),n=h(e,`offset`),r=h(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=u.value.cols?t:g(),offset:typeof n==`number`&&n>=0&&n<u.value.cols?n:0,suffix:!!r}};return(0,o.watch)(a,e=>{e.cols!==void 0&&(i.cols=e.cols),e.gutter!==void 0&&(i.gutter=e.gutter),e.responsive!==void 0&&(i.responsive=e.responsive)},{immediate:!0}),t({updateGridConfig:e=>Object.assign(i,e),getCurrentConfig:()=>({...u.value}),getGridInfo:()=>({...u.value,itemCount:n.formItems.length})}),(t,n)=>{let i=s.NCard,a=s.NGridItem,u=s.NGrid,h=s.NAlert;return(0,o.openBlock)(),(0,o.createElementBlock)(`div`,z,[(0,o.createCommentVNode)(` 配置面板 `),c.value?((0,o.openBlock)(),(0,o.createBlock)(i,{key:0,size:e.controlSize??`small`,bordered:!1,class:`config-panel`},{header:(0,o.withCtx)(()=>[(0,o.createElementVNode)(`div`,B,[(0,o.createVNode)(r.t,{name:`mdi:view-grid`,size:18}),n[0]||=(0,o.createElementVNode)(`span`,null,`网格配置`,-1)])]),default:(0,o.withCtx)(()=>[(0,o.createElementVNode)(`div`,V,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(f.value,e=>((0,o.openBlock)(),(0,o.createElementBlock)(`div`,{key:e.key,class:`config-item`},[(0,o.createElementVNode)(`span`,re,(0,o.toDisplayString)(e.label)+`:`,1),((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(e.component),(0,o.mergeProps)({value:e.value},{ref_for:!0},e.props,{"onUpdate:value":e.update}),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1},8,[`size`])):(0,o.createCommentVNode)(`v-if`,!0),(0,o.createCommentVNode)(` 网格容器 `),(0,o.createVNode)(u,(0,o.mergeProps)(d.value,{class:`grid-container`}),{default:(0,o.withCtx)(()=>[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(e.formItems,(e,t)=>((0,o.openBlock)(),(0,o.createBlock)(a,(0,o.mergeProps)({key:m(e,t)},{ref_for:!0},_(t),{class:`grid-item`}),{default:(0,o.withCtx)(()=>[(0,o.createElementVNode)(`div`,H,[((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(e)))])]),_:2},1040))),128))]),_:1},16),(0,o.createCommentVNode)(` 统计信息 `),l.value?((0,o.openBlock)(),(0,o.createBlock)(h,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:(0,o.withCtx)(()=>[(0,o.createVNode)(r.t,{name:`mdi:information-outline`,size:16}),n[1]||=(0,o.createTextVNode)(` 网格信息 `,-1)]),default:(0,o.withCtx)(()=>[(0,o.createTextVNode)(` `+(0,o.toDisplayString)(p.value),1)]),_:1})):(0,o.createCommentVNode)(`v-if`,!0)])}}});var ae=i.t(ie,[[`__scopeId`,`data-v-4758bc1e`]]);const oe=[`default`,`inline`,`grid`],U={NFormItem:s.NFormItem,NInput:s.NInput,NInputNumber:s.NInputNumber,NSwitch:s.NSwitch,NSelect:s.NSelect,NCheckboxGroup:s.NCheckboxGroup,NCheckbox:s.NCheckbox,NRadioGroup:s.NRadioGroup,NRadio:s.NRadio,NButton:s.NButton,NSpace:s.NSpace,NTooltip:s.NTooltip,NSlider:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./slider.cjs`))),NRate:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./rate.cjs`))),NDatePicker:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./date-picker.cjs`))),NTimePicker:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./time-picker.cjs`))),NCascader:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./cascader.cjs`))),NColorPicker:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./color-picker.cjs`))),NUpload:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./upload.cjs`))),C_Editor:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./C_Editor.cjs`)).then(e=>e.C_Editor))},W={default:I,inline:R,grid:ae,card:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Card.cjs`))),tabs:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Tabs.cjs`))),steps:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Steps.cjs`))),dynamic:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Dynamic.cjs`))),custom:(0,o.defineAsyncComponent)(()=>Promise.resolve().then(()=>require(`./Custom.cjs`)))},G=(0,o.defineComponent)({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})},renderers:{}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(n,{expose:r,emit:i}){let a=n,c=i,l=u(),f=(0,o.useAttrs)(),p=(0,o.computed)(()=>d(a.config,l)),g=(0,o.computed)(()=>{let{size:e}=f;return m({...p.value,...e===`small`||e===`medium`||e===`large`?{size:e}:{}})}),_=(0,o.computed)(()=>p.value.density!==void 0),v=(0,o.computed)(()=>e.t(g.value.density)),y=(0,o.computed)(()=>{if(!_.value)return;let{gap:e,rowGap:t,padding:n,formItemGap:r}=v.value;return{"--c-form-gap":`${e}px`,"--c-form-row-gap":`${t}px`,"--c-form-padding":`${n}px`,"--c-form-item-gap":`${r}px`}}),{t:b}=t.t(()=>g.value.locale),x=(0,o.ref)(null),S=(0,o.ref)(null),C=(0,o.computed)(()=>oe.includes(g.value.layout)||S.value===g.value.layout),{formModel:w,formRules:E,visibleOptions:D,initialize:O,handleFieldChange:k,validate:A,validateField:j,validateStep:M,validateTab:N,validateDynamicFields:ee,validateCustomGroup:te,clearValidation:P,getModel:F,setFields:I,resetFields:L,setFieldValue:R,getFieldValue:z,setFieldsValue:B,handleSubmit:V,handleReset:re,isDirty:H,getChangedFields:ie,isFieldDirty:ae,markAsClean:G,asyncOptionsCache:se,asyncLoadingMap:K,asyncErrorMap:q,reloadOptions:ce,setFormItemRef:le,isSubmitting:J,submit:Y}=T((0,o.computed)(()=>a.options),g,x,c,(0,o.computed)(()=>a.modelValue),C),ue=(0,o.computed)(()=>w.value),X=()=>F(),de=(0,o.computed)(()=>({form:x.value,model:ue.value,validate:A,validateField:j,reset:L,setFields:I,getModel:X,clearValidation:P,submit:Y,reloadOptions:ce,submitting:J.value})),fe=(0,o.getCurrentInstance)(),pe=()=>Object.keys(fe?.slots??{}).filter(e=>![`action`,`action-extra`,`step-actions`].includes(e)),{formItems:Z}=ne({formModel:w,visibleOptions:D,config:g,handleFieldChange:k,componentMap:U,instanceSlots:fe?.slots,asyncOptionsCache:se,asyncLoadingMap:K,renderers:(0,o.computed)(()=>a.renderers),setFormItemRef:le,onError:(e,t)=>g.value.onError?.(e,{source:`render`,field:t})}),me=(0,o.computed)(()=>W[g.value.layout]||W.default),Q=(0,o.computed)(()=>{let e=g.value,t={type:e.layout,grid:e.grid,inline:e.inline,card:e.card,tabs:e.tabs,steps:e.steps,dynamic:e.dynamic,custom:e.custom};if(!_.value)return t;let{gap:n,rowGap:r}=v.value;return{...t,grid:{gutter:n,yGutter:e.grid?.gutter??r,...e.grid},inline:{gap:n,rowGap:r,...e.inline},card:{spacing:n,...e.card},tabs:{size:e.size,...e.tabs},steps:{size:e.size===`small`?`small`:`medium`,...e.steps},dynamic:{...e.dynamic,grid:{gutter:n,...e.dynamic?.grid}}}}),he=(0,o.computed)(()=>h(g.value)),ge=(0,o.computed)(()=>{let{layout:e}=g.value;return{...e===`steps`?{beforeStepChange:Ce,validateStep:we,submitting:J.value,disabled:g.value.disabled||g.value.readonly}:e===`tabs`?{beforeTabChange:be,validateTab:xe}:{},controlSize:_.value?g.value.size:void 0,onVnodeMounted:()=>{S.value=e}}}),$=(e,...t)=>{let n=g.value[e];if(typeof n==`function`)try{let e=n(...t);e instanceof Promise&&e.catch(e=>g.value.onError?.(e,{source:`callback`}))}catch(e){g.value.onError?.(e,{source:`callback`})}},_e=e=>{g.value.onFieldsChange?.(e)},ve=e=>{c(`validate-success`,e)},ye=e=>{c(`validate-error`,e)},be=async(e,t)=>{try{return await g.value.onTabBeforeChange?.(e,t)!==!1}catch(e){return g.value.onError?.(e,{source:`callback`}),!1}},xe=async e=>{let t=await N(e);return t&&g.value.onTabValidate?.(e),t},Se=(e,t)=>{g.value.onStepChange?.(e,t)},Ce=async(e,t)=>{try{return await g.value.onStepBeforeChange?.(e,t)!==!1}catch(e){return g.value.onError?.(e,{source:`callback`}),!1}},we=async(e,t)=>{try{return await M(t)?(g.value.onStepValidate?.(e),!0):!1}catch{return!1}};return r({validate:A,validateField:j,validateStep:M,validateTab:N,validateDynamicFields:ee,validateCustomGroup:te,clearValidation:P,getModel:F,setFields:I,resetFields:L,setFieldValue:R,getFieldValue:z,setFieldsValue:B,formRef:x,formModel:w,initialize:O,layoutType:(0,o.computed)(()=>g.value.layout),shouldShowDefaultActions:he,isDirty:H,getChangedFields:ie,isFieldDirty:ae,markAsClean:G,asyncLoadingMap:K,asyncErrorMap:q,reloadOptions:ce,isSubmitting:J,submit:Y}),(e,t)=>((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.NForm),(0,o.mergeProps)({ref_key:`formRef`,ref:x,class:[`c-form`,_.value&&`c-form--${g.value.density}`],style:y.value,model:(0,o.unref)(w),rules:(0,o.unref)(E),"validate-on-rule-change":!1,"label-placement":g.value.labelPlacement,"label-width":g.value.labelWidth,size:g.value.size,disabled:g.value.disabled,readonly:g.value.readonly},e.$attrs,{onSubmit:(0,o.withModifiers)((0,o.unref)(Y),[`prevent`])}),{default:(0,o.withCtx)(()=>[(0,o.createCommentVNode)(` 布局组件渲染 `),((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(me.value),(0,o.mergeProps)({key:g.value.layout,"form-items":(0,o.unref)(Z),"layout-config":Q.value,options:(0,o.unref)(D),"form-data":(0,o.unref)(w)},ge.value,{onTabChange:t[0]||=(e,t)=>$(`onTabChange`,e,t),onStepChange:Se,onFieldAdd:t[1]||=e=>$(`onFieldAdd`,e),onFieldRemove:t[2]||=e=>$(`onFieldRemove`,e),onFieldToggle:t[3]||=(e,t)=>$(`onFieldToggle`,e,t),onFieldsClear:t[4]||=e=>$(`onFieldsClear`),onRenderModeChange:t[5]||=e=>$(`onRenderModeChange`,e),onGroupToggle:t[6]||=(e,t)=>$(`onGroupToggle`,e,t),onGroupReset:t[7]||=e=>$(`onGroupReset`,e),onValidateSuccess:ve,onValidateError:ye,onFieldsChange:_e}),(0,o.createSlots)({"step-actions":(0,o.withCtx)(t=>[(0,o.renderSlot)(e.$slots,`step-actions`,(0,o.mergeProps)(t,{submit:(0,o.unref)(Y),submitting:(0,o.unref)(J)}),()=>[t.isLastStep&&g.value.showActions?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.NButton),{key:0,type:`primary`,size:g.value.size,loading:(0,o.unref)(J)||!C.value,disabled:!C.value||(0,o.unref)(J)||g.value.disabled||g.value.readonly,onClick:(0,o.unref)(Y)},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(g.value.submitText||(0,o.unref)(b)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])):(0,o.createCommentVNode)(`v-if`,!0)],!0)]),_:2},[(0,o.renderList)(pe(),t=>({name:t,fn:(0,o.withCtx)(n=>[(0,o.renderSlot)(e.$slots,t,(0,o.normalizeProps)((0,o.guardReactiveProps)(n)),void 0,!0)])}))]),1040,[`form-items`,`layout-config`,`options`,`form-data`])),(0,o.createCommentVNode)(` 表单操作按钮区域(只在特定布局中显示) `),he.value?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.NFormItem),{key:0,class:`c-form-actions`},{default:(0,o.withCtx)(()=>[(0,o.renderSlot)(e.$slots,`action`,(0,o.normalizeProps)((0,o.guardReactiveProps)(de.value)),()=>[(0,o.createVNode)((0,o.unref)(s.NSpace),{justify:`end`,size:_.value?v.value.gap:void 0,style:{width:`100%`}},{default:(0,o.withCtx)(()=>[(0,o.createVNode)((0,o.unref)(s.NButton),{size:g.value.size,disabled:!C.value||(0,o.unref)(J)||g.value.disabled||g.value.readonly,onClick:(0,o.unref)(re)},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(g.value.resetText||(0,o.unref)(b)(`common.reset`)),1)]),_:1},8,[`size`,`disabled`,`onClick`]),(0,o.renderSlot)(e.$slots,`action-extra`,(0,o.normalizeProps)((0,o.guardReactiveProps)(de.value)),void 0,!0),(0,o.createVNode)((0,o.unref)(s.NButton),{type:`primary`,size:g.value.size,loading:(0,o.unref)(J)||!C.value,disabled:!C.value||(0,o.unref)(J)||g.value.disabled||g.value.readonly,onClick:(0,o.unref)(V)},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(g.value.submitText||(0,o.unref)(b)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])]),_:3},8,[`size`])],!0)]),_:3})):(0,o.createCommentVNode)(`v-if`,!0)]),_:3},16,[`class`,`style`,`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`,`onSubmit`]))}});var se=i.t(G,[[`__scopeId`,`data-v-d94e0e8f`]]);function K(e){return e}function q(e){return e}function ce(e){let t=(0,o.shallowRef)(a.t(e.initialValues)),n=(0,o.shallowRef)(null);return{model:t,formRef:n,bindings:(0,o.computed)(()=>({modelValue:t.value,options:(0,o.toValue)(e.options),config:(0,o.toValue)(e.config),"onUpdate:modelValue":e=>{t.value=a.t(e)}})),validate:()=>n.value?.validate()??Promise.resolve(),submit:()=>n.value?.submit()??Promise.resolve(!1),reset:()=>{n.value?(n.value.resetFields(),t.value=a.t(n.value.getModel())):t.value=a.t(e.initialValues)},getValues:()=>a.t(n.value?.getModel()??t.value),setValues:async(e,r=!1)=>{n.value?(await n.value.setFieldsValue(e,r),t.value=a.t(n.value.getModel())):t.value={...t.value,...a.t(e)}}}}Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return h}});
|
package/dist/helpers.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./density.js";import{t}from"./useComponentLocale.js";import{t as n}from"./feedback.js";import{t as r}from"./C_Icon2.js";import{t as i}from"./export-helper.js";import{a,c as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./data.js";import{Fragment as p,computed as m,createBlock as h,createCommentVNode as g,createElementBlock as _,createElementVNode as v,createSlots as y,createTextVNode as b,createVNode as x,defineAsyncComponent as S,defineComponent as C,getCurrentInstance as w,guardReactiveProps as T,h as E,inject as D,mergeProps as O,nextTick as k,normalizeProps as A,normalizeStyle as j,onScopeDispose as ee,openBlock as M,reactive as te,ref as N,renderList as P,renderSlot as F,resolveComponent as ne,resolveDynamicComponent as I,shallowReactive as re,shallowRef as L,toDisplayString as R,toValue as ie,unref as z,useAttrs as ae,watch as B,withCtx as V,withModifiers as oe}from"vue";import{NAlert as H,NButton as U,NCard as W,NCheckbox as se,NCheckboxGroup as G,NForm as ce,NFormItem as le,NGrid as ue,NGridItem as de,NInput as fe,NInputNumber as K,NRadio as pe,NRadioGroup as me,NSelect as he,NSpace as ge,NSwitch as _e,NTooltip as ve}from"naive-ui";import{BasicRules as ye,NAIVE_COMBOS as be,PRESET_RULES as q,SPEC_RULES as xe,toNaiveRule as Se}from"@robot-admin/form-validate";const J=Symbol(`c-form-global-config`);function Y(){return w()?D(J,{}):{}}function Ce(e,t){let n=e??{},r=(e,t)=>e||t?{...e,...t}:void 0;return{...t,...n,grid:r(t.grid,n.grid),inline:r(t.inline,n.inline),card:r(t.card,n.card),tabs:r(t.tabs,n.tabs),steps:r(t.steps,n.steps),dynamic:r(t.dynamic,n.dynamic),custom:r(t.custom,n.custom)}}const X={layout:`default`,labelPlacement:`left`,labelWidth:`auto`,size:`medium`,density:`default`,disabled:!1,readonly:!1,showActions:!0,validateOnChange:!1,preserveRemovedFields:!1,submitText:``,resetText:``,submitSuccessText:``,resetSuccessText:``,mode:`create`},we=[`steps`,`custom`];function Te(t){return{...X,...t,size:t?.size??e(t?.density).size}}function Ee(e){return!(e.showActions===!1||we.includes(e.layout))}function Z(e,t=new Set){if(!(typeof e!=`object`||!e||t.has(e))){if(t.add(e),e instanceof Map){e.forEach((e,n)=>{Z(n,t),Z(e,t)});return}if(e instanceof Set){e.forEach(e=>Z(e,t));return}Object.values(e).forEach(e=>Z(e,t))}}function De(e,t){let n=N({}),r=m(()=>i().length>0);function i(){let r=n.value,i=t?ie(t):void 0,o=new Set(i??[...Object.keys(r),...Object.keys(e)]),s=[];for(let t of o){let n=u(e,t);Z(n),a(u(r,t),n)||s.push(t)}return s}function o(t){return!a(u(n.value,t),u(e,t))}function s(){n.value=f(e)}function c(){return f(n.value)}return{isDirty:r,getChangedFields:i,isFieldDirty:o,markAsClean:s,getCleanModel:c}}const Oe=q,ke=be;function Ae(e=[]){return e.map(e=>{let t=`validate`in e&&typeof e.validate==`function`?Se(e):e;return{...t,...Array.isArray(t.trigger)?{trigger:[...t.trigger]}:{}}})}function je(e,t){return Ae([{...ye.required(e,[`input`,`change`,`blur`]),message:t}])[0]}const Me={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:[],upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:!1};function Ne(e){return f((e.value===void 0?Me[e.type]:e.value)??null)}function Pe(e){let t=new Set;e.forEach((e,n)=>{if(!e.prop?.trim())throw TypeError(`[C_Form] options[${n}].prop 不能为空`);if(t.has(e.prop))throw TypeError(`[C_Form] 字段 prop 重复: ${e.prop}`);t.add(e.prop)})}function Fe(e,r,i,p,h,g){let _=te(f(h?.value??(r.value.mode===`edit`?r.value.initialValues:void 0)??{})),v=te({}),y=new Map,b=N({}),x=N({}),S=N({}),C=N(!1),w=new Map,T=!1,E,D=new Map,O=new Map,A=new Map,j=new Map,M=new Set,P=!1,F=!1,ne=0,I=n(()=>r.value.feedback),{t:re}=t(()=>r.value.locale),{isDirty:L,getChangedFields:R,isFieldDirty:ie,markAsClean:z,getCleanModel:ae}=De(_,()=>e.value.map(e=>e.prop));function V(e,t,n){if(!T)try{r.value.onError?r.value.onError(e,{source:t,field:n}):I.error(e instanceof Error?e.message:String(e),e)}catch{}}function oe(e,t){if(!(T||!t))try{I[e](t)}catch{}}let H=m(()=>e.value.filter(e=>{if(e.show===!1)return!1;if(!e.showWhen)return!0;try{return e.showWhen(_)}catch(t){return V(t,`callback`,e.prop),!1}}));function U(){F=!0;let e=++ne;k(()=>{e===ne&&(F=!1)})}function W(){return f(_)}function se(t){let n=t?f(t):{};return e.value.forEach(e=>{s(n,e.prop)||o(n,e.prop,Ne(e))}),n}function G(e){try{let t=Ae(e.rulesWhen?e.rulesWhen(_):e.rules);if(w.delete(e.prop),e.required&&!t.some(e=>e.required)){let n=e.label||e.prop;t.unshift(je(n,re(`form.required`,{label:n})))}if(e.crossFieldValidator){let n=e.crossFieldValidator;t.push({async validator(){let e=await n(_);if(e)throw Error(e)},trigger:[`change`,`blur`]})}if(t.length===0){delete v[e.prop];return}v[e.prop]=t.map(t=>({...t,key:e.prop}))}catch(t){delete v[e.prop],w.set(e.prop,t),V(t,`callback`,e.prop)}}function ce(){e.value.forEach(e=>{(e.rulesWhen||e.crossFieldValidator)&&G(e)})}function le(e){M.forEach(t=>{e.has(t)||(y.delete(t),delete v[t],w.delete(t),K(t),A.delete(t),r.value.preserveRemovedFields||c(_,t))})}function ue(t=!1){try{Pe(e.value);let n=W(),r=new Set(e.value.map(e=>e.prop));le(r),e.value.forEach(e=>{s(_,e.prop)||o(_,e.prop,Ne(e)),G(e),pe(e)}),M=r,q(fe(n),!1),t&&k(z)}catch(e){throw V(e,`initialize`),e}}function de(e){let t=W();U(),d(_,se(e)),q(fe(t),!1)}function fe(t){return[...new Set([...Object.keys(t),...Object.keys(_),...e.value.map(e=>e.prop)])].filter(e=>!a(u(t,e),u(_,e)))}function K(e){O.get(e)?.abort(),O.delete(e),D.delete(e),j.delete(e),delete b.value[e],delete x.value[e],delete S.value[e]}function pe(e){if(A.get(e.prop)!==e.asyncOptions){if(K(e.prop),!e.asyncOptions){A.delete(e.prop);return}A.set(e.prop,e.asyncOptions),me(e,`initialize`)}}function me(e,t){if(T)return;let n=j.get(e.prop),r={item:e,reason:n?.reason===`initialize`?n.reason:t};j.set(e.prop,r),k(()=>{j.get(e.prop)===r&&(j.delete(e.prop),_e(r.item,r.reason))})}function he(e,t,n){return T||n.signal.aborted||D.get(e)!==t||O.get(e)!==n}function ge(e){return!T&&!!e.asyncOptions&&A.get(e.prop)===e.asyncOptions}async function _e(e,t){if(!ge(e))return;let{prop:n}=e,r=(D.get(n)??0)+1;D.set(n,r),O.get(n)?.abort();let i=new AbortController;O.set(n,i),x.value[n]=!0,delete S.value[n];try{let a=await e.asyncOptions(W(),{field:n,reason:t,signal:i.signal});if(he(n,r,i))return;if(!Array.isArray(a))throw TypeError(`[C_Form] ${n}.asyncOptions 必须返回数组`);b.value[n]=f([...a])}catch(e){if(he(n,r,i))return;S.value[n]=e,V(e,`async-options`,n)}finally{D.get(n)===r&&O.get(n)===i&&(x.value[n]=!1,O.delete(n))}}async function ve(t){let n=e.value.filter(e=>e.asyncOptions&&(!t||e.prop===t));if(t&&n.length===0)throw Error(`[C_Form] 未找到异步选项字段: ${t}`);await Promise.all(n.map(e=>(j.delete(e.prop),_e(e,`manual`))))}function ye(){let t=e.value.filter(e=>e.valueWhen),n=new Set;if(t.length===0)return[];for(let e=0;e<=t.length;e+=1){let e=!1;for(let r of t)try{let t=r.valueWhen?.(_);t!==void 0&&!a(u(_,r.prop),t)&&(o(_,r.prop,f(t)),n.add(r.prop),e=!0)}catch(e){V(e,`callback`,r.prop)}if(!e)return[...n]}return V(Error(`[C_Form] valueWhen 存在循环依赖,已停止继续计算`),`callback`),[...n]}function be(t){let n=t.map(e=>l(e).join(`.`));return e.value.filter(e=>!e.asyncOptions||!e.dependsOn?!1:(Array.isArray(e.dependsOn)?e.dependsOn:[e.dependsOn]).some(e=>{let t=l(e).join(`.`);return n.some(e=>e===t||e.startsWith(`${t}.`)||t.startsWith(`${e}.`))}))}function q(e,t=!0){let n=[...new Set([...e,...ye()])];ce(),be(n).forEach(e=>{me(e,`dependency`)}),t&&r.value.validateOnChange&&k(()=>{T||Y(n).catch(()=>void 0)})}function xe(e){q([e])}function Se(e,t){t?y.set(e,t):y.delete(e)}async function J(){if(g?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);try{let e=H.value.find(e=>w.has(e.prop));if(e)throw w.get(e.prop);if(await i.value.validate(),T)throw Error(`[C_Form] 表单已卸载`);p(`validate-success`,W())}catch(e){throw T||p(`validate-error`,e),e}}async function Y(e){if(g?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);let t=[...new Set(Array.isArray(e)?e:[e])],n=t.find(e=>w.has(e));if(n)throw w.get(n);let r=[],a=t.flatMap(e=>{let t=y.get(e);return t?[t.validate()]:(r.push(e),[])});r.length>0&&a.push(i.value.validate(void 0,e=>r.includes(String(e.key??``))));let o=(await Promise.allSettled(a)).filter(e=>e.status===`rejected`).map(e=>e.reason);if(o.length>0)throw o}function Ce(e){if(!e){i.value?.restoreValidation();return}(Array.isArray(e)?e:[e]).forEach(e=>y.get(e)?.restoreValidation())}async function X(e){let t=H.value.filter(e).map(e=>e.prop);if(t.length===0)return!0;try{return await Y(t),!0}catch{return!1}}function we(e){let t=typeof e==`string`?e:r.value.steps?.steps?.[e]?.key;return t?X(e=>e.layout?.step===t):Promise.resolve(!0)}function Te(e){return X(t=>t.layout?.tab===e)}function Ee(){return X(e=>!!e.layout?.dynamic)}function Z(e){return X(t=>t.layout?.group===e)}function Oe(e){Object.entries(f(e)).forEach(([e,t])=>{o(_,e,t)}),q(Object.keys(e))}function ke(){let e=W();d(_,ae()),Ce(),q(fe(e),!1),oe(`info`,r.value.resetSuccessText)}async function Me(e,t,n=!1){o(_,e,f(t)),xe(e),n&&await Y(e)}function Fe(e){return f(u(_,e))}async function Q(e,t=!1){Oe(e),t&&await Y(Object.keys(e))}function Ie(){return T||g?.value===!1||C.value||r.value.disabled||r.value.readonly}function $(e,t,n){return!T&&!e.signal.aborted&&g?.value!==!1&&!r.value.disabled&&!r.value.readonly&&n!==null&&i.value===n&&a(_,t)}async function Le(){if(Ie())return!1;let e=W(),t=i.value,n=new AbortController;E=n,C.value=!0;try{if(await J(),!$(n,e,t))return!1;let i={model:e,form:t};try{await r.value.onSubmit?.(i,{signal:n.signal})}catch(e){return n.signal.aborted||V(e,`submit`),!1}return n.signal.aborted?!1:(p(`submit`,i),oe(`success`,r.value.submitSuccessText),!0)}catch{return!1}finally{E===n&&(E=void 0),C.value=!1}}function Re(){ue(!0);let e=h?.value??(r.value.mode===`edit`?r.value.initialValues:void 0);e&&de(e),k(z)}return B(e,()=>{let e=!P;e&&U(),ue(e),P=!0},{deep:!0,immediate:!0}),h&&B(h,e=>{e!==void 0&&!a(_,e)&&de(e)},{deep:!0,immediate:!0}),B(()=>[r.value.mode,r.value.initialValues],([e,t])=>{h?.value!==void 0||e!==`edit`||!t||(de(t),k(z))},{deep:!0}),B(_,e=>{F||p(`update:modelValue`,f(e))},{deep:!0,flush:`post`}),ee(()=>{T=!0,E?.abort(),O.forEach(e=>e.abort()),O.clear(),j.clear(),y.clear()}),{formModel:_,formRules:v,visibleOptions:H,initialize:Re,handleFieldChange:xe,setFormItemRef:Se,validate:J,validateField:Y,validateStep:we,validateTab:Te,validateDynamicFields:Ee,validateCustomGroup:Z,clearValidation:Ce,getModel:W,setFields:Oe,resetFields:ke,setFieldValue:Me,getFieldValue:Fe,setFieldsValue:Q,submit:Le,handleSubmit:Le,handleReset:ke,isSubmitting:C,isDirty:L,getChangedFields:R,isFieldDirty:ie,markAsClean:z,asyncOptionsCache:b,asyncLoadingMap:x,asyncErrorMap:S,reloadOptions:ve}}const Q=Symbol(`c-form-renderer-registry`);function Ie(e={}){let t=re(new Map),n={get:e=>t.get(e)?.renderer,register:(e,n)=>{if(!e.trim())throw TypeError(`[C_Form] renderer type 不能为空`);if(typeof n!=`function`)throw TypeError(`[C_Form] renderer ${e} 必须是函数`);let r={renderer:n};return t.set(e,r),()=>t.get(e)===r&&t.delete(e)},unregister:(e,n)=>{let r=t.get(e);return!r||n&&r.renderer!==n?!1:t.delete(e)}};return Object.entries(e).forEach(([e,t])=>{n.register(e,t)}),n}function $(e,t,n){return e===void 0?t:typeof e==`function`?e(n):e}function Le(e){return{input:t=>E(e.NInput,{...t}),textarea:t=>E(e.NInput,{...t,type:`textarea`}),inputNumber:t=>E(e.NInputNumber,{...t}),switch:t=>E(e.NSwitch,{...t}),slider:t=>E(e.NSlider,{...t}),rate:t=>E(e.NRate,{...t}),datePicker:t=>E(e.NDatePicker,{...t}),daterange:t=>E(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>E(e.NTimePicker,{...t}),cascader:t=>E(e.NCascader,{...t}),colorPicker:t=>E(e.NColorPicker,{...t}),select:(t,n)=>E(e.NSelect,{...t,options:n.children?.map(e=>({...e}))||[]}),checkbox:(t,n)=>E(e.NCheckboxGroup,{...t},{default:()=>E(e.NSpace,{},{default:()=>n.children?.map(t=>E(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>E(e.NRadioGroup,{...t},{default:()=>E(e.NSpace,{},{default:()=>n.children?.map(t=>E(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>{let a={...t},{value:o}=a,s=a[`onUpdate:value`];return delete a.value,delete a[`onUpdate:value`],E(e.NUpload,{...a,fileList:Array.isArray(o)?o:[],"onUpdate:fileList":e=>s?.(e)},{default:()=>i.slots?.uploadClick?.()||E(e.NButton,{type:`primary`,size:n.attrs?.size??r.size,disabled:a.disabled===!0},{default:()=>`选择文件`}),tip:()=>i.slots?.uploadTip?.()||null})},editor:(t,n)=>{let r={...t},{value:i}=r,a=r[`onUpdate:value`];return delete r.value,delete r[`onUpdate:value`],E(e.C_Editor,{...r,editorId:`editor-${n.prop}`,modelValue:typeof i==`string`?i:``,"onUpdate:modelValue":e=>a?.(e)})}}}const Re=Ie();function ze(e,t){return Re.register(e,t)}function Be(e,t){return Re.unregister(e,t)}const Ve=new Set([`select`,`checkbox`,`radio`,`cascader`]),He=new Set([`input`,`textarea`,`inputNumber`,`select`,`checkbox`,`radio`,`switch`,`datePicker`,`daterange`,`timePicker`,`cascader`,`colorPicker`]),Ue=new Set([`input`,`textarea`,`inputNumber`,`rate`,`editor`]);function We(e){let{formModel:t,visibleOptions:n,config:r,handleFieldChange:i,componentMap:a,instanceSlots:s,asyncOptionsCache:c,asyncLoadingMap:l,renderers:d,setFormItemRef:f,onError:p}=e,h=a,g=Le(h),_=w()?D(Q,void 0):void 0,v=e.registry??_??Re,y=e=>d?.value?.[e]??v.get(e)??g[e],b=e=>{let n=$(e.disabled,r.value.disabled,t),a=$(e.readonly,r.value.readonly,t),s=Ue.has(e.type),c={...He.has(e.type)?{size:e.attrs?.size??r.value.size}:{},value:u(t,e.prop),"onUpdate:value":n=>{$(e.disabled,r.value.disabled,t)||$(e.readonly,r.value.readonly,t)||(o(t,e.prop,n),i(e.prop))},disabled:n||a&&!s,readonly:a||e.type===`rate`&&n};return e.type===`textarea`&&(c.type=`textarea`),e.placeholder&&(c.placeholder=e.placeholder),c};function x(e){let t=e.children??[];return Object.prototype.hasOwnProperty.call(c.value,e.prop)?c.value[e.prop]??[]:t}function S(e){return Ve.has(e.type)?{...e,children:x(e)}:e}function C(e,t){return e.type===`select`&&l.value[e.prop]&&(t.loading=!0),t}let T=e=>{try{let t=S(e),n=y(t.type);return n?n(C(t,O(t.attrs??{},b(t))),t,r.value,{slots:s,components:h}):(p?.(TypeError(`[C_Form] 未支持的组件类型: ${t.type}`),t.prop),null)}catch(t){return p?.(t,e.prop),null}};function k(e){if(e.label)return e.help?E(`span`,{style:`display:inline-flex;align-items:center;gap:4px`},[e.label,E(h.NTooltip,{trigger:`hover`},{trigger:()=>E(`span`,{style:`cursor:help;opacity:0.5;font-size:14px`,textContent:`ⓘ`}),default:()=>e.help})]):e.label}return{renderFormItem:T,formItems:m(()=>n.value.map(e=>{let t=!!(e.required||e.rules?.some(e=>e.required)),n=k(e);return E(h.NFormItem,{label:typeof n==`string`?n:void 0,path:e.prop,class:`c-form-field`,key:e.prop,required:t,ref:t=>f?.(e.prop,t)},{...typeof n!=`string`&&n?{label:()=>n}:{},default:()=>T(e)})})),getBaseProps:b}}const Ge={class:`c-form-default`};var Ke=i(C({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(t,n)=>(M(),_(`div`,Ge,[(M(!0),_(p,null,P(e.formItems,(e,t)=>(M(),h(I(e),{key:e.key??t}))),128))]))}}),[[`__scopeId`,`data-v-4313de0c`]]),qe=i(C({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=m(()=>t.layoutConfig?.inline?.itemWidth??280),r=m(()=>t.layoutConfig?.inline?.gap??16),i=m(()=>t.layoutConfig?.inline?.rowGap??16),a=m(()=>t.layoutConfig?.inline?.align??`center`),o=m(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return a.value}}),s=m(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),c=m(()=>({display:`flex`,flexWrap:t.layoutConfig?.inline?.wrap??`wrap`,alignItems:o.value,justifyContent:s.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),l=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},u=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(t,n)=>(M(),_(`div`,{class:`c-form-inline`,style:j(c.value)},[(M(!0),_(p,null,P(e.formItems,(e,t)=>(M(),_(`div`,{key:l(e,t),class:`c-form-inline-item`,style:j(u(t))},[(M(),h(I(e)))],4))),128))],4))}}),[[`__scopeId`,`data-v-711f6c00`]]);const Je={class:`c-grid-layout`},Ye={class:`config-header`},Xe={class:`config-controls`},Ze={class:`config-label`},Qe={class:`item-wrapper`};var $e=i(C({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e,{expose:t}){let n=e,i=te({cols:24,gutter:16,responsive:!0}),a=m(()=>n.layoutConfig?.grid||{}),o=m(()=>a.value.showConfigPanel),s=m(()=>a.value.showStats),c=m(()=>({cols:o.value?i.cols:a.value.cols??24,gutter:o.value?i.gutter:a.value.gutter??16,responsive:o.value?i.responsive:a.value.responsive??!0})),l=m(()=>({cols:c.value.cols,xGap:a.value.xGap??c.value.gutter,yGap:a.value.yGap??a.value.yGutter??c.value.gutter,responsive:c.value.responsive?`screen`:`self`})),u=m(()=>[{key:`cols`,label:`列数`,component:K,value:i.cols,update:e=>{typeof e==`number`&&(i.cols=e)},props:{min:1,max:48,size:n.controlSize??`small`}},{key:`gutter`,label:`间距`,component:K,value:i.gutter,update:e=>{typeof e==`number`&&(i.gutter=e)},props:{min:0,max:48,size:n.controlSize??`small`}},{key:`responsive`,label:`响应式`,component:_e,value:i.responsive,update:e=>{typeof e==`boolean`&&(i.responsive=e)},props:{size:n.controlSize??`small`}}]),d=m(()=>`列数: ${c.value.cols} | 间距: ${c.value.gutter}px | 项目: ${n.formItems.length}个`),f=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,y=(e,t)=>{let r=n.options?.[e]?.layout;return r?.[t]??r?.grid?.[t]},S=()=>{let{cols:e}=c.value;return e<=12?e:e<=24?12:8},C=e=>{let t=y(e,`span`),n=y(e,`offset`),r=y(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=c.value.cols?t:S(),offset:typeof n==`number`&&n>=0&&n<c.value.cols?n:0,suffix:!!r}};return B(a,e=>{e.cols!==void 0&&(i.cols=e.cols),e.gutter!==void 0&&(i.gutter=e.gutter),e.responsive!==void 0&&(i.responsive=e.responsive)},{immediate:!0}),t({updateGridConfig:e=>Object.assign(i,e),getCurrentConfig:()=>({...c.value}),getGridInfo:()=>({...c.value,itemCount:n.formItems.length})}),(t,n)=>{let i=W,a=de,c=ue,m=H;return M(),_(`div`,Je,[g(` 配置面板 `),o.value?(M(),h(i,{key:0,size:e.controlSize??`small`,bordered:!1,class:`config-panel`},{header:V(()=>[v(`div`,Ye,[x(r,{name:`mdi:view-grid`,size:18}),n[0]||=v(`span`,null,`网格配置`,-1)])]),default:V(()=>[v(`div`,Xe,[(M(!0),_(p,null,P(u.value,e=>(M(),_(`div`,{key:e.key,class:`config-item`},[v(`span`,Ze,R(e.label)+`:`,1),(M(),h(I(e.component),O({value:e.value},{ref_for:!0},e.props,{"onUpdate:value":e.update}),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1},8,[`size`])):g(`v-if`,!0),g(` 网格容器 `),x(c,O(l.value,{class:`grid-container`}),{default:V(()=>[(M(!0),_(p,null,P(e.formItems,(e,t)=>(M(),h(a,O({key:f(e,t)},{ref_for:!0},C(t),{class:`grid-item`}),{default:V(()=>[v(`div`,Qe,[(M(),h(I(e)))])]),_:2},1040))),128))]),_:1},16),g(` 统计信息 `),s.value?(M(),h(m,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:V(()=>[x(r,{name:`mdi:information-outline`,size:16}),n[1]||=b(` 网格信息 `,-1)]),default:V(()=>[b(` `+R(d.value),1)]),_:1})):g(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-4758bc1e`]]);const et=[`default`,`inline`,`grid`],tt={NFormItem:le,NInput:fe,NInputNumber:K,NSwitch:_e,NSelect:he,NCheckboxGroup:G,NCheckbox:se,NRadioGroup:me,NRadio:pe,NButton:U,NSpace:ge,NTooltip:ve,NSlider:S(()=>import(`./slider.js`)),NRate:S(()=>import(`./rate.js`)),NDatePicker:S(()=>import(`./date-picker.js`)),NTimePicker:S(()=>import(`./time-picker.js`)),NCascader:S(()=>import(`./cascader.js`)),NColorPicker:S(()=>import(`./color-picker.js`)),NUpload:S(()=>import(`./upload.js`)),C_Editor:S(()=>import(`./C_Editor.js`).then(e=>e.C_Editor))},nt={default:Ke,inline:qe,grid:$e,card:S(()=>import(`./Card.js`)),tabs:S(()=>import(`./Tabs.js`)),steps:S(()=>import(`./Steps.js`)),dynamic:S(()=>import(`./Dynamic.js`)),custom:S(()=>import(`./Custom.js`))};var rt=i(C({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})},renderers:{}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(n,{expose:r,emit:i}){let a=n,o=i,s=Y(),c=ae(),l=m(()=>Ce(a.config,s)),u=m(()=>{let{size:e}=c;return Te({...l.value,...e===`small`||e===`medium`||e===`large`?{size:e}:{}})}),d=m(()=>l.value.density!==void 0),f=m(()=>e(u.value.density)),p=m(()=>{if(!d.value)return;let{gap:e,rowGap:t,padding:n,formItemGap:r}=f.value;return{"--c-form-gap":`${e}px`,"--c-form-row-gap":`${t}px`,"--c-form-padding":`${n}px`,"--c-form-item-gap":`${r}px`}}),{t:_}=t(()=>u.value.locale),v=N(null),S=N(null),C=m(()=>et.includes(u.value.layout)||S.value===u.value.layout),{formModel:E,formRules:D,visibleOptions:k,initialize:j,handleFieldChange:ee,validate:te,validateField:ne,validateStep:re,validateTab:L,validateDynamicFields:ie,validateCustomGroup:B,clearValidation:H,getModel:W,setFields:se,resetFields:G,setFieldValue:ue,getFieldValue:de,setFieldsValue:fe,handleSubmit:K,handleReset:pe,isDirty:me,getChangedFields:he,isFieldDirty:_e,markAsClean:ve,asyncOptionsCache:ye,asyncLoadingMap:be,asyncErrorMap:q,reloadOptions:xe,setFormItemRef:Se,isSubmitting:J,submit:X}=Fe(m(()=>a.options),u,v,o,m(()=>a.modelValue),C),we=m(()=>E.value),Z=()=>W(),De=m(()=>({form:v.value,model:we.value,validate:te,validateField:ne,reset:G,setFields:se,getModel:Z,clearValidation:H,submit:X,reloadOptions:xe,submitting:J.value})),Oe=w(),ke=()=>Object.keys(Oe?.slots??{}).filter(e=>![`action`,`action-extra`,`step-actions`].includes(e)),{formItems:Ae}=We({formModel:E,visibleOptions:k,config:u,handleFieldChange:ee,componentMap:tt,instanceSlots:Oe?.slots,asyncOptionsCache:ye,asyncLoadingMap:be,renderers:m(()=>a.renderers),setFormItemRef:Se,onError:(e,t)=>u.value.onError?.(e,{source:`render`,field:t})}),je=m(()=>nt[u.value.layout]||nt.default),Me=m(()=>{let e=u.value,t={type:e.layout,grid:e.grid,inline:e.inline,card:e.card,tabs:e.tabs,steps:e.steps,dynamic:e.dynamic,custom:e.custom};if(!d.value)return t;let{gap:n,rowGap:r}=f.value;return{...t,grid:{gutter:n,yGutter:e.grid?.gutter??r,...e.grid},inline:{gap:n,rowGap:r,...e.inline},card:{spacing:n,...e.card},tabs:{size:e.size,...e.tabs},steps:{size:e.size===`small`?`small`:`medium`,...e.steps},dynamic:{...e.dynamic,grid:{gutter:n,...e.dynamic?.grid}}}}),Ne=m(()=>Ee(u.value)),Pe=m(()=>{let{layout:e}=u.value;return{...e===`steps`?{beforeStepChange:Ve,validateStep:He,submitting:J.value,disabled:u.value.disabled||u.value.readonly}:e===`tabs`?{beforeTabChange:Re,validateTab:ze}:{},controlSize:d.value?u.value.size:void 0,onVnodeMounted:()=>{S.value=e}}}),Q=(e,...t)=>{let n=u.value[e];if(typeof n==`function`)try{let e=n(...t);e instanceof Promise&&e.catch(e=>u.value.onError?.(e,{source:`callback`}))}catch(e){u.value.onError?.(e,{source:`callback`})}},Ie=e=>{u.value.onFieldsChange?.(e)},$=e=>{o(`validate-success`,e)},Le=e=>{o(`validate-error`,e)},Re=async(e,t)=>{try{return await u.value.onTabBeforeChange?.(e,t)!==!1}catch(e){return u.value.onError?.(e,{source:`callback`}),!1}},ze=async e=>{let t=await L(e);return t&&u.value.onTabValidate?.(e),t},Be=(e,t)=>{u.value.onStepChange?.(e,t)},Ve=async(e,t)=>{try{return await u.value.onStepBeforeChange?.(e,t)!==!1}catch(e){return u.value.onError?.(e,{source:`callback`}),!1}},He=async(e,t)=>{try{return await re(t)?(u.value.onStepValidate?.(e),!0):!1}catch{return!1}};return r({validate:te,validateField:ne,validateStep:re,validateTab:L,validateDynamicFields:ie,validateCustomGroup:B,clearValidation:H,getModel:W,setFields:se,resetFields:G,setFieldValue:ue,getFieldValue:de,setFieldsValue:fe,formRef:v,formModel:E,initialize:j,layoutType:m(()=>u.value.layout),shouldShowDefaultActions:Ne,isDirty:me,getChangedFields:he,isFieldDirty:_e,markAsClean:ve,asyncLoadingMap:be,asyncErrorMap:q,reloadOptions:xe,isSubmitting:J,submit:X}),(e,t)=>(M(),h(z(ce),O({ref_key:`formRef`,ref:v,class:[`c-form`,d.value&&`c-form--${u.value.density}`],style:p.value,model:z(E),rules:z(D),"validate-on-rule-change":!1,"label-placement":u.value.labelPlacement,"label-width":u.value.labelWidth,size:u.value.size,disabled:u.value.disabled,readonly:u.value.readonly},e.$attrs,{onSubmit:oe(z(X),[`prevent`])}),{default:V(()=>[g(` 布局组件渲染 `),(M(),h(I(je.value),O({key:u.value.layout,"form-items":z(Ae),"layout-config":Me.value,options:z(k),"form-data":z(E)},Pe.value,{onTabChange:t[0]||=(e,t)=>Q(`onTabChange`,e,t),onStepChange:Be,onFieldAdd:t[1]||=e=>Q(`onFieldAdd`,e),onFieldRemove:t[2]||=e=>Q(`onFieldRemove`,e),onFieldToggle:t[3]||=(e,t)=>Q(`onFieldToggle`,e,t),onFieldsClear:t[4]||=e=>Q(`onFieldsClear`),onRenderModeChange:t[5]||=e=>Q(`onRenderModeChange`,e),onGroupToggle:t[6]||=(e,t)=>Q(`onGroupToggle`,e,t),onGroupReset:t[7]||=e=>Q(`onGroupReset`,e),onValidateSuccess:$,onValidateError:Le,onFieldsChange:Ie}),y({"step-actions":V(t=>[F(e.$slots,`step-actions`,O(t,{submit:z(X),submitting:z(J)}),()=>[t.isLastStep&&u.value.showActions?(M(),h(z(U),{key:0,type:`primary`,size:u.value.size,loading:z(J)||!C.value,disabled:!C.value||z(J)||u.value.disabled||u.value.readonly,onClick:z(X)},{default:V(()=>[b(R(u.value.submitText||z(_)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])):g(`v-if`,!0)],!0)]),_:2},[P(ke(),t=>({name:t,fn:V(n=>[F(e.$slots,t,A(T(n)),void 0,!0)])}))]),1040,[`form-items`,`layout-config`,`options`,`form-data`])),g(` 表单操作按钮区域(只在特定布局中显示) `),Ne.value?(M(),h(z(le),{key:0,class:`c-form-actions`},{default:V(()=>[F(e.$slots,`action`,A(T(De.value)),()=>[x(z(ge),{justify:`end`,size:d.value?f.value.gap:void 0,style:{width:`100%`}},{default:V(()=>[x(z(U),{size:u.value.size,disabled:!C.value||z(J)||u.value.disabled||u.value.readonly,onClick:z(pe)},{default:V(()=>[b(R(u.value.resetText||z(_)(`common.reset`)),1)]),_:1},8,[`size`,`disabled`,`onClick`]),F(e.$slots,`action-extra`,A(T(De.value)),void 0,!0),x(z(U),{type:`primary`,size:u.value.size,loading:z(J)||!C.value,disabled:!C.value||z(J)||u.value.disabled||u.value.readonly,onClick:z(K)},{default:V(()=>[b(R(u.value.submitText||z(_)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])]),_:3},8,[`size`])],!0)]),_:3})):g(`v-if`,!0)]),_:3},16,[`class`,`style`,`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`,`onSubmit`]))}}),[[`__scopeId`,`data-v-d94e0e8f`]]);function it(e){return e}function at(e){return e}function ot(e){let t=L(f(e.initialValues)),n=L(null);return{model:t,formRef:n,bindings:m(()=>({modelValue:t.value,options:ie(e.options),config:ie(e.config),"onUpdate:modelValue":e=>{t.value=f(e)}})),validate:()=>n.value?.validate()??Promise.resolve(),submit:()=>n.value?.submit()??Promise.resolve(!1),reset:()=>{n.value?(n.value.resetFields(),t.value=f(n.value.getModel())):t.value=f(e.initialValues)},getValues:()=>f(n.value?.getModel()??t.value),setValues:async(e,r=!1)=>{n.value?(await n.value.setFieldsValue(e,r),t.value=f(n.value.getModel())):t.value={...t.value,...f(e)}}}}export{we as _,Q as a,Ee as b,Be as c,ke as d,Oe as f,J as g,X as h,rt as i,We as l,De as m,it as n,Ie as o,xe as p,ot as r,ze as s,at as t,Fe as u,Ce as v,Y as x,Te as y};
|
|
1
|
+
import{t as e}from"./density.js";import{t}from"./useComponentLocale.js";import{t as n}from"./feedback.js";import{t as r}from"./C_Icon2.js";import{t as i}from"./export-helper.js";import{a,c as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./data.js";import{Fragment as p,computed as m,createBlock as h,createCommentVNode as g,createElementBlock as _,createElementVNode as v,createSlots as y,createTextVNode as b,createVNode as x,defineAsyncComponent as S,defineComponent as C,getCurrentInstance as w,guardReactiveProps as T,h as E,inject as D,mergeProps as O,nextTick as k,normalizeProps as A,normalizeStyle as j,onScopeDispose as ee,openBlock as M,reactive as te,ref as N,renderList as P,renderSlot as F,resolveComponent as ne,resolveDynamicComponent as I,shallowReactive as re,shallowRef as L,toDisplayString as R,toValue as ie,unref as z,useAttrs as ae,watch as B,withCtx as V,withModifiers as oe}from"vue";import{NAlert as H,NButton as U,NCard as W,NCheckbox as se,NCheckboxGroup as G,NForm as ce,NFormItem as le,NGrid as ue,NGridItem as de,NInput as fe,NInputNumber as K,NRadio as pe,NRadioGroup as me,NSelect as he,NSpace as ge,NSwitch as _e,NTooltip as ve}from"naive-ui";import{BasicRules as ye,NAIVE_COMBOS as be,PRESET_RULES as q,SPEC_RULES as xe,toNaiveRule as Se}from"@robot-admin/form-validate";const J=Symbol(`c-form-global-config`);function Y(){return w()?D(J,{}):{}}function Ce(e,t){let n=e??{},r=(e,t)=>e||t?{...e,...t}:void 0;return{...t,...n,grid:r(t.grid,n.grid),inline:r(t.inline,n.inline),card:r(t.card,n.card),tabs:r(t.tabs,n.tabs),steps:r(t.steps,n.steps),dynamic:r(t.dynamic,n.dynamic),custom:r(t.custom,n.custom)}}const X={layout:`default`,labelPlacement:`left`,labelWidth:`auto`,size:`medium`,density:`default`,disabled:!1,readonly:!1,showActions:!0,validateOnChange:!1,preserveRemovedFields:!1,submitText:``,resetText:``,submitSuccessText:``,resetSuccessText:``,mode:`create`},we=[`steps`,`custom`];function Te(t){return{...X,...t,size:t?.size??e(t?.density).size}}function Ee(e){return!(e.showActions===!1||we.includes(e.layout))}function Z(e,t=new Set){if(!(typeof e!=`object`||!e||t.has(e))){if(t.add(e),e instanceof Map){e.forEach((e,n)=>{Z(n,t),Z(e,t)});return}if(e instanceof Set){e.forEach(e=>Z(e,t));return}Object.values(e).forEach(e=>Z(e,t))}}function De(e,t){let n=L({}),r=()=>new Set(t?ie(t):[...Object.keys(n.value),...Object.keys(e)]),i=m(()=>{for(let e of r())if(s(e))return!0;return!1});function o(){let e=[];for(let t of r())s(t)&&e.push(t);return e}function s(t){let r=u(e,t);return Z(r),!a(u(n.value,t),r)}function c(){n.value=f(e)}function l(){return f(n.value)}return{isDirty:i,getChangedFields:o,isFieldDirty:s,markAsClean:c,getCleanModel:l}}const Oe=q,ke=be;function Ae(e=[]){return e.map(e=>{let t=`validate`in e&&typeof e.validate==`function`?Se(e):e;return{...t,...Array.isArray(t.trigger)?{trigger:[...t.trigger]}:{}}})}function je(e,t){return Ae([{...ye.required(e,[`input`,`change`,`blur`]),message:t}])[0]}const Me={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:[],upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:!1};function Ne(e){return f((e.value===void 0?Me[e.type]:e.value)??null)}function Pe(e){let t=new Set;e.forEach((e,n)=>{if(!e.prop?.trim())throw TypeError(`[C_Form] options[${n}].prop 不能为空`);if(t.has(e.prop))throw TypeError(`[C_Form] 字段 prop 重复: ${e.prop}`);t.add(e.prop)})}function Fe(e,r,i,p,h,g){let _=te(f(h?.value??(r.value.mode===`edit`?r.value.initialValues:void 0)??{})),v=te({}),y=new Map,b=N({}),x=N({}),S=N({}),C=N(!1),w=new Map,T=!1,E,D=new Map,O=new Map,A=new Map,j=new Map,M=new Set,P=!1,F=!1,ne=0,I=n(()=>r.value.feedback),{t:re}=t(()=>r.value.locale),{isDirty:L,getChangedFields:R,isFieldDirty:ie,markAsClean:z,getCleanModel:ae}=De(_,()=>e.value.map(e=>e.prop));function V(e,t,n){if(!T)try{r.value.onError?r.value.onError(e,{source:t,field:n}):I.error(e instanceof Error?e.message:String(e),e)}catch{}}function oe(e,t){if(!(T||!t))try{I[e](t)}catch{}}let H=m(()=>e.value.filter(e=>{if(e.show===!1)return!1;if(!e.showWhen)return!0;try{return e.showWhen(_)}catch(t){return V(t,`callback`,e.prop),!1}}));function U(){F=!0;let e=++ne;k(()=>{e===ne&&(F=!1)})}function W(){return f(_)}function se(t){let n=t?f(t):{};return e.value.forEach(e=>{s(n,e.prop)||o(n,e.prop,Ne(e))}),n}function G(e){try{let t=Ae(e.rulesWhen?e.rulesWhen(_):e.rules);if(w.delete(e.prop),e.required&&!t.some(e=>e.required)){let n=e.label||e.prop;t.unshift(je(n,re(`form.required`,{label:n})))}if(e.crossFieldValidator){let n=e.crossFieldValidator;t.push({async validator(){let e=await n(_);if(e)throw Error(e)},trigger:[`change`,`blur`]})}if(t.length===0){delete v[e.prop];return}v[e.prop]=t.map(t=>({...t,key:e.prop}))}catch(t){delete v[e.prop],w.set(e.prop,t),V(t,`callback`,e.prop)}}function ce(){e.value.forEach(e=>{(e.rulesWhen||e.crossFieldValidator)&&G(e)})}function le(e){M.forEach(t=>{e.has(t)||(y.delete(t),delete v[t],w.delete(t),K(t),A.delete(t),r.value.preserveRemovedFields||c(_,t))})}function ue(t=!1){try{Pe(e.value);let n=W(),r=new Set(e.value.map(e=>e.prop));le(r),e.value.forEach(e=>{s(_,e.prop)||o(_,e.prop,Ne(e)),G(e),pe(e)}),M=r,q(fe(n),!1),t&&k(z)}catch(e){throw V(e,`initialize`),e}}function de(e){let t=W();U(),d(_,se(e)),q(fe(t),!1)}function fe(t){return[...new Set([...Object.keys(t),...Object.keys(_),...e.value.map(e=>e.prop)])].filter(e=>!a(u(t,e),u(_,e)))}function K(e){O.get(e)?.abort(),O.delete(e),D.delete(e),j.delete(e),delete b.value[e],delete x.value[e],delete S.value[e]}function pe(e){if(A.get(e.prop)!==e.asyncOptions){if(K(e.prop),!e.asyncOptions){A.delete(e.prop);return}A.set(e.prop,e.asyncOptions),me(e,`initialize`)}}function me(e,t){if(T)return;let n=j.get(e.prop),r={item:e,reason:n?.reason===`initialize`?n.reason:t};j.set(e.prop,r),k(()=>{j.get(e.prop)===r&&(j.delete(e.prop),_e(r.item,r.reason))})}function he(e,t,n){return T||n.signal.aborted||D.get(e)!==t||O.get(e)!==n}function ge(e){return!T&&!!e.asyncOptions&&A.get(e.prop)===e.asyncOptions}async function _e(e,t){if(!ge(e))return;let{prop:n}=e,r=(D.get(n)??0)+1;D.set(n,r),O.get(n)?.abort();let i=new AbortController;O.set(n,i),x.value[n]=!0,delete S.value[n];try{let a=await e.asyncOptions(W(),{field:n,reason:t,signal:i.signal});if(he(n,r,i))return;if(!Array.isArray(a))throw TypeError(`[C_Form] ${n}.asyncOptions 必须返回数组`);b.value[n]=f([...a])}catch(e){if(he(n,r,i))return;S.value[n]=e,V(e,`async-options`,n)}finally{D.get(n)===r&&O.get(n)===i&&(x.value[n]=!1,O.delete(n))}}async function ve(t){let n=e.value.filter(e=>e.asyncOptions&&(!t||e.prop===t));if(t&&n.length===0)throw Error(`[C_Form] 未找到异步选项字段: ${t}`);await Promise.all(n.map(e=>(j.delete(e.prop),_e(e,`manual`))))}function ye(){let t=e.value.filter(e=>e.valueWhen),n=new Set;if(t.length===0)return[];for(let e=0;e<=t.length;e+=1){let e=!1;for(let r of t)try{let t=r.valueWhen?.(_);t!==void 0&&!a(u(_,r.prop),t)&&(o(_,r.prop,f(t)),n.add(r.prop),e=!0)}catch(e){V(e,`callback`,r.prop)}if(!e)return[...n]}return V(Error(`[C_Form] valueWhen 存在循环依赖,已停止继续计算`),`callback`),[...n]}function be(t){let n=t.map(e=>l(e).join(`.`));return e.value.filter(e=>!e.asyncOptions||!e.dependsOn?!1:(Array.isArray(e.dependsOn)?e.dependsOn:[e.dependsOn]).some(e=>{let t=l(e).join(`.`);return n.some(e=>e===t||e.startsWith(`${t}.`)||t.startsWith(`${e}.`))}))}function q(e,t=!0){let n=[...new Set([...e,...ye()])];ce(),be(n).forEach(e=>{me(e,`dependency`)}),t&&r.value.validateOnChange&&k(()=>{T||Y(n).catch(()=>void 0)})}function xe(e){q([e])}function Se(e,t){t?y.set(e,t):y.delete(e)}async function J(){if(g?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);try{let e=H.value.find(e=>w.has(e.prop));if(e)throw w.get(e.prop);if(await i.value.validate(),T)throw Error(`[C_Form] 表单已卸载`);p(`validate-success`,W())}catch(e){throw T||p(`validate-error`,e),e}}async function Y(e){if(g?.value===!1)throw Error(`[C_Form] 布局尚未加载完成`);if(!i.value)throw Error(`[C_Form] 表单引用不存在`);let t=[...new Set(Array.isArray(e)?e:[e])],n=t.find(e=>w.has(e));if(n)throw w.get(n);let r=[],a=t.flatMap(e=>{let t=y.get(e);return t?[t.validate()]:(r.push(e),[])});r.length>0&&a.push(i.value.validate(void 0,e=>r.includes(String(e.key??``))));let o=(await Promise.allSettled(a)).filter(e=>e.status===`rejected`).map(e=>e.reason);if(o.length>0)throw o}function Ce(e){if(!e){i.value?.restoreValidation();return}(Array.isArray(e)?e:[e]).forEach(e=>y.get(e)?.restoreValidation())}async function X(e){let t=H.value.filter(e).map(e=>e.prop);if(t.length===0)return!0;try{return await Y(t),!0}catch{return!1}}function we(e){let t=typeof e==`string`?e:r.value.steps?.steps?.[e]?.key;return t?X(e=>e.layout?.step===t):Promise.resolve(!0)}function Te(e){return X(t=>t.layout?.tab===e)}function Ee(){return X(e=>!!e.layout?.dynamic)}function Z(e){return X(t=>t.layout?.group===e)}function Oe(e){Object.entries(f(e)).forEach(([e,t])=>{o(_,e,t)}),q(Object.keys(e))}function ke(){let e=W();d(_,ae()),Ce(),q(fe(e),!1),oe(`info`,r.value.resetSuccessText)}async function Me(e,t,n=!1){o(_,e,f(t)),xe(e),n&&await Y(e)}function Fe(e){return f(u(_,e))}async function Q(e,t=!1){Oe(e),t&&await Y(Object.keys(e))}function Ie(){return T||g?.value===!1||C.value||r.value.disabled||r.value.readonly}function $(e,t,n){return!T&&!e.signal.aborted&&g?.value!==!1&&!r.value.disabled&&!r.value.readonly&&n!==null&&i.value===n&&a(_,t)}async function Le(){if(Ie())return!1;let e=W(),t=i.value,n=new AbortController;E=n,C.value=!0;try{if(await J(),!$(n,e,t))return!1;let i={model:e,form:t};try{await r.value.onSubmit?.(i,{signal:n.signal})}catch(e){return n.signal.aborted||V(e,`submit`),!1}return n.signal.aborted?!1:(p(`submit`,i),oe(`success`,r.value.submitSuccessText),!0)}catch{return!1}finally{E===n&&(E=void 0),C.value=!1}}function Re(){ue(!0);let e=h?.value??(r.value.mode===`edit`?r.value.initialValues:void 0);e&&de(e),k(z)}return B(e,()=>{let e=!P;e&&U(),ue(e),P=!0},{deep:!0,immediate:!0}),h&&B(h,e=>{e!==void 0&&!a(_,e)&&de(e)},{deep:!0,immediate:!0}),B(()=>[r.value.mode,r.value.initialValues],([e,t])=>{h?.value!==void 0||e!==`edit`||!t||(de(t),k(z))},{deep:!0}),B(_,e=>{F||p(`update:modelValue`,f(e))},{deep:!0,flush:`post`}),ee(()=>{T=!0,E?.abort(),O.forEach(e=>e.abort()),O.clear(),j.clear(),y.clear()}),{formModel:_,formRules:v,visibleOptions:H,initialize:Re,handleFieldChange:xe,setFormItemRef:Se,validate:J,validateField:Y,validateStep:we,validateTab:Te,validateDynamicFields:Ee,validateCustomGroup:Z,clearValidation:Ce,getModel:W,setFields:Oe,resetFields:ke,setFieldValue:Me,getFieldValue:Fe,setFieldsValue:Q,submit:Le,handleSubmit:Le,handleReset:ke,isSubmitting:C,isDirty:L,getChangedFields:R,isFieldDirty:ie,markAsClean:z,asyncOptionsCache:b,asyncLoadingMap:x,asyncErrorMap:S,reloadOptions:ve}}const Q=Symbol(`c-form-renderer-registry`);function Ie(e={}){let t=re(new Map),n={get:e=>t.get(e)?.renderer,register:(e,n)=>{if(!e.trim())throw TypeError(`[C_Form] renderer type 不能为空`);if(typeof n!=`function`)throw TypeError(`[C_Form] renderer ${e} 必须是函数`);let r={renderer:n};return t.set(e,r),()=>t.get(e)===r&&t.delete(e)},unregister:(e,n)=>{let r=t.get(e);return!r||n&&r.renderer!==n?!1:t.delete(e)}};return Object.entries(e).forEach(([e,t])=>{n.register(e,t)}),n}function $(e,t,n){return e===void 0?t:typeof e==`function`?e(n):e}function Le(e){return{input:t=>E(e.NInput,{...t}),textarea:t=>E(e.NInput,{...t,type:`textarea`}),inputNumber:t=>E(e.NInputNumber,{...t}),switch:t=>E(e.NSwitch,{...t}),slider:t=>E(e.NSlider,{...t}),rate:t=>E(e.NRate,{...t}),datePicker:t=>E(e.NDatePicker,{...t}),daterange:t=>E(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>E(e.NTimePicker,{...t}),cascader:t=>E(e.NCascader,{...t}),colorPicker:t=>E(e.NColorPicker,{...t}),select:(t,n)=>E(e.NSelect,{...t,options:n.children?.map(e=>({...e}))||[]}),checkbox:(t,n)=>E(e.NCheckboxGroup,{...t},{default:()=>E(e.NSpace,{},{default:()=>n.children?.map(t=>E(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>E(e.NRadioGroup,{...t},{default:()=>E(e.NSpace,{},{default:()=>n.children?.map(t=>E(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>{let a={...t},{value:o}=a,s=a[`onUpdate:value`];return delete a.value,delete a[`onUpdate:value`],E(e.NUpload,{...a,fileList:Array.isArray(o)?o:[],"onUpdate:fileList":e=>s?.(e)},{default:()=>i.slots?.uploadClick?.()||E(e.NButton,{type:`primary`,size:n.attrs?.size??r.size,disabled:a.disabled===!0},{default:()=>`选择文件`}),tip:()=>i.slots?.uploadTip?.()||null})},editor:(t,n)=>{let r={...t},{value:i}=r,a=r[`onUpdate:value`];return delete r.value,delete r[`onUpdate:value`],E(e.C_Editor,{...r,editorId:`editor-${n.prop}`,modelValue:typeof i==`string`?i:``,"onUpdate:modelValue":e=>a?.(e)})}}}const Re=Ie();function ze(e,t){return Re.register(e,t)}function Be(e,t){return Re.unregister(e,t)}const Ve=new Set([`select`,`checkbox`,`radio`,`cascader`]),He=new Set([`input`,`textarea`,`inputNumber`,`select`,`checkbox`,`radio`,`switch`,`datePicker`,`daterange`,`timePicker`,`cascader`,`colorPicker`]),Ue=new Set([`input`,`textarea`,`inputNumber`,`rate`,`editor`]);function We(e){let{formModel:t,visibleOptions:n,config:r,handleFieldChange:i,componentMap:a,instanceSlots:s,asyncOptionsCache:c,asyncLoadingMap:l,renderers:d,setFormItemRef:f,onError:p}=e,h=a,g=Le(h),_=w()?D(Q,void 0):void 0,v=e.registry??_??Re,y=e=>d?.value?.[e]??v.get(e)??g[e],b=e=>{let n=$(e.disabled,r.value.disabled,t),a=$(e.readonly,r.value.readonly,t),s=Ue.has(e.type),c={...He.has(e.type)?{size:e.attrs?.size??r.value.size}:{},value:u(t,e.prop),"onUpdate:value":n=>{$(e.disabled,r.value.disabled,t)||$(e.readonly,r.value.readonly,t)||(o(t,e.prop,n),i(e.prop))},disabled:n||a&&!s,readonly:a||e.type===`rate`&&n};return e.type===`textarea`&&(c.type=`textarea`),e.placeholder&&(c.placeholder=e.placeholder),c};function x(e){let t=e.children??[];return Object.prototype.hasOwnProperty.call(c.value,e.prop)?c.value[e.prop]??[]:t}function S(e){return Ve.has(e.type)?{...e,children:x(e)}:e}function C(e,t){return e.type===`select`&&l.value[e.prop]&&(t.loading=!0),t}let T=e=>{try{let t=S(e),n=y(t.type);return n?n(C(t,O(t.attrs??{},b(t))),t,r.value,{slots:s,components:h}):(p?.(TypeError(`[C_Form] 未支持的组件类型: ${t.type}`),t.prop),null)}catch(t){return p?.(t,e.prop),null}};function k(e){if(e.label)return e.help?E(`span`,{style:`display:inline-flex;align-items:center;gap:4px`},[e.label,E(h.NTooltip,{trigger:`hover`},{trigger:()=>E(`span`,{style:`cursor:help;opacity:0.5;font-size:14px`,textContent:`ⓘ`}),default:()=>e.help})]):e.label}return{renderFormItem:T,formItems:m(()=>n.value.map(e=>{let t=!!(e.required||e.rules?.some(e=>e.required)),n=k(e);return E(h.NFormItem,{label:typeof n==`string`?n:void 0,path:e.prop,class:`c-form-field`,key:e.prop,required:t,ref:t=>f?.(e.prop,t)},{...typeof n!=`string`&&n?{label:()=>n}:{},default:()=>T(e)})})),getBaseProps:b}}const Ge={class:`c-form-default`};var Ke=i(C({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(t,n)=>(M(),_(`div`,Ge,[(M(!0),_(p,null,P(e.formItems,(e,t)=>(M(),h(I(e),{key:e.key??t}))),128))]))}}),[[`__scopeId`,`data-v-4313de0c`]]),qe=i(C({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=m(()=>t.layoutConfig?.inline?.itemWidth??280),r=m(()=>t.layoutConfig?.inline?.gap??16),i=m(()=>t.layoutConfig?.inline?.rowGap??16),a=m(()=>t.layoutConfig?.inline?.align??`center`),o=m(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return a.value}}),s=m(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),c=m(()=>({display:`flex`,flexWrap:t.layoutConfig?.inline?.wrap??`wrap`,alignItems:o.value,justifyContent:s.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),l=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},u=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(t,n)=>(M(),_(`div`,{class:`c-form-inline`,style:j(c.value)},[(M(!0),_(p,null,P(e.formItems,(e,t)=>(M(),_(`div`,{key:l(e,t),class:`c-form-inline-item`,style:j(u(t))},[(M(),h(I(e)))],4))),128))],4))}}),[[`__scopeId`,`data-v-711f6c00`]]);const Je={class:`c-grid-layout`},Ye={class:`config-header`},Xe={class:`config-controls`},Ze={class:`config-label`},Qe={class:`item-wrapper`};var $e=i(C({__name:`index`,props:{controlSize:{},formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e,{expose:t}){let n=e,i=te({cols:24,gutter:16,responsive:!0}),a=m(()=>n.layoutConfig?.grid||{}),o=m(()=>a.value.showConfigPanel),s=m(()=>a.value.showStats),c=m(()=>({cols:o.value?i.cols:a.value.cols??24,gutter:o.value?i.gutter:a.value.gutter??16,responsive:o.value?i.responsive:a.value.responsive??!0})),l=m(()=>({cols:c.value.cols,xGap:a.value.xGap??c.value.gutter,yGap:a.value.yGap??a.value.yGutter??c.value.gutter,responsive:c.value.responsive?`screen`:`self`})),u=m(()=>[{key:`cols`,label:`列数`,component:K,value:i.cols,update:e=>{typeof e==`number`&&(i.cols=e)},props:{min:1,max:48,size:n.controlSize??`small`}},{key:`gutter`,label:`间距`,component:K,value:i.gutter,update:e=>{typeof e==`number`&&(i.gutter=e)},props:{min:0,max:48,size:n.controlSize??`small`}},{key:`responsive`,label:`响应式`,component:_e,value:i.responsive,update:e=>{typeof e==`boolean`&&(i.responsive=e)},props:{size:n.controlSize??`small`}}]),d=m(()=>`列数: ${c.value.cols} | 间距: ${c.value.gutter}px | 项目: ${n.formItems.length}个`),f=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,y=(e,t)=>{let r=n.options?.[e]?.layout;return r?.[t]??r?.grid?.[t]},S=()=>{let{cols:e}=c.value;return e<=12?e:e<=24?12:8},C=e=>{let t=y(e,`span`),n=y(e,`offset`),r=y(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=c.value.cols?t:S(),offset:typeof n==`number`&&n>=0&&n<c.value.cols?n:0,suffix:!!r}};return B(a,e=>{e.cols!==void 0&&(i.cols=e.cols),e.gutter!==void 0&&(i.gutter=e.gutter),e.responsive!==void 0&&(i.responsive=e.responsive)},{immediate:!0}),t({updateGridConfig:e=>Object.assign(i,e),getCurrentConfig:()=>({...c.value}),getGridInfo:()=>({...c.value,itemCount:n.formItems.length})}),(t,n)=>{let i=W,a=de,c=ue,m=H;return M(),_(`div`,Je,[g(` 配置面板 `),o.value?(M(),h(i,{key:0,size:e.controlSize??`small`,bordered:!1,class:`config-panel`},{header:V(()=>[v(`div`,Ye,[x(r,{name:`mdi:view-grid`,size:18}),n[0]||=v(`span`,null,`网格配置`,-1)])]),default:V(()=>[v(`div`,Xe,[(M(!0),_(p,null,P(u.value,e=>(M(),_(`div`,{key:e.key,class:`config-item`},[v(`span`,Ze,R(e.label)+`:`,1),(M(),h(I(e.component),O({value:e.value},{ref_for:!0},e.props,{"onUpdate:value":e.update}),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1},8,[`size`])):g(`v-if`,!0),g(` 网格容器 `),x(c,O(l.value,{class:`grid-container`}),{default:V(()=>[(M(!0),_(p,null,P(e.formItems,(e,t)=>(M(),h(a,O({key:f(e,t)},{ref_for:!0},C(t),{class:`grid-item`}),{default:V(()=>[v(`div`,Qe,[(M(),h(I(e)))])]),_:2},1040))),128))]),_:1},16),g(` 统计信息 `),s.value?(M(),h(m,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:V(()=>[x(r,{name:`mdi:information-outline`,size:16}),n[1]||=b(` 网格信息 `,-1)]),default:V(()=>[b(` `+R(d.value),1)]),_:1})):g(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-4758bc1e`]]);const et=[`default`,`inline`,`grid`],tt={NFormItem:le,NInput:fe,NInputNumber:K,NSwitch:_e,NSelect:he,NCheckboxGroup:G,NCheckbox:se,NRadioGroup:me,NRadio:pe,NButton:U,NSpace:ge,NTooltip:ve,NSlider:S(()=>import(`./slider.js`)),NRate:S(()=>import(`./rate.js`)),NDatePicker:S(()=>import(`./date-picker.js`)),NTimePicker:S(()=>import(`./time-picker.js`)),NCascader:S(()=>import(`./cascader.js`)),NColorPicker:S(()=>import(`./color-picker.js`)),NUpload:S(()=>import(`./upload.js`)),C_Editor:S(()=>import(`./C_Editor.js`).then(e=>e.C_Editor))},nt={default:Ke,inline:qe,grid:$e,card:S(()=>import(`./Card.js`)),tabs:S(()=>import(`./Tabs.js`)),steps:S(()=>import(`./Steps.js`)),dynamic:S(()=>import(`./Dynamic.js`)),custom:S(()=>import(`./Custom.js`))};var rt=i(C({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})},renderers:{}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(n,{expose:r,emit:i}){let a=n,o=i,s=Y(),c=ae(),l=m(()=>Ce(a.config,s)),u=m(()=>{let{size:e}=c;return Te({...l.value,...e===`small`||e===`medium`||e===`large`?{size:e}:{}})}),d=m(()=>l.value.density!==void 0),f=m(()=>e(u.value.density)),p=m(()=>{if(!d.value)return;let{gap:e,rowGap:t,padding:n,formItemGap:r}=f.value;return{"--c-form-gap":`${e}px`,"--c-form-row-gap":`${t}px`,"--c-form-padding":`${n}px`,"--c-form-item-gap":`${r}px`}}),{t:_}=t(()=>u.value.locale),v=N(null),S=N(null),C=m(()=>et.includes(u.value.layout)||S.value===u.value.layout),{formModel:E,formRules:D,visibleOptions:k,initialize:j,handleFieldChange:ee,validate:te,validateField:ne,validateStep:re,validateTab:L,validateDynamicFields:ie,validateCustomGroup:B,clearValidation:H,getModel:W,setFields:se,resetFields:G,setFieldValue:ue,getFieldValue:de,setFieldsValue:fe,handleSubmit:K,handleReset:pe,isDirty:me,getChangedFields:he,isFieldDirty:_e,markAsClean:ve,asyncOptionsCache:ye,asyncLoadingMap:be,asyncErrorMap:q,reloadOptions:xe,setFormItemRef:Se,isSubmitting:J,submit:X}=Fe(m(()=>a.options),u,v,o,m(()=>a.modelValue),C),we=m(()=>E.value),Z=()=>W(),De=m(()=>({form:v.value,model:we.value,validate:te,validateField:ne,reset:G,setFields:se,getModel:Z,clearValidation:H,submit:X,reloadOptions:xe,submitting:J.value})),Oe=w(),ke=()=>Object.keys(Oe?.slots??{}).filter(e=>![`action`,`action-extra`,`step-actions`].includes(e)),{formItems:Ae}=We({formModel:E,visibleOptions:k,config:u,handleFieldChange:ee,componentMap:tt,instanceSlots:Oe?.slots,asyncOptionsCache:ye,asyncLoadingMap:be,renderers:m(()=>a.renderers),setFormItemRef:Se,onError:(e,t)=>u.value.onError?.(e,{source:`render`,field:t})}),je=m(()=>nt[u.value.layout]||nt.default),Me=m(()=>{let e=u.value,t={type:e.layout,grid:e.grid,inline:e.inline,card:e.card,tabs:e.tabs,steps:e.steps,dynamic:e.dynamic,custom:e.custom};if(!d.value)return t;let{gap:n,rowGap:r}=f.value;return{...t,grid:{gutter:n,yGutter:e.grid?.gutter??r,...e.grid},inline:{gap:n,rowGap:r,...e.inline},card:{spacing:n,...e.card},tabs:{size:e.size,...e.tabs},steps:{size:e.size===`small`?`small`:`medium`,...e.steps},dynamic:{...e.dynamic,grid:{gutter:n,...e.dynamic?.grid}}}}),Ne=m(()=>Ee(u.value)),Pe=m(()=>{let{layout:e}=u.value;return{...e===`steps`?{beforeStepChange:Ve,validateStep:He,submitting:J.value,disabled:u.value.disabled||u.value.readonly}:e===`tabs`?{beforeTabChange:Re,validateTab:ze}:{},controlSize:d.value?u.value.size:void 0,onVnodeMounted:()=>{S.value=e}}}),Q=(e,...t)=>{let n=u.value[e];if(typeof n==`function`)try{let e=n(...t);e instanceof Promise&&e.catch(e=>u.value.onError?.(e,{source:`callback`}))}catch(e){u.value.onError?.(e,{source:`callback`})}},Ie=e=>{u.value.onFieldsChange?.(e)},$=e=>{o(`validate-success`,e)},Le=e=>{o(`validate-error`,e)},Re=async(e,t)=>{try{return await u.value.onTabBeforeChange?.(e,t)!==!1}catch(e){return u.value.onError?.(e,{source:`callback`}),!1}},ze=async e=>{let t=await L(e);return t&&u.value.onTabValidate?.(e),t},Be=(e,t)=>{u.value.onStepChange?.(e,t)},Ve=async(e,t)=>{try{return await u.value.onStepBeforeChange?.(e,t)!==!1}catch(e){return u.value.onError?.(e,{source:`callback`}),!1}},He=async(e,t)=>{try{return await re(t)?(u.value.onStepValidate?.(e),!0):!1}catch{return!1}};return r({validate:te,validateField:ne,validateStep:re,validateTab:L,validateDynamicFields:ie,validateCustomGroup:B,clearValidation:H,getModel:W,setFields:se,resetFields:G,setFieldValue:ue,getFieldValue:de,setFieldsValue:fe,formRef:v,formModel:E,initialize:j,layoutType:m(()=>u.value.layout),shouldShowDefaultActions:Ne,isDirty:me,getChangedFields:he,isFieldDirty:_e,markAsClean:ve,asyncLoadingMap:be,asyncErrorMap:q,reloadOptions:xe,isSubmitting:J,submit:X}),(e,t)=>(M(),h(z(ce),O({ref_key:`formRef`,ref:v,class:[`c-form`,d.value&&`c-form--${u.value.density}`],style:p.value,model:z(E),rules:z(D),"validate-on-rule-change":!1,"label-placement":u.value.labelPlacement,"label-width":u.value.labelWidth,size:u.value.size,disabled:u.value.disabled,readonly:u.value.readonly},e.$attrs,{onSubmit:oe(z(X),[`prevent`])}),{default:V(()=>[g(` 布局组件渲染 `),(M(),h(I(je.value),O({key:u.value.layout,"form-items":z(Ae),"layout-config":Me.value,options:z(k),"form-data":z(E)},Pe.value,{onTabChange:t[0]||=(e,t)=>Q(`onTabChange`,e,t),onStepChange:Be,onFieldAdd:t[1]||=e=>Q(`onFieldAdd`,e),onFieldRemove:t[2]||=e=>Q(`onFieldRemove`,e),onFieldToggle:t[3]||=(e,t)=>Q(`onFieldToggle`,e,t),onFieldsClear:t[4]||=e=>Q(`onFieldsClear`),onRenderModeChange:t[5]||=e=>Q(`onRenderModeChange`,e),onGroupToggle:t[6]||=(e,t)=>Q(`onGroupToggle`,e,t),onGroupReset:t[7]||=e=>Q(`onGroupReset`,e),onValidateSuccess:$,onValidateError:Le,onFieldsChange:Ie}),y({"step-actions":V(t=>[F(e.$slots,`step-actions`,O(t,{submit:z(X),submitting:z(J)}),()=>[t.isLastStep&&u.value.showActions?(M(),h(z(U),{key:0,type:`primary`,size:u.value.size,loading:z(J)||!C.value,disabled:!C.value||z(J)||u.value.disabled||u.value.readonly,onClick:z(X)},{default:V(()=>[b(R(u.value.submitText||z(_)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])):g(`v-if`,!0)],!0)]),_:2},[P(ke(),t=>({name:t,fn:V(n=>[F(e.$slots,t,A(T(n)),void 0,!0)])}))]),1040,[`form-items`,`layout-config`,`options`,`form-data`])),g(` 表单操作按钮区域(只在特定布局中显示) `),Ne.value?(M(),h(z(le),{key:0,class:`c-form-actions`},{default:V(()=>[F(e.$slots,`action`,A(T(De.value)),()=>[x(z(ge),{justify:`end`,size:d.value?f.value.gap:void 0,style:{width:`100%`}},{default:V(()=>[x(z(U),{size:u.value.size,disabled:!C.value||z(J)||u.value.disabled||u.value.readonly,onClick:z(pe)},{default:V(()=>[b(R(u.value.resetText||z(_)(`common.reset`)),1)]),_:1},8,[`size`,`disabled`,`onClick`]),F(e.$slots,`action-extra`,A(T(De.value)),void 0,!0),x(z(U),{type:`primary`,size:u.value.size,loading:z(J)||!C.value,disabled:!C.value||z(J)||u.value.disabled||u.value.readonly,onClick:z(K)},{default:V(()=>[b(R(u.value.submitText||z(_)(`common.submit`)),1)]),_:1},8,[`size`,`loading`,`disabled`,`onClick`])]),_:3},8,[`size`])],!0)]),_:3})):g(`v-if`,!0)]),_:3},16,[`class`,`style`,`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`,`onSubmit`]))}}),[[`__scopeId`,`data-v-d94e0e8f`]]);function it(e){return e}function at(e){return e}function ot(e){let t=L(f(e.initialValues)),n=L(null);return{model:t,formRef:n,bindings:m(()=>({modelValue:t.value,options:ie(e.options),config:ie(e.config),"onUpdate:modelValue":e=>{t.value=f(e)}})),validate:()=>n.value?.validate()??Promise.resolve(),submit:()=>n.value?.submit()??Promise.resolve(!1),reset:()=>{n.value?(n.value.resetFields(),t.value=f(n.value.getModel())):t.value=f(e.initialValues)},getValues:()=>f(n.value?.getModel()??t.value),setValues:async(e,r=!1)=>{n.value?(await n.value.setFieldsValue(e,r),t.value=f(n.value.getModel())):t.value={...t.value,...f(e)}}}}export{we as _,Q as a,Ee as b,Be as c,ke as d,Oe as f,J as g,X as h,rt as i,We as l,De as m,it as n,Ie as o,xe as p,ot as r,ze as s,at as t,Fe as u,Ce as v,Y as x,Te as y};
|
package/dist/index.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ import { i as DEFAULT_CONTEXT_MENU_PROPS, n as ContextMenuItem, r as ContextMenu
|
|
|
20
20
|
import { S as CronValue, _ as CronFieldType, a as DEFAULT_FIELD_VALUE, b as CronTemplate, c as useCronDescription, d as _default$13, f as CronConfig, g as CronFieldMode, h as CronFieldMeta, i as DEFAULT_CRON_VALUE, l as useCronPreview, m as CronExpose, n as CRON_TEMPLATES, o as MONTH_LABELS, p as CronEmits, r as DEFAULT_CRON_EXPRESSION, s as WEEK_LABELS, t as CRON_FIELD_META, u as useCronParser, v as CronFieldValue, x as CronValidation, y as CronProps } from "./constants.js";
|
|
21
21
|
import { a as DatePickerMode, c as DateValue, i as DateModelValue, n as DateEmits, o as DateProps, r as DateExpose, s as DateRangeValue, t as _default$14 } from "./index10.vue.js";
|
|
22
22
|
import { a as DraggableEmits, c as GroupOptions, i as DragEvent, l as JustifyContent, n as _default$15, o as DraggableItem, r as AlignItems, s as DraggableProps, t as useDraggableLayout, u as LayoutMode } from "./useDraggableLayout.js";
|
|
23
|
+
import "./C_Draggable.js";
|
|
23
24
|
import { t as _default$16 } from "./index11.vue.js";
|
|
24
25
|
import { a as ExcelColumn, c as ExcelSheet, d as FilePreviewType, f as PdfLoadResult, h as _default$17, i as ExcelCell, l as FileConfig, m as ZoomConfig, n as useFilePreview, o as ExcelLoadResult, p as WordLoadResult, r as DocHeading, s as ExcelRow, t as useFullscreen, u as FilePreviewProps } from "./useFullscreen.js";
|
|
25
26
|
import { $ as FormStepActionsSlotProps, A as ResolvedFormConfig, B as DynamicFormConfig, C as unregisterRenderer, D as FormConfig, E as FORM_GLOBAL_CONFIG_KEY, F as AsyncOptionsContext, G as FormActionSlotProps, H as DynamicFormState, I as CardLayoutConfig, J as FormMode, K as FormErrorContext, L as ComponentType, M as resolveFormConfig, N as shouldShowActions, O as LAYOUTS_WITH_OWN_CONTROLS, P as useFormGlobalConfig, Q as FormSlots, R as CustomLayoutConfig, S as registerRenderer, T as FORM_DEFAULTS, U as FieldPath, V as DynamicFormController, W as FieldPathValue, X as FormOption, Y as FormModel, Z as FormRecord, _ as FormRendererContext, a as UseFormDirtyReturn, at as LayoutConfig, b as UseFormRendererOptions, c as UseCFormOptions, ct as OptionItem, d as defineFormOptions, dt as TabsLayoutConfig, et as FormSubmitContext, f as useCForm, ft as FormValidationRule, g as FormRenderer, gt as SPEC_RULES, h as FORM_RENDERER_REGISTRY_KEY, ht as RuleSpec, i as useDynamicFormState, it as LabelPlacement, j as mergeFormConfig, k as LayoutCallbacks, l as UseCFormReturn, lt as StepsLayoutConfig, m as ComponentMap, mt as PRESET_RULES, n as DynamicFormStateType, nt as GridLayoutConfig, o as useFormDirty, ot as LayoutType, p as _default$18, pt as NAIVE_COMBOS, q as FormInstance, r as FIELD_TYPE_OPTIONS, rt as InlineLayoutConfig, s as useFormState, st as MaybePromise, t as DYNAMIC_FORM_STATE_KEY, tt as FormTabActionsSlotProps, u as defineFormConfig, ut as SubmitEventPayload, v as FormRendererRegistry, w as useFormRenderer, x as createFormRendererRegistry, y as RendererProps, z as DynamicFieldConfig } from "./useDynamicFormState.js";
|
package/dist/index.vue.d.cts
CHANGED
|
@@ -60,21 +60,21 @@ type __VLS_Props = {
|
|
|
60
60
|
theme?: AudioPlayerProps['theme'];
|
|
61
61
|
};
|
|
62
62
|
declare const __VLS_export: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
63
|
-
ended: (index: number) => any;
|
|
64
63
|
error: (error: unknown) => any;
|
|
65
64
|
play: (index: number) => any;
|
|
66
65
|
pause: () => any;
|
|
66
|
+
ended: (index: number) => any;
|
|
67
67
|
modeChange: (mode: string) => any;
|
|
68
68
|
}, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
69
|
-
onEnded?: ((index: number) => any) | undefined;
|
|
70
69
|
onError?: ((error: unknown) => any) | undefined;
|
|
71
70
|
onPlay?: ((index: number) => any) | undefined;
|
|
72
71
|
onPause?: (() => any) | undefined;
|
|
72
|
+
onEnded?: ((index: number) => any) | undefined;
|
|
73
73
|
onModeChange?: ((mode: string) => any) | undefined;
|
|
74
74
|
}>, {
|
|
75
|
-
|
|
76
|
-
mode: "loop" | "list" | "single" | "shuffle";
|
|
75
|
+
mode: "list" | "loop" | "single" | "shuffle";
|
|
77
76
|
theme: "default" | "minimal";
|
|
77
|
+
autoplay: boolean;
|
|
78
78
|
initialIndex: number;
|
|
79
79
|
showPlaylist: boolean;
|
|
80
80
|
showCover: boolean;
|
package/dist/index.vue.d.ts
CHANGED
|
@@ -60,21 +60,21 @@ type __VLS_Props = {
|
|
|
60
60
|
theme?: AudioPlayerProps['theme'];
|
|
61
61
|
};
|
|
62
62
|
declare const __VLS_export: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
63
|
-
ended: (index: number) => any;
|
|
64
63
|
error: (error: unknown) => any;
|
|
65
64
|
play: (index: number) => any;
|
|
66
65
|
pause: () => any;
|
|
66
|
+
ended: (index: number) => any;
|
|
67
67
|
modeChange: (mode: string) => any;
|
|
68
68
|
}, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
69
|
-
onEnded?: ((index: number) => any) | undefined;
|
|
70
69
|
onError?: ((error: unknown) => any) | undefined;
|
|
71
70
|
onPlay?: ((index: number) => any) | undefined;
|
|
72
71
|
onPause?: (() => any) | undefined;
|
|
72
|
+
onEnded?: ((index: number) => any) | undefined;
|
|
73
73
|
onModeChange?: ((mode: string) => any) | undefined;
|
|
74
74
|
}>, {
|
|
75
|
-
|
|
76
|
-
mode: "loop" | "list" | "single" | "shuffle";
|
|
75
|
+
mode: "list" | "loop" | "single" | "shuffle";
|
|
77
76
|
theme: "default" | "minimal";
|
|
77
|
+
autoplay: boolean;
|
|
78
78
|
initialIndex: number;
|
|
79
79
|
showPlaylist: boolean;
|
|
80
80
|
showCover: boolean;
|
package/dist/index10.vue.d.cts
CHANGED
|
@@ -61,19 +61,19 @@ declare const __VLS_export: vue.DefineComponent<ContextMenuProps, {
|
|
|
61
61
|
close: () => void; /** 当前是否可见 */
|
|
62
62
|
visible: vue.ComputedRef<boolean>;
|
|
63
63
|
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
|
|
64
|
+
close: () => any;
|
|
64
65
|
select: (item: ContextMenuItem) => any;
|
|
65
66
|
open: (position: {
|
|
66
67
|
x: number;
|
|
67
68
|
y: number;
|
|
68
69
|
}) => any;
|
|
69
|
-
close: () => any;
|
|
70
70
|
}, string, vue.PublicProps, Readonly<ContextMenuProps> & Readonly<{
|
|
71
|
+
onClose?: (() => any) | undefined;
|
|
71
72
|
onSelect?: ((item: ContextMenuItem) => any) | undefined;
|
|
72
73
|
onOpen?: ((position: {
|
|
73
74
|
x: number;
|
|
74
75
|
y: number;
|
|
75
76
|
}) => any) | undefined;
|
|
76
|
-
onClose?: (() => any) | undefined;
|
|
77
77
|
}>, {
|
|
78
78
|
disabled: boolean;
|
|
79
79
|
items: ContextMenuItem[];
|