@bioturing/components 0.27.0 → 0.29.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/breadcrumb/style.css +1 -1
- package/dist/components/checkbox/component.js.map +1 -1
- package/dist/components/checkbox/style.css +1 -1
- package/dist/components/choice-list/component.js +102 -42
- package/dist/components/choice-list/component.js.map +1 -1
- package/dist/components/choice-list/style.css +1 -1
- package/dist/components/cmdk/index.js.map +1 -1
- package/dist/components/color-select/style.css +1 -1
- package/dist/components/combobox/component.js +232 -0
- package/dist/components/combobox/component.js.map +1 -0
- package/dist/components/combobox/style.css +1 -0
- package/dist/components/drag-drop/style.css +1 -1
- package/dist/components/dropdown-menu/component.js +181 -160
- package/dist/components/dropdown-menu/component.js.map +1 -1
- package/dist/components/dropdown-menu/divider.js +16 -0
- package/dist/components/dropdown-menu/divider.js.map +1 -0
- package/dist/components/dropdown-menu/item.css +1 -0
- package/dist/components/dropdown-menu/item.js +131 -0
- package/dist/components/dropdown-menu/item.js.map +1 -0
- package/dist/components/dropdown-menu/style.css +1 -1
- package/dist/components/ds-root/component.js +22 -17
- package/dist/components/ds-root/component.js.map +1 -1
- package/dist/components/ds-root/style.css +1 -1
- package/dist/components/form/style.css +1 -1
- package/dist/components/hooks/useDraggable.js +77 -0
- package/dist/components/hooks/useDraggable.js.map +1 -0
- package/dist/components/hooks/useHover.js +26 -0
- package/dist/components/hooks/useHover.js.map +1 -0
- package/dist/components/hooks/useTransitionStatus.js +52 -0
- package/dist/components/hooks/useTransitionStatus.js.map +1 -0
- package/dist/components/modal/style.css +1 -1
- package/dist/components/nav/item.js +2 -2
- package/dist/components/nav/style.css +1 -1
- package/dist/components/popup-panel/component.js +81 -92
- package/dist/components/popup-panel/component.js.map +1 -1
- package/dist/components/resizable/component.js +165 -97
- package/dist/components/resizable/component.js.map +1 -1
- package/dist/components/resizable/style.css +1 -1
- package/dist/components/scroll-area/component.js +70 -24
- package/dist/components/scroll-area/component.js.map +1 -1
- package/dist/components/scroll-area/style.css +1 -1
- package/dist/components/select/component.js +160 -91
- package/dist/components/select/component.js.map +1 -1
- package/dist/components/select/item.js +54 -0
- package/dist/components/select/item.js.map +1 -0
- package/dist/components/select/style.css +1 -1
- package/dist/components/select-trigger/component.js +150 -0
- package/dist/components/select-trigger/component.js.map +1 -0
- package/dist/components/select-trigger/style.css +1 -0
- package/dist/components/splitter/splitter-panel.js +8 -8
- package/dist/components/splitter/splitter.js +9 -9
- package/dist/components/splitter/useSizes.js +10 -10
- package/dist/components/splitter/useSizes.js.map +1 -1
- package/dist/components/stack/StackChild.js +9 -9
- package/dist/components/switch/style.css +1 -1
- package/dist/components/table/style.css +1 -1
- package/dist/components/theme-provider/component.js.map +1 -1
- package/dist/components/theme-provider/style.css +1 -1
- package/dist/components/tour/style.css +1 -1
- package/dist/components/transition/component.js +1 -1
- package/dist/components/transition/component.js.map +1 -1
- package/dist/components/utils/WithRenderProp.js.map +1 -1
- package/dist/index.d.ts +355 -12
- package/dist/index.js +198 -188
- package/dist/index.js.map +1 -1
- package/dist/metadata.js +21 -7
- package/dist/metadata.js.map +1 -1
- package/dist/tokens/and-theme/tokens.js +12 -12
- package/dist/tokens/and-theme/tokens.js.map +1 -1
- package/package.json +8 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../src/components/scroll-area/component.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactNode } from \"react\";\nimport { ScrollArea as BaseScrollArea } from \"@base-ui-components/react\";\nimport { clsx, useCls } from \"../utils\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport interface ScrollAreaProps {\n children: ReactNode;\n /**\n * Additional class name for the root component\n */\n className?: string;\n /**\n * Custom class names for each part of the scroll area\n */\n classNames?: {\n /**\n * Class name for the viewport element\n */\n viewport?: string;\n /**\n * Class name for the scrollbar element\n */\n scrollbar?: string;\n /**\n * Class name for the thumb element\n */\n thumb?: string;\n };\n /**\n * Orientation of the scrollbar\n * @default \"vertical\"\n */\n orientation?: \"vertical\" | \"horizontal\";\n}\n\nexport const ScrollArea = ({\n children,\n className,\n classNames = {},\n orientation = \"vertical\",\n}: ScrollAreaProps) => {\n const cls = useCls();\n return (\n <BaseScrollArea.Root className={clsx(cls(\"scroll-area\"), className)}>\n <BaseScrollArea.Viewport\n className={clsx(cls(\"scroll-area-viewport\")
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../src/components/scroll-area/component.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactNode, useEffect, useRef, useState } from \"react\";\nimport { ScrollArea as BaseScrollArea } from \"@base-ui-components/react\";\nimport { clsx, useCls } from \"../utils\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport interface ScrollAreaProps {\n children: ReactNode;\n /**\n * Additional class name for the root component\n */\n className?: string;\n /**\n * Custom class names for each part of the scroll area\n */\n classNames?: {\n /**\n * Class name for the viewport element\n */\n viewport?: string;\n /**\n * Class name for the scrollbar element\n */\n scrollbar?: string;\n /**\n * Class name for the thumb element\n */\n thumb?: string;\n };\n /**\n * Orientation of the scrollbar\n * @default \"vertical\"\n */\n orientation?: \"vertical\" | \"horizontal\";\n /**\n * Enable fade-out effect at scrollable edges\n * @default false\n */\n fadeEdges?: boolean;\n /**\n * Callback fired when the scroll position changes\n */\n onScroll?: (event: Event) => void;\n}\n\nexport const ScrollArea = ({\n children,\n className,\n classNames = {},\n orientation = \"vertical\",\n fadeEdges = false,\n onScroll,\n}: ScrollAreaProps) => {\n const cls = useCls();\n const viewportRef = useRef<HTMLDivElement>(null);\n const [scrollState, setScrollState] = useState({\n isAtStart: true,\n isAtEnd: false,\n isScrollable: false,\n });\n\n useEffect(() => {\n if (!viewportRef.current) return;\n\n const viewport = viewportRef.current;\n\n const handleScroll = (event?: Event) => {\n // Call the onScroll callback if provided and event exists\n if (event && onScroll) {\n onScroll(event);\n }\n\n // Handle fade edges state update if enabled\n if (fadeEdges) {\n if (orientation === \"vertical\") {\n const { scrollTop, scrollHeight, clientHeight } = viewport;\n const isScrollable = scrollHeight > clientHeight;\n setScrollState({\n isAtStart: scrollTop <= 1,\n isAtEnd: scrollTop >= scrollHeight - clientHeight - 1,\n isScrollable,\n });\n } else {\n const { scrollLeft, scrollWidth, clientWidth } = viewport;\n // Add a small buffer (2px) to account for rounding errors\n const isScrollable = scrollWidth > clientWidth + 2;\n setScrollState({\n isAtStart: scrollLeft <= 1,\n isAtEnd: scrollLeft >= scrollWidth - clientWidth - 1,\n isScrollable,\n });\n }\n }\n };\n\n // Initial check (without event)\n handleScroll();\n\n // Use a timeout to check again after content might have rendered\n const timeoutId = setTimeout(handleScroll, 0);\n\n viewport.addEventListener(\"scroll\", handleScroll);\n\n // Add resize observer to detect content size changes\n const resizeObserver = new ResizeObserver(() => {\n handleScroll();\n });\n resizeObserver.observe(viewport);\n\n return () => {\n clearTimeout(timeoutId);\n viewport.removeEventListener(\"scroll\", handleScroll);\n resizeObserver.disconnect();\n };\n }, [fadeEdges, orientation, onScroll]);\n return (\n <BaseScrollArea.Root className={clsx(cls(\"scroll-area\"), className)}>\n <BaseScrollArea.Viewport\n ref={viewportRef}\n className={clsx(\n cls(\"scroll-area-viewport\"),\n fadeEdges &&\n scrollState.isScrollable &&\n orientation === \"vertical\" &&\n scrollState.isAtStart &&\n cls(\"scroll-area-fade-bottom-only\"),\n fadeEdges &&\n scrollState.isScrollable &&\n orientation === \"vertical\" &&\n scrollState.isAtEnd &&\n cls(\"scroll-area-fade-top-only\"),\n fadeEdges &&\n scrollState.isScrollable &&\n orientation === \"vertical\" &&\n !scrollState.isAtStart &&\n !scrollState.isAtEnd &&\n cls(\"scroll-area-fade-both-vertical\"),\n fadeEdges &&\n scrollState.isScrollable &&\n orientation === \"horizontal\" &&\n scrollState.isAtStart &&\n cls(\"scroll-area-fade-right-only\"),\n fadeEdges &&\n scrollState.isScrollable &&\n orientation === \"horizontal\" &&\n scrollState.isAtEnd &&\n cls(\"scroll-area-fade-left-only\"),\n fadeEdges &&\n scrollState.isScrollable &&\n orientation === \"horizontal\" &&\n !scrollState.isAtStart &&\n !scrollState.isAtEnd &&\n cls(\"scroll-area-fade-both-horizontal\"),\n classNames?.viewport\n )}\n >\n <BaseScrollArea.Content className={clsx(cls(\"scroll-area-content\"))}>\n {children}\n </BaseScrollArea.Content>\n </BaseScrollArea.Viewport>\n <BaseScrollArea.Scrollbar\n className={clsx(cls(\"scroll-area-scrollbar\"), classNames?.scrollbar)}\n orientation={orientation}\n data-orientation={orientation}\n >\n <BaseScrollArea.Thumb\n className={clsx(cls(\"scroll-area-thumb\"), classNames?.thumb)}\n />\n </BaseScrollArea.Scrollbar>\n </BaseScrollArea.Root>\n );\n};\n"],"names":["ScrollArea","children","className","classNames","orientation","fadeEdges","onScroll","cls","useCls","viewportRef","useRef","scrollState","setScrollState","useState","useEffect","viewport","handleScroll","event","scrollTop","scrollHeight","clientHeight","isScrollable","scrollLeft","scrollWidth","clientWidth","timeoutId","resizeObserver","jsxs","BaseScrollArea","clsx","jsx"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer components{.ds-scroll-area{display:flex;flex-direction:column;height:100%;min-height:0;flex:1}.ds-scroll-area .ds-scroll-area-viewport{flex-shrink:1;height:100%;max-height:100%;overflow:hidden;overscroll-behavior:contain}
|
|
1
|
+
@layer components{.ds-scroll-area{--ds-scroll-area-fade-distance: 20px;display:flex;flex-direction:column;height:100%;min-height:0;flex:1}.ds-scroll-area .ds-scroll-area-viewport{flex-shrink:1;height:100%;max-height:100%;overflow:hidden;overscroll-behavior:contain}.ds-scroll-area .ds-scroll-area-viewport:focus-visible{outline-width:2px;outline-offset:4px;outline-color:var(--ds-color-primary)}.ds-scroll-area .ds-scroll-area-viewport.ds-scroll-area-fade-bottom-only{mask-image:linear-gradient(to bottom,black 0px,black calc(100% - var(--ds-scroll-area-fade-distance)),transparent 100%);-webkit-mask-image:linear-gradient(to bottom,black 0px,black calc(100% - var(--ds-scroll-area-fade-distance)),transparent 100%)}.ds-scroll-area .ds-scroll-area-viewport.ds-scroll-area-fade-top-only{mask-image:linear-gradient(to bottom,transparent 0px,black var(--ds-scroll-area-fade-distance),black 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0px,black var(--ds-scroll-area-fade-distance),black 100%)}.ds-scroll-area .ds-scroll-area-viewport.ds-scroll-area-fade-both-vertical{mask-image:linear-gradient(to bottom,transparent 0px,black var(--ds-scroll-area-fade-distance),black calc(100% - var(--ds-scroll-area-fade-distance)),transparent 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0px,black var(--ds-scroll-area-fade-distance),black calc(100% - var(--ds-scroll-area-fade-distance)),transparent 100%)}.ds-scroll-area .ds-scroll-area-viewport.ds-scroll-area-fade-right-only{mask-image:linear-gradient(to right,black 0px,black calc(100% - var(--ds-scroll-area-fade-distance)),transparent 100%);-webkit-mask-image:linear-gradient(to right,black 0px,black calc(100% - var(--ds-scroll-area-fade-distance)),transparent 100%)}.ds-scroll-area .ds-scroll-area-viewport.ds-scroll-area-fade-left-only{mask-image:linear-gradient(to right,transparent 0px,black var(--ds-scroll-area-fade-distance),black 100%);-webkit-mask-image:linear-gradient(to right,transparent 0px,black var(--ds-scroll-area-fade-distance),black 100%)}.ds-scroll-area .ds-scroll-area-viewport.ds-scroll-area-fade-both-horizontal{mask-image:linear-gradient(to right,transparent 0px,black var(--ds-scroll-area-fade-distance),black calc(100% - var(--ds-scroll-area-fade-distance)),transparent 100%);-webkit-mask-image:linear-gradient(to right,transparent 0px,black var(--ds-scroll-area-fade-distance),black calc(100% - var(--ds-scroll-area-fade-distance)),transparent 100%)}.ds-scroll-area .ds-scroll-area-scrollbar{padding:.125rem;display:flex;justify-content:center;background-color:transparent;opacity:0;transition-property:opacity;transition-delay:.1s}.ds-scroll-area .ds-scroll-area-scrollbar .ds-scroll-area-thumb{border-radius:9999px;background-color:var(--ds-color-bg-fill-tertiary);border:1px solid var(--ds-color-border)}.ds-scroll-area .ds-scroll-area-scrollbar[data-orientation=vertical]{width:.625rem}.ds-scroll-area .ds-scroll-area-scrollbar[data-orientation=vertical] .ds-scroll-area-thumb{width:100%}.ds-scroll-area .ds-scroll-area-scrollbar[data-orientation=horizontal]{width:100%;height:.625rem;flex-direction:column}.ds-scroll-area .ds-scroll-area-scrollbar[data-orientation=horizontal] .ds-scroll-area-thumb{height:100%}.ds-scroll-area .ds-scroll-area-scrollbar[data-hovering],.ds-scroll-area .ds-scroll-area-scrollbar[data-scrolling]{opacity:1;transition-delay:0ms;transition-duration:.2s}}
|
|
@@ -1,46 +1,61 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
3
|
-
import { CaretDown as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
2
|
+
import { jsx as r, Fragment as y, jsxs as S } from "react/jsx-runtime";
|
|
3
|
+
import { CaretDown as tt } from "@bioturing/assets";
|
|
4
|
+
import { useFloatingPortalNode as et, useFloating as ot, autoUpdate as rt, offset as lt, autoPlacement as nt, shift as st, size as at, FloatingOverlay as ct } from "@floating-ui/react";
|
|
5
|
+
import j from "antd/es/checkbox";
|
|
6
|
+
import b from "antd/es/select";
|
|
7
|
+
import { toMerged as it } from "es-toolkit";
|
|
8
|
+
import { forwardRef as pt, useCallback as D } from "react";
|
|
9
|
+
import { PopupPanelSize as E } from "../popup-panel/constants.js";
|
|
10
|
+
import { Divider as mt } from "antd";
|
|
11
|
+
import { SelectItem as ut } from "./item.js";
|
|
10
12
|
import './style.css';/* empty css */
|
|
11
|
-
import { useControlledState as
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
13
|
+
import { useControlledState as N } from "../hooks/useControlledState.js";
|
|
14
|
+
import { useCls as ft } from "../utils/antdUtils.js";
|
|
15
|
+
import { clsx as G } from "../utils/cn.js";
|
|
16
|
+
const dt = ({
|
|
17
|
+
mode: d,
|
|
18
|
+
className: T,
|
|
19
|
+
open: U,
|
|
20
|
+
defaultOpen: V,
|
|
21
|
+
onOpenChange: W,
|
|
22
|
+
popupClassName: $,
|
|
23
|
+
onDropdownVisibleChange: q,
|
|
24
|
+
enhancePositioner: s,
|
|
25
|
+
getPopupContainer: B,
|
|
26
|
+
popupSize: l,
|
|
27
|
+
popupRender: g,
|
|
28
|
+
dropdownRender: h,
|
|
29
|
+
classNames: c,
|
|
30
|
+
styles: C = {},
|
|
31
|
+
showSelectionSummary: x,
|
|
32
|
+
selectionSummaryRender: v,
|
|
33
|
+
value: H,
|
|
34
|
+
onChange: J,
|
|
35
|
+
defaultValue: K,
|
|
36
|
+
showSelectAll: A,
|
|
37
|
+
selectAllRender: O,
|
|
38
|
+
options: a,
|
|
39
|
+
...L
|
|
40
|
+
}, i) => {
|
|
41
|
+
var P;
|
|
42
|
+
const Q = et({}), p = d === "multiple" || d === "tags", [k, M] = N(
|
|
43
|
+
U,
|
|
44
|
+
W || q,
|
|
45
|
+
V
|
|
46
|
+
), m = ft(), [e, u] = N(
|
|
47
|
+
H,
|
|
48
|
+
J,
|
|
49
|
+
K
|
|
50
|
+
), { floatingStyles: R, refs: w } = ot({
|
|
36
51
|
placement: "bottom-start",
|
|
37
52
|
transform: !1,
|
|
38
|
-
open:
|
|
53
|
+
open: s && k,
|
|
39
54
|
middleware: [
|
|
40
|
-
|
|
55
|
+
lt({
|
|
41
56
|
mainAxis: 4
|
|
42
57
|
}),
|
|
43
|
-
|
|
58
|
+
nt({
|
|
44
59
|
allowedPlacements: [
|
|
45
60
|
"bottom-start",
|
|
46
61
|
"bottom-end",
|
|
@@ -50,87 +65,141 @@ const X = ({
|
|
|
50
65
|
"top"
|
|
51
66
|
]
|
|
52
67
|
}),
|
|
53
|
-
|
|
68
|
+
st({
|
|
54
69
|
padding: 8
|
|
55
70
|
}),
|
|
56
|
-
|
|
71
|
+
at({
|
|
57
72
|
padding: 8,
|
|
58
|
-
apply({ availableHeight: t, availableWidth:
|
|
59
|
-
|
|
73
|
+
apply({ availableHeight: t, availableWidth: o, elements: n }) {
|
|
74
|
+
n.floating.style.setProperty(
|
|
60
75
|
"--available-width",
|
|
61
|
-
|
|
62
|
-
),
|
|
76
|
+
o + "px"
|
|
77
|
+
), n.floating.style.setProperty(
|
|
63
78
|
"--available-height",
|
|
64
79
|
t + "px"
|
|
65
80
|
);
|
|
66
81
|
}
|
|
67
82
|
})
|
|
68
83
|
],
|
|
69
|
-
whileElementsMounted:
|
|
70
|
-
}),
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
84
|
+
whileElementsMounted: rt
|
|
85
|
+
}), X = D(
|
|
86
|
+
(t) => {
|
|
87
|
+
const o = Array.isArray(t) ? t.length : 1;
|
|
88
|
+
return p ? o + ` ${o == 1 ? "item" : "items"} selected` : /* @__PURE__ */ r(y, { children: t });
|
|
89
|
+
},
|
|
90
|
+
[p]
|
|
91
|
+
), Y = G(
|
|
92
|
+
m("select", x && "select-selection-summary"),
|
|
93
|
+
T
|
|
94
|
+
), F = G(
|
|
95
|
+
m(
|
|
96
|
+
"select-popup",
|
|
97
|
+
p && "select-multiple",
|
|
98
|
+
s && "select-popup-enhanced"
|
|
99
|
+
),
|
|
100
|
+
((P = c == null ? void 0 : c.popup) == null ? void 0 : P.root) || $
|
|
101
|
+
), Z = l && typeof l == "string" && l in E ? E[l] : typeof l == "number" ? l + "px" : l || "fit-content", I = D(
|
|
102
|
+
(t) => {
|
|
103
|
+
const o = g ? g(t) : h ? h(t) : t;
|
|
104
|
+
if (!A) return o;
|
|
105
|
+
const n = Array.isArray(e) && e.length > 0, _ = Array.isArray(a) ? a.map((f) => f.value) : e.map((f) => f.value), z = Array.isArray(e) && e.length && e.length < a.length;
|
|
106
|
+
return /* @__PURE__ */ S(y, { children: [
|
|
107
|
+
/* @__PURE__ */ r(
|
|
108
|
+
ut,
|
|
109
|
+
{
|
|
110
|
+
className: m(
|
|
111
|
+
"select-item",
|
|
112
|
+
"select-item-option",
|
|
113
|
+
n && "select-item-option-selected",
|
|
114
|
+
"select-item-option-active"
|
|
115
|
+
),
|
|
116
|
+
onMouseOver: (f) => {
|
|
117
|
+
},
|
|
118
|
+
selectAllRender: O,
|
|
119
|
+
checked: n,
|
|
120
|
+
indeterminate: z,
|
|
121
|
+
onSelectAll: () => u(_),
|
|
122
|
+
onDeselectAll: () => u([])
|
|
123
|
+
}
|
|
124
|
+
),
|
|
125
|
+
/* @__PURE__ */ r(mt, {}),
|
|
126
|
+
o
|
|
127
|
+
] });
|
|
128
|
+
},
|
|
129
|
+
[
|
|
130
|
+
g,
|
|
131
|
+
h,
|
|
132
|
+
A,
|
|
133
|
+
e,
|
|
134
|
+
a,
|
|
135
|
+
m,
|
|
136
|
+
O,
|
|
137
|
+
u
|
|
138
|
+
]
|
|
139
|
+
);
|
|
140
|
+
return /* @__PURE__ */ r(
|
|
141
|
+
b,
|
|
78
142
|
{
|
|
79
143
|
ref: (t) => {
|
|
80
|
-
|
|
144
|
+
i && (typeof i == "function" ? i(t) : i.current = t), t && w.setReference(t == null ? void 0 : t.nativeElement);
|
|
81
145
|
},
|
|
82
|
-
suffixIcon: /* @__PURE__ */
|
|
83
|
-
open:
|
|
84
|
-
onOpenChange:
|
|
85
|
-
|
|
146
|
+
suffixIcon: /* @__PURE__ */ r(tt, { weight: "bold" }),
|
|
147
|
+
open: k,
|
|
148
|
+
onOpenChange: M,
|
|
149
|
+
value: e,
|
|
150
|
+
onChange: u,
|
|
151
|
+
popupClassName: F,
|
|
86
152
|
classNames: {
|
|
87
153
|
popup: {
|
|
88
|
-
root:
|
|
154
|
+
root: F
|
|
89
155
|
},
|
|
90
|
-
...
|
|
156
|
+
...c
|
|
91
157
|
},
|
|
92
|
-
...
|
|
93
|
-
menuItemSelectedIcon: ({ isSelected: t }) => /* @__PURE__ */
|
|
158
|
+
...p ? {
|
|
159
|
+
menuItemSelectedIcon: ({ isSelected: t }) => /* @__PURE__ */ r("span", { className: "ant-select-checkbox-indicator", children: t ? /* @__PURE__ */ r(j, { checked: !0 }) : /* @__PURE__ */ r(j, { checked: !1 }) })
|
|
94
160
|
} : {},
|
|
95
|
-
mode:
|
|
96
|
-
className:
|
|
97
|
-
styles:
|
|
161
|
+
mode: d,
|
|
162
|
+
className: Y,
|
|
163
|
+
styles: s ? it(C, {
|
|
98
164
|
popup: {
|
|
99
165
|
root: {
|
|
100
166
|
transition: "none",
|
|
101
|
-
...
|
|
102
|
-
"--ds-select-popup-width":
|
|
167
|
+
...R,
|
|
168
|
+
"--ds-select-popup-width": Z
|
|
103
169
|
}
|
|
104
170
|
}
|
|
105
|
-
}) :
|
|
106
|
-
getPopupContainer:
|
|
107
|
-
popupRender: (t) => {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
171
|
+
}) : C,
|
|
172
|
+
getPopupContainer: B || (s ? () => Q || document.body : void 0),
|
|
173
|
+
popupRender: (t) => s ? /* @__PURE__ */ S(y, { children: [
|
|
174
|
+
/* @__PURE__ */ r(ct, { lockScroll: !0, onClick: () => M(!1) }),
|
|
175
|
+
/* @__PURE__ */ r(
|
|
176
|
+
"div",
|
|
177
|
+
{
|
|
178
|
+
ref: (o) => {
|
|
179
|
+
if (!o) return;
|
|
180
|
+
const n = o.closest(
|
|
181
|
+
".ds-select-dropdown"
|
|
182
|
+
);
|
|
183
|
+
w.setFloating(n);
|
|
184
|
+
},
|
|
185
|
+
children: I(t)
|
|
186
|
+
}
|
|
187
|
+
)
|
|
188
|
+
] }) : I(t),
|
|
189
|
+
options: a,
|
|
190
|
+
...x ? {
|
|
191
|
+
maxTagCount: 1,
|
|
192
|
+
showSearch: !1,
|
|
193
|
+
labelRender: () => v ? v(e) : X(e)
|
|
194
|
+
} : {},
|
|
195
|
+
...L
|
|
127
196
|
}
|
|
128
197
|
);
|
|
129
|
-
},
|
|
130
|
-
Option:
|
|
131
|
-
OptGroup:
|
|
198
|
+
}, gt = pt(dt), St = Object.assign(gt, {
|
|
199
|
+
Option: b.Option,
|
|
200
|
+
OptGroup: b.OptGroup
|
|
132
201
|
});
|
|
133
202
|
export {
|
|
134
|
-
|
|
203
|
+
St as Select
|
|
135
204
|
};
|
|
136
205
|
//# sourceMappingURL=component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../src/components/select/component.tsx"],"sourcesContent":["\"use client\";\nimport { CaretDown } from \"@bioturing/assets\";\nimport {\n default as AntSelect,\n type BaseOptionType,\n type DefaultOptionType,\n type SelectProps as AntSelectProps,\n} from \"antd/es/select\";\nimport { default as Checkbox } from \"antd/es/checkbox\";\nimport { CSSProperties, forwardRef } from \"react\";\nimport {\n useFloating,\n offset,\n autoPlacement,\n shift,\n size,\n autoUpdate,\n useFloatingPortalNode,\n FloatingOverlay,\n} from \"@floating-ui/react\";\nimport { useControlledState } from \"../hooks\";\nimport React from \"react\";\nimport { clsx } from \"../utils\";\nimport { PopupPanelSize } from \"../popup-panel/constants\";\nimport { toMerged } from \"es-toolkit\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\n// Define props interface extending Ant Design's SelectProps\nexport interface SelectProps<\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n> extends AntSelectProps<ValueType, OptionType> {\n /**\n * Whether to enhance the positioner using floating-ui\n * @default false\n */\n enhancePositioner?: boolean;\n /**\n * Size of the popup panel\n * Will be ignored if enhancePositioner is false\n */\n popupSize?: string | number | PopupPanelSize;\n}\n\nexport type {\n BaseOptionType as SelectBaseOptionType,\n DefaultOptionType as SelectDefaultOptionType,\n};\n\n// Create inner function\nconst MainSelectInner = <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n {\n mode,\n className,\n open: openProp,\n defaultOpen,\n onOpenChange,\n popupClassName,\n onDropdownVisibleChange,\n enhancePositioner,\n getPopupContainer,\n popupSize,\n popupRender,\n dropdownRender,\n classNames,\n styles = {},\n ...rest\n }: SelectProps<ValueType, OptionType>,\n ref: React.Ref<React.ComponentRef<typeof AntSelect>>\n) => {\n const portalNode = useFloatingPortalNode({});\n const isMultiple = mode === \"multiple\" || mode === \"tags\";\n const [open, setOpen] = useControlledState(\n openProp,\n onOpenChange || onDropdownVisibleChange,\n defaultOpen\n );\n // enhancePositioner\n const { floatingStyles, refs } = useFloating({\n placement: \"bottom-start\",\n transform: false,\n open: enhancePositioner && open,\n middleware: [\n offset({\n mainAxis: 4,\n }),\n autoPlacement({\n allowedPlacements: [\n \"bottom-start\",\n \"bottom-end\",\n \"bottom\",\n \"top-start\",\n \"top-end\",\n \"top\",\n ],\n }),\n shift({\n padding: 8,\n }),\n size({\n padding: 8,\n apply({ availableHeight, availableWidth, elements }) {\n // 2. Or, use a CSS variable:\n elements.floating.style.setProperty(\n \"--available-width\",\n availableWidth + \"px\"\n );\n elements.floating.style.setProperty(\n \"--available-height\",\n availableHeight + \"px\"\n );\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n const dsPopupClassName = clsx(\n \"ds-select-popup\",\n isMultiple && \"ds-select-multiple\",\n classNames?.popup?.root || popupClassName,\n enhancePositioner && \"ds-select-popup-enhanced\"\n );\n const popupWidth =\n popupSize && typeof popupSize === \"string\" && popupSize in PopupPanelSize\n ? PopupPanelSize[popupSize as keyof typeof PopupPanelSize]\n : typeof popupSize === \"number\"\n ? popupSize + \"px\"\n : popupSize || \"fit-content\";\n return (\n <AntSelect\n // ref={ref}\n ref={(node) => {\n if (ref) {\n if (typeof ref == \"function\") {\n ref(node);\n } else {\n ref.current = node;\n }\n }\n if (!node) return;\n refs.setReference(node?.nativeElement as HTMLElement);\n }}\n suffixIcon={<CaretDown weight=\"bold\" />}\n open={open}\n onOpenChange={setOpen}\n // for old version\n popupClassName={dsPopupClassName}\n classNames={{\n popup: {\n root: dsPopupClassName,\n },\n ...classNames,\n }}\n {...(isMultiple\n ? {\n menuItemSelectedIcon: ({ isSelected }) => (\n <span className=\"ant-select-checkbox-indicator\">\n {isSelected ? (\n <Checkbox checked />\n ) : (\n <Checkbox checked={false} />\n )}\n </span>\n ),\n }\n : {})}\n mode={mode}\n className={clsx(\"ds-select\", className)}\n styles={\n enhancePositioner\n ? toMerged(styles, {\n popup: {\n root: {\n transition: \"none\",\n ...floatingStyles,\n \"--ds-select-popup-width\": popupWidth,\n } as CSSProperties,\n },\n })\n : styles\n }\n getPopupContainer={\n getPopupContainer ||\n (enhancePositioner ? () => portalNode || document.body : undefined)\n }\n popupRender={(menu) => {\n // Use a more specific type that includes both style and ref properties\n const renderMenu = () =>\n popupRender\n ? popupRender(menu)\n : dropdownRender\n ? dropdownRender(menu)\n : menu;\n if (!enhancePositioner) {\n return renderMenu();\n }\n return (\n <>\n <FloatingOverlay lockScroll onClick={() => setOpen(false)} />\n <div\n ref={(node) => {\n if (!node) return;\n const popupEl = node.closest(\n \".ds-select-dropdown\"\n ) as HTMLDivElement;\n refs.setFloating(popupEl);\n }}\n >\n {renderMenu()}\n </div>\n </>\n );\n }}\n {...rest}\n />\n );\n};\n\n// Use forwardRef with type assertion\nconst MainSelect = forwardRef(MainSelectInner) as <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n props: SelectProps<ValueType, OptionType> & {\n ref?: React.ForwardedRef<React.ComponentRef<typeof AntSelect>>;\n }\n) => ReturnType<typeof MainSelectInner>;\n\nexport const Select = Object.assign(MainSelect, {\n Option: AntSelect.Option,\n OptGroup: AntSelect.OptGroup,\n});\n"],"names":["MainSelectInner","mode","className","openProp","defaultOpen","onOpenChange","popupClassName","onDropdownVisibleChange","enhancePositioner","getPopupContainer","popupSize","popupRender","dropdownRender","classNames","styles","rest","ref","portalNode","useFloatingPortalNode","isMultiple","open","setOpen","useControlledState","floatingStyles","refs","useFloating","offset","autoPlacement","shift","size","availableHeight","availableWidth","elements","autoUpdate","dsPopupClassName","clsx","_a","popupWidth","PopupPanelSize","jsx","AntSelect","node","CaretDown","isSelected","Checkbox","toMerged","menu","renderMenu","jsxs","Fragment","FloatingOverlay","popupEl","MainSelect","forwardRef","Select"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../src/components/select/component.tsx"],"sourcesContent":["\"use client\";\nimport { CaretDown } from \"@bioturing/assets\";\nimport {\n autoPlacement,\n autoUpdate,\n FloatingOverlay,\n offset,\n shift,\n size,\n useFloating,\n useFloatingPortalNode,\n} from \"@floating-ui/react\";\nimport { default as Checkbox } from \"antd/es/checkbox\";\nimport {\n default as AntSelect,\n type SelectProps as AntSelectProps,\n type BaseOptionType,\n type DefaultOptionType,\n} from \"antd/es/select\";\nimport { toMerged } from \"es-toolkit\";\nimport React, {\n CSSProperties,\n forwardRef,\n isValidElement,\n useCallback,\n} from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport { PopupPanelSize } from \"../popup-panel/constants\";\nimport { clsx, useCls } from \"../utils\";\n\n// Import component-specific styles\nimport { Divider } from \"antd\";\nimport { CheckboxProps } from \"../checkbox\";\nimport { SelectItem } from \"./item\";\nimport \"./style.css\";\n\n// SelectItem component props\n\n// Define props interface extending Ant Design's SelectProps\nexport interface SelectProps<\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n> extends AntSelectProps<ValueType, OptionType> {\n /**\n * Whether to enhance the positioner using floating-ui\n * @default false\n */\n enhancePositioner?: boolean;\n /**\n * Size of the popup panel\n * Will be ignored if enhancePositioner is false\n */\n popupSize?: string | number | PopupPanelSize;\n /**\n * Show selection summary instead of tags in multiple case\n * @default false\n */\n showSelectionSummary?: boolean;\n /**\n * Render function for the selection summary in multiple case\n * @default (value) => `${value.length} items selected`\n */\n selectionSummaryRender?: (value: ValueType) => React.ReactNode;\n /**\n * Show select all option when in multiple mode\n * @default false\n */\n showSelectAll?: boolean;\n /**\n * Render function for the select all option\n */\n selectAllRender?: (props: {\n onClick: () => void;\n checked: CheckboxProps[\"checked\"];\n indeterminate: CheckboxProps[\"indeterminate\"];\n }) => React.ReactNode;\n}\n\nexport type {\n BaseOptionType as SelectBaseOptionType,\n DefaultOptionType as SelectDefaultOptionType,\n};\n\n// Create inner function\nconst MainSelectInner = <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n {\n mode,\n className,\n open: openProp,\n defaultOpen,\n onOpenChange,\n popupClassName,\n onDropdownVisibleChange,\n enhancePositioner,\n getPopupContainer,\n popupSize,\n popupRender,\n dropdownRender,\n classNames,\n styles = {},\n showSelectionSummary,\n selectionSummaryRender,\n value: valueProp,\n onChange: onChangeProp,\n defaultValue,\n showSelectAll,\n selectAllRender,\n options,\n ...rest\n }: SelectProps<ValueType, OptionType>,\n ref: React.Ref<React.ComponentRef<typeof AntSelect>>\n) => {\n const portalNode = useFloatingPortalNode({});\n const isMultiple = mode === \"multiple\" || mode === \"tags\";\n const [open, setOpen] = useControlledState(\n openProp,\n onOpenChange || onDropdownVisibleChange,\n defaultOpen\n );\n const cls = useCls();\n const [value, onChange] = useControlledState(\n valueProp,\n onChangeProp,\n defaultValue\n );\n // enhancePositioner\n const { floatingStyles, refs } = useFloating({\n placement: \"bottom-start\",\n transform: false,\n open: enhancePositioner && open,\n middleware: [\n offset({\n mainAxis: 4,\n }),\n autoPlacement({\n allowedPlacements: [\n \"bottom-start\",\n \"bottom-end\",\n \"bottom\",\n \"top-start\",\n \"top-end\",\n \"top\",\n ],\n }),\n shift({\n padding: 8,\n }),\n size({\n padding: 8,\n apply({ availableHeight, availableWidth, elements }) {\n // 2. Or, use a CSS variable:\n elements.floating.style.setProperty(\n \"--available-width\",\n availableWidth + \"px\"\n );\n elements.floating.style.setProperty(\n \"--available-height\",\n availableHeight + \"px\"\n );\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const defaultSelectionSummaryRender = useCallback(\n (v: ValueType) => {\n const count = Array.isArray(v) ? v.length : 1;\n if (isMultiple) {\n return count + ` ${count == 1 ? \"item\" : \"items\"} selected`;\n }\n return <>{v}</>;\n },\n [isMultiple]\n );\n\n const dsSelectClassname = clsx(\n cls(\"select\", showSelectionSummary && \"select-selection-summary\"),\n className\n );\n\n const dsPopupClassName = clsx(\n cls(\n \"select-popup\",\n isMultiple && \"select-multiple\",\n enhancePositioner && \"select-popup-enhanced\"\n ),\n classNames?.popup?.root || popupClassName\n );\n const popupWidth =\n popupSize && typeof popupSize === \"string\" && popupSize in PopupPanelSize\n ? PopupPanelSize[popupSize as keyof typeof PopupPanelSize]\n : typeof popupSize === \"number\"\n ? popupSize + \"px\"\n : popupSize || \"fit-content\";\n const customRenderMenu = useCallback(\n (menu: React.ReactElement) => {\n const renderedMenu = popupRender\n ? popupRender(menu)\n : dropdownRender\n ? dropdownRender(menu)\n : menu;\n if (!showSelectAll) return renderedMenu;\n const checked = Array.isArray(value) && value.length > 0;\n const allValues = Array.isArray(options)\n ? options.map((option) => option.value)\n : (value as any).map((v: any) => v.value);\n const indeterminate =\n Array.isArray(value) && value.length && value.length < options.length;\n return (\n <>\n <SelectItem\n className={cls(\n \"select-item\",\n \"select-item-option\",\n checked && \"select-item-option-selected\",\n \"select-item-option-active\"\n )}\n onMouseOver={(e) => {}}\n selectAllRender={selectAllRender}\n checked={checked}\n indeterminate={indeterminate}\n onSelectAll={() => onChange(allValues)}\n onDeselectAll={() => onChange([] as ValueType)}\n />\n <Divider />\n {renderedMenu}\n </>\n );\n },\n [\n popupRender,\n dropdownRender,\n showSelectAll,\n value,\n options,\n cls,\n selectAllRender,\n onChange,\n ]\n );\n return (\n <AntSelect\n // ref={ref}\n ref={(node) => {\n if (ref) {\n if (typeof ref == \"function\") {\n ref(node);\n } else {\n ref.current = node;\n }\n }\n if (!node) return;\n refs.setReference(node?.nativeElement as HTMLElement);\n }}\n suffixIcon={<CaretDown weight=\"bold\" />}\n open={open}\n onOpenChange={setOpen}\n value={value}\n onChange={onChange}\n // for old version\n popupClassName={dsPopupClassName}\n classNames={{\n popup: {\n root: dsPopupClassName,\n },\n ...classNames,\n }}\n {...(isMultiple\n ? {\n menuItemSelectedIcon: ({ isSelected }) => (\n <span className=\"ant-select-checkbox-indicator\">\n {isSelected ? (\n <Checkbox checked />\n ) : (\n <Checkbox checked={false} />\n )}\n </span>\n ),\n }\n : {})}\n mode={mode}\n className={dsSelectClassname}\n styles={\n enhancePositioner\n ? toMerged(styles, {\n popup: {\n root: {\n transition: \"none\",\n ...floatingStyles,\n \"--ds-select-popup-width\": popupWidth,\n } as CSSProperties,\n },\n })\n : styles\n }\n getPopupContainer={\n getPopupContainer ||\n (enhancePositioner ? () => portalNode || document.body : undefined)\n }\n popupRender={(menu) => {\n if (!enhancePositioner) {\n return customRenderMenu(menu);\n }\n return (\n <>\n <FloatingOverlay lockScroll onClick={() => setOpen(false)} />\n <div\n ref={(node) => {\n if (!node) return;\n const popupEl = node.closest(\n \".ds-select-dropdown\"\n ) as HTMLDivElement;\n refs.setFloating(popupEl);\n }}\n >\n {customRenderMenu(menu)}\n </div>\n </>\n );\n }}\n options={options}\n {...(showSelectionSummary\n ? {\n maxTagCount: 1,\n showSearch: false,\n labelRender: () => {\n if (selectionSummaryRender) {\n return selectionSummaryRender(value);\n }\n return defaultSelectionSummaryRender(value);\n },\n }\n : {})}\n {...rest}\n />\n );\n};\n\n// Use forwardRef with type assertion\nconst MainSelect = forwardRef(MainSelectInner) as <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n props: SelectProps<ValueType, OptionType> & {\n ref?: React.ForwardedRef<React.ComponentRef<typeof AntSelect>>;\n }\n) => ReturnType<typeof MainSelectInner>;\n\nexport const Select = Object.assign(MainSelect, {\n Option: AntSelect.Option,\n OptGroup: AntSelect.OptGroup,\n});\n"],"names":["MainSelectInner","mode","className","openProp","defaultOpen","onOpenChange","popupClassName","onDropdownVisibleChange","enhancePositioner","getPopupContainer","popupSize","popupRender","dropdownRender","classNames","styles","showSelectionSummary","selectionSummaryRender","valueProp","onChangeProp","defaultValue","showSelectAll","selectAllRender","options","rest","ref","portalNode","useFloatingPortalNode","isMultiple","open","setOpen","useControlledState","cls","useCls","value","onChange","floatingStyles","refs","useFloating","offset","autoPlacement","shift","size","availableHeight","availableWidth","elements","autoUpdate","defaultSelectionSummaryRender","useCallback","v","count","dsSelectClassname","clsx","dsPopupClassName","_a","popupWidth","PopupPanelSize","customRenderMenu","menu","renderedMenu","checked","allValues","option","indeterminate","jsxs","Fragment","jsx","SelectItem","e","Divider","AntSelect","node","CaretDown","isSelected","Checkbox","toMerged","FloatingOverlay","popupEl","MainSelect","forwardRef","Select"],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import n from "merge-refs";
|
|
3
|
+
import { forwardRef as v } from "react";
|
|
4
|
+
import { useHover as u } from "../hooks/useHover.js";
|
|
5
|
+
import { Checkbox as C } from "../checkbox/component.js";
|
|
6
|
+
import { useCls as g } from "../utils/antdUtils.js";
|
|
7
|
+
const h = v(
|
|
8
|
+
({
|
|
9
|
+
className: x,
|
|
10
|
+
onMouseOver: N,
|
|
11
|
+
selectAllRender: o,
|
|
12
|
+
checked: e,
|
|
13
|
+
indeterminate: t,
|
|
14
|
+
onSelectAll: r,
|
|
15
|
+
onDeselectAll: m,
|
|
16
|
+
...i
|
|
17
|
+
}, c) => {
|
|
18
|
+
const [l, f] = u(), p = g();
|
|
19
|
+
return /* @__PURE__ */ s(
|
|
20
|
+
"div",
|
|
21
|
+
{
|
|
22
|
+
ref: n(l, c),
|
|
23
|
+
className: p(
|
|
24
|
+
"select-item",
|
|
25
|
+
"select-item-option",
|
|
26
|
+
e && "select-item-option-selected",
|
|
27
|
+
"select-item-select-all",
|
|
28
|
+
f && "select-item-option-active"
|
|
29
|
+
),
|
|
30
|
+
...i,
|
|
31
|
+
children: o ? o({
|
|
32
|
+
onClick: e ? m : r,
|
|
33
|
+
checked: e,
|
|
34
|
+
indeterminate: t
|
|
35
|
+
}) : /* @__PURE__ */ s(
|
|
36
|
+
C,
|
|
37
|
+
{
|
|
38
|
+
checked: e,
|
|
39
|
+
indeterminate: t,
|
|
40
|
+
onChange: (a) => {
|
|
41
|
+
a.target.checked ? r() : m();
|
|
42
|
+
},
|
|
43
|
+
children: "Select all"
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
h.displayName = "SelectItem";
|
|
51
|
+
export {
|
|
52
|
+
h as SelectItem
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item.js","sources":["../../../src/components/select/item.tsx"],"sourcesContent":["import mergeRefs from \"merge-refs\";\nimport { CheckboxProps, Checkbox } from \"../checkbox\";\nimport { useHover } from \"../hooks\";\nimport { useCls } from \"../utils\";\nimport { forwardRef } from \"react\";\n\nexport interface SelectItemProps extends React.ComponentPropsWithoutRef<\"div\"> {\n selectAllRender?: (props: {\n onClick: () => void;\n checked: CheckboxProps[\"checked\"];\n indeterminate: CheckboxProps[\"indeterminate\"];\n }) => React.ReactNode;\n checked: boolean;\n indeterminate: boolean;\n onSelectAll: () => void;\n onDeselectAll: () => void;\n}\n\n// SelectItem component\nexport const SelectItem: React.FC<SelectItemProps> = forwardRef<\n HTMLDivElement,\n SelectItemProps\n>(\n (\n {\n className,\n onMouseOver,\n selectAllRender,\n checked,\n indeterminate,\n onSelectAll,\n onDeselectAll,\n ...rest\n },\n forwardedRef\n ) => {\n const [ref, _hovering] = useHover<HTMLDivElement>();\n const cls = useCls();\n return (\n <div\n ref={mergeRefs(ref, forwardedRef)}\n className={cls(\n \"select-item\",\n \"select-item-option\",\n checked && \"select-item-option-selected\",\n \"select-item-select-all\",\n _hovering && \"select-item-option-active\"\n )}\n {...rest}\n >\n {selectAllRender ? (\n selectAllRender({\n onClick: checked ? onDeselectAll : onSelectAll,\n checked,\n indeterminate,\n })\n ) : (\n <Checkbox\n checked={checked}\n indeterminate={indeterminate}\n onChange={(e) => {\n if (e.target.checked) {\n onSelectAll();\n } else {\n onDeselectAll();\n }\n }}\n >\n Select all\n </Checkbox>\n )}\n </div>\n );\n }\n);\n\nSelectItem.displayName = \"SelectItem\";\n"],"names":["SelectItem","forwardRef","className","onMouseOver","selectAllRender","checked","indeterminate","onSelectAll","onDeselectAll","rest","forwardedRef","ref","_hovering","useHover","cls","useCls","jsx","mergeRefs","Checkbox","e"],"mappings":";;;;;;AAmBO,MAAMA,IAAwCC;AAAA,EAInD,CACE;AAAA,IACE,WAAAC;AAAA,IACA,aAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,GAAGC;AAAA,KAELC,MACG;AACH,UAAM,CAACC,GAAKC,CAAS,IAAIC,EAAyB,GAC5CC,IAAMC,EAAO;AAEjB,WAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKC,EAAUN,GAAKD,CAAY;AAAA,QAChC,WAAWI;AAAA,UACT;AAAA,UACA;AAAA,UACAT,KAAW;AAAA,UACX;AAAA,UACAO,KAAa;AAAA,QACf;AAAA,QACC,GAAGH;AAAA,QAEH,cACCL,EAAgB;AAAA,UACd,SAASC,IAAUG,IAAgBD;AAAA,UACnC,SAAAF;AAAA,UACA,eAAAC;AAAA,QACD,CAAA,IAED,gBAAAU;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,SAAAb;AAAA,YACA,eAAAC;AAAA,YACA,UAAU,CAACa,MAAM;AACX,cAAAA,EAAE,OAAO,UACCZ,EAAA,IAEEC,EAAA;AAAA,YAElB;AAAA,YACD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAEJ;AAAA,EAAA;AAGN;AAEAR,EAAW,cAAc;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer components{.ds-select-popup .ds-select-item-option-state{order:-1}.ds-select-popup .ds-select-checkbox-indicator,.ds-select-popup .ant-select-checkbox-indicator{margin-right:.5rem}.ds-select-multiple .ds-select-item-option-selected:not(.ds-select-item-option-disabled):not(:hover){background:transparent}.ds-select-popup-enhanced{transition:none;width:var(--ds-select-popup-width);height:fit-content;max-width:calc(var(--available-width) - 16px);max-height:calc(var(--available-height) - 16px)}}
|
|
1
|
+
@layer components{.ds-select-popup .ds-select-item-option-state{order:-1}.ds-select-popup .ds-select-checkbox-indicator,.ds-select-popup .ant-select-checkbox-indicator{margin-right:.5rem}.ds-select-multiple .ds-select-item-option-selected:not(.ds-select-item-option-disabled):not(:hover){background:transparent}.ds-select-popup-enhanced{transition:none;width:var(--ds-select-popup-width);height:fit-content;max-width:calc(var(--available-width) - 16px);max-height:calc(var(--available-height) - 16px)}.ds-select-selection-summary .ds-select-selection-overflow-item.ds-select-selection-overflow-item-rest{display:none}.ds-select-selection-summary .ds-select-selection-overflow-item-suffix{opacity:0}.ds-select-selection-summary .ds-select-selection-item-remove{display:none}.ds-select-selection-summary .ds-select-selection-item{background:transparent;border:none}.ds-select-item-select-all>.ds-checkbox-wrapper{width:100%;flex-grow:1}.ds-select-item-select-all+.ds-divider{padding:0;margin-top:.5rem;margin-bottom:.5rem}}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as p, jsx as t } from "react/jsx-runtime";
|
|
3
|
+
import { XCircleIcon as K, CaretDownIcon as V } from "@bioturing/assets";
|
|
4
|
+
import W from "merge-refs";
|
|
5
|
+
import { forwardRef as X, useCallback as E, useRef as q, useEffect as B } from "react";
|
|
6
|
+
import { WithRenderProp as F } from "../utils/WithRenderProp.js";
|
|
7
|
+
import './style.css';/* empty css */
|
|
8
|
+
import { useCls as G } from "../utils/antdUtils.js";
|
|
9
|
+
import { clsx as l } from "../utils/cn.js";
|
|
10
|
+
const H = X(
|
|
11
|
+
({
|
|
12
|
+
size: h = "middle",
|
|
13
|
+
disabled: n = !1,
|
|
14
|
+
open: o = !1,
|
|
15
|
+
status: w,
|
|
16
|
+
placeholder: b = "Select...",
|
|
17
|
+
value: c,
|
|
18
|
+
prefix: x,
|
|
19
|
+
allowClear: u = !1,
|
|
20
|
+
suffixIcon: k,
|
|
21
|
+
clearIcon: m,
|
|
22
|
+
onClear: d,
|
|
23
|
+
onOpenChange: f,
|
|
24
|
+
classNames: e,
|
|
25
|
+
render: S,
|
|
26
|
+
role: j = "combobox",
|
|
27
|
+
className: L,
|
|
28
|
+
...P
|
|
29
|
+
}, T) => {
|
|
30
|
+
const r = G(), g = c != null && c !== "", $ = {
|
|
31
|
+
disabled: n,
|
|
32
|
+
open: o,
|
|
33
|
+
hasValue: g,
|
|
34
|
+
size: h
|
|
35
|
+
}, R = E(
|
|
36
|
+
(i) => {
|
|
37
|
+
i.stopPropagation(), d == null || d();
|
|
38
|
+
},
|
|
39
|
+
[d]
|
|
40
|
+
), y = q(null);
|
|
41
|
+
B(() => {
|
|
42
|
+
const i = y.current;
|
|
43
|
+
if (!i) return;
|
|
44
|
+
const v = (D) => {
|
|
45
|
+
D.key === "ArrowDown" && !n && !o && (D.preventDefault(), f == null || f(!0));
|
|
46
|
+
};
|
|
47
|
+
return i.addEventListener("keydown", v), () => {
|
|
48
|
+
i.removeEventListener("keydown", v);
|
|
49
|
+
};
|
|
50
|
+
}, [n, o, f]);
|
|
51
|
+
const A = E(
|
|
52
|
+
(i) => /* @__PURE__ */ p("button", { ...i, children: [
|
|
53
|
+
/* @__PURE__ */ t(
|
|
54
|
+
"span",
|
|
55
|
+
{
|
|
56
|
+
className: l(r("select-trigger-content"), e == null ? void 0 : e.content),
|
|
57
|
+
children: g ? /* @__PURE__ */ p("span", { className: r("select-trigger-value-with-prefix"), children: [
|
|
58
|
+
x,
|
|
59
|
+
/* @__PURE__ */ t(
|
|
60
|
+
"span",
|
|
61
|
+
{
|
|
62
|
+
className: l(
|
|
63
|
+
r("select-trigger-value"),
|
|
64
|
+
e == null ? void 0 : e.value
|
|
65
|
+
),
|
|
66
|
+
children: c
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
] }) : /* @__PURE__ */ t(
|
|
70
|
+
"span",
|
|
71
|
+
{
|
|
72
|
+
className: l(
|
|
73
|
+
r("select-trigger-placeholder"),
|
|
74
|
+
e == null ? void 0 : e.placeholder
|
|
75
|
+
),
|
|
76
|
+
children: b
|
|
77
|
+
}
|
|
78
|
+
)
|
|
79
|
+
}
|
|
80
|
+
),
|
|
81
|
+
/* @__PURE__ */ p(
|
|
82
|
+
"span",
|
|
83
|
+
{
|
|
84
|
+
className: l(r("select-trigger-suffix"), e == null ? void 0 : e.suffix),
|
|
85
|
+
children: [
|
|
86
|
+
u && g && /* @__PURE__ */ t(
|
|
87
|
+
"span",
|
|
88
|
+
{
|
|
89
|
+
className: r("select-trigger-clear"),
|
|
90
|
+
unselectable: "on",
|
|
91
|
+
"aria-hidden": "true",
|
|
92
|
+
onClick: R,
|
|
93
|
+
children: m || /* @__PURE__ */ t("span", { className: r("select-trigger-clear-icon"), children: /* @__PURE__ */ t(K, { weight: "fill" }) })
|
|
94
|
+
}
|
|
95
|
+
),
|
|
96
|
+
(!u || !g) && /* @__PURE__ */ t(
|
|
97
|
+
"span",
|
|
98
|
+
{
|
|
99
|
+
className: r("select-trigger-arrow"),
|
|
100
|
+
unselectable: "on",
|
|
101
|
+
"aria-hidden": "true",
|
|
102
|
+
children: k || /* @__PURE__ */ t("span", { className: r("select-trigger-arrow-icon"), children: /* @__PURE__ */ t(V, { weight: "bold" }) })
|
|
103
|
+
}
|
|
104
|
+
)
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
)
|
|
108
|
+
] }),
|
|
109
|
+
[
|
|
110
|
+
g,
|
|
111
|
+
c,
|
|
112
|
+
x,
|
|
113
|
+
b,
|
|
114
|
+
u,
|
|
115
|
+
k,
|
|
116
|
+
m,
|
|
117
|
+
r,
|
|
118
|
+
e,
|
|
119
|
+
R
|
|
120
|
+
]
|
|
121
|
+
);
|
|
122
|
+
return /* @__PURE__ */ t(
|
|
123
|
+
F,
|
|
124
|
+
{
|
|
125
|
+
as: "button",
|
|
126
|
+
ref: W(T, y),
|
|
127
|
+
state: $,
|
|
128
|
+
className: l(
|
|
129
|
+
r("select-trigger"),
|
|
130
|
+
r(`select-trigger-${h}`),
|
|
131
|
+
n && r("select-trigger-disabled"),
|
|
132
|
+
o && r("select-trigger-open"),
|
|
133
|
+
w && r(`select-trigger-${w}`),
|
|
134
|
+
e == null ? void 0 : e.trigger,
|
|
135
|
+
L
|
|
136
|
+
),
|
|
137
|
+
disabled: n,
|
|
138
|
+
role: j,
|
|
139
|
+
"aria-expanded": o,
|
|
140
|
+
render: S || A,
|
|
141
|
+
...P
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
);
|
|
146
|
+
H.displayName = "SelectTrigger";
|
|
147
|
+
export {
|
|
148
|
+
H as SelectTrigger
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=component.js.map
|