@hkyhy/marsun-components-core 0.1.52 → 0.1.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -15
- package/dist/agent-hub.d.ts +11 -0
- package/dist/agent-hub.js +144 -0
- package/dist/agent-hub.js.map +1 -0
- package/dist/components/AgentHub/Chat/Action/CreateButton.js +3 -3
- package/dist/components/AgentHub/Chat/Action/ManageActionButtons.js +4 -4
- package/dist/components/AgentHub/Chat/Action/SessionActionButtons.js +4 -4
- package/dist/components/AgentHub/Chat/Detail/ChatFollowUpSuggestions/index.js +29 -27
- package/dist/components/AgentHub/Chat/Detail/ChatFollowUpSuggestions/index.js.map +1 -1
- package/dist/components/AgentHub/Chat/Detail/ChatInput/index.js +19 -18
- package/dist/components/AgentHub/Chat/Detail/ChatInput/index.js.map +1 -1
- package/dist/components/AgentHub/Chat/Detail/CitationPanel/index.js +18 -17
- package/dist/components/AgentHub/Chat/Detail/CitationPanel/index.js.map +1 -1
- package/dist/components/AgentHub/Chat/Detail/MessageActions/index.js +23 -19
- package/dist/components/AgentHub/Chat/Detail/MessageActions/index.js.map +1 -1
- package/dist/components/AgentHub/Chat/Detail/MessageItem/index.js +23 -21
- package/dist/components/AgentHub/Chat/Detail/MessageItem/index.js.map +1 -1
- package/dist/components/AgentHub/Chat/List/ChatCard/index.js +7 -7
- package/dist/components/AgentHub/Chat/List/SessionSidebar/index.js +19 -17
- package/dist/components/AgentHub/Chat/List/SessionSidebar/index.js.map +1 -1
- package/dist/components/AgentHub/KnowledgeBase/Action/CreateButton.js +3 -3
- package/dist/components/AgentHub/KnowledgeBase/Action/ManageActionButtons.js +1 -1
- package/dist/components/AgentHub/KnowledgeBase/Detail/DocumentTable/index.js +16 -15
- package/dist/components/AgentHub/KnowledgeBase/Detail/DocumentTable/index.js.map +1 -1
- package/dist/components/AgentHub/KnowledgeBase/Detail/ParseStatusTag/index.js +7 -7
- package/dist/components/AgentHub/KnowledgeBase/List/KnowledgeCard/index.js +8 -8
- package/dist/components/AgentHub/Report/Detail/ReportHtmlPreview/index.js +1 -1
- package/dist/components/Auth/UserProfileCard/UserProfileCard.js +7 -7
- package/dist/components/Auth/UserProfileCard/style.module.scss.js +16 -16
- package/dist/components/File/FileItem/index.js +22 -20
- package/dist/components/File/FileItem/index.js.map +1 -1
- package/dist/components/File/FilePreview/index.js +11 -11
- package/dist/components/File/fileDisplay.js +41 -36
- package/dist/components/File/fileDisplay.js.map +1 -1
- package/dist/components/Filter/CommonFilter/index.js +20 -18
- package/dist/components/Filter/CommonFilter/index.js.map +1 -1
- package/dist/components/Filter/FilterSelect/index.js +90 -89
- package/dist/components/Filter/FilterSelect/index.js.map +1 -1
- package/dist/components/Filter/FilterTreeSelect/index.js +51 -48
- package/dist/components/Filter/FilterTreeSelect/index.js.map +1 -1
- package/dist/components/Filter/FilterTrigger/index.js +13 -11
- package/dist/components/Filter/FilterTrigger/index.js.map +1 -1
- package/dist/components/Form/PersonOptionRow/index.js +4 -4
- package/dist/components/Icons/ArrowLeft.d.ts +1 -0
- package/dist/components/Icons/ArrowLeft.js +7 -0
- package/dist/components/Icons/ArrowLeft.js.map +1 -0
- package/dist/components/Icons/ArrowLeftRight.d.ts +1 -0
- package/dist/components/Icons/ArrowLeftRight.js +7 -0
- package/dist/components/Icons/ArrowLeftRight.js.map +1 -0
- package/dist/components/Icons/BarChart3.d.ts +1 -0
- package/dist/components/Icons/BarChart3.js +7 -0
- package/dist/components/Icons/BarChart3.js.map +1 -0
- package/dist/components/Icons/Bell.d.ts +1 -0
- package/dist/components/Icons/Bell.js +7 -0
- package/dist/components/Icons/Bell.js.map +1 -0
- package/dist/components/Icons/BookOpen.d.ts +1 -0
- package/dist/components/Icons/BookOpen.js +7 -0
- package/dist/components/Icons/BookOpen.js.map +1 -0
- package/dist/components/Icons/Bot.d.ts +1 -0
- package/dist/components/Icons/Bot.js +7 -0
- package/dist/components/Icons/Bot.js.map +1 -0
- package/dist/components/Icons/Check.d.ts +1 -0
- package/dist/components/Icons/Check.js +7 -0
- package/dist/components/Icons/Check.js.map +1 -0
- package/dist/components/Icons/ChevronDown.d.ts +1 -0
- package/dist/components/Icons/ChevronDown.js +7 -0
- package/dist/components/Icons/ChevronDown.js.map +1 -0
- package/dist/components/Icons/ChevronLeft.d.ts +1 -0
- package/dist/components/Icons/ChevronLeft.js +7 -0
- package/dist/components/Icons/ChevronLeft.js.map +1 -0
- package/dist/components/Icons/ChevronRight.d.ts +1 -0
- package/dist/components/Icons/ChevronRight.js +7 -0
- package/dist/components/Icons/ChevronRight.js.map +1 -0
- package/dist/components/Icons/ChevronUp.d.ts +1 -0
- package/dist/components/Icons/ChevronUp.js +7 -0
- package/dist/components/Icons/ChevronUp.js.map +1 -0
- package/dist/components/Icons/CircleAlert.d.ts +1 -0
- package/dist/components/Icons/CircleAlert.js +7 -0
- package/dist/components/Icons/CircleAlert.js.map +1 -0
- package/dist/components/Icons/CircleCheck.d.ts +1 -0
- package/dist/components/Icons/CircleCheck.js +7 -0
- package/dist/components/Icons/CircleCheck.js.map +1 -0
- package/dist/components/Icons/CircleHelp.d.ts +1 -0
- package/dist/components/Icons/CircleHelp.js +7 -0
- package/dist/components/Icons/CircleHelp.js.map +1 -0
- package/dist/components/Icons/CirclePlay.d.ts +1 -0
- package/dist/components/Icons/CirclePlay.js +7 -0
- package/dist/components/Icons/CirclePlay.js.map +1 -0
- package/dist/components/Icons/CircleX.d.ts +1 -0
- package/dist/components/Icons/CircleX.js +7 -0
- package/dist/components/Icons/CircleX.js.map +1 -0
- package/dist/components/Icons/ClipboardCheck.d.ts +1 -0
- package/dist/components/Icons/ClipboardCheck.js +7 -0
- package/dist/components/Icons/ClipboardCheck.js.map +1 -0
- package/dist/components/Icons/Clock.d.ts +1 -0
- package/dist/components/Icons/Clock.js +7 -0
- package/dist/components/Icons/Clock.js.map +1 -0
- package/dist/components/Icons/CloudDownload.d.ts +1 -0
- package/dist/components/Icons/CloudDownload.js +7 -0
- package/dist/components/Icons/CloudDownload.js.map +1 -0
- package/dist/components/Icons/CloudUpload.d.ts +1 -0
- package/dist/components/Icons/CloudUpload.js +7 -0
- package/dist/components/Icons/CloudUpload.js.map +1 -0
- package/dist/components/Icons/Code.d.ts +1 -0
- package/dist/components/Icons/Code.js +7 -0
- package/dist/components/Icons/Code.js.map +1 -0
- package/dist/components/Icons/Copy.d.ts +1 -0
- package/dist/components/Icons/Copy.js +7 -0
- package/dist/components/Icons/Copy.js.map +1 -0
- package/dist/components/Icons/Crown.d.ts +1 -0
- package/dist/components/Icons/Crown.js +7 -0
- package/dist/components/Icons/Crown.js.map +1 -0
- package/dist/components/Icons/Database.d.ts +1 -0
- package/dist/components/Icons/Database.js +7 -0
- package/dist/components/Icons/Database.js.map +1 -0
- package/dist/components/Icons/Download.d.ts +1 -0
- package/dist/components/Icons/Download.js +7 -0
- package/dist/components/Icons/Download.js.map +1 -0
- package/dist/components/Icons/Eye.d.ts +1 -0
- package/dist/components/Icons/Eye.js +7 -0
- package/dist/components/Icons/Eye.js.map +1 -0
- package/dist/components/Icons/EyeOff.d.ts +1 -0
- package/dist/components/Icons/EyeOff.js +7 -0
- package/dist/components/Icons/EyeOff.js.map +1 -0
- package/dist/components/Icons/File.d.ts +1 -0
- package/dist/components/Icons/File.js +7 -0
- package/dist/components/Icons/File.js.map +1 -0
- package/dist/components/Icons/FileArchive.d.ts +1 -0
- package/dist/components/Icons/FileArchive.js +7 -0
- package/dist/components/Icons/FileArchive.js.map +1 -0
- package/dist/components/Icons/FileImage.d.ts +1 -0
- package/dist/components/Icons/FileImage.js +7 -0
- package/dist/components/Icons/FileImage.js.map +1 -0
- package/dist/components/Icons/FileSpreadsheet.d.ts +1 -0
- package/dist/components/Icons/FileSpreadsheet.js +7 -0
- package/dist/components/Icons/FileSpreadsheet.js.map +1 -0
- package/dist/components/Icons/FileText.d.ts +1 -0
- package/dist/components/Icons/FileText.js +7 -0
- package/dist/components/Icons/FileText.js.map +1 -0
- package/dist/components/Icons/Flag.d.ts +1 -0
- package/dist/components/Icons/Flag.js +7 -0
- package/dist/components/Icons/Flag.js.map +1 -0
- package/dist/components/Icons/Flame.d.ts +1 -0
- package/dist/components/Icons/Flame.js +7 -0
- package/dist/components/Icons/Flame.js.map +1 -0
- package/dist/components/Icons/Folder.d.ts +1 -0
- package/dist/components/Icons/Folder.js +7 -0
- package/dist/components/Icons/Folder.js.map +1 -0
- package/dist/components/Icons/FolderOpen.d.ts +1 -0
- package/dist/components/Icons/FolderOpen.js +7 -0
- package/dist/components/Icons/FolderOpen.js.map +1 -0
- package/dist/components/Icons/Hash.d.ts +1 -0
- package/dist/components/Icons/Hash.js +7 -0
- package/dist/components/Icons/Hash.js.map +1 -0
- package/dist/components/Icons/House.d.ts +1 -0
- package/dist/components/Icons/House.js +7 -0
- package/dist/components/Icons/House.js.map +1 -0
- package/dist/components/Icons/Import.d.ts +1 -0
- package/dist/components/Icons/Import.js +7 -0
- package/dist/components/Icons/Import.js.map +1 -0
- package/dist/components/Icons/Inbox.d.ts +1 -0
- package/dist/components/Icons/Inbox.js +7 -0
- package/dist/components/Icons/Inbox.js.map +1 -0
- package/dist/components/Icons/Info.d.ts +1 -0
- package/dist/components/Icons/Info.js +7 -0
- package/dist/components/Icons/Info.js.map +1 -0
- package/dist/components/Icons/LayoutDashboard.d.ts +1 -0
- package/dist/components/Icons/LayoutDashboard.js +7 -0
- package/dist/components/Icons/LayoutDashboard.js.map +1 -0
- package/dist/components/Icons/LayoutGrid.d.ts +1 -0
- package/dist/components/Icons/LayoutGrid.js +7 -0
- package/dist/components/Icons/LayoutGrid.js.map +1 -0
- package/dist/components/Icons/ListTodo.d.ts +1 -0
- package/dist/components/Icons/ListTodo.js +7 -0
- package/dist/components/Icons/ListTodo.js.map +1 -0
- package/dist/components/Icons/Loader2.d.ts +1 -0
- package/dist/components/Icons/Loader2.js +7 -0
- package/dist/components/Icons/Loader2.js.map +1 -0
- package/dist/components/Icons/Lock.d.ts +1 -0
- package/dist/components/Icons/Lock.js +7 -0
- package/dist/components/Icons/Lock.js.map +1 -0
- package/dist/components/Icons/LogOut.d.ts +1 -0
- package/dist/components/Icons/LogOut.js +7 -0
- package/dist/components/Icons/LogOut.js.map +1 -0
- package/dist/components/Icons/Maximize2.d.ts +1 -0
- package/dist/components/Icons/Maximize2.js +7 -0
- package/dist/components/Icons/Maximize2.js.map +1 -0
- package/dist/components/Icons/MessageCircle.d.ts +1 -0
- package/dist/components/Icons/MessageCircle.js +7 -0
- package/dist/components/Icons/MessageCircle.js.map +1 -0
- package/dist/components/Icons/MessageSquare.d.ts +1 -0
- package/dist/components/Icons/MessageSquare.js +7 -0
- package/dist/components/Icons/MessageSquare.js.map +1 -0
- package/dist/components/Icons/Minimize2.d.ts +1 -0
- package/dist/components/Icons/Minimize2.js +7 -0
- package/dist/components/Icons/Minimize2.js.map +1 -0
- package/dist/components/Icons/PanelLeftClose.d.ts +1 -0
- package/dist/components/Icons/PanelLeftClose.js +7 -0
- package/dist/components/Icons/PanelLeftClose.js.map +1 -0
- package/dist/components/Icons/PanelLeftOpen.d.ts +1 -0
- package/dist/components/Icons/PanelLeftOpen.js +7 -0
- package/dist/components/Icons/PanelLeftOpen.js.map +1 -0
- package/dist/components/Icons/Pause.d.ts +1 -0
- package/dist/components/Icons/Pause.js +7 -0
- package/dist/components/Icons/Pause.js.map +1 -0
- package/dist/components/Icons/Pencil.d.ts +1 -0
- package/dist/components/Icons/Pencil.js +7 -0
- package/dist/components/Icons/Pencil.js.map +1 -0
- package/dist/components/Icons/Plus.d.ts +1 -0
- package/dist/components/Icons/Plus.js +7 -0
- package/dist/components/Icons/Plus.js.map +1 -0
- package/dist/components/Icons/Presentation.d.ts +1 -0
- package/dist/components/Icons/Presentation.js +7 -0
- package/dist/components/Icons/Presentation.js.map +1 -0
- package/dist/components/Icons/RefreshCw.d.ts +1 -0
- package/dist/components/Icons/RefreshCw.js +7 -0
- package/dist/components/Icons/RefreshCw.js.map +1 -0
- package/dist/components/Icons/RotateCw.d.ts +1 -0
- package/dist/components/Icons/RotateCw.js +7 -0
- package/dist/components/Icons/RotateCw.js.map +1 -0
- package/dist/components/Icons/Send.d.ts +1 -0
- package/dist/components/Icons/Send.js +7 -0
- package/dist/components/Icons/Send.js.map +1 -0
- package/dist/components/Icons/Settings.d.ts +1 -0
- package/dist/components/Icons/Settings.js +7 -0
- package/dist/components/Icons/Settings.js.map +1 -0
- package/dist/components/Icons/Shield.d.ts +1 -0
- package/dist/components/Icons/Shield.js +7 -0
- package/dist/components/Icons/Shield.js.map +1 -0
- package/dist/components/Icons/ShieldCheck.d.ts +1 -0
- package/dist/components/Icons/ShieldCheck.js +7 -0
- package/dist/components/Icons/ShieldCheck.js.map +1 -0
- package/dist/components/Icons/SlidersHorizontal.d.ts +1 -0
- package/dist/components/Icons/SlidersHorizontal.js +7 -0
- package/dist/components/Icons/SlidersHorizontal.js.map +1 -0
- package/dist/components/Icons/Square.d.ts +1 -0
- package/dist/components/Icons/Square.js +7 -0
- package/dist/components/Icons/Square.js.map +1 -0
- package/dist/components/Icons/Star.d.ts +1 -0
- package/dist/components/Icons/Star.js +7 -0
- package/dist/components/Icons/Star.js.map +1 -0
- package/dist/components/Icons/ThumbsDown.d.ts +1 -0
- package/dist/components/Icons/ThumbsDown.js +7 -0
- package/dist/components/Icons/ThumbsDown.js.map +1 -0
- package/dist/components/Icons/ThumbsUp.d.ts +1 -0
- package/dist/components/Icons/ThumbsUp.js +7 -0
- package/dist/components/Icons/ThumbsUp.js.map +1 -0
- package/dist/components/Icons/Trash2.d.ts +1 -0
- package/dist/components/Icons/Trash2.js +7 -0
- package/dist/components/Icons/Trash2.js.map +1 -0
- package/dist/components/Icons/Trophy.d.ts +1 -0
- package/dist/components/Icons/Trophy.js +7 -0
- package/dist/components/Icons/Trophy.js.map +1 -0
- package/dist/components/Icons/Undo2.d.ts +1 -0
- package/dist/components/Icons/Undo2.js +7 -0
- package/dist/components/Icons/Undo2.js.map +1 -0
- package/dist/components/Icons/Upload.d.ts +1 -0
- package/dist/components/Icons/Upload.js +7 -0
- package/dist/components/Icons/Upload.js.map +1 -0
- package/dist/components/Icons/User.d.ts +1 -0
- package/dist/components/Icons/User.js +7 -0
- package/dist/components/Icons/User.js.map +1 -0
- package/dist/components/Icons/UserPlus.d.ts +1 -0
- package/dist/components/Icons/UserPlus.js +7 -0
- package/dist/components/Icons/UserPlus.js.map +1 -0
- package/dist/components/Icons/UserRoundCog.d.ts +1 -0
- package/dist/components/Icons/UserRoundCog.js +7 -0
- package/dist/components/Icons/UserRoundCog.js.map +1 -0
- package/dist/components/Icons/Users.d.ts +1 -0
- package/dist/components/Icons/Users.js +7 -0
- package/dist/components/Icons/Users.js.map +1 -0
- package/dist/components/Icons/X.d.ts +1 -0
- package/dist/components/Icons/X.js +7 -0
- package/dist/components/Icons/X.js.map +1 -0
- package/dist/components/Icons/createIcon.d.ts +9 -0
- package/dist/components/Icons/createIcon.js +32 -0
- package/dist/components/Icons/createIcon.js.map +1 -0
- package/dist/components/Icons/index.d.ts +80 -90
- package/dist/components/Icons/registry.d.ts +6 -0
- package/dist/components/Icons/registry.js +239 -0
- package/dist/components/Icons/registry.js.map +1 -0
- package/dist/components/InteractiveBlock/InteractiveBlock.js +6 -6
- package/dist/components/Layout/AgentAppShell/AgentAppShell.js +112 -91
- package/dist/components/Layout/AgentAppShell/AgentAppShell.js.map +1 -1
- package/dist/components/Layout/AgentAppShell/style.module.scss.js +20 -18
- package/dist/components/Layout/AgentAppShell/style.module.scss.js.map +1 -1
- package/dist/components/Layout/PageHeaderLayout/index.js +7 -7
- package/dist/components/Modal/Modal/index.js +8 -8
- package/dist/components/Modal/StepModal/index.js +9 -9
- package/dist/components/OrgTree/OrgTree.js +41 -39
- package/dist/components/OrgTree/OrgTree.js.map +1 -1
- package/dist/components/StateBar/StateBar.js +4 -4
- package/dist/components/Table/ColumnConfigPanel.js +13 -10
- package/dist/components/Table/ColumnConfigPanel.js.map +1 -1
- package/dist/components/Table/Table.js +7 -7
- package/dist/components/Tour/AppTour/index.js +10 -10
- package/dist/components/Upload/index.js +76 -72
- package/dist/components/Upload/index.js.map +1 -1
- package/dist/file.d.ts +5 -0
- package/dist/file.js +24 -0
- package/dist/file.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +615 -537
- package/dist/index.js.map +1 -1
- package/dist/llm.d.ts +5 -0
- package/dist/llm.js +8 -0
- package/dist/llm.js.map +1 -0
- package/dist/marsun-components-core.css +1 -1
- package/dist/styles/global.css +1 -1
- package/package.json +15 -5
- package/dist/components/Icons/index.js +0 -268
- package/dist/components/Icons/index.js.map +0 -1
|
@@ -1,57 +1,58 @@
|
|
|
1
|
-
import { jsxs as C, jsx as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import Te from "../FilterPopover/index.js";
|
|
1
|
+
import { jsxs as C, jsx as l, Fragment as Ce } from "react/jsx-runtime";
|
|
2
|
+
import { Input as Fe, Spin as we, Checkbox as re, Space as Oe } from "antd";
|
|
3
|
+
import { useState as P, useRef as te, useEffect as G, useMemo as ne } from "react";
|
|
4
|
+
import De from "../../Form/PersonOptionRow/index.js";
|
|
5
|
+
import Pe from "../FilterPopover/index.js";
|
|
7
6
|
import { resolveFilterVisible as se } from "../types.js";
|
|
8
|
-
import { useFilterFieldBridge as
|
|
7
|
+
import { useFilterFieldBridge as Re, useFilterRegister as Te } from "../useFilterState.js";
|
|
9
8
|
import a from "./style.module.scss.js";
|
|
10
9
|
import g from "classnames";
|
|
11
|
-
import
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
import Me from "../../Empty/Empty.js";
|
|
11
|
+
import { Check as je } from "../../Icons/Check.js";
|
|
12
|
+
import { X as ze } from "../../Icons/X.js";
|
|
13
|
+
const { Search: Be } = Fe;
|
|
14
|
+
function Ie(r) {
|
|
15
|
+
const s = [r.label];
|
|
16
|
+
return r.departmentName && s.push(r.departmentName), s.join(" · ");
|
|
16
17
|
}
|
|
17
|
-
function qe(
|
|
18
|
+
function qe(r, s) {
|
|
18
19
|
const f = s.toLowerCase();
|
|
19
|
-
return [
|
|
20
|
+
return [r.label, r.departmentName, r.email, r.phone, r.employeeId].filter(Boolean).some((h) => String(h).toLowerCase().includes(f));
|
|
20
21
|
}
|
|
21
|
-
function ie(
|
|
22
|
-
if (!(
|
|
23
|
-
if (!
|
|
24
|
-
const f = [...
|
|
22
|
+
function ie(r, s) {
|
|
23
|
+
if (!(r != null && r.length) && !(s != null && s.length)) return !0;
|
|
24
|
+
if (!r || !s || r.length !== s.length) return !1;
|
|
25
|
+
const f = [...r].map(String).sort(), h = [...s].map(String).sort();
|
|
25
26
|
return f.every((m, c) => m === h[c]);
|
|
26
27
|
}
|
|
27
|
-
function ce(
|
|
28
|
-
return Array.isArray(
|
|
28
|
+
function ce(r) {
|
|
29
|
+
return Array.isArray(r) ? r : r != null && r !== "" ? [r] : [];
|
|
29
30
|
}
|
|
30
|
-
function J(
|
|
31
|
+
function J(r, s, f, h, m) {
|
|
31
32
|
if (h) {
|
|
32
|
-
const c = ce(
|
|
33
|
+
const c = ce(r);
|
|
33
34
|
return !m && (f != null && f.length) && ie(c, f) ? [] : c;
|
|
34
35
|
}
|
|
35
|
-
if (!(!m && s !== void 0 &&
|
|
36
|
-
return
|
|
36
|
+
if (!(!m && s !== void 0 && r === s))
|
|
37
|
+
return r;
|
|
37
38
|
}
|
|
38
|
-
function H(
|
|
39
|
-
return h ? ce(
|
|
39
|
+
function H(r, s, f, h) {
|
|
40
|
+
return h ? ce(r) : J(r, s, f, !1, !0);
|
|
40
41
|
}
|
|
41
|
-
function Ee(
|
|
42
|
+
function Ee(r, s, f, h, m) {
|
|
42
43
|
if (f) {
|
|
43
|
-
const d =
|
|
44
|
+
const d = r || [];
|
|
44
45
|
return d.length ? m != null && m.length && ie(d, m) ? "全部" : d.map((S) => {
|
|
45
46
|
var p;
|
|
46
47
|
return ((p = s.find((F) => String(F.value) === String(S))) == null ? void 0 : p.label) ?? String(S);
|
|
47
48
|
}).join("、") : "";
|
|
48
49
|
}
|
|
49
|
-
if (
|
|
50
|
-
const c = s.find((d) => String(d.value) === String(
|
|
51
|
-
return c ? h ? Ie(c) : c.label : String(
|
|
50
|
+
if (r == null) return "";
|
|
51
|
+
const c = s.find((d) => String(d.value) === String(r));
|
|
52
|
+
return c ? h ? Ie(c) : c.label : String(r);
|
|
52
53
|
}
|
|
53
|
-
const
|
|
54
|
-
filterKey:
|
|
54
|
+
const er = ({
|
|
55
|
+
filterKey: r,
|
|
55
56
|
label: s,
|
|
56
57
|
options: f,
|
|
57
58
|
loadData: h,
|
|
@@ -61,10 +62,10 @@ const Ve = ({
|
|
|
61
62
|
defaultValue: S,
|
|
62
63
|
defaultValues: p,
|
|
63
64
|
showDefaultAsSelected: F = !1,
|
|
64
|
-
searchable:
|
|
65
|
+
searchable: oe = !1,
|
|
65
66
|
multiple: n = !1,
|
|
66
67
|
minSelection: v,
|
|
67
|
-
variant:
|
|
68
|
+
variant: le = "default",
|
|
68
69
|
active: ae,
|
|
69
70
|
hidden: j,
|
|
70
71
|
display: z,
|
|
@@ -74,10 +75,10 @@ const Ve = ({
|
|
|
74
75
|
panelWidth: ge,
|
|
75
76
|
loading: he = !1
|
|
76
77
|
}) => {
|
|
77
|
-
const w =
|
|
78
|
+
const w = le === "person", [me, R] = P(!1), [T, I] = P(""), b = te(d);
|
|
78
79
|
b.current = d;
|
|
79
|
-
const ve = ge ?? (B ? 460 : void 0), { resolvedLabel: x, values: Se, depsKey: pe } =
|
|
80
|
-
filterKey:
|
|
80
|
+
const ve = ge ?? (B ? 460 : void 0), { resolvedLabel: x, values: Se, depsKey: pe } = Re({
|
|
81
|
+
filterKey: r,
|
|
81
82
|
value: c,
|
|
82
83
|
label: s,
|
|
83
84
|
dependsOn: fe,
|
|
@@ -86,14 +87,14 @@ const Ve = ({
|
|
|
86
87
|
var e;
|
|
87
88
|
return (e = b.current) == null ? void 0 : e.call(b, void 0);
|
|
88
89
|
}
|
|
89
|
-
}), [be, Q] = P([]), [ue, U] = P(!1), q =
|
|
90
|
+
}), [be, Q] = P([]), [ue, U] = P(!1), q = te(h);
|
|
90
91
|
q.current = h, G(() => {
|
|
91
92
|
if (!q.current || f != null || !m) return;
|
|
92
93
|
let e = !1;
|
|
93
94
|
return U(!0), (async () => {
|
|
94
95
|
try {
|
|
95
|
-
const
|
|
96
|
-
e || Q(
|
|
96
|
+
const t = await q.current({ values: Se });
|
|
97
|
+
e || Q(t ?? []);
|
|
97
98
|
} catch {
|
|
98
99
|
e || Q([]);
|
|
99
100
|
} finally {
|
|
@@ -103,7 +104,7 @@ const Ve = ({
|
|
|
103
104
|
e = !0;
|
|
104
105
|
};
|
|
105
106
|
}, [pe, m, f, h]);
|
|
106
|
-
const O = f ?? be, Y = he || ue,
|
|
107
|
+
const O = f ?? be, Y = he || ue, o = J(
|
|
107
108
|
c,
|
|
108
109
|
S,
|
|
109
110
|
p,
|
|
@@ -111,13 +112,13 @@ const Ve = ({
|
|
|
111
112
|
F
|
|
112
113
|
), [u, A] = P(
|
|
113
114
|
() => H(c, S, p, n) ?? (n ? [] : void 0)
|
|
114
|
-
), M =
|
|
115
|
-
const e = Array.isArray(
|
|
115
|
+
), M = Te(), Z = ne(() => {
|
|
116
|
+
const e = Array.isArray(o) ? o : o != null && o !== "" ? [o] : [], t = !n || v == null || e.length > v;
|
|
116
117
|
return () => {
|
|
117
118
|
var i;
|
|
118
|
-
|
|
119
|
+
t && ((i = b.current) == null || i.call(b, void 0));
|
|
119
120
|
};
|
|
120
|
-
}, [
|
|
121
|
+
}, [o, v, n]), _ = () => {
|
|
121
122
|
A(
|
|
122
123
|
H(c, S, p, n) ?? (n ? [] : void 0)
|
|
123
124
|
), I("");
|
|
@@ -125,36 +126,36 @@ const Ve = ({
|
|
|
125
126
|
G(() => {
|
|
126
127
|
const e = H(c, S, p, n);
|
|
127
128
|
A(e ?? (n ? [] : void 0));
|
|
128
|
-
const
|
|
129
|
+
const t = J(
|
|
129
130
|
c,
|
|
130
131
|
S,
|
|
131
132
|
p,
|
|
132
133
|
n,
|
|
133
134
|
F
|
|
134
135
|
);
|
|
135
|
-
(
|
|
136
|
+
(t == null || Array.isArray(t) && t.length === 0) && I("");
|
|
136
137
|
}, [c, S, p, n, F]);
|
|
137
138
|
const E = ne(
|
|
138
|
-
() => Ee(
|
|
139
|
-
[O,
|
|
139
|
+
() => Ee(o, O, n, w, p),
|
|
140
|
+
[O, o, n, w, p]
|
|
140
141
|
);
|
|
141
142
|
if (G(() => {
|
|
142
143
|
if (!M) return;
|
|
143
|
-
if (!se({ display: z, hidden: j }, { filterKey:
|
|
144
|
-
M.unregister(
|
|
144
|
+
if (!se({ display: z, hidden: j }, { filterKey: r, label: x, value: c })) {
|
|
145
|
+
M.unregister(r);
|
|
145
146
|
return;
|
|
146
147
|
}
|
|
147
148
|
if (E) {
|
|
148
|
-
const
|
|
149
|
-
M.register(
|
|
149
|
+
const t = Array.isArray(o) ? o : o != null && o !== "" ? [o] : [], i = !n || v == null || t.length > v;
|
|
150
|
+
M.register(r, {
|
|
150
151
|
label: x,
|
|
151
152
|
valueLabel: E,
|
|
152
153
|
onRemove: Z,
|
|
153
154
|
removable: i
|
|
154
155
|
});
|
|
155
156
|
} else
|
|
156
|
-
M.unregister(
|
|
157
|
-
}, [E,
|
|
157
|
+
M.unregister(r);
|
|
158
|
+
}, [E, r, x, j, z, Z]), !se({ display: z, hidden: j }, { filterKey: r, label: x, value: c })) return null;
|
|
158
159
|
const y = T ? O.filter(
|
|
159
160
|
(e) => w ? qe(e, T) : e.label.toLowerCase().includes(T.toLowerCase())
|
|
160
161
|
) : O, ye = () => {
|
|
@@ -165,33 +166,33 @@ const Ve = ({
|
|
|
165
166
|
!e && n && _(), R(e);
|
|
166
167
|
}, Ae = (e) => {
|
|
167
168
|
if (!n) {
|
|
168
|
-
const
|
|
169
|
+
const t = S !== void 0 && e === S;
|
|
169
170
|
let i;
|
|
170
|
-
u === e ||
|
|
171
|
+
u === e || t ? i = void 0 : i = e, A(i), d == null || d(i), R(!1);
|
|
171
172
|
}
|
|
172
173
|
}, W = (e) => {
|
|
173
|
-
const
|
|
174
|
-
if (i && v != null &&
|
|
174
|
+
const t = u || [], i = t.some((N) => String(N) === String(e));
|
|
175
|
+
if (i && v != null && t.length <= v)
|
|
175
176
|
return;
|
|
176
|
-
const D = i ?
|
|
177
|
+
const D = i ? t.filter((N) => String(N) !== String(e)) : [...t, e];
|
|
177
178
|
A(D);
|
|
178
179
|
}, L = Array.isArray(u) ? u : [], K = y.filter(
|
|
179
|
-
(e) => L.some((
|
|
180
|
+
(e) => L.some((t) => String(t) === String(e.value))
|
|
180
181
|
).length, X = y.length > 0 && K === y.length, Le = K > 0 && !X, V = (e) => {
|
|
181
|
-
const
|
|
182
|
+
const t = L, i = y.map((k) => k.value);
|
|
182
183
|
if (e) {
|
|
183
|
-
const k = new Set(
|
|
184
|
+
const k = new Set(t.map(String)), ee = [...t];
|
|
184
185
|
for (const $ of i)
|
|
185
186
|
k.has(String($)) || (ee.push($), k.add(String($)));
|
|
186
187
|
A(ee);
|
|
187
188
|
return;
|
|
188
189
|
}
|
|
189
190
|
const D = new Set(i.map(String));
|
|
190
|
-
let N =
|
|
191
|
-
v != null && N.length < v && (N =
|
|
192
|
-
}, ke = n ? Array.isArray(
|
|
191
|
+
let N = t.filter((k) => !D.has(String(k)));
|
|
192
|
+
v != null && N.length < v && (N = t.slice(0, v)), A(N);
|
|
193
|
+
}, ke = n ? Array.isArray(o) && o.length > 0 : o != null && o !== "";
|
|
193
194
|
return /* @__PURE__ */ C(
|
|
194
|
-
|
|
195
|
+
Pe,
|
|
195
196
|
{
|
|
196
197
|
label: x,
|
|
197
198
|
active: ae || ke,
|
|
@@ -202,7 +203,7 @@ const Ve = ({
|
|
|
202
203
|
onConfirm: n ? ye : void 0,
|
|
203
204
|
onReset: n ? Ne : void 0,
|
|
204
205
|
children: [
|
|
205
|
-
|
|
206
|
+
oe && /* @__PURE__ */ l(
|
|
206
207
|
Be,
|
|
207
208
|
{
|
|
208
209
|
placeholder: `搜索${x}`,
|
|
@@ -213,14 +214,14 @@ const Ve = ({
|
|
|
213
214
|
onChange: (e) => I(e.target.value)
|
|
214
215
|
}
|
|
215
216
|
),
|
|
216
|
-
B ? /* @__PURE__ */
|
|
217
|
+
B ? /* @__PURE__ */ l(
|
|
217
218
|
"div",
|
|
218
219
|
{
|
|
219
220
|
className: g("filter-select-panel-extra", a["filter-select-panel-extra"]),
|
|
220
221
|
children: B
|
|
221
222
|
}
|
|
222
223
|
) : null,
|
|
223
|
-
/* @__PURE__ */
|
|
224
|
+
/* @__PURE__ */ l("div", { className: g("filter-select-options", a["filter-select-options"]), children: Y ? /* @__PURE__ */ l("div", { className: g("filter-select-loading", a["filter-select-loading"]), children: /* @__PURE__ */ l(we, { size: "small" }) }) : y.length === 0 ? /* @__PURE__ */ l("div", { className: g("filter-select-empty", a["filter-select-empty"]), children: /* @__PURE__ */ l(Me, { iconType: "simple", description: "暂无数据" }) }) : /* @__PURE__ */ C(Ce, { children: [
|
|
224
225
|
n && y.length > 0 && /* @__PURE__ */ C(
|
|
225
226
|
"div",
|
|
226
227
|
{
|
|
@@ -232,8 +233,8 @@ const Ve = ({
|
|
|
232
233
|
),
|
|
233
234
|
onClick: () => V(!X),
|
|
234
235
|
children: [
|
|
235
|
-
/* @__PURE__ */
|
|
236
|
-
|
|
236
|
+
/* @__PURE__ */ l(
|
|
237
|
+
re,
|
|
237
238
|
{
|
|
238
239
|
checked: X,
|
|
239
240
|
indeterminate: Le,
|
|
@@ -241,7 +242,7 @@ const Ve = ({
|
|
|
241
242
|
onClick: (e) => e.stopPropagation()
|
|
242
243
|
}
|
|
243
244
|
),
|
|
244
|
-
/* @__PURE__ */
|
|
245
|
+
/* @__PURE__ */ l("span", { children: "全选" })
|
|
245
246
|
]
|
|
246
247
|
}
|
|
247
248
|
),
|
|
@@ -258,17 +259,17 @@ const Ve = ({
|
|
|
258
259
|
),
|
|
259
260
|
onClick: () => n ? W(e.value) : Ae(e.value),
|
|
260
261
|
children: [
|
|
261
|
-
n && /* @__PURE__ */
|
|
262
|
-
|
|
262
|
+
n && /* @__PURE__ */ l(
|
|
263
|
+
re,
|
|
263
264
|
{
|
|
264
|
-
checked: L.some((
|
|
265
|
+
checked: L.some((t) => String(t) === String(e.value)),
|
|
265
266
|
onChange: () => W(e.value),
|
|
266
|
-
onClick: (
|
|
267
|
+
onClick: (t) => t.stopPropagation()
|
|
267
268
|
}
|
|
268
269
|
),
|
|
269
|
-
w ? /* @__PURE__ */
|
|
270
|
-
!n && !w && u === e.value && /* @__PURE__ */
|
|
271
|
-
|
|
270
|
+
w ? /* @__PURE__ */ l(De, { option: e }) : /* @__PURE__ */ l("span", { children: e.label }),
|
|
271
|
+
!n && !w && u === e.value && /* @__PURE__ */ l(
|
|
272
|
+
je,
|
|
272
273
|
{
|
|
273
274
|
className: g(
|
|
274
275
|
"filter-select-option-check",
|
|
@@ -286,7 +287,7 @@ const Ve = ({
|
|
|
286
287
|
{
|
|
287
288
|
className: g("filter-select-selected-bar", a["filter-select-selected-bar"]),
|
|
288
289
|
children: [
|
|
289
|
-
/* @__PURE__ */
|
|
290
|
+
/* @__PURE__ */ l(
|
|
290
291
|
"div",
|
|
291
292
|
{
|
|
292
293
|
className: g(
|
|
@@ -296,15 +297,15 @@ const Ve = ({
|
|
|
296
297
|
children: "已选:"
|
|
297
298
|
}
|
|
298
299
|
),
|
|
299
|
-
/* @__PURE__ */
|
|
300
|
+
/* @__PURE__ */ l(
|
|
300
301
|
"div",
|
|
301
302
|
{
|
|
302
303
|
className: g(
|
|
303
304
|
"filter-select-selected-tags",
|
|
304
305
|
a["filter-select-selected-tags"]
|
|
305
306
|
),
|
|
306
|
-
children: /* @__PURE__ */
|
|
307
|
-
const
|
|
307
|
+
children: /* @__PURE__ */ l(Oe, { size: [4, 4], wrap: !0, children: L.map((e) => {
|
|
308
|
+
const t = O.find((D) => String(D.value) === String(e)), i = v == null || L.length > v;
|
|
308
309
|
return /* @__PURE__ */ C(
|
|
309
310
|
"span",
|
|
310
311
|
{
|
|
@@ -315,9 +316,9 @@ const Ve = ({
|
|
|
315
316
|
),
|
|
316
317
|
onClick: () => i && W(e),
|
|
317
318
|
children: [
|
|
318
|
-
(
|
|
319
|
-
/* @__PURE__ */
|
|
320
|
-
|
|
319
|
+
(t == null ? void 0 : t.label) ?? String(e),
|
|
320
|
+
/* @__PURE__ */ l(
|
|
321
|
+
ze,
|
|
321
322
|
{
|
|
322
323
|
className: g(
|
|
323
324
|
"filter-select-selected-remove",
|
|
@@ -341,6 +342,6 @@ const Ve = ({
|
|
|
341
342
|
);
|
|
342
343
|
};
|
|
343
344
|
export {
|
|
344
|
-
|
|
345
|
+
er as default
|
|
345
346
|
};
|
|
346
347
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterSelect/index.tsx"],"sourcesContent":["import { Check, X } from '@/components/Icons';\nimport { Empty } from '@/components/Empty';\nimport { Checkbox, Input, Space, Spin } from 'antd';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport PersonOptionRow from '../../Form/PersonOptionRow';\nimport FilterPopover from '../FilterPopover';\nimport type { BaseFilterProps, FilterLoadDataContext, FilterOption, PersonOption } from '../types';\nimport { resolveFilterVisible } from '../types';\nimport { useFilterFieldBridge, useFilterRegister } from '../useFilterState';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nconst { Search } = Input;\n\nfunction formatPersonValueLabel(opt: PersonOption): string {\n const parts = [opt.label];\n if (opt.departmentName) parts.push(opt.departmentName);\n return parts.join(' · ');\n}\n\nfunction matchPersonOptionSearch(opt: PersonOption, keyword: string): boolean {\n const lower = keyword.toLowerCase();\n return [opt.label, opt.departmentName, opt.email, opt.phone, opt.employeeId]\n .filter(Boolean)\n .some((s) => String(s).toLowerCase().includes(lower));\n}\n\ntype FilterSelectValue = string | number | (string | number)[] | undefined;\n\nexport type { FilterSelectValue };\n\nfunction arraysEqual(a?: (string | number)[], b?: (string | number)[]): boolean {\n if (!a?.length && !b?.length) return true;\n if (!a || !b || a.length !== b.length) return false;\n const sortedA = [...a].map(String).sort();\n const sortedB = [...b].map(String).sort();\n return sortedA.every((v, i) => v === sortedB[i]);\n}\n\ninterface FilterSelectProps extends BaseFilterProps {\n /** 静态选项;与 loadData 二选一(同时存在时以 options 为准) */\n options?: FilterOption[];\n /** 按依赖值动态拉取选项 */\n loadData?: (ctx: FilterLoadDataContext) => Promise<FilterOption[]>;\n /** loadData 是否启用;默认 true */\n enabled?: boolean;\n value?: FilterSelectValue;\n onChange?: (value: FilterSelectValue) => void;\n /** 默认值:与默认值相同时视为未筛选(除非 showDefaultAsSelected) */\n defaultValue?: string | number;\n /** 多选默认值:与默认集合相同时视为未筛选(除非 showDefaultAsSelected) */\n defaultValues?: (string | number)[];\n /** 为 true 时,value 等于默认仍展示在「您已选择」并保持选中态 */\n showDefaultAsSelected?: boolean;\n placeholder?: string;\n searchable?: boolean;\n /** 是否多选 */\n multiple?: boolean;\n /** 多选至少保留项数;达到下限时不允许移除已选标签 */\n minSelection?: number;\n /** 人员选项:展示部门与联系方式 */\n variant?: 'default' | 'person';\n /**\n * 面板内嵌从属条件(与 search 同层:search 下方、选项列表上方)。\n * 禁止再嵌 Filter*(双重 Popover)。\n */\n panelExtra?: React.ReactNode;\n /** 面板宽度;有 panelExtra 时默认 460 */\n panelWidth?: number;\n /**\n * 选项加载中:Filter Item(Trigger)显示 Loader2 spin;\n * 面板列表区显示 Spin,不渲染空态。\n * 与内部 loadData loading 取或。\n */\n loading?: boolean;\n}\n\nfunction toMultiArray(value: FilterSelectValue): (string | number)[] {\n if (Array.isArray(value)) return value;\n if (value != null && value !== '') return [value];\n return [];\n}\n\nfunction toDisplayValue(\n value: FilterSelectValue,\n defaultValue: string | number | undefined,\n defaultValues: (string | number)[] | undefined,\n multiple: boolean,\n showDefaultAsSelected: boolean,\n): string | number | (string | number)[] | undefined {\n if (multiple) {\n const arr = toMultiArray(value);\n // 等于默认集合时:对外视为「未筛选」(不亮 trigger / 不进「您已选择」)\n if (!showDefaultAsSelected && defaultValues?.length && arraysEqual(arr, defaultValues)) {\n return [];\n }\n return arr;\n }\n if (!showDefaultAsSelected && defaultValue !== undefined && value === defaultValue) {\n return undefined;\n }\n return value;\n}\n\n/** 草稿/面板用真实 value,避免 defaultValues 折叠成 [] 后全选勾选丢失 */\nfunction toDraftValue(\n value: FilterSelectValue,\n defaultValue: string | number | undefined,\n defaultValues: (string | number)[] | undefined,\n multiple: boolean,\n): string | number | (string | number)[] | undefined {\n if (multiple) return toMultiArray(value);\n return toDisplayValue(value, defaultValue, defaultValues, false, true);\n}\n\nfunction formatValueLabel(\n displayVal: string | number | (string | number)[] | undefined,\n options: FilterOption[],\n multiple: boolean,\n isPersonVariant: boolean,\n defaultValues?: (string | number)[],\n): string {\n if (multiple) {\n const arr = (displayVal as (string | number)[]) || [];\n if (!arr.length) return '';\n // 全选默认集合时用「全部」,避免「您已选择」被几十个厂名撑满\n if (defaultValues?.length && arraysEqual(arr, defaultValues)) {\n return '全部';\n }\n return arr\n .map((v) => options.find((o) => String(o.value) === String(v))?.label ?? String(v))\n .join('、');\n }\n if (displayVal == null) return '';\n const opt = options.find((o) => String(o.value) === String(displayVal));\n if (!opt) return String(displayVal);\n return isPersonVariant ? formatPersonValueLabel(opt as PersonOption) : opt.label;\n}\n\nconst FilterSelect: React.FC<FilterSelectProps> = ({\n filterKey,\n label,\n options: optionsProp,\n loadData,\n enabled = true,\n value,\n onChange,\n defaultValue,\n defaultValues,\n showDefaultAsSelected = false,\n searchable = false,\n multiple = false,\n minSelection,\n variant = 'default',\n active,\n hidden,\n display,\n dependsOn,\n clearOnDepsChange = true,\n panelExtra,\n panelWidth,\n loading: loadingProp = false,\n}) => {\n const isPersonVariant = variant === 'person';\n const [open, setOpen] = useState(false);\n const [searchText, setSearchText] = useState('');\n\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const resolvedPanelWidth = panelWidth ?? (panelExtra ? 460 : undefined);\n\n const { resolvedLabel, values, depsKey } = useFilterFieldBridge({\n filterKey,\n value,\n label,\n dependsOn,\n clearOnDepsChange,\n onDepsClear: () => onChangeRef.current?.(undefined),\n });\n\n const [loadedOptions, setLoadedOptions] = useState<FilterOption[]>([]);\n const [loadDataLoading, setLoadDataLoading] = useState(false);\n const loadDataRef = useRef(loadData);\n loadDataRef.current = loadData;\n\n useEffect(() => {\n if (!loadDataRef.current || optionsProp != null || !enabled) return;\n let cancelled = false;\n setLoadDataLoading(true);\n (async () => {\n try {\n const next = await loadDataRef.current!({ values });\n if (!cancelled) setLoadedOptions(next ?? []);\n } catch {\n if (!cancelled) setLoadedOptions([]);\n } finally {\n if (!cancelled) setLoadDataLoading(false);\n }\n })();\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [depsKey, enabled, optionsProp, loadData]);\n\n const options = optionsProp ?? loadedOptions;\n const optionsLoading = loadingProp || loadDataLoading;\n\n const displayValue = toDisplayValue(\n value,\n defaultValue,\n defaultValues,\n multiple,\n showDefaultAsSelected,\n );\n const [localValue, setLocalValue] = useState<string | number | (string | number)[] | undefined>(\n () => toDraftValue(value, defaultValue, defaultValues, multiple) ?? (multiple ? [] : undefined),\n );\n\n // ── 自动注册到 CommonFilter ──\n const registerFn = useFilterRegister();\n const handleRemove = useMemo(() => {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const canRemove = !multiple || minSelection == null || selectedArr.length > minSelection;\n return () => {\n if (!canRemove) return;\n onChangeRef.current?.(undefined);\n };\n }, [displayValue, minSelection, multiple]);\n\n const revertToCommitted = () => {\n setLocalValue(\n toDraftValue(value, defaultValue, defaultValues, multiple) ?? (multiple ? [] : undefined),\n );\n setSearchText('');\n };\n\n // 同步外部 value 到内部 localValue(多选用真实 value,保留 defaultValues 全选勾选)\n useEffect(() => {\n const nextDraft = toDraftValue(value, defaultValue, defaultValues, multiple);\n setLocalValue(nextDraft ?? (multiple ? [] : undefined));\n const nextDisplay = toDisplayValue(\n value,\n defaultValue,\n defaultValues,\n multiple,\n showDefaultAsSelected,\n );\n if (\n nextDisplay === undefined ||\n nextDisplay === null ||\n (Array.isArray(nextDisplay) && nextDisplay.length === 0)\n ) {\n setSearchText('');\n }\n }, [value, defaultValue, defaultValues, multiple, showDefaultAsSelected]);\n\n const committedValueLabel = useMemo(\n () => formatValueLabel(displayValue, options, multiple, isPersonVariant, defaultValues),\n [options, displayValue, multiple, isPersonVariant, defaultValues],\n );\n\n useEffect(() => {\n if (!registerFn) return;\n const ctx = { filterKey, label: resolvedLabel, value };\n if (!resolveFilterVisible({ display, hidden }, ctx)) {\n registerFn.unregister(filterKey);\n return;\n }\n if (committedValueLabel) {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const removable = !multiple || minSelection == null || selectedArr.length > minSelection;\n registerFn.register(filterKey, {\n label: resolvedLabel,\n valueLabel: committedValueLabel,\n onRemove: handleRemove,\n removable,\n });\n } else {\n registerFn.unregister(filterKey);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [committedValueLabel, filterKey, resolvedLabel, hidden, display, handleRemove]);\n\n const visibilityCtx = { filterKey, label: resolvedLabel, value };\n if (!resolveFilterVisible({ display, hidden }, visibilityCtx)) return null;\n\n const filteredOptions = searchText\n ? options.filter((opt) =>\n isPersonVariant\n ? matchPersonOptionSearch(opt as PersonOption, searchText)\n : opt.label.toLowerCase().includes(searchText.toLowerCase()),\n )\n : options;\n\n const handleConfirm = () => {\n onChange?.(localValue as FilterSelectValue);\n setOpen(false);\n };\n\n const handleDiscardDraft = () => {\n revertToCommitted();\n setOpen(false);\n };\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen && multiple) {\n revertToCommitted();\n }\n setOpen(nextOpen);\n };\n\n const handleClickOption = (optVal: string | number) => {\n if (!multiple) {\n const isDefaultOption = defaultValue !== undefined && optVal === defaultValue;\n let next: string | number | undefined;\n if (localValue === optVal || isDefaultOption) {\n next = undefined;\n } else {\n next = optVal;\n }\n setLocalValue(next);\n onChange?.(next);\n setOpen(false);\n }\n };\n\n const handleToggleMulti = (optVal: string | number) => {\n const arr = (localValue as (string | number)[]) || [];\n const has = arr.some((v) => String(v) === String(optVal));\n if (has && minSelection != null && arr.length <= minSelection) {\n return;\n }\n const next = has ? arr.filter((v) => String(v) !== String(optVal)) : [...arr, optVal];\n setLocalValue(next);\n };\n\n const localMultiArr = (Array.isArray(localValue) ? localValue : []) as (string | number)[];\n const filteredSelectedCount = filteredOptions.filter((opt) =>\n localMultiArr.some((v) => String(v) === String(opt.value)),\n ).length;\n const allFilteredSelected =\n filteredOptions.length > 0 && filteredSelectedCount === filteredOptions.length;\n const someFilteredSelected = filteredSelectedCount > 0 && !allFilteredSelected;\n\n const handleToggleAll = (checked: boolean) => {\n const arr = localMultiArr;\n const filteredVals = filteredOptions.map((o) => o.value);\n if (checked) {\n const seen = new Set(arr.map(String));\n const next = [...arr];\n for (const v of filteredVals) {\n if (!seen.has(String(v))) {\n next.push(v);\n seen.add(String(v));\n }\n }\n setLocalValue(next);\n return;\n }\n const removeSet = new Set(filteredVals.map(String));\n let next = arr.filter((v) => !removeSet.has(String(v)));\n if (minSelection != null && next.length < minSelection) {\n next = arr.slice(0, minSelection);\n }\n setLocalValue(next);\n };\n\n const isActive = multiple\n ? Array.isArray(displayValue) && displayValue.length > 0\n : displayValue != null && displayValue !== '';\n\n return (\n <FilterPopover\n label={resolvedLabel}\n active={active || isActive}\n loading={optionsLoading}\n open={open}\n onOpenChange={handleOpenChange}\n width={resolvedPanelWidth}\n onConfirm={multiple ? handleConfirm : undefined}\n onReset={multiple ? handleDiscardDraft : undefined}\n >\n {searchable && (\n <Search\n placeholder={`搜索${resolvedLabel}`}\n allowClear\n size=\"middle\"\n className={classNames('filter-select-search', styles['filter-select-search'])}\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n />\n )}\n {panelExtra ? (\n <div\n className={classNames('filter-select-panel-extra', styles['filter-select-panel-extra'])}\n >\n {panelExtra}\n </div>\n ) : null}\n\n <div className={classNames('filter-select-options', styles['filter-select-options'])}>\n {optionsLoading ? (\n <div className={classNames('filter-select-loading', styles['filter-select-loading'])}>\n <Spin size=\"small\" />\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={classNames('filter-select-empty', styles['filter-select-empty'])}>\n <Empty iconType=\"simple\" description=\"暂无数据\" />\n </div>\n ) : (\n <>\n {multiple && filteredOptions.length > 0 && (\n <div\n className={classNames(\n 'filter-select-option',\n styles['filter-select-option'],\n 'filter-select-select-all',\n styles['filter-select-select-all'],\n )}\n onClick={() => handleToggleAll(!allFilteredSelected)}\n >\n <Checkbox\n checked={allFilteredSelected}\n indeterminate={someFilteredSelected}\n onChange={(e) => handleToggleAll(e.target.checked)}\n onClick={(e) => e.stopPropagation()}\n />\n <span>全选</span>\n </div>\n )}\n {filteredOptions.map((opt) => (\n <div\n key={String(opt.value)}\n className={classNames(\n 'filter-select-option',\n styles['filter-select-option'],\n !multiple &&\n localValue === opt.value &&\n classNames(\n 'filter-select-option-selected',\n styles['filter-select-option-selected'],\n ),\n )}\n onClick={() =>\n multiple ? handleToggleMulti(opt.value) : handleClickOption(opt.value)\n }\n >\n {multiple && (\n <Checkbox\n checked={localMultiArr.some((v) => String(v) === String(opt.value))}\n onChange={() => handleToggleMulti(opt.value)}\n onClick={(e) => e.stopPropagation()}\n />\n )}\n {isPersonVariant ? (\n <PersonOptionRow option={opt as PersonOption} />\n ) : (\n <span>{opt.label}</span>\n )}\n {!multiple && !isPersonVariant && localValue === opt.value && (\n <Check\n className={classNames(\n 'filter-select-option-check',\n styles['filter-select-option-check'],\n )}\n />\n )}\n </div>\n ))}\n </>\n )}\n </div>\n\n {multiple && localMultiArr.length > 0 && (\n <div\n className={classNames('filter-select-selected-bar', styles['filter-select-selected-bar'])}\n >\n <div\n className={classNames(\n 'filter-select-selected-label',\n styles['filter-select-selected-label'],\n )}\n >\n 已选:\n </div>\n <div\n className={classNames(\n 'filter-select-selected-tags',\n styles['filter-select-selected-tags'],\n )}\n >\n <Space size={[4, 4]} wrap>\n {localMultiArr.map((v) => {\n const opt = options.find((o) => String(o.value) === String(v));\n const tagRemovable = minSelection == null || localMultiArr.length > minSelection;\n return (\n <span\n key={String(v)}\n className={classNames(\n 'filter-select-selected-tag',\n styles['filter-select-selected-tag'],\n !tagRemovable && styles['filter-select-selected-tag-disabled'],\n )}\n onClick={() => tagRemovable && handleToggleMulti(v)}\n >\n {opt?.label ?? String(v)}\n <X\n className={classNames(\n 'filter-select-selected-remove',\n styles['filter-select-selected-remove'],\n !tagRemovable && styles['filter-select-selected-remove-disabled'],\n )}\n />\n </span>\n );\n })}\n </Space>\n </div>\n </div>\n )}\n </FilterPopover>\n );\n};\n\nexport default FilterSelect;\nexport type { FilterSelectProps };\n"],"names":["Search","Input","formatPersonValueLabel","opt","parts","matchPersonOptionSearch","keyword","lower","s","arraysEqual","a","b","sortedA","sortedB","v","i","toMultiArray","value","toDisplayValue","defaultValue","defaultValues","multiple","showDefaultAsSelected","arr","toDraftValue","formatValueLabel","displayVal","options","isPersonVariant","_a","o","FilterSelect","filterKey","label","optionsProp","loadData","enabled","onChange","searchable","minSelection","variant","active","hidden","display","dependsOn","clearOnDepsChange","panelExtra","panelWidth","loadingProp","open","setOpen","useState","searchText","setSearchText","onChangeRef","useRef","resolvedPanelWidth","resolvedLabel","values","depsKey","useFilterFieldBridge","loadedOptions","setLoadedOptions","loadDataLoading","setLoadDataLoading","loadDataRef","useEffect","cancelled","next","optionsLoading","displayValue","localValue","setLocalValue","registerFn","useFilterRegister","handleRemove","useMemo","selectedArr","canRemove","revertToCommitted","nextDraft","nextDisplay","committedValueLabel","resolveFilterVisible","removable","filteredOptions","handleConfirm","handleDiscardDraft","handleOpenChange","nextOpen","handleClickOption","optVal","isDefaultOption","handleToggleMulti","has","localMultiArr","filteredSelectedCount","allFilteredSelected","someFilteredSelected","handleToggleAll","checked","filteredVals","seen","removeSet","isActive","jsxs","FilterPopover","jsx","classNames","styles","Spin","Empty","Fragment","Checkbox","e","PersonOptionRow","Check","Space","tagRemovable","X"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Filter/FilterSelect/index.tsx"],"sourcesContent":["import { Check, X } from '@/components/Icons';\nimport { Empty } from '@/components/Empty';\nimport { Checkbox, Input, Space, Spin } from 'antd';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport PersonOptionRow from '../../Form/PersonOptionRow';\nimport FilterPopover from '../FilterPopover';\nimport type { BaseFilterProps, FilterLoadDataContext, FilterOption, PersonOption } from '../types';\nimport { resolveFilterVisible } from '../types';\nimport { useFilterFieldBridge, useFilterRegister } from '../useFilterState';\nimport styles from './style.module.scss';\nimport classNames from 'classnames';\n\nconst { Search } = Input;\n\nfunction formatPersonValueLabel(opt: PersonOption): string {\n const parts = [opt.label];\n if (opt.departmentName) parts.push(opt.departmentName);\n return parts.join(' · ');\n}\n\nfunction matchPersonOptionSearch(opt: PersonOption, keyword: string): boolean {\n const lower = keyword.toLowerCase();\n return [opt.label, opt.departmentName, opt.email, opt.phone, opt.employeeId]\n .filter(Boolean)\n .some((s) => String(s).toLowerCase().includes(lower));\n}\n\ntype FilterSelectValue = string | number | (string | number)[] | undefined;\n\nexport type { FilterSelectValue };\n\nfunction arraysEqual(a?: (string | number)[], b?: (string | number)[]): boolean {\n if (!a?.length && !b?.length) return true;\n if (!a || !b || a.length !== b.length) return false;\n const sortedA = [...a].map(String).sort();\n const sortedB = [...b].map(String).sort();\n return sortedA.every((v, i) => v === sortedB[i]);\n}\n\ninterface FilterSelectProps extends BaseFilterProps {\n /** 静态选项;与 loadData 二选一(同时存在时以 options 为准) */\n options?: FilterOption[];\n /** 按依赖值动态拉取选项 */\n loadData?: (ctx: FilterLoadDataContext) => Promise<FilterOption[]>;\n /** loadData 是否启用;默认 true */\n enabled?: boolean;\n value?: FilterSelectValue;\n onChange?: (value: FilterSelectValue) => void;\n /** 默认值:与默认值相同时视为未筛选(除非 showDefaultAsSelected) */\n defaultValue?: string | number;\n /** 多选默认值:与默认集合相同时视为未筛选(除非 showDefaultAsSelected) */\n defaultValues?: (string | number)[];\n /** 为 true 时,value 等于默认仍展示在「您已选择」并保持选中态 */\n showDefaultAsSelected?: boolean;\n placeholder?: string;\n searchable?: boolean;\n /** 是否多选 */\n multiple?: boolean;\n /** 多选至少保留项数;达到下限时不允许移除已选标签 */\n minSelection?: number;\n /** 人员选项:展示部门与联系方式 */\n variant?: 'default' | 'person';\n /**\n * 面板内嵌从属条件(与 search 同层:search 下方、选项列表上方)。\n * 禁止再嵌 Filter*(双重 Popover)。\n */\n panelExtra?: React.ReactNode;\n /** 面板宽度;有 panelExtra 时默认 460 */\n panelWidth?: number;\n /**\n * 选项加载中:Filter Item(Trigger)显示 Loader2 spin;\n * 面板列表区显示 Spin,不渲染空态。\n * 与内部 loadData loading 取或。\n */\n loading?: boolean;\n}\n\nfunction toMultiArray(value: FilterSelectValue): (string | number)[] {\n if (Array.isArray(value)) return value;\n if (value != null && value !== '') return [value];\n return [];\n}\n\nfunction toDisplayValue(\n value: FilterSelectValue,\n defaultValue: string | number | undefined,\n defaultValues: (string | number)[] | undefined,\n multiple: boolean,\n showDefaultAsSelected: boolean,\n): string | number | (string | number)[] | undefined {\n if (multiple) {\n const arr = toMultiArray(value);\n // 等于默认集合时:对外视为「未筛选」(不亮 trigger / 不进「您已选择」)\n if (!showDefaultAsSelected && defaultValues?.length && arraysEqual(arr, defaultValues)) {\n return [];\n }\n return arr;\n }\n if (!showDefaultAsSelected && defaultValue !== undefined && value === defaultValue) {\n return undefined;\n }\n return value;\n}\n\n/** 草稿/面板用真实 value,避免 defaultValues 折叠成 [] 后全选勾选丢失 */\nfunction toDraftValue(\n value: FilterSelectValue,\n defaultValue: string | number | undefined,\n defaultValues: (string | number)[] | undefined,\n multiple: boolean,\n): string | number | (string | number)[] | undefined {\n if (multiple) return toMultiArray(value);\n return toDisplayValue(value, defaultValue, defaultValues, false, true);\n}\n\nfunction formatValueLabel(\n displayVal: string | number | (string | number)[] | undefined,\n options: FilterOption[],\n multiple: boolean,\n isPersonVariant: boolean,\n defaultValues?: (string | number)[],\n): string {\n if (multiple) {\n const arr = (displayVal as (string | number)[]) || [];\n if (!arr.length) return '';\n // 全选默认集合时用「全部」,避免「您已选择」被几十个厂名撑满\n if (defaultValues?.length && arraysEqual(arr, defaultValues)) {\n return '全部';\n }\n return arr\n .map((v) => options.find((o) => String(o.value) === String(v))?.label ?? String(v))\n .join('、');\n }\n if (displayVal == null) return '';\n const opt = options.find((o) => String(o.value) === String(displayVal));\n if (!opt) return String(displayVal);\n return isPersonVariant ? formatPersonValueLabel(opt as PersonOption) : opt.label;\n}\n\nconst FilterSelect: React.FC<FilterSelectProps> = ({\n filterKey,\n label,\n options: optionsProp,\n loadData,\n enabled = true,\n value,\n onChange,\n defaultValue,\n defaultValues,\n showDefaultAsSelected = false,\n searchable = false,\n multiple = false,\n minSelection,\n variant = 'default',\n active,\n hidden,\n display,\n dependsOn,\n clearOnDepsChange = true,\n panelExtra,\n panelWidth,\n loading: loadingProp = false,\n}) => {\n const isPersonVariant = variant === 'person';\n const [open, setOpen] = useState(false);\n const [searchText, setSearchText] = useState('');\n\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const resolvedPanelWidth = panelWidth ?? (panelExtra ? 460 : undefined);\n\n const { resolvedLabel, values, depsKey } = useFilterFieldBridge({\n filterKey,\n value,\n label,\n dependsOn,\n clearOnDepsChange,\n onDepsClear: () => onChangeRef.current?.(undefined),\n });\n\n const [loadedOptions, setLoadedOptions] = useState<FilterOption[]>([]);\n const [loadDataLoading, setLoadDataLoading] = useState(false);\n const loadDataRef = useRef(loadData);\n loadDataRef.current = loadData;\n\n useEffect(() => {\n if (!loadDataRef.current || optionsProp != null || !enabled) return;\n let cancelled = false;\n setLoadDataLoading(true);\n (async () => {\n try {\n const next = await loadDataRef.current!({ values });\n if (!cancelled) setLoadedOptions(next ?? []);\n } catch {\n if (!cancelled) setLoadedOptions([]);\n } finally {\n if (!cancelled) setLoadDataLoading(false);\n }\n })();\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [depsKey, enabled, optionsProp, loadData]);\n\n const options = optionsProp ?? loadedOptions;\n const optionsLoading = loadingProp || loadDataLoading;\n\n const displayValue = toDisplayValue(\n value,\n defaultValue,\n defaultValues,\n multiple,\n showDefaultAsSelected,\n );\n const [localValue, setLocalValue] = useState<string | number | (string | number)[] | undefined>(\n () => toDraftValue(value, defaultValue, defaultValues, multiple) ?? (multiple ? [] : undefined),\n );\n\n // ── 自动注册到 CommonFilter ──\n const registerFn = useFilterRegister();\n const handleRemove = useMemo(() => {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const canRemove = !multiple || minSelection == null || selectedArr.length > minSelection;\n return () => {\n if (!canRemove) return;\n onChangeRef.current?.(undefined);\n };\n }, [displayValue, minSelection, multiple]);\n\n const revertToCommitted = () => {\n setLocalValue(\n toDraftValue(value, defaultValue, defaultValues, multiple) ?? (multiple ? [] : undefined),\n );\n setSearchText('');\n };\n\n // 同步外部 value 到内部 localValue(多选用真实 value,保留 defaultValues 全选勾选)\n useEffect(() => {\n const nextDraft = toDraftValue(value, defaultValue, defaultValues, multiple);\n setLocalValue(nextDraft ?? (multiple ? [] : undefined));\n const nextDisplay = toDisplayValue(\n value,\n defaultValue,\n defaultValues,\n multiple,\n showDefaultAsSelected,\n );\n if (\n nextDisplay === undefined ||\n nextDisplay === null ||\n (Array.isArray(nextDisplay) && nextDisplay.length === 0)\n ) {\n setSearchText('');\n }\n }, [value, defaultValue, defaultValues, multiple, showDefaultAsSelected]);\n\n const committedValueLabel = useMemo(\n () => formatValueLabel(displayValue, options, multiple, isPersonVariant, defaultValues),\n [options, displayValue, multiple, isPersonVariant, defaultValues],\n );\n\n useEffect(() => {\n if (!registerFn) return;\n const ctx = { filterKey, label: resolvedLabel, value };\n if (!resolveFilterVisible({ display, hidden }, ctx)) {\n registerFn.unregister(filterKey);\n return;\n }\n if (committedValueLabel) {\n const selectedArr = Array.isArray(displayValue)\n ? displayValue\n : displayValue != null && displayValue !== ''\n ? [displayValue]\n : [];\n const removable = !multiple || minSelection == null || selectedArr.length > minSelection;\n registerFn.register(filterKey, {\n label: resolvedLabel,\n valueLabel: committedValueLabel,\n onRemove: handleRemove,\n removable,\n });\n } else {\n registerFn.unregister(filterKey);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [committedValueLabel, filterKey, resolvedLabel, hidden, display, handleRemove]);\n\n const visibilityCtx = { filterKey, label: resolvedLabel, value };\n if (!resolveFilterVisible({ display, hidden }, visibilityCtx)) return null;\n\n const filteredOptions = searchText\n ? options.filter((opt) =>\n isPersonVariant\n ? matchPersonOptionSearch(opt as PersonOption, searchText)\n : opt.label.toLowerCase().includes(searchText.toLowerCase()),\n )\n : options;\n\n const handleConfirm = () => {\n onChange?.(localValue as FilterSelectValue);\n setOpen(false);\n };\n\n const handleDiscardDraft = () => {\n revertToCommitted();\n setOpen(false);\n };\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!nextOpen && multiple) {\n revertToCommitted();\n }\n setOpen(nextOpen);\n };\n\n const handleClickOption = (optVal: string | number) => {\n if (!multiple) {\n const isDefaultOption = defaultValue !== undefined && optVal === defaultValue;\n let next: string | number | undefined;\n if (localValue === optVal || isDefaultOption) {\n next = undefined;\n } else {\n next = optVal;\n }\n setLocalValue(next);\n onChange?.(next);\n setOpen(false);\n }\n };\n\n const handleToggleMulti = (optVal: string | number) => {\n const arr = (localValue as (string | number)[]) || [];\n const has = arr.some((v) => String(v) === String(optVal));\n if (has && minSelection != null && arr.length <= minSelection) {\n return;\n }\n const next = has ? arr.filter((v) => String(v) !== String(optVal)) : [...arr, optVal];\n setLocalValue(next);\n };\n\n const localMultiArr = (Array.isArray(localValue) ? localValue : []) as (string | number)[];\n const filteredSelectedCount = filteredOptions.filter((opt) =>\n localMultiArr.some((v) => String(v) === String(opt.value)),\n ).length;\n const allFilteredSelected =\n filteredOptions.length > 0 && filteredSelectedCount === filteredOptions.length;\n const someFilteredSelected = filteredSelectedCount > 0 && !allFilteredSelected;\n\n const handleToggleAll = (checked: boolean) => {\n const arr = localMultiArr;\n const filteredVals = filteredOptions.map((o) => o.value);\n if (checked) {\n const seen = new Set(arr.map(String));\n const next = [...arr];\n for (const v of filteredVals) {\n if (!seen.has(String(v))) {\n next.push(v);\n seen.add(String(v));\n }\n }\n setLocalValue(next);\n return;\n }\n const removeSet = new Set(filteredVals.map(String));\n let next = arr.filter((v) => !removeSet.has(String(v)));\n if (minSelection != null && next.length < minSelection) {\n next = arr.slice(0, minSelection);\n }\n setLocalValue(next);\n };\n\n const isActive = multiple\n ? Array.isArray(displayValue) && displayValue.length > 0\n : displayValue != null && displayValue !== '';\n\n return (\n <FilterPopover\n label={resolvedLabel}\n active={active || isActive}\n loading={optionsLoading}\n open={open}\n onOpenChange={handleOpenChange}\n width={resolvedPanelWidth}\n onConfirm={multiple ? handleConfirm : undefined}\n onReset={multiple ? handleDiscardDraft : undefined}\n >\n {searchable && (\n <Search\n placeholder={`搜索${resolvedLabel}`}\n allowClear\n size=\"middle\"\n className={classNames('filter-select-search', styles['filter-select-search'])}\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n />\n )}\n {panelExtra ? (\n <div\n className={classNames('filter-select-panel-extra', styles['filter-select-panel-extra'])}\n >\n {panelExtra}\n </div>\n ) : null}\n\n <div className={classNames('filter-select-options', styles['filter-select-options'])}>\n {optionsLoading ? (\n <div className={classNames('filter-select-loading', styles['filter-select-loading'])}>\n <Spin size=\"small\" />\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={classNames('filter-select-empty', styles['filter-select-empty'])}>\n <Empty iconType=\"simple\" description=\"暂无数据\" />\n </div>\n ) : (\n <>\n {multiple && filteredOptions.length > 0 && (\n <div\n className={classNames(\n 'filter-select-option',\n styles['filter-select-option'],\n 'filter-select-select-all',\n styles['filter-select-select-all'],\n )}\n onClick={() => handleToggleAll(!allFilteredSelected)}\n >\n <Checkbox\n checked={allFilteredSelected}\n indeterminate={someFilteredSelected}\n onChange={(e) => handleToggleAll(e.target.checked)}\n onClick={(e) => e.stopPropagation()}\n />\n <span>全选</span>\n </div>\n )}\n {filteredOptions.map((opt) => (\n <div\n key={String(opt.value)}\n className={classNames(\n 'filter-select-option',\n styles['filter-select-option'],\n !multiple &&\n localValue === opt.value &&\n classNames(\n 'filter-select-option-selected',\n styles['filter-select-option-selected'],\n ),\n )}\n onClick={() =>\n multiple ? handleToggleMulti(opt.value) : handleClickOption(opt.value)\n }\n >\n {multiple && (\n <Checkbox\n checked={localMultiArr.some((v) => String(v) === String(opt.value))}\n onChange={() => handleToggleMulti(opt.value)}\n onClick={(e) => e.stopPropagation()}\n />\n )}\n {isPersonVariant ? (\n <PersonOptionRow option={opt as PersonOption} />\n ) : (\n <span>{opt.label}</span>\n )}\n {!multiple && !isPersonVariant && localValue === opt.value && (\n <Check\n className={classNames(\n 'filter-select-option-check',\n styles['filter-select-option-check'],\n )}\n />\n )}\n </div>\n ))}\n </>\n )}\n </div>\n\n {multiple && localMultiArr.length > 0 && (\n <div\n className={classNames('filter-select-selected-bar', styles['filter-select-selected-bar'])}\n >\n <div\n className={classNames(\n 'filter-select-selected-label',\n styles['filter-select-selected-label'],\n )}\n >\n 已选:\n </div>\n <div\n className={classNames(\n 'filter-select-selected-tags',\n styles['filter-select-selected-tags'],\n )}\n >\n <Space size={[4, 4]} wrap>\n {localMultiArr.map((v) => {\n const opt = options.find((o) => String(o.value) === String(v));\n const tagRemovable = minSelection == null || localMultiArr.length > minSelection;\n return (\n <span\n key={String(v)}\n className={classNames(\n 'filter-select-selected-tag',\n styles['filter-select-selected-tag'],\n !tagRemovable && styles['filter-select-selected-tag-disabled'],\n )}\n onClick={() => tagRemovable && handleToggleMulti(v)}\n >\n {opt?.label ?? String(v)}\n <X\n className={classNames(\n 'filter-select-selected-remove',\n styles['filter-select-selected-remove'],\n !tagRemovable && styles['filter-select-selected-remove-disabled'],\n )}\n />\n </span>\n );\n })}\n </Space>\n </div>\n </div>\n )}\n </FilterPopover>\n );\n};\n\nexport default FilterSelect;\nexport type { FilterSelectProps };\n"],"names":["Search","Input","formatPersonValueLabel","opt","parts","matchPersonOptionSearch","keyword","lower","s","arraysEqual","a","b","sortedA","sortedB","v","i","toMultiArray","value","toDisplayValue","defaultValue","defaultValues","multiple","showDefaultAsSelected","arr","toDraftValue","formatValueLabel","displayVal","options","isPersonVariant","_a","o","FilterSelect","filterKey","label","optionsProp","loadData","enabled","onChange","searchable","minSelection","variant","active","hidden","display","dependsOn","clearOnDepsChange","panelExtra","panelWidth","loadingProp","open","setOpen","useState","searchText","setSearchText","onChangeRef","useRef","resolvedPanelWidth","resolvedLabel","values","depsKey","useFilterFieldBridge","loadedOptions","setLoadedOptions","loadDataLoading","setLoadDataLoading","loadDataRef","useEffect","cancelled","next","optionsLoading","displayValue","localValue","setLocalValue","registerFn","useFilterRegister","handleRemove","useMemo","selectedArr","canRemove","revertToCommitted","nextDraft","nextDisplay","committedValueLabel","resolveFilterVisible","removable","filteredOptions","handleConfirm","handleDiscardDraft","handleOpenChange","nextOpen","handleClickOption","optVal","isDefaultOption","handleToggleMulti","has","localMultiArr","filteredSelectedCount","allFilteredSelected","someFilteredSelected","handleToggleAll","checked","filteredVals","seen","removeSet","isActive","jsxs","FilterPopover","jsx","classNames","styles","Spin","Empty","Fragment","Checkbox","e","PersonOptionRow","Check","Space","tagRemovable","X"],"mappings":"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"}
|