@raystack/apsara 0.46.0-rc.3 → 0.46.0-rc.5
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/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 +41 -24
- package/dist/v1/components/breadcrumb/breadcrumb.cjs.map +1 -1
- package/dist/v1/components/breadcrumb/breadcrumb.d.ts +16 -13
- package/dist/v1/components/breadcrumb/breadcrumb.d.ts.map +1 -1
- package/dist/v1/components/breadcrumb/breadcrumb.js +43 -26
- package/dist/v1/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/v1/components/data-table/components/filters.cjs +14 -14
- package/dist/v1/components/data-table/components/filters.cjs.map +1 -1
- package/dist/v1/components/data-table/components/filters.d.ts.map +1 -1
- package/dist/v1/components/data-table/components/filters.js +14 -14
- package/dist/v1/components/data-table/components/filters.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/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/tooltip/tooltip.cjs +20 -12
- package/dist/v1/components/tooltip/tooltip.cjs.map +1 -1
- package/dist/v1/components/tooltip/tooltip.d.ts +4 -3
- package/dist/v1/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/v1/components/tooltip/tooltip.js +21 -13
- package/dist/v1/components/tooltip/tooltip.js.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.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-content.d.ts","sourceRoot":"","sources":["../../../../v1/components/select/select-content.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"select-content.d.ts","sourceRoot":"","sources":["../../../../v1/components/select/select-content.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAO1D,MAAM,WAAW,kBAAmB,SAAQ,eAAe,CAAC,kBAAkB;IAC5E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,aAAa,+GA2FzB,CAAC"}
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from '../../node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.js';
|
|
2
|
-
import { forwardRef } from 'react';
|
|
3
|
-
import { Portal, Content as Content2, Viewport } 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 { Combobox } 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/combobox/combobox.js';
|
|
5
3
|
import { ComboboxList } 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/MAXQOH4L.js';
|
|
4
|
+
import { Portal, Content as Content2, Viewport } 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
|
+
import { Slot as $5e63c961fc1ce211$export$8c6ed5c666ac1360 } from '../../node_modules/.pnpm/@radix-ui_react-slot@1.0.2_@types_react@18.2.12_react@18.2.0/node_modules/@radix-ui/react-slot/dist/index.js';
|
|
6
6
|
import { cx } from '../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js';
|
|
7
|
-
import
|
|
7
|
+
import { forwardRef, useCallback } from 'react';
|
|
8
8
|
import { useSelectContext } from './select-root.js';
|
|
9
|
+
import styles from './select.module.css.js';
|
|
9
10
|
|
|
10
|
-
const SelectContent = forwardRef(({ className, children, position =
|
|
11
|
-
const { autocomplete } = useSelectContext();
|
|
12
|
-
|
|
11
|
+
const SelectContent = forwardRef(({ className, children, position = 'popper', searchPlaceholder = 'Search...', sideOffset = 4, asChild, onEscapeKeyDown: providedOnEscapeKeyDown, onPointerDownOutside: providedOnPointerDownOutside, ...props }, ref) => {
|
|
12
|
+
const { autocomplete, multiple, updateSelectionInProgress } = useSelectContext();
|
|
13
|
+
const onPointerDownOutside = useCallback(event => {
|
|
14
|
+
updateSelectionInProgress(false);
|
|
15
|
+
providedOnPointerDownOutside?.(event);
|
|
16
|
+
}, [updateSelectionInProgress, providedOnPointerDownOutside]);
|
|
17
|
+
const onEscapeKeyDown = useCallback(event => {
|
|
18
|
+
updateSelectionInProgress(false);
|
|
19
|
+
providedOnEscapeKeyDown?.(event);
|
|
20
|
+
}, [updateSelectionInProgress, providedOnEscapeKeyDown]);
|
|
21
|
+
return (jsxRuntimeExports.jsx(Portal, { children: jsxRuntimeExports.jsx(Content2, { ref: ref, position: position, sideOffset: sideOffset, className: cx(styles.content, className), onEscapeKeyDown: multiple ? onEscapeKeyDown : providedOnEscapeKeyDown, onPointerDownOutside: multiple ? onPointerDownOutside : providedOnPointerDownOutside, role: autocomplete ? 'dialog' : 'listbox', "aria-multiselectable": !autocomplete && multiple ? true : undefined, "data-multiselectable": multiple ? true : undefined, ...props, children: jsxRuntimeExports.jsx(Viewport, { className: cx(styles.viewport, autocomplete && styles.comboboxViewport), asChild: !autocomplete ? asChild : undefined, children: autocomplete ? (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(Combobox, { autoSelect: true, placeholder: searchPlaceholder, className: styles.comboboxInput, onBlurCapture: event => {
|
|
13
22
|
event.preventDefault();
|
|
14
23
|
event.stopPropagation();
|
|
15
|
-
} }), jsxRuntimeExports.jsx(ComboboxList, { className: styles.comboboxContent, children: children })] })) : (children) }) }) }));
|
|
24
|
+
} }), jsxRuntimeExports.jsx(ComboboxList, { className: styles.comboboxContent, "aria-multiselectable": multiple ? true : undefined, render: asChild ? jsxRuntimeExports.jsx($5e63c961fc1ce211$export$8c6ed5c666ac1360, {}) : undefined, children: children })] })) : (children) }) }) }));
|
|
16
25
|
});
|
|
17
26
|
SelectContent.displayName = Content2.displayName;
|
|
18
27
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-content.js","sources":["../../../../v1/components/select/select-content.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"select-content.js","sources":["../../../../v1/components/select/select-content.tsx"],"sourcesContent":["import { Combobox, ComboboxList } from '@ariakit/react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cx } from 'class-variance-authority';\nimport { ElementRef, forwardRef, useCallback } from 'react';\nimport { useSelectContext } from './select-root';\nimport styles from './select.module.css';\n\nexport interface SelectContentProps extends SelectPrimitive.SelectContentProps {\n searchPlaceholder?: string;\n}\n\nexport const SelectContent = forwardRef<\n ElementRef<typeof SelectPrimitive.Content>,\n SelectContentProps\n>(\n (\n {\n className,\n children,\n position = 'popper',\n searchPlaceholder = 'Search...',\n sideOffset = 4,\n asChild,\n onEscapeKeyDown: providedOnEscapeKeyDown,\n onPointerDownOutside: providedOnPointerDownOutside,\n ...props\n },\n ref\n ) => {\n const { autocomplete, multiple, updateSelectionInProgress } =\n useSelectContext();\n\n const onPointerDownOutside = useCallback<\n NonNullable<SelectContentProps['onPointerDownOutside']>\n >(\n event => {\n updateSelectionInProgress(false);\n providedOnPointerDownOutside?.(event);\n },\n [updateSelectionInProgress, providedOnPointerDownOutside]\n );\n\n const onEscapeKeyDown = useCallback<\n NonNullable<SelectContentProps['onEscapeKeyDown']>\n >(\n event => {\n updateSelectionInProgress(false);\n providedOnEscapeKeyDown?.(event);\n },\n [updateSelectionInProgress, providedOnEscapeKeyDown]\n );\n\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n position={position}\n sideOffset={sideOffset}\n className={cx(styles.content, className)}\n onEscapeKeyDown={multiple ? onEscapeKeyDown : providedOnEscapeKeyDown}\n onPointerDownOutside={\n multiple ? onPointerDownOutside : providedOnPointerDownOutside\n }\n role={autocomplete ? 'dialog' : 'listbox'}\n aria-multiselectable={!autocomplete && multiple ? true : undefined}\n data-multiselectable={multiple ? true : undefined}\n {...props}\n >\n <SelectPrimitive.Viewport\n className={cx(\n styles.viewport,\n autocomplete && styles.comboboxViewport\n )}\n asChild={!autocomplete ? asChild : undefined}\n >\n {autocomplete ? (\n <>\n <Combobox\n autoSelect\n placeholder={searchPlaceholder}\n className={styles.comboboxInput}\n onBlurCapture={event => {\n event.preventDefault();\n event.stopPropagation();\n }}\n />\n <ComboboxList\n className={styles.comboboxContent}\n aria-multiselectable={multiple ? true : undefined}\n render={asChild ? <Slot /> : undefined}\n >\n {children}\n </ComboboxList>\n </>\n ) : (\n children\n )}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n }\n);\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n"],"names":["_jsx","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","_jsxs","_Fragment","Slot"],"mappings":";;;;;;;;;;AAYa,MAAA,aAAa,GAAG,UAAU,CAIrC,CACE,EACE,SAAS,EACT,QAAQ,EACR,QAAQ,GAAG,QAAQ,EACnB,iBAAiB,GAAG,WAAW,EAC/B,UAAU,GAAG,CAAC,EACd,OAAO,EACP,eAAe,EAAE,uBAAuB,EACxC,oBAAoB,EAAE,4BAA4B,EAClD,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,yBAAyB,EAAE,GACzD,gBAAgB,EAAE,CAAC;AAErB,IAAA,MAAM,oBAAoB,GAAG,WAAW,CAGtC,KAAK,IAAG;QACN,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,4BAA4B,GAAG,KAAK,CAAC,CAAC;AACxC,KAAC,EACD,CAAC,yBAAyB,EAAE,4BAA4B,CAAC,CAC1D,CAAC;AAEF,IAAA,MAAM,eAAe,GAAG,WAAW,CAGjC,KAAK,IAAG;QACN,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,uBAAuB,GAAG,KAAK,CAAC,CAAC;AACnC,KAAC,EACD,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,CACrD,CAAC;AAEF,IAAA,QACEA,qBAAA,CAACC,MAAsB,EACrB,EAAA,QAAA,EAAAD,qBAAA,CAACE,QAAuB,EACtB,EAAA,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,EACxC,eAAe,EAAE,QAAQ,GAAG,eAAe,GAAG,uBAAuB,EACrE,oBAAoB,EAClB,QAAQ,GAAG,oBAAoB,GAAG,4BAA4B,EAEhE,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,EACnB,sBAAA,EAAA,CAAC,YAAY,IAAI,QAAQ,GAAG,IAAI,GAAG,SAAS,0BAC5C,QAAQ,GAAG,IAAI,GAAG,SAAS,KAC7C,KAAK,EAAA,QAAA,EAETF,qBAAC,CAAAG,QAAwB,EAAA,EACvB,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,QAAQ,EACf,YAAY,IAAI,MAAM,CAAC,gBAAgB,CACxC,EACD,OAAO,EAAE,CAAC,YAAY,GAAG,OAAO,GAAG,SAAS,YAE3C,YAAY,IACXC,sBACE,CAAAC,0BAAA,EAAA,EAAA,QAAA,EAAA,CAAAL,qBAAA,CAAC,QAAQ,EAAA,EACP,UAAU,EACV,IAAA,EAAA,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EAAE,MAAM,CAAC,aAAa,EAC/B,aAAa,EAAE,KAAK,IAAG;gCACrB,KAAK,CAAC,cAAc,EAAE,CAAC;gCACvB,KAAK,CAAC,eAAe,EAAE,CAAC;6BACzB,EAAA,CACD,EACFA,qBAAC,CAAA,YAAY,IACX,SAAS,EAAE,MAAM,CAAC,eAAe,EAAA,sBAAA,EACX,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjD,MAAM,EAAE,OAAO,GAAGA,sBAACM,yCAAI,EAAA,EAAA,CAAG,GAAG,SAAS,EAAA,QAAA,EAErC,QAAQ,EAAA,CACI,IACd,KAEH,QAAQ,CACT,EACwB,CAAA,EAAA,CACH,EACH,CAAA,EACzB;AACJ,CAAC,EACD;AACF,aAAa,CAAC,WAAW,GAAGJ,QAAuB,CAAC,WAAW;;;;"}
|
|
@@ -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;
|