@deephaven/components 0.13.8 → 0.13.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DateTimeInput.d.ts +1 -0
- package/dist/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput.js +22 -3
- package/dist/DateTimeInput.js.map +1 -1
- package/dist/EditableItemList.d.ts +2 -2
- package/dist/EditableItemList.d.ts.map +1 -1
- package/dist/EditableItemList.js +22 -20
- package/dist/EditableItemList.js.map +1 -1
- package/dist/ItemListItem.js +1 -1
- package/dist/ItemListItem.js.map +1 -1
- package/package.json +3 -3
package/dist/DateTimeInput.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ declare type DateTimeInputProps = {
|
|
|
7
7
|
onBlur?(): void;
|
|
8
8
|
'data-testid'?: string;
|
|
9
9
|
};
|
|
10
|
+
export declare function fixIncompleteValue(value: string): string;
|
|
10
11
|
export declare function addSeparators(value: string): string;
|
|
11
12
|
declare const DateTimeInput: React.ForwardRefExoticComponent<DateTimeInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
12
13
|
export default DateTimeInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeInput.d.ts","sourceRoot":"","sources":["../src/DateTimeInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DateTimeInput.d.ts","sourceRoot":"","sources":["../src/DateTimeInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAmBrD,aAAK,kBAAkB,GAAG;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,IAAI,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnD;AAMD,QAAA,MAAM,aAAa,6FAuDlB,CAAC;AAaF,eAAe,aAAa,CAAC"}
|
package/dist/DateTimeInput.js
CHANGED
|
@@ -10,8 +10,16 @@ var DATE_PATTERN = '[12][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])'; //
|
|
|
10
10
|
|
|
11
11
|
var TIME_PATTERN = '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{3}\u200B[0-9]{3}\u200B[0-9]{3}';
|
|
12
12
|
var FULL_DATE_PATTERN = "".concat(DATE_PATTERN, " ").concat(TIME_PATTERN);
|
|
13
|
-
var
|
|
13
|
+
var DATE_VALUE_STRING = '2022-01-01';
|
|
14
|
+
var DEFAULT_VALUE_STRING = "".concat(DATE_VALUE_STRING, " 00:00:00.000000000");
|
|
14
15
|
var FULL_DATE_FORMAT = 'YYYY-MM-DD HH:MM:SS.SSSSSSSSS';
|
|
16
|
+
export function fixIncompleteValue(value) {
|
|
17
|
+
if (value != null && value.length >= DATE_VALUE_STRING.length) {
|
|
18
|
+
return "".concat(value.substring(0, DATE_VALUE_STRING.length)).concat(value.substring(DATE_VALUE_STRING.length).replace(/\u2007/g, '0')).concat(DEFAULT_VALUE_STRING.substring(value.length));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
15
23
|
export function addSeparators(value) {
|
|
16
24
|
var dateTimeMillis = value.substring(0, 23);
|
|
17
25
|
var micros = value.substring(23, 26);
|
|
@@ -36,8 +44,19 @@ var DateTimeInput = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
36
44
|
var handleChange = useCallback(newValue => {
|
|
37
45
|
log.debug('handleChange', newValue);
|
|
38
46
|
setValue(newValue);
|
|
39
|
-
onChange(removeSeparators(newValue));
|
|
47
|
+
onChange(fixIncompleteValue(removeSeparators(newValue)));
|
|
40
48
|
}, [onChange]);
|
|
49
|
+
var handleBlur = useCallback(() => {
|
|
50
|
+
var prevValue = removeSeparators(value);
|
|
51
|
+
var fixedValue = fixIncompleteValue(prevValue); // Update the value displayed in the input
|
|
52
|
+
// onChange with the fixed value already triggered in handleChange
|
|
53
|
+
|
|
54
|
+
if (fixedValue !== prevValue) {
|
|
55
|
+
setValue(addSeparators(fixedValue));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
onBlur();
|
|
59
|
+
}, [value, onBlur]);
|
|
41
60
|
return /*#__PURE__*/React.createElement("div", {
|
|
42
61
|
className: "d-flex flex-row align-items-center"
|
|
43
62
|
}, /*#__PURE__*/React.createElement(MaskedInput, {
|
|
@@ -52,7 +71,7 @@ var DateTimeInput = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
52
71
|
selection: selection,
|
|
53
72
|
value: value,
|
|
54
73
|
onFocus: onFocus,
|
|
55
|
-
onBlur:
|
|
74
|
+
onBlur: handleBlur,
|
|
56
75
|
"data-testid": dataTestId
|
|
57
76
|
}));
|
|
58
77
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/DateTimeInput.tsx"],"names":["React","useCallback","useState","classNames","Log","MaskedInput","getNextSegmentValue","log","module","DATE_PATTERN","TIME_PATTERN","FULL_DATE_PATTERN","DEFAULT_VALUE_STRING","FULL_DATE_FORMAT","
|
|
1
|
+
{"version":3,"sources":["../src/DateTimeInput.tsx"],"names":["React","useCallback","useState","classNames","Log","MaskedInput","getNextSegmentValue","log","module","DATE_PATTERN","TIME_PATTERN","FULL_DATE_PATTERN","DATE_VALUE_STRING","DEFAULT_VALUE_STRING","FULL_DATE_FORMAT","fixIncompleteValue","value","length","substring","replace","addSeparators","dateTimeMillis","micros","nanos","filter","v","join","removeSeparators","EXAMPLES","DateTimeInput","forwardRef","props","ref","className","onChange","undefined","defaultValue","onFocus","onBlur","dataTestId","setValue","selection","setSelection","handleChange","newValue","debug","handleBlur","prevValue","fixedValue","displayName","defaultProps"],"mappings":"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","sourcesContent":["import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport MaskedInput, { SelectionSegment } from './MaskedInput';\nimport { getNextSegmentValue } from './DateInputUtils';\n\nconst log = Log.module('DateTimeInput');\n\n// This could be more restrictive and restrict days to the number of days in the month...\n// But then gotta take leap year into account and everything.\nconst DATE_PATTERN = '[12][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])';\n// Put zero width spaces in the nanosecond part of the date to allow jumping between segments\nconst TIME_PATTERN =\n '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\\\.[0-9]{3}\\u200B[0-9]{3}\\u200B[0-9]{3}';\nconst FULL_DATE_PATTERN = `${DATE_PATTERN} ${TIME_PATTERN}`;\nconst DATE_VALUE_STRING = '2022-01-01';\nconst DEFAULT_VALUE_STRING = `${DATE_VALUE_STRING} 00:00:00.000000000`;\nconst FULL_DATE_FORMAT = 'YYYY-MM-DD HH:MM:SS.SSSSSSSSS';\n\ntype DateTimeInputProps = {\n className?: string;\n onChange?(value?: string): void;\n defaultValue?: string;\n onFocus?(): void;\n onBlur?(): void;\n 'data-testid'?: string;\n};\n\nexport function fixIncompleteValue(value: string): string {\n if (value != null && value.length >= DATE_VALUE_STRING.length) {\n return `${value.substring(0, DATE_VALUE_STRING.length)}${value\n .substring(DATE_VALUE_STRING.length)\n .replace(/\\u2007/g, '0')}${DEFAULT_VALUE_STRING.substring(value.length)}`;\n }\n return value;\n}\n\nexport function addSeparators(value: string): string {\n const dateTimeMillis = value.substring(0, 23);\n const micros = value.substring(23, 26);\n const nanos = value.substring(26);\n return [dateTimeMillis, micros, nanos].filter(v => v !== '').join('\\u200B');\n}\n\nconst removeSeparators = (value: string) => value.replace(/\\u200B/g, '');\n\nconst EXAMPLES = [addSeparators(DEFAULT_VALUE_STRING)];\n\nconst DateTimeInput = React.forwardRef<HTMLInputElement, DateTimeInputProps>(\n (props: DateTimeInputProps, ref) => {\n const {\n className = '',\n onChange = () => undefined,\n defaultValue = '',\n onFocus = () => undefined,\n onBlur = () => undefined,\n 'data-testid': dataTestId,\n } = props;\n const [value, setValue] = useState(\n defaultValue.length > 0 ? addSeparators(defaultValue) : ''\n );\n const [selection, setSelection] = useState<SelectionSegment>();\n\n const handleChange = useCallback(\n (newValue: string): void => {\n log.debug('handleChange', newValue);\n setValue(newValue);\n onChange(fixIncompleteValue(removeSeparators(newValue)));\n },\n [onChange]\n );\n\n const handleBlur = useCallback((): void => {\n const prevValue = removeSeparators(value);\n const fixedValue = fixIncompleteValue(prevValue);\n // Update the value displayed in the input\n // onChange with the fixed value already triggered in handleChange\n if (fixedValue !== prevValue) {\n setValue(addSeparators(fixedValue));\n }\n onBlur();\n }, [value, onBlur]);\n\n return (\n <div className=\"d-flex flex-row align-items-center\">\n <MaskedInput\n ref={ref}\n className={classNames(className)}\n example={EXAMPLES}\n getNextSegmentValue={getNextSegmentValue}\n onChange={handleChange}\n onSelect={setSelection}\n pattern={FULL_DATE_PATTERN}\n placeholder={FULL_DATE_FORMAT}\n selection={selection}\n value={value}\n onFocus={onFocus}\n onBlur={handleBlur}\n data-testid={dataTestId}\n />\n </div>\n );\n }\n);\n\nDateTimeInput.displayName = 'DateTimeInput';\n\nDateTimeInput.defaultProps = {\n className: '',\n onChange: () => undefined,\n defaultValue: '',\n onFocus: () => undefined,\n onBlur: () => undefined,\n 'data-testid': undefined,\n};\n\nexport default DateTimeInput;\n"],"file":"DateTimeInput.js"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
interface EditableItemListProps {
|
|
2
|
+
export interface EditableItemListProps {
|
|
3
3
|
isInvalid?: boolean;
|
|
4
4
|
items: string[];
|
|
5
|
-
onDelete: (
|
|
5
|
+
onDelete: (items: string[]) => void;
|
|
6
6
|
onAdd: (item: string) => void;
|
|
7
7
|
validate?: (item: string) => Error | null;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableItemList.d.ts","sourceRoot":"","sources":["../src/EditableItemList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAOf,
|
|
1
|
+
{"version":3,"file":"EditableItemList.d.ts","sourceRoot":"","sources":["../src/EditableItemList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAOf,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpC,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,YAmH9D,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
package/dist/EditableItemList.js
CHANGED
|
@@ -2,6 +2,7 @@ import React, { useCallback, useMemo, useState } from 'react';
|
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import clamp from 'lodash.clamp';
|
|
4
4
|
import { vsAdd, vsTrash } from '@deephaven/icons';
|
|
5
|
+
import { RangeUtils } from '@deephaven/utils';
|
|
5
6
|
import { Button, ItemList } from "./index.js";
|
|
6
7
|
|
|
7
8
|
// Display a list of items with an input for adding new items, and Add/Delete buttons
|
|
@@ -14,21 +15,20 @@ var EditableItemList = props => {
|
|
|
14
15
|
validate = () => null
|
|
15
16
|
} = props;
|
|
16
17
|
var [inputError, setInputError] = useState(null);
|
|
17
|
-
var [
|
|
18
|
+
var [selectedRanges, setSelectedRanges] = useState([]);
|
|
18
19
|
var [value, setValue] = useState('');
|
|
19
|
-
var
|
|
20
|
-
|
|
20
|
+
var handleSelectionChange = useCallback(ranges => {
|
|
21
|
+
setSelectedRanges(ranges);
|
|
21
22
|
}, []);
|
|
22
23
|
var handleDelete = useCallback(() => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
onDelete(RangeUtils.getItemsInRanges(items, selectedRanges));
|
|
25
|
+
setSelectedRanges([]);
|
|
26
|
+
}, [items, selectedRanges, onDelete]);
|
|
27
|
+
var handleAdd = useCallback(() => {
|
|
28
|
+
if (value === '') {
|
|
29
|
+
return;
|
|
27
30
|
}
|
|
28
31
|
|
|
29
|
-
setSelectedIndex(newIndex === -1 ? undefined : newIndex);
|
|
30
|
-
}, [items, selectedIndex, onDelete]);
|
|
31
|
-
var handleAdd = useCallback(() => {
|
|
32
32
|
var validationError = validate(value);
|
|
33
33
|
|
|
34
34
|
if (validationError == null) {
|
|
@@ -43,17 +43,16 @@ var EditableItemList = props => {
|
|
|
43
43
|
value: inputValue
|
|
44
44
|
} = event.target;
|
|
45
45
|
setValue(inputValue);
|
|
46
|
-
setInputError(validate(inputValue));
|
|
46
|
+
setInputError(inputValue === '' ? null : validate(inputValue));
|
|
47
47
|
}, [validate]);
|
|
48
48
|
var handleInputFocus = useCallback(() => {
|
|
49
|
-
|
|
49
|
+
setSelectedRanges([]);
|
|
50
50
|
}, []);
|
|
51
51
|
var handleInputKeyDown = useCallback(event => {
|
|
52
52
|
if (event.key === 'Enter') {
|
|
53
53
|
handleAdd();
|
|
54
54
|
}
|
|
55
55
|
}, [handleAdd]);
|
|
56
|
-
var selectedRanges = useMemo(() => selectedIndex === undefined ? [] : [[selectedIndex, selectedIndex]], [selectedIndex]);
|
|
57
56
|
var containerHeight = useMemo(() => 14 + clamp(items.length, 1, 6) * ItemList.DEFAULT_ROW_HEIGHT, [items.length]);
|
|
58
57
|
return /*#__PURE__*/React.createElement("div", {
|
|
59
58
|
className: classNames('editable-item-list-container', {
|
|
@@ -67,11 +66,12 @@ var EditableItemList = props => {
|
|
|
67
66
|
itemCount: items.length,
|
|
68
67
|
items: items.map((item, index) => ({
|
|
69
68
|
value: item,
|
|
70
|
-
isSelected: index
|
|
69
|
+
isSelected: RangeUtils.isSelected(selectedRanges, index)
|
|
71
70
|
})),
|
|
72
71
|
offset: 0,
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
selectedRanges: selectedRanges,
|
|
73
|
+
onSelectionChange: handleSelectionChange,
|
|
74
|
+
isMultiSelect: true
|
|
75
75
|
})), /*#__PURE__*/React.createElement("div", {
|
|
76
76
|
className: "d-flex flex-row pt-2"
|
|
77
77
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -91,15 +91,17 @@ var EditableItemList = props => {
|
|
|
91
91
|
}, /*#__PURE__*/React.createElement(Button, {
|
|
92
92
|
kind: "ghost",
|
|
93
93
|
onClick: handleAdd,
|
|
94
|
-
disabled: inputError != null || value
|
|
94
|
+
disabled: inputError != null || value === '',
|
|
95
95
|
icon: vsAdd,
|
|
96
|
-
tooltip: "Add new item"
|
|
96
|
+
tooltip: "Add new item",
|
|
97
|
+
"data-testid": "add-item-button"
|
|
97
98
|
}), /*#__PURE__*/React.createElement(Button, {
|
|
98
99
|
kind: "ghost",
|
|
99
100
|
onClick: handleDelete,
|
|
100
|
-
disabled:
|
|
101
|
+
disabled: selectedRanges.length === 0,
|
|
101
102
|
icon: vsTrash,
|
|
102
|
-
tooltip: "Delete selected
|
|
103
|
+
tooltip: "Delete selected items",
|
|
104
|
+
"data-testid": "delete-item-button"
|
|
103
105
|
}))));
|
|
104
106
|
};
|
|
105
107
|
|
|
@@ -1 +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","
|
|
1
|
+
{"version":3,"sources":["../src/EditableItemList.tsx"],"names":["React","useCallback","useMemo","useState","classNames","clamp","vsAdd","vsTrash","RangeUtils","Button","ItemList","EditableItemList","props","isInvalid","items","onAdd","undefined","onDelete","validate","inputError","setInputError","selectedRanges","setSelectedRanges","value","setValue","handleSelectionChange","ranges","handleDelete","getItemsInRanges","handleAdd","validationError","handleInputChange","event","inputValue","target","handleInputFocus","handleInputKeyDown","key","containerHeight","length","DEFAULT_ROW_HEIGHT","height","map","item","index","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, RangeUtils } from '@deephaven/utils';\nimport { Button, ItemList } from '.';\n\nexport interface EditableItemListProps {\n isInvalid?: boolean;\n items: string[];\n onDelete: (items: 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 [selectedRanges, setSelectedRanges] = useState<Range[]>([]);\n const [value, setValue] = useState('');\n\n const handleSelectionChange = useCallback((ranges: Range[]) => {\n setSelectedRanges(ranges);\n }, []);\n\n const handleDelete = useCallback(() => {\n onDelete(RangeUtils.getItemsInRanges(items, selectedRanges));\n setSelectedRanges([]);\n }, [items, selectedRanges, onDelete]);\n\n const handleAdd = useCallback(() => {\n if (value === '') {\n return;\n }\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(inputValue === '' ? null : validate(inputValue));\n },\n [validate]\n );\n\n const handleInputFocus = useCallback(() => {\n setSelectedRanges([]);\n }, []);\n\n const handleInputKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n handleAdd();\n }\n },\n [handleAdd]\n );\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: RangeUtils.isSelected(selectedRanges, index),\n }))}\n offset={0}\n selectedRanges={selectedRanges}\n onSelectionChange={handleSelectionChange}\n isMultiSelect\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 === ''}\n icon={vsAdd}\n tooltip=\"Add new item\"\n data-testid=\"add-item-button\"\n />\n <Button\n kind=\"ghost\"\n onClick={handleDelete}\n disabled={selectedRanges.length === 0}\n icon={vsTrash}\n tooltip=\"Delete selected items\"\n data-testid=\"delete-item-button\"\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default EditableItemList;\n"],"file":"EditableItemList.js"}
|
package/dist/ItemListItem.js
CHANGED
package/dist/ItemListItem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ItemListItem.tsx"],"names":["React","Component","classNames","Log","log","module","ItemListItem","handleKeyDown","constructor","props","handleBlur","bind","handleFocus","handleClick","handleContextMenu","handleDragStart","handleDrag","handleDragOver","handleDragEnd","handleDrop","handleDoubleClick","handleMouseDown","handleMouseMove","handleMouseUp","itemRef","createRef","e","itemIndex","onBlur","onFocus","onClick","onContextMenu","onDragStart","onDrag","preventDefault","onDragOver","onDragEnd","onDrop","onDoubleClick","onMouseMove","onMouseDown","onMouseUp","render","isDraggable","isFocused","isSelected","style","children","dataTestId","active","disableSelect","undefined"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport './ItemListItem.scss';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ItemListItem');\n\ninterface ItemListItemProps {\n isDraggable: boolean;\n isFocused: boolean;\n isSelected: boolean;\n itemIndex: number;\n disableSelect: boolean;\n onBlur(index: number, e: React.FocusEvent<HTMLDivElement>): void;\n onClick(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onContextMenu(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onDragStart(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDrag(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDragOver(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDragEnd(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDrop(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDoubleClick(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onFocus(index: number, e: React.FocusEvent<HTMLDivElement>): void;\n onMouseDown(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onMouseMove(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onMouseUp(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n style: React.CSSProperties;\n children: React.ReactNode;\n 'data-testid'?: string;\n}\n\nclass ItemListItem extends Component<ItemListItemProps, Record<string, never>> {\n static defaultProps = {\n children: null,\n isDraggable: false,\n isFocused: false,\n isSelected: false,\n itemIndex: 0,\n disableSelect: false,\n 'data-testid': undefined,\n\n onBlur(): void {\n // no-op\n },\n onClick(): void {\n // no-op\n },\n onContextMenu(): void {\n // no-op\n },\n onDragStart(): void {\n // no-op\n },\n onDrag(): void {\n // no-op\n },\n onDragOver(): void {\n // no-op\n },\n onDragEnd(): void {\n // no-op\n },\n onDrop(): void {\n // no-op\n },\n onDoubleClick(): void {\n // no-op\n },\n onFocus(): void {\n // no-op\n },\n onMouseDown(): void {\n // no-op\n },\n onMouseMove(): void {\n // no-op\n },\n onMouseUp(): void {\n // no-op\n },\n style: {},\n };\n\n static handleKeyDown(): boolean {\n log.log('ItemListItem.handleKeyDown false');\n return false;\n }\n\n constructor(props: ItemListItemProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDrag = this.handleDrag.bind(this);\n this.handleDragOver = this.handleDragOver.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleDoubleClick = this.handleDoubleClick.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n\n this.itemRef = React.createRef();\n }\n\n itemRef: React.RefObject<HTMLDivElement>;\n\n handleBlur(e: React.FocusEvent<HTMLDivElement>): void {\n const { itemIndex, onBlur } = this.props;\n onBlur(itemIndex, e);\n }\n\n handleFocus(e: React.FocusEvent<HTMLDivElement>): void {\n const { itemIndex, onFocus } = this.props;\n onFocus(itemIndex, e);\n }\n\n handleClick(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onClick } = this.props;\n onClick(itemIndex, e);\n }\n\n handleContextMenu(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onContextMenu } = this.props;\n onContextMenu(itemIndex, e);\n }\n\n handleDragStart(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDragStart } = this.props;\n onDragStart(itemIndex, e);\n }\n\n handleDrag(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDrag } = this.props;\n onDrag(itemIndex, e);\n }\n\n handleDragOver(e: React.DragEvent<HTMLDivElement>): void {\n // Have to call preventDefault otherwise onDrop won't get triggered\n e.preventDefault();\n const { itemIndex, onDragOver } = this.props;\n onDragOver(itemIndex, e);\n }\n\n handleDragEnd(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDragEnd } = this.props;\n onDragEnd(itemIndex, e);\n }\n\n handleDrop(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDrop } = this.props;\n onDrop(itemIndex, e);\n }\n\n handleDoubleClick(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onDoubleClick } = this.props;\n onDoubleClick(itemIndex, e);\n }\n\n handleMouseMove(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseMove } = this.props;\n onMouseMove(itemIndex, e);\n }\n\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseDown } = this.props;\n onMouseDown(itemIndex, e);\n }\n\n handleMouseUp(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseUp } = this.props;\n onMouseUp(itemIndex, e);\n }\n\n render(): JSX.Element {\n const {\n isDraggable,\n isFocused,\n isSelected,\n style,\n children,\n 'data-testid': dataTestId,\n } = this.props;\n return (\n <div\n className={classNames(\n 'item-list-item',\n { active: isSelected },\n { 'is-focused': isFocused },\n { 'is-draggable': isDraggable }\n )}\n onKeyDown={ItemListItem.handleKeyDown}\n onContextMenu={this.handleContextMenu}\n onClick={this.handleClick}\n onDrag={this.handleDrag}\n onDragStart={this.handleDragStart}\n onDragOver={this.handleDragOver}\n onDragEnd={this.handleDragEnd}\n onDrop={this.handleDrop}\n onDoubleClick={this.handleDoubleClick}\n onMouseDown={this.handleMouseDown}\n onMouseMove={this.handleMouseMove}\n onMouseUp={this.handleMouseUp}\n tabIndex={-1}\n ref={this.itemRef}\n role=\"presentation\"\n style={style}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n draggable={isDraggable}\n data-testid={dataTestId}\n >\n {children}\n </div>\n );\n }\n}\n\nexport default ItemListItem;\n"],"file":"ItemListItem.js"}
|
|
1
|
+
{"version":3,"sources":["../src/ItemListItem.tsx"],"names":["React","Component","classNames","Log","log","module","ItemListItem","handleKeyDown","constructor","props","handleBlur","bind","handleFocus","handleClick","handleContextMenu","handleDragStart","handleDrag","handleDragOver","handleDragEnd","handleDrop","handleDoubleClick","handleMouseDown","handleMouseMove","handleMouseUp","itemRef","createRef","e","itemIndex","onBlur","onFocus","onClick","onContextMenu","onDragStart","onDrag","preventDefault","onDragOver","onDragEnd","onDrop","onDoubleClick","onMouseMove","onMouseDown","onMouseUp","render","isDraggable","isFocused","isSelected","style","children","dataTestId","active","disableSelect","undefined"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport './ItemListItem.scss';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ItemListItem');\n\ninterface ItemListItemProps {\n isDraggable: boolean;\n isFocused: boolean;\n isSelected: boolean;\n itemIndex: number;\n disableSelect: boolean;\n onBlur(index: number, e: React.FocusEvent<HTMLDivElement>): void;\n onClick(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onContextMenu(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onDragStart(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDrag(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDragOver(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDragEnd(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDrop(index: number, e: React.DragEvent<HTMLDivElement>): void;\n onDoubleClick(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onFocus(index: number, e: React.FocusEvent<HTMLDivElement>): void;\n onMouseDown(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onMouseMove(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n onMouseUp(index: number, e: React.MouseEvent<HTMLDivElement>): void;\n style: React.CSSProperties;\n children: React.ReactNode;\n 'data-testid'?: string;\n}\n\nclass ItemListItem extends Component<ItemListItemProps, Record<string, never>> {\n static defaultProps = {\n children: null,\n isDraggable: false,\n isFocused: false,\n isSelected: false,\n itemIndex: 0,\n disableSelect: false,\n 'data-testid': undefined,\n\n onBlur(): void {\n // no-op\n },\n onClick(): void {\n // no-op\n },\n onContextMenu(): void {\n // no-op\n },\n onDragStart(): void {\n // no-op\n },\n onDrag(): void {\n // no-op\n },\n onDragOver(): void {\n // no-op\n },\n onDragEnd(): void {\n // no-op\n },\n onDrop(): void {\n // no-op\n },\n onDoubleClick(): void {\n // no-op\n },\n onFocus(): void {\n // no-op\n },\n onMouseDown(): void {\n // no-op\n },\n onMouseMove(): void {\n // no-op\n },\n onMouseUp(): void {\n // no-op\n },\n style: {},\n };\n\n static handleKeyDown(): boolean {\n log.log('ItemListItem.handleKeyDown false');\n return false;\n }\n\n constructor(props: ItemListItemProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDrag = this.handleDrag.bind(this);\n this.handleDragOver = this.handleDragOver.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleDoubleClick = this.handleDoubleClick.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n\n this.itemRef = React.createRef();\n }\n\n itemRef: React.RefObject<HTMLDivElement>;\n\n handleBlur(e: React.FocusEvent<HTMLDivElement>): void {\n const { itemIndex, onBlur } = this.props;\n onBlur(itemIndex, e);\n }\n\n handleFocus(e: React.FocusEvent<HTMLDivElement>): void {\n const { itemIndex, onFocus } = this.props;\n onFocus(itemIndex, e);\n }\n\n handleClick(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onClick } = this.props;\n onClick(itemIndex, e);\n }\n\n handleContextMenu(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onContextMenu } = this.props;\n onContextMenu(itemIndex, e);\n }\n\n handleDragStart(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDragStart } = this.props;\n onDragStart(itemIndex, e);\n }\n\n handleDrag(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDrag } = this.props;\n onDrag(itemIndex, e);\n }\n\n handleDragOver(e: React.DragEvent<HTMLDivElement>): void {\n // Have to call preventDefault otherwise onDrop won't get triggered\n e.preventDefault();\n const { itemIndex, onDragOver } = this.props;\n onDragOver(itemIndex, e);\n }\n\n handleDragEnd(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDragEnd } = this.props;\n onDragEnd(itemIndex, e);\n }\n\n handleDrop(e: React.DragEvent<HTMLDivElement>): void {\n const { itemIndex, onDrop } = this.props;\n onDrop(itemIndex, e);\n }\n\n handleDoubleClick(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onDoubleClick } = this.props;\n onDoubleClick(itemIndex, e);\n }\n\n handleMouseMove(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseMove } = this.props;\n onMouseMove(itemIndex, e);\n }\n\n handleMouseDown(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseDown } = this.props;\n onMouseDown(itemIndex, e);\n }\n\n handleMouseUp(e: React.MouseEvent<HTMLDivElement>): void {\n const { itemIndex, onMouseUp } = this.props;\n onMouseUp(itemIndex, e);\n }\n\n render(): JSX.Element {\n const {\n isDraggable,\n isFocused,\n isSelected,\n style,\n children,\n 'data-testid': dataTestId,\n } = this.props;\n return (\n <div\n className={classNames(\n 'item-list-item',\n { active: isSelected },\n { 'is-focused': isFocused },\n { 'is-draggable': isDraggable }\n )}\n onKeyDown={ItemListItem.handleKeyDown}\n onContextMenu={this.handleContextMenu}\n onClick={this.handleClick}\n onDrag={this.handleDrag}\n onDragStart={this.handleDragStart}\n onDragOver={this.handleDragOver}\n onDragEnd={this.handleDragEnd}\n onDrop={this.handleDrop}\n onDoubleClick={this.handleDoubleClick}\n onMouseDown={this.handleMouseDown}\n onMouseMove={this.handleMouseMove}\n onMouseUp={this.handleMouseUp}\n tabIndex={-1}\n ref={this.itemRef}\n role=\"listitem\"\n style={style}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n draggable={isDraggable}\n data-testid={dataTestId}\n >\n {children}\n </div>\n );\n }\n}\n\nexport default ItemListItem;\n"],"file":"ItemListItem.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/components",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.9",
|
|
4
4
|
"description": "Deephaven React component library",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@deephaven/icons": "^0.13.0",
|
|
34
34
|
"@deephaven/log": "^0.13.0",
|
|
35
35
|
"@deephaven/react-hooks": "^0.13.0",
|
|
36
|
-
"@deephaven/utils": "^0.13.
|
|
36
|
+
"@deephaven/utils": "^0.13.9",
|
|
37
37
|
"@fortawesome/fontawesome-svg-core": "1.2.36",
|
|
38
38
|
"@fortawesome/react-fontawesome": "^0.1.15",
|
|
39
39
|
"bootstrap": "4.6.1",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"publishConfig": {
|
|
72
72
|
"access": "public"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "af74f3c25d79febe3a3c0240a99a3e7901411c80"
|
|
75
75
|
}
|