@raystack/apsara 0.46.0-rc.4 → 0.46.0
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/_virtual/index.cjs +2 -2
- package/dist/_virtual/index.js +2 -2
- package/dist/_virtual/index2.cjs +2 -2
- package/dist/_virtual/index2.js +2 -2
- package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.cjs +1 -1
- package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
- package/dist/node_modules/.pnpm/use-sync-external-store@1.5.0_react@18.2.0/node_modules/use-sync-external-store/shim/index.cjs +1 -1
- package/dist/node_modules/.pnpm/use-sync-external-store@1.5.0_react@18.2.0/node_modules/use-sync-external-store/shim/index.js +1 -1
- package/dist/style.css +1 -1
- package/dist/v1/components/avatar/avatar.cjs +18 -2
- package/dist/v1/components/avatar/avatar.cjs.map +1 -1
- package/dist/v1/components/avatar/avatar.d.ts +2 -1
- package/dist/v1/components/avatar/avatar.d.ts.map +1 -1
- package/dist/v1/components/avatar/avatar.js +18 -3
- package/dist/v1/components/avatar/avatar.js.map +1 -1
- package/dist/v1/components/avatar/utils.cjs +14 -34
- package/dist/v1/components/avatar/utils.cjs.map +1 -1
- package/dist/v1/components/avatar/utils.d.ts +1 -4
- package/dist/v1/components/avatar/utils.d.ts.map +1 -1
- package/dist/v1/components/avatar/utils.js +15 -34
- package/dist/v1/components/avatar/utils.js.map +1 -1
- package/dist/v1/components/breadcrumb/breadcrumb.cjs +35 -19
- package/dist/v1/components/breadcrumb/breadcrumb.cjs.map +1 -1
- package/dist/v1/components/breadcrumb/breadcrumb.d.ts +15 -12
- package/dist/v1/components/breadcrumb/breadcrumb.d.ts.map +1 -1
- package/dist/v1/components/breadcrumb/breadcrumb.js +37 -21
- package/dist/v1/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/v1/components/dropdown-menu/dropdown-menu-content.cjs +5 -5
- package/dist/v1/components/dropdown-menu/dropdown-menu-content.cjs.map +1 -1
- package/dist/v1/components/dropdown-menu/dropdown-menu-content.d.ts +3 -3
- package/dist/v1/components/dropdown-menu/dropdown-menu-content.d.ts.map +1 -1
- package/dist/v1/components/dropdown-menu/dropdown-menu-content.js +5 -5
- package/dist/v1/components/dropdown-menu/dropdown-menu-content.js.map +1 -1
- package/dist/v1/components/icon-button/icon-button.cjs +8 -7
- package/dist/v1/components/icon-button/icon-button.cjs.map +1 -1
- package/dist/v1/components/icon-button/icon-button.d.ts +1 -1
- package/dist/v1/components/icon-button/icon-button.d.ts.map +1 -1
- package/dist/v1/components/icon-button/icon-button.js +8 -7
- package/dist/v1/components/icon-button/icon-button.js.map +1 -1
- package/dist/v1/components/select/select-content.cjs +16 -7
- package/dist/v1/components/select/select-content.cjs.map +1 -1
- package/dist/v1/components/select/select-content.d.ts +1 -1
- package/dist/v1/components/select/select-content.d.ts.map +1 -1
- package/dist/v1/components/select/select-content.js +16 -7
- package/dist/v1/components/select/select-content.js.map +1 -1
- package/dist/v1/components/select/select-item.cjs +19 -18
- package/dist/v1/components/select/select-item.cjs.map +1 -1
- package/dist/v1/components/select/select-item.d.ts +1 -3
- package/dist/v1/components/select/select-item.d.ts.map +1 -1
- package/dist/v1/components/select/select-item.js +19 -18
- package/dist/v1/components/select/select-item.js.map +1 -1
- package/dist/v1/components/select/select-multiple-value.cjs +67 -0
- package/dist/v1/components/select/select-multiple-value.cjs.map +1 -0
- package/dist/v1/components/select/select-multiple-value.d.ts +8 -0
- package/dist/v1/components/select/select-multiple-value.d.ts.map +1 -0
- package/dist/v1/components/select/select-multiple-value.js +65 -0
- package/dist/v1/components/select/select-multiple-value.js.map +1 -0
- package/dist/v1/components/select/select-root.cjs +64 -22
- package/dist/v1/components/select/select-root.cjs.map +1 -1
- package/dist/v1/components/select/select-root.d.ts +25 -26
- package/dist/v1/components/select/select-root.d.ts.map +1 -1
- package/dist/v1/components/select/select-root.js +64 -22
- package/dist/v1/components/select/select-root.js.map +1 -1
- package/dist/v1/components/select/select-trigger.cjs +18 -20
- package/dist/v1/components/select/select-trigger.cjs.map +1 -1
- package/dist/v1/components/select/select-trigger.d.ts +10 -18
- package/dist/v1/components/select/select-trigger.d.ts.map +1 -1
- package/dist/v1/components/select/select-trigger.js +16 -18
- package/dist/v1/components/select/select-trigger.js.map +1 -1
- package/dist/v1/components/select/select-value.cjs +23 -7
- package/dist/v1/components/select/select-value.cjs.map +1 -1
- package/dist/v1/components/select/select-value.d.ts +8 -2
- package/dist/v1/components/select/select-value.d.ts.map +1 -1
- package/dist/v1/components/select/select-value.js +22 -6
- package/dist/v1/components/select/select-value.js.map +1 -1
- package/dist/v1/components/select/select.d.ts +11 -9
- package/dist/v1/components/select/select.d.ts.map +1 -1
- package/dist/v1/components/select/select.module.css.cjs +1 -1
- package/dist/v1/components/select/select.module.css.js +1 -1
- package/dist/v1/components/select/types.d.ts +7 -0
- package/dist/v1/components/select/types.d.ts.map +1 -0
- package/dist/v1/components/sidebar/sidebar.cjs +26 -26
- package/dist/v1/components/sidebar/sidebar.cjs.map +1 -1
- package/dist/v1/components/sidebar/sidebar.d.ts +8 -8
- package/dist/v1/components/sidebar/sidebar.d.ts.map +1 -1
- package/dist/v1/components/sidebar/sidebar.js +26 -26
- package/dist/v1/components/sidebar/sidebar.js.map +1 -1
- package/dist/v1/components/tooltip/tooltip.cjs +34 -12
- package/dist/v1/components/tooltip/tooltip.cjs.map +1 -1
- package/dist/v1/components/tooltip/tooltip.d.ts +16 -9
- package/dist/v1/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/v1/components/tooltip/tooltip.js +35 -13
- package/dist/v1/components/tooltip/tooltip.js.map +1 -1
- package/dist/v1/components/tooltip/tooltip.module.css.cjs +1 -1
- package/dist/v1/components/tooltip/tooltip.module.css.js +1 -1
- package/dist/v1/components/tooltip/utils.cjs +30 -0
- package/dist/v1/components/tooltip/utils.cjs.map +1 -0
- package/dist/v1/components/tooltip/utils.d.ts +10 -0
- package/dist/v1/components/tooltip/utils.d.ts.map +1 -0
- package/dist/v1/components/tooltip/utils.js +28 -0
- package/dist/v1/components/tooltip/utils.js.map +1 -0
- package/dist/v1/hooks/index.cjs +2 -0
- package/dist/v1/hooks/index.cjs.map +1 -1
- package/dist/v1/hooks/index.d.ts +2 -1
- package/dist/v1/hooks/index.d.ts.map +1 -1
- package/dist/v1/hooks/index.js +1 -0
- package/dist/v1/hooks/index.js.map +1 -1
- package/dist/v1/hooks/useMouse.cjs +53 -0
- package/dist/v1/hooks/useMouse.cjs.map +1 -0
- package/dist/v1/hooks/useMouse.d.ts +20 -0
- package/dist/v1/hooks/useMouse.d.ts.map +1 -0
- package/dist/v1/hooks/useMouse.js +51 -0
- package/dist/v1/hooks/useMouse.js.map +1 -0
- package/dist/v1/node_modules/.pnpm/@radix-ui_react-select@2.2.4_@types_react-dom@18.0.11_@types_react@18.2.12_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-select/dist/index.cjs +0 -2
- package/dist/v1/node_modules/.pnpm/@radix-ui_react-select@2.2.4_@types_react-dom@18.0.11_@types_react@18.2.12_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-select/dist/index.cjs.map +1 -1
- package/dist/v1/node_modules/.pnpm/@radix-ui_react-select@2.2.4_@types_react-dom@18.0.11_@types_react@18.2.12_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-select/dist/index.js +1 -2
- package/dist/v1/node_modules/.pnpm/@radix-ui_react-select@2.2.4_@types_react-dom@18.0.11_@types_react@18.2.12_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-select/dist/index.js.map +1 -1
- package/dist/v1/style.css +1 -1
- package/package.json +1 -1
|
@@ -1,36 +1,37 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('../../node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.cjs');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var index = require('../../node_modules/.pnpm/@radix-ui_react-select@2.2.4_@types_react-dom@18.0.11_@types_react@18.2.12_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-select/dist/index.cjs');
|
|
6
4
|
var JMHAJKUZ = require('../../node_modules/.pnpm/@ariakit_react-core@0.4.16_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@ariakit/react-core/esm/__chunks/JMHAJKUZ.cjs');
|
|
5
|
+
var index = require('../../node_modules/.pnpm/@radix-ui_react-select@2.2.4_@types_react-dom@18.0.11_@types_react@18.2.12_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-select/dist/index.cjs');
|
|
7
6
|
var index$1 = require('../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.cjs');
|
|
8
|
-
var
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var checkbox = require('../checkbox/checkbox.cjs');
|
|
9
|
+
var utils = require('../dropdown-menu/utils.cjs');
|
|
9
10
|
var text = require('../text/text.cjs');
|
|
10
11
|
var selectRoot = require('./select-root.cjs');
|
|
11
|
-
var
|
|
12
|
+
var select_module = require('./select.module.css.cjs');
|
|
12
13
|
|
|
13
|
-
const SelectItem = React.forwardRef(({ className,
|
|
14
|
-
const {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
registerIcon(value, leadingIcon);
|
|
19
|
-
return () => {
|
|
20
|
-
unregisterIcon(value);
|
|
21
|
-
};
|
|
22
|
-
}, [value, leadingIcon]);
|
|
23
|
-
const isSelected = value === selectValue.value;
|
|
14
|
+
const SelectItem = React.forwardRef(({ className, children, value, leadingIcon, disabled, ...props }, ref) => {
|
|
15
|
+
const { registerItem, unregisterItem, autocomplete, searchValue, value: selectValue, shouldFilter, multiple } = selectRoot.useSelectContext();
|
|
16
|
+
const isSelected = multiple
|
|
17
|
+
? selectValue?.includes(value)
|
|
18
|
+
: value === selectValue;
|
|
24
19
|
const isMatched = utils.getMatch(value, children, searchValue);
|
|
25
20
|
const isHidden = shouldFilter && isSelected && !isMatched;
|
|
21
|
+
const element = typeof children === 'string' ? (jsxRuntime.jsxRuntimeExports.jsxs(jsxRuntime.jsxRuntimeExports.Fragment, { children: [leadingIcon && jsxRuntime.jsxRuntimeExports.jsx("div", { className: select_module.default.itemIcon, children: leadingIcon }), jsxRuntime.jsxRuntimeExports.jsx(text.Text, { children: children })] })) : (children);
|
|
22
|
+
React.useLayoutEffect(() => {
|
|
23
|
+
registerItem({ leadingIcon, children, value });
|
|
24
|
+
return () => {
|
|
25
|
+
unregisterItem(value);
|
|
26
|
+
};
|
|
27
|
+
}, [value, children, registerItem, unregisterItem, leadingIcon]);
|
|
26
28
|
if (shouldFilter && !isMatched && !isSelected) {
|
|
27
29
|
// Not selected and doesn't match search, so don't render at all
|
|
28
30
|
return null;
|
|
29
31
|
}
|
|
30
|
-
|
|
31
|
-
return (jsxRuntime.jsxRuntimeExports.jsx(index.Item, { ref: ref, value: value, className: index$1.cx(select_module.default.menuitem, className, isHidden && select_module.default.hidden), "data-hidden": isHidden, disabled: disabled || isHidden, asChild: autocomplete, ...props, children: autocomplete ? (jsxRuntime.jsxRuntimeExports.jsx(JMHAJKUZ.ComboboxItem, { onBlurCapture: event => {
|
|
32
|
+
return (jsxRuntime.jsxRuntimeExports.jsx(index.Item, { ref: ref, value: value, className: index$1.cx(select_module.default.menuitem, className, isHidden && select_module.default.hidden), "data-hidden": isHidden, disabled: disabled || isHidden, asChild: autocomplete, "aria-selected": isSelected, "data-checked": isSelected, ...props, children: autocomplete ? (jsxRuntime.jsxRuntimeExports.jsxs(JMHAJKUZ.ComboboxItem, { clickOnEnter: false, clickOnSpace: false, onBlurCapture: event => {
|
|
32
33
|
event.preventDefault();
|
|
33
|
-
}, children: element })) : (element) }));
|
|
34
|
+
}, children: [multiple && jsxRuntime.jsxRuntimeExports.jsx(checkbox.Checkbox, { checked: isSelected }), element] })) : (jsxRuntime.jsxRuntimeExports.jsxs(jsxRuntime.jsxRuntimeExports.Fragment, { children: [multiple && jsxRuntime.jsxRuntimeExports.jsx(checkbox.Checkbox, { checked: isSelected }), element] })) }));
|
|
34
35
|
});
|
|
35
36
|
SelectItem.displayName = index.Item.displayName;
|
|
36
37
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-item.cjs","sources":["../../../../v1/components/select/select-item.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"select-item.cjs","sources":["../../../../v1/components/select/select-item.tsx"],"sourcesContent":["import { ComboboxItem } from '@ariakit/react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { cx } from 'class-variance-authority';\nimport { ElementRef, forwardRef, useLayoutEffect } from 'react';\nimport { Checkbox } from '../checkbox';\nimport { getMatch } from '../dropdown-menu/utils';\nimport { Text } from '../text';\nimport { useSelectContext } from './select-root';\nimport styles from './select.module.css';\n\nexport const SelectItem = forwardRef<\n ElementRef<typeof SelectPrimitive.Item>,\n Omit<SelectPrimitive.SelectItemProps, 'asChild'> & {\n leadingIcon?: React.ReactNode;\n }\n>(({ className, children, value, leadingIcon, disabled, ...props }, ref) => {\n const {\n registerItem,\n unregisterItem,\n autocomplete,\n searchValue,\n value: selectValue,\n shouldFilter,\n multiple\n } = useSelectContext();\n\n const isSelected = multiple\n ? selectValue?.includes(value)\n : value === selectValue;\n const isMatched = getMatch(value, children, searchValue);\n const isHidden = shouldFilter && isSelected && !isMatched;\n\n const element =\n typeof children === 'string' ? (\n <>\n {leadingIcon && <div className={styles.itemIcon}>{leadingIcon}</div>}\n <Text>{children}</Text>\n </>\n ) : (\n children\n );\n\n useLayoutEffect(() => {\n registerItem({ leadingIcon, children, value });\n return () => {\n unregisterItem(value);\n };\n }, [value, children, registerItem, unregisterItem, leadingIcon]);\n\n if (shouldFilter && !isMatched && !isSelected) {\n // Not selected and doesn't match search, so don't render at all\n return null;\n }\n\n return (\n <SelectPrimitive.Item\n ref={ref}\n value={value}\n className={cx(styles.menuitem, className, isHidden && styles.hidden)}\n data-hidden={isHidden}\n disabled={disabled || isHidden}\n asChild={autocomplete}\n aria-selected={isSelected}\n data-checked={isSelected}\n {...props}\n >\n {autocomplete ? (\n <ComboboxItem\n clickOnEnter={false}\n clickOnSpace={false}\n onBlurCapture={event => {\n event.preventDefault();\n }}\n >\n {multiple && <Checkbox checked={isSelected} />}\n {element}\n </ComboboxItem>\n ) : (\n <>\n {multiple && <Checkbox checked={isSelected} />}\n {element}\n </>\n )}\n </SelectPrimitive.Item>\n );\n});\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n"],"names":["forwardRef","useSelectContext","getMatch","_jsxs","_jsx","styles","Text","useLayoutEffect","SelectPrimitive.Item","cx","ComboboxItem","Checkbox","_Fragment"],"mappings":";;;;;;;;;;;;;AAUa,MAAA,UAAU,GAAGA,gBAAU,CAKlC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IACzE,MAAM,EACJ,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EACX,KAAK,EAAE,WAAW,EAClB,YAAY,EACZ,QAAQ,EACT,GAAGC,2BAAgB,EAAE,CAAC;IAEvB,MAAM,UAAU,GAAG,QAAQ;AACzB,UAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC;AAC9B,UAAE,KAAK,KAAK,WAAW,CAAC;IAC1B,MAAM,SAAS,GAAGC,cAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,YAAY,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC;AAE1D,IAAA,MAAM,OAAO,GACX,OAAO,QAAQ,KAAK,QAAQ,IAC1BC,sFACG,WAAW,IAAIC,gCAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAEC,qBAAM,CAAC,QAAQ,EAAA,QAAA,EAAG,WAAW,EAAO,CAAA,EACpED,gCAAC,CAAAE,SAAI,cAAE,QAAQ,EAAA,CAAQ,CACtB,EAAA,CAAA,KAEH,QAAQ,CACT,CAAC;IAEJC,qBAAe,CAAC,MAAK;QACnB,YAAY,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/C,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,KAAK,CAAC,CAAC;AACxB,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;IAEjE,IAAI,YAAY,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE;;AAE7C,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QACEH,gCAAA,CAACI,UAAoB,EACnB,EAAA,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAEC,UAAE,CAACJ,qBAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAIA,qBAAM,CAAC,MAAM,CAAC,EAAA,aAAA,EACvD,QAAQ,EACrB,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAC9B,OAAO,EAAE,YAAY,EAAA,eAAA,EACN,UAAU,EAAA,cAAA,EACX,UAAU,EAAA,GACpB,KAAK,EAAA,QAAA,EAER,YAAY,IACXF,iCAAC,CAAAO,qBAAY,EACX,EAAA,YAAY,EAAE,KAAK,EACnB,YAAY,EAAE,KAAK,EACnB,aAAa,EAAE,KAAK,IAAG;gBACrB,KAAK,CAAC,cAAc,EAAE,CAAC;AACzB,aAAC,EAEA,QAAA,EAAA,CAAA,QAAQ,IAAIN,gCAAA,CAACO,iBAAQ,EAAC,EAAA,OAAO,EAAE,UAAU,GAAI,EAC7C,OAAO,CACK,EAAA,CAAA,KAEfR,iCAAA,CAAAS,qCAAA,EAAA,EAAA,QAAA,EAAA,CACG,QAAQ,IAAIR,gCAAC,CAAAO,iBAAQ,IAAC,OAAO,EAAE,UAAU,EAAA,CAAI,EAC7C,OAAO,CAAA,EAAA,CACP,CACJ,EAAA,CACoB,EACvB;AACJ,CAAC,EAAE;AACH,UAAU,CAAC,WAAW,GAAGH,UAAoB,CAAC,WAAW;;;;"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import * as SelectPrimitive from
|
|
2
|
-
import { TextProps } from "../text";
|
|
1
|
+
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
3
2
|
export declare const SelectItem: import("react").ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps, "asChild"> & {
|
|
4
|
-
textProps?: TextProps | undefined;
|
|
5
3
|
leadingIcon?: React.ReactNode;
|
|
6
4
|
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
7
5
|
//# sourceMappingURL=select-item.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-item.d.ts","sourceRoot":"","sources":["../../../../v1/components/select/select-item.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"select-item.d.ts","sourceRoot":"","sources":["../../../../v1/components/select/select-item.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAS1D,eAAO,MAAM,UAAU;kBAGL,MAAM,SAAS;kDAwE/B,CAAC"}
|
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from '../../node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.js';
|
|
2
|
-
import { forwardRef, useEffect } from 'react';
|
|
3
|
-
import { ItemText, Item } from '../../node_modules/.pnpm/@radix-ui_react-select@2.2.4_@types_react-dom@18.0.11_@types_react@18.2.12_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-select/dist/index.js';
|
|
4
2
|
import { ComboboxItem } from '../../node_modules/.pnpm/@ariakit_react-core@0.4.16_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@ariakit/react-core/esm/__chunks/JMHAJKUZ.js';
|
|
3
|
+
import { Item } from '../../node_modules/.pnpm/@radix-ui_react-select@2.2.4_@types_react-dom@18.0.11_@types_react@18.2.12_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-select/dist/index.js';
|
|
5
4
|
import { cx } from '../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js';
|
|
6
|
-
import
|
|
5
|
+
import { forwardRef, useLayoutEffect } from 'react';
|
|
6
|
+
import { Checkbox } from '../checkbox/checkbox.js';
|
|
7
|
+
import { getMatch } from '../dropdown-menu/utils.js';
|
|
7
8
|
import { Text } from '../text/text.js';
|
|
8
9
|
import { useSelectContext } from './select-root.js';
|
|
9
|
-
import
|
|
10
|
+
import styles from './select.module.css.js';
|
|
10
11
|
|
|
11
|
-
const SelectItem = forwardRef(({ className,
|
|
12
|
-
const {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
registerIcon(value, leadingIcon);
|
|
17
|
-
return () => {
|
|
18
|
-
unregisterIcon(value);
|
|
19
|
-
};
|
|
20
|
-
}, [value, leadingIcon]);
|
|
21
|
-
const isSelected = value === selectValue.value;
|
|
12
|
+
const SelectItem = forwardRef(({ className, children, value, leadingIcon, disabled, ...props }, ref) => {
|
|
13
|
+
const { registerItem, unregisterItem, autocomplete, searchValue, value: selectValue, shouldFilter, multiple } = useSelectContext();
|
|
14
|
+
const isSelected = multiple
|
|
15
|
+
? selectValue?.includes(value)
|
|
16
|
+
: value === selectValue;
|
|
22
17
|
const isMatched = getMatch(value, children, searchValue);
|
|
23
18
|
const isHidden = shouldFilter && isSelected && !isMatched;
|
|
19
|
+
const element = typeof children === 'string' ? (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [leadingIcon && jsxRuntimeExports.jsx("div", { className: styles.itemIcon, children: leadingIcon }), jsxRuntimeExports.jsx(Text, { children: children })] })) : (children);
|
|
20
|
+
useLayoutEffect(() => {
|
|
21
|
+
registerItem({ leadingIcon, children, value });
|
|
22
|
+
return () => {
|
|
23
|
+
unregisterItem(value);
|
|
24
|
+
};
|
|
25
|
+
}, [value, children, registerItem, unregisterItem, leadingIcon]);
|
|
24
26
|
if (shouldFilter && !isMatched && !isSelected) {
|
|
25
27
|
// Not selected and doesn't match search, so don't render at all
|
|
26
28
|
return null;
|
|
27
29
|
}
|
|
28
|
-
|
|
29
|
-
return (jsxRuntimeExports.jsx(Item, { ref: ref, value: value, className: cx(styles.menuitem, className, isHidden && styles.hidden), "data-hidden": isHidden, disabled: disabled || isHidden, asChild: autocomplete, ...props, children: autocomplete ? (jsxRuntimeExports.jsx(ComboboxItem, { onBlurCapture: event => {
|
|
30
|
+
return (jsxRuntimeExports.jsx(Item, { ref: ref, value: value, className: cx(styles.menuitem, className, isHidden && styles.hidden), "data-hidden": isHidden, disabled: disabled || isHidden, asChild: autocomplete, "aria-selected": isSelected, "data-checked": isSelected, ...props, children: autocomplete ? (jsxRuntimeExports.jsxs(ComboboxItem, { clickOnEnter: false, clickOnSpace: false, onBlurCapture: event => {
|
|
30
31
|
event.preventDefault();
|
|
31
|
-
}, children: element })) : (element) }));
|
|
32
|
+
}, children: [multiple && jsxRuntimeExports.jsx(Checkbox, { checked: isSelected }), element] })) : (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [multiple && jsxRuntimeExports.jsx(Checkbox, { checked: isSelected }), element] })) }));
|
|
32
33
|
});
|
|
33
34
|
SelectItem.displayName = Item.displayName;
|
|
34
35
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-item.js","sources":["../../../../v1/components/select/select-item.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"select-item.js","sources":["../../../../v1/components/select/select-item.tsx"],"sourcesContent":["import { ComboboxItem } from '@ariakit/react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { cx } from 'class-variance-authority';\nimport { ElementRef, forwardRef, useLayoutEffect } from 'react';\nimport { Checkbox } from '../checkbox';\nimport { getMatch } from '../dropdown-menu/utils';\nimport { Text } from '../text';\nimport { useSelectContext } from './select-root';\nimport styles from './select.module.css';\n\nexport const SelectItem = forwardRef<\n ElementRef<typeof SelectPrimitive.Item>,\n Omit<SelectPrimitive.SelectItemProps, 'asChild'> & {\n leadingIcon?: React.ReactNode;\n }\n>(({ className, children, value, leadingIcon, disabled, ...props }, ref) => {\n const {\n registerItem,\n unregisterItem,\n autocomplete,\n searchValue,\n value: selectValue,\n shouldFilter,\n multiple\n } = useSelectContext();\n\n const isSelected = multiple\n ? selectValue?.includes(value)\n : value === selectValue;\n const isMatched = getMatch(value, children, searchValue);\n const isHidden = shouldFilter && isSelected && !isMatched;\n\n const element =\n typeof children === 'string' ? (\n <>\n {leadingIcon && <div className={styles.itemIcon}>{leadingIcon}</div>}\n <Text>{children}</Text>\n </>\n ) : (\n children\n );\n\n useLayoutEffect(() => {\n registerItem({ leadingIcon, children, value });\n return () => {\n unregisterItem(value);\n };\n }, [value, children, registerItem, unregisterItem, leadingIcon]);\n\n if (shouldFilter && !isMatched && !isSelected) {\n // Not selected and doesn't match search, so don't render at all\n return null;\n }\n\n return (\n <SelectPrimitive.Item\n ref={ref}\n value={value}\n className={cx(styles.menuitem, className, isHidden && styles.hidden)}\n data-hidden={isHidden}\n disabled={disabled || isHidden}\n asChild={autocomplete}\n aria-selected={isSelected}\n data-checked={isSelected}\n {...props}\n >\n {autocomplete ? (\n <ComboboxItem\n clickOnEnter={false}\n clickOnSpace={false}\n onBlurCapture={event => {\n event.preventDefault();\n }}\n >\n {multiple && <Checkbox checked={isSelected} />}\n {element}\n </ComboboxItem>\n ) : (\n <>\n {multiple && <Checkbox checked={isSelected} />}\n {element}\n </>\n )}\n </SelectPrimitive.Item>\n );\n});\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n"],"names":["_jsxs","_jsx","SelectPrimitive.Item","_Fragment"],"mappings":";;;;;;;;;;;AAUa,MAAA,UAAU,GAAG,UAAU,CAKlC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IACzE,MAAM,EACJ,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EACX,KAAK,EAAE,WAAW,EAClB,YAAY,EACZ,QAAQ,EACT,GAAG,gBAAgB,EAAE,CAAC;IAEvB,MAAM,UAAU,GAAG,QAAQ;AACzB,UAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC;AAC9B,UAAE,KAAK,KAAK,WAAW,CAAC;IAC1B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,YAAY,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC;AAE1D,IAAA,MAAM,OAAO,GACX,OAAO,QAAQ,KAAK,QAAQ,IAC1BA,gEACG,WAAW,IAAIC,qBAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAA,QAAA,EAAG,WAAW,EAAO,CAAA,EACpEA,qBAAC,CAAA,IAAI,cAAE,QAAQ,EAAA,CAAQ,CACtB,EAAA,CAAA,KAEH,QAAQ,CACT,CAAC;IAEJ,eAAe,CAAC,MAAK;QACnB,YAAY,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/C,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,KAAK,CAAC,CAAC;AACxB,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;IAEjE,IAAI,YAAY,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE;;AAE7C,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QACEA,qBAAA,CAACC,IAAoB,EACnB,EAAA,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,EAAA,aAAA,EACvD,QAAQ,EACrB,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAC9B,OAAO,EAAE,YAAY,EAAA,eAAA,EACN,UAAU,EAAA,cAAA,EACX,UAAU,EAAA,GACpB,KAAK,EAAA,QAAA,EAER,YAAY,IACXF,sBAAC,CAAA,YAAY,EACX,EAAA,YAAY,EAAE,KAAK,EACnB,YAAY,EAAE,KAAK,EACnB,aAAa,EAAE,KAAK,IAAG;gBACrB,KAAK,CAAC,cAAc,EAAE,CAAC;AACzB,aAAC,EAEA,QAAA,EAAA,CAAA,QAAQ,IAAIC,qBAAA,CAAC,QAAQ,EAAC,EAAA,OAAO,EAAE,UAAU,GAAI,EAC7C,OAAO,CACK,EAAA,CAAA,KAEfD,sBAAA,CAAAG,0BAAA,EAAA,EAAA,QAAA,EAAA,CACG,QAAQ,IAAIF,qBAAC,CAAA,QAAQ,IAAC,OAAO,EAAE,UAAU,EAAA,CAAI,EAC7C,OAAO,CAAA,EAAA,CACP,CACJ,EAAA,CACoB,EACvB;AACJ,CAAC,EAAE;AACH,UAAU,CAAC,WAAW,GAAGC,IAAoB,CAAC,WAAW;;;;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('../../node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.cjs');
|
|
4
|
+
var index$1 = require('../../node_modules/.pnpm/@radix-ui_react-select@2.2.4_@types_react-dom@18.0.11_@types_react@18.2.12_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-select/dist/index.cjs');
|
|
5
|
+
var index = require('../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.cjs');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var chip = require('../chip/chip.cjs');
|
|
8
|
+
var text = require('../text/text.cjs');
|
|
9
|
+
var select_module = require('./select.module.css.cjs');
|
|
10
|
+
|
|
11
|
+
/*
|
|
12
|
+
* Approximate width calculation based on font size
|
|
13
|
+
* Average character width is roughly 0.6 times the font size
|
|
14
|
+
*/
|
|
15
|
+
const calculateTextWidth = (text, fontSize = 11) => {
|
|
16
|
+
const avgCharWidth = fontSize * 0.6;
|
|
17
|
+
return text.length * avgCharWidth;
|
|
18
|
+
};
|
|
19
|
+
const SelectMultipleValue = React.forwardRef(({ data = [], ...props }, ref) => {
|
|
20
|
+
const containerRef = React.useRef(null);
|
|
21
|
+
const [visibleCount, setVisibleCount] = React.useState(data.length);
|
|
22
|
+
const [containerWidth, setContainerWidth] = React.useState(0);
|
|
23
|
+
React.useLayoutEffect(() => {
|
|
24
|
+
if (!containerRef.current)
|
|
25
|
+
return;
|
|
26
|
+
const resizeObserver = new ResizeObserver(entries => {
|
|
27
|
+
for (const entry of entries) {
|
|
28
|
+
setContainerWidth(entry.contentRect.width - 70);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
resizeObserver.observe(containerRef.current);
|
|
32
|
+
return () => resizeObserver.disconnect();
|
|
33
|
+
}, []);
|
|
34
|
+
React.useLayoutEffect(() => {
|
|
35
|
+
if (!containerRef.current || data.length === 0)
|
|
36
|
+
return;
|
|
37
|
+
// Calculate chip widths based on text length and icon width
|
|
38
|
+
const chipWidths = data.map(item => {
|
|
39
|
+
const text = typeof item.children === 'string' ? item.children : item.value;
|
|
40
|
+
const iconWidth = item.leadingIcon ? 16 : 0;
|
|
41
|
+
return calculateTextWidth(text) + 8 + iconWidth;
|
|
42
|
+
});
|
|
43
|
+
let totalWidth = 0;
|
|
44
|
+
let count = 0;
|
|
45
|
+
// Always show at least one chip
|
|
46
|
+
if (data.length > 0) {
|
|
47
|
+
count = 1;
|
|
48
|
+
totalWidth = chipWidths[0];
|
|
49
|
+
}
|
|
50
|
+
// Try to fit more chips
|
|
51
|
+
for (let i = 1; i < data.length; i++) {
|
|
52
|
+
const newWidth = totalWidth + chipWidths[i];
|
|
53
|
+
if (newWidth <= containerWidth) {
|
|
54
|
+
count++;
|
|
55
|
+
totalWidth = newWidth;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
setVisibleCount(count);
|
|
62
|
+
}, [data, containerWidth]);
|
|
63
|
+
return (jsxRuntime.jsxRuntimeExports.jsx("div", { ref: containerRef, className: index.cx(select_module.default.valueContent), children: jsxRuntime.jsxRuntimeExports.jsx(index$1.Value, { ref: ref, ...props, children: jsxRuntime.jsxRuntimeExports.jsxs("div", { className: index.cx(select_module.default.valueContent), children: [data.slice(0, visibleCount).map(item => (jsxRuntime.jsxRuntimeExports.jsx(chip.Chip, { leadingIcon: item.leadingIcon, children: typeof item.children === 'string' ? item.children : item.value }, item.value))), data.length > visibleCount && (jsxRuntime.jsxRuntimeExports.jsxs(text.Text, { children: ["+", data.length - visibleCount] }))] }) }) }));
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
exports.SelectMultipleValue = SelectMultipleValue;
|
|
67
|
+
//# sourceMappingURL=select-multiple-value.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-multiple-value.cjs","sources":["../../../../v1/components/select/select-multiple-value.tsx"],"sourcesContent":["import * as SelectPrimitive from '@radix-ui/react-select';\nimport { cx } from 'class-variance-authority';\nimport {\n ElementRef,\n forwardRef,\n useLayoutEffect,\n useRef,\n useState\n} from 'react';\nimport { Chip } from '../chip';\nimport { Text } from '../text';\nimport styles from './select.module.css';\nimport { ItemType } from './types';\n\ninterface SelectMultipleValueProps extends SelectPrimitive.SelectValueProps {\n data: ItemType[];\n}\n\n/*\n * Approximate width calculation based on font size\n * Average character width is roughly 0.6 times the font size\n */\nconst calculateTextWidth = (text: string, fontSize: number = 11): number => {\n const avgCharWidth = fontSize * 0.6;\n return text.length * avgCharWidth;\n};\n\nexport const SelectMultipleValue = forwardRef<\n ElementRef<typeof SelectPrimitive.Value>,\n SelectMultipleValueProps\n>(({ data = [], ...props }, ref) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [visibleCount, setVisibleCount] = useState(data.length);\n const [containerWidth, setContainerWidth] = useState(0);\n\n useLayoutEffect(() => {\n if (!containerRef.current) return;\n\n const resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width - 70);\n }\n });\n\n resizeObserver.observe(containerRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n useLayoutEffect(() => {\n if (!containerRef.current || data.length === 0) return;\n\n // Calculate chip widths based on text length and icon width\n const chipWidths: number[] = data.map(item => {\n const text =\n typeof item.children === 'string' ? item.children : item.value;\n const iconWidth = item.leadingIcon ? 16 : 0;\n return calculateTextWidth(text) + 8 + iconWidth;\n });\n\n let totalWidth = 0;\n let count = 0;\n\n // Always show at least one chip\n if (data.length > 0) {\n count = 1;\n totalWidth = chipWidths[0];\n }\n\n // Try to fit more chips\n for (let i = 1; i < data.length; i++) {\n const newWidth = totalWidth + chipWidths[i];\n if (newWidth <= containerWidth) {\n count++;\n totalWidth = newWidth;\n } else {\n break;\n }\n }\n\n setVisibleCount(count);\n }, [data, containerWidth]);\n\n return (\n <div ref={containerRef} className={cx(styles.valueContent)}>\n <SelectPrimitive.Value ref={ref} {...props}>\n <div className={cx(styles.valueContent)}>\n {data.slice(0, visibleCount).map(item => (\n <Chip key={item.value} leadingIcon={item.leadingIcon}>\n {typeof item.children === 'string' ? item.children : item.value}\n </Chip>\n ))}\n {data.length > visibleCount && (\n <Text>+{data.length - visibleCount}</Text>\n )}\n </div>\n </SelectPrimitive.Value>\n </div>\n );\n});\n"],"names":["forwardRef","useRef","useState","useLayoutEffect","_jsx","cx","styles","SelectPrimitive.Value","_jsxs","Chip","Text"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
2
|
+
import { ItemType } from './types';
|
|
3
|
+
interface SelectMultipleValueProps extends SelectPrimitive.SelectValueProps {
|
|
4
|
+
data: ItemType[];
|
|
5
|
+
}
|
|
6
|
+
export declare const SelectMultipleValue: import("react").ForwardRefExoticComponent<SelectMultipleValueProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=select-multiple-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-multiple-value.d.ts","sourceRoot":"","sources":["../../../../v1/components/select/select-multiple-value.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAY1D,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,UAAU,wBAAyB,SAAQ,eAAe,CAAC,gBAAgB;IACzE,IAAI,EAAE,QAAQ,EAAE,CAAC;CAClB;AAWD,eAAO,MAAM,mBAAmB,sHAuE9B,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { j as jsxRuntimeExports } from '../../node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.js';
|
|
2
|
+
import { Value } from '../../node_modules/.pnpm/@radix-ui_react-select@2.2.4_@types_react-dom@18.0.11_@types_react@18.2.12_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-select/dist/index.js';
|
|
3
|
+
import { cx } from '../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js';
|
|
4
|
+
import { forwardRef, useRef, useState, useLayoutEffect } from 'react';
|
|
5
|
+
import { Chip } from '../chip/chip.js';
|
|
6
|
+
import { Text } from '../text/text.js';
|
|
7
|
+
import styles from './select.module.css.js';
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
* Approximate width calculation based on font size
|
|
11
|
+
* Average character width is roughly 0.6 times the font size
|
|
12
|
+
*/
|
|
13
|
+
const calculateTextWidth = (text, fontSize = 11) => {
|
|
14
|
+
const avgCharWidth = fontSize * 0.6;
|
|
15
|
+
return text.length * avgCharWidth;
|
|
16
|
+
};
|
|
17
|
+
const SelectMultipleValue = forwardRef(({ data = [], ...props }, ref) => {
|
|
18
|
+
const containerRef = useRef(null);
|
|
19
|
+
const [visibleCount, setVisibleCount] = useState(data.length);
|
|
20
|
+
const [containerWidth, setContainerWidth] = useState(0);
|
|
21
|
+
useLayoutEffect(() => {
|
|
22
|
+
if (!containerRef.current)
|
|
23
|
+
return;
|
|
24
|
+
const resizeObserver = new ResizeObserver(entries => {
|
|
25
|
+
for (const entry of entries) {
|
|
26
|
+
setContainerWidth(entry.contentRect.width - 70);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
resizeObserver.observe(containerRef.current);
|
|
30
|
+
return () => resizeObserver.disconnect();
|
|
31
|
+
}, []);
|
|
32
|
+
useLayoutEffect(() => {
|
|
33
|
+
if (!containerRef.current || data.length === 0)
|
|
34
|
+
return;
|
|
35
|
+
// Calculate chip widths based on text length and icon width
|
|
36
|
+
const chipWidths = data.map(item => {
|
|
37
|
+
const text = typeof item.children === 'string' ? item.children : item.value;
|
|
38
|
+
const iconWidth = item.leadingIcon ? 16 : 0;
|
|
39
|
+
return calculateTextWidth(text) + 8 + iconWidth;
|
|
40
|
+
});
|
|
41
|
+
let totalWidth = 0;
|
|
42
|
+
let count = 0;
|
|
43
|
+
// Always show at least one chip
|
|
44
|
+
if (data.length > 0) {
|
|
45
|
+
count = 1;
|
|
46
|
+
totalWidth = chipWidths[0];
|
|
47
|
+
}
|
|
48
|
+
// Try to fit more chips
|
|
49
|
+
for (let i = 1; i < data.length; i++) {
|
|
50
|
+
const newWidth = totalWidth + chipWidths[i];
|
|
51
|
+
if (newWidth <= containerWidth) {
|
|
52
|
+
count++;
|
|
53
|
+
totalWidth = newWidth;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
setVisibleCount(count);
|
|
60
|
+
}, [data, containerWidth]);
|
|
61
|
+
return (jsxRuntimeExports.jsx("div", { ref: containerRef, className: cx(styles.valueContent), children: jsxRuntimeExports.jsx(Value, { ref: ref, ...props, children: jsxRuntimeExports.jsxs("div", { className: cx(styles.valueContent), children: [data.slice(0, visibleCount).map(item => (jsxRuntimeExports.jsx(Chip, { leadingIcon: item.leadingIcon, children: typeof item.children === 'string' ? item.children : item.value }, item.value))), data.length > visibleCount && (jsxRuntimeExports.jsxs(Text, { children: ["+", data.length - visibleCount] }))] }) }) }));
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
export { SelectMultipleValue };
|
|
65
|
+
//# sourceMappingURL=select-multiple-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-multiple-value.js","sources":["../../../../v1/components/select/select-multiple-value.tsx"],"sourcesContent":["import * as SelectPrimitive from '@radix-ui/react-select';\nimport { cx } from 'class-variance-authority';\nimport {\n ElementRef,\n forwardRef,\n useLayoutEffect,\n useRef,\n useState\n} from 'react';\nimport { Chip } from '../chip';\nimport { Text } from '../text';\nimport styles from './select.module.css';\nimport { ItemType } from './types';\n\ninterface SelectMultipleValueProps extends SelectPrimitive.SelectValueProps {\n data: ItemType[];\n}\n\n/*\n * Approximate width calculation based on font size\n * Average character width is roughly 0.6 times the font size\n */\nconst calculateTextWidth = (text: string, fontSize: number = 11): number => {\n const avgCharWidth = fontSize * 0.6;\n return text.length * avgCharWidth;\n};\n\nexport const SelectMultipleValue = forwardRef<\n ElementRef<typeof SelectPrimitive.Value>,\n SelectMultipleValueProps\n>(({ data = [], ...props }, ref) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [visibleCount, setVisibleCount] = useState(data.length);\n const [containerWidth, setContainerWidth] = useState(0);\n\n useLayoutEffect(() => {\n if (!containerRef.current) return;\n\n const resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width - 70);\n }\n });\n\n resizeObserver.observe(containerRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n useLayoutEffect(() => {\n if (!containerRef.current || data.length === 0) return;\n\n // Calculate chip widths based on text length and icon width\n const chipWidths: number[] = data.map(item => {\n const text =\n typeof item.children === 'string' ? item.children : item.value;\n const iconWidth = item.leadingIcon ? 16 : 0;\n return calculateTextWidth(text) + 8 + iconWidth;\n });\n\n let totalWidth = 0;\n let count = 0;\n\n // Always show at least one chip\n if (data.length > 0) {\n count = 1;\n totalWidth = chipWidths[0];\n }\n\n // Try to fit more chips\n for (let i = 1; i < data.length; i++) {\n const newWidth = totalWidth + chipWidths[i];\n if (newWidth <= containerWidth) {\n count++;\n totalWidth = newWidth;\n } else {\n break;\n }\n }\n\n setVisibleCount(count);\n }, [data, containerWidth]);\n\n return (\n <div ref={containerRef} className={cx(styles.valueContent)}>\n <SelectPrimitive.Value ref={ref} {...props}>\n <div className={cx(styles.valueContent)}>\n {data.slice(0, visibleCount).map(item => (\n <Chip key={item.value} leadingIcon={item.leadingIcon}>\n {typeof item.children === 'string' ? item.children : item.value}\n </Chip>\n ))}\n {data.length > visibleCount && (\n <Text>+{data.length - visibleCount}</Text>\n )}\n </div>\n </SelectPrimitive.Value>\n </div>\n );\n});\n"],"names":["_jsx","SelectPrimitive.Value","_jsxs"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('../../node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.cjs');
|
|
4
|
-
var React = require('react');
|
|
5
4
|
var comboboxProvider = require('../../node_modules/.pnpm/@ariakit_react-core@0.4.16_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@ariakit/react-core/esm/combobox/combobox-provider.cjs');
|
|
6
5
|
var index = require('../../node_modules/.pnpm/@radix-ui_react-select@2.2.4_@types_react-dom@18.0.11_@types_react@18.2.12_react-dom@18.3.1_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-select/dist/index.cjs');
|
|
6
|
+
var React = require('react');
|
|
7
7
|
|
|
8
8
|
/*
|
|
9
9
|
Root context to manage the Select control
|
|
@@ -13,53 +13,95 @@ const SelectContext = React.createContext(undefined);
|
|
|
13
13
|
const useSelectContext = () => {
|
|
14
14
|
const context = React.useContext(SelectContext);
|
|
15
15
|
if (!context) {
|
|
16
|
-
throw new Error(
|
|
16
|
+
throw new Error('useSelectContext must be used within a SelectProvider');
|
|
17
17
|
}
|
|
18
18
|
const shouldFilter = !!(context?.autocomplete &&
|
|
19
|
-
context?.autocompleteMode ===
|
|
19
|
+
context?.autocompleteMode === 'auto' &&
|
|
20
20
|
context?.searchValue?.length);
|
|
21
21
|
return {
|
|
22
22
|
...context,
|
|
23
|
-
shouldFilter
|
|
23
|
+
shouldFilter
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
|
-
const
|
|
26
|
+
const SELECT_INTERNAL_VALUE = 'SELECT_INTERNAL_VALUE';
|
|
27
|
+
const SelectRoot = (props) => {
|
|
28
|
+
const { children, value: providedValue, onValueChange, defaultValue, autocomplete, autocompleteMode = 'auto', searchValue: providedSearchValue, onSearch, defaultSearchValue = '', open: providedOpen, defaultOpen = false, onOpenChange, htmlAutoComplete, multiple = false, ...rest } = props;
|
|
27
29
|
const [internalValue, setInternalValue] = React.useState(defaultValue);
|
|
28
30
|
const [internalSearchValue, setInternalSearchValue] = React.useState(defaultSearchValue);
|
|
29
31
|
const [internalOpen, setInternalOpen] = React.useState(defaultOpen);
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const
|
|
32
|
+
const [items, setItems] = React.useState({});
|
|
33
|
+
const id = React.useId();
|
|
34
|
+
const isSelectionInProgress = React.useRef(false);
|
|
35
|
+
const computedValue = providedValue ?? internalValue;
|
|
33
36
|
const searchValue = providedSearchValue ?? internalSearchValue;
|
|
34
|
-
const open =
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
const open = providedOpen ?? internalOpen;
|
|
38
|
+
const updateSelectionInProgress = React.useCallback((value) => {
|
|
39
|
+
isSelectionInProgress.current = value;
|
|
40
|
+
}, []);
|
|
41
|
+
const setValue = React.useCallback((value) => {
|
|
42
|
+
if (multiple) {
|
|
43
|
+
updateSelectionInProgress(true);
|
|
44
|
+
const set = new Set(Array.isArray(computedValue)
|
|
45
|
+
? computedValue
|
|
46
|
+
: [computedValue ?? ''].filter(Boolean));
|
|
47
|
+
if (set.has(value))
|
|
48
|
+
set.delete(value);
|
|
49
|
+
else
|
|
50
|
+
set.add(value);
|
|
51
|
+
const newValue = Array.from(set);
|
|
52
|
+
setInternalValue(newValue);
|
|
53
|
+
onValueChange?.(newValue);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
setInternalValue(value);
|
|
57
|
+
onValueChange?.(value);
|
|
58
|
+
}
|
|
59
|
+
}, [multiple, onValueChange, computedValue, updateSelectionInProgress]);
|
|
39
60
|
const setSearchValue = React.useCallback((value) => {
|
|
40
61
|
setInternalSearchValue(value);
|
|
41
62
|
onSearch?.(value);
|
|
42
63
|
}, [onSearch]);
|
|
43
64
|
const handleOpenChange = React.useCallback((value) => {
|
|
65
|
+
if (isSelectionInProgress.current)
|
|
66
|
+
return;
|
|
44
67
|
setInternalOpen(value);
|
|
45
68
|
onOpenChange?.(value);
|
|
46
69
|
}, [onOpenChange]);
|
|
47
|
-
const
|
|
48
|
-
|
|
70
|
+
const registerItem = React.useCallback(item => {
|
|
71
|
+
setItems(prev => ({ ...prev, [item.value]: item }));
|
|
49
72
|
}, []);
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
73
|
+
const unregisterItem = React.useCallback(value => {
|
|
74
|
+
setItems(prev => {
|
|
75
|
+
const { [value]: _, ...rest } = prev;
|
|
76
|
+
return rest;
|
|
77
|
+
});
|
|
53
78
|
}, []);
|
|
79
|
+
/*
|
|
80
|
+
* Radix internally shows the placeholder when the value is empty.
|
|
81
|
+
* This value is used to manage the internal value of Radix Select to make it work
|
|
82
|
+
*/
|
|
83
|
+
const radixValue = React.useMemo(() => {
|
|
84
|
+
if (!computedValue)
|
|
85
|
+
return '';
|
|
86
|
+
if (typeof computedValue === 'string')
|
|
87
|
+
return computedValue;
|
|
88
|
+
if (computedValue.length)
|
|
89
|
+
return `${SELECT_INTERNAL_VALUE}-${id}`;
|
|
90
|
+
return '';
|
|
91
|
+
}, [computedValue, id]);
|
|
54
92
|
const element = (jsxRuntime.jsxRuntimeExports.jsx(comboboxProvider.ComboboxProvider, { resetValueOnHide: true, focusLoop: false, includesBaseElement: false, value: searchValue, setValue: setSearchValue, open: open, setOpen: handleOpenChange, children: children }));
|
|
55
93
|
return (jsxRuntime.jsxRuntimeExports.jsx(SelectContext.Provider, { value: {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
94
|
+
value: computedValue,
|
|
95
|
+
registerItem,
|
|
96
|
+
unregisterItem,
|
|
59
97
|
autocomplete,
|
|
60
98
|
autocompleteMode,
|
|
61
99
|
searchValue,
|
|
62
|
-
|
|
100
|
+
multiple,
|
|
101
|
+
items,
|
|
102
|
+
updateSelectionInProgress,
|
|
103
|
+
setValue
|
|
104
|
+
}, children: jsxRuntime.jsxRuntimeExports.jsx(index.Root, { autoComplete: htmlAutoComplete, value: radixValue, onValueChange: setValue, open: open, onOpenChange: handleOpenChange, ...rest, children: autocomplete ? element : children }) }));
|
|
63
105
|
};
|
|
64
106
|
|
|
65
107
|
exports.SelectRoot = SelectRoot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-root.cjs","sources":["../../../../v1/components/select/select-root.tsx"],"sourcesContent":["import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useRef,\n useState,\n} from \"react\";\nimport { ComboboxProvider } from \"@ariakit/react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\n\ntype IconType = Record<string, ReactNode>;\ntype ValueType = {\n value?: string;\n icon?: ReactNode;\n};\n\ninterface CommonProps {\n autocomplete?: boolean;\n autocompleteMode?: \"auto\" | \"manual\";\n searchValue?: string;\n onSearch?: (value: string) => void;\n defaultSearchValue?: string;\n}\n\ninterface SelectContextValue extends CommonProps {\n value: ValueType;\n registerIcon: (value: string, icon: ReactNode) => void;\n unregisterIcon: (value: string) => void;\n}\n\ninterface UseSelectContext extends SelectContextValue {\n shouldFilter?: boolean;\n}\n\n/*\nRoot context to manage the Select control\n@remarks Only for internal usage.\n*/\nconst SelectContext = createContext<SelectContextValue | undefined>(undefined);\n\nexport const useSelectContext = (): UseSelectContext => {\n const context = useContext(SelectContext);\n if (!context) {\n throw new Error(\"useSelectContext must be used within a SelectProvider\");\n }\n const shouldFilter = !!(\n context?.autocomplete &&\n context?.autocompleteMode === \"auto\" &&\n context?.searchValue?.length\n );\n return {\n ...context,\n shouldFilter,\n };\n};\n\nexport interface NormalSelectRootProps extends SelectPrimitive.SelectProps {\n autocomplete?: false;\n autocompleteMode?: never;\n searchValue?: never;\n onSearch?: never;\n defaultSearchValue?: never;\n}\n\nexport interface AutocompleteSelectRootProps\n extends SelectPrimitive.SelectProps,\n CommonProps {\n autocomplete: true;\n}\n\nexport type SelectRootProps = Omit<\n NormalSelectRootProps | AutocompleteSelectRootProps,\n \"autoComplete\"\n> & {\n htmlAutoComplete?: string;\n};\n\nexport interface NormalSelectRootProps extends SelectPrimitive.SelectProps {\n autocomplete?: false;\n autocompleteMode?: never;\n searchValue?: never;\n onSearch?: never;\n defaultSearchValue?: never;\n}\n\nexport interface AutocompleteSelectRootProps\n extends SelectPrimitive.SelectProps,\n CommonProps {\n autocomplete: true;\n}\n\nexport type BaseSelectRootProps =\n | NormalSelectRootProps\n | AutocompleteSelectRootProps;\n\nexport type SelectRootProps = Omit<BaseSelectRootProps, \"autoComplete\"> & {\n htmlAutoComplete?: string;\n};\n\nexport const SelectRoot = ({\n children,\n value,\n onValueChange,\n defaultValue,\n autocomplete,\n autocompleteMode = \"auto\",\n searchValue: providedSearchValue,\n onSearch,\n defaultSearchValue = \"\",\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n htmlAutoComplete,\n ...props\n}: SelectRootProps) => {\n const [internalValue, setInternalValue] = useState<string | undefined>(\n defaultValue,\n );\n const [internalSearchValue, setInternalSearchValue] =\n useState(defaultSearchValue);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const icons = useRef<IconType>({});\n\n const computedValue = value ?? internalValue;\n const icon = computedValue && icons.current?.[computedValue];\n const searchValue = providedSearchValue ?? internalSearchValue;\n const open = controlledOpen ?? internalOpen;\n\n const setValue = useCallback(\n (_value: string) => {\n onValueChange?.(_value);\n setInternalValue(_value);\n },\n [onValueChange],\n );\n\n const setSearchValue = useCallback(\n (value: string) => {\n setInternalSearchValue(value);\n onSearch?.(value);\n },\n [onSearch],\n );\n\n const handleOpenChange = useCallback(\n (value: boolean) => {\n setInternalOpen(value);\n onOpenChange?.(value);\n },\n [onOpenChange],\n );\n\n const registerIcon = useCallback<SelectContextValue[\"registerIcon\"]>(\n (value, icon) => {\n icons.current = { ...icons.current, [value]: icon };\n },\n [],\n );\n const unregisterIcon = useCallback<SelectContextValue[\"unregisterIcon\"]>(\n value => {\n const { [value]: _, ...rest } = icons.current;\n icons.current = rest;\n },\n [],\n );\n\n const element = (\n <ComboboxProvider\n resetValueOnHide\n focusLoop={false}\n includesBaseElement={false}\n value={searchValue}\n setValue={setSearchValue}\n open={open}\n setOpen={handleOpenChange}>\n {children}\n </ComboboxProvider>\n );\n\n return (\n <SelectContext.Provider\n value={{\n registerIcon,\n unregisterIcon,\n value: { value: computedValue, icon },\n autocomplete,\n autocompleteMode,\n searchValue,\n }}>\n <SelectPrimitive.Root\n autoComplete={htmlAutoComplete}\n value={computedValue}\n onValueChange={setValue}\n open={open}\n onOpenChange={handleOpenChange}\n {...props}>\n {autocomplete ? element : children}\n </SelectPrimitive.Root>\n </SelectContext.Provider>\n );\n};\n"],"names":["createContext","useContext","useState","useRef","useCallback","_jsx","ComboboxProvider","SelectPrimitive.Root"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"select-root.cjs","sources":["../../../../v1/components/select/select-root.tsx"],"sourcesContent":["import { ComboboxProvider } from '@ariakit/react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport { ItemType } from './types';\n\ninterface CommonProps {\n autocomplete?: boolean;\n autocompleteMode?: 'auto' | 'manual';\n searchValue?: string;\n onSearch?: (value: string) => void;\n defaultSearchValue?: string;\n}\n\ninterface SelectContextValue extends CommonProps {\n value?: string | string[];\n registerItem: (item: ItemType) => void;\n unregisterItem: (value: string) => void;\n multiple: boolean;\n items: Record<string, ItemType>;\n updateSelectionInProgress: (value: boolean) => void;\n setValue: (value: string) => void;\n}\n\ninterface UseSelectContext extends SelectContextValue {\n shouldFilter?: boolean;\n}\n\n/*\nRoot context to manage the Select control\n@remarks Only for internal usage.\n*/\nconst SelectContext = createContext<SelectContextValue | undefined>(undefined);\n\nexport const useSelectContext = (): UseSelectContext => {\n const context = useContext(SelectContext);\n if (!context) {\n throw new Error('useSelectContext must be used within a SelectProvider');\n }\n const shouldFilter = !!(\n context?.autocomplete &&\n context?.autocompleteMode === 'auto' &&\n context?.searchValue?.length\n );\n return {\n ...context,\n shouldFilter\n };\n};\n\ninterface NormalSelectRootProps extends SelectPrimitive.SelectProps {\n autocomplete?: false;\n autocompleteMode?: never;\n searchValue?: never;\n onSearch?: never;\n defaultSearchValue?: never;\n}\n\ninterface AutocompleteSelectRootProps\n extends SelectPrimitive.SelectProps,\n CommonProps {\n autocomplete: true;\n}\n\ntype BaseSelectProps = Omit<\n NormalSelectRootProps | AutocompleteSelectRootProps,\n 'autoComplete' | 'value' | 'onValueChange' | 'defaultValue'\n> & {\n htmlAutoComplete?: string;\n};\n\ninterface SingleSelectProps extends BaseSelectProps {\n multiple?: false;\n value?: string;\n onValueChange?: (value: string) => void;\n defaultValue?: string;\n}\n\ninterface MultipleSelectProps extends BaseSelectProps {\n multiple: true;\n value?: string[];\n onValueChange?: (value: string[]) => void;\n defaultValue?: string[];\n}\n\nexport type SelectRootProps = SingleSelectProps | MultipleSelectProps;\n\nconst SELECT_INTERNAL_VALUE = 'SELECT_INTERNAL_VALUE';\n\nexport const SelectRoot = (props: SelectRootProps) => {\n const {\n children,\n value: providedValue,\n onValueChange,\n defaultValue,\n autocomplete,\n autocompleteMode = 'auto',\n searchValue: providedSearchValue,\n onSearch,\n defaultSearchValue = '',\n open: providedOpen,\n defaultOpen = false,\n onOpenChange,\n htmlAutoComplete,\n multiple = false,\n ...rest\n } = props;\n\n const [internalValue, setInternalValue] = useState<\n string | string[] | undefined\n >(defaultValue);\n const [internalSearchValue, setInternalSearchValue] =\n useState(defaultSearchValue);\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [items, setItems] = useState<SelectContextValue['items']>({});\n const id = useId();\n const isSelectionInProgress = useRef(false);\n\n const computedValue = providedValue ?? internalValue;\n const searchValue = providedSearchValue ?? internalSearchValue;\n const open = providedOpen ?? internalOpen;\n\n const updateSelectionInProgress = useCallback((value: boolean) => {\n isSelectionInProgress.current = value;\n }, []);\n\n const setValue = useCallback(\n (value: string) => {\n if (multiple) {\n updateSelectionInProgress(true);\n const set = new Set<string>(\n Array.isArray(computedValue)\n ? computedValue\n : [computedValue ?? ''].filter(Boolean)\n );\n\n if (set.has(value)) set.delete(value);\n else set.add(value);\n\n const newValue = Array.from(set);\n\n setInternalValue(newValue);\n (onValueChange as MultipleSelectProps['onValueChange'])?.(newValue);\n } else {\n setInternalValue(value);\n (onValueChange as SingleSelectProps['onValueChange'])?.(value);\n }\n },\n [multiple, onValueChange, computedValue, updateSelectionInProgress]\n );\n\n const setSearchValue = useCallback(\n (value: string) => {\n setInternalSearchValue(value);\n onSearch?.(value);\n },\n [onSearch]\n );\n\n const handleOpenChange = useCallback(\n (value: boolean) => {\n if (isSelectionInProgress.current) return;\n setInternalOpen(value);\n onOpenChange?.(value);\n },\n [onOpenChange]\n );\n\n const registerItem = useCallback<SelectContextValue['registerItem']>(item => {\n setItems(prev => ({ ...prev, [item.value]: item }));\n }, []);\n\n const unregisterItem = useCallback<SelectContextValue['unregisterItem']>(\n value => {\n setItems(prev => {\n const { [value]: _, ...rest } = prev;\n return rest;\n });\n },\n []\n );\n\n /*\n * Radix internally shows the placeholder when the value is empty.\n * This value is used to manage the internal value of Radix Select to make it work\n */\n const radixValue = useMemo(() => {\n if (!computedValue) return '';\n if (typeof computedValue === 'string') return computedValue;\n if (computedValue.length) return `${SELECT_INTERNAL_VALUE}-${id}`;\n return '';\n }, [computedValue, id]);\n\n const element = (\n <ComboboxProvider\n resetValueOnHide\n focusLoop={false}\n includesBaseElement={false}\n value={searchValue}\n setValue={setSearchValue}\n open={open}\n setOpen={handleOpenChange}\n >\n {children}\n </ComboboxProvider>\n );\n\n return (\n <SelectContext.Provider\n value={{\n value: computedValue,\n registerItem,\n unregisterItem,\n autocomplete,\n autocompleteMode,\n searchValue,\n multiple,\n items,\n updateSelectionInProgress,\n setValue\n }}\n >\n <SelectPrimitive.Root\n autoComplete={htmlAutoComplete}\n value={radixValue}\n onValueChange={setValue}\n open={open}\n onOpenChange={handleOpenChange}\n {...rest}\n >\n {autocomplete ? element : children}\n </SelectPrimitive.Root>\n </SelectContext.Provider>\n );\n};\n"],"names":["createContext","useContext","useState","useId","useRef","useCallback","useMemo","_jsx","ComboboxProvider","SelectPrimitive.Root"],"mappings":"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"}
|