@deephaven/components 0.15.7-beta.3 → 0.16.1-beta.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.
@@ -6,6 +6,7 @@ interface CheckboxProps {
6
6
  inputClassName?: string;
7
7
  isInvalid?: boolean;
8
8
  labelClassName?: string;
9
+ name?: string;
9
10
  onChange?: React.ChangeEventHandler<HTMLInputElement>;
10
11
  children?: React.ReactNode;
11
12
  'data-testid'?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../src/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAMhE,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,QAAA,MAAM,QAAQ,wFAiEb,CAAC;AAmDF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../src/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAMhE,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,QAAA,MAAM,QAAQ,wFAmEb,CAAC;AAuDF,eAAe,QAAQ,CAAC"}
package/dist/Checkbox.js CHANGED
@@ -16,6 +16,7 @@ var Checkbox = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {
16
16
  inputClassName,
17
17
  isInvalid,
18
18
  labelClassName,
19
+ name,
19
20
  onChange,
20
21
  'data-testid': dataTestId
21
22
  } = props;
@@ -49,6 +50,7 @@ var Checkbox = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {
49
50
  }),
50
51
  disabled: disabled,
51
52
  id: id,
53
+ name: name,
52
54
  onChange: handleOnChange,
53
55
  "data-testid": dataTestId
54
56
  }), /*#__PURE__*/React.createElement("label", {
@@ -91,6 +93,9 @@ Checkbox.propTypes = {
91
93
  /** An extra class name for the label component */
92
94
  labelClassName: PropTypes.string,
93
95
 
96
+ /** Checkbox input name attribute */
97
+ name: PropTypes.string,
98
+
94
99
  /** Triggered when the input is checked/unchecked */
95
100
  onChange: PropTypes.func,
96
101
  'data-testid': PropTypes.string
@@ -102,6 +107,7 @@ Checkbox.defaultProps = {
102
107
  inputClassName: '',
103
108
  isInvalid: false,
104
109
  labelClassName: '',
110
+ name: undefined,
105
111
  onChange: undefined,
106
112
  'data-testid': undefined
107
113
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Checkbox.tsx"],"names":["React","useState","useEffect","useCallback","classNames","PropTypes","shortid","useForwardedRef","Checkbox","forwardRef","props","forwardedRef","checked","children","className","disabled","inputClassName","isInvalid","labelClassName","onChange","dataTestId","id","ref","setIndeterminateProperty","current","indeterminate","handleOnChange","event","displayName","propTypes","propName","checkedType","Error","node","isRequired","string","bool","func","defaultProps","undefined"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport shortid from 'shortid';\nimport { useForwardedRef } from '@deephaven/react-hooks';\n\ninterface CheckboxProps {\n checked: boolean | null;\n className?: string;\n disabled?: boolean;\n inputClassName?: string;\n isInvalid?: boolean;\n labelClassName?: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n children?: React.ReactNode;\n 'data-testid'?: string;\n}\n\n/**\n * A simple checkbox component. Automatically generates an id so htmlFor/id attributes are unique.\n */\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (props, forwardedRef) => {\n const {\n checked = false,\n children,\n className,\n disabled,\n inputClassName,\n isInvalid,\n labelClassName,\n onChange,\n 'data-testid': dataTestId,\n } = props;\n\n const [id] = useState(shortid());\n\n const ref = useForwardedRef<HTMLInputElement>(forwardedRef);\n\n useEffect(\n function setIndeterminateProperty() {\n if (ref.current) {\n // indeterminate is not actually an html attr, can only be set via JS\n ref.current.indeterminate = checked === null;\n }\n },\n [ref, checked]\n );\n\n const handleOnChange: React.ChangeEventHandler<HTMLInputElement> = useCallback(\n event => {\n if (ref.current) {\n // ref.current can be null in tests, doesn't impact behaviour\n ref.current.indeterminate = checked === null;\n }\n\n if (onChange) {\n onChange(event);\n }\n },\n [ref, checked, onChange]\n );\n\n return (\n <div className={classNames('custom-control custom-checkbox', className)}>\n <input\n type=\"checkbox\"\n ref={ref}\n checked={checked ?? false} // checked attr must always have a value to remain as a controlled component\n className={classNames('custom-control-input', inputClassName, {\n 'is-invalid': isInvalid,\n })}\n disabled={disabled}\n id={id}\n onChange={handleOnChange}\n data-testid={dataTestId}\n />\n <label\n className={classNames('custom-control-label', labelClassName)}\n htmlFor={id}\n >\n {children}\n </label>\n </div>\n );\n }\n);\n\n// Forward ref causes a false positive for display-name in eslint:\n// https://github.com/yannickcr/eslint-plugin-react/issues/2269\nCheckbox.displayName = 'Checkbox';\n\nCheckbox.propTypes = {\n /** Current value of the checkbox. */\n checked: (props, propName) => {\n const { [propName]: checkedType } = props;\n if (checkedType !== null && typeof checkedType !== 'boolean') {\n return new Error('Checked must be a boolean or null for indeterminate');\n }\n return null;\n },\n\n /** The node/text to put in the label of this checkbox */\n children: PropTypes.node.isRequired,\n\n /** An extra class name to add to the outer div component */\n className: PropTypes.string,\n\n /** An extra class for disabling the checkbox component */\n disabled: PropTypes.bool,\n\n /** An extra class name for the input component */\n inputClassName: PropTypes.string,\n\n /** Convenience for styling appropriately for an invalid value */\n isInvalid: PropTypes.bool,\n\n /** An extra class name for the label component */\n labelClassName: PropTypes.string,\n\n /** Triggered when the input is checked/unchecked */\n onChange: PropTypes.func,\n\n 'data-testid': PropTypes.string,\n};\n\nCheckbox.defaultProps = {\n checked: false,\n className: '',\n disabled: false,\n inputClassName: '',\n isInvalid: false,\n labelClassName: '',\n onChange: undefined,\n 'data-testid': undefined,\n};\n\nexport default Checkbox;\n"],"file":"Checkbox.js"}
1
+ {"version":3,"sources":["../src/Checkbox.tsx"],"names":["React","useState","useEffect","useCallback","classNames","PropTypes","shortid","useForwardedRef","Checkbox","forwardRef","props","forwardedRef","checked","children","className","disabled","inputClassName","isInvalid","labelClassName","name","onChange","dataTestId","id","ref","setIndeterminateProperty","current","indeterminate","handleOnChange","event","displayName","propTypes","propName","checkedType","Error","node","isRequired","string","bool","func","defaultProps","undefined"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport shortid from 'shortid';\nimport { useForwardedRef } from '@deephaven/react-hooks';\n\ninterface CheckboxProps {\n checked: boolean | null;\n className?: string;\n disabled?: boolean;\n inputClassName?: string;\n isInvalid?: boolean;\n labelClassName?: string;\n name?: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n children?: React.ReactNode;\n 'data-testid'?: string;\n}\n\n/**\n * A simple checkbox component. Automatically generates an id so htmlFor/id attributes are unique.\n */\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (props, forwardedRef) => {\n const {\n checked = false,\n children,\n className,\n disabled,\n inputClassName,\n isInvalid,\n labelClassName,\n name,\n onChange,\n 'data-testid': dataTestId,\n } = props;\n\n const [id] = useState(shortid());\n\n const ref = useForwardedRef<HTMLInputElement>(forwardedRef);\n\n useEffect(\n function setIndeterminateProperty() {\n if (ref.current) {\n // indeterminate is not actually an html attr, can only be set via JS\n ref.current.indeterminate = checked === null;\n }\n },\n [ref, checked]\n );\n\n const handleOnChange: React.ChangeEventHandler<HTMLInputElement> = useCallback(\n event => {\n if (ref.current) {\n // ref.current can be null in tests, doesn't impact behaviour\n ref.current.indeterminate = checked === null;\n }\n\n if (onChange) {\n onChange(event);\n }\n },\n [ref, checked, onChange]\n );\n\n return (\n <div className={classNames('custom-control custom-checkbox', className)}>\n <input\n type=\"checkbox\"\n ref={ref}\n checked={checked ?? false} // checked attr must always have a value to remain as a controlled component\n className={classNames('custom-control-input', inputClassName, {\n 'is-invalid': isInvalid,\n })}\n disabled={disabled}\n id={id}\n name={name}\n onChange={handleOnChange}\n data-testid={dataTestId}\n />\n <label\n className={classNames('custom-control-label', labelClassName)}\n htmlFor={id}\n >\n {children}\n </label>\n </div>\n );\n }\n);\n\n// Forward ref causes a false positive for display-name in eslint:\n// https://github.com/yannickcr/eslint-plugin-react/issues/2269\nCheckbox.displayName = 'Checkbox';\n\nCheckbox.propTypes = {\n /** Current value of the checkbox. */\n checked: (props, propName) => {\n const { [propName]: checkedType } = props;\n if (checkedType !== null && typeof checkedType !== 'boolean') {\n return new Error('Checked must be a boolean or null for indeterminate');\n }\n return null;\n },\n\n /** The node/text to put in the label of this checkbox */\n children: PropTypes.node.isRequired,\n\n /** An extra class name to add to the outer div component */\n className: PropTypes.string,\n\n /** An extra class for disabling the checkbox component */\n disabled: PropTypes.bool,\n\n /** An extra class name for the input component */\n inputClassName: PropTypes.string,\n\n /** Convenience for styling appropriately for an invalid value */\n isInvalid: PropTypes.bool,\n\n /** An extra class name for the label component */\n labelClassName: PropTypes.string,\n\n /** Checkbox input name attribute */\n name: PropTypes.string,\n\n /** Triggered when the input is checked/unchecked */\n onChange: PropTypes.func,\n\n 'data-testid': PropTypes.string,\n};\n\nCheckbox.defaultProps = {\n checked: false,\n className: '',\n disabled: false,\n inputClassName: '',\n isInvalid: false,\n labelClassName: '',\n name: undefined,\n onChange: undefined,\n 'data-testid': undefined,\n};\n\nexport default Checkbox;\n"],"file":"Checkbox.js"}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ interface EditableItemListProps {
3
+ isInvalid?: boolean;
4
+ items: string[];
5
+ onDelete: (item: string) => void;
6
+ onAdd: (item: string) => void;
7
+ validate?: (item: string) => Error | null;
8
+ }
9
+ declare const EditableItemList: (props: EditableItemListProps) => React.ReactElement;
10
+ export default EditableItemList;
11
+ //# sourceMappingURL=EditableItemList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditableItemList.d.ts","sourceRoot":"","sources":["../src/EditableItemList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAOf,UAAU,qBAAqB;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC;CAC3C;AAGD,QAAA,MAAM,gBAAgB,UAAW,qBAAqB,KAAG,MAAM,YA0H9D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,107 @@
1
+ import React, { useCallback, useMemo, useState } from 'react';
2
+ import classNames from 'classnames';
3
+ import clamp from 'lodash.clamp';
4
+ import { vsAdd, vsTrash } from '@deephaven/icons';
5
+ import { Button, ItemList } from "./index.js";
6
+
7
+ // Display a list of items with an input for adding new items, and Add/Delete buttons
8
+ var EditableItemList = props => {
9
+ var {
10
+ isInvalid = false,
11
+ items,
12
+ onAdd = () => undefined,
13
+ onDelete = () => undefined,
14
+ validate = () => null
15
+ } = props;
16
+ var [inputError, setInputError] = useState(null);
17
+ var [selectedIndex, setSelectedIndex] = useState();
18
+ var [value, setValue] = useState('');
19
+ var handleSelect = useCallback(index => {
20
+ setSelectedIndex(index);
21
+ }, []);
22
+ var handleDelete = useCallback(() => {
23
+ var newIndex = selectedIndex === items.length - 1 ? items.length - 2 : selectedIndex;
24
+
25
+ if (selectedIndex !== undefined && selectedIndex >= 0 && selectedIndex < items.length) {
26
+ onDelete(items[selectedIndex]);
27
+ }
28
+
29
+ setSelectedIndex(newIndex === -1 ? undefined : newIndex);
30
+ }, [items, selectedIndex, onDelete]);
31
+ var handleAdd = useCallback(() => {
32
+ var validationError = validate(value);
33
+
34
+ if (validationError == null) {
35
+ onAdd(value);
36
+ setValue('');
37
+ } else {
38
+ setInputError(validationError);
39
+ }
40
+ }, [value, onAdd, validate]);
41
+ var handleInputChange = useCallback(event => {
42
+ var {
43
+ value: inputValue
44
+ } = event.target;
45
+ setValue(inputValue);
46
+ setInputError(validate(inputValue));
47
+ }, [validate]);
48
+ var handleInputFocus = useCallback(() => {
49
+ setSelectedIndex(undefined);
50
+ }, []);
51
+ var handleInputKeyDown = useCallback(event => {
52
+ if (event.key === 'Enter') {
53
+ handleAdd();
54
+ }
55
+ }, [handleAdd]);
56
+ var selectedRanges = useMemo(() => selectedIndex === undefined ? [] : [[selectedIndex, selectedIndex]], [selectedIndex]);
57
+ var containerHeight = useMemo(() => 14 + clamp(items.length, 1, 6) * ItemList.DEFAULT_ROW_HEIGHT, [items.length]);
58
+ return /*#__PURE__*/React.createElement("div", {
59
+ className: classNames('editable-item-list-container', {
60
+ 'is-invalid': isInvalid
61
+ })
62
+ }, /*#__PURE__*/React.createElement("div", {
63
+ style: {
64
+ height: containerHeight
65
+ }
66
+ }, /*#__PURE__*/React.createElement(ItemList, {
67
+ itemCount: items.length,
68
+ items: items.map((item, index) => ({
69
+ value: item,
70
+ isSelected: index === selectedIndex
71
+ })),
72
+ offset: 0,
73
+ onSelect: handleSelect,
74
+ selectedRanges: selectedRanges
75
+ })), /*#__PURE__*/React.createElement("div", {
76
+ className: "d-flex flex-row pt-2"
77
+ }, /*#__PURE__*/React.createElement("div", {
78
+ className: "d-flex flex-grow-1"
79
+ }, /*#__PURE__*/React.createElement("input", {
80
+ className: classNames('form-control', {
81
+ 'is-invalid': inputError != null
82
+ }),
83
+ placeholder: "Enter value",
84
+ type: "text",
85
+ value: value,
86
+ onChange: handleInputChange,
87
+ onFocus: handleInputFocus,
88
+ onKeyDown: handleInputKeyDown
89
+ })), /*#__PURE__*/React.createElement("div", {
90
+ className: "d-flex align-items-start mt-1 ml-2"
91
+ }, /*#__PURE__*/React.createElement(Button, {
92
+ kind: "ghost",
93
+ onClick: handleAdd,
94
+ disabled: inputError != null || value == null || value === '',
95
+ icon: vsAdd,
96
+ tooltip: "Add new item"
97
+ }), /*#__PURE__*/React.createElement(Button, {
98
+ kind: "ghost",
99
+ onClick: handleDelete,
100
+ disabled: selectedIndex === undefined,
101
+ icon: vsTrash,
102
+ tooltip: "Delete selected item"
103
+ }))));
104
+ };
105
+
106
+ export default EditableItemList;
107
+ //# sourceMappingURL=EditableItemList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/EditableItemList.tsx"],"names":["React","useCallback","useMemo","useState","classNames","clamp","vsAdd","vsTrash","Button","ItemList","EditableItemList","props","isInvalid","items","onAdd","undefined","onDelete","validate","inputError","setInputError","selectedIndex","setSelectedIndex","value","setValue","handleSelect","index","handleDelete","newIndex","length","handleAdd","validationError","handleInputChange","event","inputValue","target","handleInputFocus","handleInputKeyDown","key","selectedRanges","containerHeight","DEFAULT_ROW_HEIGHT","height","map","item","isSelected"],"mappings":"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","sourcesContent":["import React, {\n ChangeEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport clamp from 'lodash.clamp';\nimport { vsAdd, vsTrash } from '@deephaven/icons';\nimport { Range } from '@deephaven/utils';\nimport { Button, ItemList } from '.';\n\ninterface EditableItemListProps {\n isInvalid?: boolean;\n items: string[];\n onDelete: (item: string) => void;\n onAdd: (item: string) => void;\n validate?: (item: string) => Error | null;\n}\n\n// Display a list of items with an input for adding new items, and Add/Delete buttons\nconst EditableItemList = (props: EditableItemListProps): React.ReactElement => {\n const {\n isInvalid = false,\n items,\n onAdd = () => undefined,\n onDelete = () => undefined,\n validate = () => null,\n } = props;\n const [inputError, setInputError] = useState<Error | null>(null);\n const [selectedIndex, setSelectedIndex] = useState<number | undefined>();\n const [value, setValue] = useState('');\n\n const handleSelect = useCallback(index => {\n setSelectedIndex(index);\n }, []);\n\n const handleDelete = useCallback(() => {\n const newIndex =\n selectedIndex === items.length - 1 ? items.length - 2 : selectedIndex;\n if (\n selectedIndex !== undefined &&\n selectedIndex >= 0 &&\n selectedIndex < items.length\n ) {\n onDelete(items[selectedIndex]);\n }\n setSelectedIndex(newIndex === -1 ? undefined : newIndex);\n }, [items, selectedIndex, onDelete]);\n\n const handleAdd = useCallback(() => {\n const validationError = validate(value);\n if (validationError == null) {\n onAdd(value);\n setValue('');\n } else {\n setInputError(validationError);\n }\n }, [value, onAdd, validate]);\n\n const handleInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const { value: inputValue } = event.target;\n setValue(inputValue);\n setInputError(validate(inputValue));\n },\n [validate]\n );\n\n const handleInputFocus = useCallback(() => {\n setSelectedIndex(undefined);\n }, []);\n\n const handleInputKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n handleAdd();\n }\n },\n [handleAdd]\n );\n\n const selectedRanges = useMemo(\n (): Range[] =>\n selectedIndex === undefined ? [] : [[selectedIndex, selectedIndex]],\n [selectedIndex]\n );\n const containerHeight = useMemo(\n (): number => 14 + clamp(items.length, 1, 6) * ItemList.DEFAULT_ROW_HEIGHT,\n [items.length]\n );\n\n return (\n <div\n className={classNames('editable-item-list-container', {\n 'is-invalid': isInvalid,\n })}\n >\n <div style={{ height: containerHeight }}>\n <ItemList\n itemCount={items.length}\n items={items.map((item, index) => ({\n value: item,\n isSelected: index === selectedIndex,\n }))}\n offset={0}\n onSelect={handleSelect}\n selectedRanges={selectedRanges}\n />\n </div>\n <div className=\"d-flex flex-row pt-2\">\n <div className=\"d-flex flex-grow-1\">\n <input\n className={classNames('form-control', {\n 'is-invalid': inputError != null,\n })}\n placeholder=\"Enter value\"\n type=\"text\"\n value={value}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onKeyDown={handleInputKeyDown}\n />\n </div>\n <div className=\"d-flex align-items-start mt-1 ml-2\">\n <Button\n kind=\"ghost\"\n onClick={handleAdd}\n disabled={inputError != null || value == null || value === ''}\n icon={vsAdd}\n tooltip=\"Add new item\"\n />\n <Button\n kind=\"ghost\"\n onClick={handleDelete}\n disabled={selectedIndex === undefined}\n icon={vsTrash}\n tooltip=\"Delete selected item\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default EditableItemList;\n"],"file":"EditableItemList.js"}
package/dist/Option.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
2
  export declare type OptionProps = {
3
3
  children: React.ReactNode;
4
+ disabled?: boolean;
4
5
  value: string;
5
6
  'data-testid'?: string;
6
7
  };
7
- declare const Option: ({ children, value, "data-testid": dataTestId, }: OptionProps) => JSX.Element;
8
+ declare const Option: ({ children, disabled, value, "data-testid": dataTestId, }: OptionProps) => JSX.Element;
8
9
  export default Option;
9
10
  //# sourceMappingURL=Option.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../src/Option.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,oBAAY,WAAW,GAAG;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,MAAM,oDAIT,WAAW,KAAG,WAIhB,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../src/Option.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,oBAAY,WAAW,GAAG;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,MAAM,8DAKT,WAAW,KAAG,WAIhB,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/dist/Option.js CHANGED
@@ -3,11 +3,13 @@ import React from 'react';
3
3
  var Option = _ref => {
4
4
  var {
5
5
  children,
6
+ disabled,
6
7
  value,
7
8
  'data-testid': dataTestId
8
9
  } = _ref;
9
10
  return /*#__PURE__*/React.createElement("option", {
10
11
  value: value,
12
+ disabled: disabled,
11
13
  "data-testid": dataTestId
12
14
  }, children);
13
15
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Option.tsx"],"names":["React","Option","children","value","dataTestId"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAQA,IAAMC,MAAM,GAAG;AAAA,MAAC;AACdC,IAAAA,QADc;AAEdC,IAAAA,KAFc;AAGd,mBAAeC;AAHD,GAAD;AAAA,sBAKb;AAAQ,IAAA,KAAK,EAAED,KAAf;AAAsB,mBAAaC;AAAnC,KACGF,QADH,CALa;AAAA,CAAf;;AAUA,eAAeD,MAAf","sourcesContent":["import React from 'react';\n\nexport type OptionProps = {\n children: React.ReactNode;\n value: string;\n 'data-testid'?: string;\n};\n\nconst Option = ({\n children,\n value,\n 'data-testid': dataTestId,\n}: OptionProps): JSX.Element => (\n <option value={value} data-testid={dataTestId}>\n {children}\n </option>\n);\n\nexport default Option;\n"],"file":"Option.js"}
1
+ {"version":3,"sources":["../src/Option.tsx"],"names":["React","Option","children","disabled","value","dataTestId"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;;AASA,IAAMC,MAAM,GAAG;AAAA,MAAC;AACdC,IAAAA,QADc;AAEdC,IAAAA,QAFc;AAGdC,IAAAA,KAHc;AAId,mBAAeC;AAJD,GAAD;AAAA,sBAMb;AAAQ,IAAA,KAAK,EAAED,KAAf;AAAsB,IAAA,QAAQ,EAAED,QAAhC;AAA0C,mBAAaE;AAAvD,KACGH,QADH,CANa;AAAA,CAAf;;AAWA,eAAeD,MAAf","sourcesContent":["import React from 'react';\n\nexport type OptionProps = {\n children: React.ReactNode;\n disabled?: boolean;\n value: string;\n 'data-testid'?: string;\n};\n\nconst Option = ({\n children,\n disabled,\n value,\n 'data-testid': dataTestId,\n}: OptionProps): JSX.Element => (\n <option value={value} disabled={disabled} data-testid={dataTestId}>\n {children}\n </option>\n);\n\nexport default Option;\n"],"file":"Option.js"}
package/dist/Select.d.ts CHANGED
@@ -1,13 +1,15 @@
1
1
  import React from 'react';
2
2
  export declare type SelectProps = {
3
3
  children: React.ReactNode;
4
+ onBlur?: React.FocusEventHandler<HTMLSelectElement>;
4
5
  onChange: (value: string) => void;
5
6
  className?: string;
6
7
  defaultValue?: string;
8
+ name?: string;
7
9
  value?: string;
8
10
  disabled?: boolean;
9
11
  'data-testid'?: string;
10
12
  };
11
- declare const Select: ({ children, onChange, className, defaultValue, value, disabled, "data-testid": dataTestId, }: SelectProps) => JSX.Element;
13
+ declare const Select: ({ children, onBlur, onChange, className, defaultValue, name, value, disabled, "data-testid": dataTestId, }: SelectProps) => JSX.Element;
12
14
  export default Select;
13
15
  //# sourceMappingURL=Select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../src/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAG3C,oBAAY,WAAW,GAAG;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,MAAM,iGAQT,WAAW,KAAG,WAoBhB,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../src/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAG3C,oBAAY,WAAW,GAAG;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACpD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,MAAM,+GAUT,WAAW,KAAG,WAsBhB,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/dist/Select.js CHANGED
@@ -4,9 +4,11 @@ import classNames from 'classnames';
4
4
  var Select = _ref => {
5
5
  var {
6
6
  children,
7
+ onBlur,
7
8
  onChange,
8
9
  className,
9
10
  defaultValue,
11
+ name,
10
12
  value,
11
13
  disabled,
12
14
  'data-testid': dataTestId
@@ -16,9 +18,11 @@ var Select = _ref => {
16
18
  }, [onChange]);
17
19
  return /*#__PURE__*/React.createElement("select", {
18
20
  className: classNames('custom-select', className),
21
+ onBlur: onBlur,
19
22
  onChange: handleChange,
20
23
  defaultValue: defaultValue,
21
24
  value: value,
25
+ name: name,
22
26
  disabled: disabled,
23
27
  "data-testid": dataTestId
24
28
  }, children);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Select.tsx"],"names":["React","useCallback","classNames","Select","children","onChange","className","defaultValue","value","disabled","dataTestId","handleChange","event","target"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,WAAhB,QAAmC,OAAnC;AACA,OAAOC,UAAP,MAAuB,YAAvB;;AAYA,IAAMC,MAAM,GAAG,QAQiB;AAAA,MARhB;AACdC,IAAAA,QADc;AAEdC,IAAAA,QAFc;AAGdC,IAAAA,SAHc;AAIdC,IAAAA,YAJc;AAKdC,IAAAA,KALc;AAMdC,IAAAA,QANc;AAOd,mBAAeC;AAPD,GAQgB;AAC9B,MAAMC,YAAY,GAAGV,WAAW,CAC9BW,KAAK,IAAI;AACPP,IAAAA,QAAQ,CAACO,KAAK,CAACC,MAAN,CAAaL,KAAd,CAAR;AACD,GAH6B,EAI9B,CAACH,QAAD,CAJ8B,CAAhC;AAOA,sBACE;AACE,IAAA,SAAS,EAAEH,UAAU,CAAC,eAAD,EAAkBI,SAAlB,CADvB;AAEE,IAAA,QAAQ,EAAEK,YAFZ;AAGE,IAAA,YAAY,EAAEJ,YAHhB;AAIE,IAAA,KAAK,EAAEC,KAJT;AAKE,IAAA,QAAQ,EAAEC,QALZ;AAME,mBAAaC;AANf,KAQGN,QARH,CADF;AAYD,CA5BD;;AA8BA,eAAeD,MAAf","sourcesContent":["import React, { useCallback } from 'react';\nimport classNames from 'classnames';\n\nexport type SelectProps = {\n children: React.ReactNode;\n onChange: (value: string) => void;\n className?: string;\n defaultValue?: string;\n value?: string;\n disabled?: boolean;\n 'data-testid'?: string;\n};\n\nconst Select = ({\n children,\n onChange,\n className,\n defaultValue,\n value,\n disabled,\n 'data-testid': dataTestId,\n}: SelectProps): JSX.Element => {\n const handleChange = useCallback(\n event => {\n onChange(event.target.value);\n },\n [onChange]\n );\n\n return (\n <select\n className={classNames('custom-select', className)}\n onChange={handleChange}\n defaultValue={defaultValue}\n value={value}\n disabled={disabled}\n data-testid={dataTestId}\n >\n {children}\n </select>\n );\n};\n\nexport default Select;\n"],"file":"Select.js"}
1
+ {"version":3,"sources":["../src/Select.tsx"],"names":["React","useCallback","classNames","Select","children","onBlur","onChange","className","defaultValue","name","value","disabled","dataTestId","handleChange","event","target"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,WAAhB,QAAmC,OAAnC;AACA,OAAOC,UAAP,MAAuB,YAAvB;;AAcA,IAAMC,MAAM,GAAG,QAUiB;AAAA,MAVhB;AACdC,IAAAA,QADc;AAEdC,IAAAA,MAFc;AAGdC,IAAAA,QAHc;AAIdC,IAAAA,SAJc;AAKdC,IAAAA,YALc;AAMdC,IAAAA,IANc;AAOdC,IAAAA,KAPc;AAQdC,IAAAA,QARc;AASd,mBAAeC;AATD,GAUgB;AAC9B,MAAMC,YAAY,GAAGZ,WAAW,CAC9Ba,KAAK,IAAI;AACPR,IAAAA,QAAQ,CAACQ,KAAK,CAACC,MAAN,CAAaL,KAAd,CAAR;AACD,GAH6B,EAI9B,CAACJ,QAAD,CAJ8B,CAAhC;AAOA,sBACE;AACE,IAAA,SAAS,EAAEJ,UAAU,CAAC,eAAD,EAAkBK,SAAlB,CADvB;AAEE,IAAA,MAAM,EAAEF,MAFV;AAGE,IAAA,QAAQ,EAAEQ,YAHZ;AAIE,IAAA,YAAY,EAAEL,YAJhB;AAKE,IAAA,KAAK,EAAEE,KALT;AAME,IAAA,IAAI,EAAED,IANR;AAOE,IAAA,QAAQ,EAAEE,QAPZ;AAQE,mBAAaC;AARf,KAUGR,QAVH,CADF;AAcD,CAhCD;;AAkCA,eAAeD,MAAf","sourcesContent":["import React, { useCallback } from 'react';\nimport classNames from 'classnames';\n\nexport type SelectProps = {\n children: React.ReactNode;\n onBlur?: React.FocusEventHandler<HTMLSelectElement>;\n onChange: (value: string) => void;\n className?: string;\n defaultValue?: string;\n name?: string;\n value?: string;\n disabled?: boolean;\n 'data-testid'?: string;\n};\n\nconst Select = ({\n children,\n onBlur,\n onChange,\n className,\n defaultValue,\n name,\n value,\n disabled,\n 'data-testid': dataTestId,\n}: SelectProps): JSX.Element => {\n const handleChange = useCallback(\n event => {\n onChange(event.target.value);\n },\n [onChange]\n );\n\n return (\n <select\n className={classNames('custom-select', className)}\n onBlur={onBlur}\n onChange={handleChange}\n defaultValue={defaultValue}\n value={value}\n name={name}\n disabled={disabled}\n data-testid={dataTestId}\n >\n {children}\n </select>\n );\n};\n\nexport default Select;\n"],"file":"Select.js"}
@@ -5,6 +5,9 @@
5
5
  border-radius: 4px;
6
6
  padding: 0.375rem 0 0.375rem;
7
7
  }
8
+ .select-value-list-scroll-pane.is-invalid {
9
+ border-color: rgba(249, 93, 132, 0.85);
10
+ }
8
11
 
9
12
  .select-value-list {
10
13
  position: relative;
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/SelectValueList.scss","../scss/bootstrap_overrides.scss","../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA;EACA,eCmHc;EDlHd;;;AAGF;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE,YCNG;;ADSL;EACE,aEmWsB;EFlWtB;EACA","file":"SelectValueList.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../src/SelectValueList.scss","../scss/bootstrap_overrides.scss","../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA;EACA,eCmHc;EDlHd;;AAEA;EACE;;;AAIJ;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE,YCVG;;ADaL;EACE,aE+VsB;EF9VtB;EACA","file":"SelectValueList.css"}
@@ -7,7 +7,9 @@ export interface SelectItem<T> {
7
7
  isSelected: boolean;
8
8
  }
9
9
  declare type SelectValueListProps<T> = {
10
+ className?: string;
10
11
  disabled: boolean;
12
+ isInvalid?: boolean;
11
13
  itemCount: number;
12
14
  rowHeight: number;
13
15
  offset: number;
@@ -1 +1 @@
1
- {"version":3,"file":"SelectValueList.d.ts","sourceRoot":"","sources":["../src/SelectValueList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,wBAAwB,CAAC;AAChC,OAAO,OAAO,MAAM,UAAU,CAAC;AAG/B,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,aAAK,oBAAoB,CAAC,CAAC,IAAI;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAElB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACnD,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,cAAM,eAAe,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,YAAY;;;;MAIjB;gBAEU,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAW1C,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,IAAI,IAAI;IAI1B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAEtC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,aAAa,eAEE,MAAM,OACZ,MAAM,SACJ,CAAC,gBACM,MAAM,GAAG,SAAS,aACrB,MAAM,cACL,OAAO,YACT,OAAO,KAChB,WAAW,iCAPD,MAAM,OACZ,MAAM,SACJ,CAAC,gBACM,MAAM,GAAG,SAAS,aACrB,MAAM,cACL,OAAO,YACT,OAAO,KAChB,WAAW,EAmBd;IAEF,cAAc,WAEH,WAAW,CAAC,CAAC,EAAE,aACX,MAAM,UACT,MAAM,YACJ,OAAO,KAChB,MAAM,SAAS,6BAJT,WAAW,CAAC,CAAC,EAAE,aACX,MAAM,UACT,MAAM,YACJ,OAAO,KAChB,MAAM,SAAS,EAqBlB;IAEF,YAAY,IAAI,IAAI;IAIpB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAYrC,kBAAkB,IAAI,IAAI;IAmB1B,MAAM,IAAI,GAAG,CAAC,OAAO;CA0CtB;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"SelectValueList.d.ts","sourceRoot":"","sources":["../src/SelectValueList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,wBAAwB,CAAC;AAEhC,OAAO,OAAO,MAAM,UAAU,CAAC;AAG/B,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,aAAK,oBAAoB,CAAC,CAAC,IAAI;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACnD,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,cAAM,eAAe,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,YAAY;;;;MAIjB;gBAEU,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAW1C,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,IAAI,IAAI;IAI1B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAEtC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,aAAa,eAEE,MAAM,OACZ,MAAM,SACJ,CAAC,gBACM,MAAM,GAAG,SAAS,aACrB,MAAM,cACL,OAAO,YACT,OAAO,KAChB,WAAW,iCAPD,MAAM,OACZ,MAAM,SACJ,CAAC,gBACM,MAAM,GAAG,SAAS,aACrB,MAAM,cACL,OAAO,YACT,OAAO,KAChB,WAAW,EAmBd;IAEF,cAAc,WAEH,WAAW,CAAC,CAAC,EAAE,aACX,MAAM,UACT,MAAM,YACJ,OAAO,KAChB,MAAM,SAAS,6BAJT,WAAW,CAAC,CAAC,EAAE,aACX,MAAM,UACT,MAAM,YACJ,OAAO,KAChB,MAAM,SAAS,EAqBlB;IAEF,YAAY,IAAI,IAAI;IAIpB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAYrC,kBAAkB,IAAI,IAAI;IAmB1B,MAAM,IAAI,GAAG,CAAC,OAAO;CAgDtB;AAED,eAAe,eAAe,CAAC"}
@@ -2,6 +2,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
2
2
 
3
3
  import React, { PureComponent } from 'react';
4
4
  import "./SelectValueList.css";
5
+ import classNames from 'classnames';
5
6
  import memoize from 'memoizee';
6
7
  import Checkbox from "./Checkbox.js";
7
8
 
@@ -121,7 +122,9 @@ class SelectValueList extends PureComponent {
121
122
 
122
123
  render() {
123
124
  var {
125
+ className,
124
126
  disabled,
127
+ isInvalid,
125
128
  items,
126
129
  itemCount,
127
130
  offset,
@@ -130,7 +133,9 @@ class SelectValueList extends PureComponent {
130
133
  } = this.props;
131
134
  var itemElements = this.getCachedItems(items, rowHeight, offset, disabled);
132
135
  return /*#__PURE__*/React.createElement("div", {
133
- className: "select-value-list-scroll-pane h-100 w-100",
136
+ className: classNames('select-value-list-scroll-pane h-100 w-100', {
137
+ 'is-invalid': isInvalid
138
+ }, className),
134
139
  onScroll: this.handleScroll,
135
140
  ref: this.list,
136
141
  "data-testid": dataTestId
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/SelectValueList.tsx"],"names":["React","PureComponent","memoize","Checkbox","SelectValueList","constructor","props","itemIndex","key","value","displayValue","rowHeight","isSelected","disabled","style","height","text","handleSelect","max","items","offset","itemElements","i","length","item","element","getCachedItem","push","handleScroll","bind","list","createRef","topRow","bottomRow","componentDidMount","sendViewportUpdate","componentDidUpdate","onSelect","visibleItemIndex","current","clientHeight","onViewportChange","top","scrollTop","bottom","Math","floor","ceil","render","itemCount","dataTestId","getCachedItems","position","left","undefined"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport './SelectValueList.scss';\nimport memoize from 'memoizee';\nimport Checkbox from './Checkbox';\n\nexport interface SelectItem<T> {\n value: T;\n displayValue?: string;\n isSelected: boolean;\n}\n\ntype SelectValueListProps<T> = {\n disabled: boolean;\n // Total item count\n itemCount: number;\n rowHeight: number;\n\n // Offset of the top item in the items array\n offset: number;\n items: SelectItem<T>[];\n\n onSelect(itemIndex: number, value: T | null): void;\n onViewportChange(topRow: number, bottomRow: number): void;\n\n 'data-testid'?: string;\n};\n\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass SelectValueList<T> extends PureComponent<SelectValueListProps<T>> {\n static defaultProps = {\n disabled: false,\n rowHeight: 21,\n 'data-testid': undefined,\n };\n\n constructor(props: SelectValueListProps<T>) {\n super(props);\n\n this.handleScroll = this.handleScroll.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n\n this.list = React.createRef();\n this.topRow = null;\n this.bottomRow = null;\n }\n\n componentDidMount(): void {\n this.sendViewportUpdate();\n }\n\n componentDidUpdate(): void {\n this.sendViewportUpdate();\n }\n\n list: React.RefObject<HTMLDivElement>;\n\n topRow: number | null;\n\n bottomRow: number | null;\n\n getCachedItem = memoize(\n (\n itemIndex: number,\n key: number,\n value: T,\n displayValue: string | undefined,\n rowHeight: number,\n isSelected: boolean,\n disabled: boolean\n ): JSX.Element => {\n const style = {\n height: rowHeight,\n };\n const text = displayValue != null ? displayValue : value;\n\n return (\n <li className=\"value-list-item\" style={style} key={key}>\n <Checkbox\n checked={isSelected}\n disabled={disabled}\n onChange={() => this.handleSelect(itemIndex)}\n >\n {text}\n </Checkbox>\n </li>\n );\n },\n { max: 1000 }\n );\n\n getCachedItems = memoize(\n (\n items: SelectItem<T>[],\n rowHeight: number,\n offset: number,\n disabled: boolean\n ): React.ReactNode => {\n const itemElements: JSX.Element[] = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { value, displayValue, isSelected } = item;\n const itemIndex = offset + i;\n const key = itemIndex;\n const element = this.getCachedItem(\n itemIndex,\n key,\n value,\n displayValue,\n rowHeight,\n isSelected,\n disabled\n );\n itemElements.push(element);\n }\n return itemElements;\n },\n { max: 1 }\n );\n\n handleScroll(): void {\n this.sendViewportUpdate();\n }\n\n handleSelect(itemIndex: number): void {\n const { items, offset, onSelect } = this.props;\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n const item = items[visibleItemIndex];\n const { value } = item;\n onSelect(itemIndex, value);\n } else {\n onSelect(itemIndex, null);\n }\n }\n\n sendViewportUpdate(): void {\n if (!this.list.current || this.list.current.clientHeight === 0) {\n return;\n }\n\n const { onViewportChange, rowHeight } = this.props;\n const top = this.list.current.scrollTop;\n const bottom = top + this.list.current.clientHeight;\n\n const topRow = Math.floor(top / rowHeight);\n const bottomRow = Math.ceil(bottom / rowHeight);\n\n if (this.topRow !== topRow || this.bottomRow !== bottomRow) {\n this.topRow = topRow;\n this.bottomRow = bottomRow;\n onViewportChange(topRow, bottomRow);\n }\n }\n\n render(): JSX.Element {\n const {\n disabled,\n items,\n itemCount,\n offset,\n rowHeight,\n 'data-testid': dataTestId,\n } = this.props;\n const itemElements = this.getCachedItems(\n items,\n rowHeight,\n offset,\n disabled\n );\n\n return (\n <div\n className=\"select-value-list-scroll-pane h-100 w-100\"\n onScroll={this.handleScroll}\n ref={this.list}\n data-testid={dataTestId}\n >\n <div\n className=\"select-value-list\"\n style={{ height: itemCount * rowHeight }}\n >\n <ol\n className=\"select-value-list-content\"\n style={{\n position: 'absolute',\n height: items.length * rowHeight,\n top: offset * rowHeight,\n left: 0,\n }}\n >\n {itemElements}\n </ol>\n </div>\n </div>\n );\n }\n}\n\nexport default SelectValueList;\n"],"file":"SelectValueList.js"}
1
+ {"version":3,"sources":["../src/SelectValueList.tsx"],"names":["React","PureComponent","classNames","memoize","Checkbox","SelectValueList","constructor","props","itemIndex","key","value","displayValue","rowHeight","isSelected","disabled","style","height","text","handleSelect","max","items","offset","itemElements","i","length","item","element","getCachedItem","push","handleScroll","bind","list","createRef","topRow","bottomRow","componentDidMount","sendViewportUpdate","componentDidUpdate","onSelect","visibleItemIndex","current","clientHeight","onViewportChange","top","scrollTop","bottom","Math","floor","ceil","render","className","isInvalid","itemCount","dataTestId","getCachedItems","position","left","undefined"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport './SelectValueList.scss';\nimport classNames from 'classnames';\nimport memoize from 'memoizee';\nimport Checkbox from './Checkbox';\n\nexport interface SelectItem<T> {\n value: T;\n displayValue?: string;\n isSelected: boolean;\n}\n\ntype SelectValueListProps<T> = {\n className?: string;\n disabled: boolean;\n isInvalid?: boolean;\n // Total item count\n itemCount: number;\n rowHeight: number;\n\n // Offset of the top item in the items array\n offset: number;\n items: SelectItem<T>[];\n\n onSelect(itemIndex: number, value: T | null): void;\n onViewportChange(topRow: number, bottomRow: number): void;\n\n 'data-testid'?: string;\n};\n\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass SelectValueList<T> extends PureComponent<SelectValueListProps<T>> {\n static defaultProps = {\n disabled: false,\n rowHeight: 21,\n 'data-testid': undefined,\n };\n\n constructor(props: SelectValueListProps<T>) {\n super(props);\n\n this.handleScroll = this.handleScroll.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n\n this.list = React.createRef();\n this.topRow = null;\n this.bottomRow = null;\n }\n\n componentDidMount(): void {\n this.sendViewportUpdate();\n }\n\n componentDidUpdate(): void {\n this.sendViewportUpdate();\n }\n\n list: React.RefObject<HTMLDivElement>;\n\n topRow: number | null;\n\n bottomRow: number | null;\n\n getCachedItem = memoize(\n (\n itemIndex: number,\n key: number,\n value: T,\n displayValue: string | undefined,\n rowHeight: number,\n isSelected: boolean,\n disabled: boolean\n ): JSX.Element => {\n const style = {\n height: rowHeight,\n };\n const text = displayValue != null ? displayValue : value;\n\n return (\n <li className=\"value-list-item\" style={style} key={key}>\n <Checkbox\n checked={isSelected}\n disabled={disabled}\n onChange={() => this.handleSelect(itemIndex)}\n >\n {text}\n </Checkbox>\n </li>\n );\n },\n { max: 1000 }\n );\n\n getCachedItems = memoize(\n (\n items: SelectItem<T>[],\n rowHeight: number,\n offset: number,\n disabled: boolean\n ): React.ReactNode => {\n const itemElements: JSX.Element[] = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { value, displayValue, isSelected } = item;\n const itemIndex = offset + i;\n const key = itemIndex;\n const element = this.getCachedItem(\n itemIndex,\n key,\n value,\n displayValue,\n rowHeight,\n isSelected,\n disabled\n );\n itemElements.push(element);\n }\n return itemElements;\n },\n { max: 1 }\n );\n\n handleScroll(): void {\n this.sendViewportUpdate();\n }\n\n handleSelect(itemIndex: number): void {\n const { items, offset, onSelect } = this.props;\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n const item = items[visibleItemIndex];\n const { value } = item;\n onSelect(itemIndex, value);\n } else {\n onSelect(itemIndex, null);\n }\n }\n\n sendViewportUpdate(): void {\n if (!this.list.current || this.list.current.clientHeight === 0) {\n return;\n }\n\n const { onViewportChange, rowHeight } = this.props;\n const top = this.list.current.scrollTop;\n const bottom = top + this.list.current.clientHeight;\n\n const topRow = Math.floor(top / rowHeight);\n const bottomRow = Math.ceil(bottom / rowHeight);\n\n if (this.topRow !== topRow || this.bottomRow !== bottomRow) {\n this.topRow = topRow;\n this.bottomRow = bottomRow;\n onViewportChange(topRow, bottomRow);\n }\n }\n\n render(): JSX.Element {\n const {\n className,\n disabled,\n isInvalid,\n items,\n itemCount,\n offset,\n rowHeight,\n 'data-testid': dataTestId,\n } = this.props;\n const itemElements = this.getCachedItems(\n items,\n rowHeight,\n offset,\n disabled\n );\n\n return (\n <div\n className={classNames(\n 'select-value-list-scroll-pane h-100 w-100',\n { 'is-invalid': isInvalid },\n className\n )}\n onScroll={this.handleScroll}\n ref={this.list}\n data-testid={dataTestId}\n >\n <div\n className=\"select-value-list\"\n style={{ height: itemCount * rowHeight }}\n >\n <ol\n className=\"select-value-list-content\"\n style={{\n position: 'absolute',\n height: items.length * rowHeight,\n top: offset * rowHeight,\n left: 0,\n }}\n >\n {itemElements}\n </ol>\n </div>\n </div>\n );\n }\n}\n\nexport default SelectValueList;\n"],"file":"SelectValueList.js"}
package/dist/index.d.ts CHANGED
@@ -24,6 +24,7 @@ export { default as DeephavenSpinner } from './DeephavenSpinner';
24
24
  export { default as DraggableItemList } from './DraggableItemList';
25
25
  export * from './DraggableItemList';
26
26
  export { default as DragUtils } from './DragUtils';
27
+ export { default as EditableItemList } from './EditableItemList';
27
28
  export { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';
28
29
  export * from './HierarchicalCheckboxMenu';
29
30
  export * from './ItemList';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,CAAC,EAAE,OAAO,CAAC,CAAC;QACZ,MAAM,EAAE,OAAO,CAAC,CAAC;KAClB;CACF;AAKD,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -19,6 +19,7 @@ export { default as DeephavenSpinner } from "./DeephavenSpinner.js";
19
19
  export { default as DraggableItemList } from "./DraggableItemList.js";
20
20
  export * from "./DraggableItemList.js";
21
21
  export { default as DragUtils } from "./DragUtils.js";
22
+ export { default as EditableItemList } from "./EditableItemList.js";
22
23
  export { default as HierarchicalCheckboxMenu } from "./HierarchicalCheckboxMenu.js";
23
24
  export * from "./HierarchicalCheckboxMenu.js";
24
25
  export * from "./ItemList.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["$","window","jQuery","default","AutoCompleteInput","AutoResizeTextarea","BasicModal","Button","ButtonGroup","ButtonOld","CardFlip","Collapse","Checkbox","ComboBox","CustomTimeSelect","DebouncedSearchInput","DeephavenSpinner","DraggableItemList","DragUtils","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RadioGroup","RadioItem","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch","ValidateLabelInput"],"mappings":"AAAA;AACA,OAAO,KAAKA,CAAZ,MAAmB,QAAnB;AASAC,MAAM,CAACD,CAAP,GAAWA,CAAX;AACAC,MAAM,CAACC,MAAP,GAAgBF,CAAhB;SAGSG,OAAO,IAAIC,iB;SACXD,OAAO,IAAIE,kB;SACXF,OAAO,IAAIG,U;SACXH,OAAO,IAAII,M;SACXJ,OAAO,IAAIK,W;SACXL,OAAO,IAAIM,S;SACXN,OAAO,IAAIO,Q;;SAEXP,OAAO,IAAIQ,Q;SACXR,OAAO,IAAIS,Q;SACXT,OAAO,IAAIU,Q;SACXV,OAAO,IAAIW,gB;SACXX,OAAO,IAAIY,oB;SACXZ,OAAO,IAAIa,gB;SACXb,OAAO,IAAIc,iB;;SAEXd,OAAO,IAAIe,S;SACXf,OAAO,IAAIgB,wB;;;SAGXhB,OAAO,IAAIiB,Y;SACXjB,OAAO,IAAIkB,c;SACXlB,OAAO,IAAImB,c;SACXnB,OAAO,IAAIoB,Y;;SAEXpB,OAAO,IAAIqB,W;;;SAGXrB,OAAO,IAAIsB,M;;;SAGXtB,OAAO,IAAIuB,U;SACXvB,OAAO,IAAIwB,S;SACXxB,OAAO,IAAIyB,M;SACXzB,OAAO,IAAI0B,W;SACX1B,OAAO,IAAI2B,e;;;SAGX3B,OAAO,IAAI4B,c;SACX5B,OAAO,IAAI6B,W;SACX7B,OAAO,IAAI8B,S;SACX9B,OAAO,IAAI+B,U;SACX/B,OAAO,IAAIgC,iB;SACXhC,OAAO,IAAIiC,Q;SACXjC,OAAO,IAAIkC,kB","sourcesContent":["/** Shim for using jquery in frameworks included by react (such as bootstrap) */\nimport * as $ from 'jquery';\n\ndeclare global {\n interface Window {\n $: typeof $;\n jQuery: typeof $;\n }\n}\n\nwindow.$ = $;\nwindow.jQuery = $;\n\nexport type { Range } from '@deephaven/utils';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport { default as Button } from './Button';\nexport { default as ButtonGroup } from './ButtonGroup';\nexport { default as ButtonOld } from './ButtonOld';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport { default as ComboBox } from './ComboBox';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport { default as DeephavenSpinner } from './DeephavenSpinner';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './MaskedInput';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RadioGroup } from './RadioGroup';\nexport { default as RadioItem } from './RadioItem';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport { default as UISwitch } from './UISwitch';\nexport { default as ValidateLabelInput } from './ValidateLabelInput';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["$","window","jQuery","default","AutoCompleteInput","AutoResizeTextarea","BasicModal","Button","ButtonGroup","ButtonOld","CardFlip","Collapse","Checkbox","ComboBox","CustomTimeSelect","DebouncedSearchInput","DeephavenSpinner","DraggableItemList","DragUtils","EditableItemList","HierarchicalCheckboxMenu","ItemListItem","LoadingOverlay","LoadingSpinner","DropdownMenu","MaskedInput","Option","RadioGroup","RadioItem","Select","SearchInput","SelectValueList","SocketedButton","ThemeExport","TimeInput","TimeSlider","ToastNotification","UISwitch","ValidateLabelInput"],"mappings":"AAAA;AACA,OAAO,KAAKA,CAAZ,MAAmB,QAAnB;AASAC,MAAM,CAACD,CAAP,GAAWA,CAAX;AACAC,MAAM,CAACC,MAAP,GAAgBF,CAAhB;SAGSG,OAAO,IAAIC,iB;SACXD,OAAO,IAAIE,kB;SACXF,OAAO,IAAIG,U;SACXH,OAAO,IAAII,M;SACXJ,OAAO,IAAIK,W;SACXL,OAAO,IAAIM,S;SACXN,OAAO,IAAIO,Q;;SAEXP,OAAO,IAAIQ,Q;SACXR,OAAO,IAAIS,Q;SACXT,OAAO,IAAIU,Q;SACXV,OAAO,IAAIW,gB;SACXX,OAAO,IAAIY,oB;SACXZ,OAAO,IAAIa,gB;SACXb,OAAO,IAAIc,iB;;SAEXd,OAAO,IAAIe,S;SACXf,OAAO,IAAIgB,gB;SACXhB,OAAO,IAAIiB,wB;;;SAGXjB,OAAO,IAAIkB,Y;SACXlB,OAAO,IAAImB,c;SACXnB,OAAO,IAAIoB,c;SACXpB,OAAO,IAAIqB,Y;;SAEXrB,OAAO,IAAIsB,W;;;SAGXtB,OAAO,IAAIuB,M;;;SAGXvB,OAAO,IAAIwB,U;SACXxB,OAAO,IAAIyB,S;SACXzB,OAAO,IAAI0B,M;SACX1B,OAAO,IAAI2B,W;SACX3B,OAAO,IAAI4B,e;;;SAGX5B,OAAO,IAAI6B,c;SACX7B,OAAO,IAAI8B,W;SACX9B,OAAO,IAAI+B,S;SACX/B,OAAO,IAAIgC,U;SACXhC,OAAO,IAAIiC,iB;SACXjC,OAAO,IAAIkC,Q;SACXlC,OAAO,IAAImC,kB","sourcesContent":["/** Shim for using jquery in frameworks included by react (such as bootstrap) */\nimport * as $ from 'jquery';\n\ndeclare global {\n interface Window {\n $: typeof $;\n jQuery: typeof $;\n }\n}\n\nwindow.$ = $;\nwindow.jQuery = $;\n\nexport type { Range } from '@deephaven/utils';\nexport { default as AutoCompleteInput } from './AutoCompleteInput';\nexport { default as AutoResizeTextarea } from './AutoResizeTextarea';\nexport { default as BasicModal } from './BasicModal';\nexport { default as Button } from './Button';\nexport { default as ButtonGroup } from './ButtonGroup';\nexport { default as ButtonOld } from './ButtonOld';\nexport { default as CardFlip } from './CardFlip';\nexport * from './context-actions';\nexport { default as Collapse } from './Collapse';\nexport { default as Checkbox } from './Checkbox';\nexport { default as ComboBox } from './ComboBox';\nexport { default as CustomTimeSelect } from './CustomTimeSelect';\nexport { default as DebouncedSearchInput } from './DebouncedSearchInput';\nexport { default as DeephavenSpinner } from './DeephavenSpinner';\nexport { default as DraggableItemList } from './DraggableItemList';\nexport * from './DraggableItemList';\nexport { default as DragUtils } from './DragUtils';\nexport { default as EditableItemList } from './EditableItemList';\nexport { default as HierarchicalCheckboxMenu } from './HierarchicalCheckboxMenu';\nexport * from './HierarchicalCheckboxMenu';\nexport * from './ItemList';\nexport { default as ItemListItem } from './ItemListItem';\nexport { default as LoadingOverlay } from './LoadingOverlay';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as DropdownMenu } from './menu-actions';\nexport * from './menu-actions';\nexport { default as MaskedInput } from './MaskedInput';\nexport * from './MaskedInput';\nexport * from './navigation';\nexport { default as Option } from './Option';\nexport * from './popper';\nexport * from './modal';\nexport { default as RadioGroup } from './RadioGroup';\nexport { default as RadioItem } from './RadioItem';\nexport { default as Select } from './Select';\nexport { default as SearchInput } from './SearchInput';\nexport { default as SelectValueList } from './SelectValueList';\nexport * from './SelectValueList';\nexport * from './shortcuts';\nexport { default as SocketedButton } from './SocketedButton';\nexport { default as ThemeExport } from './ThemeExport';\nexport { default as TimeInput } from './TimeInput';\nexport { default as TimeSlider } from './TimeSlider';\nexport { default as ToastNotification } from './ToastNotification';\nexport { default as UISwitch } from './UISwitch';\nexport { default as ValidateLabelInput } from './ValidateLabelInput';\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/components",
3
- "version": "0.15.7-beta.3+3214155",
3
+ "version": "0.16.1-beta.1+76662f5",
4
4
  "description": "Deephaven React component library",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -30,16 +30,17 @@
30
30
  "start": "cross-env NODE_ENV=development npm run watch"
31
31
  },
32
32
  "dependencies": {
33
- "@deephaven/icons": "^0.15.7-beta.3+3214155",
34
- "@deephaven/log": "^0.15.7-beta.3+3214155",
35
- "@deephaven/react-hooks": "^0.15.7-beta.3+3214155",
36
- "@deephaven/utils": "^0.15.7-beta.3+3214155",
33
+ "@deephaven/icons": "^0.16.1-beta.1+76662f5",
34
+ "@deephaven/log": "^0.16.1-beta.1+76662f5",
35
+ "@deephaven/react-hooks": "^0.16.1-beta.1+76662f5",
36
+ "@deephaven/utils": "^0.16.1-beta.1+76662f5",
37
37
  "@fortawesome/fontawesome-svg-core": "^6.1.1",
38
38
  "@fortawesome/react-fontawesome": "^0.1.18",
39
39
  "bootstrap": "4.6.1",
40
40
  "classnames": "^2.3.1",
41
41
  "event-target-shim": "^6.0.2",
42
42
  "jquery": "^3.6.0",
43
+ "lodash.clamp": "^4.0.3",
43
44
  "lodash.debounce": "^4.0.8",
44
45
  "lodash.flatten": "^4.4.0",
45
46
  "memoizee": "^0.4.15",
@@ -57,8 +58,8 @@
57
58
  "react-dom": "^17.x"
58
59
  },
59
60
  "devDependencies": {
60
- "@deephaven/mocks": "^0.15.7-beta.3+3214155",
61
- "@deephaven/tsconfig": "^0.15.7-beta.3+3214155"
61
+ "@deephaven/mocks": "^0.16.1-beta.1+76662f5",
62
+ "@deephaven/tsconfig": "^0.16.1-beta.1+76662f5"
62
63
  },
63
64
  "files": [
64
65
  "dist",
@@ -70,5 +71,5 @@
70
71
  "publishConfig": {
71
72
  "access": "public"
72
73
  },
73
- "gitHead": "32141554dfc8a60ff2629fd7aa4e65d79dd35c07"
74
+ "gitHead": "76662f52c5496078e9cc69f30eeae5e25894c412"
74
75
  }