@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.
Files changed (84) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/v1/components/avatar/avatar.cjs +18 -2
  3. package/dist/v1/components/avatar/avatar.cjs.map +1 -1
  4. package/dist/v1/components/avatar/avatar.d.ts +2 -1
  5. package/dist/v1/components/avatar/avatar.d.ts.map +1 -1
  6. package/dist/v1/components/avatar/avatar.js +18 -3
  7. package/dist/v1/components/avatar/avatar.js.map +1 -1
  8. package/dist/v1/components/avatar/utils.cjs +14 -34
  9. package/dist/v1/components/avatar/utils.cjs.map +1 -1
  10. package/dist/v1/components/avatar/utils.d.ts +1 -4
  11. package/dist/v1/components/avatar/utils.d.ts.map +1 -1
  12. package/dist/v1/components/avatar/utils.js +15 -34
  13. package/dist/v1/components/avatar/utils.js.map +1 -1
  14. package/dist/v1/components/breadcrumb/breadcrumb.cjs +41 -24
  15. package/dist/v1/components/breadcrumb/breadcrumb.cjs.map +1 -1
  16. package/dist/v1/components/breadcrumb/breadcrumb.d.ts +16 -13
  17. package/dist/v1/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  18. package/dist/v1/components/breadcrumb/breadcrumb.js +43 -26
  19. package/dist/v1/components/breadcrumb/breadcrumb.js.map +1 -1
  20. package/dist/v1/components/data-table/components/filters.cjs +14 -14
  21. package/dist/v1/components/data-table/components/filters.cjs.map +1 -1
  22. package/dist/v1/components/data-table/components/filters.d.ts.map +1 -1
  23. package/dist/v1/components/data-table/components/filters.js +14 -14
  24. package/dist/v1/components/data-table/components/filters.js.map +1 -1
  25. package/dist/v1/components/dropdown-menu/dropdown-menu-content.cjs +5 -5
  26. package/dist/v1/components/dropdown-menu/dropdown-menu-content.cjs.map +1 -1
  27. package/dist/v1/components/dropdown-menu/dropdown-menu-content.d.ts +3 -3
  28. package/dist/v1/components/dropdown-menu/dropdown-menu-content.d.ts.map +1 -1
  29. package/dist/v1/components/dropdown-menu/dropdown-menu-content.js +5 -5
  30. package/dist/v1/components/dropdown-menu/dropdown-menu-content.js.map +1 -1
  31. package/dist/v1/components/select/select-content.cjs +16 -7
  32. package/dist/v1/components/select/select-content.cjs.map +1 -1
  33. package/dist/v1/components/select/select-content.d.ts +1 -1
  34. package/dist/v1/components/select/select-content.d.ts.map +1 -1
  35. package/dist/v1/components/select/select-content.js +16 -7
  36. package/dist/v1/components/select/select-content.js.map +1 -1
  37. package/dist/v1/components/select/select-item.cjs +19 -18
  38. package/dist/v1/components/select/select-item.cjs.map +1 -1
  39. package/dist/v1/components/select/select-item.d.ts +1 -3
  40. package/dist/v1/components/select/select-item.d.ts.map +1 -1
  41. package/dist/v1/components/select/select-item.js +19 -18
  42. package/dist/v1/components/select/select-item.js.map +1 -1
  43. package/dist/v1/components/select/select-multiple-value.cjs +67 -0
  44. package/dist/v1/components/select/select-multiple-value.cjs.map +1 -0
  45. package/dist/v1/components/select/select-multiple-value.d.ts +8 -0
  46. package/dist/v1/components/select/select-multiple-value.d.ts.map +1 -0
  47. package/dist/v1/components/select/select-multiple-value.js +65 -0
  48. package/dist/v1/components/select/select-multiple-value.js.map +1 -0
  49. package/dist/v1/components/select/select-root.cjs +64 -22
  50. package/dist/v1/components/select/select-root.cjs.map +1 -1
  51. package/dist/v1/components/select/select-root.d.ts +25 -26
  52. package/dist/v1/components/select/select-root.d.ts.map +1 -1
  53. package/dist/v1/components/select/select-root.js +64 -22
  54. package/dist/v1/components/select/select-root.js.map +1 -1
  55. package/dist/v1/components/select/select-trigger.cjs +18 -20
  56. package/dist/v1/components/select/select-trigger.cjs.map +1 -1
  57. package/dist/v1/components/select/select-trigger.d.ts +10 -18
  58. package/dist/v1/components/select/select-trigger.d.ts.map +1 -1
  59. package/dist/v1/components/select/select-trigger.js +16 -18
  60. package/dist/v1/components/select/select-trigger.js.map +1 -1
  61. package/dist/v1/components/select/select-value.cjs +23 -7
  62. package/dist/v1/components/select/select-value.cjs.map +1 -1
  63. package/dist/v1/components/select/select-value.d.ts +8 -2
  64. package/dist/v1/components/select/select-value.d.ts.map +1 -1
  65. package/dist/v1/components/select/select-value.js +22 -6
  66. package/dist/v1/components/select/select-value.js.map +1 -1
  67. package/dist/v1/components/select/select.d.ts +11 -9
  68. package/dist/v1/components/select/select.d.ts.map +1 -1
  69. package/dist/v1/components/select/select.module.css.cjs +1 -1
  70. package/dist/v1/components/select/select.module.css.js +1 -1
  71. package/dist/v1/components/select/types.d.ts +7 -0
  72. package/dist/v1/components/select/types.d.ts.map +1 -0
  73. package/dist/v1/components/tooltip/tooltip.cjs +20 -12
  74. package/dist/v1/components/tooltip/tooltip.cjs.map +1 -1
  75. package/dist/v1/components/tooltip/tooltip.d.ts +4 -3
  76. package/dist/v1/components/tooltip/tooltip.d.ts.map +1 -1
  77. package/dist/v1/components/tooltip/tooltip.js +21 -13
  78. package/dist/v1/components/tooltip/tooltip.js.map +1 -1
  79. 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
  80. 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
  81. 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
  82. 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
  83. package/dist/v1/style.css +1 -1
  84. 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;AAM1D,MAAM,WAAW,kBAAmB,SAAQ,eAAe,CAAC,kBAAkB;IAC5E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,aAAa,+GAsDzB,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 styles from './select.module.css.js';
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 = "popper", searchPlaceholder = "Search...", sideOffset = 4, ...props }, ref) => {
11
- const { autocomplete } = useSelectContext();
12
- return (jsxRuntimeExports.jsx(Portal, { children: jsxRuntimeExports.jsx(Content2, { role: autocomplete ? "dialog" : undefined, ref: ref, position: position, sideOffset: sideOffset, className: cx(styles.content, className), ...props, children: jsxRuntimeExports.jsx(Viewport, { className: cx(styles.viewport, autocomplete && styles.comboboxViewport), children: autocomplete ? (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(Combobox, { autoSelect: true, placeholder: searchPlaceholder, className: styles.comboboxInput, onBlurCapture: event => {
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 { ElementRef, forwardRef } from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Combobox, ComboboxList } from \"@ariakit/react\";\nimport { cx } from \"class-variance-authority\";\nimport styles from \"./select.module.css\";\nimport { useSelectContext } from \"./select-root\";\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 ...props\n },\n ref,\n ) => {\n const { autocomplete } = useSelectContext();\n\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n role={autocomplete ? \"dialog\" : undefined}\n ref={ref}\n position={position}\n sideOffset={sideOffset}\n className={cx(styles.content, className)}\n {...props}>\n <SelectPrimitive.Viewport\n className={cx(\n styles.viewport,\n autocomplete && styles.comboboxViewport,\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 className={styles.comboboxContent}>\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"],"mappings":";;;;;;;;;AAWO,MAAM,aAAa,GAAG,UAAU,CAIrC,CACE,EACE,SAAS,EACT,QAAQ,EACR,QAAQ,GAAG,QAAQ,EACnB,iBAAiB,GAAG,WAAW,EAC/B,UAAU,GAAG,CAAC,EACd,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE5C,QACEA,sBAACC,MAAsB,EACrB,EAAA,QAAA,EAAAD,qBAAA,CAACE,QAAuB,IACtB,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,EACzC,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,EAAA,GACpC,KAAK,EACT,QAAA,EAAAF,qBAAA,CAACG,QAAwB,IACvB,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,QAAQ,EACf,YAAY,IAAI,MAAM,CAAC,gBAAgB,CACxC,YACA,YAAY,IACXC,gEACEJ,qBAAC,CAAA,QAAQ,IACP,UAAU,EAAA,IAAA,EACV,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,qBAAA,CAAC,YAAY,EAAA,EAAC,SAAS,EAAE,MAAM,CAAC,eAAe,EAC5C,QAAA,EAAA,QAAQ,GACI,CACd,EAAA,CAAA,KAEH,QAAQ,CACT,EACwB,CAAA,EAAA,CACH,EACH,CAAA,EACzB;AACJ,CAAC,EACD;AACF,aAAa,CAAC,WAAW,GAAGE,QAAuB,CAAC,WAAW;;;;"}
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 select_module = require('./select.module.css.cjs');
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 utils = require('../dropdown-menu/utils.cjs');
12
+ var select_module = require('./select.module.css.cjs');
12
13
 
13
- const SelectItem = React.forwardRef(({ className, textProps = {}, children, value, leadingIcon, disabled, ...props }, ref) => {
14
- const { registerIcon, unregisterIcon, autocomplete, searchValue, value: selectValue, shouldFilter, } = selectRoot.useSelectContext();
15
- React.useEffect(() => {
16
- if (!leadingIcon)
17
- return;
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
- const element = (jsxRuntime.jsxRuntimeExports.jsxs(jsxRuntime.jsxRuntimeExports.Fragment, { children: [leadingIcon && jsxRuntime.jsxRuntimeExports.jsx("div", { className: select_module.default.itemIcon, children: leadingIcon }), jsxRuntime.jsxRuntimeExports.jsx(index.ItemText, { children: jsxRuntime.jsxRuntimeExports.jsx(text.Text, { ...textProps, children: children }) })] }));
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 { ElementRef, forwardRef, useEffect } from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { ComboboxItem } from \"@ariakit/react\";\nimport { cx } from \"class-variance-authority\";\nimport styles from \"./select.module.css\";\nimport { Text, TextProps } from \"../text\";\nimport { useSelectContext } from \"./select-root\";\nimport { getMatch } from \"../dropdown-menu/utils\";\n\nexport const SelectItem = forwardRef<\n ElementRef<typeof SelectPrimitive.Item>,\n Omit<SelectPrimitive.SelectItemProps, \"asChild\"> & {\n textProps?: TextProps;\n leadingIcon?: React.ReactNode;\n }\n>(\n (\n {\n className,\n textProps = {},\n children,\n value,\n leadingIcon,\n disabled,\n ...props\n },\n ref,\n ) => {\n const {\n registerIcon,\n unregisterIcon,\n autocomplete,\n searchValue,\n value: selectValue,\n shouldFilter,\n } = useSelectContext();\n\n useEffect(() => {\n if (!leadingIcon) return;\n\n registerIcon(value, leadingIcon);\n return () => {\n unregisterIcon(value);\n };\n }, [value, leadingIcon]);\n\n const isSelected = value === selectValue.value;\n const isMatched = getMatch(value, children, searchValue);\n const isHidden = shouldFilter && isSelected && !isMatched;\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 const element = (\n <>\n {leadingIcon && <div className={styles.itemIcon}>{leadingIcon}</div>}\n <SelectPrimitive.ItemText>\n <Text {...textProps}>{children}</Text>\n </SelectPrimitive.ItemText>\n </>\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 {...props}>\n {autocomplete ? (\n <ComboboxItem\n onBlurCapture={event => {\n event.preventDefault();\n }}>\n {element}\n </ComboboxItem>\n ) : (\n element\n )}\n </SelectPrimitive.Item>\n );\n },\n);\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n"],"names":["forwardRef","useSelectContext","useEffect","getMatch","_jsxs","_Fragment","_jsx","styles","SelectPrimitive.ItemText","Text","SelectPrimitive.Item","cx","ComboboxItem"],"mappings":";;;;;;;;;;;;AASO,MAAM,UAAU,GAAGA,gBAAU,CAOlC,CACE,EACE,SAAS,EACT,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,KAAK,EACL,WAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,EACJ,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EACX,KAAK,EAAE,WAAW,EAClB,YAAY,GACb,GAAGC,2BAAgB,EAAE,CAAC;IAEvBC,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,WAAW;YAAE,OAAO;AAEzB,QAAA,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACjC,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,KAAK,CAAC,CAAC;AACxB,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAEzB,IAAA,MAAM,UAAU,GAAG,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC;IAC/C,MAAM,SAAS,GAAGC,cAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,YAAY,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC;IAE1D,IAAI,YAAY,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE;;AAE7C,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,OAAO,IACXC,iCAAA,CAAAC,qCAAA,EAAA,EAAA,QAAA,EAAA,CACG,WAAW,IAAIC,gCAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAEC,qBAAM,CAAC,QAAQ,YAAG,WAAW,EAAA,CAAO,EACpED,gCAAA,CAACE,cAAwB,EAAA,EAAA,QAAA,EACvBF,iCAACG,SAAI,EAAA,EAAA,GAAK,SAAS,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAQ,EACb,CAAA,CAAA,EAAA,CAC1B,CACJ,CAAC;IAEF,QACEH,gCAAC,CAAAI,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,GACjB,KAAK,EAAA,QAAA,EACR,YAAY,IACXD,gCAAA,CAACM,qBAAY,EAAA,EACX,aAAa,EAAE,KAAK,IAAG;gBACrB,KAAK,CAAC,cAAc,EAAE,CAAC;AACzB,aAAC,EACA,QAAA,EAAA,OAAO,EACK,CAAA,KAEf,OAAO,CACR,EACoB,CAAA,EACvB;AACJ,CAAC,EACD;AACF,UAAU,CAAC,WAAW,GAAGF,UAAoB,CAAC,WAAW;;;;"}
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 "@radix-ui/react-select";
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;AAI1D,OAAO,EAAQ,SAAS,EAAE,MAAM,SAAS,CAAC;AAI1C,eAAO,MAAM,UAAU;;kBAIL,MAAM,SAAS;kDAyEhC,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 styles from './select.module.css.js';
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 { getMatch } from '../dropdown-menu/utils.js';
10
+ import styles from './select.module.css.js';
10
11
 
11
- const SelectItem = forwardRef(({ className, textProps = {}, children, value, leadingIcon, disabled, ...props }, ref) => {
12
- const { registerIcon, unregisterIcon, autocomplete, searchValue, value: selectValue, shouldFilter, } = useSelectContext();
13
- useEffect(() => {
14
- if (!leadingIcon)
15
- return;
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
- const element = (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [leadingIcon && jsxRuntimeExports.jsx("div", { className: styles.itemIcon, children: leadingIcon }), jsxRuntimeExports.jsx(ItemText, { children: jsxRuntimeExports.jsx(Text, { ...textProps, children: children }) })] }));
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 { ElementRef, forwardRef, useEffect } from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { ComboboxItem } from \"@ariakit/react\";\nimport { cx } from \"class-variance-authority\";\nimport styles from \"./select.module.css\";\nimport { Text, TextProps } from \"../text\";\nimport { useSelectContext } from \"./select-root\";\nimport { getMatch } from \"../dropdown-menu/utils\";\n\nexport const SelectItem = forwardRef<\n ElementRef<typeof SelectPrimitive.Item>,\n Omit<SelectPrimitive.SelectItemProps, \"asChild\"> & {\n textProps?: TextProps;\n leadingIcon?: React.ReactNode;\n }\n>(\n (\n {\n className,\n textProps = {},\n children,\n value,\n leadingIcon,\n disabled,\n ...props\n },\n ref,\n ) => {\n const {\n registerIcon,\n unregisterIcon,\n autocomplete,\n searchValue,\n value: selectValue,\n shouldFilter,\n } = useSelectContext();\n\n useEffect(() => {\n if (!leadingIcon) return;\n\n registerIcon(value, leadingIcon);\n return () => {\n unregisterIcon(value);\n };\n }, [value, leadingIcon]);\n\n const isSelected = value === selectValue.value;\n const isMatched = getMatch(value, children, searchValue);\n const isHidden = shouldFilter && isSelected && !isMatched;\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 const element = (\n <>\n {leadingIcon && <div className={styles.itemIcon}>{leadingIcon}</div>}\n <SelectPrimitive.ItemText>\n <Text {...textProps}>{children}</Text>\n </SelectPrimitive.ItemText>\n </>\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 {...props}>\n {autocomplete ? (\n <ComboboxItem\n onBlurCapture={event => {\n event.preventDefault();\n }}>\n {element}\n </ComboboxItem>\n ) : (\n element\n )}\n </SelectPrimitive.Item>\n );\n },\n);\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n"],"names":["_jsxs","_Fragment","_jsx","SelectPrimitive.ItemText","SelectPrimitive.Item"],"mappings":";;;;;;;;;;AASO,MAAM,UAAU,GAAG,UAAU,CAOlC,CACE,EACE,SAAS,EACT,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,KAAK,EACL,WAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,EACJ,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EACX,KAAK,EAAE,WAAW,EAClB,YAAY,GACb,GAAG,gBAAgB,EAAE,CAAC;IAEvB,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,WAAW;YAAE,OAAO;AAEzB,QAAA,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACjC,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,KAAK,CAAC,CAAC;AACxB,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAEzB,IAAA,MAAM,UAAU,GAAG,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC;IAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,YAAY,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC;IAE1D,IAAI,YAAY,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE;;AAE7C,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,OAAO,IACXA,sBAAA,CAAAC,0BAAA,EAAA,EAAA,QAAA,EAAA,CACG,WAAW,IAAIC,qBAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,QAAQ,YAAG,WAAW,EAAA,CAAO,EACpEA,qBAAA,CAACC,QAAwB,EAAA,EAAA,QAAA,EACvBD,sBAAC,IAAI,EAAA,EAAA,GAAK,SAAS,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAQ,EACb,CAAA,CAAA,EAAA,CAC1B,CACJ,CAAC;IAEF,QACEA,qBAAC,CAAAE,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,GACjB,KAAK,EAAA,QAAA,EACR,YAAY,IACXF,qBAAA,CAAC,YAAY,EAAA,EACX,aAAa,EAAE,KAAK,IAAG;gBACrB,KAAK,CAAC,cAAc,EAAE,CAAC;AACzB,aAAC,EACA,QAAA,EAAA,OAAO,EACK,CAAA,KAEf,OAAO,CACR,EACoB,CAAA,EACvB;AACJ,CAAC,EACD;AACF,UAAU,CAAC,WAAW,GAAGE,IAAoB,CAAC,WAAW;;;;"}
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("useSelectContext must be used within a SelectProvider");
16
+ throw new Error('useSelectContext must be used within a SelectProvider');
17
17
  }
18
18
  const shouldFilter = !!(context?.autocomplete &&
19
- context?.autocompleteMode === "auto" &&
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 SelectRoot = ({ children, value, onValueChange, defaultValue, autocomplete, autocompleteMode = "auto", searchValue: providedSearchValue, onSearch, defaultSearchValue = "", open: controlledOpen, defaultOpen = false, onOpenChange, htmlAutoComplete, ...props }) => {
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 icons = React.useRef({});
31
- const computedValue = value ?? internalValue;
32
- const icon = computedValue && icons.current?.[computedValue];
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 = controlledOpen ?? internalOpen;
35
- const setValue = React.useCallback((_value) => {
36
- onValueChange?.(_value);
37
- setInternalValue(_value);
38
- }, [onValueChange]);
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 registerIcon = React.useCallback((value, icon) => {
48
- icons.current = { ...icons.current, [value]: icon };
70
+ const registerItem = React.useCallback(item => {
71
+ setItems(prev => ({ ...prev, [item.value]: item }));
49
72
  }, []);
50
- const unregisterIcon = React.useCallback(value => {
51
- const { [value]: _, ...rest } = icons.current;
52
- icons.current = rest;
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
- registerIcon,
57
- unregisterIcon,
58
- value: { value: computedValue, icon },
94
+ value: computedValue,
95
+ registerItem,
96
+ unregisterItem,
59
97
  autocomplete,
60
98
  autocompleteMode,
61
99
  searchValue,
62
- }, children: jsxRuntime.jsxRuntimeExports.jsx(index.Root, { autoComplete: htmlAutoComplete, value: computedValue, onValueChange: setValue, open: open, onOpenChange: handleOpenChange, ...props, children: autocomplete ? element : children }) }));
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;