@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.
- package/CHANGELOG.md +11 -0
- package/build/browser/action-form/FormField.js +3 -1
- package/build/browser/action-form/FormField.js.map +1 -1
- package/build/browser/action-form/FormField.module.css +1 -0
- package/build/browser/action-form/fields/DropdownField.js +3 -1
- package/build/browser/action-form/fields/DropdownField.js.map +1 -1
- package/build/browser/action-form/fields/DropdownField.module.css +2 -8
- package/build/browser/base-components/combobox/Combobox.module.css +124 -386
- package/build/browser/base-components/select/Select.module.css +48 -151
- package/build/browser/filter-list/FilterListApi.js.map +1 -1
- package/build/browser/filter-list/hooks/useDualScopeAggregation.js +3 -3
- package/build/browser/filter-list/hooks/useDualScopeAggregation.js.map +1 -1
- package/build/browser/filter-list/types/LinkedFilterTypes.js +1 -1
- package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
- package/build/browser/shared/calendar/DatePicker.js +2 -2
- package/build/browser/shared/calendar/DatePicker.js.map +1 -1
- package/build/browser/shared/calendar/DateRangePicker.js +2 -2
- package/build/browser/shared/calendar/DateRangePicker.js.map +1 -1
- package/build/browser/styles.css +328 -556
- package/build/browser/tokens/base-tokens/base.css +10 -0
- package/build/browser/tokens/base-tokens/dark.css +10 -0
- package/build/browser/tokens/component-tokens/combobox.css +90 -6
- package/build/browser/tokens/component-tokens/filter-list.css +1 -1
- package/build/browser/tokens/component-tokens/form.css +2 -1
- package/build/browser/tokens/component-tokens/select.css +41 -3
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/{chunk-3O4KL6IF.cjs → chunk-2HWRLMSY.cjs} +4 -4
- package/build/cjs/{chunk-3O4KL6IF.cjs.map → chunk-2HWRLMSY.cjs.map} +1 -1
- package/build/cjs/{chunk-XIOF25EJ.cjs → chunk-6S235EGZ.cjs} +4 -4
- package/build/cjs/{chunk-XIOF25EJ.cjs.map → chunk-6S235EGZ.cjs.map} +1 -1
- package/build/cjs/{chunk-L57XFYCF.cjs → chunk-7IH3P6TD.cjs} +32 -32
- package/build/cjs/{chunk-L57XFYCF.cjs.map → chunk-7IH3P6TD.cjs.map} +1 -1
- package/build/cjs/chunk-7IHE7UEQ.cjs +11 -0
- package/build/cjs/{chunk-PMXTC2GG.cjs.map → chunk-7IHE7UEQ.cjs.map} +1 -1
- package/build/cjs/{chunk-SE32RONH.cjs → chunk-CEBLXXXP.cjs} +20 -18
- package/build/cjs/chunk-CEBLXXXP.cjs.map +1 -0
- package/build/cjs/chunk-HBOGOWOG.cjs +11 -0
- package/build/cjs/{chunk-BGAWWBZF.cjs.map → chunk-HBOGOWOG.cjs.map} +1 -1
- package/build/cjs/{chunk-CHX55EKU.cjs → chunk-HZT57W5I.cjs} +3 -3
- package/build/cjs/chunk-HZT57W5I.cjs.map +1 -0
- package/build/cjs/{chunk-HKAXPPTX.cjs → chunk-IBCF6UQP.cjs} +4 -4
- package/build/cjs/{chunk-HKAXPPTX.cjs.map → chunk-IBCF6UQP.cjs.map} +1 -1
- package/build/cjs/{chunk-3KMJ6NKF.cjs → chunk-JNSHIKCQ.cjs} +6 -6
- package/build/cjs/chunk-JNSHIKCQ.cjs.map +1 -0
- package/build/cjs/{chunk-HC3KLZHF.cjs → chunk-NSCCMDOJ.cjs} +24 -22
- package/build/cjs/chunk-NSCCMDOJ.cjs.map +1 -0
- package/build/cjs/chunk-PHR5WYLA.cjs +11 -0
- package/build/cjs/{chunk-KDD7P7WC.cjs.map → chunk-PHR5WYLA.cjs.map} +1 -1
- package/build/cjs/{chunk-NAUY35XG.cjs → chunk-RYCUDBKF.cjs} +4 -4
- package/build/cjs/{chunk-NAUY35XG.cjs.map → chunk-RYCUDBKF.cjs.map} +1 -1
- package/build/cjs/chunk-TRNARKKF.cjs +11 -0
- package/build/cjs/{chunk-5ATCGWBI.cjs.map → chunk-TRNARKKF.cjs.map} +1 -1
- package/build/cjs/{chunk-JTCX4JDR.cjs → chunk-UJ36LPYO.cjs} +4 -4
- package/build/cjs/{chunk-JTCX4JDR.cjs.map → chunk-UJ36LPYO.cjs.map} +1 -1
- package/build/cjs/{chunk-MZJSSE5Y.cjs → chunk-YQQ342H6.cjs} +4 -4
- package/build/cjs/{chunk-MZJSSE5Y.cjs.map → chunk-YQQ342H6.cjs.map} +1 -1
- package/build/cjs/{chunk-DU6A5NWO.cjs → chunk-YUBIMHU6.cjs} +11 -11
- package/build/cjs/{chunk-DU6A5NWO.cjs.map → chunk-YUBIMHU6.cjs.map} +1 -1
- package/build/cjs/public/experimental/action-form.cjs +6 -6
- package/build/cjs/public/experimental/action-form.css +144 -143
- package/build/cjs/public/experimental/action-form.css.map +1 -1
- package/build/cjs/public/experimental/cbac-picker.cjs +11 -11
- package/build/cjs/public/experimental/document-viewer.cjs +4 -4
- package/build/cjs/public/experimental/email-viewer.cjs +3 -3
- package/build/cjs/public/experimental/filter-list.cjs +16 -16
- package/build/cjs/public/experimental/filter-list.css +102 -102
- package/build/cjs/public/experimental/filter-list.css.map +1 -1
- package/build/cjs/public/experimental/filter-list.d.cts +60 -60
- package/build/cjs/public/experimental/image-viewer.cjs +3 -3
- package/build/cjs/public/experimental/markdown-renderer.cjs +5 -5
- package/build/cjs/public/experimental/object-table.cjs +24 -24
- package/build/cjs/public/experimental/object-table.css +143 -143
- package/build/cjs/public/experimental/object-table.css.map +1 -1
- package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
- package/build/cjs/public/experimental/spreadsheet-viewer.cjs +3 -3
- package/build/cjs/public/experimental/tiff-renderer.cjs +5 -5
- package/build/cjs/public/experimental/video-viewer.cjs +3 -3
- package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
- package/build/cjs/public/experimental.cjs +78 -78
- package/build/cjs/public/experimental.css +144 -143
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/esm/action-form/FormField.js +3 -1
- package/build/esm/action-form/FormField.js.map +1 -1
- package/build/esm/action-form/FormField.module.css +1 -0
- package/build/esm/action-form/fields/DropdownField.js +3 -1
- package/build/esm/action-form/fields/DropdownField.js.map +1 -1
- package/build/esm/action-form/fields/DropdownField.module.css +2 -8
- package/build/esm/base-components/combobox/Combobox.module.css +124 -386
- package/build/esm/base-components/select/Select.module.css +48 -151
- package/build/esm/filter-list/FilterListApi.js.map +1 -1
- package/build/esm/filter-list/hooks/useDualScopeAggregation.js +3 -3
- package/build/esm/filter-list/hooks/useDualScopeAggregation.js.map +1 -1
- package/build/esm/filter-list/types/LinkedFilterTypes.js +1 -1
- package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
- package/build/esm/shared/calendar/DatePicker.js +2 -2
- package/build/esm/shared/calendar/DatePicker.js.map +1 -1
- package/build/esm/shared/calendar/DateRangePicker.js +2 -2
- package/build/esm/shared/calendar/DateRangePicker.js.map +1 -1
- package/build/esm/tokens/base-tokens/base.css +10 -0
- package/build/esm/tokens/base-tokens/dark.css +10 -0
- package/build/esm/tokens/component-tokens/combobox.css +90 -6
- package/build/esm/tokens/component-tokens/filter-list.css +1 -1
- package/build/esm/tokens/component-tokens/form.css +2 -1
- package/build/esm/tokens/component-tokens/select.css +41 -3
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/filter-list/FilterListApi.d.ts +59 -59
- package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useDualScopeAggregation.d.ts +3 -3
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts +1 -1
- package/docs/ActionFormOverview.md +1 -1
- package/docs/CSSVariables.md +170 -12
- package/docs/FilterList.md +14 -14
- package/docs/FilterListOverview.md +169 -0
- package/package.json +8 -8
- package/build/cjs/chunk-3KMJ6NKF.cjs.map +0 -1
- package/build/cjs/chunk-5ATCGWBI.cjs +0 -11
- package/build/cjs/chunk-BGAWWBZF.cjs +0 -11
- package/build/cjs/chunk-CHX55EKU.cjs.map +0 -1
- package/build/cjs/chunk-HC3KLZHF.cjs.map +0 -1
- package/build/cjs/chunk-KDD7P7WC.cjs +0 -11
- package/build/cjs/chunk-PMXTC2GG.cjs +0 -11
- 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":
|
|
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={
|
|
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,
|
|
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
|
}
|