contentoh-components-library 21.1.63 → 21.1.64

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 (71) hide show
  1. package/.env.development +1 -0
  2. package/.env.production +1 -0
  3. package/dist/components/atoms/GeneralButton/index.js +3 -1
  4. package/dist/components/atoms/GeneralButton/styles.js +2 -2
  5. package/dist/components/atoms/InputFormatter/index.js +3 -3
  6. package/dist/components/atoms/ProductPercentCard/Percent.stories.js +1 -1
  7. package/dist/components/atoms/ProductPercentCard/styles.js +1 -1
  8. package/dist/components/atoms/Select/VersionSelect.js +37 -0
  9. package/dist/components/atoms/Select/index.js +4 -3
  10. package/dist/components/atoms/Select/style.js +10 -4
  11. package/dist/components/atoms/SliderToolTip/styles.js +2 -2
  12. package/dist/components/molecules/AssignedWork/AssignedWork.stories.js +1 -1
  13. package/dist/components/molecules/AssignedWork/styles.js +1 -1
  14. package/dist/components/molecules/StatusAsignationInfo/index.js +9 -1
  15. package/dist/components/molecules/VersionItem/VersionItem.stories.js +28 -0
  16. package/dist/components/molecules/VersionItem/index.js +64 -0
  17. package/dist/components/molecules/VersionItem/styles.js +20 -0
  18. package/dist/components/organisms/CreateVersion/CreateVersion.stories.js +31 -0
  19. package/dist/components/organisms/CreateVersion/RenderChilds.js +157 -0
  20. package/dist/components/organisms/CreateVersion/index.js +170 -0
  21. package/dist/components/organisms/CreateVersion/styles.js +28 -0
  22. package/dist/components/organisms/FullProductNameHeader/index.js +1 -1
  23. package/dist/components/organisms/FullTabsMenu/index.js +6 -2
  24. package/dist/components/organisms/VersionSelector/VersionSelector.stories.js +32 -0
  25. package/dist/components/organisms/VersionSelector/index.js +129 -0
  26. package/dist/components/organisms/VersionSelector/styles.js +20 -0
  27. package/dist/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +102 -112
  28. package/dist/components/pages/ProviderProductEdition/index.js +449 -431
  29. package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +53 -72
  30. package/dist/components/pages/RetailerProductEdition/index.js +245 -231
  31. package/dist/global-files/customHooks.js +35 -0
  32. package/dist/global-files/data.js +8 -8
  33. package/package.json +2 -2
  34. package/src/assets/images/versionSelector/acceptIcon.svg +3 -0
  35. package/src/assets/images/versionSelector/addVersion.svg +5 -0
  36. package/src/assets/images/versionSelector/closeVersionSelector.svg +4 -0
  37. package/src/assets/images/versionSelector/createVersion.svg +3 -0
  38. package/src/assets/images/versionSelector/nullIcon.svg +3 -0
  39. package/src/assets/images/versionSelector/versionSelected.svg +3 -0
  40. package/src/components/atoms/GeneralButton/index.js +2 -0
  41. package/src/components/atoms/GeneralButton/styles.js +18 -0
  42. package/src/components/atoms/InputFormatter/index.js +6 -3
  43. package/src/components/atoms/ProductPercentCard/Percent.stories.js +12 -11
  44. package/src/components/atoms/ProductPercentCard/styles.js +9 -9
  45. package/src/components/atoms/ProgressBar/styles.js +69 -0
  46. package/src/components/atoms/Select/VersionSelect.js +25 -0
  47. package/src/components/atoms/Select/index.js +1 -1
  48. package/src/components/atoms/Select/style.js +19 -0
  49. package/src/components/atoms/SliderToolTip/styles.js +18 -14
  50. package/src/components/molecules/AssignedWork/AssignedWork.stories.js +8 -8
  51. package/src/components/molecules/AssignedWork/styles.js +10 -9
  52. package/src/components/molecules/StatusAsignationInfo/index.js +10 -1
  53. package/src/components/molecules/VersionItem/VersionItem.stories.js +14 -0
  54. package/src/components/molecules/VersionItem/index.js +47 -0
  55. package/src/components/molecules/VersionItem/styles.js +32 -0
  56. package/src/components/organisms/CreateVersion/CreateVersion.stories.js +14 -0
  57. package/src/components/organisms/CreateVersion/RenderChilds.js +137 -0
  58. package/src/components/organisms/CreateVersion/index.js +88 -0
  59. package/src/components/organisms/CreateVersion/styles.js +79 -0
  60. package/src/components/organisms/FullProductNameHeader/index.js +2 -2
  61. package/src/components/organisms/FullTabsMenu/index.js +5 -1
  62. package/src/components/organisms/VersionSelector/VersionSelector.stories.js +15 -0
  63. package/src/components/organisms/VersionSelector/index.js +75 -0
  64. package/src/components/organisms/VersionSelector/styles.js +28 -0
  65. package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +116 -134
  66. package/src/components/pages/ProviderProductEdition/index.js +267 -234
  67. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +53 -74
  68. package/src/components/pages/RetailerProductEdition/index.js +201 -151
  69. package/src/global-files/customHooks.js +26 -0
  70. package/src/global-files/data.js +8 -8
  71. 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 createVersion 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={createVersion} 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(() => {
63
+ 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
+ `;