@osdk/react-components 0.55.0 → 0.55.1-main-685e192adc9b3378df910e70268193396d3de9eb

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 (124) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/build/browser/action-form/FormField.js +3 -1
  3. package/build/browser/action-form/FormField.js.map +1 -1
  4. package/build/browser/action-form/FormField.module.css +1 -0
  5. package/build/browser/action-form/fields/DropdownField.js +3 -1
  6. package/build/browser/action-form/fields/DropdownField.js.map +1 -1
  7. package/build/browser/action-form/fields/DropdownField.module.css +2 -8
  8. package/build/browser/base-components/combobox/Combobox.module.css +124 -386
  9. package/build/browser/base-components/select/Select.module.css +48 -151
  10. package/build/browser/filter-list/FilterListApi.js.map +1 -1
  11. package/build/browser/filter-list/hooks/useDualScopeAggregation.js +3 -3
  12. package/build/browser/filter-list/hooks/useDualScopeAggregation.js.map +1 -1
  13. package/build/browser/filter-list/types/LinkedFilterTypes.js +1 -1
  14. package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
  15. package/build/browser/shared/calendar/DatePicker.js +2 -2
  16. package/build/browser/shared/calendar/DatePicker.js.map +1 -1
  17. package/build/browser/shared/calendar/DateRangePicker.js +2 -2
  18. package/build/browser/shared/calendar/DateRangePicker.js.map +1 -1
  19. package/build/browser/styles.css +328 -556
  20. package/build/browser/tokens/base-tokens/base.css +10 -0
  21. package/build/browser/tokens/base-tokens/dark.css +10 -0
  22. package/build/browser/tokens/component-tokens/combobox.css +90 -6
  23. package/build/browser/tokens/component-tokens/filter-list.css +1 -1
  24. package/build/browser/tokens/component-tokens/form.css +2 -1
  25. package/build/browser/tokens/component-tokens/select.css +41 -3
  26. package/build/browser/util/UserAgent.js +1 -1
  27. package/build/browser/util/UserAgent.js.map +1 -1
  28. package/build/cjs/{chunk-3O4KL6IF.cjs → chunk-2HWRLMSY.cjs} +4 -4
  29. package/build/cjs/{chunk-3O4KL6IF.cjs.map → chunk-2HWRLMSY.cjs.map} +1 -1
  30. package/build/cjs/{chunk-XIOF25EJ.cjs → chunk-6S235EGZ.cjs} +4 -4
  31. package/build/cjs/{chunk-XIOF25EJ.cjs.map → chunk-6S235EGZ.cjs.map} +1 -1
  32. package/build/cjs/{chunk-L57XFYCF.cjs → chunk-7IH3P6TD.cjs} +32 -32
  33. package/build/cjs/{chunk-L57XFYCF.cjs.map → chunk-7IH3P6TD.cjs.map} +1 -1
  34. package/build/cjs/chunk-7IHE7UEQ.cjs +11 -0
  35. package/build/cjs/{chunk-PMXTC2GG.cjs.map → chunk-7IHE7UEQ.cjs.map} +1 -1
  36. package/build/cjs/{chunk-SE32RONH.cjs → chunk-CEBLXXXP.cjs} +20 -18
  37. package/build/cjs/chunk-CEBLXXXP.cjs.map +1 -0
  38. package/build/cjs/chunk-HBOGOWOG.cjs +11 -0
  39. package/build/cjs/{chunk-BGAWWBZF.cjs.map → chunk-HBOGOWOG.cjs.map} +1 -1
  40. package/build/cjs/{chunk-CHX55EKU.cjs → chunk-HZT57W5I.cjs} +3 -3
  41. package/build/cjs/chunk-HZT57W5I.cjs.map +1 -0
  42. package/build/cjs/{chunk-HKAXPPTX.cjs → chunk-IBCF6UQP.cjs} +4 -4
  43. package/build/cjs/{chunk-HKAXPPTX.cjs.map → chunk-IBCF6UQP.cjs.map} +1 -1
  44. package/build/cjs/{chunk-3KMJ6NKF.cjs → chunk-JNSHIKCQ.cjs} +6 -6
  45. package/build/cjs/chunk-JNSHIKCQ.cjs.map +1 -0
  46. package/build/cjs/{chunk-HC3KLZHF.cjs → chunk-NSCCMDOJ.cjs} +24 -22
  47. package/build/cjs/chunk-NSCCMDOJ.cjs.map +1 -0
  48. package/build/cjs/chunk-PHR5WYLA.cjs +11 -0
  49. package/build/cjs/{chunk-KDD7P7WC.cjs.map → chunk-PHR5WYLA.cjs.map} +1 -1
  50. package/build/cjs/{chunk-NAUY35XG.cjs → chunk-RYCUDBKF.cjs} +4 -4
  51. package/build/cjs/{chunk-NAUY35XG.cjs.map → chunk-RYCUDBKF.cjs.map} +1 -1
  52. package/build/cjs/chunk-TRNARKKF.cjs +11 -0
  53. package/build/cjs/{chunk-5ATCGWBI.cjs.map → chunk-TRNARKKF.cjs.map} +1 -1
  54. package/build/cjs/{chunk-JTCX4JDR.cjs → chunk-UJ36LPYO.cjs} +4 -4
  55. package/build/cjs/{chunk-JTCX4JDR.cjs.map → chunk-UJ36LPYO.cjs.map} +1 -1
  56. package/build/cjs/{chunk-MZJSSE5Y.cjs → chunk-YQQ342H6.cjs} +4 -4
  57. package/build/cjs/{chunk-MZJSSE5Y.cjs.map → chunk-YQQ342H6.cjs.map} +1 -1
  58. package/build/cjs/{chunk-DU6A5NWO.cjs → chunk-YUBIMHU6.cjs} +11 -11
  59. package/build/cjs/{chunk-DU6A5NWO.cjs.map → chunk-YUBIMHU6.cjs.map} +1 -1
  60. package/build/cjs/public/experimental/action-form.cjs +6 -6
  61. package/build/cjs/public/experimental/action-form.css +144 -143
  62. package/build/cjs/public/experimental/action-form.css.map +1 -1
  63. package/build/cjs/public/experimental/cbac-picker.cjs +11 -11
  64. package/build/cjs/public/experimental/document-viewer.cjs +4 -4
  65. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  66. package/build/cjs/public/experimental/filter-list.cjs +16 -16
  67. package/build/cjs/public/experimental/filter-list.css +102 -102
  68. package/build/cjs/public/experimental/filter-list.css.map +1 -1
  69. package/build/cjs/public/experimental/filter-list.d.cts +60 -60
  70. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  71. package/build/cjs/public/experimental/markdown-renderer.cjs +5 -5
  72. package/build/cjs/public/experimental/object-table.cjs +24 -24
  73. package/build/cjs/public/experimental/object-table.css +143 -143
  74. package/build/cjs/public/experimental/object-table.css.map +1 -1
  75. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  76. package/build/cjs/public/experimental/spreadsheet-viewer.cjs +3 -3
  77. package/build/cjs/public/experimental/tiff-renderer.cjs +5 -5
  78. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  79. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  80. package/build/cjs/public/experimental.cjs +78 -78
  81. package/build/cjs/public/experimental.css +144 -143
  82. package/build/cjs/public/experimental.css.map +1 -1
  83. package/build/esm/action-form/FormField.js +3 -1
  84. package/build/esm/action-form/FormField.js.map +1 -1
  85. package/build/esm/action-form/FormField.module.css +1 -0
  86. package/build/esm/action-form/fields/DropdownField.js +3 -1
  87. package/build/esm/action-form/fields/DropdownField.js.map +1 -1
  88. package/build/esm/action-form/fields/DropdownField.module.css +2 -8
  89. package/build/esm/base-components/combobox/Combobox.module.css +124 -386
  90. package/build/esm/base-components/select/Select.module.css +48 -151
  91. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  92. package/build/esm/filter-list/hooks/useDualScopeAggregation.js +3 -3
  93. package/build/esm/filter-list/hooks/useDualScopeAggregation.js.map +1 -1
  94. package/build/esm/filter-list/types/LinkedFilterTypes.js +1 -1
  95. package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
  96. package/build/esm/shared/calendar/DatePicker.js +2 -2
  97. package/build/esm/shared/calendar/DatePicker.js.map +1 -1
  98. package/build/esm/shared/calendar/DateRangePicker.js +2 -2
  99. package/build/esm/shared/calendar/DateRangePicker.js.map +1 -1
  100. package/build/esm/tokens/base-tokens/base.css +10 -0
  101. package/build/esm/tokens/base-tokens/dark.css +10 -0
  102. package/build/esm/tokens/component-tokens/combobox.css +90 -6
  103. package/build/esm/tokens/component-tokens/filter-list.css +1 -1
  104. package/build/esm/tokens/component-tokens/form.css +2 -1
  105. package/build/esm/tokens/component-tokens/select.css +41 -3
  106. package/build/esm/util/UserAgent.js +1 -1
  107. package/build/esm/util/UserAgent.js.map +1 -1
  108. package/build/types/filter-list/FilterListApi.d.ts +59 -59
  109. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  110. package/build/types/filter-list/hooks/useDualScopeAggregation.d.ts +3 -3
  111. package/build/types/filter-list/types/LinkedFilterTypes.d.ts +1 -1
  112. package/docs/ActionFormOverview.md +1 -1
  113. package/docs/CSSVariables.md +170 -12
  114. package/docs/FilterList.md +14 -14
  115. package/docs/FilterListOverview.md +169 -0
  116. package/package.json +8 -8
  117. package/build/cjs/chunk-3KMJ6NKF.cjs.map +0 -1
  118. package/build/cjs/chunk-5ATCGWBI.cjs +0 -11
  119. package/build/cjs/chunk-BGAWWBZF.cjs +0 -11
  120. package/build/cjs/chunk-CHX55EKU.cjs.map +0 -1
  121. package/build/cjs/chunk-HC3KLZHF.cjs.map +0 -1
  122. package/build/cjs/chunk-KDD7P7WC.cjs +0 -11
  123. package/build/cjs/chunk-PMXTC2GG.cjs +0 -11
  124. package/build/cjs/chunk-SE32RONH.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @osdk/react-components
2
2
 
3
+ ## 0.55.1-main-685e192adc9b3378df910e70268193396d3de9eb
4
+
5
+ ### Patch Changes
6
+
7
+ - fca4dd1: Improve ActionForm accessibility and dark-mode contrast for dropdowns, date pickers, helper text, and validation states.
8
+ - 685e192: Add a `FilterListOverview.md` one-pager.
9
+ - Updated dependencies [08ba782]
10
+ - @osdk/api@2.63.0-main-685e192adc9b3378df910e70268193396d3de9eb
11
+ - @osdk/client@2.63.0-main-685e192adc9b3378df910e70268193396d3de9eb
12
+ - @osdk/react@2.63.0-main-685e192adc9b3378df910e70268193396d3de9eb
13
+
3
14
  ## 0.55.0
4
15
 
5
16
  ### Minor Changes
@@ -69,18 +69,20 @@ function InfoTip({
69
69
  label,
70
70
  children
71
71
  }) {
72
+ const ariaLabel = label != null ? `Info about ${label}` : "More information";
72
73
  return /*#__PURE__*/React.createElement(Popover.Root, null, /*#__PURE__*/React.createElement(Popover.Trigger, {
73
74
  render: /*#__PURE__*/React.createElement("span", {
74
75
  className: styles.osdkFormFieldInfoIcon
75
76
  }),
76
77
  nativeButton: false,
77
78
  openOnHover: true,
78
- "aria-label": label != null ? `Info about ${label}` : "More information"
79
+ "aria-label": ariaLabel
79
80
  }, /*#__PURE__*/React.createElement(InfoSign, {
80
81
  size: 12
81
82
  })), /*#__PURE__*/React.createElement(Popover.Portal, null, /*#__PURE__*/React.createElement(Popover.Positioner, {
82
83
  sideOffset: 4
83
84
  }, /*#__PURE__*/React.createElement(Popover.Popup, {
85
+ "aria-label": ariaLabel,
84
86
  className: styles.osdkFormFieldInfoPopup
85
87
  }, children))));
86
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FormField.js","names":["Popover","InfoSign","React","memo","styles","FormField","fieldKey","label","isRequired","helperText","helperTextPlacement","isEdited","error","onBlur","children","hasHelperText","showTooltip","showEditedTag","labelElement","createElement","className","osdkFormFieldLabel","htmlFor","osdkFormFieldRequired","labelRow","osdkFormFieldLabelRow","InfoTip","osdkFormFieldEditedTag","osdkFormField","osdkFormFieldHelperText","osdkFormFieldErrorSlot","osdkFormFieldError","role","Root","Trigger","render","osdkFormFieldInfoIcon","nativeButton","openOnHover","size","Portal","Positioner","sideOffset","Popup","osdkFormFieldInfoPopup"],"sources":["FormField.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Popover } from \"@base-ui/react/popover\";\nimport { InfoSign } from \"@blueprintjs/icons\";\nimport React, { memo } from \"react\";\n\nimport styles from \"./FormField.module.css\";\n\ninterface FormFieldProps {\n fieldKey: string;\n label?: string;\n isRequired?: boolean;\n helperText?: React.ReactNode;\n helperTextPlacement?: \"bottom\" | \"tooltip\";\n isEdited?: boolean;\n error?: string;\n onBlur?: (e: React.FocusEvent<HTMLDivElement>) => void;\n children: React.ReactNode;\n}\n\nexport const FormField: React.FC<FormFieldProps> = memo(function FormFieldFn({\n fieldKey,\n label,\n isRequired,\n helperText,\n helperTextPlacement = \"tooltip\",\n isEdited,\n error,\n onBlur,\n children,\n}: FormFieldProps): React.ReactElement {\n const hasHelperText = helperText != null && helperText !== \"\";\n const showTooltip = hasHelperText && helperTextPlacement === \"tooltip\";\n const showBottomText = hasHelperText && helperTextPlacement === \"bottom\";\n const showEditedTag = isEdited === true;\n\n const labelElement =\n label != null ? (\n <label className={styles.osdkFormFieldLabel} htmlFor={fieldKey}>\n {label}\n {isRequired === true && (\n <span className={styles.osdkFormFieldRequired} aria-label=\"required\">\n {\" \"}\n *\n </span>\n )}\n </label>\n ) : null;\n const labelRow =\n labelElement != null || showTooltip || showEditedTag ? (\n <div className={styles.osdkFormFieldLabelRow}>\n {labelElement}\n {showTooltip && <InfoTip label={label}>{helperText}</InfoTip>}\n {showEditedTag && (\n <span className={styles.osdkFormFieldEditedTag}>Edited</span>\n )}\n </div>\n ) : null;\n\n return (\n <div className={styles.osdkFormField} onBlur={onBlur}>\n {labelRow}\n {showBottomText && (\n <div className={styles.osdkFormFieldHelperText}>{helperText}</div>\n )}\n {children}\n <div\n className={styles.osdkFormFieldErrorSlot}\n // Used for testing because we want to make sure the slot is rendered to\n // verify that validation errors do not shift the layout.\n data-osdk-form-field-error-slot=\"\"\n >\n {error != null && (\n <div className={styles.osdkFormFieldError} role=\"alert\">\n {error}\n </div>\n )}\n </div>\n </div>\n );\n});\n\ninterface InfoTipProps {\n label?: string;\n children: React.ReactNode;\n}\n\n// Uses Popover (not Tooltip) because helper text may contain interactive\n// content like links that need focus management and keyboard navigation.\n// See https://base-ui.com/react/components/tooltip#infotips\nfunction InfoTip({ label, children }: InfoTipProps): React.ReactElement {\n return (\n <Popover.Root>\n <Popover.Trigger\n render={<span className={styles.osdkFormFieldInfoIcon} />}\n nativeButton={false}\n openOnHover={true}\n aria-label={label != null ? `Info about ${label}` : \"More information\"}\n >\n <InfoSign size={12} />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Positioner sideOffset={4}>\n <Popover.Popup className={styles.osdkFormFieldInfoPopup}>\n {children}\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormField.js","names":["Popover","InfoSign","React","memo","styles","FormField","fieldKey","label","isRequired","helperText","helperTextPlacement","isEdited","error","onBlur","children","hasHelperText","showTooltip","showEditedTag","labelElement","createElement","className","osdkFormFieldLabel","htmlFor","osdkFormFieldRequired","labelRow","osdkFormFieldLabelRow","InfoTip","osdkFormFieldEditedTag","osdkFormField","osdkFormFieldHelperText","osdkFormFieldErrorSlot","osdkFormFieldError","role","ariaLabel","Root","Trigger","render","osdkFormFieldInfoIcon","nativeButton","openOnHover","size","Portal","Positioner","sideOffset","Popup","osdkFormFieldInfoPopup"],"sources":["FormField.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Popover } from \"@base-ui/react/popover\";\nimport { InfoSign } from \"@blueprintjs/icons\";\nimport React, { memo } from \"react\";\n\nimport styles from \"./FormField.module.css\";\n\ninterface FormFieldProps {\n fieldKey: string;\n label?: string;\n isRequired?: boolean;\n helperText?: React.ReactNode;\n helperTextPlacement?: \"bottom\" | \"tooltip\";\n isEdited?: boolean;\n error?: string;\n onBlur?: (e: React.FocusEvent<HTMLDivElement>) => void;\n children: React.ReactNode;\n}\n\nexport const FormField: React.FC<FormFieldProps> = memo(function FormFieldFn({\n fieldKey,\n label,\n isRequired,\n helperText,\n helperTextPlacement = \"tooltip\",\n isEdited,\n error,\n onBlur,\n children,\n}: FormFieldProps): React.ReactElement {\n const hasHelperText = helperText != null && helperText !== \"\";\n const showTooltip = hasHelperText && helperTextPlacement === \"tooltip\";\n const showBottomText = hasHelperText && helperTextPlacement === \"bottom\";\n const showEditedTag = isEdited === true;\n\n const labelElement =\n label != null ? (\n <label className={styles.osdkFormFieldLabel} htmlFor={fieldKey}>\n {label}\n {isRequired === true && (\n <span className={styles.osdkFormFieldRequired} aria-label=\"required\">\n {\" \"}\n *\n </span>\n )}\n </label>\n ) : null;\n const labelRow =\n labelElement != null || showTooltip || showEditedTag ? (\n <div className={styles.osdkFormFieldLabelRow}>\n {labelElement}\n {showTooltip && <InfoTip label={label}>{helperText}</InfoTip>}\n {showEditedTag && (\n <span className={styles.osdkFormFieldEditedTag}>Edited</span>\n )}\n </div>\n ) : null;\n\n return (\n <div className={styles.osdkFormField} onBlur={onBlur}>\n {labelRow}\n {showBottomText && (\n <div className={styles.osdkFormFieldHelperText}>{helperText}</div>\n )}\n {children}\n <div\n className={styles.osdkFormFieldErrorSlot}\n // Used for testing because we want to make sure the slot is rendered to\n // verify that validation errors do not shift the layout.\n data-osdk-form-field-error-slot=\"\"\n >\n {error != null && (\n <div className={styles.osdkFormFieldError} role=\"alert\">\n {error}\n </div>\n )}\n </div>\n </div>\n );\n});\n\ninterface InfoTipProps {\n label?: string;\n children: React.ReactNode;\n}\n\n// Uses Popover (not Tooltip) because helper text may contain interactive\n// content like links that need focus management and keyboard navigation.\n// See https://base-ui.com/react/components/tooltip#infotips\nfunction InfoTip({ label, children }: InfoTipProps): React.ReactElement {\n const ariaLabel = label != null ? `Info about ${label}` : \"More information\";\n return (\n <Popover.Root>\n <Popover.Trigger\n render={<span className={styles.osdkFormFieldInfoIcon} />}\n nativeButton={false}\n openOnHover={true}\n aria-label={ariaLabel}\n >\n <InfoSign size={12} />\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Positioner sideOffset={4}>\n <Popover.Popup\n aria-label={ariaLabel}\n className={styles.osdkFormFieldInfoPopup}\n >\n {children}\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -74,6 +74,7 @@
74
74
  .osdkFormFieldInfoPopup {
75
75
  padding: var(--osdk-form-info-popup-padding);
76
76
  background-color: var(--osdk-form-info-popup-bg);
77
+ color: var(--osdk-form-info-popup-color);
77
78
  border-radius: var(--osdk-surface-border-radius);
78
79
  box-shadow: var(--osdk-form-info-popup-shadow);
79
80
  max-width: var(--osdk-form-info-popup-max-width);
@@ -285,7 +285,9 @@ const ComboboxDropdown = typedReactMemo(function ({
285
285
  }, isOpen && modal && /*#__PURE__*/React.createElement(PortalDismissLayer, {
286
286
  className: dropdownStyles.osdkComboboxDismissLayer,
287
287
  onDismiss: handleDismiss
288
- }), /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, null, isSearchable && /*#__PURE__*/React.createElement("div", {
288
+ }), /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, {
289
+ "aria-label": placeholder || "Options"
290
+ }, isSearchable && /*#__PURE__*/React.createElement("div", {
289
291
  className: comboboxStyles.osdkComboboxPopupSearchInput
290
292
  }, /*#__PURE__*/React.createElement(Combobox.SearchInput, {
291
293
  placeholder: "Search\u2026"
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownField.js","names":["CaretDown","Cross","SmallCross","Tick","React","useCallback","useState","Combobox","Select","PortalDismissLayer","typedReactMemo","comboboxStyles","selectStyles","dropdownStyles","EMPTY_ARRAY","DropdownField","isSearchable","isMultiple","itemToStringLabel","renderItemLabel","itemToKey","value","query","onQueryChange","disableClientSideFiltering","popupStatus","trailingItem","modal","rest","normalizedValue","resolvedItemToStringLabel","defaultItemToStringLabel","resolvedRenderItemLabel","getKey","item","createElement","ComboboxDropdown","_extends","SelectDropdown","id","onChange","items","isItemEqual","placeholder","portalRef","portalContainer","onBlur","disabled","open","setOpen","isOpen","renderSingleSelectedItemLabel","selectedValue","handleOpenChange","nextOpen","handleClear","handleDismiss","Root","onValueChange","onOpenChange","isItemEqualToValue","Trigger","className","osdkSelectValueContainer","Value","osdkSelectPlaceholder","role","osdkSelectClear","undefined","onMouseDown","preventTriggerOpen","onClick","osdkSelectIcon","Portal","ref","container","osdkSelectDismissLayer","onDismiss","Positioner","Popup","map","itemLabel","Item","key","label","hasValue","Array","isArray","length","handleValueChange","args","cleared","handleRemoveItem","itemToRemove","next","filter","v","renderItem","ItemIndicator","multiple","inputValue","onInputValueChange","osdkComboboxTriggerMulti","osdkComboboxValueContainer","osdkComboboxTriggerChips","osdkComboboxTriggerChip","osdkComboboxTriggerChipRemove","size","Fragment","osdkComboboxPlaceholder","osdkComboboxClear","Icon","osdkComboboxDismissLayer","osdkComboboxPopupSearchInput","SearchInput","Empty","List","Collection","e","stopPropagation","preventDefault","String"],"sources":["DropdownField.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CaretDown, Cross, SmallCross, Tick } from \"@blueprintjs/icons\";\nimport React, { useCallback, useState } from \"react\";\n\nimport { Combobox } from \"../../base-components/combobox/Combobox.js\";\nimport { Select } from \"../../base-components/select/Select.js\";\nimport { PortalDismissLayer } from \"../../shared/PortalDismissLayer.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport type { DropdownFieldProps } from \"../FormFieldApi.js\";\n\nimport comboboxStyles from \"../../base-components/combobox/Combobox.module.css\";\nimport selectStyles from \"../../base-components/select/Select.module.css\";\nimport dropdownStyles from \"./DropdownField.module.css\";\n\nconst EMPTY_ARRAY: [] = [];\n\n/**\n * SelectDropdown is only used for single-select (the multi-select path\n * always routes to ComboboxDropdown). We keep the `Multiple` generic so\n * the spread from DropdownField type-checks, but SelectDropdown never\n * reads `isMultiple`.\n */\ninterface InnerSelectProps<V, Multiple extends boolean> extends Omit<\n DropdownFieldProps<V, Multiple>,\n \"isSearchable\"\n> {\n itemToStringLabel: (item: V) => string;\n renderItemLabel: (item: V) => React.ReactNode;\n getKey: (item: V) => string;\n portalRef?: React.Ref<HTMLDivElement>;\n query?: string;\n onQueryChange?: (query: string) => void;\n onBlur?: () => void;\n modal?: boolean;\n}\n\ninterface InnerComboboxProps<\n V,\n Multiple extends boolean,\n> extends InnerSelectProps<V, Multiple> {\n isSearchable: boolean;\n disableClientSideFiltering?: boolean;\n popupStatus?: React.ReactNode;\n trailingItem?: DropdownFieldProps<V, Multiple>[\"trailingItem\"];\n}\n\nexport const DropdownField: <V, Multiple extends boolean = false>(\n props: DropdownFieldProps<V, Multiple> & { onBlur?: () => void },\n) => React.ReactElement = typedReactMemo(function DropdownFieldFn<\n V,\n Multiple extends boolean = false,\n>({\n isSearchable = false,\n isMultiple,\n itemToStringLabel,\n renderItemLabel,\n itemToKey,\n value,\n query,\n onQueryChange,\n disableClientSideFiltering,\n popupStatus,\n trailingItem,\n modal = true,\n ...rest\n}: DropdownFieldProps<V, Multiple> & {\n onBlur?: () => void;\n}): React.ReactElement {\n // Ensure always controlled from first render: multi-select needs [],\n // single-select needs null. Passing undefined switches Base UI from\n // uncontrolled to controlled and triggers a warning.\n const normalizedValue = (value ??\n (isMultiple ? EMPTY_ARRAY : null)) as typeof value;\n\n const resolvedItemToStringLabel =\n itemToStringLabel ?? defaultItemToStringLabel;\n\n const resolvedRenderItemLabel = renderItemLabel ?? resolvedItemToStringLabel;\n\n const getKey = useCallback(\n (item: V) => itemToKey?.(item) ?? resolvedItemToStringLabel(item),\n [itemToKey, resolvedItemToStringLabel],\n );\n\n // Multi-select always uses Combobox for the chip-based UI because it looks better\n if (isSearchable || isMultiple) {\n return (\n <ComboboxDropdown\n {...rest}\n isMultiple={isMultiple}\n value={normalizedValue}\n itemToStringLabel={resolvedItemToStringLabel}\n renderItemLabel={resolvedRenderItemLabel}\n getKey={getKey}\n isSearchable={isSearchable}\n query={query}\n onQueryChange={onQueryChange}\n disableClientSideFiltering={disableClientSideFiltering}\n popupStatus={popupStatus}\n trailingItem={trailingItem}\n modal={modal}\n />\n );\n }\n\n // TODO: Support trailingItem\n return (\n <SelectDropdown\n {...rest}\n value={normalizedValue}\n itemToStringLabel={resolvedItemToStringLabel}\n renderItemLabel={resolvedRenderItemLabel}\n getKey={getKey}\n modal={modal}\n />\n );\n});\n\nconst SelectDropdown = typedReactMemo(function SelectDropdownFn<\n V,\n Multiple extends boolean,\n>({\n id,\n value,\n onChange,\n items,\n itemToStringLabel,\n renderItemLabel,\n getKey,\n isItemEqual,\n placeholder,\n portalRef,\n portalContainer,\n onBlur,\n modal = true,\n disabled,\n}: InnerSelectProps<V, Multiple>): React.ReactElement {\n const [open, setOpen] = useState(false);\n const isOpen = !disabled && open;\n\n const hasValue = value != null;\n\n const renderSingleSelectedItemLabel = useCallback(\n (selectedValue: V | null) =>\n selectedValue == null ? null : renderItemLabel(selectedValue),\n [renderItemLabel],\n );\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (disabled) {\n return;\n }\n setOpen(nextOpen);\n // Mark the field as touched when the popover closes so RHF validates.\n // Opening the popover does not trigger validation.\n if (!nextOpen) {\n onBlur?.();\n }\n },\n [disabled, onBlur],\n );\n\n const handleClear = useCallback(() => {\n // SelectDropdown is always single-select, so cleared value is null.\n (onChange as ((v: V | null) => void) | undefined)?.(null);\n handleOpenChange(false);\n }, [onChange, handleOpenChange]);\n\n const handleDismiss = useCallback(() => {\n handleOpenChange(false);\n }, [handleOpenChange]);\n\n return (\n <div>\n <Select.Root\n value={value}\n onValueChange={onChange}\n open={isOpen}\n onOpenChange={handleOpenChange}\n isItemEqualToValue={isItemEqual}\n itemToStringLabel={itemToStringLabel}\n modal={modal}\n disabled={disabled}\n >\n <Select.Trigger id={id} placeholder={placeholder} disabled={disabled}>\n <div className={selectStyles.osdkSelectValueContainer}>\n <Select.Value>{renderSingleSelectedItemLabel}</Select.Value>\n {placeholder != null && (\n <span className={selectStyles.osdkSelectPlaceholder}>\n {placeholder}\n </span>\n )}\n </div>\n {hasValue && (\n <span\n role=\"button\"\n aria-label=\"Clear\"\n className={selectStyles.osdkSelectClear}\n aria-disabled={disabled || undefined}\n onMouseDown={disabled ? undefined : preventTriggerOpen}\n onClick={disabled ? undefined : handleClear}\n >\n <SmallCross />\n </span>\n )}\n <span className={selectStyles.osdkSelectIcon}>\n <CaretDown />\n </span>\n </Select.Trigger>\n <Select.Portal ref={portalRef} container={portalContainer}>\n {isOpen && modal && (\n <PortalDismissLayer\n className={dropdownStyles.osdkSelectDismissLayer}\n onDismiss={handleDismiss}\n />\n )}\n <Select.Positioner>\n <Select.Popup>\n {items.map((item) => {\n const itemLabel = itemToStringLabel(item);\n return (\n <Select.Item\n key={getKey(item)}\n value={item}\n label={itemLabel}\n aria-label={itemLabel}\n >\n {renderItemLabel(item)}\n </Select.Item>\n );\n })}\n </Select.Popup>\n </Select.Positioner>\n </Select.Portal>\n </Select.Root>\n </div>\n );\n});\n\nconst ComboboxDropdown = typedReactMemo(function ComboboxDropdownFn<\n V,\n Multiple extends boolean,\n>({\n id,\n value,\n onChange,\n items,\n itemToStringLabel,\n renderItemLabel,\n getKey,\n isItemEqual,\n isMultiple,\n isSearchable,\n placeholder,\n portalRef,\n portalContainer,\n query,\n onQueryChange,\n disableClientSideFiltering,\n popupStatus,\n trailingItem,\n onBlur,\n modal = true,\n disabled,\n}: InnerComboboxProps<V, Multiple>): React.ReactElement {\n const [open, setOpen] = useState(false);\n const isOpen = !disabled && open;\n\n const hasValue = isMultiple\n ? Array.isArray(value) && value.length > 0\n : value != null;\n\n const renderSingleSelectedItemLabel = useCallback(\n (selectedValue: V | null) =>\n selectedValue == null ? null : renderItemLabel(selectedValue),\n [renderItemLabel],\n );\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n setOpen(nextOpen);\n if (!nextOpen) {\n onBlur?.();\n }\n },\n [onBlur],\n );\n\n // Mark the field as touched on every value change so RHF revalidates\n // immediately — especially important for multi-select where the popup\n // stays open after toggling an item.\n const handleValueChange: typeof onChange = useCallback(\n (...args: Parameters<NonNullable<typeof onChange>>) => {\n onChange?.(...args);\n // Multi-select: popover stays open, so fire onBlur directly.\n // Single-select: popover closes on selection, handleOpenChange(false)\n // already fires onBlur.\n if (isMultiple) {\n onBlur?.();\n }\n },\n [onChange, onBlur, isMultiple],\n );\n\n const handleClear = useCallback(() => {\n // TypeScript can't narrow the conditional type `Multiple extends true ? V[] : V`\n // at runtime, so we cast through the known parameter type at this single call site.\n const cleared = isMultiple ? (EMPTY_ARRAY as V[]) : null;\n (handleValueChange as (v: V[] | V | null) => void)(cleared);\n // Single-select: close after clearing. Multi-select: keep open for continued selection.\n if (!isMultiple) {\n handleOpenChange(false);\n }\n }, [isMultiple, handleValueChange, handleOpenChange]);\n\n const handleRemoveItem = useCallback(\n (itemToRemove: V) => {\n if (!isMultiple || !Array.isArray(value)) {\n return;\n }\n const next = value.filter((v) =>\n isItemEqual != null\n ? !isItemEqual(v, itemToRemove)\n : v !== itemToRemove,\n );\n (handleValueChange as (v: V[] | V | null) => void)(next);\n },\n [isMultiple, value, handleValueChange, isItemEqual],\n );\n\n const handleDismiss = useCallback(() => {\n handleOpenChange(false);\n }, [handleOpenChange]);\n\n const renderItem = useCallback(\n (item: V) => {\n const itemLabel = itemToStringLabel(item);\n return (\n <Combobox.Item key={getKey(item)} value={item} aria-label={itemLabel}>\n {isMultiple && (\n <Combobox.ItemIndicator>\n <Tick />\n </Combobox.ItemIndicator>\n )}\n {renderItemLabel(item)}\n </Combobox.Item>\n );\n },\n [getKey, isMultiple, itemToStringLabel, renderItemLabel],\n );\n\n return (\n <div>\n <Combobox.Root\n value={value}\n onValueChange={handleValueChange}\n open={isOpen}\n onOpenChange={handleOpenChange}\n multiple={isMultiple}\n itemToStringLabel={itemToStringLabel}\n isItemEqualToValue={isItemEqual}\n items={items}\n inputValue={query}\n onInputValueChange={onQueryChange}\n filter={disableClientSideFiltering ? null : undefined}\n disabled={disabled}\n >\n <Combobox.Trigger\n id={id}\n disabled={disabled}\n className={\n isMultiple ? comboboxStyles.osdkComboboxTriggerMulti : undefined\n }\n >\n <div className={comboboxStyles.osdkComboboxValueContainer}>\n {isMultiple && Array.isArray(value) && value.length > 0 ? (\n <div className={comboboxStyles.osdkComboboxTriggerChips}>\n {value.map((item: V) => (\n <span\n key={getKey(item)}\n className={comboboxStyles.osdkComboboxTriggerChip}\n >\n {renderItemLabel(item)}\n <span\n role=\"button\"\n aria-label={`Remove ${itemToStringLabel(item)}`}\n className={comboboxStyles.osdkComboboxTriggerChipRemove}\n aria-disabled={disabled || undefined}\n onMouseDown={disabled ? undefined : preventTriggerOpen}\n onClick={\n disabled ? undefined : () => handleRemoveItem(item)\n }\n >\n <Cross size={12} />\n </span>\n </span>\n ))}\n </div>\n ) : (\n <>\n <Combobox.Value>{renderSingleSelectedItemLabel}</Combobox.Value>\n {!hasValue && placeholder != null && (\n <span className={comboboxStyles.osdkComboboxPlaceholder}>\n {placeholder}\n </span>\n )}\n </>\n )}\n </div>\n {hasValue && (\n <span\n role=\"button\"\n aria-label=\"Clear\"\n className={comboboxStyles.osdkComboboxClear}\n aria-disabled={disabled || undefined}\n onMouseDown={disabled ? undefined : preventTriggerOpen}\n onClick={disabled ? undefined : handleClear}\n >\n <SmallCross />\n </span>\n )}\n <Combobox.Icon>\n <CaretDown />\n </Combobox.Icon>\n </Combobox.Trigger>\n <Combobox.Portal ref={portalRef} container={portalContainer}>\n {isOpen && modal && (\n <PortalDismissLayer\n className={dropdownStyles.osdkComboboxDismissLayer}\n onDismiss={handleDismiss}\n />\n )}\n <Combobox.Positioner>\n <Combobox.Popup>\n {isSearchable && (\n <div className={comboboxStyles.osdkComboboxPopupSearchInput}>\n <Combobox.SearchInput placeholder=\"Search…\" />\n </div>\n )}\n {popupStatus}\n {/* Hide \"No results\" when popupStatus provides its own message (e.g. \"Searching…\") */}\n {popupStatus == null && (\n <Combobox.Empty>No results</Combobox.Empty>\n )}\n <Combobox.List>\n <Combobox.Collection>{renderItem}</Combobox.Collection>\n {trailingItem}\n </Combobox.List>\n </Combobox.Popup>\n </Combobox.Positioner>\n </Combobox.Portal>\n </Combobox.Root>\n </div>\n );\n});\n\n// Prevent the clear/remove click from bubbling into the trigger\n// and toggling the dropdown open/closed.\nfunction preventTriggerOpen(e: React.MouseEvent): void {\n e.stopPropagation();\n e.preventDefault();\n}\n\nfunction defaultItemToStringLabel<V>(item: V): string {\n if (item == null || typeof item !== \"object\") {\n return String(item);\n }\n if (\"label\" in item && item.label != null && typeof item.label === \"string\") {\n return item.label;\n }\n return String(item);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DropdownField.js","names":["CaretDown","Cross","SmallCross","Tick","React","useCallback","useState","Combobox","Select","PortalDismissLayer","typedReactMemo","comboboxStyles","selectStyles","dropdownStyles","EMPTY_ARRAY","DropdownField","isSearchable","isMultiple","itemToStringLabel","renderItemLabel","itemToKey","value","query","onQueryChange","disableClientSideFiltering","popupStatus","trailingItem","modal","rest","normalizedValue","resolvedItemToStringLabel","defaultItemToStringLabel","resolvedRenderItemLabel","getKey","item","createElement","ComboboxDropdown","_extends","SelectDropdown","id","onChange","items","isItemEqual","placeholder","portalRef","portalContainer","onBlur","disabled","open","setOpen","isOpen","renderSingleSelectedItemLabel","selectedValue","handleOpenChange","nextOpen","handleClear","handleDismiss","Root","onValueChange","onOpenChange","isItemEqualToValue","Trigger","className","osdkSelectValueContainer","Value","osdkSelectPlaceholder","role","osdkSelectClear","undefined","onMouseDown","preventTriggerOpen","onClick","osdkSelectIcon","Portal","ref","container","osdkSelectDismissLayer","onDismiss","Positioner","Popup","map","itemLabel","Item","key","label","hasValue","Array","isArray","length","handleValueChange","args","cleared","handleRemoveItem","itemToRemove","next","filter","v","renderItem","ItemIndicator","multiple","inputValue","onInputValueChange","osdkComboboxTriggerMulti","osdkComboboxValueContainer","osdkComboboxTriggerChips","osdkComboboxTriggerChip","osdkComboboxTriggerChipRemove","size","Fragment","osdkComboboxPlaceholder","osdkComboboxClear","Icon","osdkComboboxDismissLayer","osdkComboboxPopupSearchInput","SearchInput","Empty","List","Collection","e","stopPropagation","preventDefault","String"],"sources":["DropdownField.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CaretDown, Cross, SmallCross, Tick } from \"@blueprintjs/icons\";\nimport React, { useCallback, useState } from \"react\";\n\nimport { Combobox } from \"../../base-components/combobox/Combobox.js\";\nimport { Select } from \"../../base-components/select/Select.js\";\nimport { PortalDismissLayer } from \"../../shared/PortalDismissLayer.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport type { DropdownFieldProps } from \"../FormFieldApi.js\";\n\nimport comboboxStyles from \"../../base-components/combobox/Combobox.module.css\";\nimport selectStyles from \"../../base-components/select/Select.module.css\";\nimport dropdownStyles from \"./DropdownField.module.css\";\n\nconst EMPTY_ARRAY: [] = [];\n\n/**\n * SelectDropdown is only used for single-select (the multi-select path\n * always routes to ComboboxDropdown). We keep the `Multiple` generic so\n * the spread from DropdownField type-checks, but SelectDropdown never\n * reads `isMultiple`.\n */\ninterface InnerSelectProps<V, Multiple extends boolean> extends Omit<\n DropdownFieldProps<V, Multiple>,\n \"isSearchable\"\n> {\n itemToStringLabel: (item: V) => string;\n renderItemLabel: (item: V) => React.ReactNode;\n getKey: (item: V) => string;\n portalRef?: React.Ref<HTMLDivElement>;\n query?: string;\n onQueryChange?: (query: string) => void;\n onBlur?: () => void;\n modal?: boolean;\n}\n\ninterface InnerComboboxProps<\n V,\n Multiple extends boolean,\n> extends InnerSelectProps<V, Multiple> {\n isSearchable: boolean;\n disableClientSideFiltering?: boolean;\n popupStatus?: React.ReactNode;\n trailingItem?: DropdownFieldProps<V, Multiple>[\"trailingItem\"];\n}\n\nexport const DropdownField: <V, Multiple extends boolean = false>(\n props: DropdownFieldProps<V, Multiple> & { onBlur?: () => void },\n) => React.ReactElement = typedReactMemo(function DropdownFieldFn<\n V,\n Multiple extends boolean = false,\n>({\n isSearchable = false,\n isMultiple,\n itemToStringLabel,\n renderItemLabel,\n itemToKey,\n value,\n query,\n onQueryChange,\n disableClientSideFiltering,\n popupStatus,\n trailingItem,\n modal = true,\n ...rest\n}: DropdownFieldProps<V, Multiple> & {\n onBlur?: () => void;\n}): React.ReactElement {\n // Ensure always controlled from first render: multi-select needs [],\n // single-select needs null. Passing undefined switches Base UI from\n // uncontrolled to controlled and triggers a warning.\n const normalizedValue = (value ??\n (isMultiple ? EMPTY_ARRAY : null)) as typeof value;\n\n const resolvedItemToStringLabel =\n itemToStringLabel ?? defaultItemToStringLabel;\n\n const resolvedRenderItemLabel = renderItemLabel ?? resolvedItemToStringLabel;\n\n const getKey = useCallback(\n (item: V) => itemToKey?.(item) ?? resolvedItemToStringLabel(item),\n [itemToKey, resolvedItemToStringLabel],\n );\n\n // Multi-select always uses Combobox for the chip-based UI because it looks better\n if (isSearchable || isMultiple) {\n return (\n <ComboboxDropdown\n {...rest}\n isMultiple={isMultiple}\n value={normalizedValue}\n itemToStringLabel={resolvedItemToStringLabel}\n renderItemLabel={resolvedRenderItemLabel}\n getKey={getKey}\n isSearchable={isSearchable}\n query={query}\n onQueryChange={onQueryChange}\n disableClientSideFiltering={disableClientSideFiltering}\n popupStatus={popupStatus}\n trailingItem={trailingItem}\n modal={modal}\n />\n );\n }\n\n // TODO: Support trailingItem\n return (\n <SelectDropdown\n {...rest}\n value={normalizedValue}\n itemToStringLabel={resolvedItemToStringLabel}\n renderItemLabel={resolvedRenderItemLabel}\n getKey={getKey}\n modal={modal}\n />\n );\n});\n\nconst SelectDropdown = typedReactMemo(function SelectDropdownFn<\n V,\n Multiple extends boolean,\n>({\n id,\n value,\n onChange,\n items,\n itemToStringLabel,\n renderItemLabel,\n getKey,\n isItemEqual,\n placeholder,\n portalRef,\n portalContainer,\n onBlur,\n modal = true,\n disabled,\n}: InnerSelectProps<V, Multiple>): React.ReactElement {\n const [open, setOpen] = useState(false);\n const isOpen = !disabled && open;\n\n const hasValue = value != null;\n\n const renderSingleSelectedItemLabel = useCallback(\n (selectedValue: V | null) =>\n selectedValue == null ? null : renderItemLabel(selectedValue),\n [renderItemLabel],\n );\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (disabled) {\n return;\n }\n setOpen(nextOpen);\n // Mark the field as touched when the popover closes so RHF validates.\n // Opening the popover does not trigger validation.\n if (!nextOpen) {\n onBlur?.();\n }\n },\n [disabled, onBlur],\n );\n\n const handleClear = useCallback(() => {\n // SelectDropdown is always single-select, so cleared value is null.\n (onChange as ((v: V | null) => void) | undefined)?.(null);\n handleOpenChange(false);\n }, [onChange, handleOpenChange]);\n\n const handleDismiss = useCallback(() => {\n handleOpenChange(false);\n }, [handleOpenChange]);\n\n return (\n <div>\n <Select.Root\n value={value}\n onValueChange={onChange}\n open={isOpen}\n onOpenChange={handleOpenChange}\n isItemEqualToValue={isItemEqual}\n itemToStringLabel={itemToStringLabel}\n modal={modal}\n disabled={disabled}\n >\n <Select.Trigger id={id} placeholder={placeholder} disabled={disabled}>\n <div className={selectStyles.osdkSelectValueContainer}>\n <Select.Value>{renderSingleSelectedItemLabel}</Select.Value>\n {placeholder != null && (\n <span className={selectStyles.osdkSelectPlaceholder}>\n {placeholder}\n </span>\n )}\n </div>\n {hasValue && (\n <span\n role=\"button\"\n aria-label=\"Clear\"\n className={selectStyles.osdkSelectClear}\n aria-disabled={disabled || undefined}\n onMouseDown={disabled ? undefined : preventTriggerOpen}\n onClick={disabled ? undefined : handleClear}\n >\n <SmallCross />\n </span>\n )}\n <span className={selectStyles.osdkSelectIcon}>\n <CaretDown />\n </span>\n </Select.Trigger>\n <Select.Portal ref={portalRef} container={portalContainer}>\n {isOpen && modal && (\n <PortalDismissLayer\n className={dropdownStyles.osdkSelectDismissLayer}\n onDismiss={handleDismiss}\n />\n )}\n <Select.Positioner>\n <Select.Popup>\n {items.map((item) => {\n const itemLabel = itemToStringLabel(item);\n return (\n <Select.Item\n key={getKey(item)}\n value={item}\n label={itemLabel}\n aria-label={itemLabel}\n >\n {renderItemLabel(item)}\n </Select.Item>\n );\n })}\n </Select.Popup>\n </Select.Positioner>\n </Select.Portal>\n </Select.Root>\n </div>\n );\n});\n\nconst ComboboxDropdown = typedReactMemo(function ComboboxDropdownFn<\n V,\n Multiple extends boolean,\n>({\n id,\n value,\n onChange,\n items,\n itemToStringLabel,\n renderItemLabel,\n getKey,\n isItemEqual,\n isMultiple,\n isSearchable,\n placeholder,\n portalRef,\n portalContainer,\n query,\n onQueryChange,\n disableClientSideFiltering,\n popupStatus,\n trailingItem,\n onBlur,\n modal = true,\n disabled,\n}: InnerComboboxProps<V, Multiple>): React.ReactElement {\n const [open, setOpen] = useState(false);\n const isOpen = !disabled && open;\n\n const hasValue = isMultiple\n ? Array.isArray(value) && value.length > 0\n : value != null;\n\n const renderSingleSelectedItemLabel = useCallback(\n (selectedValue: V | null) =>\n selectedValue == null ? null : renderItemLabel(selectedValue),\n [renderItemLabel],\n );\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n setOpen(nextOpen);\n if (!nextOpen) {\n onBlur?.();\n }\n },\n [onBlur],\n );\n\n // Mark the field as touched on every value change so RHF revalidates\n // immediately — especially important for multi-select where the popup\n // stays open after toggling an item.\n const handleValueChange: typeof onChange = useCallback(\n (...args: Parameters<NonNullable<typeof onChange>>) => {\n onChange?.(...args);\n // Multi-select: popover stays open, so fire onBlur directly.\n // Single-select: popover closes on selection, handleOpenChange(false)\n // already fires onBlur.\n if (isMultiple) {\n onBlur?.();\n }\n },\n [onChange, onBlur, isMultiple],\n );\n\n const handleClear = useCallback(() => {\n // TypeScript can't narrow the conditional type `Multiple extends true ? V[] : V`\n // at runtime, so we cast through the known parameter type at this single call site.\n const cleared = isMultiple ? (EMPTY_ARRAY as V[]) : null;\n (handleValueChange as (v: V[] | V | null) => void)(cleared);\n // Single-select: close after clearing. Multi-select: keep open for continued selection.\n if (!isMultiple) {\n handleOpenChange(false);\n }\n }, [isMultiple, handleValueChange, handleOpenChange]);\n\n const handleRemoveItem = useCallback(\n (itemToRemove: V) => {\n if (!isMultiple || !Array.isArray(value)) {\n return;\n }\n const next = value.filter((v) =>\n isItemEqual != null\n ? !isItemEqual(v, itemToRemove)\n : v !== itemToRemove,\n );\n (handleValueChange as (v: V[] | V | null) => void)(next);\n },\n [isMultiple, value, handleValueChange, isItemEqual],\n );\n\n const handleDismiss = useCallback(() => {\n handleOpenChange(false);\n }, [handleOpenChange]);\n\n const renderItem = useCallback(\n (item: V) => {\n const itemLabel = itemToStringLabel(item);\n return (\n <Combobox.Item key={getKey(item)} value={item} aria-label={itemLabel}>\n {isMultiple && (\n <Combobox.ItemIndicator>\n <Tick />\n </Combobox.ItemIndicator>\n )}\n {renderItemLabel(item)}\n </Combobox.Item>\n );\n },\n [getKey, isMultiple, itemToStringLabel, renderItemLabel],\n );\n\n return (\n <div>\n <Combobox.Root\n value={value}\n onValueChange={handleValueChange}\n open={isOpen}\n onOpenChange={handleOpenChange}\n multiple={isMultiple}\n itemToStringLabel={itemToStringLabel}\n isItemEqualToValue={isItemEqual}\n items={items}\n inputValue={query}\n onInputValueChange={onQueryChange}\n filter={disableClientSideFiltering ? null : undefined}\n disabled={disabled}\n >\n <Combobox.Trigger\n id={id}\n disabled={disabled}\n className={\n isMultiple ? comboboxStyles.osdkComboboxTriggerMulti : undefined\n }\n >\n <div className={comboboxStyles.osdkComboboxValueContainer}>\n {isMultiple && Array.isArray(value) && value.length > 0 ? (\n <div className={comboboxStyles.osdkComboboxTriggerChips}>\n {value.map((item: V) => (\n <span\n key={getKey(item)}\n className={comboboxStyles.osdkComboboxTriggerChip}\n >\n {renderItemLabel(item)}\n <span\n role=\"button\"\n aria-label={`Remove ${itemToStringLabel(item)}`}\n className={comboboxStyles.osdkComboboxTriggerChipRemove}\n aria-disabled={disabled || undefined}\n onMouseDown={disabled ? undefined : preventTriggerOpen}\n onClick={\n disabled ? undefined : () => handleRemoveItem(item)\n }\n >\n <Cross size={12} />\n </span>\n </span>\n ))}\n </div>\n ) : (\n <>\n <Combobox.Value>{renderSingleSelectedItemLabel}</Combobox.Value>\n {!hasValue && placeholder != null && (\n <span className={comboboxStyles.osdkComboboxPlaceholder}>\n {placeholder}\n </span>\n )}\n </>\n )}\n </div>\n {hasValue && (\n <span\n role=\"button\"\n aria-label=\"Clear\"\n className={comboboxStyles.osdkComboboxClear}\n aria-disabled={disabled || undefined}\n onMouseDown={disabled ? undefined : preventTriggerOpen}\n onClick={disabled ? undefined : handleClear}\n >\n <SmallCross />\n </span>\n )}\n <Combobox.Icon>\n <CaretDown />\n </Combobox.Icon>\n </Combobox.Trigger>\n <Combobox.Portal ref={portalRef} container={portalContainer}>\n {isOpen && modal && (\n <PortalDismissLayer\n className={dropdownStyles.osdkComboboxDismissLayer}\n onDismiss={handleDismiss}\n />\n )}\n <Combobox.Positioner>\n <Combobox.Popup aria-label={placeholder || \"Options\"}>\n {isSearchable && (\n <div className={comboboxStyles.osdkComboboxPopupSearchInput}>\n <Combobox.SearchInput placeholder=\"Search…\" />\n </div>\n )}\n {popupStatus}\n {/* Hide \"No results\" when popupStatus provides its own message (e.g. \"Searching…\") */}\n {popupStatus == null && (\n <Combobox.Empty>No results</Combobox.Empty>\n )}\n <Combobox.List>\n <Combobox.Collection>{renderItem}</Combobox.Collection>\n {trailingItem}\n </Combobox.List>\n </Combobox.Popup>\n </Combobox.Positioner>\n </Combobox.Portal>\n </Combobox.Root>\n </div>\n );\n});\n\n// Prevent the clear/remove click from bubbling into the trigger\n// and toggling the dropdown open/closed.\nfunction preventTriggerOpen(e: React.MouseEvent): void {\n e.stopPropagation();\n e.preventDefault();\n}\n\nfunction defaultItemToStringLabel<V>(item: V): string {\n if (item == null || typeof item !== \"object\") {\n return String(item);\n }\n if (\"label\" in item && item.label != null && typeof item.label === \"string\") {\n return item.label;\n }\n return String(item);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -15,15 +15,9 @@
15
15
  */
16
16
 
17
17
  .osdkSelectDismissLayer {
18
- --osdk-portal-dismiss-layer-z-index: var(
19
- --osdk-select-z-index,
20
- var(--osdk-surface-z-index-3)
21
- );
18
+ --osdk-portal-dismiss-layer-z-index: var(--osdk-select-z-index);
22
19
  }
23
20
 
24
21
  .osdkComboboxDismissLayer {
25
- --osdk-portal-dismiss-layer-z-index: var(
26
- --osdk-combobox-z-index,
27
- var(--osdk-surface-z-index-3)
28
- );
22
+ --osdk-portal-dismiss-layer-z-index: var(--osdk-combobox-z-index);
29
23
  }