@teselagen/ui 0.0.11 → 0.0.12

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 (125) hide show
  1. package/README.md +7 -0
  2. package/cypress.config.ts +6 -0
  3. package/index.html +12 -0
  4. package/package.json +2 -2
  5. package/project.json +74 -0
  6. package/src/AdvancedOptions.js +33 -0
  7. package/src/AdvancedOptions.spec.js +24 -0
  8. package/src/AssignDefaultsModeContext.js +21 -0
  9. package/src/AsyncValidateFieldSpinner/index.js +12 -0
  10. package/src/BlueprintError/index.js +14 -0
  11. package/src/BounceLoader/index.js +16 -0
  12. package/src/BounceLoader/style.css +45 -0
  13. package/src/CollapsibleCard/index.js +92 -0
  14. package/src/CollapsibleCard/style.css +21 -0
  15. package/src/DNALoader/index.js +20 -0
  16. package/src/DNALoader/style.css +251 -0
  17. package/src/DataTable/CellDragHandle.js +130 -0
  18. package/src/DataTable/DisabledLoadingComponent.js +15 -0
  19. package/src/DataTable/DisplayOptions.js +218 -0
  20. package/src/DataTable/FilterAndSortMenu.js +397 -0
  21. package/src/DataTable/PagingTool.js +232 -0
  22. package/src/DataTable/SearchBar.js +57 -0
  23. package/src/DataTable/SortableColumns.js +53 -0
  24. package/src/DataTable/TableFormTrackerContext.js +10 -0
  25. package/src/DataTable/dataTableEnhancer.js +291 -0
  26. package/src/DataTable/defaultFormatters.js +32 -0
  27. package/src/DataTable/defaultProps.js +45 -0
  28. package/src/DataTable/defaultValidators.js +40 -0
  29. package/src/DataTable/editCellHelper.js +44 -0
  30. package/src/DataTable/getCellVal.js +20 -0
  31. package/src/DataTable/getVals.js +8 -0
  32. package/src/DataTable/index.js +3537 -0
  33. package/src/DataTable/isTruthy.js +12 -0
  34. package/src/DataTable/isValueEmpty.js +3 -0
  35. package/src/DataTable/style.css +600 -0
  36. package/src/DataTable/utils/computePresets.js +42 -0
  37. package/src/DataTable/utils/convertSchema.js +69 -0
  38. package/src/DataTable/utils/getIdOrCodeOrIndex.js +9 -0
  39. package/src/DataTable/utils/getTableConfigFromStorage.js +5 -0
  40. package/src/DataTable/utils/queryParams.js +1032 -0
  41. package/src/DataTable/utils/rowClick.js +156 -0
  42. package/src/DataTable/utils/selection.js +8 -0
  43. package/src/DataTable/utils/withSelectedEntities.js +65 -0
  44. package/src/DataTable/utils/withTableParams.js +328 -0
  45. package/src/DataTable/validateTableWideErrors.js +135 -0
  46. package/src/DataTable/viewColumn.js +37 -0
  47. package/src/DialogFooter/index.js +79 -0
  48. package/src/DialogFooter/style.css +9 -0
  49. package/src/DropdownButton.js +36 -0
  50. package/src/FillWindow.css +6 -0
  51. package/src/FillWindow.js +69 -0
  52. package/src/FormComponents/Uploader.js +1197 -0
  53. package/src/FormComponents/getNewName.js +31 -0
  54. package/src/FormComponents/index.js +1384 -0
  55. package/src/FormComponents/itemUpload.js +84 -0
  56. package/src/FormComponents/sortify.js +73 -0
  57. package/src/FormComponents/style.css +247 -0
  58. package/src/FormComponents/tryToMatchSchemas.js +222 -0
  59. package/src/FormComponents/utils.js +6 -0
  60. package/src/HotkeysDialog/index.js +79 -0
  61. package/src/HotkeysDialog/style.css +54 -0
  62. package/src/InfoHelper/index.js +83 -0
  63. package/src/InfoHelper/style.css +7 -0
  64. package/src/IntentText/index.js +18 -0
  65. package/src/Loading/index.js +74 -0
  66. package/src/Loading/style.css +4 -0
  67. package/src/MatchHeaders.js +223 -0
  68. package/src/MenuBar/index.js +416 -0
  69. package/src/MenuBar/style.css +45 -0
  70. package/src/PromptUnsavedChanges/index.js +40 -0
  71. package/src/ResizableDraggableDialog/index.js +138 -0
  72. package/src/ResizableDraggableDialog/style.css +42 -0
  73. package/src/ScrollToTop/index.js +72 -0
  74. package/src/SimpleStepViz.js +26 -0
  75. package/src/TgSelect/index.js +465 -0
  76. package/src/TgSelect/style.css +34 -0
  77. package/src/TgSuggest/index.js +121 -0
  78. package/src/Timeline/TimelineEvent.js +31 -0
  79. package/src/Timeline/index.js +22 -0
  80. package/src/Timeline/style.css +29 -0
  81. package/src/UploadCsvWizard.css +4 -0
  82. package/src/UploadCsvWizard.js +731 -0
  83. package/src/autoTooltip.js +89 -0
  84. package/src/constants.js +1 -0
  85. package/src/customIcons.js +361 -0
  86. package/src/enhancers/withDialog/index.js +196 -0
  87. package/src/enhancers/withDialog/tg_modalState.js +46 -0
  88. package/src/enhancers/withField.js +20 -0
  89. package/src/enhancers/withFields.js +11 -0
  90. package/src/enhancers/withLocalStorage.js +11 -0
  91. package/src/index.js +76 -0
  92. package/src/rerenderOnWindowResize.js +27 -0
  93. package/src/showAppSpinner.js +12 -0
  94. package/src/showConfirmationDialog/index.js +116 -0
  95. package/src/showDialogOnDocBody.js +37 -0
  96. package/src/style.css +214 -0
  97. package/src/toastr.js +92 -0
  98. package/src/typeToCommonType.js +6 -0
  99. package/src/useDialog.js +64 -0
  100. package/src/utils/S3Download.js +14 -0
  101. package/src/utils/adHoc.js +10 -0
  102. package/src/utils/basicHandleActionsWithFullState.js +14 -0
  103. package/src/utils/combineReducersWithFullState.js +14 -0
  104. package/src/utils/commandControls.js +83 -0
  105. package/src/utils/commandUtils.js +112 -0
  106. package/src/utils/determineBlackOrWhiteTextColor.js +4 -0
  107. package/src/utils/getDayjsFormatter.js +35 -0
  108. package/src/utils/getTextFromEl.js +28 -0
  109. package/src/utils/handlerHelpers.js +30 -0
  110. package/src/utils/hotkeyUtils.js +129 -0
  111. package/src/utils/menuUtils.js +402 -0
  112. package/src/utils/popoverOverflowModifiers.js +11 -0
  113. package/src/utils/pureNoFunc.js +31 -0
  114. package/src/utils/renderOnDoc.js +29 -0
  115. package/src/utils/showProgressToast.js +22 -0
  116. package/src/utils/tagUtils.js +45 -0
  117. package/src/utils/tgFormValues.js +32 -0
  118. package/src/utils/withSelectTableRecords.js +38 -0
  119. package/src/utils/withStore.js +10 -0
  120. package/src/wrapDialog.js +112 -0
  121. package/tsconfig.json +4 -0
  122. package/vite.config.ts +7 -0
  123. package/index.mjs +0 -109378
  124. package/index.umd.js +0 -109381
  125. package/style.css +0 -10421
@@ -0,0 +1,121 @@
1
+ import { Suggest } from "@blueprintjs/select";
2
+ import { Keys } from "@blueprintjs/core";
3
+ import React from "react";
4
+ import classNames from "classnames";
5
+ import { itemListPredicate } from "../TgSelect";
6
+
7
+ class TgSuggest extends React.Component {
8
+ static defaultProps = {
9
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
10
+ onChange: () => {},
11
+ options: [],
12
+ value: undefined
13
+ };
14
+ itemRenderer = (i = "", { index, handleClick, modifiers }) => {
15
+ return (
16
+ <div //we specifically don't use a BP MenuItem component here because the menu item is too slow when 100s are loaded and will cause the component to lag
17
+ onClick={handleClick}
18
+ key={index}
19
+ className={classNames(
20
+ "tg-select-option bp3-menu-item bp3-fill bp3-text-overflow-ellipsis",
21
+ {
22
+ "bp3-active": modifiers.active
23
+ }
24
+ )}
25
+ >
26
+ {i}
27
+ </div>
28
+ );
29
+ };
30
+
31
+ handleItemSelect = item => {
32
+ const { onChange } = this.props;
33
+ this.input && this.input.blur();
34
+ return onChange(item);
35
+ };
36
+
37
+ itemListPredicate = (queryString, item) => {
38
+ const { isSimpleSearch } = this.props;
39
+ return itemListPredicate(queryString, item, isSimpleSearch);
40
+ };
41
+
42
+ onQueryChange = query => {
43
+ const { onChange } = this.props;
44
+ onChange(query);
45
+ };
46
+
47
+ renderInputValue = item => item;
48
+
49
+ render() {
50
+ const {
51
+ multi,
52
+ options,
53
+ notCreateable,
54
+ value,
55
+ optionRenderer, //pull this one out here so it doesn't get passsed along
56
+ noResultsText,
57
+ inputProps,
58
+ placeholder,
59
+ isLoading,
60
+ onBlur,
61
+ disabled,
62
+ popoverProps,
63
+ ...rest
64
+ } = this.props;
65
+
66
+ return (
67
+ <Suggest
68
+ closeOnSelect
69
+ items={options || []}
70
+ query={value}
71
+ popoverProps={{
72
+ minimal: true,
73
+ className: classNames("tg-select", {
74
+ "tg-single-select": !multi
75
+ }),
76
+ wrapperTagName: "div",
77
+ usePortal: false,
78
+ canEscapeKeyClose: true,
79
+ ...popoverProps
80
+ }}
81
+ onKeyDown={e => {
82
+ const { which } = e;
83
+ if (which === Keys.ENTER) {
84
+ e.preventDefault();
85
+ e.stopPropagation(); //this prevents the dialog it is in from closing
86
+ }
87
+ if (which === Keys.ESCAPE || which === Keys.TAB) {
88
+ // By default the escape key will not trigger a blur on the
89
+ // input element. It must be done explicitly.
90
+ if (this.input != null) {
91
+ this.input.blur();
92
+ }
93
+ e.preventDefault();
94
+ e.stopPropagation(); //this prevents dialog's it is in from closing
95
+ }
96
+ }}
97
+ {...{
98
+ onItemSelect: this.handleItemSelect,
99
+ noResults: null,
100
+ resetOnSelect: false,
101
+ onQueryChange: this.onQueryChange,
102
+ itemRenderer: this.itemRenderer,
103
+ itemListPredicate: this.itemListPredicate,
104
+ selectedItem: value,
105
+ inputValueRenderer: this.renderInputValue,
106
+ inputProps: {
107
+ inputRef: n => {
108
+ if (n) this.input = n;
109
+ },
110
+ placeholder: placeholder || "Type here...",
111
+ disabled: disabled, // tg: adding isLoading will cause the input to be blurred when using generic select asReactSelect (don't do it),
112
+ intent: this.props.intent,
113
+ ...inputProps
114
+ },
115
+ ...rest
116
+ }}
117
+ />
118
+ );
119
+ }
120
+ }
121
+ export default TgSuggest;
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ import dayjs from "dayjs";
3
+ import { Classes } from "@blueprintjs/core";
4
+ import classNames from "classnames";
5
+ import relativeTime from "dayjs/plugin/relativeTime";
6
+
7
+ dayjs.extend(relativeTime);
8
+
9
+ function TimelineEvent({ date, children }) {
10
+ return (
11
+ <div className="tg-timeline-event">
12
+ <div
13
+ style={{
14
+ display: "flex",
15
+ alignItems: "center"
16
+ }}
17
+ >
18
+ <div className="tg-timeline-circle" />
19
+ {children}
20
+ <div
21
+ style={{ marginLeft: 5 }}
22
+ className={classNames(Classes.TEXT_SMALL, Classes.TEXT_MUTED)}
23
+ >
24
+ ({dayjs(date).fromNow()})
25
+ </div>
26
+ </div>
27
+ </div>
28
+ );
29
+ }
30
+
31
+ export default TimelineEvent;
@@ -0,0 +1,22 @@
1
+ import React, { Component } from "react";
2
+ import PropTypes from "prop-types";
3
+ import "./style.css";
4
+
5
+ class Timeline extends Component {
6
+ static propTypes = {
7
+ children: PropTypes.arrayOf(PropTypes.element)
8
+ };
9
+
10
+ render() {
11
+ return (
12
+ <div className="tg-timeline">
13
+ {this.props.children.length > 1 && <div className="tg-timeline-line" />}
14
+ {this.props.children}
15
+ </div>
16
+ );
17
+ }
18
+ }
19
+
20
+ export { default as TimelineEvent } from "./TimelineEvent";
21
+
22
+ export default Timeline;
@@ -0,0 +1,29 @@
1
+ /* Copyright (C) 2018 TeselaGen Biotechnology, Inc. */
2
+ .tg-timeline {
3
+ position: relative;
4
+ white-space: nowrap;
5
+ }
6
+
7
+ .tg-timeline-line {
8
+ position: absolute;
9
+ height: 90%;
10
+ border-left: 2px solid #bfccd6;
11
+ top: 3px;
12
+ left: 5px;
13
+ }
14
+
15
+ .tg-timeline-event {
16
+ margin-bottom: 15px;
17
+ }
18
+
19
+ .tg-timeline-circle {
20
+ width: 12px;
21
+ min-width: 12px;
22
+ height: 12px;
23
+ min-height: 12px;
24
+ z-index: 1;
25
+ margin-right: 10px;
26
+ border-radius: 100px;
27
+ background: #e1e8ed;
28
+ border: 2px solid #137cbd;
29
+ }
@@ -0,0 +1,4 @@
1
+ .rg-celleditor-input,
2
+ .rg-celleditor input {
3
+ border: none;
4
+ }