contentoh-components-library 21.1.63 → 21.1.66

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 (78) hide show
  1. package/.env.development +1 -0
  2. package/.env.production +1 -0
  3. package/dist/assets/images/versionSelector/acceptIcon.svg +3 -0
  4. package/dist/assets/images/versionSelector/addVersion.svg +5 -0
  5. package/dist/assets/images/versionSelector/closeVersionSelector.svg +4 -0
  6. package/dist/assets/images/versionSelector/createVersion.svg +3 -0
  7. package/dist/assets/images/versionSelector/nullIcon.svg +3 -0
  8. package/dist/assets/images/versionSelector/versionSelected.svg +3 -0
  9. package/dist/components/atoms/GeneralButton/index.js +3 -1
  10. package/dist/components/atoms/GeneralButton/styles.js +2 -2
  11. package/dist/components/atoms/InputFormatter/index.js +3 -3
  12. package/dist/components/atoms/ProductPercentCard/Percent.stories.js +1 -1
  13. package/dist/components/atoms/ProductPercentCard/styles.js +1 -1
  14. package/dist/components/atoms/Select/VersionSelect.js +37 -0
  15. package/dist/components/atoms/Select/index.js +4 -3
  16. package/dist/components/atoms/Select/style.js +10 -4
  17. package/dist/components/atoms/SliderToolTip/styles.js +2 -2
  18. package/dist/components/molecules/AssignedWork/AssignedWork.stories.js +1 -1
  19. package/dist/components/molecules/AssignedWork/styles.js +1 -1
  20. package/dist/components/molecules/StatusAsignationInfo/index.js +9 -1
  21. package/dist/components/molecules/VersionItem/VersionItem.stories.js +28 -0
  22. package/dist/components/molecules/VersionItem/index.js +64 -0
  23. package/dist/components/molecules/VersionItem/styles.js +20 -0
  24. package/dist/components/organisms/CreateVersion/CreateVersion.stories.js +31 -0
  25. package/dist/components/organisms/CreateVersion/RenderChilds.js +157 -0
  26. package/dist/components/organisms/CreateVersion/index.js +182 -0
  27. package/dist/components/organisms/CreateVersion/styles.js +28 -0
  28. package/dist/components/organisms/FullProductNameHeader/index.js +1 -1
  29. package/dist/components/organisms/FullTabsMenu/index.js +6 -2
  30. package/dist/components/organisms/VersionSelector/VersionSelector.stories.js +32 -0
  31. package/dist/components/organisms/VersionSelector/index.js +129 -0
  32. package/dist/components/organisms/VersionSelector/styles.js +20 -0
  33. package/dist/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +102 -112
  34. package/dist/components/pages/ProviderProductEdition/index.js +449 -431
  35. package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +53 -72
  36. package/dist/components/pages/RetailerProductEdition/index.js +245 -231
  37. package/dist/global-files/customHooks.js +35 -0
  38. package/dist/global-files/data.js +8 -8
  39. package/dist/global-files/global-styles.css +1 -0
  40. package/package.json +1 -1
  41. package/src/assets/images/versionSelector/acceptIcon.svg +3 -0
  42. package/src/assets/images/versionSelector/addVersion.svg +5 -0
  43. package/src/assets/images/versionSelector/closeVersionSelector.svg +4 -0
  44. package/src/assets/images/versionSelector/createVersion.svg +3 -0
  45. package/src/assets/images/versionSelector/nullIcon.svg +3 -0
  46. package/src/assets/images/versionSelector/versionSelected.svg +3 -0
  47. package/src/components/atoms/GeneralButton/index.js +2 -0
  48. package/src/components/atoms/GeneralButton/styles.js +18 -0
  49. package/src/components/atoms/InputFormatter/index.js +6 -3
  50. package/src/components/atoms/ProductPercentCard/Percent.stories.js +12 -11
  51. package/src/components/atoms/ProductPercentCard/styles.js +9 -9
  52. package/src/components/atoms/ProgressBar/styles.js +69 -0
  53. package/src/components/atoms/Select/VersionSelect.js +25 -0
  54. package/src/components/atoms/Select/index.js +1 -1
  55. package/src/components/atoms/Select/style.js +19 -0
  56. package/src/components/atoms/SliderToolTip/styles.js +18 -14
  57. package/src/components/molecules/AssignedWork/AssignedWork.stories.js +8 -8
  58. package/src/components/molecules/AssignedWork/styles.js +10 -9
  59. package/src/components/molecules/StatusAsignationInfo/index.js +10 -1
  60. package/src/components/molecules/VersionItem/VersionItem.stories.js +14 -0
  61. package/src/components/molecules/VersionItem/index.js +47 -0
  62. package/src/components/molecules/VersionItem/styles.js +32 -0
  63. package/src/components/organisms/CreateVersion/CreateVersion.stories.js +14 -0
  64. package/src/components/organisms/CreateVersion/RenderChilds.js +137 -0
  65. package/src/components/organisms/CreateVersion/index.js +88 -0
  66. package/src/components/organisms/CreateVersion/styles.js +79 -0
  67. package/src/components/organisms/FullProductNameHeader/index.js +2 -2
  68. package/src/components/organisms/FullTabsMenu/index.js +5 -1
  69. package/src/components/organisms/VersionSelector/VersionSelector.stories.js +15 -0
  70. package/src/components/organisms/VersionSelector/index.js +75 -0
  71. package/src/components/organisms/VersionSelector/styles.js +28 -0
  72. package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +116 -134
  73. package/src/components/pages/ProviderProductEdition/index.js +267 -234
  74. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +53 -74
  75. package/src/components/pages/RetailerProductEdition/index.js +201 -151
  76. package/src/global-files/customHooks.js +26 -0
  77. package/src/global-files/data.js +8 -8
  78. package/src/global-files/global-styles.css +1 -0
@@ -0,0 +1,32 @@
1
+ import { FontFamily, GlobalColors } from "../../../global-files/variables";
2
+ import styled from "styled-components";
3
+
4
+ export const Container = styled.div`
5
+ background-color: ${GlobalColors.deep_gray};
6
+ padding-bottom: 5px;
7
+ border-bottom: 1px solid ${GlobalColors.s4};
8
+ .header {
9
+ display: flex;
10
+ justify-content: space-between;
11
+ align-items: center;
12
+ }
13
+ .version-info {
14
+ text-align: right;
15
+ h2,
16
+ p {
17
+ & + * {
18
+ margin-top: 5px;
19
+ }
20
+ }
21
+
22
+ p {
23
+ font-size: 12px;
24
+ font-family: ${FontFamily.AvenirNext};
25
+ color: ${GlobalColors.s2};
26
+ }
27
+ }
28
+
29
+ & + * {
30
+ margin-top: 18px;
31
+ }
32
+ `;
@@ -0,0 +1,14 @@
1
+ import { CreateVersion } from "./index";
2
+
3
+ export default {
4
+ title: "Components/organisms/CreateVersion",
5
+ component: CreateVersion,
6
+ };
7
+
8
+ const Template = (args) => <CreateVersion {...args} />;
9
+
10
+ export const CreateVersionDefault = Template.bind({});
11
+ CreateVersionDefault.args = {
12
+ idArticle: 76201,
13
+ version: 2,
14
+ };
@@ -0,0 +1,137 @@
1
+ import { GlobalColors, FontFamily } from "../../../global-files/variables";
2
+ import { Button } from "../../atoms/GeneralButton";
3
+ import { ScreenHeader } from "../../atoms/ScreenHeader";
4
+ import { VersionOptions, EmptyVersion, CreateVersion } from "./styles";
5
+ import createVersionImg from "../../../assets/images/versionSelector/createVersion.svg";
6
+ import genericModalWarning from "../../../assets/images/genericModal/genericModalWarning.svg";
7
+ import { VersionSelect } from "../../atoms/Select/VersionSelect";
8
+
9
+ export const Children = (
10
+ step,
11
+ setStep,
12
+ versions,
13
+ selectedVersions,
14
+ onChange,
15
+ createVersion
16
+ ) => {
17
+ switch (step) {
18
+ case "version-options":
19
+ return (
20
+ <VersionOptions>
21
+ <img src={createVersionImg} alt="create version icon" />
22
+ <ScreenHeader
23
+ fontFamily={FontFamily.Raleway_500}
24
+ headerType={"product-name-header"}
25
+ color={GlobalColors.white}
26
+ text={"Crea una nueva versión"}
27
+ />
28
+ <ScreenHeader
29
+ fontFamily={FontFamily.Raleway}
30
+ headerType={"retailer-name-header"}
31
+ color={GlobalColors.white}
32
+ text={
33
+ "Puedes elegir el contenido de versiones anteriores o crear una versión desde cero"
34
+ }
35
+ />
36
+ <div className="buttons-container">
37
+ <Button
38
+ label={"Versión desde cero"}
39
+ buttonType={"general-transparent-button"}
40
+ onClick={() => setStep("empty-version")}
41
+ />
42
+ <Button
43
+ label={"Versión personalizada"}
44
+ buttonType={"general-default-button"}
45
+ onClick={() => setStep("create-version")}
46
+ />
47
+ </div>
48
+ </VersionOptions>
49
+ );
50
+ case "empty-version":
51
+ return (
52
+ <EmptyVersion>
53
+ <img src={genericModalWarning} alt="warning icon" />
54
+ <ScreenHeader
55
+ fontFamily={FontFamily.Raleway_500}
56
+ headerType={"product-name-header"}
57
+ color={GlobalColors.white}
58
+ text={
59
+ "Si creas una versión desde cero perderas la información actual"
60
+ }
61
+ />
62
+ <ScreenHeader
63
+ fontFamily={FontFamily.Raleway}
64
+ headerType={"retailer-name-header"}
65
+ color={GlobalColors.white}
66
+ text={"¿Deseas Continuar?"}
67
+ />
68
+ <div className="buttons-container">
69
+ <Button
70
+ label={"Atrás"}
71
+ buttonType={"general-transparent-button"}
72
+ onClick={() => setStep("version-options")}
73
+ />
74
+ <Button
75
+ label={"Continuar"}
76
+ buttonType={"general-default-button"}
77
+ onClick={() => createVersion(true)}
78
+ />
79
+ </div>
80
+ </EmptyVersion>
81
+ );
82
+ case "create-version":
83
+ return (
84
+ <CreateVersion>
85
+ <ScreenHeader
86
+ fontFamily={FontFamily.Raleway_500}
87
+ headerType={"retailer-name-header"}
88
+ color={GlobalColors.white}
89
+ text={
90
+ "Elige el contenido que deseas utilizar de versiones anteriores"
91
+ }
92
+ />
93
+ <div className="version-selector">
94
+ <div className="selector">
95
+ <VersionSelect
96
+ versions={versions}
97
+ label={"Ficha técnica"}
98
+ id={"datasheet"}
99
+ selectedVersions={selectedVersions}
100
+ onChange={(e) => onChange(e)}
101
+ />
102
+ </div>
103
+ <div className="selector">
104
+ <VersionSelect
105
+ versions={versions}
106
+ label={"Descripción"}
107
+ id={"description"}
108
+ selectedVersions={selectedVersions}
109
+ onChange={(e) => onChange(e)}
110
+ />
111
+ </div>
112
+ <div className="selector">
113
+ <VersionSelect
114
+ versions={versions}
115
+ label={"Imágenes"}
116
+ id={"image"}
117
+ selectedVersions={selectedVersions}
118
+ onChange={(e) => onChange(e)}
119
+ />
120
+ </div>
121
+ </div>
122
+ <div className="buttons-container">
123
+ <Button
124
+ label={"Atrás"}
125
+ buttonType={"general-transparent-button"}
126
+ onClick={() => setStep("version-options")}
127
+ />
128
+ <Button
129
+ label={"Continuar"}
130
+ buttonType={"general-default-button"}
131
+ onClick={() => createVersion()}
132
+ />
133
+ </div>
134
+ </CreateVersion>
135
+ );
136
+ }
137
+ };
@@ -0,0 +1,88 @@
1
+ import { Button } from "../../atoms/GeneralButton";
2
+ import { Container } from "./styles";
3
+ import closeIcon from "../../../assets/images/versionSelector/closeVersionSelector.svg";
4
+ import { useEffect, useState } from "react";
5
+ import { Children } from "./RenderChilds";
6
+ import axios from "axios";
7
+
8
+ export const CreateVersion = ({ idArticle, version, setShowCreateVersion }) => {
9
+ const [step, setStep] = useState("version-options");
10
+ const [versions, setVersions] = useState([]);
11
+ const [selectedVersions, setSelectedVersions] = useState({
12
+ datasheet: version,
13
+ description: version,
14
+ image: version,
15
+ });
16
+
17
+ const getVersions = async () => {
18
+ try {
19
+ const response = await axios({
20
+ method: "get",
21
+ url: `${process.env.REACT_APP_VERSIONS_ENDPOINT}?articleId=${idArticle}&provider=true`,
22
+ headers: {
23
+ Authorization: sessionStorage.getItem("jwt"),
24
+ },
25
+ });
26
+ setVersions(JSON.parse(response.data.body).data);
27
+ } catch (error) {
28
+ console.log(error);
29
+ }
30
+ };
31
+
32
+ const createVersion = async (isEmpty) => {
33
+ try {
34
+ let data = {
35
+ articleId: idArticle,
36
+ isEmpty,
37
+ };
38
+
39
+ isEmpty && (data["version"] = selectedVersions);
40
+
41
+ await axios({
42
+ method: "post",
43
+ url: process.env.REACT_APP_VERSIONS_ENDPOINT,
44
+ data: data,
45
+ headers: {
46
+ Authorization: sessionStorage.getItem("jwt"),
47
+ },
48
+ });
49
+ setShowCreateVersion(false);
50
+ } catch (error) {
51
+ console.log(error);
52
+ }
53
+ };
54
+
55
+ const onChange = (e) => {
56
+ setSelectedVersions({
57
+ ...selectedVersions,
58
+ [e.target.name]: parseInt(e.target.value.slice(-1)),
59
+ });
60
+ };
61
+
62
+ useEffect(async () => {
63
+ await getVersions();
64
+ }, []);
65
+
66
+ return (
67
+ <Container>
68
+ <div className="modal-container">
69
+ <div className="button-container">
70
+ <Button
71
+ image={closeIcon}
72
+ buttonType={"circular-button"}
73
+ id="close-modal-button"
74
+ onClick={() => setShowCreateVersion(false)}
75
+ />
76
+ </div>
77
+ {Children(
78
+ step,
79
+ setStep,
80
+ versions,
81
+ selectedVersions,
82
+ onChange,
83
+ createVersion
84
+ )}
85
+ </div>
86
+ </Container>
87
+ );
88
+ };
@@ -0,0 +1,79 @@
1
+ import styled from "styled-components";
2
+ import { FontFamily, GlobalColors } from "../../../global-files/variables";
3
+
4
+ export const Container = styled.div`
5
+ position: fixed;
6
+ top: 0;
7
+ left: 0;
8
+ z-index: 1000;
9
+ background-color: #281f3366;
10
+ height: 100vh;
11
+ width: 100%;
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+
16
+ .modal-container {
17
+ position: relative;
18
+ padding: 40px 20px;
19
+ background: #281f33;
20
+ border-radius: 39px;
21
+
22
+ .button-container {
23
+ display: flex;
24
+ justify-content: flex-end;
25
+ padding-right: 15px;
26
+ }
27
+ }
28
+ `;
29
+
30
+ export const VersionOptions = styled.div`
31
+ max-width: 560px;
32
+ text-align: center;
33
+
34
+ & > * + * {
35
+ margin-top: 20px;
36
+ }
37
+
38
+ img + * {
39
+ margin-top: 0;
40
+ }
41
+
42
+ .buttons-container {
43
+ display: flex;
44
+ justify-content: space-evenly;
45
+
46
+ button {
47
+ flex: 0.3 0 30%;
48
+ }
49
+
50
+ .general-transparent-button {
51
+ color: ${GlobalColors.white};
52
+ border: 1px solid ${GlobalColors.white};
53
+ }
54
+ }
55
+ `;
56
+
57
+ export const EmptyVersion = VersionOptions;
58
+
59
+ export const CreateVersion = styled(VersionOptions)`
60
+ .retailer-name-header {
61
+ margin: 30px 0;
62
+ }
63
+ .version-selector {
64
+ display: flex;
65
+ justify-content: space-evenly;
66
+
67
+ .selector {
68
+ flex: 0.1 1 20%;
69
+ font-family: ${FontFamily.Lato};
70
+ color: ${GlobalColors.white};
71
+ font-size: 11px;
72
+ font-weight: normal;
73
+ }
74
+
75
+ & + * {
76
+ margin-top: 50px;
77
+ }
78
+ }
79
+ `;
@@ -26,7 +26,7 @@ export const FullProductNameHeader = ({
26
26
  const element = [];
27
27
  servicesData.forEach((sd) => {
28
28
  if (sd.id_retailer === rt.id) {
29
- element.push(sd.status ? sd.status : "R");
29
+ element.push(sd.status ? sd.status : "RECEIVED");
30
30
  } else element.push("NA");
31
31
  rt["services"] = element;
32
32
  });
@@ -81,4 +81,4 @@ export const FullProductNameHeader = ({
81
81
  </div>
82
82
  </Container>
83
83
  );
84
- };
84
+ };
@@ -17,6 +17,8 @@ export const FullTabsMenu = ({
17
17
  onClickSave,
18
18
  showSaveButton,
19
19
  canAssign,
20
+ version,
21
+ setShowVersionSelector,
20
22
  }) => {
21
23
  const [imagesSection, setImagesSection] = useState(false);
22
24
 
@@ -28,7 +30,7 @@ export const FullTabsMenu = ({
28
30
  setActiveTab={setActiveTab}
29
31
  />
30
32
  <StatusAsignationInfo
31
- canAssign={canAssign}
33
+ canAssign={canAssign}
32
34
  status={status}
33
35
  activeTab={activeTab}
34
36
  setImageLayout={setImageLayout}
@@ -40,6 +42,8 @@ export const FullTabsMenu = ({
40
42
  onClickSave={onClickSave}
41
43
  askToDeleteImages={askToDeleteImages}
42
44
  showSaveButton={showSaveButton}
45
+ version={version}
46
+ setShowVersionSelector={setShowVersionSelector}
43
47
  />
44
48
  </Container>
45
49
  );
@@ -0,0 +1,15 @@
1
+ import { VersionSelector } from "./index";
2
+
3
+ export default {
4
+ title: "Components/organisms/VersionSelector",
5
+ component: VersionSelector,
6
+ };
7
+
8
+ const Template = (args) => <VersionSelector {...args} />;
9
+
10
+ export const VersionSelectorDefault = Template.bind({});
11
+ VersionSelectorDefault.args = {
12
+ articleId: 35707,
13
+ companyName: "COMPANY DEV",
14
+ currentVersion: 7,
15
+ };
@@ -0,0 +1,75 @@
1
+ import { Container } from "./styles";
2
+ import axios from "axios";
3
+ import { useEffect, useState } from "react";
4
+ import { ScreenHeader } from "../../atoms/ScreenHeader";
5
+ import { Button } from "../../atoms/GeneralButton";
6
+ import addVersion from "../../../assets/images/versionSelector/addVersion.svg";
7
+ import closeIcon from "../../../assets/images/versionSelector/closeVersionSelector.svg";
8
+ import { GlobalColors } from "contentoh-components-library/dist/global-files/variables";
9
+ import { FontFamily } from "../../../global-files/variables";
10
+ import { VersionItem } from "../../molecules/VersionItem";
11
+
12
+ export const VersionSelector = ({
13
+ modalId,
14
+ articleId,
15
+ setVersion,
16
+ companyName,
17
+ currentVersion,
18
+ setShowCreateVersion,
19
+ }) => {
20
+ const [versions, setVersions] = useState();
21
+
22
+ const loadProductVersions = async (articleId) => {
23
+ try {
24
+ const response = await axios.get(
25
+ `${process.env.REACT_APP_VERSIONS_ENDPOINT}?articleId=${articleId}&provider=true`
26
+ );
27
+
28
+ const versionList = JSON.parse(response.data.body).data;
29
+ setVersions(versionList);
30
+ } catch (error) {
31
+ console.log(error);
32
+ }
33
+ };
34
+
35
+ useEffect(() => {
36
+ loadProductVersions(articleId);
37
+ }, []);
38
+
39
+ return (
40
+ <Container id={modalId}>
41
+ <div className="versions-header">
42
+ <ScreenHeader
43
+ text={"Version del producto"}
44
+ headerType={"input-name-header"}
45
+ color={GlobalColors.white}
46
+ fontFamily={FontFamily.Lato}
47
+ />
48
+ <div className="buttons-container">
49
+ <Button
50
+ image={addVersion}
51
+ buttonType={"circular-button"}
52
+ onClick={() => setShowCreateVersion(true)}
53
+ id="add-version"
54
+ />
55
+ <Button
56
+ image={closeIcon}
57
+ buttonType={"circular-button"}
58
+ id="close-button"
59
+ />
60
+ </div>
61
+ </div>
62
+ <div className="versions-container">
63
+ {versions?.map((item) => (
64
+ <VersionItem
65
+ version={item.version}
66
+ articleStatus={item.article_status}
67
+ currentVersion={item.version === currentVersion}
68
+ productOwner={companyName}
69
+ setVersion={setVersion}
70
+ />
71
+ ))}
72
+ </div>
73
+ </Container>
74
+ );
75
+ };
@@ -0,0 +1,28 @@
1
+ import styled from "styled-components";
2
+ import { GlobalColors } from "../../../global-files/variables";
3
+
4
+ export const Container = styled.div`
5
+ width: 300px;
6
+ height: 100%;
7
+ background-color: ${GlobalColors.deep_gray};
8
+ padding: 15px;
9
+ overflow: auto;
10
+ position: absolute;
11
+ right: 0;
12
+ top: 0;
13
+
14
+ .versions-header {
15
+ display: flex;
16
+ justify-content: space-between;
17
+ align-items: center;
18
+
19
+ .buttons-container {
20
+ display: flex;
21
+ align-items: center;
22
+
23
+ button + * {
24
+ margin-left: 10px;
25
+ }
26
+ }
27
+ }
28
+ `;