@aclymatepackages/modules 2.1.7 → 2.1.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.
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.assign.js");
4
+ require("core-js/modules/es.weak-map.js");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ require("core-js/modules/es.promise.js");
10
+ require("core-js/modules/web.dom-collections.iterator.js");
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _peopledatalabs = _interopRequireDefault(require("peopledatalabs"));
13
+ var _material = require("@mui/material");
14
+ var _Check = _interopRequireDefault(require("@mui/icons-material/Check"));
15
+ var _Search = _interopRequireDefault(require("@mui/icons-material/Search"));
16
+ var _atoms = require("@aclymatepackages/atoms");
17
+ var _formatters = require("@aclymatepackages/formatters");
18
+ const _excluded = ["name"];
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
21
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
22
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
24
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
25
+ 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; }
26
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
27
+ 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); }
28
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
29
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
30
+ const CompanySelectionChip = _ref => {
31
+ let {
32
+ id,
33
+ name,
34
+ isSelected,
35
+ setSelectedCompanyId
36
+ } = _ref;
37
+ return /*#__PURE__*/_react.default.createElement(_material.Grid, {
38
+ item: true
39
+ }, /*#__PURE__*/_react.default.createElement(_material.Chip, {
40
+ label: name,
41
+ style: {
42
+ color: isSelected ? "white" : "inherit"
43
+ },
44
+ onClick: () => setSelectedCompanyId(currentId => currentId === id ? null : id),
45
+ icon: isSelected && /*#__PURE__*/_react.default.createElement(_Check.default, {
46
+ style: {
47
+ color: "white"
48
+ }
49
+ }),
50
+ color: isSelected ? "primary" : "default"
51
+ }));
52
+ };
53
+ const PdlCompanySelect = _ref2 => {
54
+ let {
55
+ onSelectCompany
56
+ } = _ref2;
57
+ const [inputValue, setInputValue] = (0, _react.useState)("");
58
+ const [matchingCompanies, setMatchingCompanies] = (0, _react.useState)([]);
59
+ const [inputComplete, setInputComplete] = (0, _react.useState)(false);
60
+ const [pdlFetchLoading, setPdlFetchLoading] = (0, _react.useState)(false);
61
+ const [selectedCompanyId, setSelectedCompanyId] = (0, _react.useState)(null);
62
+ const pdlClient = (0, _react.useMemo)(() => new _peopledatalabs.default({
63
+ apiKey: process.env.REACT_APP_PEOPLEDATALABS_API_KEY
64
+ }), []);
65
+ const fetchMatchingCompanies = async () => {
66
+ setPdlFetchLoading(true);
67
+ const {
68
+ data: matchingPdlCompanies
69
+ } = await pdlClient.autocomplete({
70
+ field: "company",
71
+ text: inputValue,
72
+ size: 10,
73
+ pretty: true
74
+ });
75
+ const capitalizedCompanies = matchingPdlCompanies.map(_ref3 => {
76
+ let {
77
+ name
78
+ } = _ref3,
79
+ otherProps = _objectWithoutProperties(_ref3, _excluded);
80
+ return _objectSpread({
81
+ name: (0, _formatters.ucFirstLetters)(name)
82
+ }, otherProps);
83
+ });
84
+ setPdlFetchLoading(false);
85
+ setMatchingCompanies(capitalizedCompanies);
86
+ return setInputComplete(true);
87
+ };
88
+ return /*#__PURE__*/_react.default.createElement(_material.Grid, {
89
+ container: true,
90
+ spacing: 2,
91
+ direction: "column"
92
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
93
+ item: true
94
+ }, /*#__PURE__*/_react.default.createElement(_atoms.TextField, {
95
+ disabled: pdlFetchLoading,
96
+ label: "Enter your company's name",
97
+ value: inputValue,
98
+ setValue: setInputValue,
99
+ onKeyPress: _ref4 => {
100
+ let {
101
+ key
102
+ } = _ref4;
103
+ if (key === "Enter") {
104
+ return fetchMatchingCompanies();
105
+ }
106
+ },
107
+ InputProps: {
108
+ endAdornment: /*#__PURE__*/_react.default.createElement(_material.InputAdornment, null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
109
+ disabled: pdlFetchLoading,
110
+ onClick: fetchMatchingCompanies
111
+ }, pdlFetchLoading ? /*#__PURE__*/_react.default.createElement(_material.CircularProgress, {
112
+ size: 20
113
+ }) : /*#__PURE__*/_react.default.createElement(_Search.default, null)))
114
+ }
115
+ })), /*#__PURE__*/_react.default.createElement(_material.Grid, {
116
+ item: true,
117
+ container: true,
118
+ justifyContent: "center"
119
+ }), inputComplete && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Grid, {
120
+ item: true
121
+ }, /*#__PURE__*/_react.default.createElement(_material.Typography, {
122
+ variant: "h6",
123
+ align: "center"
124
+ }, "Please select your company from these options")), /*#__PURE__*/_react.default.createElement(_material.Grid, {
125
+ item: true,
126
+ container: true,
127
+ spacing: 2,
128
+ justifyContent: "center"
129
+ }, matchingCompanies.map((_ref5, idx) => {
130
+ let {
131
+ name,
132
+ meta
133
+ } = _ref5;
134
+ return /*#__PURE__*/_react.default.createElement(CompanySelectionChip, _extends({
135
+ key: "company-list-item-".concat(idx),
136
+ name: name,
137
+ isSelected: selectedCompanyId === meta.id,
138
+ setSelectedCompanyId: setSelectedCompanyId
139
+ }, meta));
140
+ })), /*#__PURE__*/_react.default.createElement(_material.Grid, {
141
+ item: true,
142
+ container: true,
143
+ spacing: 2,
144
+ justifyContent: "center"
145
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
146
+ item: true
147
+ }, selectedCompanyId ? /*#__PURE__*/_react.default.createElement(_material.Button, {
148
+ variant: "contained",
149
+ color: "secondary",
150
+ onClick: () => onSelectCompany(selectedCompanyId)
151
+ }, "Choose this company") : /*#__PURE__*/_react.default.createElement(_material.Button, {
152
+ color: "primary",
153
+ onClick: () => onSelectCompany("none", inputValue)
154
+ }, "I don't see my company")))));
155
+ };
156
+ var _default = exports.default = PdlCompanySelect;
package/dist/index.js CHANGED
@@ -81,6 +81,12 @@ Object.defineProperty(exports, "IndustryAutocomplete", {
81
81
  return _IndustryAutocomplete.default;
82
82
  }
83
83
  });
84
+ Object.defineProperty(exports, "PdlCompanySelect", {
85
+ enumerable: true,
86
+ get: function get() {
87
+ return _PdlCompanySelect.default;
88
+ }
89
+ });
84
90
  Object.defineProperty(exports, "PlacesAutocomplete", {
85
91
  enumerable: true,
86
92
  get: function get() {
@@ -143,4 +149,5 @@ var _useChartWarningLabels = _interopRequireDefault(require("./components/useCha
143
149
  var _ReportSummaryBlock = _interopRequireDefault(require("./components/ReportSummaryBlock"));
144
150
  var _ReportGraphContentLayout = _interopRequireDefault(require("./components/ReportGraphContentLayout"));
145
151
  var _EmissionsSummarySentence = _interopRequireDefault(require("./components/EmissionsSummarySentence"));
152
+ var _PdlCompanySelect = _interopRequireDefault(require("./components/PdlCompanySelect"));
146
153
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aclymatepackages/modules",
3
- "version": "2.1.7",
3
+ "version": "2.1.8",
4
4
  "description": "Aclymate modules",
5
5
  "author": "William Loopesko",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,150 @@
1
+ import React, { useState, useMemo } from "react";
2
+ import PDLJS from "peopledatalabs";
3
+
4
+ import {
5
+ Grid,
6
+ Chip,
7
+ InputAdornment,
8
+ CircularProgress,
9
+ IconButton,
10
+ Button,
11
+ Typography,
12
+ } from "@mui/material";
13
+ import CheckIcon from "@mui/icons-material/Check";
14
+ import SearchIcon from "@mui/icons-material/Search";
15
+
16
+ import { TextField } from "@aclymatepackages/atoms";
17
+ import { ucFirstLetters } from "@aclymatepackages/formatters";
18
+
19
+ const CompanySelectionChip = ({
20
+ id,
21
+ name,
22
+ isSelected,
23
+ setSelectedCompanyId,
24
+ }) => (
25
+ <Grid item>
26
+ <Chip
27
+ label={name}
28
+ style={{ color: isSelected ? "white" : "inherit" }}
29
+ onClick={() =>
30
+ setSelectedCompanyId((currentId) => (currentId === id ? null : id))
31
+ }
32
+ icon={isSelected && <CheckIcon style={{ color: "white" }} />}
33
+ color={isSelected ? "primary" : "default"}
34
+ />
35
+ </Grid>
36
+ );
37
+
38
+ const PdlCompanySelect = ({ onSelectCompany }) => {
39
+ const [inputValue, setInputValue] = useState("");
40
+ const [matchingCompanies, setMatchingCompanies] = useState([]);
41
+ const [inputComplete, setInputComplete] = useState(false);
42
+ const [pdlFetchLoading, setPdlFetchLoading] = useState(false);
43
+ const [selectedCompanyId, setSelectedCompanyId] = useState(null);
44
+
45
+ const pdlClient = useMemo(
46
+ () =>
47
+ new PDLJS({
48
+ apiKey: process.env.REACT_APP_PEOPLEDATALABS_API_KEY,
49
+ }),
50
+ []
51
+ );
52
+
53
+ const fetchMatchingCompanies = async () => {
54
+ setPdlFetchLoading(true);
55
+
56
+ const { data: matchingPdlCompanies } = await pdlClient.autocomplete({
57
+ field: "company",
58
+ text: inputValue,
59
+ size: 10,
60
+ pretty: true,
61
+ });
62
+
63
+ const capitalizedCompanies = matchingPdlCompanies.map(
64
+ ({ name, ...otherProps }) => ({
65
+ name: ucFirstLetters(name),
66
+ ...otherProps,
67
+ })
68
+ );
69
+
70
+ setPdlFetchLoading(false);
71
+ setMatchingCompanies(capitalizedCompanies);
72
+ return setInputComplete(true);
73
+ };
74
+
75
+ return (
76
+ <Grid container spacing={2} direction="column">
77
+ <Grid item>
78
+ <TextField
79
+ disabled={pdlFetchLoading}
80
+ label="Enter your company's name"
81
+ value={inputValue}
82
+ setValue={setInputValue}
83
+ onKeyPress={({ key }) => {
84
+ if (key === "Enter") {
85
+ return fetchMatchingCompanies();
86
+ }
87
+ }}
88
+ InputProps={{
89
+ endAdornment: (
90
+ <InputAdornment>
91
+ <IconButton
92
+ disabled={pdlFetchLoading}
93
+ onClick={fetchMatchingCompanies}
94
+ >
95
+ {pdlFetchLoading ? (
96
+ <CircularProgress size={20} />
97
+ ) : (
98
+ <SearchIcon />
99
+ )}
100
+ </IconButton>
101
+ </InputAdornment>
102
+ ),
103
+ }}
104
+ />
105
+ </Grid>
106
+ <Grid item container justifyContent="center"></Grid>
107
+ {inputComplete && (
108
+ <>
109
+ <Grid item>
110
+ <Typography variant="h6" align="center">
111
+ Please select your company from these options
112
+ </Typography>
113
+ </Grid>
114
+ <Grid item container spacing={2} justifyContent="center">
115
+ {matchingCompanies.map(({ name, meta }, idx) => (
116
+ <CompanySelectionChip
117
+ key={`company-list-item-${idx}`}
118
+ name={name}
119
+ isSelected={selectedCompanyId === meta.id}
120
+ setSelectedCompanyId={setSelectedCompanyId}
121
+ {...meta}
122
+ />
123
+ ))}
124
+ </Grid>
125
+ <Grid item container spacing={2} justifyContent="center">
126
+ <Grid item>
127
+ {selectedCompanyId ? (
128
+ <Button
129
+ variant="contained"
130
+ color="secondary"
131
+ onClick={() => onSelectCompany(selectedCompanyId)}
132
+ >
133
+ Choose this company
134
+ </Button>
135
+ ) : (
136
+ <Button
137
+ color="primary"
138
+ onClick={() => onSelectCompany("none", inputValue)}
139
+ >
140
+ I don't see my company
141
+ </Button>
142
+ )}
143
+ </Grid>
144
+ </Grid>
145
+ </>
146
+ )}
147
+ </Grid>
148
+ );
149
+ };
150
+ export default PdlCompanySelect;
package/src/index.js CHANGED
@@ -18,6 +18,7 @@ import useChartWarningLabels from "./components/useChartWarningLabels";
18
18
  import ReportSummaryBlock from "./components/ReportSummaryBlock";
19
19
  import ReportGraphContentLayout from "./components/ReportGraphContentLayout";
20
20
  import EmissionsSummarySentence from "./components/EmissionsSummarySentence";
21
+ import PdlCompanySelect from "./components/PdlCompanySelect";
21
22
 
22
23
  export {
23
24
  AccountingChart,
@@ -40,4 +41,5 @@ export {
40
41
  ReportSummaryBlock,
41
42
  ReportGraphContentLayout,
42
43
  EmissionsSummarySentence,
44
+ PdlCompanySelect,
43
45
  };