dce-reactkit 3.2.2-beta.6 → 3.2.2-beta.8

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.
@@ -7,6 +7,7 @@ declare type Props = {
7
7
  label: string;
8
8
  minLabelWidth?: string;
9
9
  children: React.ReactNode;
10
+ className?: string;
10
11
  };
11
12
  declare const ButtonInputGroup: React.FC<Props>;
12
13
  export default ButtonInputGroup;
package/dist/index.d.ts CHANGED
@@ -242,6 +242,7 @@ declare type Props$a = {
242
242
  label: string;
243
243
  minLabelWidth?: string;
244
244
  children: React.ReactNode;
245
+ className?: string;
245
246
  };
246
247
  declare const ButtonInputGroup: React.FC<Props$a>;
247
248
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dce-reactkit",
3
- "version": "3.2.2-beta.6",
3
+ "version": "3.2.2-beta.8",
4
4
  "description": "Shared components for Harvard DCE apps",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -18,6 +18,8 @@ type Props = {
18
18
  minLabelWidth?: string,
19
19
  // Buttons
20
20
  children: React.ReactNode,
21
+ // Additional class names to add to the outer container
22
+ className?: string,
21
23
  };
22
24
 
23
25
  /*------------------------------------------------------------------------*/
@@ -36,6 +38,7 @@ const ButtonInputGroup: React.FC<Props> = (props) => {
36
38
  label,
37
39
  minLabelWidth,
38
40
  children,
41
+ className,
39
42
  } = props;
40
43
 
41
44
  /*------------------------------------------------------------------------*/
@@ -47,7 +50,7 @@ const ButtonInputGroup: React.FC<Props> = (props) => {
47
50
  /*----------------------------------------*/
48
51
 
49
52
  return (
50
- <div className="input-group">
53
+ <div className={`input-group ${className ?? ''}`}>
51
54
  <div className="input-group-prepend d-flex w-100">
52
55
  {/* Label */}
53
56
  <span
@@ -302,14 +302,14 @@ const IntelliTable: React.FC<Props> = (props) => {
302
302
  >
303
303
  <div className="d-flex align-items-center justify-content-center flex-row h-100">
304
304
  {/* Title */}
305
- <h4 className="m-0">
305
+ <span className="text-nowrap">
306
306
  {column.title}
307
- </h4>
307
+ </span>
308
308
  {/* Buttons */}
309
309
  <div>
310
310
  <button
311
311
  type="button"
312
- className="btn btn-light"
312
+ className="btn btn-light btn-sm ms-1"
313
313
  aria-label={sortButtonAriaLabel}
314
314
  onClick={() => {
315
315
  dispatch({
@@ -567,7 +567,7 @@ const IntelliTable: React.FC<Props> = (props) => {
567
567
  {/* Show/Hide Columns */}
568
568
  <button
569
569
  type="button"
570
- className="btn btn-secondary"
570
+ className="btn btn-secondary ms-2"
571
571
  aria-label={`show panel for customizing which columns show in table ${title}`}
572
572
  id={`IntelliTable-${id}-show-column-customization-modal`}
573
573
  onClick={() => {
@@ -206,6 +206,11 @@ const style = `
206
206
  border: 0.05rem solid black;
207
207
  border-radius: 0.5rem;
208
208
  overflow: hidden;
209
+ padding: 0.7rem;
210
+
211
+ /* Solid background */
212
+ background-color: white;
213
+ color: black;
209
214
 
210
215
  /* Place contents in flex column */
211
216
  flex-direction: column;
@@ -232,6 +237,18 @@ const style = `
232
237
  /* Vertical scroll */
233
238
  overflow-y: auto;
234
239
  }
240
+
241
+ .LogReviewer-header-close-button {
242
+ border: 0 !important;
243
+ background-color: transparent !important;
244
+ padding-top: 0 !important;
245
+ padding-bottom: 0 !important;
246
+ margin: 0 !important;
247
+ color: #333 !important;
248
+ }
249
+ .LogReviewer-header-close-button:hover {
250
+ color: #000 !important;
251
+ }
235
252
  `;
236
253
 
237
254
  /*------------------------------------------------------------------------*/
@@ -254,7 +271,7 @@ const genHumanReadableName = (machineReadableName: string) => {
254
271
  // Uppercase! Add a space before
255
272
  humanReadableName += ' ';
256
273
  }
257
- humanReadableName += chars;
274
+ humanReadableName += char;
258
275
  });
259
276
 
260
277
  // Trim and return
@@ -727,7 +744,7 @@ const LogReviewer: React.FC<Props> = (props) => {
727
744
 
728
745
  // Filter toggle
729
746
  const filterToggles = (
730
- <div className="LogReviewer-filter-toggles d-flex align-items-center justify-content-center">
747
+ <div className="LogReviewer-filter-toggles mb-2">
731
748
  <h3 className="m-0">
732
749
  Filters:
733
750
  </h3>
@@ -736,7 +753,7 @@ const LogReviewer: React.FC<Props> = (props) => {
736
753
  <button
737
754
  type="button"
738
755
  id="LogReviewer-toggle-date-filter-drawer"
739
- className={`btn btn-${FilterDrawer.Date === expandedFilterDrawer} me-2`}
756
+ className={`btn btn-${FilterDrawer.Date === expandedFilterDrawer ? 'warning' : 'secondary'} me-2`}
740
757
  aria-label="toggle date filter drawer"
741
758
  onClick={() => {
742
759
  dispatch({
@@ -755,7 +772,7 @@ const LogReviewer: React.FC<Props> = (props) => {
755
772
  <button
756
773
  type="button"
757
774
  id="LogReviewer-toggle-context-filter-drawer"
758
- className={`btn btn-${FilterDrawer.Context === expandedFilterDrawer} me-2`}
775
+ className={`btn btn-${FilterDrawer.Context === expandedFilterDrawer ? 'warning' : 'secondary'} me-2`}
759
776
  aria-label="toggle context filter drawer"
760
777
  onClick={() => {
761
778
  dispatch({
@@ -771,29 +788,32 @@ const LogReviewer: React.FC<Props> = (props) => {
771
788
  Context
772
789
  </button>
773
790
  {/* Tag */}
774
- <button
775
- type="button"
776
- id="LogReviewer-toggle-tag-filter-drawer"
777
- className={`btn btn-${FilterDrawer.Tag === expandedFilterDrawer} me-2`}
778
- aria-label="toggle tag filter drawer"
779
- onClick={() => {
780
- dispatch({
781
- type: ActionType.ToggleFilterDrawer,
782
- filterDrawer: FilterDrawer.Tag,
783
- });
784
- }}
785
- >
786
- <FontAwesomeIcon
787
- icon={faTag}
788
- className="me-2"
789
- />
790
- Tag
791
- </button>
791
+ {/* Skip if no tags are used */}
792
+ {(LogMetadata.Tag && Object.keys(LogMetadata.Tag).length > 0) && (
793
+ <button
794
+ type="button"
795
+ id="LogReviewer-toggle-tag-filter-drawer"
796
+ className={`btn btn-${FilterDrawer.Tag === expandedFilterDrawer ? 'warning' : 'secondary'} me-2`}
797
+ aria-label="toggle tag filter drawer"
798
+ onClick={() => {
799
+ dispatch({
800
+ type: ActionType.ToggleFilterDrawer,
801
+ filterDrawer: FilterDrawer.Tag,
802
+ });
803
+ }}
804
+ >
805
+ <FontAwesomeIcon
806
+ icon={faTag}
807
+ className="me-2"
808
+ />
809
+ Tag
810
+ </button>
811
+ )}
792
812
  {/* Action */}
793
813
  <button
794
814
  type="button"
795
815
  id="LogReviewer-toggle-action-filter-drawer"
796
- className={`btn btn-${FilterDrawer.Action === expandedFilterDrawer} me-2`}
816
+ className={`btn btn-${FilterDrawer.Action === expandedFilterDrawer ? 'warning' : 'secondary'} me-2`}
797
817
  aria-label="toggle action and error filter drawer"
798
818
  onClick={() => {
799
819
  dispatch({
@@ -812,7 +832,7 @@ const LogReviewer: React.FC<Props> = (props) => {
812
832
  <button
813
833
  type="button"
814
834
  id="LogReviewer-toggle-advanced-filter-drawer"
815
- className={`btn btn-${FilterDrawer.Advanced === expandedFilterDrawer}`}
835
+ className={`btn btn-${FilterDrawer.Advanced === expandedFilterDrawer ? 'warning' : 'secondary'}`}
816
836
  aria-label="toggle advanced filter drawer"
817
837
  onClick={() => {
818
838
  dispatch({
@@ -1023,7 +1043,10 @@ const LogReviewer: React.FC<Props> = (props) => {
1023
1043
  ) && (
1024
1044
  <TabBox title="Action Log Details">
1025
1045
  {/* Action */}
1026
- <ButtonInputGroup label="Action">
1046
+ <ButtonInputGroup
1047
+ label="Action"
1048
+ className="mb-2"
1049
+ >
1027
1050
  {
1028
1051
  Object.keys(LogAction)
1029
1052
  .map((action, i) => {
@@ -1048,6 +1071,13 @@ const LogReviewer: React.FC<Props> = (props) => {
1048
1071
  </ButtonInputGroup>
1049
1072
  {/* Target */}
1050
1073
  <ButtonInputGroup label="Target">
1074
+ {/* Nothing here */}
1075
+ {(Object.keys(LogMetadata.Target ?? {})) && (
1076
+ <div>
1077
+ This app does not have any targets yet.
1078
+ </div>
1079
+ )}
1080
+ {/* List of targets */}
1051
1081
  {
1052
1082
  Object.keys(LogMetadata.Target ?? {})
1053
1083
  .map((target, i) => {
@@ -1974,12 +2004,26 @@ const LogReviewer: React.FC<Props> = (props) => {
1974
2004
 
1975
2005
  // Create intelliTable
1976
2006
  const dataTable = (
1977
- <IntelliTable
1978
- title="Matching Logs"
1979
- id="logs"
1980
- data={logs}
1981
- columns={columns}
1982
- />
2007
+ logs.length === 0
2008
+ ? (
2009
+ <div className="alert alert-warning">
2010
+ <h4 className="m-1">
2011
+ No Logs to Show
2012
+ </h4>
2013
+ <div>
2014
+ Either your filters are too strict or no matching logs have been
2015
+ created yet.
2016
+ </div>
2017
+ </div>
2018
+ )
2019
+ : (
2020
+ <IntelliTable
2021
+ title="Matching Logs"
2022
+ id="logs"
2023
+ data={logs}
2024
+ columns={columns}
2025
+ />
2026
+ )
1983
2027
  );
1984
2028
 
1985
2029
  // Main body
@@ -2001,21 +2045,15 @@ const LogReviewer: React.FC<Props> = (props) => {
2001
2045
  <div className="LogReviewer-inner-container">
2002
2046
  <div className="LogReviewer-header">
2003
2047
  <div className="LogReviewer-header-title">
2004
- <h1 className="m-0">
2048
+ <h3 className="m-0">
2005
2049
  Log Review Dashboard
2006
- </h1>
2050
+ </h3>
2007
2051
  </div>
2008
2052
  <button
2009
2053
  type="button"
2010
- className="LogReviewer-header-close-button btn btn-lg"
2054
+ className="LogReviewer-header-close-button btn btn-dark btn-lg"
2011
2055
  aria-label="close log reviewer panel"
2012
2056
  onClick={onClose}
2013
- style={{
2014
- border: 0,
2015
- backgroundColor: 'transparent',
2016
- padding: 0,
2017
- margin: 0,
2018
- }}
2019
2057
  >
2020
2058
  <FontAwesomeIcon
2021
2059
  icon={faTimes}