@deephaven/components 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/AutoCompleteInput.js +41 -79
  2. package/dist/AutoCompleteInput.js.map +1 -1
  3. package/dist/AutoResizeTextarea.js +29 -13
  4. package/dist/AutoResizeTextarea.js.map +1 -1
  5. package/dist/BasicModal.js +17 -15
  6. package/dist/BasicModal.js.map +1 -1
  7. package/dist/BulkActionBar.js +3 -5
  8. package/dist/BulkActionBar.js.map +1 -1
  9. package/dist/Button.js +24 -25
  10. package/dist/Button.js.map +1 -1
  11. package/dist/CardFlip.js +4 -6
  12. package/dist/CardFlip.js.map +1 -1
  13. package/dist/Checkbox.js +22 -13
  14. package/dist/Checkbox.js.map +1 -1
  15. package/dist/Collapse.js +6 -9
  16. package/dist/Collapse.js.map +1 -1
  17. package/dist/CopyButton.js +14 -6
  18. package/dist/CopyButton.js.map +1 -1
  19. package/dist/CustomTimeSelect.js +49 -88
  20. package/dist/CustomTimeSelect.js.map +1 -1
  21. package/dist/DateInput.js +25 -10
  22. package/dist/DateInput.js.map +1 -1
  23. package/dist/DateInputUtils.js +1 -3
  24. package/dist/DateInputUtils.js.map +1 -1
  25. package/dist/DateTimeInput.js +28 -12
  26. package/dist/DateTimeInput.js.map +1 -1
  27. package/dist/DebouncedSearchInput.js +10 -19
  28. package/dist/DebouncedSearchInput.js.map +1 -1
  29. package/dist/DragUtils.js +15 -6
  30. package/dist/DragUtils.js.map +1 -1
  31. package/dist/DraggableItemList.js +42 -57
  32. package/dist/DraggableItemList.js.map +1 -1
  33. package/dist/EditableItemList.js +28 -13
  34. package/dist/EditableItemList.js.map +1 -1
  35. package/dist/ErrorBoundary.js +6 -11
  36. package/dist/ErrorBoundary.js.map +1 -1
  37. package/dist/ErrorView.js +20 -8
  38. package/dist/ErrorView.js.map +1 -1
  39. package/dist/HierarchicalCheckboxMenu.js +30 -28
  40. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  41. package/dist/ItemList.js +96 -168
  42. package/dist/ItemList.js.map +1 -1
  43. package/dist/ItemListItem.js +46 -60
  44. package/dist/ItemListItem.js.map +1 -1
  45. package/dist/LoadingOverlay.js +13 -9
  46. package/dist/LoadingOverlay.js.map +1 -1
  47. package/dist/LoadingSpinner.js +3 -4
  48. package/dist/LoadingSpinner.js.map +1 -1
  49. package/dist/MaskedInput.js +44 -41
  50. package/dist/MaskedInput.js.map +1 -1
  51. package/dist/MaskedInputUtils.js +1 -3
  52. package/dist/MaskedInputUtils.js.map +1 -1
  53. package/dist/Option.js +1 -3
  54. package/dist/Option.js.map +1 -1
  55. package/dist/RadioGroup.js +17 -9
  56. package/dist/RadioGroup.js.map +1 -1
  57. package/dist/RadioItem.js +25 -14
  58. package/dist/RadioItem.js.map +1 -1
  59. package/dist/RandomAreaPlotAnimation.js +17 -13
  60. package/dist/RandomAreaPlotAnimation.js.map +1 -1
  61. package/dist/SearchInput.js +13 -14
  62. package/dist/SearchInput.js.map +1 -1
  63. package/dist/SearchableCombobox.js +3 -5
  64. package/dist/SearchableCombobox.js.map +1 -1
  65. package/dist/Select.js +5 -7
  66. package/dist/Select.js.map +1 -1
  67. package/dist/SelectValueList.js +21 -30
  68. package/dist/SelectValueList.js.map +1 -1
  69. package/dist/SocketedButton.js +18 -17
  70. package/dist/SocketedButton.js.map +1 -1
  71. package/dist/SplitButtonGroup.js +4 -6
  72. package/dist/SplitButtonGroup.js.map +1 -1
  73. package/dist/TableViewEmptyState.js +14 -6
  74. package/dist/TableViewEmptyState.js.map +1 -1
  75. package/dist/TextWithTooltip.js +3 -4
  76. package/dist/TextWithTooltip.js.map +1 -1
  77. package/dist/TimeInput.js +29 -12
  78. package/dist/TimeInput.js.map +1 -1
  79. package/dist/TimeSlider.js +46 -38
  80. package/dist/TimeSlider.js.map +1 -1
  81. package/dist/ToastNotification.js +9 -10
  82. package/dist/ToastNotification.js.map +1 -1
  83. package/dist/UISwitch.js +8 -9
  84. package/dist/UISwitch.js.map +1 -1
  85. package/dist/actions/ConfirmActionButton.js +7 -9
  86. package/dist/actions/ConfirmActionButton.js.map +1 -1
  87. package/dist/actions/IconActionButton.js +3 -5
  88. package/dist/actions/IconActionButton.js.map +1 -1
  89. package/dist/context-actions/ContextActionUtils.js +1 -3
  90. package/dist/context-actions/ContextActionUtils.js.map +1 -1
  91. package/dist/context-actions/ContextActions.js +8 -18
  92. package/dist/context-actions/ContextActions.js.map +1 -1
  93. package/dist/context-actions/ContextMenu.js +53 -89
  94. package/dist/context-actions/ContextMenu.js.map +1 -1
  95. package/dist/context-actions/ContextMenuItem.js +11 -11
  96. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  97. package/dist/context-actions/ContextMenuRoot.js +6 -11
  98. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  99. package/dist/context-actions/GlobalContextAction.js +2 -6
  100. package/dist/context-actions/GlobalContextAction.js.map +1 -1
  101. package/dist/context-actions/GlobalContextActions.js +4 -7
  102. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  103. package/dist/dialogs/ActionButtonDialogTrigger.js +7 -9
  104. package/dist/dialogs/ActionButtonDialogTrigger.js.map +1 -1
  105. package/dist/dialogs/ConfirmationDialog.js +8 -11
  106. package/dist/dialogs/ConfirmationDialog.js.map +1 -1
  107. package/dist/menu-actions/DropdownMenu.js +12 -22
  108. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  109. package/dist/menu-actions/Menu.js +19 -45
  110. package/dist/menu-actions/Menu.js.map +1 -1
  111. package/dist/modal/DebouncedModal.js +8 -9
  112. package/dist/modal/DebouncedModal.js.map +1 -1
  113. package/dist/modal/InfoModal.js +6 -7
  114. package/dist/modal/InfoModal.js.map +1 -1
  115. package/dist/modal/Modal.js +27 -15
  116. package/dist/modal/Modal.js.map +1 -1
  117. package/dist/modal/ModalBody.js +4 -6
  118. package/dist/modal/ModalBody.js.map +1 -1
  119. package/dist/modal/ModalFooter.js +3 -5
  120. package/dist/modal/ModalFooter.js.map +1 -1
  121. package/dist/modal/ModalHeader.js +7 -8
  122. package/dist/modal/ModalHeader.js.map +1 -1
  123. package/dist/navigation/DashboardList.js +17 -6
  124. package/dist/navigation/DashboardList.js.map +1 -1
  125. package/dist/navigation/Menu.js +4 -5
  126. package/dist/navigation/Menu.js.map +1 -1
  127. package/dist/navigation/MenuItem.js +7 -10
  128. package/dist/navigation/MenuItem.js.map +1 -1
  129. package/dist/navigation/NavTab.js +14 -17
  130. package/dist/navigation/NavTab.js.map +1 -1
  131. package/dist/navigation/NavTabList.js +39 -33
  132. package/dist/navigation/NavTabList.js.map +1 -1
  133. package/dist/navigation/Page.js +5 -7
  134. package/dist/navigation/Page.js.map +1 -1
  135. package/dist/navigation/Stack.js +20 -7
  136. package/dist/navigation/Stack.js.map +1 -1
  137. package/dist/popper/Popper.js +30 -57
  138. package/dist/popper/Popper.js.map +1 -1
  139. package/dist/popper/Tooltip.js +24 -54
  140. package/dist/popper/Tooltip.js.map +1 -1
  141. package/dist/shortcuts/Shortcut.js +10 -15
  142. package/dist/shortcuts/Shortcut.js.map +1 -1
  143. package/dist/shortcuts/ShortcutRegistry.js +1 -3
  144. package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
  145. package/dist/spectrum/ActionGroup.js +7 -9
  146. package/dist/spectrum/ActionGroup.js.map +1 -1
  147. package/dist/spectrum/ActionMenu.js +3 -5
  148. package/dist/spectrum/ActionMenu.js.map +1 -1
  149. package/dist/spectrum/CheckboxGroup.js +1 -3
  150. package/dist/spectrum/CheckboxGroup.js.map +1 -1
  151. package/dist/spectrum/Heading.js +2 -4
  152. package/dist/spectrum/Heading.js.map +1 -1
  153. package/dist/spectrum/ItemContent.js +16 -10
  154. package/dist/spectrum/ItemContent.js.map +1 -1
  155. package/dist/spectrum/ItemTooltip.js +2 -4
  156. package/dist/spectrum/ItemTooltip.js.map +1 -1
  157. package/dist/spectrum/TabPanels.js +3 -4
  158. package/dist/spectrum/TabPanels.js.map +1 -1
  159. package/dist/spectrum/Text.js +2 -4
  160. package/dist/spectrum/Text.js.map +1 -1
  161. package/dist/spectrum/View.js +11 -14
  162. package/dist/spectrum/View.js.map +1 -1
  163. package/dist/spectrum/comboBox/ComboBox.js +5 -9
  164. package/dist/spectrum/comboBox/ComboBox.js.map +1 -1
  165. package/dist/spectrum/comboBox/ComboBoxNormalized.js +3 -7
  166. package/dist/spectrum/comboBox/ComboBoxNormalized.js.map +1 -1
  167. package/dist/spectrum/listView/ListView.js +11 -11
  168. package/dist/spectrum/listView/ListView.js.map +1 -1
  169. package/dist/spectrum/listView/ListViewNormalized.js +22 -24
  170. package/dist/spectrum/listView/ListViewNormalized.js.map +1 -1
  171. package/dist/spectrum/listView/ListViewWrapper.js +11 -15
  172. package/dist/spectrum/listView/ListViewWrapper.js.map +1 -1
  173. package/dist/spectrum/multiSelect/MultiSelect.js +113 -100
  174. package/dist/spectrum/multiSelect/MultiSelect.js.map +1 -1
  175. package/dist/spectrum/multiSelect/MultiSelectListBox.js +9 -11
  176. package/dist/spectrum/multiSelect/MultiSelectListBox.js.map +1 -1
  177. package/dist/spectrum/multiSelect/MultiSelectNormalized.js +3 -7
  178. package/dist/spectrum/multiSelect/MultiSelectNormalized.js.map +1 -1
  179. package/dist/spectrum/multiSelect/MultiSelectTag.js +5 -7
  180. package/dist/spectrum/multiSelect/MultiSelectTag.js.map +1 -1
  181. package/dist/spectrum/multiSelect/useMultiSelectFilter.js +20 -14
  182. package/dist/spectrum/multiSelect/useMultiSelectFilter.js.map +1 -1
  183. package/dist/spectrum/multiSelect/useMultiSelectKeyboard.js +27 -20
  184. package/dist/spectrum/multiSelect/useMultiSelectKeyboard.js.map +1 -1
  185. package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.js +14 -7
  186. package/dist/spectrum/multiSelect/useMultiSelectLoadingSpinner.js.map +1 -1
  187. package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.js +20 -22
  188. package/dist/spectrum/multiSelect/useMultiSelectNormalizedProps.js.map +1 -1
  189. package/dist/spectrum/multiSelect/useMultiSelectScrollListener.js +13 -6
  190. package/dist/spectrum/multiSelect/useMultiSelectScrollListener.js.map +1 -1
  191. package/dist/spectrum/multiSelect/useMultiSelectState.js +16 -9
  192. package/dist/spectrum/multiSelect/useMultiSelectState.js.map +1 -1
  193. package/dist/spectrum/picker/Picker.js +5 -9
  194. package/dist/spectrum/picker/Picker.js.map +1 -1
  195. package/dist/spectrum/picker/PickerNormalized.js +2 -6
  196. package/dist/spectrum/picker/PickerNormalized.js.map +1 -1
  197. package/dist/spectrum/picker/usePickerItemScale.js +2 -3
  198. package/dist/spectrum/picker/usePickerItemScale.js.map +1 -1
  199. package/dist/spectrum/picker/usePickerNormalizedProps.js +31 -33
  200. package/dist/spectrum/picker/usePickerNormalizedProps.js.map +1 -1
  201. package/dist/spectrum/picker/usePickerProps.js +26 -29
  202. package/dist/spectrum/picker/usePickerProps.js.map +1 -1
  203. package/dist/spectrum/picker/usePickerScrollOnOpen.js +6 -9
  204. package/dist/spectrum/picker/usePickerScrollOnOpen.js.map +1 -1
  205. package/dist/spectrum/utils/itemUtils.js +4 -6
  206. package/dist/spectrum/utils/itemUtils.js.map +1 -1
  207. package/dist/spectrum/utils/propsUtils.js +35 -37
  208. package/dist/spectrum/utils/propsUtils.js.map +1 -1
  209. package/dist/spectrum/utils/themeUtils.js +5 -7
  210. package/dist/spectrum/utils/themeUtils.js.map +1 -1
  211. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js +13 -6
  212. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js.map +1 -1
  213. package/dist/spectrum/utils/useRenderNormalizedItem.js +5 -7
  214. package/dist/spectrum/utils/useRenderNormalizedItem.js.map +1 -1
  215. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js +4 -6
  216. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js.map +1 -1
  217. package/dist/spectrum/utils/useStringifiedMultiSelection.js +5 -7
  218. package/dist/spectrum/utils/useStringifiedMultiSelection.js.map +1 -1
  219. package/dist/spectrum/utils/useStringifiedSelection.js +5 -7
  220. package/dist/spectrum/utils/useStringifiedSelection.js.map +1 -1
  221. package/dist/theme/FontBootstrap.js +13 -5
  222. package/dist/theme/FontBootstrap.js.map +1 -1
  223. package/dist/theme/FontsLoaded.js +1 -3
  224. package/dist/theme/FontsLoaded.js.map +1 -1
  225. package/dist/theme/Logo.js +2 -4
  226. package/dist/theme/Logo.js.map +1 -1
  227. package/dist/theme/SpectrumThemeProvider.js +17 -9
  228. package/dist/theme/SpectrumThemeProvider.js.map +1 -1
  229. package/dist/theme/ThemePicker.js +4 -5
  230. package/dist/theme/ThemePicker.js.map +1 -1
  231. package/dist/theme/ThemeProvider.js +20 -8
  232. package/dist/theme/ThemeProvider.js.map +1 -1
  233. package/dist/theme/ThemeUtils.js +35 -19
  234. package/dist/theme/ThemeUtils.js.map +1 -1
  235. package/dist/theme/useExternalTheme.js +16 -7
  236. package/dist/theme/useExternalTheme.js.map +1 -1
  237. package/dist/transitions/FadeTransition.js +5 -6
  238. package/dist/transitions/FadeTransition.js.map +1 -1
  239. package/dist/transitions/SlideTransition.js +6 -7
  240. package/dist/transitions/SlideTransition.js.map +1 -1
  241. package/package.json +8 -8
package/dist/Button.js CHANGED
@@ -42,28 +42,28 @@ function getVariantClasses(kind) {
42
42
  }
43
43
  }
44
44
  export var Button = /*#__PURE__*/React.forwardRef((props, ref) => {
45
- var {
46
- kind,
47
- variant,
48
- type = 'button',
49
- tooltip,
50
- icon,
51
- disabled = false,
52
- active,
53
- onClick,
54
- onContextMenu,
55
- onMouseDown,
56
- onMouseUp,
57
- onMouseEnter,
58
- onMouseLeave,
59
- onKeyDown,
60
- className,
61
- style,
62
- children,
63
- tabIndex,
64
- 'data-testid': dataTestId,
65
- 'aria-label': ariaLabel
66
- } = props,
45
+ var kind = props.kind,
46
+ variant = props.variant,
47
+ _props$type = props.type,
48
+ type = _props$type === void 0 ? 'button' : _props$type,
49
+ tooltip = props.tooltip,
50
+ icon = props.icon,
51
+ _props$disabled = props.disabled,
52
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
53
+ active = props.active,
54
+ onClick = props.onClick,
55
+ onContextMenu = props.onContextMenu,
56
+ onMouseDown = props.onMouseDown,
57
+ onMouseUp = props.onMouseUp,
58
+ onMouseEnter = props.onMouseEnter,
59
+ onMouseLeave = props.onMouseLeave,
60
+ onKeyDown = props.onKeyDown,
61
+ className = props.className,
62
+ style = props.style,
63
+ children = props.children,
64
+ tabIndex = props.tabIndex,
65
+ dataTestId = props['data-testid'],
66
+ ariaLabel = props['aria-label'],
67
67
  rest = _objectWithoutProperties(props, _excluded);
68
68
 
69
69
  // Spectrum container components such as `ButtonGroup` provide
@@ -71,9 +71,8 @@ export var Button = /*#__PURE__*/React.forwardRef((props, ref) => {
71
71
  // https://github.com/adobe/react-spectrum/blob/%40adobe/react-spectrum%403.33.1/packages/%40react-spectrum/buttongroup/src/ButtonGroup.tsx#L104-L107)
72
72
  // This can be retrieved via `useSlotProps` to allow our buttons to be styled
73
73
  // correctly inside the container.
74
- var {
75
- UNSAFE_className
76
- } = useSlotProps({}, 'button');
74
+ var _useSlotProps = useSlotProps({}, 'button'),
75
+ UNSAFE_className = _useSlotProps.UNSAFE_className;
77
76
  var variantClassName;
78
77
  if (variant) {
79
78
  variantClassName = getVariantClasses(variant);
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":["React","useSlotProps","classNames","FontAwesomeIcon","Tooltip","jsx","_jsx","jsxs","_jsxs","BUTTON_KINDS","VARIANT_KINDS","getClassName","kind","iconOnly","getVariantClasses","Button","forwardRef","props","ref","variant","type","tooltip","icon","disabled","active","onClick","onContextMenu","onMouseDown","onMouseUp","onMouseEnter","onMouseLeave","onKeyDown","className","style","children","tabIndex","dataTestId","ariaLabel","rest","_objectWithoutProperties","_excluded","UNSAFE_className","variantClassName","iconElem","isValidElement","btnClassName","tooltipElem","undefined","ariaLabelString","button","_objectSpread","displayName"],"sources":["../src/Button.tsx"],"sourcesContent":["import React from 'react';\nimport { useSlotProps } from '@react-spectrum/utils';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { type IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { Tooltip } from './popper';\n\nconst BUTTON_KINDS = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'danger',\n 'inline',\n 'ghost',\n] as const;\ntype ButtonTuple = typeof BUTTON_KINDS;\nexport type ButtonKind = ButtonTuple[number];\n\nconst VARIANT_KINDS = ['group-end'] as const;\ntype VariantTuple = typeof VARIANT_KINDS;\ntype VariantKind = VariantTuple[number];\n\ntype ButtonTypes = 'submit' | 'reset' | 'button';\n\ninterface BaseButtonProps extends React.ComponentPropsWithRef<'button'> {\n kind: ButtonKind;\n type?: ButtonTypes;\n variant?: VariantKind;\n tooltip?: string | JSX.Element;\n icon?: IconDefinition | JSX.Element;\n active?: boolean;\n 'data-testid'?: string;\n}\n\ntype ButtonWithChildren = BaseButtonProps & {\n children: React.ReactNode;\n};\n\ntype IconOnlyButtonStringTooltip = BaseButtonProps & {\n tooltip: string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButtonJsxTooltip = BaseButtonProps & {\n tooltip: JSX.Element;\n 'aria-label': string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButton = IconOnlyButtonStringTooltip | IconOnlyButtonJsxTooltip;\n\ntype ButtonProps = IconOnlyButton | ButtonWithChildren;\n\nfunction getClassName(kind: ButtonKind, iconOnly: boolean): string {\n switch (kind) {\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-outline-primary';\n case 'tertiary':\n return 'btn-secondary';\n case 'success':\n return 'btn-success';\n case 'danger':\n return 'btn-danger';\n case 'inline':\n return 'btn-inline';\n case 'ghost':\n return classNames('btn-link', {\n 'btn-link-icon': iconOnly,\n 'btn-link-icon-only': iconOnly,\n });\n }\n}\n\nfunction getVariantClasses(kind: VariantKind): string {\n switch (kind) {\n case 'group-end':\n return classNames('pl-2', 'pr-3');\n }\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props: ButtonProps, ref) => {\n const {\n kind,\n variant,\n type = 'button',\n tooltip,\n icon,\n disabled = false,\n active,\n onClick,\n onContextMenu,\n onMouseDown,\n onMouseUp,\n onMouseEnter,\n onMouseLeave,\n onKeyDown,\n className,\n style,\n children,\n tabIndex,\n 'data-testid': dataTestId,\n 'aria-label': ariaLabel,\n ...rest\n } = props;\n\n // Spectrum container components such as `ButtonGroup` provide\n // UNSAFE_className prop for the `button` slot via a SlotProvider (\n // https://github.com/adobe/react-spectrum/blob/%40adobe/react-spectrum%403.33.1/packages/%40react-spectrum/buttongroup/src/ButtonGroup.tsx#L104-L107)\n // This can be retrieved via `useSlotProps` to allow our buttons to be styled\n // correctly inside the container.\n const { UNSAFE_className } = useSlotProps<{ UNSAFE_className?: string }>(\n {},\n 'button'\n );\n\n let variantClassName;\n if (variant) {\n variantClassName = getVariantClasses(variant);\n }\n\n let iconElem: JSX.Element | undefined;\n if (icon) {\n iconElem = React.isValidElement(icon) ? (\n icon\n ) : (\n <FontAwesomeIcon icon={icon as IconDefinition} />\n );\n }\n\n // not entirely accurate, as button can have non-visible children\n const iconOnly = iconElem != null && children == null;\n\n const btnClassName = getClassName(kind, iconOnly);\n\n let tooltipElem: JSX.Element | undefined;\n if (tooltip !== undefined) {\n tooltipElem =\n typeof tooltip === 'string' ? <Tooltip>{tooltip}</Tooltip> : tooltip;\n }\n\n // use tooltip as arial-label for iconOnly buttons only\n // if tooltip is also a string and aria-label is not set\n let ariaLabelString = ariaLabel;\n if (\n ariaLabel === undefined &&\n iconOnly &&\n tooltip != null &&\n typeof tooltip === 'string'\n ) {\n ariaLabelString = tooltip;\n }\n\n const button = (\n <button\n data-testid={dataTestId}\n ref={ref}\n // eslint-disable-next-line react/button-has-type\n type={type}\n className={classNames(\n 'btn',\n btnClassName,\n variantClassName,\n { active },\n className,\n UNSAFE_className\n )}\n onClick={onClick}\n onContextMenu={onContextMenu}\n onMouseUp={onMouseUp}\n onMouseDown={onMouseDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onKeyDown={onKeyDown}\n style={style}\n disabled={disabled}\n tabIndex={tabIndex}\n aria-label={ariaLabelString}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n >\n {icon && iconElem}\n {children}\n {tooltip != null && !disabled && tooltipElem}\n </button>\n );\n\n // disabled buttons tooltips need a wrapped element to receive pointer events\n // https://jakearchibald.com/2017/events-and-disabled-form-fields/\n\n return disabled && tooltip != null ? (\n <span className=\"btn-disabled-wrapper\">\n {button}\n {tooltipElem}\n </span>\n ) : (\n button\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Button.js","names":["React","useSlotProps","classNames","FontAwesomeIcon","Tooltip","jsx","_jsx","jsxs","_jsxs","BUTTON_KINDS","VARIANT_KINDS","getClassName","kind","iconOnly","getVariantClasses","Button","forwardRef","props","ref","variant","_props$type","type","tooltip","icon","_props$disabled","disabled","active","onClick","onContextMenu","onMouseDown","onMouseUp","onMouseEnter","onMouseLeave","onKeyDown","className","style","children","tabIndex","dataTestId","ariaLabel","rest","_objectWithoutProperties","_excluded","_useSlotProps","UNSAFE_className","variantClassName","iconElem","isValidElement","btnClassName","tooltipElem","undefined","ariaLabelString","button","_objectSpread","displayName"],"sources":["../src/Button.tsx"],"sourcesContent":["import React from 'react';\nimport { useSlotProps } from '@react-spectrum/utils';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { type IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { Tooltip } from './popper';\n\nconst BUTTON_KINDS = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'danger',\n 'inline',\n 'ghost',\n] as const;\ntype ButtonTuple = typeof BUTTON_KINDS;\nexport type ButtonKind = ButtonTuple[number];\n\nconst VARIANT_KINDS = ['group-end'] as const;\ntype VariantTuple = typeof VARIANT_KINDS;\ntype VariantKind = VariantTuple[number];\n\ntype ButtonTypes = 'submit' | 'reset' | 'button';\n\ninterface BaseButtonProps extends React.ComponentPropsWithRef<'button'> {\n kind: ButtonKind;\n type?: ButtonTypes;\n variant?: VariantKind;\n tooltip?: string | JSX.Element;\n icon?: IconDefinition | JSX.Element;\n active?: boolean;\n 'data-testid'?: string;\n}\n\ntype ButtonWithChildren = BaseButtonProps & {\n children: React.ReactNode;\n};\n\ntype IconOnlyButtonStringTooltip = BaseButtonProps & {\n tooltip: string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButtonJsxTooltip = BaseButtonProps & {\n tooltip: JSX.Element;\n 'aria-label': string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButton = IconOnlyButtonStringTooltip | IconOnlyButtonJsxTooltip;\n\ntype ButtonProps = IconOnlyButton | ButtonWithChildren;\n\nfunction getClassName(kind: ButtonKind, iconOnly: boolean): string {\n switch (kind) {\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-outline-primary';\n case 'tertiary':\n return 'btn-secondary';\n case 'success':\n return 'btn-success';\n case 'danger':\n return 'btn-danger';\n case 'inline':\n return 'btn-inline';\n case 'ghost':\n return classNames('btn-link', {\n 'btn-link-icon': iconOnly,\n 'btn-link-icon-only': iconOnly,\n });\n }\n}\n\nfunction getVariantClasses(kind: VariantKind): string {\n switch (kind) {\n case 'group-end':\n return classNames('pl-2', 'pr-3');\n }\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props: ButtonProps, ref) => {\n const {\n kind,\n variant,\n type = 'button',\n tooltip,\n icon,\n disabled = false,\n active,\n onClick,\n onContextMenu,\n onMouseDown,\n onMouseUp,\n onMouseEnter,\n onMouseLeave,\n onKeyDown,\n className,\n style,\n children,\n tabIndex,\n 'data-testid': dataTestId,\n 'aria-label': ariaLabel,\n ...rest\n } = props;\n\n // Spectrum container components such as `ButtonGroup` provide\n // UNSAFE_className prop for the `button` slot via a SlotProvider (\n // https://github.com/adobe/react-spectrum/blob/%40adobe/react-spectrum%403.33.1/packages/%40react-spectrum/buttongroup/src/ButtonGroup.tsx#L104-L107)\n // This can be retrieved via `useSlotProps` to allow our buttons to be styled\n // correctly inside the container.\n const { UNSAFE_className } = useSlotProps<{ UNSAFE_className?: string }>(\n {},\n 'button'\n );\n\n let variantClassName;\n if (variant) {\n variantClassName = getVariantClasses(variant);\n }\n\n let iconElem: JSX.Element | undefined;\n if (icon) {\n iconElem = React.isValidElement(icon) ? (\n icon\n ) : (\n <FontAwesomeIcon icon={icon as IconDefinition} />\n );\n }\n\n // not entirely accurate, as button can have non-visible children\n const iconOnly = iconElem != null && children == null;\n\n const btnClassName = getClassName(kind, iconOnly);\n\n let tooltipElem: JSX.Element | undefined;\n if (tooltip !== undefined) {\n tooltipElem =\n typeof tooltip === 'string' ? <Tooltip>{tooltip}</Tooltip> : tooltip;\n }\n\n // use tooltip as arial-label for iconOnly buttons only\n // if tooltip is also a string and aria-label is not set\n let ariaLabelString = ariaLabel;\n if (\n ariaLabel === undefined &&\n iconOnly &&\n tooltip != null &&\n typeof tooltip === 'string'\n ) {\n ariaLabelString = tooltip;\n }\n\n const button = (\n <button\n data-testid={dataTestId}\n ref={ref}\n // eslint-disable-next-line react/button-has-type\n type={type}\n className={classNames(\n 'btn',\n btnClassName,\n variantClassName,\n { active },\n className,\n UNSAFE_className\n )}\n onClick={onClick}\n onContextMenu={onContextMenu}\n onMouseUp={onMouseUp}\n onMouseDown={onMouseDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onKeyDown={onKeyDown}\n style={style}\n disabled={disabled}\n tabIndex={tabIndex}\n aria-label={ariaLabelString}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n >\n {icon && iconElem}\n {children}\n {tooltip != null && !disabled && tooltipElem}\n </button>\n );\n\n // disabled buttons tooltips need a wrapped element to receive pointer events\n // https://jakearchibald.com/2017/events-and-disabled-form-fields/\n\n return disabled && tooltip != null ? (\n <span className=\"btn-disabled-wrapper\">\n {button}\n {tooltipElem}\n </span>\n ) : (\n button\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"mappings":"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","ignoreList":[]}
package/dist/CardFlip.js CHANGED
@@ -11,12 +11,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  * @returns
12
12
  */
13
13
  function CardFlip(_ref) {
14
- var {
15
- className,
16
- isFlipped,
17
- children,
18
- 'data-testid': dataTestId
19
- } = _ref;
14
+ var className = _ref.className,
15
+ isFlipped = _ref.isFlipped,
16
+ children = _ref.children,
17
+ dataTestId = _ref['data-testid'];
20
18
  var getComponent = key => {
21
19
  if (children.length !== 2) {
22
20
  throw new Error('CardFlip requires 2 children to function');
@@ -1 +1 @@
1
- {"version":3,"file":"CardFlip.js","names":["React","useCallback","useEffect","useRef","classNames","jsx","_jsx","jsxs","_jsxs","CardFlip","_ref","className","isFlipped","children","dataTestId","getComponent","key","length","Error","front","transitionStart","event","target","currentTarget","document","body","classList","add","transitionEnd","remove","setIsFlippingClassOnTransitionStart","current","addEventListener","refObj","cleanupListener","removeEventListener","ref","onTransitionEnd"],"sources":["../src/CardFlip.tsx"],"sourcesContent":["import React, { type ReactNode, useCallback, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport './CardFlip.scss';\n\ntype CardFlipProps = {\n isFlipped: boolean;\n children: [React.ReactNode, React.ReactNode];\n className?: string;\n 'data-testid'?: string;\n};\n\n/**\n * Card flip component, switches between a front and back face being visible.\n * Has logic to handle overflow on body, caused by perspective transforms\n * and moves z-index to top during transition.\n * @param isFlipped true shows second child, false shows first child\n * @param children Expects exactly two children\n * @returns\n */\nfunction CardFlip({\n className,\n isFlipped,\n children,\n 'data-testid': dataTestId,\n}: CardFlipProps): JSX.Element {\n const getComponent = (key: 0 | 1): ReactNode => {\n if (children.length !== 2) {\n throw new Error('CardFlip requires 2 children to function');\n }\n return children[key];\n };\n\n const front = useRef<HTMLDivElement>(null);\n\n const transitionStart = useCallback((event: TransitionEvent) => {\n if (event.target === event.currentTarget) {\n document.body.classList.add('card-flip--is-flipping');\n }\n }, []);\n\n const transitionEnd = useCallback(\n (event: React.TransitionEvent<HTMLDivElement>) => {\n if (event.target === event.currentTarget) {\n document.body.classList.remove('card-flip--is-flipping');\n }\n },\n []\n );\n\n useEffect(\n function setIsFlippingClassOnTransitionStart() {\n if (!front.current) throw Error('ref undefined');\n front.current.addEventListener('transitionstart', transitionStart);\n\n const refObj = front.current;\n return function cleanupListener() {\n if (refObj != null) {\n return refObj.removeEventListener('transitionstart', transitionStart);\n }\n };\n },\n [transitionStart]\n );\n\n return (\n <div\n className={classNames(className, {\n 'card-flip--show-front': isFlipped,\n 'card-flip--show-back': !isFlipped,\n })}\n data-testid={dataTestId}\n >\n <div className=\"card-flip--back\">{getComponent(0)}</div>\n <div\n ref={front}\n className=\"card-flip--front\"\n onTransitionEnd={transitionEnd}\n >\n {getComponent(1)}\n </div>\n </div>\n );\n}\n\nexport default CardFlip;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAoBC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAC7E,OAAOC,UAAU,MAAM,YAAY;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAUpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,QAAQA,CAAAC,IAAA,EAKc;EAAA,IALb;IAChBC,SAAS;IACTC,SAAS;IACTC,QAAQ;IACR,aAAa,EAAEC;EACF,CAAC,GAAAJ,IAAA;EACd,IAAMK,YAAY,GAAIC,GAAU,IAAgB;IAC9C,IAAIH,QAAQ,CAACI,MAAM,KAAK,CAAC,EAAE;MACzB,MAAM,IAAIC,KAAK,CAAC,0CAA0C,CAAC;IAC7D;IACA,OAAOL,QAAQ,CAACG,GAAG,CAAC;EACtB,CAAC;EAED,IAAMG,KAAK,GAAGhB,MAAM,CAAiB,IAAI,CAAC;EAE1C,IAAMiB,eAAe,GAAGnB,WAAW,CAAEoB,KAAsB,IAAK;IAC9D,IAAIA,KAAK,CAACC,MAAM,KAAKD,KAAK,CAACE,aAAa,EAAE;MACxCC,QAAQ,CAACC,IAAI,CAACC,SAAS,CAACC,GAAG,CAAC,wBAAwB,CAAC;IACvD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMC,aAAa,GAAG3B,WAAW,CAC9BoB,KAA4C,IAAK;IAChD,IAAIA,KAAK,CAACC,MAAM,KAAKD,KAAK,CAACE,aAAa,EAAE;MACxCC,QAAQ,CAACC,IAAI,CAACC,SAAS,CAACG,MAAM,CAAC,wBAAwB,CAAC;IAC1D;EACF,CAAC,EACD,EACF,CAAC;EAED3B,SAAS,CACP,SAAS4B,mCAAmCA,CAAA,EAAG;IAC7C,IAAI,CAACX,KAAK,CAACY,OAAO,EAAE,MAAMb,KAAK,CAAC,eAAe,CAAC;IAChDC,KAAK,CAACY,OAAO,CAACC,gBAAgB,CAAC,iBAAiB,EAAEZ,eAAe,CAAC;IAElE,IAAMa,MAAM,GAAGd,KAAK,CAACY,OAAO;IAC5B,OAAO,SAASG,eAAeA,CAAA,EAAG;MAChC,IAAID,MAAM,IAAI,IAAI,EAAE;QAClB,OAAOA,MAAM,CAACE,mBAAmB,CAAC,iBAAiB,EAAEf,eAAe,CAAC;MACvE;IACF,CAAC;EACH,CAAC,EACD,CAACA,eAAe,CAClB,CAAC;EAED,oBACEZ,KAAA;IACEG,SAAS,EAAEP,UAAU,CAACO,SAAS,EAAE;MAC/B,uBAAuB,EAAEC,SAAS;MAClC,sBAAsB,EAAE,CAACA;IAC3B,CAAC,CAAE;IACH,eAAaE,UAAW;IAAAD,QAAA,gBAExBP,IAAA;MAAKK,SAAS,EAAC,iBAAiB;MAAAE,QAAA,EAAEE,YAAY,CAAC,CAAC;IAAC,CAAM,CAAC,eACxDT,IAAA;MACE8B,GAAG,EAAEjB,KAAM;MACXR,SAAS,EAAC,kBAAkB;MAC5B0B,eAAe,EAAET,aAAc;MAAAf,QAAA,EAE9BE,YAAY,CAAC,CAAC;IAAC,CACb,CAAC;EAAA,CACH,CAAC;AAEV;AAEA,eAAeN,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"CardFlip.js","names":["React","useCallback","useEffect","useRef","classNames","jsx","_jsx","jsxs","_jsxs","CardFlip","_ref","className","isFlipped","children","dataTestId","getComponent","key","length","Error","front","transitionStart","event","target","currentTarget","document","body","classList","add","transitionEnd","remove","setIsFlippingClassOnTransitionStart","current","addEventListener","refObj","cleanupListener","removeEventListener","ref","onTransitionEnd"],"sources":["../src/CardFlip.tsx"],"sourcesContent":["import React, { type ReactNode, useCallback, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport './CardFlip.scss';\n\ntype CardFlipProps = {\n isFlipped: boolean;\n children: [React.ReactNode, React.ReactNode];\n className?: string;\n 'data-testid'?: string;\n};\n\n/**\n * Card flip component, switches between a front and back face being visible.\n * Has logic to handle overflow on body, caused by perspective transforms\n * and moves z-index to top during transition.\n * @param isFlipped true shows second child, false shows first child\n * @param children Expects exactly two children\n * @returns\n */\nfunction CardFlip({\n className,\n isFlipped,\n children,\n 'data-testid': dataTestId,\n}: CardFlipProps): JSX.Element {\n const getComponent = (key: 0 | 1): ReactNode => {\n if (children.length !== 2) {\n throw new Error('CardFlip requires 2 children to function');\n }\n return children[key];\n };\n\n const front = useRef<HTMLDivElement>(null);\n\n const transitionStart = useCallback((event: TransitionEvent) => {\n if (event.target === event.currentTarget) {\n document.body.classList.add('card-flip--is-flipping');\n }\n }, []);\n\n const transitionEnd = useCallback(\n (event: React.TransitionEvent<HTMLDivElement>) => {\n if (event.target === event.currentTarget) {\n document.body.classList.remove('card-flip--is-flipping');\n }\n },\n []\n );\n\n useEffect(\n function setIsFlippingClassOnTransitionStart() {\n if (!front.current) throw Error('ref undefined');\n front.current.addEventListener('transitionstart', transitionStart);\n\n const refObj = front.current;\n return function cleanupListener() {\n if (refObj != null) {\n return refObj.removeEventListener('transitionstart', transitionStart);\n }\n };\n },\n [transitionStart]\n );\n\n return (\n <div\n className={classNames(className, {\n 'card-flip--show-front': isFlipped,\n 'card-flip--show-back': !isFlipped,\n })}\n data-testid={dataTestId}\n >\n <div className=\"card-flip--back\">{getComponent(0)}</div>\n <div\n ref={front}\n className=\"card-flip--front\"\n onTransitionEnd={transitionEnd}\n >\n {getComponent(1)}\n </div>\n </div>\n );\n}\n\nexport default CardFlip;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAoBC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAC7E,OAAOC,UAAU,MAAM,YAAY;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAUpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,QAAQA,CAAAC,IAAA,EAKc;EAAA,IAJ7BC,SAAS,GAAAD,IAAA,CAATC,SAAS;IACTC,SAAS,GAAAF,IAAA,CAATE,SAAS;IACTC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IACOC,UAAU,GAAAJ,IAAA,CAAzB,aAAa;EAEb,IAAMK,YAAY,GAAIC,GAAU,IAAgB;IAC9C,IAAIH,QAAQ,CAACI,MAAM,KAAK,CAAC,EAAE;MACzB,MAAM,IAAIC,KAAK,CAAC,0CAA0C,CAAC;IAC7D;IACA,OAAOL,QAAQ,CAACG,GAAG,CAAC;EACtB,CAAC;EAED,IAAMG,KAAK,GAAGhB,MAAM,CAAiB,IAAI,CAAC;EAE1C,IAAMiB,eAAe,GAAGnB,WAAW,CAAEoB,KAAsB,IAAK;IAC9D,IAAIA,KAAK,CAACC,MAAM,KAAKD,KAAK,CAACE,aAAa,EAAE;MACxCC,QAAQ,CAACC,IAAI,CAACC,SAAS,CAACC,GAAG,CAAC,wBAAwB,CAAC;IACvD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMC,aAAa,GAAG3B,WAAW,CAC9BoB,KAA4C,IAAK;IAChD,IAAIA,KAAK,CAACC,MAAM,KAAKD,KAAK,CAACE,aAAa,EAAE;MACxCC,QAAQ,CAACC,IAAI,CAACC,SAAS,CAACG,MAAM,CAAC,wBAAwB,CAAC;IAC1D;EACF,CAAC,EACD,EACF,CAAC;EAED3B,SAAS,CACP,SAAS4B,mCAAmCA,CAAA,EAAG;IAC7C,IAAI,CAACX,KAAK,CAACY,OAAO,EAAE,MAAMb,KAAK,CAAC,eAAe,CAAC;IAChDC,KAAK,CAACY,OAAO,CAACC,gBAAgB,CAAC,iBAAiB,EAAEZ,eAAe,CAAC;IAElE,IAAMa,MAAM,GAAGd,KAAK,CAACY,OAAO;IAC5B,OAAO,SAASG,eAAeA,CAAA,EAAG;MAChC,IAAID,MAAM,IAAI,IAAI,EAAE;QAClB,OAAOA,MAAM,CAACE,mBAAmB,CAAC,iBAAiB,EAAEf,eAAe,CAAC;MACvE;IACF,CAAC;EACH,CAAC,EACD,CAACA,eAAe,CAClB,CAAC;EAED,oBACEZ,KAAA;IACEG,SAAS,EAAEP,UAAU,CAACO,SAAS,EAAE;MAC/B,uBAAuB,EAAEC,SAAS;MAClC,sBAAsB,EAAE,CAACA;IAC3B,CAAC,CAAE;IACH,eAAaE,UAAW;IAAAD,QAAA,gBAExBP,IAAA;MAAKK,SAAS,EAAC,iBAAiB;MAAAE,QAAA,EAAEE,YAAY,CAAC,CAAC;IAAC,CAAM,CAAC,eACxDT,IAAA;MACE8B,GAAG,EAAEjB,KAAM;MACXR,SAAS,EAAC,kBAAkB;MAC5B0B,eAAe,EAAET,aAAc;MAAAf,QAAA,EAE9BE,YAAY,CAAC,CAAC;IAAC,CACb,CAAC;EAAA,CACH,CAAC;AAEV;AAEA,eAAeN,QAAQ","ignoreList":[]}
package/dist/Checkbox.js CHANGED
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import React, { useState, useEffect, useCallback } from 'react';
2
8
  import classNames from 'classnames';
3
9
  import { nanoid } from 'nanoid';
@@ -7,19 +13,22 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
13
  * A simple checkbox component. Automatically generates an id so htmlFor/id attributes are unique.
8
14
  */
9
15
  var Checkbox = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {
10
- var {
11
- checked = false,
12
- children,
13
- className,
14
- disabled = false,
15
- inputClassName,
16
- isInvalid = false,
17
- labelClassName,
18
- name,
19
- onChange,
20
- 'data-testid': dataTestId
21
- } = props;
22
- var [id] = useState(nanoid());
16
+ var _props$checked = props.checked,
17
+ checked = _props$checked === void 0 ? false : _props$checked,
18
+ children = props.children,
19
+ className = props.className,
20
+ _props$disabled = props.disabled,
21
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
22
+ inputClassName = props.inputClassName,
23
+ _props$isInvalid = props.isInvalid,
24
+ isInvalid = _props$isInvalid === void 0 ? false : _props$isInvalid,
25
+ labelClassName = props.labelClassName,
26
+ name = props.name,
27
+ onChange = props.onChange,
28
+ dataTestId = props['data-testid'];
29
+ var _useState = useState(nanoid()),
30
+ _useState2 = _slicedToArray(_useState, 1),
31
+ id = _useState2[0];
23
32
  var ref = useForwardedRef(forwardedRef);
24
33
  useEffect(function setIndeterminateProperty() {
25
34
  if (ref.current) {
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","names":["React","useState","useEffect","useCallback","classNames","nanoid","useForwardedRef","jsx","_jsx","jsxs","_jsxs","Checkbox","forwardRef","props","forwardedRef","checked","children","className","disabled","inputClassName","isInvalid","labelClassName","name","onChange","dataTestId","id","ref","setIndeterminateProperty","current","indeterminate","handleOnChange","event","type","htmlFor","displayName"],"sources":["../src/Checkbox.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { nanoid } from 'nanoid';\nimport { useForwardedRef } from '@deephaven/react-hooks';\n\ninterface CheckboxProps {\n checked: boolean | null;\n className?: string;\n disabled?: boolean;\n inputClassName?: string;\n isInvalid?: boolean;\n labelClassName?: string;\n name?: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n children?: React.ReactNode;\n 'data-testid'?: string;\n}\n\n/**\n * A simple checkbox component. Automatically generates an id so htmlFor/id attributes are unique.\n */\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (props, forwardedRef) => {\n const {\n checked = false,\n children,\n className,\n disabled = false,\n inputClassName,\n isInvalid = false,\n labelClassName,\n name,\n onChange,\n 'data-testid': dataTestId,\n } = props;\n\n const [id] = useState(nanoid());\n\n const ref = useForwardedRef<HTMLInputElement>(forwardedRef);\n\n useEffect(\n function setIndeterminateProperty() {\n if (ref.current) {\n // indeterminate is not actually an html attr, can only be set via JS\n ref.current.indeterminate = checked === null;\n }\n },\n [ref, checked]\n );\n\n const handleOnChange: React.ChangeEventHandler<HTMLInputElement> =\n useCallback(\n event => {\n if (ref.current) {\n // ref.current can be null in tests, doesn't impact behaviour\n ref.current.indeterminate = checked === null;\n }\n\n if (onChange) {\n onChange(event);\n }\n },\n [ref, checked, onChange]\n );\n\n return (\n <div className={classNames('custom-control custom-checkbox', className)}>\n <input\n type=\"checkbox\"\n ref={ref}\n checked={checked ?? false} // checked attr must always have a value to remain as a controlled component\n className={classNames('custom-control-input', inputClassName, {\n 'is-invalid': isInvalid,\n })}\n disabled={disabled}\n id={id}\n name={name}\n onChange={handleOnChange}\n data-testid={dataTestId}\n />\n <label\n className={classNames('custom-control-label', labelClassName)}\n htmlFor={id}\n >\n {children}\n </label>\n </div>\n );\n }\n);\n\n// Forward ref causes a false positive for display-name in eslint:\n// https://github.com/yannickcr/eslint-plugin-react/issues/2269\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,EAAEC,WAAW,QAAQ,OAAO;AAC/D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,eAAe,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAezD;AACA;AACA;AACA,IAAMC,QAAQ,gBAAGX,KAAK,CAACY,UAAU,CAC/B,CAACC,KAAK,EAAEC,YAAY,KAAK;EACvB,IAAM;IACJC,OAAO,GAAG,KAAK;IACfC,QAAQ;IACRC,SAAS;IACTC,QAAQ,GAAG,KAAK;IAChBC,cAAc;IACdC,SAAS,GAAG,KAAK;IACjBC,cAAc;IACdC,IAAI;IACJC,QAAQ;IACR,aAAa,EAAEC;EACjB,CAAC,GAAGX,KAAK;EAET,IAAM,CAACY,EAAE,CAAC,GAAGxB,QAAQ,CAACI,MAAM,CAAC,CAAC,CAAC;EAE/B,IAAMqB,GAAG,GAAGpB,eAAe,CAAmBQ,YAAY,CAAC;EAE3DZ,SAAS,CACP,SAASyB,wBAAwBA,CAAA,EAAG;IAClC,IAAID,GAAG,CAACE,OAAO,EAAE;MACf;MACAF,GAAG,CAACE,OAAO,CAACC,aAAa,GAAGd,OAAO,KAAK,IAAI;IAC9C;EACF,CAAC,EACD,CAACW,GAAG,EAAEX,OAAO,CACf,CAAC;EAED,IAAMe,cAA0D,GAC9D3B,WAAW,CACT4B,KAAK,IAAI;IACP,IAAIL,GAAG,CAACE,OAAO,EAAE;MACf;MACAF,GAAG,CAACE,OAAO,CAACC,aAAa,GAAGd,OAAO,KAAK,IAAI;IAC9C;IAEA,IAAIQ,QAAQ,EAAE;MACZA,QAAQ,CAACQ,KAAK,CAAC;IACjB;EACF,CAAC,EACD,CAACL,GAAG,EAAEX,OAAO,EAAEQ,QAAQ,CACzB,CAAC;EAEH,oBACEb,KAAA;IAAKO,SAAS,EAAEb,UAAU,CAAC,gCAAgC,EAAEa,SAAS,CAAE;IAAAD,QAAA,gBACtER,IAAA;MACEwB,IAAI,EAAC,UAAU;MACfN,GAAG,EAAEA,GAAI;MACTX,OAAO,EAAEA,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,KAAM,CAAC;MAAA;MAC3BE,SAAS,EAAEb,UAAU,CAAC,sBAAsB,EAAEe,cAAc,EAAE;QAC5D,YAAY,EAAEC;MAChB,CAAC,CAAE;MACHF,QAAQ,EAAEA,QAAS;MACnBO,EAAE,EAAEA,EAAG;MACPH,IAAI,EAAEA,IAAK;MACXC,QAAQ,EAAEO,cAAe;MACzB,eAAaN;IAAW,CACzB,CAAC,eACFhB,IAAA;MACES,SAAS,EAAEb,UAAU,CAAC,sBAAsB,EAAEiB,cAAc,CAAE;MAC9DY,OAAO,EAAER,EAAG;MAAAT,QAAA,EAEXA;IAAQ,CACJ,CAAC;EAAA,CACL,CAAC;AAEV,CACF,CAAC;;AAED;AACA;AACAL,QAAQ,CAACuB,WAAW,GAAG,UAAU;AAEjC,eAAevB,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"Checkbox.js","names":["React","useState","useEffect","useCallback","classNames","nanoid","useForwardedRef","jsx","_jsx","jsxs","_jsxs","Checkbox","forwardRef","props","forwardedRef","_props$checked","checked","children","className","_props$disabled","disabled","inputClassName","_props$isInvalid","isInvalid","labelClassName","name","onChange","dataTestId","_useState","_useState2","_slicedToArray","id","ref","setIndeterminateProperty","current","indeterminate","handleOnChange","event","type","htmlFor","displayName"],"sources":["../src/Checkbox.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { nanoid } from 'nanoid';\nimport { useForwardedRef } from '@deephaven/react-hooks';\n\ninterface CheckboxProps {\n checked: boolean | null;\n className?: string;\n disabled?: boolean;\n inputClassName?: string;\n isInvalid?: boolean;\n labelClassName?: string;\n name?: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n children?: React.ReactNode;\n 'data-testid'?: string;\n}\n\n/**\n * A simple checkbox component. Automatically generates an id so htmlFor/id attributes are unique.\n */\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (props, forwardedRef) => {\n const {\n checked = false,\n children,\n className,\n disabled = false,\n inputClassName,\n isInvalid = false,\n labelClassName,\n name,\n onChange,\n 'data-testid': dataTestId,\n } = props;\n\n const [id] = useState(nanoid());\n\n const ref = useForwardedRef<HTMLInputElement>(forwardedRef);\n\n useEffect(\n function setIndeterminateProperty() {\n if (ref.current) {\n // indeterminate is not actually an html attr, can only be set via JS\n ref.current.indeterminate = checked === null;\n }\n },\n [ref, checked]\n );\n\n const handleOnChange: React.ChangeEventHandler<HTMLInputElement> =\n useCallback(\n event => {\n if (ref.current) {\n // ref.current can be null in tests, doesn't impact behaviour\n ref.current.indeterminate = checked === null;\n }\n\n if (onChange) {\n onChange(event);\n }\n },\n [ref, checked, onChange]\n );\n\n return (\n <div className={classNames('custom-control custom-checkbox', className)}>\n <input\n type=\"checkbox\"\n ref={ref}\n checked={checked ?? false} // checked attr must always have a value to remain as a controlled component\n className={classNames('custom-control-input', inputClassName, {\n 'is-invalid': isInvalid,\n })}\n disabled={disabled}\n id={id}\n name={name}\n onChange={handleOnChange}\n data-testid={dataTestId}\n />\n <label\n className={classNames('custom-control-label', labelClassName)}\n htmlFor={id}\n >\n {children}\n </label>\n </div>\n );\n }\n);\n\n// Forward ref causes a false positive for display-name in eslint:\n// https://github.com/yannickcr/eslint-plugin-react/issues/2269\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,EAAEC,WAAW,QAAQ,OAAO;AAC/D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,eAAe,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAezD;AACA;AACA;AACA,IAAMC,QAAQ,gBAAGX,KAAK,CAACY,UAAU,CAC/B,CAACC,KAAK,EAAEC,YAAY,KAAK;EACvB,IAAAC,cAAA,GAWIF,KAAK,CAVPG,OAAO;IAAPA,OAAO,GAAAD,cAAA,cAAG,KAAK,GAAAA,cAAA;IACfE,QAAQ,GASNJ,KAAK,CATPI,QAAQ;IACRC,SAAS,GAQPL,KAAK,CARPK,SAAS;IAAAC,eAAA,GAQPN,KAAK,CAPPO,QAAQ;IAARA,QAAQ,GAAAD,eAAA,cAAG,KAAK,GAAAA,eAAA;IAChBE,cAAc,GAMZR,KAAK,CANPQ,cAAc;IAAAC,gBAAA,GAMZT,KAAK,CALPU,SAAS;IAATA,SAAS,GAAAD,gBAAA,cAAG,KAAK,GAAAA,gBAAA;IACjBE,cAAc,GAIZX,KAAK,CAJPW,cAAc;IACdC,IAAI,GAGFZ,KAAK,CAHPY,IAAI;IACJC,QAAQ,GAENb,KAAK,CAFPa,QAAQ;IACOC,UAAU,GACvBd,KAAK,CADP,aAAa;EAGf,IAAAe,SAAA,GAAa3B,QAAQ,CAACI,MAAM,CAAC,CAAC,CAAC;IAAAwB,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAxBG,EAAE,GAAAF,UAAA;EAET,IAAMG,GAAG,GAAG1B,eAAe,CAAmBQ,YAAY,CAAC;EAE3DZ,SAAS,CACP,SAAS+B,wBAAwBA,CAAA,EAAG;IAClC,IAAID,GAAG,CAACE,OAAO,EAAE;MACf;MACAF,GAAG,CAACE,OAAO,CAACC,aAAa,GAAGnB,OAAO,KAAK,IAAI;IAC9C;EACF,CAAC,EACD,CAACgB,GAAG,EAAEhB,OAAO,CACf,CAAC;EAED,IAAMoB,cAA0D,GAC9DjC,WAAW,CACTkC,KAAK,IAAI;IACP,IAAIL,GAAG,CAACE,OAAO,EAAE;MACf;MACAF,GAAG,CAACE,OAAO,CAACC,aAAa,GAAGnB,OAAO,KAAK,IAAI;IAC9C;IAEA,IAAIU,QAAQ,EAAE;MACZA,QAAQ,CAACW,KAAK,CAAC;IACjB;EACF,CAAC,EACD,CAACL,GAAG,EAAEhB,OAAO,EAAEU,QAAQ,CACzB,CAAC;EAEH,oBACEhB,KAAA;IAAKQ,SAAS,EAAEd,UAAU,CAAC,gCAAgC,EAAEc,SAAS,CAAE;IAAAD,QAAA,gBACtET,IAAA;MACE8B,IAAI,EAAC,UAAU;MACfN,GAAG,EAAEA,GAAI;MACThB,OAAO,EAAEA,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,KAAM,CAAC;MAAA;MAC3BE,SAAS,EAAEd,UAAU,CAAC,sBAAsB,EAAEiB,cAAc,EAAE;QAC5D,YAAY,EAAEE;MAChB,CAAC,CAAE;MACHH,QAAQ,EAAEA,QAAS;MACnBW,EAAE,EAAEA,EAAG;MACPN,IAAI,EAAEA,IAAK;MACXC,QAAQ,EAAEU,cAAe;MACzB,eAAaT;IAAW,CACzB,CAAC,eACFnB,IAAA;MACEU,SAAS,EAAEd,UAAU,CAAC,sBAAsB,EAAEoB,cAAc,CAAE;MAC9De,OAAO,EAAER,EAAG;MAAAd,QAAA,EAEXA;IAAQ,CACJ,CAAC;EAAA,CACL,CAAC;AAEV,CACF,CAAC;;AAED;AACA;AACAN,QAAQ,CAAC6B,WAAW,GAAG,UAAU;AAEjC,eAAe7B,QAAQ","ignoreList":[]}
package/dist/Collapse.js CHANGED
@@ -22,9 +22,7 @@ class Collapse extends Component {
22
22
  return;
23
23
  }
24
24
  elem.style.height = '';
25
- var {
26
- autoFocusOnShow
27
- } = this.props;
25
+ var autoFocusOnShow = this.props.autoFocusOnShow;
28
26
  if (autoFocusOnShow !== undefined && autoFocusOnShow) {
29
27
  var input = elem.querySelector('input, select, textarea');
30
28
  if (input != null) {
@@ -61,12 +59,11 @@ class Collapse extends Component {
61
59
  elem.style.height = "".concat(Collapse.getHeight(elem), "px");
62
60
  }
63
61
  render() {
64
- var {
65
- children: _children,
66
- className,
67
- in: inTransition,
68
- 'data-testid': dataTestId
69
- } = this.props;
62
+ var _this$props = this.props,
63
+ _children = _this$props.children,
64
+ className = _this$props.className,
65
+ inTransition = _this$props.in,
66
+ dataTestId = _this$props['data-testid'];
70
67
  return /*#__PURE__*/_jsx(CSSTransition, {
71
68
  in: inTransition,
72
69
  classNames: {
@@ -1 +1 @@
1
- {"version":3,"file":"Collapse.js","names":["React","Component","classNames","CSSTransition","jsx","_jsx","Collapse","getHeight","elem","scrollBarWidth","scrollWidth","clientWidth","scrollHeight","constructor","props","_defineProperty","createRef","handleEntered","bind","nodeRef","current","style","height","autoFocusOnShow","undefined","input","querySelector","focus","handleEnter","handleEntering","concat","handleExiting","handleExit","render","children","className","in","inTransition","dataTestId","enterActive","enterDone","exitActive","exitDone","onEnter","onEntering","onEntered","onExit","onExiting","timeout","state","ref","collapse"],"sources":["../src/Collapse.tsx"],"sourcesContent":["// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\n\ninterface CollapseProps {\n className?: string;\n in: boolean;\n children: React.ReactNode;\n autoFocusOnShow?: boolean;\n 'data-testid'?: string;\n}\n\nclass Collapse extends Component<CollapseProps> {\n static defaultProps = {\n className: '',\n autoFocusOnShow: false,\n 'data-testid': undefined,\n };\n\n static getHeight(elem: HTMLElement): number {\n const scrollBarWidth = elem.scrollWidth - elem.clientWidth;\n return elem.scrollHeight - scrollBarWidth;\n }\n\n constructor(props: CollapseProps) {\n super(props);\n\n this.handleEntered = this.handleEntered.bind(this);\n }\n\n nodeRef = React.createRef<HTMLDivElement>();\n\n handleEntered(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = '';\n\n const { autoFocusOnShow } = this.props;\n if (autoFocusOnShow !== undefined && autoFocusOnShow) {\n const input = elem.querySelector(\n 'input, select, textarea'\n ) as HTMLInputElement;\n\n if (input != null) {\n input.focus();\n }\n }\n }\n\n handleEnter(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = '0';\n }\n\n handleEntering(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = `${Collapse.getHeight(elem)}px`;\n }\n\n handleExiting(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = '0';\n }\n\n handleExit(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = `${Collapse.getHeight(elem)}px`;\n }\n\n render(): JSX.Element {\n const {\n children,\n className,\n in: inTransition,\n 'data-testid': dataTestId,\n } = this.props;\n return (\n <CSSTransition\n in={inTransition}\n classNames={{\n enterActive: 'collapsing',\n enterDone: 'collapse show',\n exitActive: 'collapsing',\n exitDone: 'collapse',\n }}\n onEnter={this.handleEnter}\n onEntering={this.handleEntering}\n onEntered={this.handleEntered}\n onExit={this.handleExit}\n onExiting={this.handleExiting}\n timeout={350}\n nodeRef={this.nodeRef}\n >\n {state => (\n <div\n ref={this.nodeRef}\n className={classNames({ collapse: state === 'exited' }, className)}\n data-testid={dataTestId}\n >\n {children}\n </div>\n )}\n </CSSTransition>\n );\n }\n}\n\nexport default Collapse;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Collapse.js","names":["React","Component","classNames","CSSTransition","jsx","_jsx","Collapse","getHeight","elem","scrollBarWidth","scrollWidth","clientWidth","scrollHeight","constructor","props","_defineProperty","createRef","handleEntered","bind","nodeRef","current","style","height","autoFocusOnShow","undefined","input","querySelector","focus","handleEnter","handleEntering","concat","handleExiting","handleExit","render","_this$props","children","className","inTransition","in","dataTestId","enterActive","enterDone","exitActive","exitDone","onEnter","onEntering","onEntered","onExit","onExiting","timeout","state","ref","collapse"],"sources":["../src/Collapse.tsx"],"sourcesContent":["// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\n\ninterface CollapseProps {\n className?: string;\n in: boolean;\n children: React.ReactNode;\n autoFocusOnShow?: boolean;\n 'data-testid'?: string;\n}\n\nclass Collapse extends Component<CollapseProps> {\n static defaultProps = {\n className: '',\n autoFocusOnShow: false,\n 'data-testid': undefined,\n };\n\n static getHeight(elem: HTMLElement): number {\n const scrollBarWidth = elem.scrollWidth - elem.clientWidth;\n return elem.scrollHeight - scrollBarWidth;\n }\n\n constructor(props: CollapseProps) {\n super(props);\n\n this.handleEntered = this.handleEntered.bind(this);\n }\n\n nodeRef = React.createRef<HTMLDivElement>();\n\n handleEntered(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = '';\n\n const { autoFocusOnShow } = this.props;\n if (autoFocusOnShow !== undefined && autoFocusOnShow) {\n const input = elem.querySelector(\n 'input, select, textarea'\n ) as HTMLInputElement;\n\n if (input != null) {\n input.focus();\n }\n }\n }\n\n handleEnter(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = '0';\n }\n\n handleEntering(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = `${Collapse.getHeight(elem)}px`;\n }\n\n handleExiting(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = '0';\n }\n\n handleExit(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = `${Collapse.getHeight(elem)}px`;\n }\n\n render(): JSX.Element {\n const {\n children,\n className,\n in: inTransition,\n 'data-testid': dataTestId,\n } = this.props;\n return (\n <CSSTransition\n in={inTransition}\n classNames={{\n enterActive: 'collapsing',\n enterDone: 'collapse show',\n exitActive: 'collapsing',\n exitDone: 'collapse',\n }}\n onEnter={this.handleEnter}\n onEntering={this.handleEntering}\n onEntered={this.handleEntered}\n onExit={this.handleExit}\n onExiting={this.handleExiting}\n timeout={350}\n nodeRef={this.nodeRef}\n >\n {state => (\n <div\n ref={this.nodeRef}\n className={classNames({ collapse: state === 'exited' }, className)}\n data-testid={dataTestId}\n >\n {children}\n </div>\n )}\n </CSSTransition>\n );\n }\n}\n\nexport default Collapse;\n"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,12 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
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; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
6
6
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
8
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
10
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
11
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
12
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
7
13
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
8
14
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
9
15
  /* eslint-disable react/jsx-props-no-spreading */
@@ -18,13 +24,15 @@ var DEFAULT_TOOLTIP = 'Copy';
18
24
  * Button that has a copy icon, and copies text to a clipboard when clicked.
19
25
  */
20
26
  function CopyButton(_ref) {
21
- var {
22
- copy,
23
- tooltip = DEFAULT_TOOLTIP,
24
- children
25
- } = _ref,
27
+ var copy = _ref.copy,
28
+ _ref$tooltip = _ref.tooltip,
29
+ tooltip = _ref$tooltip === void 0 ? DEFAULT_TOOLTIP : _ref$tooltip,
30
+ children = _ref.children,
26
31
  rest = _objectWithoutProperties(_ref, _excluded);
27
- var [copied, copyToClipboard] = useCopyToClipboard();
32
+ var _useCopyToClipboard = useCopyToClipboard(),
33
+ _useCopyToClipboard2 = _slicedToArray(_useCopyToClipboard, 2),
34
+ copied = _useCopyToClipboard2[0],
35
+ copyToClipboard = _useCopyToClipboard2[1];
28
36
  var currentTooltip = copied ? 'Copied' : tooltip;
29
37
  return /*#__PURE__*/_jsxs(ActionButton, _objectSpread(_objectSpread({}, rest), {}, {
30
38
  "aria-label": currentTooltip,
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.js","names":["FontAwesomeIcon","vsPassFilled","vsCopy","useCopyToClipboard","ActionButton","Icon","Text","Tooltip","jsx","_jsx","jsxs","_jsxs","DEFAULT_TOOLTIP","CopyButton","_ref","copy","tooltip","children","rest","_objectWithoutProperties","_excluded","copied","copyToClipboard","currentTooltip","_objectSpread","onPress","UNSAFE_className","undefined","icon","displayName"],"sources":["../src/CopyButton.tsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPassFilled, vsCopy } from '@deephaven/icons';\nimport { useCopyToClipboard } from '@deephaven/react-hooks';\nimport { ActionButton, Icon, Text, type ActionButtonProps } from './spectrum';\nimport { Tooltip } from './popper';\n\nconst DEFAULT_TOOLTIP = 'Copy';\n\nexport interface CopyButtonProps\n extends Omit<ActionButtonProps, 'aria-label' | 'onPress'> {\n /** The value to copy when clicked, accepts string or function returning a string. */\n copy: string | (() => string);\n /** Optional tooltip label ex. 'Copy column name'. Defaults to 'Copy'. */\n tooltip?: string;\n}\n\n/**\n * Button that has a copy icon, and copies text to a clipboard when clicked.\n */\nfunction CopyButton({\n copy,\n tooltip = DEFAULT_TOOLTIP,\n children,\n ...rest\n}: CopyButtonProps): JSX.Element {\n const [copied, copyToClipboard] = useCopyToClipboard();\n const currentTooltip = copied ? 'Copied' : tooltip;\n\n return (\n <ActionButton\n {...rest}\n aria-label={currentTooltip}\n onPress={() => {\n copyToClipboard(typeof copy === 'function' ? copy() : copy);\n }}\n >\n <Icon\n UNSAFE_className={\n children == null ? 'action-button-icon-with-tooltip' : undefined\n }\n >\n <FontAwesomeIcon icon={copied ? vsPassFilled : vsCopy} />\n </Icon>\n {children != null && <Text>{children}</Text>}\n {/* Assumes children means button has a label, and no longer needs a tooltip */}\n {(children == null || currentTooltip !== DEFAULT_TOOLTIP) && (\n <Tooltip>{currentTooltip}</Tooltip>\n )}\n </ActionButton>\n );\n}\n\nCopyButton.displayName = 'CopyButton';\n\nexport default CopyButton;\n"],"mappings":";;;;;;;;AAAA;AACA,SAASA,eAAe,QAAQ,gCAAgC;AAChE,SAASC,YAAY,EAAEC,MAAM,QAAQ,kBAAkB;AACvD,SAASC,kBAAkB,QAAQ,wBAAwB;AAAC,SACnDC,YAAY,EAAEC,IAAI,EAAEC,IAAI;AAAA,SACxBC,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEhB,IAAMC,eAAe,GAAG,MAAM;AAU9B;AACA;AACA;AACA,SAASC,UAAUA,CAAAC,IAAA,EAKc;EAAA,IALb;MAClBC,IAAI;MACJC,OAAO,GAAGJ,eAAe;MACzBK;IAEe,CAAC,GAAAH,IAAA;IADbI,IAAI,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EAEP,IAAM,CAACC,MAAM,EAAEC,eAAe,CAAC,GAAGnB,kBAAkB,CAAC,CAAC;EACtD,IAAMoB,cAAc,GAAGF,MAAM,GAAG,QAAQ,GAAGL,OAAO;EAElD,oBACEL,KAAA,CAACP,YAAY,EAAAoB,aAAA,CAAAA,aAAA,KACPN,IAAI;IACR,cAAYK,cAAe;IAC3BE,OAAO,EAAEA,CAAA,KAAM;MACbH,eAAe,CAAC,OAAOP,IAAI,KAAK,UAAU,GAAGA,IAAI,CAAC,CAAC,GAAGA,IAAI,CAAC;IAC7D,CAAE;IAAAE,QAAA,gBAEFR,IAAA,CAACJ,IAAI;MACHqB,gBAAgB,EACdT,QAAQ,IAAI,IAAI,GAAG,iCAAiC,GAAGU,SACxD;MAAAV,QAAA,eAEDR,IAAA,CAACT,eAAe;QAAC4B,IAAI,EAAEP,MAAM,GAAGpB,YAAY,GAAGC;MAAO,CAAE;IAAC,CACrD,CAAC,EACNe,QAAQ,IAAI,IAAI,iBAAIR,IAAA,CAACH,IAAI;MAAAW,QAAA,EAAEA;IAAQ,CAAO,CAAC,EAE3C,CAACA,QAAQ,IAAI,IAAI,IAAIM,cAAc,KAAKX,eAAe,kBACtDH,IAAA,CAACF,OAAO;MAAAU,QAAA,EAAEM;IAAc,CAAU,CACnC;EAAA,EACW,CAAC;AAEnB;AAEAV,UAAU,CAACgB,WAAW,GAAG,YAAY;AAErC,eAAehB,UAAU","ignoreList":[]}
1
+ {"version":3,"file":"CopyButton.js","names":["FontAwesomeIcon","vsPassFilled","vsCopy","useCopyToClipboard","ActionButton","Icon","Text","Tooltip","jsx","_jsx","jsxs","_jsxs","DEFAULT_TOOLTIP","CopyButton","_ref","copy","_ref$tooltip","tooltip","children","rest","_objectWithoutProperties","_excluded","_useCopyToClipboard","_useCopyToClipboard2","_slicedToArray","copied","copyToClipboard","currentTooltip","_objectSpread","onPress","UNSAFE_className","undefined","icon","displayName"],"sources":["../src/CopyButton.tsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPassFilled, vsCopy } from '@deephaven/icons';\nimport { useCopyToClipboard } from '@deephaven/react-hooks';\nimport { ActionButton, Icon, Text, type ActionButtonProps } from './spectrum';\nimport { Tooltip } from './popper';\n\nconst DEFAULT_TOOLTIP = 'Copy';\n\nexport interface CopyButtonProps\n extends Omit<ActionButtonProps, 'aria-label' | 'onPress'> {\n /** The value to copy when clicked, accepts string or function returning a string. */\n copy: string | (() => string);\n /** Optional tooltip label ex. 'Copy column name'. Defaults to 'Copy'. */\n tooltip?: string;\n}\n\n/**\n * Button that has a copy icon, and copies text to a clipboard when clicked.\n */\nfunction CopyButton({\n copy,\n tooltip = DEFAULT_TOOLTIP,\n children,\n ...rest\n}: CopyButtonProps): JSX.Element {\n const [copied, copyToClipboard] = useCopyToClipboard();\n const currentTooltip = copied ? 'Copied' : tooltip;\n\n return (\n <ActionButton\n {...rest}\n aria-label={currentTooltip}\n onPress={() => {\n copyToClipboard(typeof copy === 'function' ? copy() : copy);\n }}\n >\n <Icon\n UNSAFE_className={\n children == null ? 'action-button-icon-with-tooltip' : undefined\n }\n >\n <FontAwesomeIcon icon={copied ? vsPassFilled : vsCopy} />\n </Icon>\n {children != null && <Text>{children}</Text>}\n {/* Assumes children means button has a label, and no longer needs a tooltip */}\n {(children == null || currentTooltip !== DEFAULT_TOOLTIP) && (\n <Tooltip>{currentTooltip}</Tooltip>\n )}\n </ActionButton>\n );\n}\n\nCopyButton.displayName = 'CopyButton';\n\nexport default CopyButton;\n"],"mappings":";;;;;;;;;;;;;;AAAA;AACA,SAASA,eAAe,QAAQ,gCAAgC;AAChE,SAASC,YAAY,EAAEC,MAAM,QAAQ,kBAAkB;AACvD,SAASC,kBAAkB,QAAQ,wBAAwB;AAAC,SACnDC,YAAY,EAAEC,IAAI,EAAEC,IAAI;AAAA,SACxBC,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEhB,IAAMC,eAAe,GAAG,MAAM;AAU9B;AACA;AACA;AACA,SAASC,UAAUA,CAAAC,IAAA,EAKc;EAAA,IAJ/BC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAAC,YAAA,GAAAF,IAAA,CACJG,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAGJ,eAAe,GAAAI,YAAA;IACzBE,QAAQ,GAAAJ,IAAA,CAARI,QAAQ;IACLC,IAAI,GAAAC,wBAAA,CAAAN,IAAA,EAAAO,SAAA;EAEP,IAAAC,mBAAA,GAAkCnB,kBAAkB,CAAC,CAAC;IAAAoB,oBAAA,GAAAC,cAAA,CAAAF,mBAAA;IAA/CG,MAAM,GAAAF,oBAAA;IAAEG,eAAe,GAAAH,oBAAA;EAC9B,IAAMI,cAAc,GAAGF,MAAM,GAAG,QAAQ,GAAGR,OAAO;EAElD,oBACEN,KAAA,CAACP,YAAY,EAAAwB,aAAA,CAAAA,aAAA,KACPT,IAAI;IACR,cAAYQ,cAAe;IAC3BE,OAAO,EAAEA,CAAA,KAAM;MACbH,eAAe,CAAC,OAAOX,IAAI,KAAK,UAAU,GAAGA,IAAI,CAAC,CAAC,GAAGA,IAAI,CAAC;IAC7D,CAAE;IAAAG,QAAA,gBAEFT,IAAA,CAACJ,IAAI;MACHyB,gBAAgB,EACdZ,QAAQ,IAAI,IAAI,GAAG,iCAAiC,GAAGa,SACxD;MAAAb,QAAA,eAEDT,IAAA,CAACT,eAAe;QAACgC,IAAI,EAAEP,MAAM,GAAGxB,YAAY,GAAGC;MAAO,CAAE;IAAC,CACrD,CAAC,EACNgB,QAAQ,IAAI,IAAI,iBAAIT,IAAA,CAACH,IAAI;MAAAY,QAAA,EAAEA;IAAQ,CAAO,CAAC,EAE3C,CAACA,QAAQ,IAAI,IAAI,IAAIS,cAAc,KAAKf,eAAe,kBACtDH,IAAA,CAACF,OAAO;MAAAW,QAAA,EAAES;IAAc,CAAU,CACnC;EAAA,EACW,CAAC;AAEnB;AAEAd,UAAU,CAACoB,WAAW,GAAG,YAAY;AAErC,eAAepB,UAAU","ignoreList":[]}
@@ -25,10 +25,8 @@ class CustomTimeSelect extends Component {
25
25
  _defineProperty(this, "menuContainer", void 0);
26
26
  _defineProperty(this, "button", void 0);
27
27
  _defineProperty(this, "input", void 0);
28
- var {
29
- value,
30
- valueToTime
31
- } = props;
28
+ var value = props.value,
29
+ valueToTime = props.valueToTime;
32
30
  this.toggleMenu = this.toggleMenu.bind(this);
33
31
  this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);
34
32
  this.closeMenu = this.closeMenu.bind(this);
@@ -50,14 +48,11 @@ class CustomTimeSelect extends Component {
50
48
  };
51
49
  }
52
50
  getSelectedText() {
53
- var {
54
- options,
55
- value,
56
- placeholder
57
- } = this.props;
58
- var {
59
- customTime
60
- } = this.state;
51
+ var _this$props = this.props,
52
+ options = _this$props.options,
53
+ value = _this$props.value,
54
+ placeholder = _this$props.placeholder;
55
+ var customTime = this.state.customTime;
61
56
  if (value === null) {
62
57
  return placeholder;
63
58
  }
@@ -81,9 +76,7 @@ class CustomTimeSelect extends Component {
81
76
  (_this$button$current = this.button.current) === null || _this$button$current === void 0 || _this$button$current.focus();
82
77
  }
83
78
  updateInputValue(value) {
84
- var {
85
- onChange
86
- } = this.props;
79
+ var onChange = this.props.onChange;
87
80
  onChange(value);
88
81
  }
89
82
  handleResize() {
@@ -91,13 +84,10 @@ class CustomTimeSelect extends Component {
91
84
  }
92
85
  handleMenuKeyDown(event) {
93
86
  var _this$button$current2;
94
- var {
95
- keyboardOptionIndex,
96
- inputFocused
97
- } = this.state;
98
- var {
99
- options
100
- } = this.props;
87
+ var _this$state = this.state,
88
+ keyboardOptionIndex = _this$state.keyboardOptionIndex,
89
+ inputFocused = _this$state.inputFocused;
90
+ var options = this.props.options;
101
91
  switch (event.key) {
102
92
  case 'Enter':
103
93
  case ' ':
@@ -139,13 +129,10 @@ class CustomTimeSelect extends Component {
139
129
  }
140
130
  }
141
131
  handleMenuNavigation(direction) {
142
- var {
143
- keyboardOptionIndex,
144
- inputFocused
145
- } = this.state;
146
- var {
147
- options
148
- } = this.props;
132
+ var _this$state2 = this.state,
133
+ keyboardOptionIndex = _this$state2.keyboardOptionIndex,
134
+ inputFocused = _this$state2.inputFocused;
135
+ var options = this.props.options;
149
136
  var menuOptionsLength = options.length;
150
137
  var newKeyboardOptionIndex = keyboardOptionIndex;
151
138
  switch (direction) {
@@ -190,13 +177,10 @@ class CustomTimeSelect extends Component {
190
177
  }
191
178
  handleOptionClick(event) {
192
179
  var optionIndex = Number(event.currentTarget.value);
193
- var {
194
- options,
195
- timeToValue
196
- } = this.props;
197
- var {
198
- customTime
199
- } = this.state;
180
+ var _this$props2 = this.props,
181
+ options = _this$props2.options,
182
+ timeToValue = _this$props2.timeToValue;
183
+ var customTime = this.state.customTime;
200
184
  if (optionIndex === CUSTOM_OPTION) {
201
185
  var update = timeToValue(customTime);
202
186
  this.updateAndClose(update);
@@ -217,13 +201,10 @@ class CustomTimeSelect extends Component {
217
201
  }
218
202
  handleMenuOpened() {
219
203
  var _this$menuContainer$c;
220
- var {
221
- options,
222
- value
223
- } = this.props;
224
- var {
225
- keyboardOptionIndex
226
- } = this.state;
204
+ var _this$props3 = this.props,
205
+ options = _this$props3.options,
206
+ value = _this$props3.value;
207
+ var keyboardOptionIndex = this.state.keyboardOptionIndex;
227
208
  this.scrollOptionIntoView(keyboardOptionIndex);
228
209
  var activeOption = (_this$menuContainer$c = this.menuContainer.current) === null || _this$menuContainer$c === void 0 ? void 0 : _this$menuContainer$c.querySelector('.cs-option-btn.keyboard-active');
229
210
  if (activeOption instanceof HTMLElement) {
@@ -253,9 +234,7 @@ class CustomTimeSelect extends Component {
253
234
  }
254
235
  }
255
236
  handleMenuExited() {
256
- var {
257
- menuIsOpen
258
- } = this.state;
237
+ var menuIsOpen = this.state.menuIsOpen;
259
238
  if (menuIsOpen) {
260
239
  this.setState({
261
240
  menuIsOpen: false,
@@ -264,9 +243,7 @@ class CustomTimeSelect extends Component {
264
243
  }
265
244
  }
266
245
  handleCustomInput(value) {
267
- var {
268
- timeToValue
269
- } = this.props;
246
+ var timeToValue = this.props.timeToValue;
270
247
  var update = timeToValue(value);
271
248
  this.updateInputValue(update);
272
249
  this.setState({
@@ -274,19 +251,13 @@ class CustomTimeSelect extends Component {
274
251
  });
275
252
  }
276
253
  updateFromCustom() {
277
- var {
278
- timeToValue
279
- } = this.props;
280
- var {
281
- customTime
282
- } = this.state;
254
+ var timeToValue = this.props.timeToValue;
255
+ var customTime = this.state.customTime;
283
256
  var update = timeToValue(customTime);
284
257
  this.updateInputValue(update);
285
258
  }
286
259
  toggleMenu(event) {
287
- var {
288
- menuIsOpen
289
- } = this.state;
260
+ var menuIsOpen = this.state.menuIsOpen;
290
261
  if (menuIsOpen) {
291
262
  this.closeMenu();
292
263
  } else {
@@ -312,10 +283,9 @@ class CustomTimeSelect extends Component {
312
283
  }
313
284
  }
314
285
  updateKeyboardIndex() {
315
- var {
316
- options,
317
- value
318
- } = this.props;
286
+ var _this$props4 = this.props,
287
+ options = _this$props4.options,
288
+ value = _this$props4.value;
319
289
  if (value === null) {
320
290
  return;
321
291
  }
@@ -339,9 +309,7 @@ class CustomTimeSelect extends Component {
339
309
  }
340
310
  }
341
311
  renderMenuElement() {
342
- var {
343
- inputWidth
344
- } = this.state;
312
+ var inputWidth = this.state.inputWidth;
345
313
  return /*#__PURE__*/_jsx("div", {
346
314
  className: "cs-menu-container",
347
315
  ref: this.menuContainer,
@@ -363,17 +331,15 @@ class CustomTimeSelect extends Component {
363
331
  });
364
332
  }
365
333
  renderOptions() {
366
- var {
367
- options,
368
- value,
369
- icon,
370
- customText
371
- } = this.props;
372
- var {
373
- keyboardOptionIndex,
374
- customTime,
375
- inputFocused
376
- } = this.state;
334
+ var _this$props5 = this.props,
335
+ options = _this$props5.options,
336
+ value = _this$props5.value,
337
+ icon = _this$props5.icon,
338
+ customText = _this$props5.customText;
339
+ var _this$state3 = this.state,
340
+ keyboardOptionIndex = _this$state3.keyboardOptionIndex,
341
+ customTime = _this$state3.customTime,
342
+ inputFocused = _this$state3.inputFocused;
377
343
  var matchFound = false;
378
344
  var optionArray = [];
379
345
  for (var index = 0; index < options.length; index += 1) {
@@ -438,18 +404,13 @@ class CustomTimeSelect extends Component {
438
404
  return optionArray;
439
405
  }
440
406
  render() {
441
- var {
442
- disabled,
443
- invalid,
444
- value,
445
- 'data-testid': dataTestId
446
- } = this.props;
447
- var {
448
- menuIsOpen
449
- } = this.state;
450
- var {
451
- popperOptions
452
- } = this.props;
407
+ var _this$props6 = this.props,
408
+ disabled = _this$props6.disabled,
409
+ invalid = _this$props6.invalid,
410
+ value = _this$props6.value,
411
+ dataTestId = _this$props6['data-testid'];
412
+ var menuIsOpen = this.state.menuIsOpen;
413
+ var popperOptions = this.props.popperOptions;
453
414
  popperOptions = _objectSpread({
454
415
  placement: 'bottom-end',
455
416
  modifiers: {