@deephaven/components 1.20.0 → 1.21.1

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 (87) hide show
  1. package/dist/AutoResizeTextarea.d.ts +1 -1
  2. package/dist/AutoResizeTextarea.d.ts.map +1 -1
  3. package/dist/AutoResizeTextarea.js +32 -17
  4. package/dist/AutoResizeTextarea.js.map +1 -1
  5. package/dist/dialogs/ActionButtonDialogTrigger.d.ts +1 -1
  6. package/dist/dialogs/ActionButtonDialogTrigger.d.ts.map +1 -1
  7. package/dist/dialogs/ActionButtonDialogTrigger.js.map +1 -1
  8. package/dist/spectrum/comboBox/ComboBox.d.ts +1 -1
  9. package/dist/spectrum/index.d.ts +1 -0
  10. package/dist/spectrum/index.d.ts.map +1 -1
  11. package/dist/spectrum/index.js +1 -0
  12. package/dist/spectrum/index.js.map +1 -1
  13. package/dist/spectrum/listView/ListView.d.ts +1 -1
  14. package/dist/spectrum/listView/ListView.d.ts.map +1 -1
  15. package/dist/spectrum/listView/ListView.js.map +1 -1
  16. package/dist/spectrum/multiSelect/MultiSelect.css +326 -0
  17. package/dist/spectrum/multiSelect/MultiSelect.css.map +1 -0
  18. package/dist/spectrum/multiSelect/MultiSelect.d.ts +7 -0
  19. package/dist/spectrum/multiSelect/MultiSelect.d.ts.map +1 -0
  20. package/dist/spectrum/multiSelect/MultiSelect.js +445 -0
  21. package/dist/spectrum/multiSelect/MultiSelect.js.map +1 -0
  22. package/dist/spectrum/multiSelect/MultiSelectListBox.d.ts +29 -0
  23. package/dist/spectrum/multiSelect/MultiSelectListBox.d.ts.map +1 -0
  24. package/dist/spectrum/multiSelect/MultiSelectListBox.js +41 -0
  25. package/dist/spectrum/multiSelect/MultiSelectListBox.js.map +1 -0
  26. package/dist/spectrum/multiSelect/MultiSelectNormalized.d.ts +8 -0
  27. package/dist/spectrum/multiSelect/MultiSelectNormalized.d.ts.map +1 -0
  28. package/dist/spectrum/multiSelect/MultiSelectNormalized.js +37 -0
  29. package/dist/spectrum/multiSelect/MultiSelectNormalized.js.map +1 -0
  30. package/dist/spectrum/multiSelect/MultiSelectProps.d.ts +121 -0
  31. package/dist/spectrum/multiSelect/MultiSelectProps.d.ts.map +1 -0
  32. package/dist/spectrum/multiSelect/MultiSelectProps.js +2 -0
  33. package/dist/spectrum/multiSelect/MultiSelectProps.js.map +1 -0
  34. package/dist/spectrum/multiSelect/MultiSelectTag.d.ts +14 -0
  35. package/dist/spectrum/multiSelect/MultiSelectTag.d.ts.map +1 -0
  36. package/dist/spectrum/multiSelect/MultiSelectTag.js +36 -0
  37. package/dist/spectrum/multiSelect/MultiSelectTag.js.map +1 -0
  38. package/dist/spectrum/multiSelect/index.d.ts +4 -0
  39. package/dist/spectrum/multiSelect/index.d.ts.map +1 -0
  40. package/dist/spectrum/multiSelect/index.js +4 -0
  41. package/dist/spectrum/multiSelect/index.js.map +1 -0
  42. package/dist/spectrum/multiSelect/multiSelectUtils.d.ts +53 -0
  43. package/dist/spectrum/multiSelect/multiSelectUtils.d.ts.map +1 -0
  44. package/dist/spectrum/multiSelect/multiSelectUtils.js +166 -0
  45. package/dist/spectrum/multiSelect/multiSelectUtils.js.map +1 -0
  46. package/dist/spectrum/multiSelect/useMultiSelectFilter.d.ts +27 -0
  47. package/dist/spectrum/multiSelect/useMultiSelectFilter.d.ts.map +1 -0
  48. package/dist/spectrum/multiSelect/useMultiSelectFilter.js +51 -0
  49. package/dist/spectrum/multiSelect/useMultiSelectFilter.js.map +1 -0
  50. package/dist/spectrum/multiSelect/useMultiSelectKeyboard.d.ts +40 -0
  51. package/dist/spectrum/multiSelect/useMultiSelectKeyboard.d.ts.map +1 -0
  52. package/dist/spectrum/multiSelect/useMultiSelectKeyboard.js +200 -0
  53. package/dist/spectrum/multiSelect/useMultiSelectKeyboard.js.map +1 -0
  54. package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.d.ts +11 -0
  55. package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.d.ts.map +1 -0
  56. package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.js +44 -0
  57. package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.js.map +1 -0
  58. package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.d.ts +21 -0
  59. package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.d.ts.map +1 -0
  60. package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.js +83 -0
  61. package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.js.map +1 -0
  62. package/dist/spectrum/multiSelect/useMultiSelectScrollListener.d.ts +17 -0
  63. package/dist/spectrum/multiSelect/useMultiSelectScrollListener.d.ts.map +1 -0
  64. package/dist/spectrum/multiSelect/useMultiSelectScrollListener.js +55 -0
  65. package/dist/spectrum/multiSelect/useMultiSelectScrollListener.js.map +1 -0
  66. package/dist/spectrum/multiSelect/useMultiSelectState.d.ts +26 -0
  67. package/dist/spectrum/multiSelect/useMultiSelectState.d.ts.map +1 -0
  68. package/dist/spectrum/multiSelect/useMultiSelectState.js +67 -0
  69. package/dist/spectrum/multiSelect/useMultiSelectState.js.map +1 -0
  70. package/dist/spectrum/overlays.d.ts +1 -1
  71. package/dist/spectrum/overlays.d.ts.map +1 -1
  72. package/dist/spectrum/overlays.js.map +1 -1
  73. package/dist/spectrum/picker/Picker.d.ts +1 -1
  74. package/dist/spectrum/picker/PickerProps.d.ts +1 -1
  75. package/dist/spectrum/picker/PickerProps.d.ts.map +1 -1
  76. package/dist/spectrum/picker/PickerProps.js.map +1 -1
  77. package/dist/spectrum/picker/usePickerProps.js +1 -1
  78. package/dist/spectrum/picker/usePickerProps.js.map +1 -1
  79. package/dist/spectrum/utils/itemWrapperUtils.d.ts +1 -1
  80. package/dist/spectrum/utils/itemWrapperUtils.d.ts.map +1 -1
  81. package/dist/spectrum/utils/itemWrapperUtils.js +3 -0
  82. package/dist/spectrum/utils/itemWrapperUtils.js.map +1 -1
  83. package/dist/spectrum/utils/themeUtils.d.ts +3 -3
  84. package/dist/spectrum/utils/useStringifiedMultiSelection.d.ts.map +1 -1
  85. package/dist/spectrum/utils/useStringifiedMultiSelection.js +12 -1
  86. package/dist/spectrum/utils/useStringifiedMultiSelection.js.map +1 -1
  87. package/package.json +18 -11
@@ -12,7 +12,7 @@ interface AutoResizeTextareaProps {
12
12
  }
13
13
  /**
14
14
  * Makes a textarea that auto resizes based on contents, its height grows with new lines.
15
- * If a delimeter is set, such as " -" or " ", as used by jvm args or env vars
15
+ * If a delimiter is set, such as " -" or " ", as used by jvm args or env vars
16
16
  * then the field will also "explode" the value by the delimiter over new lines
17
17
  * on focus, and implode on blur. By default, it doesn't word wrap.
18
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AutoResizeTextarea.d.ts","sourceRoot":"","sources":["../src/AutoResizeTextarea.tsx"],"names":[],"mappings":"AAGA,OAAO,2BAA2B,CAAC;AAEnC,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,iBAAS,kBAAkB,CAAC,EAC1B,SAAc,EACd,KAAK,EAAE,UAAU,EACjB,QAAQ,EACR,UAAkB,EAClB,WAAgB,EAChB,QAAgB,EAChB,SAAc,EACd,EAAO,EACP,aAAa,EAAE,UAAU,GAC1B,EAAE,uBAAuB,GAAG,GAAG,CAAC,OAAO,CA8GvC;AAED,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"AutoResizeTextarea.d.ts","sourceRoot":"","sources":["../src/AutoResizeTextarea.tsx"],"names":[],"mappings":"AAGA,OAAO,2BAA2B,CAAC;AAEnC,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAqBD;;;;;GAKG;AACH,iBAAS,kBAAkB,CAAC,EAC1B,SAAc,EACd,KAAK,EAAE,UAAU,EACjB,QAAQ,EACR,UAAkB,EAClB,WAAgB,EAChB,QAAgB,EAChB,SAAc,EACd,EAAO,EACP,aAAa,EAAE,UAAU,GAC1B,EAAE,uBAAuB,GAAG,GAAG,CAAC,OAAO,CAyGvC;AAED,eAAe,kBAAkB,CAAC"}
@@ -2,9 +2,21 @@ import React, { useState, useRef, useEffect } from 'react';
2
2
  import classNames from 'classnames';
3
3
  import "./AutoResizeTextarea.css";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
+ function implode(input) {
6
+ return input.split('\n').map(string => string.trim()).filter(string => string) // remove empty strings (e.g. from trailing newlines)
7
+ .join(' ');
8
+ }
9
+ function explode(input, delimiter) {
10
+ // split by delimiter, commonly " " or " -"
11
+ // strip empty strings (if delimiter is space, and there are multiple spaces in a row)
12
+ // and join with new line and a trimmed delimiter (get rid of leading spaces)
13
+ return input.trim().split(delimiter).filter(string => string) // remove empty strings
14
+ .join("\n".concat(delimiter.trim()));
15
+ }
16
+
5
17
  /**
6
18
  * Makes a textarea that auto resizes based on contents, its height grows with new lines.
7
- * If a delimeter is set, such as " -" or " ", as used by jvm args or env vars
19
+ * If a delimiter is set, such as " -" or " ", as used by jvm args or env vars
8
20
  * then the field will also "explode" the value by the delimiter over new lines
9
21
  * on focus, and implode on blur. By default, it doesn't word wrap.
10
22
  */
@@ -23,20 +35,18 @@ function AutoResizeTextarea(_ref) {
23
35
  var [value, setValue] = useState(propsValue);
24
36
  var [isPastedChange, setIsPastedChange] = useState(false);
25
37
  var element = useRef(null);
38
+ var isFocused = useRef(false);
39
+ var valueRef = useRef(value);
40
+ valueRef.current = value;
26
41
  useEffect(function syncStateWithProp() {
27
- // keep state value in sync with prop changes
28
- setValue(propsValue);
29
- }, [propsValue]);
30
- function explode(input) {
31
- // split by delimiter, commonly " " or " -"
32
- // strip empty strings (if delimiter is space, and there are multiple spaces in a row)
33
- // and join with new line and a trimmed delimeter (get rid of leading spaces)
34
- return input.trim().split(delimiter).filter(string => string) // remove empty strings
35
- .join("\n".concat(delimiter.trim()));
36
- }
37
- function implode(input) {
38
- return input.split('\n').map(string => string.trim()).join(' ');
39
- }
42
+ if (!isFocused.current || !delimiter) {
43
+ // When not focused (or no delimiter), always sync to the new prop value.
44
+ setValue(propsValue);
45
+ } else if (implode(valueRef.current) !== implode(propsValue)) {
46
+ // When focused with delimiter, only update if the imploded value changed to prevent clobbering delimiters
47
+ setValue(explode(propsValue, delimiter));
48
+ }
49
+ }, [propsValue, delimiter]);
40
50
  function reCalculateLayout() {
41
51
  if (!element.current) {
42
52
  return;
@@ -49,18 +59,22 @@ function AutoResizeTextarea(_ref) {
49
59
  function handleChange(event) {
50
60
  var newValue = event.target.value;
51
61
  if (isPastedChange) {
52
- if (delimiter) newValue = explode(newValue);
62
+ if (delimiter) newValue = explode(newValue, delimiter);
53
63
  setIsPastedChange(false);
54
64
  }
55
65
  setValue(newValue);
56
- onChange(newValue);
66
+ // If there is a delimiter, the onChange value should always be the imploded version
67
+ // to prevent mismatch when exiting without triggering onBlur
68
+ // The exploded version is display only
69
+ onChange(delimiter ? implode(newValue) : newValue);
57
70
  }
58
71
  function handleFocus() {
59
72
  if (!element.current) {
60
73
  return;
61
74
  }
75
+ isFocused.current = true;
62
76
  if (delimiter) {
63
- setValue(explode(value));
77
+ setValue(explode(value, delimiter));
64
78
  reCalculateLayout();
65
79
  }
66
80
  element.current.scrollLeft = 0;
@@ -76,6 +90,7 @@ function AutoResizeTextarea(_ref) {
76
90
  element.current.focus();
77
91
  }
78
92
  function handleBlur() {
93
+ isFocused.current = false;
79
94
  if (delimiter) {
80
95
  setValue(implode(value));
81
96
  onChange(implode(value));
@@ -1 +1 @@
1
- {"version":3,"file":"AutoResizeTextarea.js","names":["React","useState","useRef","useEffect","classNames","jsx","_jsx","AutoResizeTextarea","_ref","className","value","propsValue","onChange","spellCheck","placeholder","disabled","delimiter","id","dataTestId","setValue","isPastedChange","setIsPastedChange","element","syncStateWithProp","explode","input","trim","split","filter","string","join","concat","implode","map","reCalculateLayout","current","style","height","resizedHeight","scrollHeight","offsetHeight","clientHeight","handleChange","event","newValue","target","handleFocus","scrollLeft","handleMouseDown","document","activeElement","focus","handleBlur","handlePaste","reCalculate","ref","rows","onFocus","onMouseDown","onBlur","onPaste"],"sources":["../src/AutoResizeTextarea.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport classNames from 'classnames';\n\nimport './AutoResizeTextarea.scss';\n\ninterface AutoResizeTextareaProps {\n value: string;\n onChange: (val: string) => void;\n className?: string;\n spellCheck?: boolean;\n placeholder?: string;\n disabled?: boolean;\n delimiter?: string;\n id?: string;\n 'data-testid'?: string;\n}\n\n/**\n * Makes a textarea that auto resizes based on contents, its height grows with new lines.\n * If a delimeter is set, such as \" -\" or \" \", as used by jvm args or env vars\n * then the field will also \"explode\" the value by the delimiter over new lines\n * on focus, and implode on blur. By default, it doesn't word wrap.\n */\nfunction AutoResizeTextarea({\n className = '',\n value: propsValue,\n onChange,\n spellCheck = false,\n placeholder = '',\n disabled = false,\n delimiter = '',\n id = '',\n 'data-testid': dataTestId,\n}: AutoResizeTextareaProps): JSX.Element {\n const [value, setValue] = useState(propsValue);\n const [isPastedChange, setIsPastedChange] = useState(false);\n const element = useRef<HTMLTextAreaElement>(null);\n\n useEffect(\n function syncStateWithProp() {\n // keep state value in sync with prop changes\n setValue(propsValue);\n },\n [propsValue]\n );\n\n function explode(input: string): string {\n // split by delimiter, commonly \" \" or \" -\"\n // strip empty strings (if delimiter is space, and there are multiple spaces in a row)\n // and join with new line and a trimmed delimeter (get rid of leading spaces)\n return input\n .trim()\n .split(delimiter)\n .filter(string => string) // remove empty strings\n .join(`\\n${delimiter.trim()}`);\n }\n\n function implode(input: string): string {\n return input\n .split('\\n')\n .map(string => string.trim())\n .join(' ');\n }\n\n function reCalculateLayout(): void {\n if (!element.current) {\n return;\n }\n element.current.style.height = '0'; // shrink component to get scrollHeight\n const resizedHeight =\n element.current.scrollHeight +\n (element.current.offsetHeight - element.current.clientHeight);\n // accounts for border, padding is captured by scroll height\n if (resizedHeight > 0) element.current.style.height = `${resizedHeight}px`;\n }\n\n function handleChange(event: React.ChangeEvent<HTMLTextAreaElement>): void {\n let newValue = event.target.value;\n if (isPastedChange) {\n if (delimiter) newValue = explode(newValue);\n setIsPastedChange(false);\n }\n setValue(newValue);\n onChange(newValue);\n }\n\n function handleFocus(): void {\n if (!element.current) {\n return;\n }\n if (delimiter) {\n setValue(explode(value));\n reCalculateLayout();\n }\n element.current.scrollLeft = 0;\n // scroll left as it can be disorienting if you click on a long line\n }\n\n // make it explode when dragging the resize handle\n // by making it trigger focus (which normally doesn't\n // trigger when just resizing).\n function handleMouseDown(): void {\n if (!element.current) return;\n if (document.activeElement === element.current) return;\n element.current.focus();\n }\n\n function handleBlur(): void {\n if (delimiter) {\n setValue(implode(value));\n onChange(implode(value));\n }\n }\n\n function handlePaste(): void {\n setIsPastedChange(true);\n }\n\n useEffect(\n function reCalculate() {\n reCalculateLayout();\n },\n [value]\n );\n\n return (\n <textarea\n ref={element}\n id={id}\n className={classNames(className, 'auto-resize-textarea form-control')}\n placeholder={placeholder}\n value={value}\n rows={1}\n onChange={handleChange}\n onFocus={handleFocus}\n onMouseDown={handleMouseDown}\n onBlur={handleBlur}\n onPaste={handlePaste}\n spellCheck={spellCheck}\n disabled={disabled}\n data-testid={dataTestId}\n />\n );\n}\n\nexport default AutoResizeTextarea;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"AutoResizeTextarea.js","names":["React","useState","useRef","useEffect","classNames","jsx","_jsx","implode","input","split","map","string","trim","filter","join","explode","delimiter","concat","AutoResizeTextarea","_ref","className","value","propsValue","onChange","spellCheck","placeholder","disabled","id","dataTestId","setValue","isPastedChange","setIsPastedChange","element","isFocused","valueRef","current","syncStateWithProp","reCalculateLayout","style","height","resizedHeight","scrollHeight","offsetHeight","clientHeight","handleChange","event","newValue","target","handleFocus","scrollLeft","handleMouseDown","document","activeElement","focus","handleBlur","handlePaste","reCalculate","ref","rows","onFocus","onMouseDown","onBlur","onPaste"],"sources":["../src/AutoResizeTextarea.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport classNames from 'classnames';\n\nimport './AutoResizeTextarea.scss';\n\ninterface AutoResizeTextareaProps {\n value: string;\n onChange: (val: string) => void;\n className?: string;\n spellCheck?: boolean;\n placeholder?: string;\n disabled?: boolean;\n delimiter?: string;\n id?: string;\n 'data-testid'?: string;\n}\n\nfunction implode(input: string): string {\n return input\n .split('\\n')\n .map(string => string.trim())\n .filter(string => string) // remove empty strings (e.g. from trailing newlines)\n .join(' ');\n}\n\nfunction explode(input: string, delimiter: string): string {\n // split by delimiter, commonly \" \" or \" -\"\n // strip empty strings (if delimiter is space, and there are multiple spaces in a row)\n // and join with new line and a trimmed delimiter (get rid of leading spaces)\n return input\n .trim()\n .split(delimiter)\n .filter(string => string) // remove empty strings\n .join(`\\n${delimiter.trim()}`);\n}\n\n/**\n * Makes a textarea that auto resizes based on contents, its height grows with new lines.\n * If a delimiter is set, such as \" -\" or \" \", as used by jvm args or env vars\n * then the field will also \"explode\" the value by the delimiter over new lines\n * on focus, and implode on blur. By default, it doesn't word wrap.\n */\nfunction AutoResizeTextarea({\n className = '',\n value: propsValue,\n onChange,\n spellCheck = false,\n placeholder = '',\n disabled = false,\n delimiter = '',\n id = '',\n 'data-testid': dataTestId,\n}: AutoResizeTextareaProps): JSX.Element {\n const [value, setValue] = useState(propsValue);\n const [isPastedChange, setIsPastedChange] = useState(false);\n const element = useRef<HTMLTextAreaElement>(null);\n const isFocused = useRef(false);\n const valueRef = useRef(value);\n valueRef.current = value;\n\n useEffect(\n function syncStateWithProp() {\n if (!isFocused.current || !delimiter) {\n // When not focused (or no delimiter), always sync to the new prop value.\n setValue(propsValue);\n } else if (implode(valueRef.current) !== implode(propsValue)) {\n // When focused with delimiter, only update if the imploded value changed to prevent clobbering delimiters\n setValue(explode(propsValue, delimiter));\n }\n },\n [propsValue, delimiter]\n );\n\n function reCalculateLayout(): void {\n if (!element.current) {\n return;\n }\n element.current.style.height = '0'; // shrink component to get scrollHeight\n const resizedHeight =\n element.current.scrollHeight +\n (element.current.offsetHeight - element.current.clientHeight);\n // accounts for border, padding is captured by scroll height\n if (resizedHeight > 0) element.current.style.height = `${resizedHeight}px`;\n }\n\n function handleChange(event: React.ChangeEvent<HTMLTextAreaElement>): void {\n let newValue = event.target.value;\n if (isPastedChange) {\n if (delimiter) newValue = explode(newValue, delimiter);\n setIsPastedChange(false);\n }\n setValue(newValue);\n // If there is a delimiter, the onChange value should always be the imploded version\n // to prevent mismatch when exiting without triggering onBlur\n // The exploded version is display only\n onChange(delimiter ? implode(newValue) : newValue);\n }\n\n function handleFocus(): void {\n if (!element.current) {\n return;\n }\n isFocused.current = true;\n if (delimiter) {\n setValue(explode(value, delimiter));\n reCalculateLayout();\n }\n element.current.scrollLeft = 0;\n // scroll left as it can be disorienting if you click on a long line\n }\n\n // make it explode when dragging the resize handle\n // by making it trigger focus (which normally doesn't\n // trigger when just resizing).\n function handleMouseDown(): void {\n if (!element.current) return;\n if (document.activeElement === element.current) return;\n element.current.focus();\n }\n\n function handleBlur(): void {\n isFocused.current = false;\n if (delimiter) {\n setValue(implode(value));\n onChange(implode(value));\n }\n }\n\n function handlePaste(): void {\n setIsPastedChange(true);\n }\n\n useEffect(\n function reCalculate() {\n reCalculateLayout();\n },\n [value]\n );\n\n return (\n <textarea\n ref={element}\n id={id}\n className={classNames(className, 'auto-resize-textarea form-control')}\n placeholder={placeholder}\n value={value}\n rows={1}\n onChange={handleChange}\n onFocus={handleFocus}\n onMouseDown={handleMouseDown}\n onBlur={handleBlur}\n onPaste={handlePaste}\n spellCheck={spellCheck}\n disabled={disabled}\n data-testid={dataTestId}\n />\n );\n}\n\nexport default AutoResizeTextarea;\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import { type ReactElement } from 'react';
2
- import type { SpectrumDialogClose } from '@react-types/dialog';
3
2
  import type { StyleProps } from '@react-types/shared';
4
3
  import type { IconDefinition } from '@fortawesome/fontawesome-common-types';
4
+ import { type SpectrumDialogClose } from '../spectrum';
5
5
  export interface ActionButtonDialogTriggerProps extends StyleProps {
6
6
  icon: IconDefinition;
7
7
  isQuiet?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionButtonDialogTrigger.d.ts","sourceRoot":"","sources":["../../src/dialogs/ActionButtonDialogTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAK5E,MAAM,WAAW,8BAA+B,SAAQ,UAAU;IAChE,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,mBAAmB,GAAG,YAAY,CAAC;IAC7C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EACT,IAAI,EACJ,OAAO,EACP,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,GAAG,UAAU,EACd,EAAE,8BAA8B,GAAG,GAAG,CAAC,OAAO,CAuB9C;AAED,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"ActionButtonDialogTrigger.d.ts","sourceRoot":"","sources":["../../src/dialogs/ActionButtonDialogTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,8BAA+B,SAAQ,UAAU;IAChE,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,mBAAmB,GAAG,YAAY,CAAC;IAC7C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EACT,IAAI,EACJ,OAAO,EACP,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,GAAG,UAAU,EACd,EAAE,8BAA8B,GAAG,GAAG,CAAC,OAAO,CAuB9C;AAED,eAAe,yBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionButtonDialogTrigger.js","names":["FontAwesomeIcon","ActionButton","DialogTrigger","Icon","Text","Tooltip","jsx","_jsx","jsxs","_jsxs","ActionButtonDialogTrigger","_ref","ariaLabel","icon","isQuiet","labelText","children","onOpenChange","tooltip","styleProps","_objectWithoutProperties","_excluded","iconClassName","undefined","type","_objectSpread","UNSAFE_className"],"sources":["../../src/dialogs/ActionButtonDialogTrigger.tsx"],"sourcesContent":["import { type ReactElement } from 'react';\nimport type { SpectrumDialogClose } from '@react-types/dialog';\nimport type { StyleProps } from '@react-types/shared';\nimport type { IconDefinition } from '@fortawesome/fontawesome-common-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ActionButton, DialogTrigger, Icon, Text } from '../spectrum';\nimport { Tooltip } from '../popper';\n\nexport interface ActionButtonDialogTriggerProps extends StyleProps {\n icon: IconDefinition;\n isQuiet?: boolean;\n labelText?: string;\n ariaLabel?: string;\n tooltip?: string;\n children: SpectrumDialogClose | ReactElement;\n onOpenChange?: (isOpen: boolean) => void;\n}\n\n/**\n * Dialog trigger based on an ActionButton.\n */\nexport function ActionButtonDialogTrigger({\n ariaLabel,\n icon,\n isQuiet,\n labelText,\n children,\n onOpenChange,\n tooltip,\n ...styleProps\n}: ActionButtonDialogTriggerProps): JSX.Element {\n const iconClassName =\n labelText == null && tooltip != null\n ? 'action-button-icon-with-tooltip'\n : undefined;\n\n return (\n <DialogTrigger type=\"popover\" onOpenChange={onOpenChange}>\n <ActionButton\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...styleProps}\n aria-label={ariaLabel ?? labelText}\n isQuiet={isQuiet}\n >\n <Icon UNSAFE_className={iconClassName}>\n <FontAwesomeIcon icon={icon} />\n </Icon>\n {labelText == null ? null : <Text>{labelText}</Text>}\n {tooltip == null ? null : <Tooltip>{tooltip}</Tooltip>}\n </ActionButton>\n {children}\n </DialogTrigger>\n );\n}\n\nexport default ActionButtonDialogTrigger;\n"],"mappings":";;;;;;;;AAIA,SAASA,eAAe,QAAQ,gCAAgC;AAAC,SACxDC,YAAY,EAAEC,aAAa,EAAEC,IAAI,EAAEC,IAAI;AAAA,SACvCC,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAYhB;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CAAAC,IAAA,EASO;EAAA,IATN;MACxCC,SAAS;MACTC,IAAI;MACJC,OAAO;MACPC,SAAS;MACTC,QAAQ;MACRC,YAAY;MACZC;IAE8B,CAAC,GAAAP,IAAA;IAD5BQ,UAAU,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAEb,IAAMC,aAAa,GACjBP,SAAS,IAAI,IAAI,IAAIG,OAAO,IAAI,IAAI,GAChC,iCAAiC,GACjCK,SAAS;EAEf,oBACEd,KAAA,CAACP,aAAa;IAACsB,IAAI,EAAC,SAAS;IAACP,YAAY,EAAEA,YAAa;IAAAD,QAAA,gBACvDP,KAAA,CAACR;IACC;IAAA,EAAAwB,aAAA,CAAAA,aAAA,KACIN,UAAU;MACd,cAAYP,SAAS,aAATA,SAAS,cAATA,SAAS,GAAIG,SAAU;MACnCD,OAAO,EAAEA,OAAQ;MAAAE,QAAA,gBAEjBT,IAAA,CAACJ,IAAI;QAACuB,gBAAgB,EAAEJ,aAAc;QAAAN,QAAA,eACpCT,IAAA,CAACP,eAAe;UAACa,IAAI,EAAEA;QAAK,CAAE;MAAC,CAC3B,CAAC,EACNE,SAAS,IAAI,IAAI,GAAG,IAAI,gBAAGR,IAAA,CAACH,IAAI;QAAAY,QAAA,EAAED;MAAS,CAAO,CAAC,EACnDG,OAAO,IAAI,IAAI,GAAG,IAAI,gBAAGX,IAAA,CAACF,OAAO;QAAAW,QAAA,EAAEE;MAAO,CAAU,CAAC;IAAA,EAC1C,CAAC,EACdF,QAAQ;EAAA,CACI,CAAC;AAEpB;AAEA,eAAeN,yBAAyB","ignoreList":[]}
1
+ {"version":3,"file":"ActionButtonDialogTrigger.js","names":["FontAwesomeIcon","ActionButton","DialogTrigger","Icon","Text","Tooltip","jsx","_jsx","jsxs","_jsxs","ActionButtonDialogTrigger","_ref","ariaLabel","icon","isQuiet","labelText","children","onOpenChange","tooltip","styleProps","_objectWithoutProperties","_excluded","iconClassName","undefined","type","_objectSpread","UNSAFE_className"],"sources":["../../src/dialogs/ActionButtonDialogTrigger.tsx"],"sourcesContent":["import { type ReactElement } from 'react';\nimport type { StyleProps } from '@react-types/shared';\nimport type { IconDefinition } from '@fortawesome/fontawesome-common-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ActionButton,\n DialogTrigger,\n Icon,\n Text,\n type SpectrumDialogClose,\n} from '../spectrum';\nimport { Tooltip } from '../popper';\n\nexport interface ActionButtonDialogTriggerProps extends StyleProps {\n icon: IconDefinition;\n isQuiet?: boolean;\n labelText?: string;\n ariaLabel?: string;\n tooltip?: string;\n children: SpectrumDialogClose | ReactElement;\n onOpenChange?: (isOpen: boolean) => void;\n}\n\n/**\n * Dialog trigger based on an ActionButton.\n */\nexport function ActionButtonDialogTrigger({\n ariaLabel,\n icon,\n isQuiet,\n labelText,\n children,\n onOpenChange,\n tooltip,\n ...styleProps\n}: ActionButtonDialogTriggerProps): JSX.Element {\n const iconClassName =\n labelText == null && tooltip != null\n ? 'action-button-icon-with-tooltip'\n : undefined;\n\n return (\n <DialogTrigger type=\"popover\" onOpenChange={onOpenChange}>\n <ActionButton\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...styleProps}\n aria-label={ariaLabel ?? labelText}\n isQuiet={isQuiet}\n >\n <Icon UNSAFE_className={iconClassName}>\n <FontAwesomeIcon icon={icon} />\n </Icon>\n {labelText == null ? null : <Text>{labelText}</Text>}\n {tooltip == null ? null : <Tooltip>{tooltip}</Tooltip>}\n </ActionButton>\n {children}\n </DialogTrigger>\n );\n}\n\nexport default ActionButtonDialogTrigger;\n"],"mappings":";;;;;;;;AAGA,SAASA,eAAe,QAAQ,gCAAgC;AAAC,SAE/DC,YAAY,EACZC,aAAa,EACbC,IAAI,EACJC,IAAI;AAAA,SAGGC,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAYhB;AACA;AACA;AACA,OAAO,SAASC,yBAAyBA,CAAAC,IAAA,EASO;EAAA,IATN;MACxCC,SAAS;MACTC,IAAI;MACJC,OAAO;MACPC,SAAS;MACTC,QAAQ;MACRC,YAAY;MACZC;IAE8B,CAAC,GAAAP,IAAA;IAD5BQ,UAAU,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAEb,IAAMC,aAAa,GACjBP,SAAS,IAAI,IAAI,IAAIG,OAAO,IAAI,IAAI,GAChC,iCAAiC,GACjCK,SAAS;EAEf,oBACEd,KAAA,CAACP,aAAa;IAACsB,IAAI,EAAC,SAAS;IAACP,YAAY,EAAEA,YAAa;IAAAD,QAAA,gBACvDP,KAAA,CAACR;IACC;IAAA,EAAAwB,aAAA,CAAAA,aAAA,KACIN,UAAU;MACd,cAAYP,SAAS,aAATA,SAAS,cAATA,SAAS,GAAIG,SAAU;MACnCD,OAAO,EAAEA,OAAQ;MAAAE,QAAA,gBAEjBT,IAAA,CAACJ,IAAI;QAACuB,gBAAgB,EAAEJ,aAAc;QAAAN,QAAA,eACpCT,IAAA,CAACP,eAAe;UAACa,IAAI,EAAEA;QAAK,CAAE;MAAC,CAC3B,CAAC,EACNE,SAAS,IAAI,IAAI,GAAG,IAAI,gBAAGR,IAAA,CAACH,IAAI;QAAAY,QAAA,EAAED;MAAS,CAAO,CAAC,EACnDG,OAAO,IAAI,IAAI,GAAG,IAAI,gBAAGX,IAAA,CAACF,OAAO;QAAAW,QAAA,EAAEE;MAAO,CAAU,CAAC;IAAA,EAC1C,CAAC,EACdF,QAAQ;EAAA,CACI,CAAC;AAEpB;AAEA,eAAeN,yBAAyB","ignoreList":[]}
@@ -6,7 +6,7 @@ export type ComboBoxProps = PickerPropsT<SpectrumComboBoxProps<NormalizedItem>>;
6
6
  export type { MenuTriggerAction } from '@react-types/combobox';
7
7
  export { SpectrumComboBox };
8
8
  export declare const ComboBox: React.ForwardRefExoticComponent<Omit<SpectrumComboBoxProps<NormalizedItem>, "children" | "items" | "selectedKey" | "defaultSelectedKey" | "disabledKeys" | "onSelectionChange" | "defaultItems"> & {
9
- children: import("../utils").ItemOrSection | import("../utils").ItemOrSection[];
9
+ children?: import("../utils").ItemOrSection | import("../utils").ItemOrSection[] | null | undefined;
10
10
  tooltip?: boolean | import("../utils").TooltipOptions;
11
11
  selectedKey?: import("../utils").ItemKey | null;
12
12
  defaultSelectedKey?: import("../utils").ItemKey;
@@ -21,6 +21,7 @@ export * from './comboBox';
21
21
  export * from './ListActionGroup';
22
22
  export * from './ListActionMenu';
23
23
  export * from './listView';
24
+ export * from './multiSelect';
24
25
  export * from './picker';
25
26
  export * from './Heading';
26
27
  export * from './Text';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spectrum/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AAEzB;;GAEG;AACH,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAEhC;;GAEG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spectrum/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AAEzB;;GAEG;AACH,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAEhC;;GAEG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
@@ -21,6 +21,7 @@ export * from "./comboBox/index.js";
21
21
  export * from "./ListActionGroup.js";
22
22
  export * from "./ListActionMenu.js";
23
23
  export * from "./listView/index.js";
24
+ export * from "./multiSelect/index.js";
24
25
  export * from "./picker/index.js";
25
26
  export * from "./Heading.js";
26
27
  export * from "./Text.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/spectrum/index.ts"],"sourcesContent":["/**\n * Re-exporting React Spectrum components + props.\n */\nexport * from './buttons';\nexport * from './collections';\nexport * from './content';\nexport * from './dateAndTime';\nexport * from './forms';\nexport * from './icons';\nexport * from './layout';\nexport * from './navigation';\nexport * from './overlays';\nexport * from './shared';\nexport * from './status';\n\n/**\n * Custom DH components wrapping React Spectrum components.\n */\nexport * from './ActionMenu';\nexport * from './ActionGroup';\nexport * from './comboBox';\nexport * from './ListActionGroup';\nexport * from './ListActionMenu';\nexport * from './listView';\nexport * from './picker';\nexport * from './Heading';\nexport * from './Text';\nexport * from './View';\nexport * from './CheckboxGroup';\n\n/**\n * Custom DH spectrum utils\n */\nexport * from './ItemContent';\nexport * from './ItemTooltip';\nexport * from './utils';\n"],"mappings":"AAAA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA;AACA;AACA;AAFA;AAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/spectrum/index.ts"],"sourcesContent":["/**\n * Re-exporting React Spectrum components + props.\n */\nexport * from './buttons';\nexport * from './collections';\nexport * from './content';\nexport * from './dateAndTime';\nexport * from './forms';\nexport * from './icons';\nexport * from './layout';\nexport * from './navigation';\nexport * from './overlays';\nexport * from './shared';\nexport * from './status';\n\n/**\n * Custom DH components wrapping React Spectrum components.\n */\nexport * from './ActionMenu';\nexport * from './ActionGroup';\nexport * from './comboBox';\nexport * from './ListActionGroup';\nexport * from './ListActionMenu';\nexport * from './listView';\nexport * from './multiSelect';\nexport * from './picker';\nexport * from './Heading';\nexport * from './Text';\nexport * from './View';\nexport * from './CheckboxGroup';\n\n/**\n * Custom DH spectrum utils\n */\nexport * from './ItemContent';\nexport * from './ItemTooltip';\nexport * from './utils';\n"],"mappings":"AAAA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AACA;AAFA;AAAA;AAAA","ignoreList":[]}
@@ -2,7 +2,7 @@ import { type SpectrumListViewProps } from '@adobe/react-spectrum';
2
2
  import { type MultipleItemSelectionProps, type NormalizedItem, type TooltipOptions } from '../utils';
3
3
  import { type ItemElementOrPrimitive } from '../shared';
4
4
  export type ListViewProps = MultipleItemSelectionProps & {
5
- children: ItemElementOrPrimitive | ItemElementOrPrimitive[];
5
+ children?: ItemElementOrPrimitive | ItemElementOrPrimitive[] | null | undefined;
6
6
  /** Can be set to true or a TooltipOptions to enable item tooltips */
7
7
  tooltip?: boolean | TooltipOptions;
8
8
  /** Handler that is called when the picker is scrolled. */
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../../src/spectrum/listView/ListView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEpB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG,0BAA0B,GAAG;IACvD,QAAQ,EAAE,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;IAC5D,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAEnC,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACnC,GAAG,IAAI,CACJ,qBAAqB,CAAC,cAAc,CAAC,EACnC,UAAU,GACV,OAAO,GACP,cAAc,GACd,qBAAqB,GACrB,cAAc,GACd,mBAAmB,CACtB,CAAC;AAEJ,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,OAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,QAAyB,EACzB,iBAAiB,EACjB,GAAG,qBAAqB,EACzB,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CA+BpC;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../../src/spectrum/listView/ListView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEpB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG,0BAA0B,GAAG;IACvD,QAAQ,CAAC,EACL,sBAAsB,GACtB,sBAAsB,EAAE,GACxB,IAAI,GACJ,SAAS,CAAC;IACd,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAEnC,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACnC,GAAG,IAAI,CACJ,qBAAqB,CAAC,cAAc,CAAC,EACnC,UAAU,GACV,OAAO,GACP,cAAc,GACd,qBAAqB,GACrB,cAAc,GACd,mBAAmB,CACtB,CAAC;AAEJ,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,OAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,QAAyB,EACzB,iBAAiB,EACjB,GAAG,qBAAqB,EACzB,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CA+BpC;AAED,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.js","names":["useMemo","cl","EMPTY_FUNCTION","normalizeTooltipOptions","wrapItemChildren","ListViewWrapper","jsx","_jsx","ListView","_ref","children","tooltip","selectedKeys","defaultSelectedKeys","disabledKeys","UNSAFE_className","onChange","onScroll","onSelectionChange","spectrumListViewProps","_objectWithoutProperties","_excluded","tooltipOptions","wrappedItems","_objectSpread"],"sources":["../../../src/spectrum/listView/ListView.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { type SpectrumListViewProps } from '@adobe/react-spectrum';\nimport cl from 'classnames';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport {\n type MultipleItemSelectionProps,\n type NormalizedItem,\n normalizeTooltipOptions,\n type TooltipOptions,\n wrapItemChildren,\n} from '../utils';\nimport { ListViewWrapper, type ListViewWrapperProps } from './ListViewWrapper';\nimport { type ItemElementOrPrimitive } from '../shared';\n\nexport type ListViewProps = MultipleItemSelectionProps & {\n children: ItemElementOrPrimitive | ItemElementOrPrimitive[];\n /** Can be set to true or a TooltipOptions to enable item tooltips */\n tooltip?: boolean | TooltipOptions;\n\n /** Handler that is called when the picker is scrolled. */\n onScroll?: (event: Event) => void;\n} & Omit<\n SpectrumListViewProps<NormalizedItem>,\n | 'children'\n | 'items'\n | 'selectedKeys'\n | 'defaultSelectedKeys'\n | 'disabledKeys'\n | 'onSelectionChange'\n >;\n\nexport function ListView({\n children,\n tooltip = true,\n selectedKeys,\n defaultSelectedKeys,\n disabledKeys,\n UNSAFE_className,\n onChange,\n onScroll = EMPTY_FUNCTION,\n onSelectionChange,\n ...spectrumListViewProps\n}: ListViewProps): JSX.Element | null {\n const tooltipOptions = useMemo(\n () => normalizeTooltipOptions(tooltip, 'bottom'),\n [tooltip]\n );\n\n const wrappedItems = useMemo(\n () => wrapItemChildren(children, tooltipOptions),\n [children, tooltipOptions]\n );\n\n return (\n <ListViewWrapper\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...spectrumListViewProps}\n UNSAFE_className={cl('dh-list-view', UNSAFE_className)}\n selectedKeys={\n selectedKeys as ListViewWrapperProps<unknown>['selectedKeys']\n }\n defaultSelectedKeys={\n defaultSelectedKeys as ListViewWrapperProps<unknown>['defaultSelectedKeys']\n }\n disabledKeys={\n disabledKeys as ListViewWrapperProps<unknown>['disabledKeys']\n }\n onScroll={onScroll}\n onSelectionChange={onChange ?? onSelectionChange}\n >\n {wrappedItems}\n </ListViewWrapper>\n );\n}\n\nexport default ListView;\n"],"mappings":";;;;;;;;AAAA,SAASA,OAAO,QAAQ,OAAO;AAE/B,OAAOC,EAAE,MAAM,YAAY;AAC3B,SAASC,cAAc,QAAQ,kBAAkB;AAAC,SAIhDC,uBAAuB,EAEvBC,gBAAgB;AAAA,SAETC,eAAe;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAoBxB,OAAO,SAASC,QAAQA,CAAAC,IAAA,EAWc;EAAA,IAXb;MACvBC,QAAQ;MACRC,OAAO,GAAG,IAAI;MACdC,YAAY;MACZC,mBAAmB;MACnBC,YAAY;MACZC,gBAAgB;MAChBC,QAAQ;MACRC,QAAQ,GAAGf,cAAc;MACzBgB;IAEa,CAAC,GAAAT,IAAA;IADXU,qBAAqB,GAAAC,wBAAA,CAAAX,IAAA,EAAAY,SAAA;EAExB,IAAMC,cAAc,GAAGtB,OAAO,CAC5B,MAAMG,uBAAuB,CAACQ,OAAO,EAAE,QAAQ,CAAC,EAChD,CAACA,OAAO,CACV,CAAC;EAED,IAAMY,YAAY,GAAGvB,OAAO,CAC1B,MAAMI,gBAAgB,CAACM,QAAQ,EAAEY,cAAc,CAAC,EAChD,CAACZ,QAAQ,EAAEY,cAAc,CAC3B,CAAC;EAED,oBACEf,IAAA,CAACF;EACC;EAAA,EAAAmB,aAAA,CAAAA,aAAA,KACIL,qBAAqB;IACzBJ,gBAAgB,EAAEd,EAAE,CAAC,cAAc,EAAEc,gBAAgB,CAAE;IACvDH,YAAY,EACVA,YACD;IACDC,mBAAmB,EACjBA,mBACD;IACDC,YAAY,EACVA,YACD;IACDG,QAAQ,EAAEA,QAAS;IACnBC,iBAAiB,EAAEF,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIE,iBAAkB;IAAAR,QAAA,EAEhDa;EAAY,EACE,CAAC;AAEtB;AAEA,eAAef,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"ListView.js","names":["useMemo","cl","EMPTY_FUNCTION","normalizeTooltipOptions","wrapItemChildren","ListViewWrapper","jsx","_jsx","ListView","_ref","children","tooltip","selectedKeys","defaultSelectedKeys","disabledKeys","UNSAFE_className","onChange","onScroll","onSelectionChange","spectrumListViewProps","_objectWithoutProperties","_excluded","tooltipOptions","wrappedItems","_objectSpread"],"sources":["../../../src/spectrum/listView/ListView.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { type SpectrumListViewProps } from '@adobe/react-spectrum';\nimport cl from 'classnames';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport {\n type MultipleItemSelectionProps,\n type NormalizedItem,\n normalizeTooltipOptions,\n type TooltipOptions,\n wrapItemChildren,\n} from '../utils';\nimport { ListViewWrapper, type ListViewWrapperProps } from './ListViewWrapper';\nimport { type ItemElementOrPrimitive } from '../shared';\n\nexport type ListViewProps = MultipleItemSelectionProps & {\n children?:\n | ItemElementOrPrimitive\n | ItemElementOrPrimitive[]\n | null\n | undefined;\n /** Can be set to true or a TooltipOptions to enable item tooltips */\n tooltip?: boolean | TooltipOptions;\n\n /** Handler that is called when the picker is scrolled. */\n onScroll?: (event: Event) => void;\n} & Omit<\n SpectrumListViewProps<NormalizedItem>,\n | 'children'\n | 'items'\n | 'selectedKeys'\n | 'defaultSelectedKeys'\n | 'disabledKeys'\n | 'onSelectionChange'\n >;\n\nexport function ListView({\n children,\n tooltip = true,\n selectedKeys,\n defaultSelectedKeys,\n disabledKeys,\n UNSAFE_className,\n onChange,\n onScroll = EMPTY_FUNCTION,\n onSelectionChange,\n ...spectrumListViewProps\n}: ListViewProps): JSX.Element | null {\n const tooltipOptions = useMemo(\n () => normalizeTooltipOptions(tooltip, 'bottom'),\n [tooltip]\n );\n\n const wrappedItems = useMemo(\n () => wrapItemChildren(children, tooltipOptions),\n [children, tooltipOptions]\n );\n\n return (\n <ListViewWrapper\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...spectrumListViewProps}\n UNSAFE_className={cl('dh-list-view', UNSAFE_className)}\n selectedKeys={\n selectedKeys as ListViewWrapperProps<unknown>['selectedKeys']\n }\n defaultSelectedKeys={\n defaultSelectedKeys as ListViewWrapperProps<unknown>['defaultSelectedKeys']\n }\n disabledKeys={\n disabledKeys as ListViewWrapperProps<unknown>['disabledKeys']\n }\n onScroll={onScroll}\n onSelectionChange={onChange ?? onSelectionChange}\n >\n {wrappedItems}\n </ListViewWrapper>\n );\n}\n\nexport default ListView;\n"],"mappings":";;;;;;;;AAAA,SAASA,OAAO,QAAQ,OAAO;AAE/B,OAAOC,EAAE,MAAM,YAAY;AAC3B,SAASC,cAAc,QAAQ,kBAAkB;AAAC,SAIhDC,uBAAuB,EAEvBC,gBAAgB;AAAA,SAETC,eAAe;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAwBxB,OAAO,SAASC,QAAQA,CAAAC,IAAA,EAWc;EAAA,IAXb;MACvBC,QAAQ;MACRC,OAAO,GAAG,IAAI;MACdC,YAAY;MACZC,mBAAmB;MACnBC,YAAY;MACZC,gBAAgB;MAChBC,QAAQ;MACRC,QAAQ,GAAGf,cAAc;MACzBgB;IAEa,CAAC,GAAAT,IAAA;IADXU,qBAAqB,GAAAC,wBAAA,CAAAX,IAAA,EAAAY,SAAA;EAExB,IAAMC,cAAc,GAAGtB,OAAO,CAC5B,MAAMG,uBAAuB,CAACQ,OAAO,EAAE,QAAQ,CAAC,EAChD,CAACA,OAAO,CACV,CAAC;EAED,IAAMY,YAAY,GAAGvB,OAAO,CAC1B,MAAMI,gBAAgB,CAACM,QAAQ,EAAEY,cAAc,CAAC,EAChD,CAACZ,QAAQ,EAAEY,cAAc,CAC3B,CAAC;EAED,oBACEf,IAAA,CAACF;EACC;EAAA,EAAAmB,aAAA,CAAAA,aAAA,KACIL,qBAAqB;IACzBJ,gBAAgB,EAAEd,EAAE,CAAC,cAAc,EAAEc,gBAAgB,CAAE;IACvDH,YAAY,EACVA,YACD;IACDC,mBAAmB,EACjBA,mBACD;IACDC,YAAY,EACVA,YACD;IACDG,QAAQ,EAAEA,QAAS;IACnBC,iBAAiB,EAAEF,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIE,iBAAkB;IAAAR,QAAA,EAEhDa;EAAY,EACE,CAAC;AAEtB;AAEA,eAAef,QAAQ","ignoreList":[]}
@@ -0,0 +1,326 @@
1
+ /* stylelint-disable no-descending-specificity */
2
+ .dh-multi-select-trigger {
3
+ display: flex;
4
+ align-items: stretch;
5
+ border: none;
6
+ border-radius: var(--spectrum-alias-border-radius-regular, 4px);
7
+ background-color: var(--dh-color-input-bg);
8
+ color: var(--dh-color-input-fg);
9
+ cursor: pointer;
10
+ outline: none;
11
+ position: relative;
12
+ min-height: var(--spectrum-alias-single-line-height, var(--spectrum-global-dimension-size-400, 32px));
13
+ }
14
+ .dh-multi-select-trigger::after {
15
+ content: "";
16
+ position: absolute;
17
+ inset: 0;
18
+ border: 1px solid var(--dh-color-input-border);
19
+ border-radius: var(--spectrum-alias-border-radius-regular, 4px);
20
+ pointer-events: none;
21
+ transition: border-color 130ms ease-in-out;
22
+ }
23
+ .dh-multi-select-trigger:hover:not(.is-disabled):not(.is-read-only):not(.is-focused)::after {
24
+ border-color: var(--dh-color-input-hover-border);
25
+ }
26
+ .dh-multi-select-trigger:hover:not(.is-disabled):not(.is-read-only):not(.is-focused) .dh-multi-select-chevron {
27
+ color: var(--dh-color-selector-hover-fg);
28
+ background-color: var(--dh-color-selector-hover-bg);
29
+ }
30
+ .dh-multi-select-trigger:hover:not(.is-disabled):not(.is-read-only):not(.is-focused) .dh-multi-select-chevron::before {
31
+ border-left-color: var(--dh-color-input-hover-border);
32
+ }
33
+ .dh-multi-select-trigger.is-focused::after {
34
+ border-color: var(--dh-color-input-focus-border);
35
+ }
36
+ .dh-multi-select-trigger.is-focused .dh-multi-select-chevron:not(.is-open) {
37
+ background-color: var(--dh-color-selector-hover-bg);
38
+ }
39
+ .dh-multi-select-trigger.is-focused .dh-multi-select-chevron:not(.is-open)::before {
40
+ border-left-color: var(--dh-color-input-focus-border);
41
+ }
42
+ .dh-multi-select-trigger.focus-ring {
43
+ box-shadow: 0 0 0 1px var(--dh-color-input-focus-border);
44
+ }
45
+ .dh-multi-select-trigger.is-invalid::after {
46
+ border-color: var(--spectrum-textfield-border-color-error, var(--spectrum-red-900));
47
+ }
48
+ .dh-multi-select-trigger.is-invalid .dh-multi-select-chevron::before {
49
+ border-left-color: var(--spectrum-textfield-border-color-error, var(--spectrum-red-900));
50
+ }
51
+ .dh-multi-select-trigger.is-invalid:hover:not(.is-disabled):not(.is-read-only):not(.is-focused)::after {
52
+ border-color: var(--spectrum-textfield-border-color-error-hover, var(--spectrum-red-1000));
53
+ }
54
+ .dh-multi-select-trigger.is-invalid:hover:not(.is-disabled):not(.is-read-only):not(.is-focused) .dh-multi-select-chevron::before {
55
+ border-left-color: var(--spectrum-textfield-border-color-error-hover, var(--spectrum-red-1000));
56
+ }
57
+ .dh-multi-select-trigger.is-invalid:active:not(.is-disabled):not(.is-read-only)::after {
58
+ border-color: var(--spectrum-textfield-border-color-error-down, var(--spectrum-red-1100));
59
+ }
60
+ .dh-multi-select-trigger.is-invalid:active:not(.is-disabled):not(.is-read-only) .dh-multi-select-chevron::before {
61
+ border-left-color: var(--spectrum-textfield-border-color-error-down, var(--spectrum-red-1100));
62
+ }
63
+ .dh-multi-select-trigger.is-invalid.is-focused::after {
64
+ border-color: var(--dh-color-input-focus-border);
65
+ }
66
+ .dh-multi-select-trigger.is-invalid.is-focused .dh-multi-select-chevron::before {
67
+ border-left-color: var(--dh-color-input-focus-border);
68
+ }
69
+ .dh-multi-select-trigger.is-disabled {
70
+ background-color: var(--dh-color-input-disabled-bg);
71
+ color: var(--dh-color-input-disabled-fg);
72
+ cursor: default;
73
+ }
74
+ .dh-multi-select-trigger.is-disabled::after {
75
+ border-color: var(--dh-color-input-disabled-border);
76
+ }
77
+ .dh-multi-select-trigger.is-disabled .dh-multi-select-chevron {
78
+ color: var(--dh-color-selector-disabled-fg);
79
+ background-color: var(--dh-color-input-disabled-bg);
80
+ }
81
+ .dh-multi-select-trigger.is-disabled .dh-multi-select-chevron::before {
82
+ border-left-color: var(--dh-color-input-disabled-border);
83
+ }
84
+ .dh-multi-select-trigger.is-read-only {
85
+ cursor: default;
86
+ }
87
+ .dh-multi-select-trigger.is-quiet {
88
+ background: none;
89
+ border-radius: 0;
90
+ min-width: calc(2 * var(--spectrum-dropdown-height, var(--spectrum-global-dimension-size-400, 32px)));
91
+ }
92
+ .dh-multi-select-trigger.is-quiet::after {
93
+ border: none;
94
+ border-bottom: var(--spectrum-alias-input-border-size, 1px) solid var(--dh-color-input-border);
95
+ border-radius: 0;
96
+ }
97
+ .dh-multi-select-trigger.is-quiet:hover:not(.is-disabled):not(.is-read-only):not(.is-focused)::after {
98
+ border-bottom-color: var(--dh-color-input-hover-border);
99
+ }
100
+ .dh-multi-select-trigger.is-quiet:hover:not(.is-disabled):not(.is-read-only):not(.is-focused) .dh-multi-select-chevron {
101
+ background-color: transparent;
102
+ }
103
+ .dh-multi-select-trigger.is-quiet:hover:not(.is-disabled):not(.is-read-only):not(.is-focused) .dh-multi-select-chevron::before {
104
+ border-bottom-color: var(--dh-color-input-hover-border);
105
+ }
106
+ .dh-multi-select-trigger.is-quiet.is-focused::after {
107
+ border-bottom-color: var(--dh-color-input-focus-border);
108
+ }
109
+ .dh-multi-select-trigger.is-quiet.is-focused .dh-multi-select-chevron:not(.is-open) {
110
+ background-color: transparent;
111
+ }
112
+ .dh-multi-select-trigger.is-quiet.is-focused .dh-multi-select-chevron::before {
113
+ border-bottom-color: var(--dh-color-input-focus-border);
114
+ }
115
+ .dh-multi-select-trigger.is-quiet.focus-ring {
116
+ box-shadow: 0 2px 0 0 var(--dh-color-input-focus-border);
117
+ }
118
+ .dh-multi-select-trigger.is-quiet .dh-multi-select-chevron {
119
+ inline-size: auto;
120
+ padding-inline-start: var(--spectrum-global-dimension-size-130, 10px);
121
+ padding-inline-end: 0;
122
+ background-color: transparent;
123
+ border-radius: 0;
124
+ }
125
+ .dh-multi-select-trigger.is-quiet .dh-multi-select-chevron::before {
126
+ border-left: none;
127
+ border-bottom: var(--spectrum-alias-input-border-size, 1px) solid var(--dh-color-input-border);
128
+ border-radius: 0;
129
+ top: auto;
130
+ bottom: 0;
131
+ left: 0;
132
+ right: 0;
133
+ width: auto;
134
+ height: 0;
135
+ }
136
+ .dh-multi-select-trigger.is-quiet .dh-multi-select-chevron.is-open {
137
+ background-color: var(--spectrum-alias-background-color-transparent, transparent);
138
+ }
139
+ .dh-multi-select-trigger.is-quiet.is-disabled .dh-multi-select-chevron {
140
+ border-radius: 0;
141
+ }
142
+ .dh-multi-select-trigger.is-quiet.is-disabled .dh-multi-select-chevron::before {
143
+ border-bottom-color: var(--dh-color-input-disabled-border);
144
+ }
145
+ .dh-multi-select-trigger.is-quiet.is-invalid::after {
146
+ border-bottom-color: var(--spectrum-textfield-border-color-error, var(--spectrum-red-900));
147
+ }
148
+ .dh-multi-select-trigger.is-quiet.is-invalid .dh-multi-select-chevron::before {
149
+ border-bottom-color: var(--spectrum-textfield-border-color-error, var(--spectrum-red-900));
150
+ }
151
+ .dh-multi-select-trigger.is-quiet.is-invalid:hover:not(.is-disabled):not(.is-read-only):not(.is-focused)::after {
152
+ border-bottom-color: var(--spectrum-textfield-border-color-error-hover, var(--spectrum-red-1000));
153
+ }
154
+ .dh-multi-select-trigger.is-quiet.is-invalid:hover:not(.is-disabled):not(.is-read-only):not(.is-focused) .dh-multi-select-chevron::before {
155
+ border-bottom-color: var(--spectrum-textfield-border-color-error-hover, var(--spectrum-red-1000));
156
+ }
157
+ .dh-multi-select-trigger.is-quiet.is-invalid:active:not(.is-disabled):not(.is-read-only)::after {
158
+ border-bottom-color: var(--spectrum-textfield-border-color-error-down, var(--spectrum-red-1100));
159
+ }
160
+ .dh-multi-select-trigger.is-quiet.is-invalid:active:not(.is-disabled):not(.is-read-only) .dh-multi-select-chevron::before {
161
+ border-bottom-color: var(--spectrum-textfield-border-color-error-down, var(--spectrum-red-1100));
162
+ }
163
+ .dh-multi-select-trigger.is-quiet.is-invalid.is-focused::after {
164
+ border-bottom-color: var(--dh-color-input-focus-border);
165
+ }
166
+ .dh-multi-select-trigger.is-quiet.is-invalid.is-focused .dh-multi-select-chevron::before {
167
+ border-bottom-color: var(--dh-color-input-focus-border);
168
+ }
169
+
170
+ .dh-multi-select-content {
171
+ display: flex;
172
+ flex-wrap: wrap;
173
+ align-items: center;
174
+ flex: 1;
175
+ min-width: 0;
176
+ gap: calc(var(--spectrum-taggroup-tag-gap-y, var(--spectrum-global-dimension-size-100)) / 2) calc(var(--spectrum-taggroup-tag-gap-x, var(--spectrum-global-dimension-size-100)) / 2);
177
+ padding: 3px 0 3px 4px;
178
+ }
179
+
180
+ .dh-multi-select-tag {
181
+ display: inline-grid;
182
+ grid-template-columns: 1fr auto;
183
+ align-items: center;
184
+ box-sizing: border-box;
185
+ max-inline-size: 100%;
186
+ cursor: default;
187
+ user-select: none;
188
+ block-size: var(--spectrum-tag-height, var(--spectrum-global-dimension-size-300));
189
+ padding-inline-start: calc(var(--spectrum-tag-padding-x, var(--spectrum-global-dimension-size-125)) - var(--spectrum-tag-border-size, var(--spectrum-alias-border-size-thin)));
190
+ border-style: solid;
191
+ border-width: var(--spectrum-tag-border-size, var(--spectrum-alias-border-size-thin));
192
+ border-radius: var(--spectrum-tag-border-radius, var(--spectrum-alias-border-radius-regular));
193
+ color: var(--spectrum-tag-text-color, var(--spectrum-global-color-gray-700));
194
+ background-color: var(--spectrum-tag-background-color, var(--spectrum-global-color-gray-75));
195
+ border-color: var(--spectrum-tag-border-color, var(--spectrum-global-color-gray-600));
196
+ font-size: var(--spectrum-tag-text-size, var(--spectrum-global-dimension-font-size-75));
197
+ transition: border-color 0.13s ease-in-out, color 0.13s ease-in-out, box-shadow 0.13s ease-in-out, background-color 0.13s ease-in-out;
198
+ }
199
+ .dh-multi-select-tag:hover {
200
+ background-color: var(--spectrum-tag-background-color-hover, var(--spectrum-global-color-gray-75));
201
+ color: var(--spectrum-tag-text-color-hover, var(--spectrum-global-color-gray-900));
202
+ border-color: var(--spectrum-tag-border-color-hover, var(--spectrum-global-color-gray-900));
203
+ }
204
+ .is-disabled .dh-multi-select-tag {
205
+ color: var(--spectrum-tag-text-color-disabled, var(--spectrum-global-color-gray-500));
206
+ background-color: var(--spectrum-tag-background-color-disabled, var(--spectrum-global-color-gray-200));
207
+ border-color: var(--spectrum-tag-border-color-disabled, var(--spectrum-global-color-gray-200));
208
+ pointer-events: none;
209
+ }
210
+
211
+ .dh-multi-select-tag-label {
212
+ white-space: nowrap;
213
+ text-overflow: ellipsis;
214
+ overflow: hidden;
215
+ line-height: calc(var(--spectrum-tag-height, var(--spectrum-global-dimension-size-300)) - var(--spectrum-tag-border-size, var(--spectrum-alias-border-size-thin)) * 2);
216
+ margin-inline-end: 0;
217
+ }
218
+ .dh-multi-select-tag-label:last-child {
219
+ margin-inline-end: var(--spectrum-tag-padding-x, var(--spectrum-global-dimension-size-125));
220
+ }
221
+
222
+ .dh-multi-select-tag-remove {
223
+ display: flex;
224
+ align-items: center;
225
+ justify-content: center;
226
+ box-sizing: border-box;
227
+ padding: 0;
228
+ margin: 0;
229
+ border: none;
230
+ background: transparent;
231
+ cursor: pointer;
232
+ color: inherit;
233
+ height: calc(var(--spectrum-tag-height, var(--spectrum-global-dimension-size-300)) - 2 * var(--spectrum-tag-border-size, var(--spectrum-alias-border-size-thin)));
234
+ width: var(--spectrum-global-dimension-size-300);
235
+ }
236
+ .dh-multi-select-tag-remove:hover {
237
+ color: var(--spectrum-tag-removable-button-icon-color-hover, var(--spectrum-global-color-gray-900));
238
+ }
239
+ .dh-multi-select-tag-remove svg {
240
+ width: 8px;
241
+ height: 8px;
242
+ }
243
+
244
+ .dh-multi-select-input {
245
+ border: none;
246
+ outline: none;
247
+ background: transparent;
248
+ color: var(--dh-color-input-fg);
249
+ font-family: inherit;
250
+ font-size: inherit;
251
+ line-height: inherit;
252
+ flex: 1;
253
+ min-width: 40px;
254
+ padding: 2px 0 2px 4px;
255
+ height: var(--spectrum-tag-height, var(--spectrum-global-dimension-size-300));
256
+ }
257
+ .dh-multi-select-input:disabled {
258
+ color: var(--dh-color-input-disabled-fg);
259
+ cursor: default;
260
+ }
261
+
262
+ .dh-multi-select-chevron {
263
+ display: flex;
264
+ align-items: center;
265
+ justify-content: center;
266
+ inline-size: var(--spectrum-global-dimension-size-400, 32px);
267
+ flex-shrink: 0;
268
+ align-self: stretch;
269
+ box-sizing: border-box;
270
+ position: relative;
271
+ padding: var(--spectrum-combobox-fieldbutton-inset, 0);
272
+ background-color: var(--dh-color-selector-bg);
273
+ background-clip: content-box;
274
+ color: var(--dh-color-selector-fg);
275
+ border-radius: 0 calc(var(--spectrum-alias-border-radius-regular, 4px) - 1px) calc(var(--spectrum-alias-border-radius-regular, 4px) - 1px) 0;
276
+ transition: background-color 130ms ease-in-out, color 130ms ease-in-out;
277
+ }
278
+ .dh-multi-select-chevron::before {
279
+ content: "";
280
+ position: absolute;
281
+ top: 0;
282
+ bottom: 0;
283
+ left: 0;
284
+ width: 0;
285
+ border-left: 1px solid var(--dh-color-input-border);
286
+ pointer-events: none;
287
+ }
288
+ .dh-multi-select-chevron.is-open {
289
+ background-color: var(--spectrum-fieldbutton-background-color-down, var(--spectrum-global-color-gray-200));
290
+ color: var(--spectrum-fieldbutton-icon-color-down, var(--spectrum-alias-icon-color-down));
291
+ }
292
+ .dh-multi-select-chevron.is-open::before {
293
+ border-left-color: var(--spectrum-fieldbutton-border-color-down, var(--spectrum-alias-border-color-down));
294
+ }
295
+
296
+ .dh-multi-select-invalid-icon {
297
+ display: flex;
298
+ align-items: center;
299
+ padding-inline-start: var(--spectrum-global-dimension-size-100, 8px);
300
+ padding-inline-end: var(--spectrum-global-dimension-size-100, 8px);
301
+ color: var(--spectrum-semantic-negative-color-icon);
302
+ flex-shrink: 0;
303
+ }
304
+
305
+ .dh-multi-select-empty {
306
+ display: block;
307
+ padding-top: var(--spectrum-selectlist-option-padding-height);
308
+ padding-inline-start: var(--spectrum-selectlist-option-padding, var(--spectrum-global-dimension-static-size-150));
309
+ font-size: var(--spectrum-selectlist-option-text-size, var(--spectrum-alias-font-size-default));
310
+ font-weight: var(--spectrum-selectlist-option-text-font-weight, var(--spectrum-global-font-weight-regular));
311
+ }
312
+
313
+ .dh-multi-select-loading-circle {
314
+ display: flex;
315
+ align-items: center;
316
+ justify-content: center;
317
+ padding-inline-end: 8px;
318
+ padding-inline-start: 4px;
319
+ }
320
+
321
+ [role=option][data-dh-focused=true] {
322
+ background-color: var(--dh-color-item-list-hover-bg);
323
+ border-inline-start-color: var(--spectrum-selectlist-option-focus-indicator-color, var(--spectrum-alias-border-color-focus));
324
+ }
325
+
326
+ /*# sourceMappingURL=MultiSelect.css.map */