@deephaven/components 0.43.0 → 0.44.1-beta.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.
- package/dist/AutoCompleteInput.css +35 -0
- package/dist/AutoCompleteInput.css.map +1 -0
- package/dist/AutoCompleteInput.js +496 -0
- package/dist/AutoCompleteInput.js.map +1 -0
- package/dist/AutoResizeTextarea.css +11 -0
- package/dist/AutoResizeTextarea.css.map +1 -0
- package/dist/AutoResizeTextarea.js +128 -0
- package/dist/AutoResizeTextarea.js.map +1 -0
- package/dist/BasicModal.js +112 -0
- package/dist/BasicModal.js.map +1 -0
- package/dist/Button.d.ts +1 -1
- package/dist/Button.js +193 -0
- package/dist/Button.js.map +1 -0
- package/dist/ButtonGroup.js +31 -0
- package/dist/ButtonGroup.js.map +1 -0
- package/dist/ButtonOld.js +41 -0
- package/dist/ButtonOld.js.map +1 -0
- package/dist/CardFlip.css +36 -0
- package/dist/CardFlip.css.map +1 -0
- package/dist/CardFlip.js +61 -0
- package/dist/CardFlip.js.map +1 -0
- package/dist/Checkbox.js +104 -0
- package/dist/Checkbox.js.map +1 -0
- package/dist/Collapse.js +89 -0
- package/dist/Collapse.js.map +1 -0
- package/dist/ComboBox.css +50 -0
- package/dist/ComboBox.css.map +1 -0
- package/dist/ComboBox.js +487 -0
- package/dist/ComboBox.js.map +1 -0
- package/dist/CopyButton.js +30 -0
- package/dist/CopyButton.js.map +1 -0
- package/dist/CustomTimeSelect.css +65 -0
- package/dist/CustomTimeSelect.css.map +1 -0
- package/dist/CustomTimeSelect.js +516 -0
- package/dist/CustomTimeSelect.js.map +1 -0
- package/dist/DateInput.js +54 -0
- package/dist/DateInput.js.map +1 -0
- package/dist/DateInputUtils.js +33 -0
- package/dist/DateInputUtils.js.map +1 -0
- package/dist/DateTimeInput.js +84 -0
- package/dist/DateTimeInput.js.map +1 -0
- package/dist/DateTimeInputUtils.js +8 -0
- package/dist/DateTimeInputUtils.js.map +1 -0
- package/dist/DebouncedSearchInput.js +79 -0
- package/dist/DebouncedSearchInput.js.map +1 -0
- package/dist/DragUtils.js +68 -0
- package/dist/DragUtils.js.map +1 -0
- package/dist/DraggableItemList.css +118 -0
- package/dist/DraggableItemList.css.map +1 -0
- package/dist/DraggableItemList.js +268 -0
- package/dist/DraggableItemList.js.map +1 -0
- package/dist/EditableItemList.js +105 -0
- package/dist/EditableItemList.js.map +1 -0
- package/dist/HierarchicalCheckboxMenu.css +30 -0
- package/dist/HierarchicalCheckboxMenu.css.map +1 -0
- package/dist/HierarchicalCheckboxMenu.js +218 -0
- package/dist/HierarchicalCheckboxMenu.js.map +1 -0
- package/dist/ItemList.css +13 -0
- package/dist/ItemList.css.map +1 -0
- package/dist/ItemList.js +686 -0
- package/dist/ItemList.js.map +1 -0
- package/dist/ItemListItem.css +48 -0
- package/dist/ItemListItem.css.map +1 -0
- package/dist/ItemListItem.js +214 -0
- package/dist/ItemListItem.js.map +1 -0
- package/dist/LoadingOverlay.css +24 -0
- package/dist/LoadingOverlay.css.map +1 -0
- package/dist/LoadingOverlay.js +48 -0
- package/dist/LoadingOverlay.js.map +1 -0
- package/dist/LoadingSpinner.css +8 -0
- package/dist/LoadingSpinner.css.map +1 -0
- package/dist/LoadingSpinner.js +24 -0
- package/dist/LoadingSpinner.js.map +1 -0
- package/dist/MaskedInput.css +7 -0
- package/dist/MaskedInput.css.map +1 -0
- package/dist/MaskedInput.js +394 -0
- package/dist/MaskedInput.js.map +1 -0
- package/dist/MaskedInputUtils.js +36 -0
- package/dist/MaskedInputUtils.js.map +1 -0
- package/dist/Option.js +16 -0
- package/dist/Option.js.map +1 -0
- package/dist/RadioGroup.js +34 -0
- package/dist/RadioGroup.js.map +1 -0
- package/dist/RadioItem.js +55 -0
- package/dist/RadioItem.js.map +1 -0
- package/dist/RandomAreaPlotAnimation.css +18 -0
- package/dist/RandomAreaPlotAnimation.css.map +1 -0
- package/dist/RandomAreaPlotAnimation.js +290 -0
- package/dist/RandomAreaPlotAnimation.js.map +1 -0
- package/dist/SearchInput.css +43 -0
- package/dist/SearchInput.css.map +1 -0
- package/dist/SearchInput.js +66 -0
- package/dist/SearchInput.js.map +1 -0
- package/dist/Select.js +30 -0
- package/dist/Select.js.map +1 -0
- package/dist/SelectValueList.css +38 -0
- package/dist/SelectValueList.css.map +1 -0
- package/dist/SelectValueList.js +175 -0
- package/dist/SelectValueList.js.map +1 -0
- package/dist/SocketedButton.css +123 -0
- package/dist/SocketedButton.css.map +1 -0
- package/dist/SocketedButton.js +63 -0
- package/dist/SocketedButton.js.map +1 -0
- package/dist/SpectrumThemeDark.module.css +9 -0
- package/dist/SpectrumThemeDark.module.css.map +1 -0
- package/dist/SpectrumThemeLight.module.css +9 -0
- package/dist/SpectrumThemeLight.module.css.map +1 -0
- package/dist/SpectrumUtils.js +59 -0
- package/dist/SpectrumUtils.js.map +1 -0
- package/dist/ThemeExport.js +15 -0
- package/dist/ThemeExport.js.map +1 -0
- package/dist/ThemeExport.module.css +40 -0
- package/dist/ThemeExport.module.css.map +1 -0
- package/dist/TimeInput.js +101 -0
- package/dist/TimeInput.js.map +1 -0
- package/dist/TimeSlider.css +178 -0
- package/dist/TimeSlider.css.map +1 -0
- package/dist/TimeSlider.js +314 -0
- package/dist/TimeSlider.js.map +1 -0
- package/dist/TimeSlider.module.css +185 -0
- package/dist/TimeSlider.module.css.map +1 -0
- package/dist/ToastNotification.css +62 -0
- package/dist/ToastNotification.css.map +1 -0
- package/dist/ToastNotification.js +56 -0
- package/dist/ToastNotification.js.map +1 -0
- package/dist/UISwitch.css +94 -0
- package/dist/UISwitch.css.map +1 -0
- package/dist/UISwitch.js +30 -0
- package/dist/UISwitch.js.map +1 -0
- package/dist/ValidateLabelInput.css +9 -0
- package/dist/ValidateLabelInput.css.map +1 -0
- package/dist/ValidateLabelInput.js +50 -0
- package/dist/ValidateLabelInput.js.map +1 -0
- package/dist/context-actions/ContextActionUtils.js +142 -0
- package/dist/context-actions/ContextActionUtils.js.map +1 -0
- package/dist/context-actions/ContextActions.css +157 -0
- package/dist/context-actions/ContextActions.css.map +1 -0
- package/dist/context-actions/ContextActions.js +182 -0
- package/dist/context-actions/ContextActions.js.map +1 -0
- package/dist/context-actions/ContextMenu.js +559 -0
- package/dist/context-actions/ContextMenu.js.map +1 -0
- package/dist/context-actions/ContextMenuItem.js +139 -0
- package/dist/context-actions/ContextMenuItem.js.map +1 -0
- package/dist/context-actions/ContextMenuRoot.js +135 -0
- package/dist/context-actions/ContextMenuRoot.js.map +1 -0
- package/dist/context-actions/GlobalContextAction.js +53 -0
- package/dist/context-actions/GlobalContextAction.js.map +1 -0
- package/dist/context-actions/GlobalContextActions.js +28 -0
- package/dist/context-actions/GlobalContextActions.js.map +1 -0
- package/dist/context-actions/index.js +5 -0
- package/dist/context-actions/index.js.map +1 -0
- package/dist/declaration.d.js +2 -0
- package/dist/declaration.d.js.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/menu-actions/DropdownMenu.css +39 -0
- package/dist/menu-actions/DropdownMenu.css.map +1 -0
- package/dist/menu-actions/DropdownMenu.js +174 -0
- package/dist/menu-actions/DropdownMenu.js.map +1 -0
- package/dist/menu-actions/Menu.js +244 -0
- package/dist/menu-actions/Menu.js.map +1 -0
- package/dist/menu-actions/index.js +4 -0
- package/dist/menu-actions/index.js.map +1 -0
- package/dist/modal/DebouncedModal.js +26 -0
- package/dist/modal/DebouncedModal.js.map +1 -0
- package/dist/modal/InfoModal.css +24 -0
- package/dist/modal/InfoModal.css.map +1 -0
- package/dist/modal/InfoModal.js +34 -0
- package/dist/modal/InfoModal.js.map +1 -0
- package/dist/modal/Modal.js +122 -0
- package/dist/modal/Modal.js.map +1 -0
- package/dist/modal/ModalBody.js +16 -0
- package/dist/modal/ModalBody.js.map +1 -0
- package/dist/modal/ModalFooter.js +14 -0
- package/dist/modal/ModalFooter.js.map +1 -0
- package/dist/modal/ModalHeader.js +27 -0
- package/dist/modal/ModalHeader.js.map +1 -0
- package/dist/modal/index.js +7 -0
- package/dist/modal/index.js.map +1 -0
- package/dist/navigation/Menu.css +13 -0
- package/dist/navigation/Menu.css.map +1 -0
- package/dist/navigation/Menu.js +25 -0
- package/dist/navigation/Menu.js.map +1 -0
- package/dist/navigation/MenuItem.css +46 -0
- package/dist/navigation/MenuItem.css.map +1 -0
- package/dist/navigation/MenuItem.js +65 -0
- package/dist/navigation/MenuItem.js.map +1 -0
- package/dist/navigation/Page.css +34 -0
- package/dist/navigation/Page.css.map +1 -0
- package/dist/navigation/Page.js +46 -0
- package/dist/navigation/Page.js.map +1 -0
- package/dist/navigation/Stack.css +24 -0
- package/dist/navigation/Stack.css.map +1 -0
- package/dist/navigation/Stack.js +82 -0
- package/dist/navigation/Stack.js.map +1 -0
- package/dist/navigation/index.js +5 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/popper/Popper.css +127 -0
- package/dist/popper/Popper.css.map +1 -0
- package/dist/popper/Popper.js +283 -0
- package/dist/popper/Popper.js.map +1 -0
- package/dist/popper/Tooltip.js +283 -0
- package/dist/popper/Tooltip.js.map +1 -0
- package/dist/popper/index.js +3 -0
- package/dist/popper/index.js.map +1 -0
- package/dist/shortcuts/GlobalShortcuts.js +47 -0
- package/dist/shortcuts/GlobalShortcuts.js.map +1 -0
- package/dist/shortcuts/Shortcut.js +393 -0
- package/dist/shortcuts/Shortcut.js.map +1 -0
- package/dist/shortcuts/ShortcutRegistry.js +78 -0
- package/dist/shortcuts/ShortcutRegistry.js.map +1 -0
- package/dist/shortcuts/index.js +5 -0
- package/dist/shortcuts/index.js.map +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { dhExclamation, vsLink } from '@deephaven/icons';
|
|
4
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
5
|
+
import "./SocketedButton.css";
|
|
6
|
+
var SocketedButton = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
7
|
+
var {
|
|
8
|
+
children,
|
|
9
|
+
className,
|
|
10
|
+
disabled,
|
|
11
|
+
id,
|
|
12
|
+
isLinked,
|
|
13
|
+
isLinkedSource,
|
|
14
|
+
isInvalid,
|
|
15
|
+
onClick,
|
|
16
|
+
onMouseEnter,
|
|
17
|
+
onMouseLeave,
|
|
18
|
+
style,
|
|
19
|
+
'data-testid': dataTestId
|
|
20
|
+
} = props;
|
|
21
|
+
return /*#__PURE__*/React.createElement("button", {
|
|
22
|
+
ref: ref,
|
|
23
|
+
type: "button",
|
|
24
|
+
className: classNames('btn-socketed', {
|
|
25
|
+
'btn-socketed-linked': isLinked !== undefined && isLinked || isLinkedSource
|
|
26
|
+
}, {
|
|
27
|
+
'btn-socketed-linked-source': isLinkedSource
|
|
28
|
+
}, {
|
|
29
|
+
'is-invalid': isInvalid
|
|
30
|
+
}, className),
|
|
31
|
+
id: id,
|
|
32
|
+
onClick: onClick,
|
|
33
|
+
onMouseEnter: onMouseEnter,
|
|
34
|
+
onMouseLeave: onMouseLeave,
|
|
35
|
+
style: style,
|
|
36
|
+
disabled: disabled,
|
|
37
|
+
"data-testid": dataTestId
|
|
38
|
+
}, children, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
39
|
+
icon: vsLink,
|
|
40
|
+
className: "linked btn-socketed-icon",
|
|
41
|
+
transform: "down-1"
|
|
42
|
+
}), /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
43
|
+
icon: dhExclamation,
|
|
44
|
+
className: "is-invalid btn-socketed-icon"
|
|
45
|
+
}));
|
|
46
|
+
});
|
|
47
|
+
SocketedButton.displayName = 'SocketedButton';
|
|
48
|
+
SocketedButton.defaultProps = {
|
|
49
|
+
children: undefined,
|
|
50
|
+
className: '',
|
|
51
|
+
disabled: false,
|
|
52
|
+
id: undefined,
|
|
53
|
+
isLinked: false,
|
|
54
|
+
isLinkedSource: false,
|
|
55
|
+
isInvalid: false,
|
|
56
|
+
onClick: undefined,
|
|
57
|
+
onMouseEnter: undefined,
|
|
58
|
+
onMouseLeave: undefined,
|
|
59
|
+
style: undefined,
|
|
60
|
+
'data-testid': undefined
|
|
61
|
+
};
|
|
62
|
+
export default SocketedButton;
|
|
63
|
+
//# sourceMappingURL=SocketedButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SocketedButton.js","names":["React","classNames","dhExclamation","vsLink","FontAwesomeIcon","SocketedButton","forwardRef","props","ref","children","className","disabled","id","isLinked","isLinkedSource","isInvalid","onClick","onMouseEnter","onMouseLeave","style","dataTestId","undefined","displayName","defaultProps"],"sources":["../src/SocketedButton.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { dhExclamation, vsLink } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport './SocketedButton.scss';\n\ntype SocketedButtonProps = {\n children?: React.ReactNode;\n className?: string;\n disabled?: boolean;\n id?: string;\n isLinked?: boolean;\n isLinkedSource?: boolean;\n isInvalid?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n style?: React.CSSProperties;\n 'data-testid'?: string;\n};\n\nconst SocketedButton = React.forwardRef<HTMLButtonElement, SocketedButtonProps>(\n (props: SocketedButtonProps, ref) => {\n const {\n children,\n className,\n disabled,\n id,\n isLinked,\n isLinkedSource,\n isInvalid,\n onClick,\n onMouseEnter,\n onMouseLeave,\n style,\n 'data-testid': dataTestId,\n } = props;\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames(\n 'btn-socketed',\n {\n 'btn-socketed-linked':\n (isLinked !== undefined && isLinked) || isLinkedSource,\n },\n { 'btn-socketed-linked-source': isLinkedSource },\n { 'is-invalid': isInvalid },\n className\n )}\n id={id}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n style={style}\n disabled={disabled}\n data-testid={dataTestId}\n >\n {children}\n <FontAwesomeIcon\n icon={vsLink}\n className=\"linked btn-socketed-icon\"\n transform=\"down-1\"\n />\n <FontAwesomeIcon\n icon={dhExclamation}\n className=\"is-invalid btn-socketed-icon\"\n />\n </button>\n );\n }\n);\n\nSocketedButton.displayName = 'SocketedButton';\n\nSocketedButton.defaultProps = {\n children: undefined,\n className: '',\n disabled: false,\n id: undefined,\n isLinked: false,\n isLinkedSource: false,\n isInvalid: false,\n onClick: undefined,\n onMouseEnter: undefined,\n onMouseLeave: undefined,\n style: undefined,\n 'data-testid': undefined,\n};\n\nexport default SocketedButton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,aAAa,EAAEC,MAAM,QAAQ,kBAAkB;AACxD,SAASC,eAAe,QAAQ,gCAAgC;AAAC;AAmBjE,IAAMC,cAAc,gBAAGL,KAAK,CAACM,UAAU,CACrC,CAACC,KAA0B,EAAEC,GAAG,KAAK;EACnC,IAAM;IACJC,QAAQ;IACRC,SAAS;IACTC,QAAQ;IACRC,EAAE;IACFC,QAAQ;IACRC,cAAc;IACdC,SAAS;IACTC,OAAO;IACPC,YAAY;IACZC,YAAY;IACZC,KAAK;IACL,aAAa,EAAEC;EACjB,CAAC,GAAGb,KAAK;EACT,oBACE;IACE,GAAG,EAAEC,GAAI;IACT,IAAI,EAAC,QAAQ;IACb,SAAS,EAAEP,UAAU,CACnB,cAAc,EACd;MACE,qBAAqB,EAClBY,QAAQ,KAAKQ,SAAS,IAAIR,QAAQ,IAAKC;IAC5C,CAAC,EACD;MAAE,4BAA4B,EAAEA;IAAe,CAAC,EAChD;MAAE,YAAY,EAAEC;IAAU,CAAC,EAC3BL,SAAS,CACT;IACF,EAAE,EAAEE,EAAG;IACP,OAAO,EAAEI,OAAQ;IACjB,YAAY,EAAEC,YAAa;IAC3B,YAAY,EAAEC,YAAa;IAC3B,KAAK,EAAEC,KAAM;IACb,QAAQ,EAAER,QAAS;IACnB,eAAaS;EAAW,GAEvBX,QAAQ,eACT,oBAAC,eAAe;IACd,IAAI,EAAEN,MAAO;IACb,SAAS,EAAC,0BAA0B;IACpC,SAAS,EAAC;EAAQ,EAClB,eACF,oBAAC,eAAe;IACd,IAAI,EAAED,aAAc;IACpB,SAAS,EAAC;EAA8B,EACxC,CACK;AAEb,CAAC,CACF;AAEDG,cAAc,CAACiB,WAAW,GAAG,gBAAgB;AAE7CjB,cAAc,CAACkB,YAAY,GAAG;EAC5Bd,QAAQ,EAAEY,SAAS;EACnBX,SAAS,EAAE,EAAE;EACbC,QAAQ,EAAE,KAAK;EACfC,EAAE,EAAES,SAAS;EACbR,QAAQ,EAAE,KAAK;EACfC,cAAc,EAAE,KAAK;EACrBC,SAAS,EAAE,KAAK;EAChBC,OAAO,EAAEK,SAAS;EAClBJ,YAAY,EAAEI,SAAS;EACvBH,YAAY,EAAEG,SAAS;EACvBF,KAAK,EAAEE,SAAS;EAChB,aAAa,EAAEA;AACjB,CAAC;AAED,eAAehB,cAAc"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
This module contains overrides of React Spectrum css variables for the default
|
|
3
|
+
`dark` Deephaven theme.
|
|
4
|
+
*/
|
|
5
|
+
.dh-spectrum-theme--dark.dh-spectrum-theme--dark {
|
|
6
|
+
--spectrum-alias-background-color-default: #1a171a;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/*# sourceMappingURL=SpectrumThemeDark.module.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../src/SpectrumThemeDark.module.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AASA;EACE","file":"SpectrumThemeDark.module.css","sourcesContent":["/**\n This module contains overrides of React Spectrum css variables for the default\n `dark` Deephaven theme.\n*/\n@use '../scss/bootstrap_overrides' as bootstrap;\n@use '../scss/util' as *;\n\n// Doubling specificity to ensure this takes precedence over default Spectrum\n// styles.\n#{multiply-specificity-n('.dh-spectrum-theme--dark', 2)} {\n --spectrum-alias-background-color-default: #{bootstrap.$interfaceblack};\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
This module contains overrides of React Spectrum css variables for the default
|
|
3
|
+
`light` Deephaven theme.
|
|
4
|
+
*/
|
|
5
|
+
.dh-spectrum-theme--light.dh-spectrum-theme--light {
|
|
6
|
+
--spectrum-alias-background-color-default: #f0f0ee;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/*# sourceMappingURL=SpectrumThemeLight.module.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../src/SpectrumThemeLight.module.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AASA;EACE","file":"SpectrumThemeLight.module.css","sourcesContent":["/**\n This module contains overrides of React Spectrum css variables for the default\n `light` Deephaven theme.\n*/\n@use '../scss/bootstrap_overrides' as bootstrap;\n@use '../scss/util' as *;\n\n// Doubling specificity to ensure this takes precedence over default Spectrum\n// styles.\n#{multiply-specificity-n('.dh-spectrum-theme--light', 2)} {\n --spectrum-alias-background-color-default: #{bootstrap.$interfacewhite};\n}\n"]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
3
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
5
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
6
|
+
import { theme } from '@react-spectrum/theme-default';
|
|
7
|
+
import darkDH from "./SpectrumThemeDark.module.css";
|
|
8
|
+
import lightDH from "./SpectrumThemeLight.module.css";
|
|
9
|
+
var {
|
|
10
|
+
global,
|
|
11
|
+
light,
|
|
12
|
+
dark,
|
|
13
|
+
medium,
|
|
14
|
+
large
|
|
15
|
+
} = theme;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Extend light + dark theme variables with DH defaults.
|
|
19
|
+
*
|
|
20
|
+
* A theme is just a mapped collection of css class names that are generated
|
|
21
|
+
* from a collection of css modules.
|
|
22
|
+
*
|
|
23
|
+
* e.g.
|
|
24
|
+
* {
|
|
25
|
+
* global: {
|
|
26
|
+
* spectrum: 'spectrum_9e130c',
|
|
27
|
+
* 'spectrum--medium': 'spectrum--medium_9e130c',
|
|
28
|
+
* 'spectrum--large': 'spectrum--large_9e130c',
|
|
29
|
+
* 'spectrum--darkest': 'spectrum--darkest_9e130c',
|
|
30
|
+
* 'spectrum--dark': 'spectrum--dark_9e130c',
|
|
31
|
+
* 'spectrum--light': 'spectrum--light_9e130c',
|
|
32
|
+
* 'spectrum--lightest': 'spectrum--lightest_9e130c',
|
|
33
|
+
* },
|
|
34
|
+
* light: {
|
|
35
|
+
* 'spectrum--light': 'spectrum--light_a40724',
|
|
36
|
+
* 'dh-spectrum-theme--light': '_dh-spectrum-theme--light_1hblg_22',
|
|
37
|
+
* },
|
|
38
|
+
* dark: {
|
|
39
|
+
* 'spectrum--darkest': 'spectrum--darkest_256eeb',
|
|
40
|
+
* 'dh-spectrum-theme--dark': '_dh-spectrum-theme--dark_f7kge_22',
|
|
41
|
+
* },
|
|
42
|
+
* medium: {
|
|
43
|
+
* 'spectrum--medium': 'spectrum--medium_4b172c',
|
|
44
|
+
* },
|
|
45
|
+
* large: {
|
|
46
|
+
* 'spectrum--large': 'spectrum--large_c40598',
|
|
47
|
+
* },
|
|
48
|
+
* }
|
|
49
|
+
*/
|
|
50
|
+
/* eslint-disable import/prefer-default-export */
|
|
51
|
+
export var themeDHDefault = {
|
|
52
|
+
global,
|
|
53
|
+
light: _objectSpread(_objectSpread({}, light), lightDH),
|
|
54
|
+
dark: _objectSpread(_objectSpread({}, dark), darkDH),
|
|
55
|
+
// scales
|
|
56
|
+
medium,
|
|
57
|
+
large
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=SpectrumUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpectrumUtils.js","names":["theme","darkDH","lightDH","global","light","dark","medium","large","themeDHDefault"],"sources":["../src/SpectrumUtils.ts"],"sourcesContent":["import { theme } from '@react-spectrum/theme-default';\nimport darkDH from './SpectrumThemeDark.module.scss';\nimport lightDH from './SpectrumThemeLight.module.scss';\n\nconst { global, light, dark, medium, large } = theme;\n\n/**\n * Extend light + dark theme variables with DH defaults.\n *\n * A theme is just a mapped collection of css class names that are generated\n * from a collection of css modules.\n *\n * e.g.\n * {\n * global: {\n * spectrum: 'spectrum_9e130c',\n * 'spectrum--medium': 'spectrum--medium_9e130c',\n * 'spectrum--large': 'spectrum--large_9e130c',\n * 'spectrum--darkest': 'spectrum--darkest_9e130c',\n * 'spectrum--dark': 'spectrum--dark_9e130c',\n * 'spectrum--light': 'spectrum--light_9e130c',\n * 'spectrum--lightest': 'spectrum--lightest_9e130c',\n * },\n * light: {\n * 'spectrum--light': 'spectrum--light_a40724',\n * 'dh-spectrum-theme--light': '_dh-spectrum-theme--light_1hblg_22',\n * },\n * dark: {\n * 'spectrum--darkest': 'spectrum--darkest_256eeb',\n * 'dh-spectrum-theme--dark': '_dh-spectrum-theme--dark_f7kge_22',\n * },\n * medium: {\n * 'spectrum--medium': 'spectrum--medium_4b172c',\n * },\n * large: {\n * 'spectrum--large': 'spectrum--large_c40598',\n * },\n * }\n */\n/* eslint-disable import/prefer-default-export */\nexport const themeDHDefault = {\n global,\n light: {\n ...light,\n ...lightDH,\n },\n dark: {\n ...dark,\n ...darkDH,\n },\n // scales\n medium,\n large,\n};\n"],"mappings":";;;;;AAAA,SAASA,KAAK,QAAQ,+BAA+B;AAAC,OAC/CC,MAAM;AAAA,OACNC,OAAO;AAEd,IAAM;EAAEC,MAAM;EAAEC,KAAK;EAAEC,IAAI;EAAEC,MAAM;EAAEC;AAAM,CAAC,GAAGP,KAAK;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMQ,cAAc,GAAG;EAC5BL,MAAM;EACNC,KAAK,kCACAA,KAAK,GACLF,OAAO,CACX;EACDG,IAAI,kCACCA,IAAI,GACJJ,MAAM,CACV;EACD;EACAK,MAAM;EACNC;AACF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
3
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
5
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
6
|
+
import ThemeExport from "./ThemeExport.module.css"; // Note that TypeScript does not know what keys exist on ThemeExport.module.scss
|
|
7
|
+
// It only knows it's an object with strings for keys and values
|
|
8
|
+
var transitions = {
|
|
9
|
+
transitionMs: 150,
|
|
10
|
+
transitionMidMs: 200,
|
|
11
|
+
transitionLongMs: 300,
|
|
12
|
+
transitionSlowMs: 1000
|
|
13
|
+
};
|
|
14
|
+
export default Object.freeze(_objectSpread(_objectSpread({}, transitions), ThemeExport));
|
|
15
|
+
//# sourceMappingURL=ThemeExport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeExport.js","names":["ThemeExport","transitions","transitionMs","transitionMidMs","transitionLongMs","transitionSlowMs","Object","freeze"],"sources":["../src/ThemeExport.ts"],"sourcesContent":["import ThemeExport from './ThemeExport.module.scss';\n\n// Note that TypeScript does not know what keys exist on ThemeExport.module.scss\n// It only knows it's an object with strings for keys and values\n\nconst transitions = {\n transitionMs: 150,\n transitionMidMs: 200,\n transitionLongMs: 300,\n transitionSlowMs: 1000,\n} as const;\n\ntype Theme = {\n [Property in keyof typeof transitions]: typeof transitions[Property];\n} & { [key: string]: string };\n\nexport default Object.freeze({\n ...transitions,\n ...ThemeExport,\n}) as Theme;\n"],"mappings":";;;;;OAAOA,WAAW,kCAElB;AACA;AAEA,IAAMC,WAAW,GAAG;EAClBC,YAAY,EAAE,GAAG;EACjBC,eAAe,EAAE,GAAG;EACpBC,gBAAgB,EAAE,GAAG;EACrBC,gBAAgB,EAAE;AACpB,CAAU;AAMV,eAAeC,MAAM,CAACC,MAAM,iCACvBN,WAAW,GACXD,WAAW,EACd"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/* stylelint-disable */
|
|
2
|
+
/* stylelint-disable scss/at-import-no-partial-leading-underscore */
|
|
3
|
+
:export {
|
|
4
|
+
gray-100: #fcfcfa;
|
|
5
|
+
gray-200: #f0f0ee;
|
|
6
|
+
gray-300: #c0bfbf;
|
|
7
|
+
gray-400: #929192;
|
|
8
|
+
gray-500: #5b5a5c;
|
|
9
|
+
gray-600: #555356;
|
|
10
|
+
gray-700: #403e41;
|
|
11
|
+
gray-800: #373438;
|
|
12
|
+
gray-850: #322f33;
|
|
13
|
+
gray-900: #211f22;
|
|
14
|
+
black: #1a171a;
|
|
15
|
+
white: #f0f0ee;
|
|
16
|
+
yellow: #fcd65b;
|
|
17
|
+
green: #9edc6f;
|
|
18
|
+
blue: #76d9e4;
|
|
19
|
+
purple: #aa9af4;
|
|
20
|
+
orange: #f37e3f;
|
|
21
|
+
red: #f95d84;
|
|
22
|
+
primary: #4878ea;
|
|
23
|
+
primary-hover: #235de6;
|
|
24
|
+
primary-dark: #343e5d;
|
|
25
|
+
secondary: #5b5a5c;
|
|
26
|
+
success: #9edc6f;
|
|
27
|
+
info: #fcd65b;
|
|
28
|
+
warning: #f37e3f;
|
|
29
|
+
danger: #f95d84;
|
|
30
|
+
light: #fcfcfa;
|
|
31
|
+
mid: #929192;
|
|
32
|
+
dark: #373438;
|
|
33
|
+
text-muted: #929192;
|
|
34
|
+
content-bg: #2d2a2e;
|
|
35
|
+
background: #1a171a;
|
|
36
|
+
foreground: #f0f0ee;
|
|
37
|
+
transition: 0.15s;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/*# sourceMappingURL=ThemeExport.module.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../src/ThemeExport.module.scss","../scss/custom.scss","../scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACAA;ADGA;EACE,UEcS;EFbT,UEQe;EFPf,UEcS;EFbT,UEcS;EFbT,UEcS;EFbT,UEcS;EFbT,UEcS;EFbT,UEcS;EFbT,UEcS;EFbT,UEcS;EFbT;EACA,OEFe;EFGf,QEXO;EFYP,OEXM;EFYN,MEXK;EFYL,QEXO;EFYP,QEhBO;EFiBP,KElBI;EFmBJ,SEVc;EFWd,eEgCc;EF/Bd,cEgCa;EF/Bb,WEHS;EFIT,SEpBM;EFqBN,MEtBO;EFuBP,SExBO;EFyBP,QE1BI;EF2BJ,OEZS;EFaT,KEVS;EFWT,MEPS;EFQT,YEZS;EFaT,YEvBc;EFwBd,YErBe;EFsBf,YEvBe;EFwBf,YE4KW","file":"ThemeExport.module.css","sourcesContent":["/* stylelint-disable */\n@import '../scss/custom.scss';\n\n:export {\n gray-100: $gray-100;\n gray-200: $gray-200;\n gray-300: $gray-300;\n gray-400: $gray-400;\n gray-500: $gray-500;\n gray-600: $gray-600;\n gray-700: $gray-700;\n gray-800: $gray-800;\n gray-850: $gray-850;\n gray-900: $gray-900;\n black: $black;\n white: $white;\n yellow: $yellow;\n green: $green;\n blue: $blue;\n purple: $purple;\n orange: $orange;\n red: $red;\n primary: $primary;\n primary-hover: $primary-hover;\n primary-dark: $primary-dark;\n secondary: $secondary;\n success: $success;\n info: $info;\n warning: $warning;\n danger: $danger;\n light: $light;\n mid: $mid;\n dark: $dark;\n text-muted: $text-muted;\n content-bg: $content-bg;\n background: $background;\n foreground: $foreground;\n transition: $transition;\n}\n","/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
2
|
+
import Log from '@deephaven/log';
|
|
3
|
+
import { TimeUtils } from '@deephaven/utils';
|
|
4
|
+
import MaskedInput from "./MaskedInput.js";
|
|
5
|
+
import { DEFAULT_GET_PREFERRED_REPLACEMENT_STRING } from "./MaskedInputUtils.js";
|
|
6
|
+
var log = Log.module('TimeInput');
|
|
7
|
+
var TIME_PATTERN = '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]';
|
|
8
|
+
var EXAMPLES = ['00:00:00', '12:34:56', '23:59:59'];
|
|
9
|
+
// Forward ref causes a false positive for display-name in eslint:
|
|
10
|
+
// https://github.com/yannickcr/eslint-plugin-react/issues/2269
|
|
11
|
+
// eslint-disable-next-line react/display-name
|
|
12
|
+
var TimeInput = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
13
|
+
var {
|
|
14
|
+
allowValueWrapping = true,
|
|
15
|
+
className = '',
|
|
16
|
+
onChange = () => false,
|
|
17
|
+
value: propsValue = 0,
|
|
18
|
+
onFocus = () => false,
|
|
19
|
+
onBlur = () => false,
|
|
20
|
+
onSelect = () => false,
|
|
21
|
+
'data-testid': dataTestId
|
|
22
|
+
} = props;
|
|
23
|
+
var [value, setValue] = useState(TimeUtils.formatTime(propsValue));
|
|
24
|
+
var [selection, _setSelection] = useState();
|
|
25
|
+
var inputRef = useRef(null);
|
|
26
|
+
useImperativeHandle(ref, () => ({
|
|
27
|
+
focus: () => {
|
|
28
|
+
var _inputRef$current;
|
|
29
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
|
30
|
+
},
|
|
31
|
+
setSelection: newSelection => {
|
|
32
|
+
var _inputRef$current2;
|
|
33
|
+
(_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();
|
|
34
|
+
_setSelection(newSelection);
|
|
35
|
+
}
|
|
36
|
+
}), []);
|
|
37
|
+
useEffect(function setFormattedTime() {
|
|
38
|
+
setValue(TimeUtils.formatTime(propsValue));
|
|
39
|
+
}, [propsValue]);
|
|
40
|
+
function getNextSegmentValue(range, delta, segmentValue) {
|
|
41
|
+
// Delta is backward because negative Y is up
|
|
42
|
+
var maxValue = range.selectionStart === 0 ? 24 : 60;
|
|
43
|
+
var newSegmentValue = parseInt(segmentValue, 10) - delta;
|
|
44
|
+
if (Number.isNaN(newSegmentValue)) {
|
|
45
|
+
newSegmentValue = 0;
|
|
46
|
+
} else if (allowValueWrapping) {
|
|
47
|
+
// Add max value and re-mod so we don't get negative values after mod
|
|
48
|
+
newSegmentValue = (newSegmentValue % maxValue + maxValue) % maxValue;
|
|
49
|
+
} else {
|
|
50
|
+
newSegmentValue = Math.min(Math.max(0, newSegmentValue), maxValue - 1);
|
|
51
|
+
}
|
|
52
|
+
return "".concat(newSegmentValue).padStart(2, '0');
|
|
53
|
+
}
|
|
54
|
+
function getPreferredReplacementString(replaceValue, replaceIndex, newChar, selectionStart, selectionEnd) {
|
|
55
|
+
if (selectionStart === 0 && selectionEnd === 2 && replaceIndex === 1 && parseInt(newChar, 10) > 1) {
|
|
56
|
+
// DH-10082 Special case for when typing `3` when it's already 12
|
|
57
|
+
return "0".concat(newChar).concat(replaceValue.substring(2));
|
|
58
|
+
}
|
|
59
|
+
return DEFAULT_GET_PREFERRED_REPLACEMENT_STRING(replaceValue, replaceIndex, newChar);
|
|
60
|
+
}
|
|
61
|
+
function handleChange(newValue) {
|
|
62
|
+
log.debug('handleChange', newValue);
|
|
63
|
+
setValue(newValue);
|
|
64
|
+
|
|
65
|
+
// Only send a change if the value is actually valid
|
|
66
|
+
if (TimeUtils.isTimeString(newValue)) {
|
|
67
|
+
onChange(TimeUtils.parseTime(newValue));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
var handleSelect = useCallback(newSelection => {
|
|
71
|
+
_setSelection(newSelection);
|
|
72
|
+
onSelect(newSelection);
|
|
73
|
+
}, [onSelect]);
|
|
74
|
+
return /*#__PURE__*/React.createElement(MaskedInput, {
|
|
75
|
+
ref: inputRef,
|
|
76
|
+
className: className,
|
|
77
|
+
example: EXAMPLES,
|
|
78
|
+
getNextSegmentValue: getNextSegmentValue,
|
|
79
|
+
getPreferredReplacementString: getPreferredReplacementString,
|
|
80
|
+
onChange: handleChange,
|
|
81
|
+
onSelect: handleSelect,
|
|
82
|
+
pattern: TIME_PATTERN,
|
|
83
|
+
selection: selection,
|
|
84
|
+
value: value,
|
|
85
|
+
onFocus: onFocus,
|
|
86
|
+
onBlur: onBlur,
|
|
87
|
+
"data-testid": dataTestId
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
TimeInput.defaultProps = {
|
|
91
|
+
allowValueWrapping: true,
|
|
92
|
+
className: '',
|
|
93
|
+
onChange: () => false,
|
|
94
|
+
onSelect: () => false,
|
|
95
|
+
value: 0,
|
|
96
|
+
onFocus: () => false,
|
|
97
|
+
onBlur: () => false,
|
|
98
|
+
'data-testid': undefined
|
|
99
|
+
};
|
|
100
|
+
export default TimeInput;
|
|
101
|
+
//# sourceMappingURL=TimeInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeInput.js","names":["React","useCallback","useEffect","useImperativeHandle","useRef","useState","Log","TimeUtils","MaskedInput","DEFAULT_GET_PREFERRED_REPLACEMENT_STRING","log","module","TIME_PATTERN","EXAMPLES","TimeInput","forwardRef","props","ref","allowValueWrapping","className","onChange","value","propsValue","onFocus","onBlur","onSelect","dataTestId","setValue","formatTime","selection","setSelection","inputRef","focus","current","newSelection","setFormattedTime","getNextSegmentValue","range","delta","segmentValue","maxValue","selectionStart","newSegmentValue","parseInt","Number","isNaN","Math","min","max","padStart","getPreferredReplacementString","replaceValue","replaceIndex","newChar","selectionEnd","substring","handleChange","newValue","debug","isTimeString","parseTime","handleSelect","defaultProps","undefined"],"sources":["../src/TimeInput.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport Log from '@deephaven/log';\nimport { TimeUtils } from '@deephaven/utils';\nimport MaskedInput, { SelectionSegment } from './MaskedInput';\nimport { DEFAULT_GET_PREFERRED_REPLACEMENT_STRING } from './MaskedInputUtils';\n\nexport type { SelectionSegment } from './MaskedInput';\n\nconst log = Log.module('TimeInput');\n\nconst TIME_PATTERN = '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]';\nconst EXAMPLES = ['00:00:00', '12:34:56', '23:59:59'];\n\ntype TimeInputProps = {\n allowValueWrapping?: boolean;\n className?: string;\n onChange?(timeInSec: number): void;\n onSelect?(selection: SelectionSegment): void;\n value?: number;\n onFocus?(): void;\n onBlur?(): void;\n 'data-testid'?: string;\n};\n\nexport type TimeInputElement = {\n focus: () => void;\n setSelection: (newSelection: SelectionSegment) => void;\n};\n\n// Forward ref causes a false positive for display-name in eslint:\n// https://github.com/yannickcr/eslint-plugin-react/issues/2269\n// eslint-disable-next-line react/display-name\nconst TimeInput = React.forwardRef<TimeInputElement, TimeInputProps>(\n (props: TimeInputProps, ref) => {\n const {\n allowValueWrapping = true,\n className = '',\n onChange = () => false,\n value: propsValue = 0,\n onFocus = () => false,\n onBlur = () => false,\n onSelect = () => false,\n 'data-testid': dataTestId,\n } = props;\n const [value, setValue] = useState(TimeUtils.formatTime(propsValue));\n const [selection, setSelection] = useState<SelectionSegment>();\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: () => {\n inputRef.current?.focus();\n },\n setSelection: newSelection => {\n inputRef.current?.focus();\n setSelection(newSelection);\n },\n }),\n []\n );\n\n useEffect(\n function setFormattedTime() {\n setValue(TimeUtils.formatTime(propsValue));\n },\n [propsValue]\n );\n\n function getNextSegmentValue(\n range: SelectionSegment,\n delta: number,\n segmentValue: string\n ): string {\n // Delta is backward because negative Y is up\n const maxValue = range.selectionStart === 0 ? 24 : 60;\n let newSegmentValue = parseInt(segmentValue, 10) - delta;\n if (Number.isNaN(newSegmentValue)) {\n newSegmentValue = 0;\n } else if (allowValueWrapping) {\n // Add max value and re-mod so we don't get negative values after mod\n newSegmentValue = ((newSegmentValue % maxValue) + maxValue) % maxValue;\n } else {\n newSegmentValue = Math.min(Math.max(0, newSegmentValue), maxValue - 1);\n }\n return `${newSegmentValue}`.padStart(2, '0');\n }\n\n function getPreferredReplacementString(\n replaceValue: string,\n replaceIndex: number,\n newChar: string,\n selectionStart: number,\n selectionEnd: number\n ) {\n if (\n selectionStart === 0 &&\n selectionEnd === 2 &&\n replaceIndex === 1 &&\n parseInt(newChar, 10) > 1\n ) {\n // DH-10082 Special case for when typing `3` when it's already 12\n return `0${newChar}${replaceValue.substring(2)}`;\n }\n return DEFAULT_GET_PREFERRED_REPLACEMENT_STRING(\n replaceValue,\n replaceIndex,\n newChar\n );\n }\n\n function handleChange(newValue: string): void {\n log.debug('handleChange', newValue);\n setValue(newValue);\n\n // Only send a change if the value is actually valid\n if (TimeUtils.isTimeString(newValue)) {\n onChange(TimeUtils.parseTime(newValue));\n }\n }\n\n const handleSelect = useCallback(\n (newSelection: SelectionSegment) => {\n setSelection(newSelection);\n onSelect(newSelection);\n },\n [onSelect]\n );\n\n return (\n <MaskedInput\n ref={inputRef}\n className={className}\n example={EXAMPLES}\n getNextSegmentValue={getNextSegmentValue}\n getPreferredReplacementString={getPreferredReplacementString}\n onChange={handleChange}\n onSelect={handleSelect}\n pattern={TIME_PATTERN}\n selection={selection}\n value={value}\n onFocus={onFocus}\n onBlur={onBlur}\n data-testid={dataTestId}\n />\n );\n }\n);\n\nTimeInput.defaultProps = {\n allowValueWrapping: true,\n className: '',\n onChange: () => false,\n onSelect: () => false,\n value: 0,\n onFocus: () => false,\n onBlur: () => false,\n 'data-testid': undefined,\n};\n\nexport default TimeInput;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/* stylelint-disable scss/at-import-no-partial-leading-underscore */
|
|
2
|
+
.time-slider {
|
|
3
|
+
width: 100%;
|
|
4
|
+
padding-bottom: 1rem;
|
|
5
|
+
overflow: hidden;
|
|
6
|
+
}
|
|
7
|
+
.time-slider .time-slider-popovers {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: row;
|
|
10
|
+
margin: 0 4px;
|
|
11
|
+
}
|
|
12
|
+
.time-slider .time-slider-popovers .handle-popper {
|
|
13
|
+
padding: 0.5rem;
|
|
14
|
+
width: 90px;
|
|
15
|
+
border-radius: 4px;
|
|
16
|
+
background: #403e41;
|
|
17
|
+
flex-shrink: 0;
|
|
18
|
+
text-align: center;
|
|
19
|
+
margin: 0 1px;
|
|
20
|
+
}
|
|
21
|
+
.time-slider .time-slider-popovers .handle-popper input {
|
|
22
|
+
padding: 0.375rem 0;
|
|
23
|
+
text-align: center;
|
|
24
|
+
}
|
|
25
|
+
.time-slider .time-slider-popovers .flex-spacer {
|
|
26
|
+
margin-left: auto;
|
|
27
|
+
margin-right: auto;
|
|
28
|
+
}
|
|
29
|
+
.time-slider .track {
|
|
30
|
+
margin: 4px;
|
|
31
|
+
height: 15px;
|
|
32
|
+
background: #5b5a5c;
|
|
33
|
+
border-radius: 7.5px;
|
|
34
|
+
position: relative;
|
|
35
|
+
}
|
|
36
|
+
.time-slider .track .track-fills {
|
|
37
|
+
position: absolute;
|
|
38
|
+
top: 0;
|
|
39
|
+
left: 0;
|
|
40
|
+
width: 100%;
|
|
41
|
+
height: 100%;
|
|
42
|
+
border-radius: 7.5px;
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
}
|
|
45
|
+
.time-slider .track .track-fills .track-fill {
|
|
46
|
+
border-radius: 7.5px;
|
|
47
|
+
background: #343e5d;
|
|
48
|
+
height: 100%;
|
|
49
|
+
width: 100%;
|
|
50
|
+
position: absolute;
|
|
51
|
+
top: 0;
|
|
52
|
+
left: 0;
|
|
53
|
+
}
|
|
54
|
+
.time-slider .track .track-fills .track-fill-start,
|
|
55
|
+
.time-slider .track .track-fills .track-fill-middle {
|
|
56
|
+
transform-origin: 0 0;
|
|
57
|
+
}
|
|
58
|
+
.time-slider .track .track-fills .track-fill-end {
|
|
59
|
+
transform-origin: 100% 0;
|
|
60
|
+
}
|
|
61
|
+
.time-slider .track .handle-track {
|
|
62
|
+
position: absolute;
|
|
63
|
+
width: 100%;
|
|
64
|
+
height: 15px;
|
|
65
|
+
top: 0;
|
|
66
|
+
left: 0;
|
|
67
|
+
pointer-events: none;
|
|
68
|
+
}
|
|
69
|
+
.time-slider .track .handle-track:focus-within {
|
|
70
|
+
z-index: 2;
|
|
71
|
+
}
|
|
72
|
+
.time-slider .track .handle-track .handle {
|
|
73
|
+
display: block;
|
|
74
|
+
height: 15px;
|
|
75
|
+
width: 15px;
|
|
76
|
+
border-radius: 50%;
|
|
77
|
+
position: absolute;
|
|
78
|
+
top: 0;
|
|
79
|
+
left: 0;
|
|
80
|
+
padding: 0;
|
|
81
|
+
background: #c0bfbf;
|
|
82
|
+
border: 1px solid transparent;
|
|
83
|
+
transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out, border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out;
|
|
84
|
+
cursor: grab;
|
|
85
|
+
pointer-events: all;
|
|
86
|
+
}
|
|
87
|
+
.time-slider .track .handle-track .handle:hover {
|
|
88
|
+
background: #fcfcfa;
|
|
89
|
+
}
|
|
90
|
+
.time-slider .track .handle-track .handle:focus {
|
|
91
|
+
background: #fcfcfa;
|
|
92
|
+
outline: 0;
|
|
93
|
+
border: 1px solid rgba(72, 120, 234, 0.85);
|
|
94
|
+
box-shadow: 0 0 0 0.2rem rgba(72, 120, 234, 0.35);
|
|
95
|
+
transform: scale(1.15);
|
|
96
|
+
}
|
|
97
|
+
.time-slider .track .ticks {
|
|
98
|
+
height: 100%;
|
|
99
|
+
width: 100%;
|
|
100
|
+
position: absolute;
|
|
101
|
+
top: 0;
|
|
102
|
+
left: 0;
|
|
103
|
+
display: flex;
|
|
104
|
+
flex-direction: row;
|
|
105
|
+
}
|
|
106
|
+
.time-slider .track .ticks div {
|
|
107
|
+
display: block;
|
|
108
|
+
width: 4.1666666667%;
|
|
109
|
+
height: 15px;
|
|
110
|
+
border-right: 1px solid #211f22;
|
|
111
|
+
}
|
|
112
|
+
.time-slider .track .ticks div:last-child {
|
|
113
|
+
border-right: none;
|
|
114
|
+
}
|
|
115
|
+
.time-slider .tick-labels {
|
|
116
|
+
position: relative;
|
|
117
|
+
width: 100%;
|
|
118
|
+
user-select: none;
|
|
119
|
+
color: #c0bfbf;
|
|
120
|
+
display: flex;
|
|
121
|
+
flex-direction: row;
|
|
122
|
+
flex-wrap: wrap;
|
|
123
|
+
height: 1.5rem;
|
|
124
|
+
overflow: hidden;
|
|
125
|
+
}
|
|
126
|
+
.time-slider .tick-labels .tick-label {
|
|
127
|
+
width: 4.1666666667%;
|
|
128
|
+
text-align: left;
|
|
129
|
+
font-size: 0.9rem;
|
|
130
|
+
}
|
|
131
|
+
.time-slider .tick-labels .tick-label-wrapper {
|
|
132
|
+
width: 95.8333333333%;
|
|
133
|
+
min-width: 300px;
|
|
134
|
+
margin-left: -2.0833333333%;
|
|
135
|
+
display: flex;
|
|
136
|
+
}
|
|
137
|
+
.time-slider .tick-labels .tick-label-wrapper .tick-label {
|
|
138
|
+
text-align: center;
|
|
139
|
+
visibility: hidden;
|
|
140
|
+
width: 4.347826087%;
|
|
141
|
+
}
|
|
142
|
+
.time-slider .tick-labels .tick-label-wrapper .tick-label::before {
|
|
143
|
+
content: "";
|
|
144
|
+
margin-left: -100%;
|
|
145
|
+
}
|
|
146
|
+
.time-slider .tick-labels .tick-label-wrapper .tick-label::after {
|
|
147
|
+
content: "";
|
|
148
|
+
margin-right: -100%;
|
|
149
|
+
}
|
|
150
|
+
.time-slider .tick-labels .tick-label-wrapper .tick-label:nth-child(4),
|
|
151
|
+
.time-slider .tick-labels .tick-label-wrapper .tick-label:nth-child(8),
|
|
152
|
+
.time-slider .tick-labels .tick-label-wrapper .tick-label:nth-child(12),
|
|
153
|
+
.time-slider .tick-labels .tick-label-wrapper .tick-label:nth-child(16),
|
|
154
|
+
.time-slider .tick-labels .tick-label-wrapper .tick-label:nth-child(20),
|
|
155
|
+
.time-slider .tick-labels .tick-label-wrapper .tick-label:nth-child(24) {
|
|
156
|
+
visibility: visible;
|
|
157
|
+
}
|
|
158
|
+
.time-slider .tick-labels .tick-label-wrapper div:nth-child(12) {
|
|
159
|
+
position: absolute;
|
|
160
|
+
top: 0;
|
|
161
|
+
left: 47.8260869565%;
|
|
162
|
+
}
|
|
163
|
+
.time-slider .tick-labels .tick-label-wrapper div:nth-child(13) {
|
|
164
|
+
margin-left: 4.1666666667%;
|
|
165
|
+
}
|
|
166
|
+
.time-slider .tick-labels .tick-label-wrapper div:nth-child(24) {
|
|
167
|
+
position: absolute;
|
|
168
|
+
direction: rtl;
|
|
169
|
+
top: 0;
|
|
170
|
+
right: 0;
|
|
171
|
+
text-align: right;
|
|
172
|
+
}
|
|
173
|
+
.time-slider .tick-labels .tick-label-wrapper div:nth-child(24)::before, .time-slider .tick-labels .tick-label-wrapper div:nth-child(24)::after {
|
|
174
|
+
content: unset;
|
|
175
|
+
margin: unset;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/*# sourceMappingURL=TimeSlider.css.map */
|