@credithub/harlan-components 1.32.0 → 1.34.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 (54) hide show
  1. package/dist/assets/btn/buttonAtualizarDadosRfb.d.ts +3 -0
  2. package/dist/assets/btn/buttonAtualizarDadosRfb.js +10 -0
  3. package/dist/components/adresses/addresses.d.ts +2 -2
  4. package/dist/components/adresses/addresses.js +34 -12
  5. package/dist/components/adresses/map.js +1 -1
  6. package/dist/components/bank-accounts/bank-accounts.js +32 -28
  7. package/dist/components/ccf/ccf.js +2 -2
  8. package/dist/components/chart/chartSystem.js +51 -29
  9. package/dist/components/chart/hooks/useChartData.d.ts +6 -0
  10. package/dist/components/chart/hooks/useChartData.js +57 -4
  11. package/dist/components/chart/utils/chartUtils.d.ts +0 -4
  12. package/dist/components/chart/utils/chartUtils.js +0 -16
  13. package/dist/components/common/button.d.ts +1 -0
  14. package/dist/components/common/button.js +11 -24
  15. package/dist/components/consultaRfb.d.ts +2 -0
  16. package/dist/components/consultaRfb.js +17 -14
  17. package/dist/components/consultaSimplesSection/consultaSimplesSection.js +2 -2
  18. package/dist/components/contacts/contacts.js +8 -5
  19. package/dist/components/dividasPublicas/dividasPublicas.js +40 -40
  20. package/dist/components/dominios/dominios.js +17 -6
  21. package/dist/components/dossie/dossie.js +20 -10
  22. package/dist/components/dossie/summary/cardsAndProducts.d.ts +6 -8
  23. package/dist/components/dossie/summary/cardsAndProducts.js +94 -26
  24. package/dist/components/dossie/summary/styles.d.ts +12 -0
  25. package/dist/components/dossie/summary/styles.js +38 -0
  26. package/dist/components/dossie/summary/summary.js +7 -16
  27. package/dist/components/dossie/summary/utils.js +12 -2
  28. package/dist/components/imoveis/imoveisService.js +26 -13
  29. package/dist/components/interface/header.js +3 -3
  30. package/dist/components/interface/loadingBar.js +3 -6
  31. package/dist/components/interface/section.d.ts +2 -0
  32. package/dist/components/interface/section.js +7 -6
  33. package/dist/components/liminar/liminar.js +25 -15
  34. package/dist/components/llama/llama.d.ts +6 -0
  35. package/dist/components/llama/llama.js +122 -0
  36. package/dist/components/partners/partnerList.js +1 -1
  37. package/dist/components/partners/partners.js +28 -8
  38. package/dist/components/pep/pep.js +13 -6
  39. package/dist/components/processos-juridicos/processosJuridicos.js +19 -13
  40. package/dist/components/protestos/protestos.js +54 -39
  41. package/dist/components/refinBoaVista/refinBoaVista.js +31 -15
  42. package/dist/components/refinSerasa/refinSerasa.js +25 -38
  43. package/dist/components/score/scoreService.js +27 -13
  44. package/dist/components/scr/scr.js +123 -59
  45. package/dist/components/section.d.ts +3 -0
  46. package/dist/components/section.js +91 -0
  47. package/dist/components/veiculos/veiculos.js +28 -12
  48. package/dist/components/webservice.d.ts +22 -29
  49. package/dist/components/webservice.js +92 -131
  50. package/dist/consultaSimples.js +2 -2
  51. package/dist/hooks/useConsultaRfb.d.ts +1 -0
  52. package/lib/cjs/index.js +1448 -1030
  53. package/lib/esm/index.js +1449 -1031
  54. package/package.json +1 -1
@@ -27,10 +27,11 @@ import { useGlobalData } from '../../contexts/globalDataContext';
27
27
  import { useConsultaRfb } from '../../hooks/useConsultaRfb';
28
28
  import { phoneMask } from '../../utils/number';
29
29
  import XPathUtils from '../../utils/xpath';
30
- import React, { useContext, useEffect } from 'react';
30
+ import React, { useCallback, useContext, useEffect } from 'react';
31
31
  import styled from 'styled-components';
32
32
  import Button from '../common/button';
33
33
  import { Result, ResultContent } from '../interface/result';
34
+ import { Section } from '../section';
34
35
  import { Queries, RequestStatus } from '../webservice';
35
36
  import ContactLikeDislikeSection from './contactLikeDislikeSection';
36
37
  export var ContactType;
@@ -43,9 +44,8 @@ var Contacts = function (_a) {
43
44
  var onClickConsultarEmail = _a.onClickConsultarEmail;
44
45
  var ctx = useContext(Queries.Finder);
45
46
  var rfbResponse = useConsultaRfb().rfbResponse;
46
- var Section = ctx.Section;
47
47
  var setData = useGlobalData().setData;
48
- useEffect(function () {
48
+ var updateData = useCallback(function () {
49
49
  if (ctx.type === RequestStatus.Success && ctx.document) {
50
50
  var telefones = XPathUtils.selectArray('//telefones/*/*', ctx.document).map(function (telefone) { return ({
51
51
  type: ContactType.TELEFONE,
@@ -62,8 +62,11 @@ var Contacts = function (_a) {
62
62
  setData(function (prevState) { return (__assign(__assign({}, prevState), { contacts: contactState_1.contacts })); });
63
63
  }
64
64
  }
65
- }, [ctx.type]);
66
- return (React.createElement(Section, { ctx: ctx, title: "Contato", subtitle: "Informa\u00E7\u00F5es de contato do documento pesquisado.", description: "(Telefone, e-mail e outros)", minimized: false, icon: ContatoIcon, onSuccess: function (data) {
65
+ }, [ctx.type, ctx.document]);
66
+ useEffect(function () {
67
+ updateData();
68
+ }, [updateData]);
69
+ return (React.createElement(Section, { ctx: __assign(__assign({}, ctx), { progress: ctx.progress }), title: "Contato", subtitle: "Informa\u00E7\u00F5es de contato do documento pesquisado.", description: "(Telefone, e-mail e outros)", minimized: false, icon: ContatoIcon, onSuccess: function (data) {
67
70
  var _a;
68
71
  var document = XPathUtils.select('string(//cpf|//cnpj)', data);
69
72
  var telefones = __spreadArray(__spreadArray([], (XPathUtils.selectArray('//telefones/fixos/fixos', data) || []), true), (XPathUtils.selectArray('//telefones/moveis/moveis', data) || []), true).map(function (telefone) { return ({
@@ -11,56 +11,56 @@ var __assign = (this && this.__assign) || function () {
11
11
  };
12
12
  import DividasVencidasSerasaIcon from '../../assets/icones/dividasVencidasSerasa';
13
13
  import { useGlobalData } from '../../contexts/globalDataContext';
14
- import { parseDate } from '../../utils/date';
15
14
  import { formatMoney } from '../../utils/number';
16
15
  import XPathUtils from '../../utils/xpath';
17
- import React, { useContext, useState } from 'react';
16
+ import React, { useContext, useEffect, useState } from 'react';
18
17
  import { Result } from '../interface/result';
19
18
  import StatusMessage from '../interface/statusMessage';
20
- import { Queries } from '../webservice';
19
+ import { Section } from '../section';
20
+ import { Queries, RequestStatus } from '../webservice';
21
21
  import DividasPublicasList from './dividasPublicasList';
22
+ var dividaTypes = [
23
+ { type: 'FGTS', path: '//dividas/fgts/divida' },
24
+ { type: 'Previdenciária', path: '//dividas/previdenciaria/divida' },
25
+ { type: 'Dívida Ativa União', path: '//dividas/ativa-geral/divida' }
26
+ ];
27
+ var parseDividas = function (document) {
28
+ return dividaTypes.flatMap(function (_a) {
29
+ var type = _a.type, path = _a.path;
30
+ var dividasArray = XPathUtils.selectArray(path, document);
31
+ return dividasArray.map(function (divida) { return ({
32
+ nomeDoDevedor: XPathUtils.select('string(./nome_devedor)', divida),
33
+ tipoDePessoa: XPathUtils.select('string(./tipo_pessoa)', divida),
34
+ tipoDeDevedor: XPathUtils.select('string(./tipo_devedor)', divida),
35
+ unidadeResponsavel: XPathUtils.select('string(./unidade_responsavel)', divida),
36
+ uFDaUnidadeResponsavel: XPathUtils.select('string(./uf_unidade_responsavel)', divida),
37
+ numeroDeInscricaoDaDivida: XPathUtils.select('string(./numero_inscricao)', divida),
38
+ tipoDaSituacaoDaInscricao: XPathUtils.select('string(./tipo_situacao_inscricao)', divida),
39
+ situacaoDaInscricao: XPathUtils.select('string(./situacao_inscricao)', divida),
40
+ dataDeInscricao: XPathUtils.select('string(./data_inscricao)', divida),
41
+ indicadorAjuizado: XPathUtils.select('string(./indicador_ajuizado)', divida),
42
+ valorConsolidado: formatMoney(XPathUtils.select('string(./valor_consolidado)', divida)),
43
+ tipoDeDivida: type
44
+ }); });
45
+ });
46
+ };
22
47
  var DividasPublicas = function () {
23
48
  var ctx = useContext(Queries.Finder);
24
- var Section = ctx.Section;
25
49
  var setData = useGlobalData().setData;
26
50
  var _a = useState(false), dataUpdated = _a[0], setDataUpdated = _a[1];
27
- var dividaTypes = [
28
- { type: 'FGTS', path: '//dividas/fgts/divida' },
29
- { type: 'Previdenciária', path: '//dividas/previdenciaria/divida' },
30
- { type: 'Dívida Ativa União', path: '//dividas/ativa-geral/divida' }
31
- ];
32
- return (React.createElement(Section, { title: "D\u00EDvidas P\u00FAblicas", icon: DividasVencidasSerasaIcon, subtitle: "Veja as d\u00EDvidas p\u00FAblicas com a Uni\u00E3o (ativa, FGTS e previdenci\u00E1ria).", onSuccess: function (document) {
33
- var parseDividas = function (document) {
34
- return dividaTypes.flatMap(function (_a) {
35
- var type = _a.type, path = _a.path;
36
- return XPathUtils.selectArray(path, document).map(function (divida) { return ({
37
- nomeDoDevedor: XPathUtils.select('string(./nome_devedor)', divida),
38
- tipoDePessoa: XPathUtils.select('string(./tipo_pessoa)', divida),
39
- tipoDeDevedor: XPathUtils.select('string(./tipo_devedor)', divida),
40
- unidadeResponsavel: XPathUtils.select('string(./unidade_responsavel)', divida),
41
- uFDaUnidadeResponsavel: XPathUtils.select('string(./uf_unidade_responsavel)', divida),
42
- numeroDeInscricaoDaDivida: XPathUtils.select('string(./numero_inscricao)', divida),
43
- tipoDaSituacaoDaInscricao: XPathUtils.select('string(./tipo_situacao_inscricao)', divida),
44
- situacaoDaInscricao: XPathUtils.select('string(./situacao_inscricao)', divida),
45
- dataDeInscricao: XPathUtils.select('string(./data_inscricao)', divida),
46
- indicadorAjuizado: XPathUtils.select('string(./indicador_ajuizado)', divida),
47
- valorConsolidado: formatMoney(XPathUtils.select('string(./valor_consolidado)', divida)),
48
- tipoDeDivida: type
49
- }); });
50
- });
51
- };
51
+ useEffect(function () {
52
+ if (ctx.type !== RequestStatus.Success || dataUpdated || !ctx.document) {
53
+ return;
54
+ }
55
+ var dividas = parseDividas(ctx.document);
56
+ if (!dataUpdated) {
57
+ var dividasPublicas_1 = XPathUtils.select('number(//dividas/resumo/valor_total_dividas)', ctx.document) || 0;
58
+ setData(function (prevState) { return (__assign(__assign({}, prevState), { dividas: dividas, dividasPublicas: dividasPublicas_1 })); });
59
+ setDataUpdated(true);
60
+ }
61
+ }, [ctx, dataUpdated, setData]);
62
+ return (React.createElement(Section, { ctx: __assign(__assign({}, ctx), { progress: ctx.progress }), title: "D\u00EDvidas P\u00FAblicas", icon: DividasVencidasSerasaIcon, subtitle: "Veja as d\u00EDvidas p\u00FAblicas com a Uni\u00E3o (ativa, FGTS e previdenci\u00E1ria).", onSuccess: function (document) {
52
63
  var dividas = parseDividas(document);
53
- if (!dataUpdated) {
54
- var dividasPublicas_1 = XPathUtils.select('number(//dividas/resumo/valor_total_dividas)', document) || 0;
55
- if (dividas.length > 0 || dividasPublicas_1) {
56
- setData(function (prevState) { return (__assign(__assign({}, prevState), { dividas: dividas, dividasPublicas: dividasPublicas_1 })); });
57
- }
58
- setDataUpdated(true);
59
- }
60
- dividas.sort(function (a, b) {
61
- return parseDate(b.dataDeInscricao).getTime() -
62
- parseDate(a.dataDeInscricao).getTime();
63
- });
64
64
  var totalOcorrencias = dividas.length;
65
65
  var children = totalOcorrencias ? (React.createElement(Result, null,
66
66
  React.createElement(DividasPublicasList, { dividas: dividas }))) : null;
@@ -2,18 +2,29 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
2
2
  if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
3
  return cooked;
4
4
  };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ import DominiosIcon from '../../assets/icones/dominios';
5
17
  import React, { useContext } from 'react';
6
- import { Queries } from '../webservice';
7
- import { Result, ResultContent } from '../interface/result';
8
- import AddItemField from '../common/addItem';
9
18
  import styled from 'styled-components';
19
+ import AddItemField from '../common/addItem';
20
+ import { Result, ResultContent } from '../interface/result';
10
21
  import StatusMessage from '../interface/statusMessage';
11
- import DominiosIcon from '../../assets/icones/dominios';
22
+ import { Section } from '../section';
23
+ import { Queries } from '../webservice';
12
24
  var Link = styled.a(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: inherit;\n text-decoration: none;\n"], ["\n color: inherit;\n text-decoration: none;\n"])));
13
25
  var Dominios = function () {
14
26
  var ctx = useContext(Queries.Dominios);
15
- var Section = ctx.Section;
16
- return (React.createElement(Section, { title: "Dom\u00EDnios na Internet", subtitle: "Informa\u00E7\u00F5es de dom\u00EDnios na internet.", icon: DominiosIcon, onSuccess: function (document) {
27
+ return (React.createElement(Section, { ctx: __assign(__assign({}, ctx), { progress: ctx.progress }), title: "Dom\u00EDnios na Internet", subtitle: "Informa\u00E7\u00F5es de dom\u00EDnios na internet.", icon: DominiosIcon, onSuccess: function (document) {
17
28
  return {
18
29
  children: document.length ? (React.createElement(Result, { resultContentStriped: false }, document.map(function (data) { return (React.createElement(ResultContent, { desktop: "1fr 1fr 1fr", tablet: "1fr 1fr", mobile: "1fr 1fr", key: data },
19
30
  React.createElement(AddItemField, { name: "Dom\u00EDnio", value: React.createElement(Link, { href: "https://www.".concat(data), target: "_blank", rel: "noreferrer" }, data) }))); }))) : null,
@@ -17,10 +17,11 @@ import { useGlobalData } from '../../contexts/globalDataContext';
17
17
  import { useConsultaRfb } from '../../hooks/useConsultaRfb';
18
18
  import { formatCnpj, formatCpf } from '../../utils/string';
19
19
  import XPathUtils from '../../utils/xpath';
20
- import React, { useContext, useState } from 'react';
20
+ import React, { useContext, useEffect, useState } from 'react';
21
21
  import styled from 'styled-components';
22
22
  import { ReclameAquiCarousel } from '../reclameAqui/reclameAquiCarousel';
23
- import { Queries } from '../webservice';
23
+ import { Section } from '../section';
24
+ import { Queries, RequestStatus } from '../webservice';
24
25
  import { Carrousel } from './carrousel/carrousel';
25
26
  import { createDossieData } from './dossieData';
26
27
  import { Summary } from './summary/summary';
@@ -29,11 +30,25 @@ var DossieContent = styled.div(templateObject_1 || (templateObject_1 = __makeTem
29
30
  var DossieContainer = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n padding: 0px 70px;\n\n @media (max-width: 1000px) {\n padding: 0px 30px;\n }\n"], ["\n padding: 0px 70px;\n\n @media (max-width: 1000px) {\n padding: 0px 30px;\n }\n"])));
30
31
  var Dossie = function (_a) {
31
32
  var documento = _a.documento;
32
- var finderCtx = useContext(Queries.Finder);
33
+ var ctx = useContext(Queries.Finder);
33
34
  var rfbResponse = useConsultaRfb().rfbResponse;
34
- var Section = finderCtx.Section;
35
35
  var setData = useGlobalData().setData;
36
36
  var _b = useState(false), dataUpdated = _b[0], setDataUpdated = _b[1];
37
+ useEffect(function () {
38
+ if (ctx.type === RequestStatus.Success && !dataUpdated && ctx.document) {
39
+ var data = ctx.document;
40
+ var isPF = (documento === null || documento === void 0 ? void 0 : documento.length) === 11;
41
+ var name_1 = (isPF
42
+ ? XPathUtils.select('string(//cadastro/nome)', data)
43
+ : XPathUtils.select('string(//cadastro/razaoSocial)', data) ||
44
+ (rfbResponse &&
45
+ XPathUtils.select('string(//RFB/nome)', rfbResponse)));
46
+ var document_1 = isPF ? formatCpf(documento) : formatCnpj(documento);
47
+ var dossieData_1 = createDossieData(data, rfbResponse, name_1, document_1);
48
+ setData(function (prevState) { return (__assign(__assign({}, prevState), { dossie: dossieData_1 })); });
49
+ setDataUpdated(true);
50
+ }
51
+ }, [ctx, rfbResponse, documento, setData, dataUpdated]);
37
52
  var response = function (_data) {
38
53
  var data = _data instanceof Error ? undefined : _data;
39
54
  var isPF = (documento === null || documento === void 0 ? void 0 : documento.length) === 11;
@@ -45,18 +60,13 @@ var Dossie = function (_a) {
45
60
  var DossieCarrousel = function () {
46
61
  return !isPF ? (React.createElement(ReclameAquiCarousel, { documento: document, nome: name })) : (React.createElement(Carrousel, { name: name, document: document }));
47
62
  };
48
- var dossieData = createDossieData(data, rfbResponse, name, document);
49
- if (!dataUpdated) {
50
- setData(function (prevState) { return (__assign(__assign({}, prevState), { dossie: dossieData })); });
51
- setDataUpdated(true);
52
- }
53
63
  return (React.createElement(DossieContainer, null,
54
64
  React.createElement(DossieContent, null,
55
65
  React.createElement(DossieCarrousel, null),
56
66
  React.createElement(Summary, { finderResponse: data, rfbResponse: rfbResponse, document: document })),
57
67
  React.createElement(TransactionsTable, { events: XPathUtils.select('//historico/consulta', data) || [] })));
58
68
  };
59
- return (React.createElement(Section, { ctx: finderCtx, hideHeader: true, minimized: false, isError: function (e) { return response(e); }, onSuccess: response }));
69
+ return (React.createElement(Section, { ctx: __assign(__assign({}, ctx), { progress: ctx.progress }), hideHeader: true, minimized: false, isError: function (e) { return response(e); }, onSuccess: response }));
60
70
  };
61
71
  export default Dossie;
62
72
  var templateObject_1, templateObject_2;
@@ -1,25 +1,23 @@
1
- import React from 'react';
2
1
  declare const useCardsAndProducts: ({ finderResponse, rfbResponse }: {
3
2
  finderResponse?: Document;
4
3
  rfbResponse?: Document;
5
4
  }) => {
6
- cards: ({
5
+ cards: {
7
6
  title: string | false;
8
7
  header: string;
9
- } | {
10
- title: React.JSX.Element[];
11
- header: string;
12
- })[];
8
+ }[];
13
9
  products: ({
14
10
  title: string;
15
- onClick: () => void;
11
+ onClick: () => Promise<void>;
16
12
  price: number;
13
+ isLoading: boolean;
17
14
  hide?: undefined;
18
15
  } | {
19
16
  title: string;
20
17
  price: number;
21
- onClick: () => void;
18
+ onClick: () => Promise<void>;
22
19
  hide: boolean;
20
+ isLoading: boolean;
23
21
  })[];
24
22
  };
25
23
  export default useCardsAndProducts;
@@ -9,32 +9,97 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import React from 'react';
13
- import { getAtividadesEconomicasSecundarias, getField, getFieldRfb, getProductsPrices } from './utils';
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
14
48
  import { useConsultasComplementares } from '../../../hooks/useConsultasComplementares';
15
49
  import { formatMoney } from '../../../utils/number';
16
50
  import XPathUtils from '../../../utils/xpath';
51
+ import { useState } from 'react';
52
+ import { getAtividadesEconomicasSecundarias, getField, getFieldRfb, getProductsPrices } from './utils';
17
53
  var useCardsAndProducts = function (_a) {
18
54
  var _b, _c, _d, _e, _f;
19
55
  var finderResponse = _a.finderResponse, rfbResponse = _a.rfbResponse;
20
56
  var _g = useConsultasComplementares(), consultasComplementares = _g.consultasComplementares, setConsultasComplementares = _g.setConsultasComplementares, hasCredits = _g.hasCredits;
57
+ var _h = useState({}), loadingButtons = _h[0], setLoadingButtons = _h[1];
21
58
  var isPF = !!getField('cpf', finderResponse);
22
59
  var productsPrices = getProductsPrices(isPF);
23
60
  var handleOnClick = function (key) {
24
- return function () {
25
- var callback = function () {
26
- return setConsultasComplementares &&
27
- setConsultasComplementares(function (prev) {
28
- var _a;
29
- return (__assign(__assign({}, prev), (_a = {}, _a[key] = __assign(__assign({}, prev[key]), { consultaRealizada: true }), _a)));
30
- });
31
- };
32
- return hasCredits
33
- ? hasCredits(productsPrices[key] * 1000, callback)
34
- : callback();
35
- };
61
+ return function () { return __awaiter(void 0, void 0, void 0, function () {
62
+ var callback;
63
+ return __generator(this, function (_a) {
64
+ switch (_a.label) {
65
+ case 0:
66
+ if (loadingButtons[key])
67
+ return [2 /*return*/];
68
+ setLoadingButtons(function (prev) {
69
+ var _a;
70
+ return (__assign(__assign({}, prev), (_a = {}, _a[key] = true, _a)));
71
+ });
72
+ callback = function () {
73
+ setConsultasComplementares &&
74
+ setConsultasComplementares(function (prev) {
75
+ var _a;
76
+ return (__assign(__assign({}, prev), (_a = {}, _a[key] = __assign(__assign({}, prev[key]), { consultaRealizada: true }), _a)));
77
+ });
78
+ };
79
+ _a.label = 1;
80
+ case 1:
81
+ _a.trys.push([1, , 5, 6]);
82
+ if (!hasCredits) return [3 /*break*/, 3];
83
+ return [4 /*yield*/, hasCredits(productsPrices[key] * 1000, callback)];
84
+ case 2:
85
+ _a.sent();
86
+ return [3 /*break*/, 4];
87
+ case 3:
88
+ callback();
89
+ _a.label = 4;
90
+ case 4: return [3 /*break*/, 6];
91
+ case 5:
92
+ setLoadingButtons(function (prev) {
93
+ var _a;
94
+ return (__assign(__assign({}, prev), (_a = {}, _a[key] = false, _a)));
95
+ });
96
+ return [7 /*endfinally*/];
97
+ case 6: return [2 /*return*/];
98
+ }
99
+ });
100
+ }); };
36
101
  };
37
- var _h = {
102
+ var _j = {
38
103
  cards: [
39
104
  {
40
105
  title: getField('sexo', finderResponse, function (value) { return (isPF && (value == 'M' ? 'Masculino' : 'Feminino')) || ''; }),
@@ -133,10 +198,7 @@ var useCardsAndProducts = function (_a) {
133
198
  header: 'Atividade Econômica'
134
199
  },
135
200
  {
136
- title: getAtividadesEconomicasSecundarias(rfbResponse).map(function (e) { return (React.createElement(React.Fragment, null,
137
- e,
138
- ".",
139
- React.createElement("br", null))); }),
201
+ title: getAtividadesEconomicasSecundarias(rfbResponse).join(', '),
140
202
  header: 'Atividades Econômicas Secundárias'
141
203
  },
142
204
  {
@@ -178,40 +240,46 @@ var useCardsAndProducts = function (_a) {
178
240
  {
179
241
  title: 'Consultar SCR',
180
242
  onClick: handleOnClick('scr'),
181
- price: productsPrices === null || productsPrices === void 0 ? void 0 : productsPrices.scr
243
+ price: productsPrices === null || productsPrices === void 0 ? void 0 : productsPrices.scr,
244
+ isLoading: loadingButtons['scr']
182
245
  },
183
246
  {
184
247
  title: 'Consultar Veículos',
185
248
  price: productsPrices === null || productsPrices === void 0 ? void 0 : productsPrices.veiculos,
186
249
  onClick: handleOnClick('veiculos'),
187
- hide: (_b = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.veiculos) === null || _b === void 0 ? void 0 : _b.consultaRealizada
250
+ hide: (_b = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.veiculos) === null || _b === void 0 ? void 0 : _b.consultaRealizada,
251
+ isLoading: loadingButtons['veiculos']
188
252
  },
189
253
  {
190
254
  title: 'Consultar Pefin/Refin Boa Vista',
191
255
  price: productsPrices === null || productsPrices === void 0 ? void 0 : productsPrices.refinBoaVista,
192
256
  onClick: handleOnClick('refinBoaVista'),
193
- hide: (_c = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.refinBoaVista) === null || _c === void 0 ? void 0 : _c.consultaRealizada
257
+ hide: (_c = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.refinBoaVista) === null || _c === void 0 ? void 0 : _c.consultaRealizada,
258
+ isLoading: loadingButtons['refinBoaVista']
194
259
  },
195
260
  {
196
261
  title: 'Consultar Score Boa Vista',
197
262
  price: productsPrices === null || productsPrices === void 0 ? void 0 : productsPrices.scoreBoaVista,
198
263
  onClick: handleOnClick('scoreBoaVista'),
199
- hide: (_d = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.scoreBoaVista) === null || _d === void 0 ? void 0 : _d.consultaRealizada
264
+ hide: (_d = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.scoreBoaVista) === null || _d === void 0 ? void 0 : _d.consultaRealizada,
265
+ isLoading: loadingButtons['scoreBoaVista']
200
266
  },
201
267
  {
202
268
  title: 'Consultar Pefin/Refin Serasa',
203
269
  price: productsPrices === null || productsPrices === void 0 ? void 0 : productsPrices.refinSerasa,
204
270
  onClick: handleOnClick('refinSerasa'),
205
- hide: (_e = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.refinSerasa) === null || _e === void 0 ? void 0 : _e.consultaRealizada
271
+ hide: (_e = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.refinSerasa) === null || _e === void 0 ? void 0 : _e.consultaRealizada,
272
+ isLoading: loadingButtons['refinSerasa']
206
273
  },
207
274
  {
208
275
  title: 'Consultar Imóveis SP Capital',
209
276
  price: productsPrices === null || productsPrices === void 0 ? void 0 : productsPrices.imoveis,
210
277
  onClick: handleOnClick('imoveis'),
211
- hide: !isPF || ((_f = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.imoveis) === null || _f === void 0 ? void 0 : _f.consultaRealizada)
278
+ hide: !isPF || ((_f = consultasComplementares === null || consultasComplementares === void 0 ? void 0 : consultasComplementares.imoveis) === null || _f === void 0 ? void 0 : _f.consultaRealizada),
279
+ isLoading: loadingButtons['imoveis']
212
280
  }
213
281
  ]
214
- }, cards = _h.cards, products = _h.products;
282
+ }, cards = _j.cards, products = _j.products;
215
283
  return { cards: cards, products: products };
216
284
  };
217
285
  export default useCardsAndProducts;
@@ -0,0 +1,12 @@
1
+ export declare const Spinner: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
2
+ export declare const ContainerSummary: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
3
+ export declare const ContentSummary: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
4
+ export declare const FieldSummary: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
5
+ fullRow?: boolean;
6
+ }, never>;
7
+ export declare const ButtonsSummary: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
8
+ export declare const ButtonsWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
9
+ export declare const SummaryButton: import("styled-components").StyledComponent<import("react").FC<import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
10
+ smallContent?: import("react").ReactNode;
11
+ isLoading?: boolean;
12
+ }>, import("styled-components").DefaultTheme, {}, never>;
@@ -0,0 +1,38 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ import Button from '../../../components/common/button';
6
+ import styled from 'styled-components';
7
+ export var Spinner = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: inline-block;\n width: 24px;\n height: 24px;\n border: 3px solid ", ";\n border-radius: 50%;\n border-top-color: ", ";\n animation: spin 1s ease-in-out infinite;\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n"], ["\n display: inline-block;\n width: 24px;\n height: 24px;\n border: 3px solid ", ";\n border-radius: 50%;\n border-top-color: ", ";\n animation: spin 1s ease-in-out infinite;\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n"])), function (_a) {
8
+ var theme = _a.theme;
9
+ return theme.colors.cinzaEscuro;
10
+ }, function (_a) {
11
+ var theme = _a.theme;
12
+ return theme.colors.white;
13
+ });
14
+ export var ContainerSummary = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n padding: 0 20px;\n width: 100%;\n justify-content: space-between;\n @media (max-width: 768px) {\n padding: 0px;\n }\n\n @media (max-width: 992px) {\n flex-direction: column;\n }\n"], ["\n display: flex;\n padding: 0 20px;\n width: 100%;\n justify-content: space-between;\n @media (max-width: 768px) {\n padding: 0px;\n }\n\n @media (max-width: 992px) {\n flex-direction: column;\n }\n"])));
15
+ export var ContentSummary = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: grid;\n grid-row: 1 / 8;\n grid-template-columns: repeat(4, 1fr);\n gap: 0 16px;\n\n @media (max-width: 1280px) {\n grid-template-columns: repeat(3, 1fr);\n justify-content: center;\n align-items: center;\n }\n\n @media (max-width: 768px) {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n flex-direction: row;\n width: 100%;\n }\n"], ["\n display: grid;\n grid-row: 1 / 8;\n grid-template-columns: repeat(4, 1fr);\n gap: 0 16px;\n\n @media (max-width: 1280px) {\n grid-template-columns: repeat(3, 1fr);\n justify-content: center;\n align-items: center;\n }\n\n @media (max-width: 768px) {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n flex-direction: row;\n width: 100%;\n }\n"])));
16
+ export var FieldSummary = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n align-items: center;\n margin-bottom: 16px;\n grid-column: ", ";\n"], ["\n align-items: center;\n margin-bottom: 16px;\n grid-column: ", ";\n"])), function (props) { return (props.fullRow ? '1 / 3' : 'auto'); });
17
+ export var ButtonsSummary = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 8px;\n\n @media (max-width: 768px) {\n align-items: center;\n max-width: 100%;\n }\n"], ["\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 8px;\n\n @media (max-width: 768px) {\n align-items: center;\n max-width: 100%;\n }\n"])));
18
+ export var ButtonsWrapper = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n display: flex;\n gap: 10px;\n min-width: fit-content;\n flex-direction: column;\n\n @media (max-width: 1000px) {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n flex-direction: row;\n }\n\n @media (max-width: 768px) {\n display: grid;\n grid-template-columns: repeat(1, 1fr);\n flex-direction: row;\n }\n\n @media print {\n display: none;\n }\n"], ["\n display: flex;\n gap: 10px;\n min-width: fit-content;\n flex-direction: column;\n\n @media (max-width: 1000px) {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n flex-direction: row;\n }\n\n @media (max-width: 768px) {\n display: grid;\n grid-template-columns: repeat(1, 1fr);\n flex-direction: row;\n }\n\n @media print {\n display: none;\n }\n"])));
19
+ export var SummaryButton = styled(Button)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n background: ", ";\n color: ", ";\n cursor: ", ";\n opacity: ", ";\n pointer-events: ", ";\n\n &:hover {\n background: ", ";\n }\n"], ["\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n background: ", ";\n color: ", ";\n cursor: ", ";\n opacity: ", ";\n pointer-events: ", ";\n\n &:hover {\n background: ", ";\n }\n"])), function (_a) {
20
+ var theme = _a.theme, disabled = _a.disabled;
21
+ return disabled ? theme.colors.cinzaClaro : theme.colors.azulCredithub;
22
+ }, function (_a) {
23
+ var theme = _a.theme, disabled = _a.disabled;
24
+ return disabled ? theme.colors.cinzaEscuro : theme.colors.white;
25
+ }, function (_a) {
26
+ var disabled = _a.disabled;
27
+ return (disabled ? 'not-allowed' : 'pointer');
28
+ }, function (_a) {
29
+ var disabled = _a.disabled;
30
+ return (disabled ? 0.6 : 1);
31
+ }, function (_a) {
32
+ var disabled = _a.disabled;
33
+ return (disabled ? 'none' : 'auto');
34
+ }, function (_a) {
35
+ var theme = _a.theme, disabled = _a.disabled;
36
+ return disabled ? theme.colors.cinzaClaro : theme.colors.azulApoio;
37
+ });
38
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
@@ -1,19 +1,9 @@
1
- var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
- return cooked;
4
- };
5
- import React from 'react';
6
1
  import AddItemField from '../../../components/common/addItem';
7
- import Button from '../../../components/common/button';
2
+ import React from 'react';
3
+ import ButtonAtualizarDadosRfb from '../../../assets/btn/buttonAtualizarDadosRfb';
8
4
  import { formatMoney } from '../../../utils/number';
9
5
  import useCardsAndProducts from './cardsAndProducts';
10
- import styled from 'styled-components';
11
- var ContainerSummary = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n padding: 0 20px;\n width: 100%;\n justify-content: space-between;\n @media (max-width: 768px) {\n padding: 0px;\n }\n\n @media (max-width: 992px) {\n flex-direction: column;\n }\n"], ["\n display: flex;\n padding: 0 20px;\n width: 100%;\n justify-content: space-between;\n @media (max-width: 768px) {\n padding: 0px;\n }\n\n @media (max-width: 992px) {\n flex-direction: column;\n }\n"])));
12
- var ContentSummary = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: grid;\n grid-row: 1 / 8;\n grid-template-columns: repeat(4, 1fr);\n gap: 0 16px;\n\n @media (max-width: 1280px) {\n grid-template-columns: repeat(3, 1fr);\n justify-content: center;\n align-items: center;\n }\n\n @media (max-width: 768px) {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n flex-direction: row;\n width: 100%;\n }\n"], ["\n display: grid;\n grid-row: 1 / 8;\n grid-template-columns: repeat(4, 1fr);\n gap: 0 16px;\n\n @media (max-width: 1280px) {\n grid-template-columns: repeat(3, 1fr);\n justify-content: center;\n align-items: center;\n }\n\n @media (max-width: 768px) {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n flex-direction: row;\n width: 100%;\n }\n"])));
13
- var FieldSummary = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n align-items: center;\n margin-bottom: 16px;\n grid-column: ", ";\n"], ["\n align-items: center;\n margin-bottom: 16px;\n grid-column: ", ";\n"])), function (props) { return (props.fullRow ? '1 / 3' : 'auto'); });
14
- var ButtonsSummary = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 8px;\n\n @media (max-width: 768px) {\n align-items: center;\n max-width: 100%;\n }\n"], ["\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: 8px;\n\n @media (max-width: 768px) {\n align-items: center;\n max-width: 100%;\n }\n"])));
15
- var ButtonsWrapper = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: flex;\n gap: 10px;\n min-width: fit-content;\n flex-direction: column;\n\n @media (max-width: 1000px) {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n flex-direction: row;\n }\n\n @media (max-width: 768px) {\n display: grid;\n grid-template-columns: repeat(1, 1fr);\n flex-direction: row;\n }\n\n @media print {\n display: none;\n }\n"], ["\n display: flex;\n gap: 10px;\n min-width: fit-content;\n flex-direction: column;\n\n @media (max-width: 1000px) {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n flex-direction: row;\n }\n\n @media (max-width: 768px) {\n display: grid;\n grid-template-columns: repeat(1, 1fr);\n flex-direction: row;\n }\n\n @media print {\n display: none;\n }\n"])));
16
- var SummaryButton = styled(Button)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n height: 100%;\n"], ["\n height: 100%;\n"])));
6
+ import { ButtonsSummary, ButtonsWrapper, ContainerSummary, ContentSummary, FieldSummary, Spinner, SummaryButton } from './styles';
17
7
  export var Summary = function (_a) {
18
8
  var finderResponse = _a.finderResponse, rfbResponse = _a.rfbResponse;
19
9
  var _b = useCardsAndProducts({
@@ -24,8 +14,9 @@ export var Summary = function (_a) {
24
14
  React.createElement(ContainerSummary, { className: "credithub-container-summary" },
25
15
  React.createElement(ContentSummary, { className: "credithub-content-summary" }, cards.map(function (card, index) { return (React.createElement(FieldSummary, { key: index, fullRow: card.header === 'Nome' || card.header === 'Nome Da Mãe' },
26
16
  React.createElement(AddItemField, { name: card.header, value: card.title }))); })),
27
- React.createElement(ButtonsWrapper, null, products.map(function (product, index) { return (React.createElement(ButtonsSummary, { key: index, style: { display: (product === null || product === void 0 ? void 0 : product.hide) ? 'none' : '', width: '100%' } },
28
- React.createElement(SummaryButton, { onClick: function () { return (product === null || product === void 0 ? void 0 : product.onClick) && (product === null || product === void 0 ? void 0 : product.onClick()); }, smallContent: product.price ? formatMoney(product.price) : undefined }, product.title))); })))));
17
+ React.createElement(ButtonsWrapper, null,
18
+ React.createElement(ButtonAtualizarDadosRfb, null),
19
+ products.map(function (product, index) { return (React.createElement(ButtonsSummary, { key: index, style: { display: (product === null || product === void 0 ? void 0 : product.hide) ? 'none' : '', width: '100%' } },
20
+ React.createElement(SummaryButton, { onClick: function () { return (product === null || product === void 0 ? void 0 : product.onClick) && (product === null || product === void 0 ? void 0 : product.onClick()); }, disabled: product.isLoading, smallContent: product.price ? formatMoney(product.price) : undefined }, product.isLoading ? React.createElement(Spinner, null) : product.title))); })))));
29
21
  };
30
22
  export default Summary;
31
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -26,8 +26,18 @@ export var getAtividadesEconomicasSecundarias = function (response) {
26
26
  var rfb = (_a = XPathUtils.selectArray('//RFB', response)) === null || _a === void 0 ? void 0 : _a[0];
27
27
  if (!rfb)
28
28
  return [];
29
- var values = XPathUtils.selectArray('//atividade-secundaria', rfb);
30
- return values.map(function (value) { var _a; return (_a = value.firstChild) === null || _a === void 0 ? void 0 : _a.nodeValue; });
29
+ var values = XPathUtils.selectArray('//atividade-secundaria', rfb).map(function (value) { var _a; return (_a = value.firstChild) === null || _a === void 0 ? void 0 : _a.nodeValue; });
30
+ var combinedString = '';
31
+ var result = [];
32
+ for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {
33
+ var value = values_1[_i];
34
+ if ((combinedString + value).length > 300) {
35
+ break;
36
+ }
37
+ combinedString += (combinedString ? ', ' : '') + value;
38
+ result.push(value);
39
+ }
40
+ return result;
31
41
  };
32
42
  export var getProductsPrices = function (isPF) { return ({
33
43
  refinBoaVista: isPF ? 1.2 : 2.7,