@deephaven/components 1.7.1 → 1.7.2-beta.3
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/AutoCompleteInput.d.ts +0 -17
- package/dist/AutoCompleteInput.d.ts.map +1 -1
- package/dist/AutoCompleteInput.js +12 -31
- package/dist/AutoCompleteInput.js.map +1 -1
- package/dist/AutoResizeTextarea.d.ts +0 -23
- package/dist/AutoResizeTextarea.d.ts.map +1 -1
- package/dist/AutoResizeTextarea.js +0 -21
- package/dist/AutoResizeTextarea.js.map +1 -1
- package/dist/BasicModal.d.ts +0 -27
- package/dist/BasicModal.d.ts.map +1 -1
- package/dist/BasicModal.js +2 -28
- package/dist/BasicModal.js.map +1 -1
- package/dist/BulkActionBar.js.map +1 -1
- package/dist/Button.d.ts +1 -1
- package/dist/Button.d.ts.map +1 -1
- package/dist/Button.js +2 -79
- package/dist/Button.js.map +1 -1
- package/dist/CardFlip.d.ts.map +1 -1
- package/dist/CardFlip.js +1 -2
- package/dist/CardFlip.js.map +1 -1
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +3 -45
- package/dist/Checkbox.js.map +1 -1
- package/dist/Collapse.d.ts +0 -8
- package/dist/Collapse.d.ts.map +1 -1
- package/dist/Collapse.js +0 -8
- package/dist/Collapse.js.map +1 -1
- package/dist/ComponentUtils.js.map +1 -1
- package/dist/CopyButton.js.map +1 -1
- package/dist/CustomTimeSelect.js +14 -15
- package/dist/CustomTimeSelect.js.map +1 -1
- package/dist/DateInput.js.map +1 -1
- package/dist/DateInputUtils.js.map +1 -1
- package/dist/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput.js +0 -8
- package/dist/DateTimeInput.js.map +1 -1
- package/dist/DateTimeInputUtils.js.map +1 -1
- package/dist/DebouncedSearchInput.js +1 -1
- package/dist/DebouncedSearchInput.js.map +1 -1
- package/dist/DragUtils.js.map +1 -1
- package/dist/DraggableItemList.d.ts +2 -2
- package/dist/DraggableItemList.d.ts.map +1 -1
- package/dist/DraggableItemList.js +8 -7
- package/dist/DraggableItemList.js.map +1 -1
- package/dist/EditableItemList.js +1 -2
- package/dist/EditableItemList.js.map +1 -1
- package/dist/ErrorBoundary.js +1 -1
- package/dist/ErrorBoundary.js.map +1 -1
- package/dist/ErrorView.js +1 -2
- package/dist/ErrorView.js.map +1 -1
- package/dist/HierarchicalCheckboxMenu.d.ts +1 -1
- package/dist/HierarchicalCheckboxMenu.d.ts.map +1 -1
- package/dist/HierarchicalCheckboxMenu.js +1 -2
- package/dist/HierarchicalCheckboxMenu.js.map +1 -1
- package/dist/ItemList.d.ts +1 -1
- package/dist/ItemList.d.ts.map +1 -1
- package/dist/ItemList.js +14 -14
- package/dist/ItemList.js.map +1 -1
- package/dist/ItemListItem.js.map +1 -1
- package/dist/LoadingOverlay.js +1 -2
- package/dist/LoadingOverlay.js.map +1 -1
- package/dist/LoadingSpinner.js.map +1 -1
- package/dist/MaskedInput.d.ts.map +1 -1
- package/dist/MaskedInput.js +11 -31
- package/dist/MaskedInput.js.map +1 -1
- package/dist/MaskedInputUtils.js.map +1 -1
- package/dist/Option.js.map +1 -1
- package/dist/RadioGroup.js +1 -2
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioItem.d.ts.map +1 -1
- package/dist/RadioItem.js +1 -13
- package/dist/RadioItem.js.map +1 -1
- package/dist/RandomAreaPlotAnimation.d.ts +1 -1
- package/dist/RandomAreaPlotAnimation.d.ts.map +1 -1
- package/dist/RandomAreaPlotAnimation.js +5 -8
- package/dist/RandomAreaPlotAnimation.js.map +1 -1
- package/dist/SearchInput.js +3 -5
- package/dist/SearchInput.js.map +1 -1
- package/dist/SearchableCombobox.js.map +1 -1
- package/dist/Select.d.ts +1 -1
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js.map +1 -1
- package/dist/SelectValueList.js +9 -9
- package/dist/SelectValueList.js.map +1 -1
- package/dist/SocketedButton.d.ts +4 -4
- package/dist/SocketedButton.d.ts.map +1 -1
- package/dist/SocketedButton.js +5 -20
- package/dist/SocketedButton.js.map +1 -1
- package/dist/SplitButtonGroup.d.ts +2 -18
- package/dist/SplitButtonGroup.d.ts.map +1 -1
- package/dist/SplitButtonGroup.js +0 -13
- package/dist/SplitButtonGroup.js.map +1 -1
- package/dist/TableViewEmptyState.js +1 -2
- package/dist/TableViewEmptyState.js.map +1 -1
- package/dist/TextWithTooltip.js +1 -3
- package/dist/TextWithTooltip.js.map +1 -1
- package/dist/ThemeExport.js.map +1 -1
- package/dist/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput.js +7 -17
- package/dist/TimeInput.js.map +1 -1
- package/dist/TimeSlider.js +3 -6
- package/dist/TimeSlider.js.map +1 -1
- package/dist/ToastNotification.d.ts +1 -2
- package/dist/ToastNotification.d.ts.map +1 -1
- package/dist/ToastNotification.js +1 -2
- package/dist/ToastNotification.js.map +1 -1
- package/dist/UIConstants.js.map +1 -1
- package/dist/UISwitch.d.ts.map +1 -1
- package/dist/UISwitch.js +18 -14
- package/dist/UISwitch.js.map +1 -1
- package/dist/XComponent.d.ts +1 -1
- package/dist/XComponent.d.ts.map +1 -1
- package/dist/XComponent.js.map +1 -1
- package/dist/XComponentMap.d.ts +2 -2
- package/dist/XComponentMap.d.ts.map +1 -1
- package/dist/XComponentMap.js.map +1 -1
- package/dist/actions/ConfirmActionButton.js.map +1 -1
- package/dist/actions/IconActionButton.js +1 -2
- package/dist/actions/IconActionButton.js.map +1 -1
- package/dist/actions/index.js.map +1 -1
- package/dist/context-actions/ContextActionUtils.js.map +1 -1
- package/dist/context-actions/ContextActions.d.ts +1 -2
- package/dist/context-actions/ContextActions.d.ts.map +1 -1
- package/dist/context-actions/ContextActions.js +22 -22
- package/dist/context-actions/ContextActions.js.map +1 -1
- package/dist/context-actions/ContextMenu.js +5 -7
- package/dist/context-actions/ContextMenu.js.map +1 -1
- package/dist/context-actions/ContextMenuItem.d.ts.map +1 -1
- package/dist/context-actions/ContextMenuItem.js +21 -43
- package/dist/context-actions/ContextMenuItem.js.map +1 -1
- package/dist/context-actions/ContextMenuRoot.js +1 -1
- package/dist/context-actions/ContextMenuRoot.js.map +1 -1
- package/dist/context-actions/GlobalContextAction.js +1 -1
- package/dist/context-actions/GlobalContextAction.js.map +1 -1
- package/dist/context-actions/GlobalContextActions.js.map +1 -1
- package/dist/context-actions/index.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/dialogs/ActionButtonDialogTrigger.js +1 -2
- package/dist/dialogs/ActionButtonDialogTrigger.js.map +1 -1
- package/dist/dialogs/ConfirmationDialog.js +1 -2
- package/dist/dialogs/ConfirmationDialog.js.map +1 -1
- package/dist/dialogs/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/menu-actions/DropdownMenu.js +2 -2
- package/dist/menu-actions/DropdownMenu.js.map +1 -1
- package/dist/menu-actions/Menu.js +4 -6
- package/dist/menu-actions/Menu.js.map +1 -1
- package/dist/menu-actions/index.js.map +1 -1
- package/dist/modal/DebouncedModal.js +1 -3
- package/dist/modal/DebouncedModal.js.map +1 -1
- package/dist/modal/InfoModal.js +1 -2
- package/dist/modal/InfoModal.js.map +1 -1
- package/dist/modal/Modal.js +2 -3
- package/dist/modal/Modal.js.map +1 -1
- package/dist/modal/ModalBody.js.map +1 -1
- package/dist/modal/ModalFooter.js.map +1 -1
- package/dist/modal/ModalHeader.js +1 -2
- package/dist/modal/ModalHeader.js.map +1 -1
- package/dist/modal/index.js.map +1 -1
- package/dist/navigation/DashboardList.js +3 -4
- package/dist/navigation/DashboardList.js.map +1 -1
- package/dist/navigation/Menu.js.map +1 -1
- package/dist/navigation/MenuItem.js +1 -2
- package/dist/navigation/MenuItem.js.map +1 -1
- package/dist/navigation/NavTab.d.ts +1 -1
- package/dist/navigation/NavTab.d.ts.map +1 -1
- package/dist/navigation/NavTab.js +4 -5
- package/dist/navigation/NavTab.js.map +1 -1
- package/dist/navigation/NavTabList.js +4 -5
- package/dist/navigation/NavTabList.js.map +1 -1
- package/dist/navigation/Page.js +1 -2
- package/dist/navigation/Page.js.map +1 -1
- package/dist/navigation/Stack.js +1 -3
- package/dist/navigation/Stack.js.map +1 -1
- package/dist/navigation/index.js.map +1 -1
- package/dist/popper/Popper.d.ts +1 -14
- package/dist/popper/Popper.d.ts.map +1 -1
- package/dist/popper/Popper.js +18 -29
- package/dist/popper/Popper.js.map +1 -1
- package/dist/popper/Tooltip.d.ts.map +1 -1
- package/dist/popper/Tooltip.js +18 -12
- package/dist/popper/Tooltip.js.map +1 -1
- package/dist/popper/index.js.map +1 -1
- package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
- package/dist/shortcuts/NavigationShortcuts.js.map +1 -1
- package/dist/shortcuts/Shortcut.js +11 -13
- package/dist/shortcuts/Shortcut.js.map +1 -1
- package/dist/shortcuts/ShortcutRegistry.js +1 -1
- package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
- package/dist/shortcuts/index.js.map +1 -1
- package/dist/spectrum/ActionGroup.js.map +1 -1
- package/dist/spectrum/ActionMenu.js.map +1 -1
- package/dist/spectrum/CheckboxGroup.js.map +1 -1
- package/dist/spectrum/Heading.js.map +1 -1
- package/dist/spectrum/ItemContent.js +2 -4
- package/dist/spectrum/ItemContent.js.map +1 -1
- package/dist/spectrum/ItemTooltip.js.map +1 -1
- package/dist/spectrum/ListActionGroup.js.map +1 -1
- package/dist/spectrum/ListActionMenu.js.map +1 -1
- package/dist/spectrum/TabPanels.d.ts.map +1 -1
- package/dist/spectrum/TabPanels.js +8 -5
- package/dist/spectrum/TabPanels.js.map +1 -1
- package/dist/spectrum/Text.js.map +1 -1
- package/dist/spectrum/View.js.map +1 -1
- package/dist/spectrum/buttons.js.map +1 -1
- package/dist/spectrum/collections.js.map +1 -1
- package/dist/spectrum/comboBox/ComboBox.js.map +1 -1
- package/dist/spectrum/comboBox/ComboBoxNormalized.js.map +1 -1
- package/dist/spectrum/comboBox/index.js.map +1 -1
- package/dist/spectrum/content.js.map +1 -1
- package/dist/spectrum/dateAndTime.js.map +1 -1
- package/dist/spectrum/forms.js.map +1 -1
- package/dist/spectrum/icons.js.map +1 -1
- package/dist/spectrum/index.js.map +1 -1
- package/dist/spectrum/layout.js.map +1 -1
- package/dist/spectrum/listView/ListView.js.map +1 -1
- package/dist/spectrum/listView/ListViewNormalized.js +1 -2
- package/dist/spectrum/listView/ListViewNormalized.js.map +1 -1
- package/dist/spectrum/listView/ListViewWrapper.js.map +1 -1
- package/dist/spectrum/listView/index.js.map +1 -1
- package/dist/spectrum/navigation.js.map +1 -1
- package/dist/spectrum/overlays.js.map +1 -1
- package/dist/spectrum/picker/Picker.js.map +1 -1
- package/dist/spectrum/picker/PickerNormalized.js.map +1 -1
- package/dist/spectrum/picker/PickerProps.js.map +1 -1
- package/dist/spectrum/picker/index.js.map +1 -1
- package/dist/spectrum/picker/usePickerItemScale.js.map +1 -1
- package/dist/spectrum/picker/usePickerNormalizedProps.d.ts +1 -2
- package/dist/spectrum/picker/usePickerNormalizedProps.d.ts.map +1 -1
- package/dist/spectrum/picker/usePickerNormalizedProps.js.map +1 -1
- package/dist/spectrum/picker/usePickerProps.js.map +1 -1
- package/dist/spectrum/picker/usePickerScrollOnOpen.js +1 -1
- package/dist/spectrum/picker/usePickerScrollOnOpen.js.map +1 -1
- package/dist/spectrum/shared.js.map +1 -1
- package/dist/spectrum/status.js.map +1 -1
- package/dist/spectrum/utils/index.js.map +1 -1
- package/dist/spectrum/utils/itemUtils.d.ts +2 -2
- package/dist/spectrum/utils/itemUtils.d.ts.map +1 -1
- package/dist/spectrum/utils/itemUtils.js +5 -1
- package/dist/spectrum/utils/itemUtils.js.map +1 -1
- package/dist/spectrum/utils/itemWrapperUtils.js +3 -4
- package/dist/spectrum/utils/itemWrapperUtils.js.map +1 -1
- package/dist/spectrum/utils/propsUtils.js.map +1 -1
- package/dist/spectrum/utils/themeUtils.js.map +1 -1
- package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js +1 -1
- package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js.map +1 -1
- package/dist/spectrum/utils/useRenderNormalizedItem.js +1 -2
- package/dist/spectrum/utils/useRenderNormalizedItem.js.map +1 -1
- package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js +1 -1
- package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js.map +1 -1
- package/dist/spectrum/utils/useStringifiedMultiSelection.d.ts +1 -1
- package/dist/spectrum/utils/useStringifiedMultiSelection.d.ts.map +1 -1
- package/dist/spectrum/utils/useStringifiedMultiSelection.js.map +1 -1
- package/dist/spectrum/utils/useStringifiedSelection.d.ts +1 -1
- package/dist/spectrum/utils/useStringifiedSelection.d.ts.map +1 -1
- package/dist/spectrum/utils/useStringifiedSelection.js.map +1 -1
- package/dist/theme/Logo.js.map +1 -1
- package/dist/theme/SpectrumThemeProvider.js.map +1 -1
- package/dist/theme/ThemeModel.js +1 -0
- package/dist/theme/ThemeModel.js.map +1 -1
- package/dist/theme/ThemePicker.d.ts.map +1 -1
- package/dist/theme/ThemePicker.js +3 -1
- package/dist/theme/ThemePicker.js.map +1 -1
- package/dist/theme/ThemeProvider.js +1 -3
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/ThemeUtils.js.map +1 -1
- package/dist/theme/colorUtils.js.map +1 -1
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/theme-dark/index.js.map +1 -1
- package/dist/theme/theme-light/index.js.map +1 -1
- package/dist/theme/theme-spectrum/index.js.map +1 -1
- package/dist/theme/useExternalTheme.js.map +1 -1
- package/dist/theme/useSpectrumThemeProvider.js.map +1 -1
- package/dist/theme/useTheme.js.map +1 -1
- package/dist/transitions/FadeTransition.js.map +1 -1
- package/dist/transitions/SlideTransition.js.map +1 -1
- package/dist/transitions/index.js.map +1 -1
- package/package.json +12 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableItemList.js","names":["React","useCallback","useMemo","useState","classNames","clamp","vsAdd","vsTrash","RangeUtils","Button","ItemList","jsx","_jsx","jsxs","_jsxs","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","className","children","style","height","itemCount","map","item","index","isSelected","offset","onSelectionChange","isMultiSelect","placeholder","type","onChange","onFocus","onKeyDown","kind","onClick","disabled","icon","tooltip"],"sources":["../src/EditableItemList.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n type 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 { type Range, RangeUtils } from '@deephaven/utils';\nimport Button from './Button';\nimport ItemList from './ItemList';\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\nfunction 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<readonly Range[]>([]);\n const [value, setValue] = useState('');\n\n const handleSelectionChange = useCallback((ranges: readonly 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"],"mappings":"AAAA,OAAOA,KAAK,IAGVC,WAAW,EACXC,OAAO,EACPC,QAAQ,QACH,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,cAAc;AAChC,SAASC,KAAK,EAAEC,OAAO,QAAQ,kBAAkB;AACjD,SAAqBC,UAAU,QAAQ,kBAAkB;AAAC,OACnDC,MAAM;AAAA,OACNC,QAAQ;AAAA,SAAAC,GAAA,IAAAC,IAAA
|
|
1
|
+
{"version":3,"file":"EditableItemList.js","names":["React","useCallback","useMemo","useState","classNames","clamp","vsAdd","vsTrash","RangeUtils","Button","ItemList","jsx","_jsx","jsxs","_jsxs","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","className","children","style","height","itemCount","map","item","index","isSelected","offset","onSelectionChange","isMultiSelect","placeholder","type","onChange","onFocus","onKeyDown","kind","onClick","disabled","icon","tooltip"],"sources":["../src/EditableItemList.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n type 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 { type Range, RangeUtils } from '@deephaven/utils';\nimport Button from './Button';\nimport ItemList from './ItemList';\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\nfunction 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<readonly Range[]>([]);\n const [value, setValue] = useState('');\n\n const handleSelectionChange = useCallback((ranges: readonly 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"],"mappings":"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","ignoreList":[]}
|
package/dist/ErrorBoundary.js
CHANGED
|
@@ -24,7 +24,7 @@ export class ErrorBoundary extends Component {
|
|
|
24
24
|
onError
|
|
25
25
|
} = this.props;
|
|
26
26
|
log.error('Error caught by ErrorBoundary', error, errorInfo);
|
|
27
|
-
onError === null || onError === void 0
|
|
27
|
+
onError === null || onError === void 0 || onError(error, errorInfo);
|
|
28
28
|
}
|
|
29
29
|
render() {
|
|
30
30
|
var {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorBoundary.js","names":["Log","React","Component","LoadingOverlay","jsx","_jsx","log","module","ErrorBoundary","getDerivedStateFromError","error","constructor","props","state","undefined","componentDidCatch","errorInfo","onError","render","children","className","fallback","errorMessage","concat","isLoading","isLoaded"],"sources":["../src/ErrorBoundary.tsx"],"sourcesContent":["import Log from '@deephaven/log';\nimport React, { Component, type ReactNode } from 'react';\nimport LoadingOverlay from './LoadingOverlay';\n\nconst log = Log.module('ErrorBoundary');\n\nexport interface ErrorBoundaryProps {\n /** Children to catch errors from */\n children: ReactNode;\n\n /** Classname to wrap the error message with */\n className?: string;\n\n /** Callback for when an error occurs */\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void;\n\n /** Custom fallback element */\n fallback?: ReactNode;\n}\n\nexport interface ErrorBoundaryState {\n error?: Error;\n}\n\n/**\n * Error boundary for catching render errors in React. Displays an error message if an error is caught by default, or you can specify a fallback component to render.\n * https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary\n */\nexport class ErrorBoundary extends Component<\n ErrorBoundaryProps,\n ErrorBoundaryState\n> {\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { error: undefined };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {\n const { onError } = this.props;\n log.error('Error caught by ErrorBoundary', error, errorInfo);\n onError?.(error, errorInfo);\n }\n\n render(): ReactNode {\n const { children, className, fallback } = this.props;\n const { error } = this.state;\n if (error != null) {\n if (fallback != null) {\n return fallback;\n }\n\n return (\n <div className={className}>\n <LoadingOverlay\n errorMessage={`${error}`}\n isLoading={false}\n isLoaded={false}\n data-testid=\"error-boundary-loading\"\n />\n </div>\n );\n }\n\n // We need to check for undefined children because React will throw an error if we return undefined from a render method\n // Note this behaviour was changed in React 18: https://github.com/reactwg/react-18/discussions/75\n return children ?? null;\n }\n}\n\nexport default ErrorBoundary;\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,gBAAgB;AAChC,OAAOC,KAAK,IAAIC,SAAS,QAAwB,OAAO;AAAC,OAClDC,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAErB,IAAMC,GAAG,GAAGN,GAAG,CAACO,MAAM,CAAC,eAAe,CAAC;AAoBvC;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,SAASN,SAAS,CAG1C;EACA,OAAOO,wBAAwBA,CAACC,KAAY,EAAsB;IAChE,OAAO;MAAEA;IAAM,CAAC;EAClB;EAEAC,WAAWA,CAACC,KAAyB,EAAE;IACrC,KAAK,CAACA,KAAK,CAAC;IACZ,IAAI,CAACC,KAAK,GAAG;MAAEH,KAAK,EAAEI;IAAU,CAAC;EACnC;EAEAC,iBAAiBA,CAACL,KAAY,EAAEM,SAA0B,EAAQ;IAChE,IAAM;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAACL,KAAK;IAC9BN,GAAG,CAACI,KAAK,CAAC,+BAA+B,EAAEA,KAAK,EAAEM,SAAS,CAAC;IAC5DC,OAAO,aAAPA,OAAO,
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.js","names":["Log","React","Component","LoadingOverlay","jsx","_jsx","log","module","ErrorBoundary","getDerivedStateFromError","error","constructor","props","state","undefined","componentDidCatch","errorInfo","onError","render","children","className","fallback","errorMessage","concat","isLoading","isLoaded"],"sources":["../src/ErrorBoundary.tsx"],"sourcesContent":["import Log from '@deephaven/log';\nimport React, { Component, type ReactNode } from 'react';\nimport LoadingOverlay from './LoadingOverlay';\n\nconst log = Log.module('ErrorBoundary');\n\nexport interface ErrorBoundaryProps {\n /** Children to catch errors from */\n children: ReactNode;\n\n /** Classname to wrap the error message with */\n className?: string;\n\n /** Callback for when an error occurs */\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void;\n\n /** Custom fallback element */\n fallback?: ReactNode;\n}\n\nexport interface ErrorBoundaryState {\n error?: Error;\n}\n\n/**\n * Error boundary for catching render errors in React. Displays an error message if an error is caught by default, or you can specify a fallback component to render.\n * https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary\n */\nexport class ErrorBoundary extends Component<\n ErrorBoundaryProps,\n ErrorBoundaryState\n> {\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { error: undefined };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {\n const { onError } = this.props;\n log.error('Error caught by ErrorBoundary', error, errorInfo);\n onError?.(error, errorInfo);\n }\n\n render(): ReactNode {\n const { children, className, fallback } = this.props;\n const { error } = this.state;\n if (error != null) {\n if (fallback != null) {\n return fallback;\n }\n\n return (\n <div className={className}>\n <LoadingOverlay\n errorMessage={`${error}`}\n isLoading={false}\n isLoaded={false}\n data-testid=\"error-boundary-loading\"\n />\n </div>\n );\n }\n\n // We need to check for undefined children because React will throw an error if we return undefined from a render method\n // Note this behaviour was changed in React 18: https://github.com/reactwg/react-18/discussions/75\n return children ?? null;\n }\n}\n\nexport default ErrorBoundary;\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,gBAAgB;AAChC,OAAOC,KAAK,IAAIC,SAAS,QAAwB,OAAO;AAAC,OAClDC,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAErB,IAAMC,GAAG,GAAGN,GAAG,CAACO,MAAM,CAAC,eAAe,CAAC;AAoBvC;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,SAASN,SAAS,CAG1C;EACA,OAAOO,wBAAwBA,CAACC,KAAY,EAAsB;IAChE,OAAO;MAAEA;IAAM,CAAC;EAClB;EAEAC,WAAWA,CAACC,KAAyB,EAAE;IACrC,KAAK,CAACA,KAAK,CAAC;IACZ,IAAI,CAACC,KAAK,GAAG;MAAEH,KAAK,EAAEI;IAAU,CAAC;EACnC;EAEAC,iBAAiBA,CAACL,KAAY,EAAEM,SAA0B,EAAQ;IAChE,IAAM;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAACL,KAAK;IAC9BN,GAAG,CAACI,KAAK,CAAC,+BAA+B,EAAEA,KAAK,EAAEM,SAAS,CAAC;IAC5DC,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAGP,KAAK,EAAEM,SAAS,CAAC;EAC7B;EAEAE,MAAMA,CAAA,EAAc;IAClB,IAAM;MAAEC,QAAQ;MAAEC,SAAS;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACT,KAAK;IACpD,IAAM;MAAEF;IAAM,CAAC,GAAG,IAAI,CAACG,KAAK;IAC5B,IAAIH,KAAK,IAAI,IAAI,EAAE;MACjB,IAAIW,QAAQ,IAAI,IAAI,EAAE;QACpB,OAAOA,QAAQ;MACjB;MAEA,oBACEhB,IAAA;QAAKe,SAAS,EAAEA,SAAU;QAAAD,QAAA,eACxBd,IAAA,CAACF,cAAc;UACbmB,YAAY,KAAAC,MAAA,CAAKb,KAAK,CAAG;UACzBc,SAAS,EAAE,KAAM;UACjBC,QAAQ,EAAE,KAAM;UAChB,eAAY;QAAwB,CACrC;MAAC,CACC,CAAC;IAEV;;IAEA;IACA;IACA,OAAON,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,IAAI;EACzB;AACF;AAEA,eAAeX,aAAa","ignoreList":[]}
|
package/dist/ErrorView.js
CHANGED
|
@@ -6,8 +6,7 @@ import { useDebouncedCallback, useResizeObserver } from '@deephaven/react-hooks'
|
|
|
6
6
|
import CopyButton from "./CopyButton.js";
|
|
7
7
|
import Button from "./Button.js";
|
|
8
8
|
import "./ErrorView.css";
|
|
9
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
10
|
/**
|
|
12
11
|
* Component that displays an error message in a textarea so user can scroll and a copy button.
|
|
13
12
|
*/
|
package/dist/ErrorView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorView.js","names":["React","useCallback","useLayoutEffect","useRef","useState","classNames","FontAwesomeIcon","vsDiffAdded","vsDiffRemoved","vsWarning","useDebouncedCallback","useResizeObserver","CopyButton","Button","jsx","_jsx","jsxs","_jsxs","ErrorView","_ref","message","isExpanded","isExpandedProp","type","isExpandable","setIsExpandable","setIsExpanded","viewRef","textRef","handleResize","current","newIsExpandable","scrollHeight","clientHeight","debouncedHandleResize","className","expanded","ref","children","icon","kind","tooltip","copy","concat","trim","onClick"],"sources":["../src/ErrorView.tsx"],"sourcesContent":["import React, { useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsDiffAdded, vsDiffRemoved, vsWarning } from '@deephaven/icons';\nimport {\n useDebouncedCallback,\n useResizeObserver,\n} from '@deephaven/react-hooks';\nimport CopyButton from './CopyButton';\nimport Button from './Button';\nimport './ErrorView.scss';\n\nexport type ErrorViewerProps = {\n /** The message to display in the error view */\n message: string;\n\n /** Set to true if you want the error view to display expanded. Will not show the Show More/Less buttons if true. Defaults to false. */\n isExpanded?: boolean;\n\n /** The type of error message to display in the header. Defaults to Error. */\n type?: string;\n};\n\n/**\n * Component that displays an error message in a textarea so user can scroll and a copy button.\n */\nfunction ErrorView({\n message,\n isExpanded: isExpandedProp = false,\n type = 'Error',\n}: ErrorViewerProps): JSX.Element {\n const [isExpandable, setIsExpandable] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n const viewRef = useRef<HTMLDivElement>(null);\n const textRef = useRef<HTMLPreElement>(null);\n\n const handleResize = useCallback(() => {\n if (isExpanded || isExpandedProp || textRef.current == null) {\n return;\n }\n const newIsExpandable =\n textRef.current.scrollHeight > textRef.current.clientHeight;\n setIsExpandable(newIsExpandable);\n }, [isExpanded, isExpandedProp]);\n\n const debouncedHandleResize = useDebouncedCallback(handleResize, 100);\n\n useResizeObserver(viewRef.current, debouncedHandleResize);\n\n useLayoutEffect(debouncedHandleResize, [debouncedHandleResize]);\n\n return (\n <div\n className={classNames('error-view', {\n expanded: isExpanded || isExpandedProp,\n })}\n ref={viewRef}\n >\n <div className=\"error-view-header\">\n <div className=\"error-view-header-text\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{type}</span>\n </div>\n <div className=\"error-view-buttons\">\n <CopyButton\n kind=\"danger\"\n className=\"error-view-copy-button\"\n tooltip=\"Copy exception contents\"\n copy={`${type}: ${message}`.trim()}\n />\n {(isExpandable || isExpanded) && !isExpandedProp && (\n <Button\n kind=\"danger\"\n className=\"error-view-expand-button\"\n onClick={() => {\n setIsExpanded(!isExpanded);\n }}\n icon={isExpanded ? vsDiffRemoved : vsDiffAdded}\n >\n {isExpanded ? 'Show Less' : 'Show More'}\n </Button>\n )}\n </div>\n </div>\n <pre className=\"error-view-text\" ref={textRef}>\n {message}\n </pre>\n </div>\n );\n}\n\nexport default ErrorView;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,eAAe,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC7E,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,WAAW,EAAEC,aAAa,EAAEC,SAAS,QAAQ,kBAAkB;AACxE,SACEC,oBAAoB,EACpBC,iBAAiB,QACZ,wBAAwB;AAAC,OACzBC,UAAU;AAAA,OACVC,MAAM;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA
|
|
1
|
+
{"version":3,"file":"ErrorView.js","names":["React","useCallback","useLayoutEffect","useRef","useState","classNames","FontAwesomeIcon","vsDiffAdded","vsDiffRemoved","vsWarning","useDebouncedCallback","useResizeObserver","CopyButton","Button","jsx","_jsx","jsxs","_jsxs","ErrorView","_ref","message","isExpanded","isExpandedProp","type","isExpandable","setIsExpandable","setIsExpanded","viewRef","textRef","handleResize","current","newIsExpandable","scrollHeight","clientHeight","debouncedHandleResize","className","expanded","ref","children","icon","kind","tooltip","copy","concat","trim","onClick"],"sources":["../src/ErrorView.tsx"],"sourcesContent":["import React, { useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsDiffAdded, vsDiffRemoved, vsWarning } from '@deephaven/icons';\nimport {\n useDebouncedCallback,\n useResizeObserver,\n} from '@deephaven/react-hooks';\nimport CopyButton from './CopyButton';\nimport Button from './Button';\nimport './ErrorView.scss';\n\nexport type ErrorViewerProps = {\n /** The message to display in the error view */\n message: string;\n\n /** Set to true if you want the error view to display expanded. Will not show the Show More/Less buttons if true. Defaults to false. */\n isExpanded?: boolean;\n\n /** The type of error message to display in the header. Defaults to Error. */\n type?: string;\n};\n\n/**\n * Component that displays an error message in a textarea so user can scroll and a copy button.\n */\nfunction ErrorView({\n message,\n isExpanded: isExpandedProp = false,\n type = 'Error',\n}: ErrorViewerProps): JSX.Element {\n const [isExpandable, setIsExpandable] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n const viewRef = useRef<HTMLDivElement>(null);\n const textRef = useRef<HTMLPreElement>(null);\n\n const handleResize = useCallback(() => {\n if (isExpanded || isExpandedProp || textRef.current == null) {\n return;\n }\n const newIsExpandable =\n textRef.current.scrollHeight > textRef.current.clientHeight;\n setIsExpandable(newIsExpandable);\n }, [isExpanded, isExpandedProp]);\n\n const debouncedHandleResize = useDebouncedCallback(handleResize, 100);\n\n useResizeObserver(viewRef.current, debouncedHandleResize);\n\n useLayoutEffect(debouncedHandleResize, [debouncedHandleResize]);\n\n return (\n <div\n className={classNames('error-view', {\n expanded: isExpanded || isExpandedProp,\n })}\n ref={viewRef}\n >\n <div className=\"error-view-header\">\n <div className=\"error-view-header-text\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{type}</span>\n </div>\n <div className=\"error-view-buttons\">\n <CopyButton\n kind=\"danger\"\n className=\"error-view-copy-button\"\n tooltip=\"Copy exception contents\"\n copy={`${type}: ${message}`.trim()}\n />\n {(isExpandable || isExpanded) && !isExpandedProp && (\n <Button\n kind=\"danger\"\n className=\"error-view-expand-button\"\n onClick={() => {\n setIsExpanded(!isExpanded);\n }}\n icon={isExpanded ? vsDiffRemoved : vsDiffAdded}\n >\n {isExpanded ? 'Show Less' : 'Show More'}\n </Button>\n )}\n </div>\n </div>\n <pre className=\"error-view-text\" ref={textRef}>\n {message}\n </pre>\n </div>\n );\n}\n\nexport default ErrorView;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,eAAe,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC7E,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,WAAW,EAAEC,aAAa,EAAEC,SAAS,QAAQ,kBAAkB;AACxE,SACEC,oBAAoB,EACpBC,iBAAiB,QACZ,wBAAwB;AAAC,OACzBC,UAAU;AAAA,OACVC,MAAM;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAcb;AACA;AACA;AACA,SAASC,SAASA,CAAAC,IAAA,EAIgB;EAAA,IAJf;IACjBC,OAAO;IACPC,UAAU,EAAEC,cAAc,GAAG,KAAK;IAClCC,IAAI,GAAG;EACS,CAAC,GAAAJ,IAAA;EACjB,IAAM,CAACK,YAAY,EAAEC,eAAe,CAAC,GAAGrB,QAAQ,CAAC,KAAK,CAAC;EACvD,IAAM,CAACiB,UAAU,EAAEK,aAAa,CAAC,GAAGtB,QAAQ,CAAC,KAAK,CAAC;EACnD,IAAMuB,OAAO,GAAGxB,MAAM,CAAiB,IAAI,CAAC;EAC5C,IAAMyB,OAAO,GAAGzB,MAAM,CAAiB,IAAI,CAAC;EAE5C,IAAM0B,YAAY,GAAG5B,WAAW,CAAC,MAAM;IACrC,IAAIoB,UAAU,IAAIC,cAAc,IAAIM,OAAO,CAACE,OAAO,IAAI,IAAI,EAAE;MAC3D;IACF;IACA,IAAMC,eAAe,GACnBH,OAAO,CAACE,OAAO,CAACE,YAAY,GAAGJ,OAAO,CAACE,OAAO,CAACG,YAAY;IAC7DR,eAAe,CAACM,eAAe,CAAC;EAClC,CAAC,EAAE,CAACV,UAAU,EAAEC,cAAc,CAAC,CAAC;EAEhC,IAAMY,qBAAqB,GAAGxB,oBAAoB,CAACmB,YAAY,EAAE,GAAG,CAAC;EAErElB,iBAAiB,CAACgB,OAAO,CAACG,OAAO,EAAEI,qBAAqB,CAAC;EAEzDhC,eAAe,CAACgC,qBAAqB,EAAE,CAACA,qBAAqB,CAAC,CAAC;EAE/D,oBACEjB,KAAA;IACEkB,SAAS,EAAE9B,UAAU,CAAC,YAAY,EAAE;MAClC+B,QAAQ,EAAEf,UAAU,IAAIC;IAC1B,CAAC,CAAE;IACHe,GAAG,EAAEV,OAAQ;IAAAW,QAAA,gBAEbrB,KAAA;MAAKkB,SAAS,EAAC,mBAAmB;MAAAG,QAAA,gBAChCrB,KAAA;QAAKkB,SAAS,EAAC,wBAAwB;QAAAG,QAAA,gBACrCvB,IAAA,CAACT,eAAe;UAACiC,IAAI,EAAE9B;QAAU,CAAE,CAAC,eACpCM,IAAA;UAAAuB,QAAA,EAAOf;QAAI,CAAO,CAAC;MAAA,CAChB,CAAC,eACNN,KAAA;QAAKkB,SAAS,EAAC,oBAAoB;QAAAG,QAAA,gBACjCvB,IAAA,CAACH,UAAU;UACT4B,IAAI,EAAC,QAAQ;UACbL,SAAS,EAAC,wBAAwB;UAClCM,OAAO,EAAC,yBAAyB;UACjCC,IAAI,EAAE,GAAAC,MAAA,CAAGpB,IAAI,QAAAoB,MAAA,CAAKvB,OAAO,EAAGwB,IAAI,CAAC;QAAE,CACpC,CAAC,EACD,CAACpB,YAAY,IAAIH,UAAU,KAAK,CAACC,cAAc,iBAC9CP,IAAA,CAACF,MAAM;UACL2B,IAAI,EAAC,QAAQ;UACbL,SAAS,EAAC,0BAA0B;UACpCU,OAAO,EAAEA,CAAA,KAAM;YACbnB,aAAa,CAAC,CAACL,UAAU,CAAC;UAC5B,CAAE;UACFkB,IAAI,EAAElB,UAAU,GAAGb,aAAa,GAAGD,WAAY;UAAA+B,QAAA,EAE9CjB,UAAU,GAAG,WAAW,GAAG;QAAW,CACjC,CACT;MAAA,CACE,CAAC;IAAA,CACH,CAAC,eACNN,IAAA;MAAKoB,SAAS,EAAC,iBAAiB;MAACE,GAAG,EAAET,OAAQ;MAAAU,QAAA,EAC3ClB;IAAO,CACL,CAAC;EAAA,CACH,CAAC;AAEV;AAEA,eAAeF,SAAS","ignoreList":[]}
|
|
@@ -49,7 +49,7 @@ declare class HierarchicalCheckboxMenu extends Component<HierarchicalCheckboxMen
|
|
|
49
49
|
setAllValues(value: boolean): void;
|
|
50
50
|
selectAll(): void;
|
|
51
51
|
clear(): void;
|
|
52
|
-
renderMenuElement():
|
|
52
|
+
renderMenuElement(): JSX.Element;
|
|
53
53
|
render(): JSX.Element;
|
|
54
54
|
}
|
|
55
55
|
export default HierarchicalCheckboxMenu;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchicalCheckboxMenu.d.ts","sourceRoot":"","sources":["../src/HierarchicalCheckboxMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,iCAAiC,CAAC;AAGzC,MAAM,MAAM,4BAA4B,GAAG,GAAG,CAC5C,MAAM,EACN,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAC/B,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,4BAA4B,CAAC;IACvC,gBAAgB,EAAE,CAAC,GAAG,EAAE,4BAA4B,KAAK,IAAI,CAAC;IAC9D,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,cAAM,wBAAyB,SAAQ,SAAS,CAC9C,6BAA6B,EAC7B,6BAA6B,CAC9B;IACC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAKzD;IAEF,MAAM,CAAC,gBAAgB,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,4BAA4B,GACrC,OAAO,GAAG,IAAI;gBAkBL,KAAK,EAAE,6BAA6B;IAahD,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAS5D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IA6CpD,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAkBlC,SAAS,IAAI,IAAI;IAIjB,KAAK,IAAI,IAAI;IAIb,iBAAiB,IAAI,
|
|
1
|
+
{"version":3,"file":"HierarchicalCheckboxMenu.d.ts","sourceRoot":"","sources":["../src/HierarchicalCheckboxMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,iCAAiC,CAAC;AAGzC,MAAM,MAAM,4BAA4B,GAAG,GAAG,CAC5C,MAAM,EACN,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAC/B,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,4BAA4B,CAAC;IACvC,gBAAgB,EAAE,CAAC,GAAG,EAAE,4BAA4B,KAAK,IAAI,CAAC;IAC9D,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,cAAM,wBAAyB,SAAQ,SAAS,CAC9C,6BAA6B,EAC7B,6BAA6B,CAC9B;IACC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAKzD;IAEF,MAAM,CAAC,gBAAgB,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,4BAA4B,GACrC,OAAO,GAAG,IAAI;gBAkBL,KAAK,EAAE,6BAA6B;IAahD,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAS5D,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IA6CpD,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAkBlC,SAAS,IAAI,IAAI;IAIjB,KAAK,IAAI,IAAI;IAIb,iBAAiB,IAAI,GAAG,CAAC,OAAO;IAsDhC,MAAM,IAAI,GAAG,CAAC,OAAO;CAqCtB;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -8,8 +8,7 @@ import Checkbox from "./Checkbox.js";
|
|
|
8
8
|
import Popper from "./popper/Popper.js";
|
|
9
9
|
import "./HierarchicalCheckboxMenu.css";
|
|
10
10
|
import Button from "./Button.js";
|
|
11
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
12
|
/**
|
|
14
13
|
* A pull down menu that displays a hierarchy of checkboxes.
|
|
15
14
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchicalCheckboxMenu.js","names":["React","Component","FontAwesomeIcon","classNames","Checkbox","Popper","Button","jsx","_jsx","jsxs","_jsxs","HierarchicalCheckboxMenu","isParentSelected","parent","valueMap","children","get","undefined","includesTrue","Array","from","values","includes","includesFalse","constructor","props","toggleMenu","bind","toggleValueFor","selectAll","clear","state","menuIsOpen","event","stopPropagation","preventDefault","setState","child","onUpdateValueMap","map","Map","newChildren","set","parentSelected","newChildValue","forEach","_","key","currentChildren","setAllValues","value","copy","renderMenuElement","dataTestId","className","entries","_ref","checked","onChange","_ref2","kind","onClick","concat","render","menuText","icon","id","type","options","placement","isShown","onExited","closeOnBlur","interactive","_defineProperty"],"sources":["../src/HierarchicalCheckboxMenu.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { type IconDefinition } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport Checkbox from './Checkbox';\nimport Popper from './popper/Popper';\nimport './HierarchicalCheckboxMenu.scss';\nimport Button from './Button';\n\nexport type HierarchicalCheckboxValueMap = Map<\n string,\n boolean | Map<string, boolean>\n>;\n\ntype HierarchicalCheckboxMenuProps = {\n className: string;\n menuText: string;\n valueMap: HierarchicalCheckboxValueMap;\n onUpdateValueMap: (map: HierarchicalCheckboxValueMap) => void;\n icon: IconDefinition | null;\n id: string;\n 'data-testid'?: string;\n};\n\ntype HierarchicalCheckboxMenuState = {\n menuIsOpen: boolean;\n};\n\n/**\n * A pull down menu that displays a hierarchy of checkboxes.\n *\n * Currently supports only two levels of check boxes. The input should be a Map\n * where the keys are the parent names. The values can a boolean if the parent\n * has no children or another Map where keys are child names and values are booleans.\n *\n * Here is an example:\n * const INITIAL_TYPE_MAP = new Map([\n * ['Queries', new Map([['Live', true], ['Batch', true]])],\n * [\n * 'DBA Queries',\n * new Map([\n * ['Data Merge', true],\n * ['Data Validation', true],\n * ['Imports', true],\n * ['Data Services', true],\n * ]),\n * ],\n * ['Helper Queries', true],\n * ]);\n *\n * When a checkbox is changed, this component will make a deep copy of the Map\n * with the appropriate booleans changed. It will then call onUpdateValueMap\n * with the new Map.\n */\nclass HierarchicalCheckboxMenu extends Component<\n HierarchicalCheckboxMenuProps,\n HierarchicalCheckboxMenuState\n> {\n static defaultProps: Partial<HierarchicalCheckboxMenuProps> = {\n className: '',\n icon: null,\n id: '',\n 'data-testid': undefined,\n };\n\n static isParentSelected(\n parent: string,\n valueMap: HierarchicalCheckboxValueMap\n ): boolean | null {\n const children = valueMap.get(parent);\n if (children === undefined) {\n return false;\n }\n if (typeof children === 'boolean') {\n // This parent has no children\n return children;\n }\n const includesTrue = Array.from(children.values()).includes(true);\n const includesFalse = Array.from(children.values()).includes(false);\n if (includesTrue && includesFalse) {\n // Indeterminate\n return null;\n }\n return includesTrue;\n }\n\n constructor(props: HierarchicalCheckboxMenuProps) {\n super(props);\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.toggleValueFor = this.toggleValueFor.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n\n this.state = {\n menuIsOpen: false,\n };\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n event.preventDefault();\n this.setState(state => {\n const { menuIsOpen } = state;\n return { menuIsOpen: !menuIsOpen };\n });\n }\n\n toggleValueFor(parent: string, child?: string): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and toggle the boolean for parent / child\n const map = new Map(valueMap);\n const children = map.get(parent);\n if (children instanceof Map) {\n const newChildren = new Map(children);\n if (child != null) {\n newChildren.set(child, children.get(child) !== true);\n } else {\n const parentSelected = HierarchicalCheckboxMenu.isParentSelected(\n parent,\n map\n );\n const newChildValue = parentSelected == null || !parentSelected;\n children.forEach((_, key) => newChildren.set(key, newChildValue));\n }\n map.set(parent, newChildren);\n } else {\n map.set(parent, children == null || !children);\n }\n\n // The parent was clicked so all children must be toggled\n const currentChildren = map.get(parent);\n if (\n child === undefined &&\n currentChildren !== undefined &&\n typeof currentChildren !== 'boolean'\n ) {\n const parentSelected = HierarchicalCheckboxMenu.isParentSelected(\n parent,\n valueMap\n );\n if (parentSelected != null && parentSelected) {\n currentChildren.forEach((_, key) => currentChildren.set(key, false));\n } else {\n // for parent selection of false or null (indeterminate), select everything\n currentChildren.forEach((_, key) => currentChildren.set(key, true));\n }\n }\n\n onUpdateValueMap(map);\n }\n\n setAllValues(value: boolean): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and set everything\n const copy = new Map();\n valueMap.forEach((child, parent) => {\n if (typeof child === 'boolean') {\n copy.set(parent, value);\n } else {\n const children = new Map();\n child.forEach((_, key) => children.set(key, value));\n copy.set(parent, children);\n }\n });\n\n onUpdateValueMap(copy);\n }\n\n selectAll(): void {\n this.setAllValues(true);\n }\n\n clear(): void {\n this.setAllValues(false);\n }\n\n renderMenuElement(): React.ReactNode {\n const { valueMap, 'data-testid': dataTestId } = this.props;\n return (\n <div className=\"hcm-menu-container\">\n {Array.from(valueMap.entries()).map(([parent, children]) => (\n <div key={parent}>\n <Checkbox\n className=\"hcm-parent\"\n checked={HierarchicalCheckboxMenu.isParentSelected(\n parent,\n valueMap\n )}\n onChange={() => this.toggleValueFor(parent)}\n >\n {parent}\n </Checkbox>\n {children !== undefined &&\n typeof children !== 'boolean' &&\n Array.from(children.entries()).map(([child, value]) => (\n <Checkbox\n className=\"hcm-child\"\n key={child}\n checked={value}\n onChange={() => this.toggleValueFor(parent, child)}\n >\n {child}\n </Checkbox>\n ))}\n </div>\n ))}\n <Button\n kind=\"ghost\"\n onClick={this.selectAll}\n data-testid={\n dataTestId !== undefined\n ? `${dataTestId}-btn-select-all`\n : undefined\n }\n >\n Select All\n </Button>\n <Button\n kind=\"ghost\"\n onClick={this.clear}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn-clear` : undefined\n }\n >\n Clear\n </Button>\n </div>\n );\n }\n\n render(): JSX.Element {\n const {\n menuText,\n className,\n icon,\n id,\n 'data-testid': dataTestId,\n } = this.props;\n const { menuIsOpen } = this.state;\n\n return (\n <button\n type=\"button\"\n className={classNames('btn hcm-btn', className)}\n onClick={this.toggleMenu}\n id={id}\n data-testid={dataTestId}\n >\n <span>\n {icon && <FontAwesomeIcon icon={icon} className=\"hcm-icon mr-1\" />}\n {menuText}\n </span>\n <span className=\"cs-caret\" />\n <Popper\n options={{ placement: 'bottom' }}\n isShown={menuIsOpen}\n onExited={() => {\n this.setState({ menuIsOpen: false });\n }}\n closeOnBlur\n interactive\n >\n {this.renderMenuElement()}\n </Popper>\n </button>\n );\n }\n}\n\nexport default HierarchicalCheckboxMenu;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HierarchicalCheckboxMenu.js","names":["React","Component","FontAwesomeIcon","classNames","Checkbox","Popper","Button","jsx","_jsx","jsxs","_jsxs","HierarchicalCheckboxMenu","isParentSelected","parent","valueMap","children","get","undefined","includesTrue","Array","from","values","includes","includesFalse","constructor","props","toggleMenu","bind","toggleValueFor","selectAll","clear","state","menuIsOpen","event","stopPropagation","preventDefault","setState","child","onUpdateValueMap","map","Map","newChildren","set","parentSelected","newChildValue","forEach","_","key","currentChildren","setAllValues","value","copy","renderMenuElement","dataTestId","className","entries","_ref","checked","onChange","_ref2","kind","onClick","concat","render","menuText","icon","id","type","options","placement","isShown","onExited","closeOnBlur","interactive","_defineProperty"],"sources":["../src/HierarchicalCheckboxMenu.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { type IconDefinition } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport Checkbox from './Checkbox';\nimport Popper from './popper/Popper';\nimport './HierarchicalCheckboxMenu.scss';\nimport Button from './Button';\n\nexport type HierarchicalCheckboxValueMap = Map<\n string,\n boolean | Map<string, boolean>\n>;\n\ntype HierarchicalCheckboxMenuProps = {\n className: string;\n menuText: string;\n valueMap: HierarchicalCheckboxValueMap;\n onUpdateValueMap: (map: HierarchicalCheckboxValueMap) => void;\n icon: IconDefinition | null;\n id: string;\n 'data-testid'?: string;\n};\n\ntype HierarchicalCheckboxMenuState = {\n menuIsOpen: boolean;\n};\n\n/**\n * A pull down menu that displays a hierarchy of checkboxes.\n *\n * Currently supports only two levels of check boxes. The input should be a Map\n * where the keys are the parent names. The values can a boolean if the parent\n * has no children or another Map where keys are child names and values are booleans.\n *\n * Here is an example:\n * const INITIAL_TYPE_MAP = new Map([\n * ['Queries', new Map([['Live', true], ['Batch', true]])],\n * [\n * 'DBA Queries',\n * new Map([\n * ['Data Merge', true],\n * ['Data Validation', true],\n * ['Imports', true],\n * ['Data Services', true],\n * ]),\n * ],\n * ['Helper Queries', true],\n * ]);\n *\n * When a checkbox is changed, this component will make a deep copy of the Map\n * with the appropriate booleans changed. It will then call onUpdateValueMap\n * with the new Map.\n */\nclass HierarchicalCheckboxMenu extends Component<\n HierarchicalCheckboxMenuProps,\n HierarchicalCheckboxMenuState\n> {\n static defaultProps: Partial<HierarchicalCheckboxMenuProps> = {\n className: '',\n icon: null,\n id: '',\n 'data-testid': undefined,\n };\n\n static isParentSelected(\n parent: string,\n valueMap: HierarchicalCheckboxValueMap\n ): boolean | null {\n const children = valueMap.get(parent);\n if (children === undefined) {\n return false;\n }\n if (typeof children === 'boolean') {\n // This parent has no children\n return children;\n }\n const includesTrue = Array.from(children.values()).includes(true);\n const includesFalse = Array.from(children.values()).includes(false);\n if (includesTrue && includesFalse) {\n // Indeterminate\n return null;\n }\n return includesTrue;\n }\n\n constructor(props: HierarchicalCheckboxMenuProps) {\n super(props);\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.toggleValueFor = this.toggleValueFor.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n\n this.state = {\n menuIsOpen: false,\n };\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n event.preventDefault();\n this.setState(state => {\n const { menuIsOpen } = state;\n return { menuIsOpen: !menuIsOpen };\n });\n }\n\n toggleValueFor(parent: string, child?: string): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and toggle the boolean for parent / child\n const map = new Map(valueMap);\n const children = map.get(parent);\n if (children instanceof Map) {\n const newChildren = new Map(children);\n if (child != null) {\n newChildren.set(child, children.get(child) !== true);\n } else {\n const parentSelected = HierarchicalCheckboxMenu.isParentSelected(\n parent,\n map\n );\n const newChildValue = parentSelected == null || !parentSelected;\n children.forEach((_, key) => newChildren.set(key, newChildValue));\n }\n map.set(parent, newChildren);\n } else {\n map.set(parent, children == null || !children);\n }\n\n // The parent was clicked so all children must be toggled\n const currentChildren = map.get(parent);\n if (\n child === undefined &&\n currentChildren !== undefined &&\n typeof currentChildren !== 'boolean'\n ) {\n const parentSelected = HierarchicalCheckboxMenu.isParentSelected(\n parent,\n valueMap\n );\n if (parentSelected != null && parentSelected) {\n currentChildren.forEach((_, key) => currentChildren.set(key, false));\n } else {\n // for parent selection of false or null (indeterminate), select everything\n currentChildren.forEach((_, key) => currentChildren.set(key, true));\n }\n }\n\n onUpdateValueMap(map);\n }\n\n setAllValues(value: boolean): void {\n const { valueMap, onUpdateValueMap } = this.props;\n\n // Make a deep copy of the Map and set everything\n const copy = new Map();\n valueMap.forEach((child, parent) => {\n if (typeof child === 'boolean') {\n copy.set(parent, value);\n } else {\n const children = new Map();\n child.forEach((_, key) => children.set(key, value));\n copy.set(parent, children);\n }\n });\n\n onUpdateValueMap(copy);\n }\n\n selectAll(): void {\n this.setAllValues(true);\n }\n\n clear(): void {\n this.setAllValues(false);\n }\n\n renderMenuElement(): JSX.Element {\n const { valueMap, 'data-testid': dataTestId } = this.props;\n return (\n <div className=\"hcm-menu-container\">\n {Array.from(valueMap.entries()).map(([parent, children]) => (\n <div key={parent}>\n <Checkbox\n className=\"hcm-parent\"\n checked={HierarchicalCheckboxMenu.isParentSelected(\n parent,\n valueMap\n )}\n onChange={() => this.toggleValueFor(parent)}\n >\n {parent}\n </Checkbox>\n {children !== undefined &&\n typeof children !== 'boolean' &&\n Array.from(children.entries()).map(([child, value]) => (\n <Checkbox\n className=\"hcm-child\"\n key={child}\n checked={value}\n onChange={() => this.toggleValueFor(parent, child)}\n >\n {child}\n </Checkbox>\n ))}\n </div>\n ))}\n <Button\n kind=\"ghost\"\n onClick={this.selectAll}\n data-testid={\n dataTestId !== undefined\n ? `${dataTestId}-btn-select-all`\n : undefined\n }\n >\n Select All\n </Button>\n <Button\n kind=\"ghost\"\n onClick={this.clear}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn-clear` : undefined\n }\n >\n Clear\n </Button>\n </div>\n );\n }\n\n render(): JSX.Element {\n const {\n menuText,\n className,\n icon,\n id,\n 'data-testid': dataTestId,\n } = this.props;\n const { menuIsOpen } = this.state;\n\n return (\n <button\n type=\"button\"\n className={classNames('btn hcm-btn', className)}\n onClick={this.toggleMenu}\n id={id}\n data-testid={dataTestId}\n >\n <span>\n {icon && <FontAwesomeIcon icon={icon} className=\"hcm-icon mr-1\" />}\n {menuText}\n </span>\n <span className=\"cs-caret\" />\n <Popper\n options={{ placement: 'bottom' }}\n isShown={menuIsOpen}\n onExited={() => {\n this.setState({ menuIsOpen: false });\n }}\n closeOnBlur\n interactive\n >\n {this.renderMenuElement()}\n </Popper>\n </button>\n );\n }\n}\n\nexport default HierarchicalCheckboxMenu;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/ItemList.d.ts
CHANGED
|
@@ -85,7 +85,7 @@ export declare class ItemList<T> extends PureComponent<ItemListProps<T>, ItemLis
|
|
|
85
85
|
list: React.RefObject<List>;
|
|
86
86
|
listContainer: React.RefObject<HTMLDivElement>;
|
|
87
87
|
getItemSelected: ((index: number, selectedRanges: readonly Range[]) => boolean) & memoize.Memoized<(index: number, selectedRanges: readonly Range[]) => boolean>;
|
|
88
|
-
getCachedItem: ((itemIndex: number, key: number, item: T, isFocused: boolean, isSelected: boolean, renderItem: RenderItemFn<T>, style: React.CSSProperties, disableSelect: boolean) => JSX.Element) & memoize.Memoized<(itemIndex: number, key: number, item: T, isFocused: boolean, isSelected: boolean, renderItem: RenderItemFn<T>, style: React.CSSProperties, disableSelect: boolean) => JSX.Element>;
|
|
88
|
+
getCachedItem: ((itemIndex: number, key: number, item: T, isFocused: boolean, isSelected: boolean, renderItem: RenderItemFn<T>, style: React.CSSProperties, disableSelect: boolean) => import("react/jsx-runtime").JSX.Element) & memoize.Memoized<(itemIndex: number, key: number, item: T, isFocused: boolean, isSelected: boolean, renderItem: RenderItemFn<T>, style: React.CSSProperties, disableSelect: boolean) => import("react/jsx-runtime").JSX.Element>;
|
|
89
89
|
getOuterElement: ((onKeyDown: React.KeyboardEventHandler) => React.ForwardRefExoticComponent<React.RefAttributes<HTMLDivElement>>) & memoize.Memoized<(onKeyDown: React.KeyboardEventHandler) => React.ForwardRefExoticComponent<React.RefAttributes<HTMLDivElement>>>;
|
|
90
90
|
getInnerElement: (() => React.ForwardRefExoticComponent<React.RefAttributes<HTMLDivElement>>) & memoize.Memoized<() => React.ForwardRefExoticComponent<React.RefAttributes<HTMLDivElement>>>;
|
|
91
91
|
getItemData: ((items: readonly T[], selectedRanges: readonly Range[], renderItem: RenderItemFn<T>) => {
|
package/dist/ItemList.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemList.d.ts","sourceRoot":"","sources":["../src/ItemList.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ItemList.d.ts","sourceRoot":"","sources":["../src/ItemList.tsx"],"names":[],"mappings":"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"}
|
package/dist/ItemList.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
var _ItemList;
|
|
1
2
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
3
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
4
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
@@ -21,8 +22,6 @@ var MIN_DRAG_DELTA = 5;
|
|
|
21
22
|
* Can be navigated via keyboard or mouse.
|
|
22
23
|
*/
|
|
23
24
|
export class ItemList extends PureComponent {
|
|
24
|
-
// By drawing an additional 10 items on each side, tab/keyboard navigation works better (as the next element exists)
|
|
25
|
-
|
|
26
25
|
static renderItem(_ref) {
|
|
27
26
|
var _ref2, _item$displayValue;
|
|
28
27
|
var {
|
|
@@ -171,7 +170,7 @@ export class ItemList extends PureComponent {
|
|
|
171
170
|
}
|
|
172
171
|
focus() {
|
|
173
172
|
var _this$listContainer$c;
|
|
174
|
-
(_this$listContainer$c = this.listContainer.current) === null || _this$listContainer$c === void 0
|
|
173
|
+
(_this$listContainer$c = this.listContainer.current) === null || _this$listContainer$c === void 0 || _this$listContainer$c.focus();
|
|
175
174
|
}
|
|
176
175
|
restoreScrollPosition() {
|
|
177
176
|
var {
|
|
@@ -181,7 +180,7 @@ export class ItemList extends PureComponent {
|
|
|
181
180
|
var _this$listContainer$c2;
|
|
182
181
|
// manually restore the scroll containers offset
|
|
183
182
|
// virtual list doesn't restore scrolloffset in a re-render if it's the same
|
|
184
|
-
(_this$listContainer$c2 = this.listContainer.current) === null || _this$listContainer$c2 === void 0
|
|
183
|
+
(_this$listContainer$c2 = this.listContainer.current) === null || _this$listContainer$c2 === void 0 || _this$listContainer$c2.scrollTo(0, scrollOffset);
|
|
185
184
|
}
|
|
186
185
|
}
|
|
187
186
|
getElement(itemIndex) {
|
|
@@ -278,7 +277,6 @@ export class ItemList extends PureComponent {
|
|
|
278
277
|
|
|
279
278
|
// Leave selection until mouse up, to allow for dragging behaviour
|
|
280
279
|
}
|
|
281
|
-
|
|
282
280
|
handleItemBlur(itemIndex, e) {
|
|
283
281
|
log.debug2('item blur', itemIndex, e.currentTarget, e.relatedTarget);
|
|
284
282
|
if (!e.relatedTarget || this.listContainer.current && e.relatedTarget instanceof HTMLElement && !this.listContainer.current.contains(e.relatedTarget)) {
|
|
@@ -437,7 +435,7 @@ export class ItemList extends PureComponent {
|
|
|
437
435
|
this.selectItem(newFocus);
|
|
438
436
|
} else {
|
|
439
437
|
var _this$listContainer$c3;
|
|
440
|
-
(_this$listContainer$c3 = this.listContainer.current) === null || _this$listContainer$c3 === void 0
|
|
438
|
+
(_this$listContainer$c3 = this.listContainer.current) === null || _this$listContainer$c3 === void 0 || _this$listContainer$c3.focus();
|
|
441
439
|
}
|
|
442
440
|
}
|
|
443
441
|
this.scrollIntoView(newFocus);
|
|
@@ -579,9 +577,9 @@ export class ItemList extends PureComponent {
|
|
|
579
577
|
onViewportChange,
|
|
580
578
|
rowHeight
|
|
581
579
|
} = this.props;
|
|
582
|
-
var
|
|
583
|
-
var
|
|
584
|
-
onViewportChange(
|
|
580
|
+
var topRow = Math.floor(scrollOffset / rowHeight);
|
|
581
|
+
var bottomRow = topRow + Math.ceil(height / rowHeight);
|
|
582
|
+
onViewportChange(topRow, bottomRow);
|
|
585
583
|
}
|
|
586
584
|
}
|
|
587
585
|
isListAtBottom() {
|
|
@@ -635,11 +633,11 @@ export class ItemList extends PureComponent {
|
|
|
635
633
|
return /*#__PURE__*/_jsx(AutoSizer, {
|
|
636
634
|
className: "item-list-auto-sizer",
|
|
637
635
|
onResize: this.handleResize,
|
|
638
|
-
children:
|
|
636
|
+
children: _ref0 => {
|
|
639
637
|
var {
|
|
640
638
|
width,
|
|
641
639
|
height
|
|
642
|
-
} =
|
|
640
|
+
} = _ref0;
|
|
643
641
|
return /*#__PURE__*/_jsx(List, {
|
|
644
642
|
className: "item-list-scroll-pane",
|
|
645
643
|
height: height,
|
|
@@ -666,13 +664,15 @@ export class ItemList extends PureComponent {
|
|
|
666
664
|
});
|
|
667
665
|
}
|
|
668
666
|
}
|
|
667
|
+
_ItemList = ItemList;
|
|
669
668
|
_defineProperty(ItemList, "CACHE_SIZE", 1000);
|
|
670
669
|
_defineProperty(ItemList, "DEFAULT_ROW_HEIGHT", 20);
|
|
670
|
+
// By drawing an additional 10 items on each side, tab/keyboard navigation works better (as the next element exists)
|
|
671
671
|
_defineProperty(ItemList, "DEFAULT_OVERSCAN", 10);
|
|
672
672
|
_defineProperty(ItemList, "defaultProps", {
|
|
673
673
|
offset: 0,
|
|
674
674
|
items: [],
|
|
675
|
-
rowHeight:
|
|
675
|
+
rowHeight: _ItemList.DEFAULT_ROW_HEIGHT,
|
|
676
676
|
isDeselectOnClick: true,
|
|
677
677
|
isDoubleClickSelect: false,
|
|
678
678
|
isDragSelect: true,
|
|
@@ -691,8 +691,8 @@ _defineProperty(ItemList, "defaultProps", {
|
|
|
691
691
|
onViewportChange() {
|
|
692
692
|
// no-op
|
|
693
693
|
},
|
|
694
|
-
overscanCount:
|
|
695
|
-
renderItem:
|
|
694
|
+
overscanCount: _ItemList.DEFAULT_OVERSCAN,
|
|
695
|
+
renderItem: _ItemList.renderItem,
|
|
696
696
|
selectedRanges: [],
|
|
697
697
|
focusSelector: '.item-list-item',
|
|
698
698
|
'data-testid': undefined
|