contentoh-components-library 21.6.48 → 21.6.50
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.
- package/.claude/launch.json +14 -0
- package/.env.test +1 -0
- package/dist/ai/prompts/attribute.prompt.js +28 -0
- package/dist/ai/prompts/description.prompt.js +33 -0
- package/dist/ai/schemas/attribute.schema.js +35 -0
- package/dist/ai/schemas/description.schema.js +27 -0
- package/dist/components/atoms/AssetPreview/AssetPreview.stories.js +118 -0
- package/dist/components/atoms/AssetPreview/index.js +150 -0
- package/dist/components/atoms/AssetPreview/styles.js +28 -0
- package/dist/components/atoms/IconFile/index.js +85 -2
- package/dist/components/atoms/IconFile/styles.js +1 -1
- package/dist/components/atoms/ProductImage/ProductImage.stories.js +70 -2
- package/dist/components/atoms/ProductImage/index.js +100 -27
- package/dist/components/atoms/ProductImage/styles.js +3 -1
- package/dist/components/molecules/EditionActiveImage/index.js +4 -2
- package/dist/components/molecules/GalleryAssetElement/GalleryAssetElement.stories.js +147 -0
- package/dist/components/molecules/GalleryAssetElement/index.js +178 -0
- package/dist/components/molecules/GalleryAssetElement/styles.js +26 -0
- package/dist/components/molecules/GalleryElement/index.js +13 -4
- package/dist/components/molecules/GalleryHeader/index.js +96 -24
- package/dist/components/molecules/GalleryHeader/styles.js +4 -1
- package/dist/components/molecules/GalleryTrayTabs/GalleryTrayTabs.stories.js +56 -0
- package/dist/components/molecules/GalleryTrayTabs/index.js +60 -0
- package/dist/components/molecules/GalleryTrayTabs/styles.js +20 -0
- package/dist/components/molecules/ImageSelector/index.js +1 -0
- package/dist/components/organisms/DigitalAssetsTray/DigitalAssetsTray.stories.js +171 -0
- package/dist/components/organisms/DigitalAssetsTray/index.js +211 -0
- package/dist/components/organisms/DigitalAssetsTray/styles.js +22 -0
- package/dist/components/organisms/ImagePreviewer/index.js +1 -0
- package/dist/components/organisms/ProductImageModal/index.js +3 -2
- package/dist/components/organisms/PropagateChangesModal/index.js +12 -1
- package/dist/components/organisms/PropagateChangesModal/non-propagable.js +45 -0
- package/dist/components/organisms/VariantGroupModal/index.js +261 -37
- package/dist/components/organisms/VariantGroupModal/styles.js +25 -5
- package/dist/components/pages/ProviderProductEdition/index.js +11 -1
- package/dist/components/pages/RetailerProductEdition/context/provider-product-edition.context.js +330 -15
- package/dist/components/pages/RetailerProductEdition/context/provider-product-edition.reducer.js +12 -2
- package/dist/components/pages/RetailerProductEdition/index.js +605 -414
- package/dist/components/pages/RetailerProductEdition/stories/ImageEditor.stories.js +1 -0
- package/dist/components/pages/RetailerProductEdition/stories/TextEditor.stories.js +45 -145
- package/dist/global-files/data.js +16 -3
- package/dist/global-files/digital-assets/assetTypes.js +480 -0
- package/dist/global-files/digital-assets/assets.actions.js +64 -0
- package/dist/global-files/digital-assets/assets.adapter.js +304 -0
- package/dist/global-files/digital-assets/assets.mock.js +136 -0
- package/dist/global-files/digital-assets/assets.reducer.js +220 -0
- package/dist/global-files/digital-assets/uploadAssets.js +179 -0
- package/dist/global-files/digital-assets/useDigitalAssets.js +522 -0
- package/dist/index.js +142 -90
- package/docs/activos-digitales.md +273 -0
- package/package.json +1 -1
- package/src/components/atoms/AssetPreview/AssetPreview.stories.js +78 -0
- package/src/components/atoms/AssetPreview/index.js +119 -0
- package/src/components/atoms/AssetPreview/styles.js +190 -0
- package/src/components/atoms/IconFile/index.js +28 -1
- package/src/components/atoms/IconFile/styles.js +8 -0
- package/src/components/atoms/ProductImage/ProductImage.stories.js +38 -0
- package/src/components/atoms/ProductImage/index.js +95 -20
- package/src/components/atoms/ProductImage/styles.js +92 -7
- package/src/components/molecules/EditionActiveImage/index.js +2 -2
- package/src/components/molecules/GalleryAssetElement/GalleryAssetElement.stories.js +102 -0
- package/src/components/molecules/GalleryAssetElement/index.js +162 -0
- package/src/components/molecules/GalleryAssetElement/styles.js +159 -0
- package/src/components/molecules/GalleryElement/index.js +9 -0
- package/src/components/molecules/GalleryHeader/index.js +65 -13
- package/src/components/molecules/GalleryHeader/styles.js +2 -1
- package/src/components/molecules/GalleryTrayTabs/GalleryTrayTabs.stories.js +32 -0
- package/src/components/molecules/GalleryTrayTabs/index.js +41 -0
- package/src/components/molecules/GalleryTrayTabs/styles.js +52 -0
- package/src/components/molecules/ImageSelector/index.js +1 -0
- package/src/components/organisms/DigitalAssetsTray/DigitalAssetsTray.stories.js +101 -0
- package/src/components/organisms/DigitalAssetsTray/index.js +189 -0
- package/src/components/organisms/DigitalAssetsTray/styles.js +183 -0
- package/src/components/organisms/ImagePreviewer/index.js +1 -0
- package/src/components/organisms/ProductImageModal/index.js +1 -0
- package/src/components/organisms/PropagateChangesModal/index.js +11 -1
- package/src/components/organisms/PropagateChangesModal/non-propagable.js +29 -0
- package/src/components/organisms/VariantGroupModal/index.js +235 -38
- package/src/components/organisms/VariantGroupModal/styles.js +148 -1
- package/src/components/pages/ProviderProductEdition/index.js +10 -1
- package/src/components/pages/RetailerProductEdition/context/provider-product-edition.context.jsx +201 -0
- package/src/components/pages/RetailerProductEdition/context/provider-product-edition.reducer.js +12 -0
- package/src/components/pages/RetailerProductEdition/index.js +366 -140
- package/src/components/pages/RetailerProductEdition/stories/ImageEditor.stories.js +1 -0
- package/src/components/pages/RetailerProductEdition/stories/TextEditor.stories.js +51 -104
- package/src/global-files/data.js +17 -2
- package/src/global-files/digital-assets/assetTypes.js +419 -0
- package/src/global-files/digital-assets/assets.actions.js +50 -0
- package/src/global-files/digital-assets/assets.adapter.js +229 -0
- package/src/global-files/digital-assets/assets.mock.js +122 -0
- package/src/global-files/digital-assets/assets.reducer.js +197 -0
- package/src/global-files/digital-assets/uploadAssets.js +109 -0
- package/src/global-files/digital-assets/useDigitalAssets.js +329 -0
- package/src/index.js +4 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.GalleryHeader = void 0;
|
|
6
|
+
exports.GalleryHeader = exports.GALLERY_COLUMNS = void 0;
|
|
7
7
|
|
|
8
8
|
var _styles = require("./styles");
|
|
9
9
|
|
|
@@ -11,13 +11,97 @@ var _CheckBox = require("../../atoms/CheckBox");
|
|
|
11
11
|
|
|
12
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
13
|
|
|
14
|
+
/*
|
|
15
|
+
Las columnas de la bandeja dependen de qué se está listando: un PDF no tiene
|
|
16
|
+
"tipo de toma" ni alto por ancho, y una foto no tiene "tipo de activo".
|
|
17
|
+
Estaban escritas a mano en el marcado, así que la única forma de cambiarlas
|
|
18
|
+
era duplicar el componente.
|
|
19
|
+
|
|
20
|
+
El preset `image` reproduce exactamente las columnas y clases de antes, para
|
|
21
|
+
que la bandeja de imágenes se vea idéntica sin que nadie tenga que pasar nada.
|
|
22
|
+
*/
|
|
23
|
+
var GALLERY_COLUMNS = {
|
|
24
|
+
image: {
|
|
25
|
+
template: "0.1fr 1fr 1fr 1fr 1fr 1fr",
|
|
26
|
+
columns: [{
|
|
27
|
+
key: "preview",
|
|
28
|
+
label: "Imagen",
|
|
29
|
+
className: "image-header"
|
|
30
|
+
}, {
|
|
31
|
+
key: "name",
|
|
32
|
+
label: "Nombre",
|
|
33
|
+
className: "image-name"
|
|
34
|
+
}, {
|
|
35
|
+
key: "size",
|
|
36
|
+
label: "Tamaño",
|
|
37
|
+
className: "image-size"
|
|
38
|
+
}, {
|
|
39
|
+
key: "format",
|
|
40
|
+
label: "Formato",
|
|
41
|
+
className: "image-format"
|
|
42
|
+
}, {
|
|
43
|
+
key: "legend",
|
|
44
|
+
label: "¿Tiene leyenda?",
|
|
45
|
+
className: "image-description"
|
|
46
|
+
}, {
|
|
47
|
+
key: "shotType",
|
|
48
|
+
label: "Tipo de toma",
|
|
49
|
+
className: "shoot-type"
|
|
50
|
+
}]
|
|
51
|
+
},
|
|
52
|
+
asset: {
|
|
53
|
+
template: "0.1fr 1fr 1fr 1fr 1fr",
|
|
54
|
+
columns: [{
|
|
55
|
+
key: "preview",
|
|
56
|
+
label: "Activo",
|
|
57
|
+
className: "asset-header"
|
|
58
|
+
}, {
|
|
59
|
+
key: "name",
|
|
60
|
+
label: "Nombre",
|
|
61
|
+
className: "asset-name"
|
|
62
|
+
}, {
|
|
63
|
+
key: "weight",
|
|
64
|
+
label: "Peso",
|
|
65
|
+
className: "asset-weight"
|
|
66
|
+
}, {
|
|
67
|
+
key: "format",
|
|
68
|
+
label: "Formato",
|
|
69
|
+
className: "asset-format"
|
|
70
|
+
}, {
|
|
71
|
+
key: "assetType",
|
|
72
|
+
label: "Tipo de activo",
|
|
73
|
+
className: "asset-type"
|
|
74
|
+
}]
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Encabezado de la bandeja, con su casilla de "seleccionar todo".
|
|
79
|
+
*
|
|
80
|
+
* `checkAllId` e `itemSelector` se pueden cambiar porque imágenes y activos
|
|
81
|
+
* conviven en la misma pestaña: si las dos listas compartieran el id de la
|
|
82
|
+
* casilla global, marcar todas las imágenes marcaría también los activos.
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
exports.GALLERY_COLUMNS = GALLERY_COLUMNS;
|
|
86
|
+
|
|
14
87
|
var GalleryHeader = function GalleryHeader(_ref) {
|
|
88
|
+
var _GALLERY_COLUMNS$vari;
|
|
89
|
+
|
|
15
90
|
var setCheckAll = _ref.setCheckAll,
|
|
16
91
|
setSelectedImages = _ref.setSelectedImages,
|
|
17
|
-
shotThd = _ref.shotThd
|
|
92
|
+
shotThd = _ref.shotThd,
|
|
93
|
+
_ref$variant = _ref.variant,
|
|
94
|
+
variant = _ref$variant === void 0 ? "image" : _ref$variant,
|
|
95
|
+
columns = _ref.columns,
|
|
96
|
+
_ref$checkAllId = _ref.checkAllId,
|
|
97
|
+
checkAllId = _ref$checkAllId === void 0 ? "check-all-images" : _ref$checkAllId,
|
|
98
|
+
_ref$itemSelector = _ref.itemSelector,
|
|
99
|
+
itemSelector = _ref$itemSelector === void 0 ? "[id^='gallery-element-']" : _ref$itemSelector;
|
|
100
|
+
var preset = (_GALLERY_COLUMNS$vari = GALLERY_COLUMNS[variant]) !== null && _GALLERY_COLUMNS$vari !== void 0 ? _GALLERY_COLUMNS$vari : GALLERY_COLUMNS.image;
|
|
101
|
+
var visibleColumns = columns !== null && columns !== void 0 ? columns : preset.columns;
|
|
18
102
|
|
|
19
103
|
var checkAll = function checkAll(e) {
|
|
20
|
-
var checkboxList = document.querySelectorAll(
|
|
104
|
+
var checkboxList = document.querySelectorAll(itemSelector);
|
|
21
105
|
checkboxList.forEach(function (chk) {
|
|
22
106
|
return chk.checked = e.target.checked;
|
|
23
107
|
});
|
|
@@ -26,35 +110,23 @@ var GalleryHeader = function GalleryHeader(_ref) {
|
|
|
26
110
|
};
|
|
27
111
|
|
|
28
112
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styles.Container, {
|
|
113
|
+
template: preset.template,
|
|
29
114
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
30
115
|
className: "checkbox",
|
|
31
116
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CheckBox.CheckBox, {
|
|
32
|
-
id:
|
|
117
|
+
id: checkAllId,
|
|
33
118
|
onChange: function onChange(e) {
|
|
34
119
|
return checkAll(e);
|
|
35
120
|
}
|
|
36
121
|
})
|
|
37
|
-
}), /*#__PURE__*/(0, _jsxRuntime.
|
|
122
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
38
123
|
className: "information",
|
|
39
|
-
children:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
46
|
-
className: "image-size",
|
|
47
|
-
children: "Tama\xF1o"
|
|
48
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
49
|
-
className: "image-format",
|
|
50
|
-
children: "Formato"
|
|
51
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
52
|
-
className: "image-description",
|
|
53
|
-
children: "\xBFTiene leyenda?"
|
|
54
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
55
|
-
className: "shoot-type",
|
|
56
|
-
children: "Tipo de toma"
|
|
57
|
-
})]
|
|
124
|
+
children: visibleColumns.map(function (column) {
|
|
125
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
126
|
+
className: column.className,
|
|
127
|
+
children: column.label
|
|
128
|
+
}, column.key);
|
|
129
|
+
})
|
|
58
130
|
})]
|
|
59
131
|
});
|
|
60
132
|
};
|
|
@@ -15,6 +15,9 @@ var _variables = require("../../../global-files/variables");
|
|
|
15
15
|
|
|
16
16
|
var _templateObject;
|
|
17
17
|
|
|
18
|
-
var Container = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n width: 100%;\n padding: 10px;\n padding-left: 0;\n align-items: center;\n\n .checkbox{\n width: 5.25%;\n }\n\n .information{\n width: 90%;\n display: grid;\n grid-template-columns:
|
|
18
|
+
var Container = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n width: 100%;\n padding: 10px;\n padding-left: 0;\n align-items: center;\n\n .checkbox{\n width: 5.25%;\n }\n\n .information{\n width: 90%;\n display: grid;\n /* Lo define el preset de columnas; el valor por defecto es el de im\xE1genes. */\n grid-template-columns: ", ";\n }\n .image-header{\n\n }\n\n .image-name{\n padding-left: 1.75rem;\n }\n\n .image-size{\n padding-left: 2.75rem;\n\n }\n\n .image-format{\n padding-left: 4.5rem;\n\n }\n\n .image-description{\n margin-left: -1rem;\n }\n\n .shoot-type{\n }\n\n p {\n font-family: ", ";\n font-style: normal;\n font-weight: 600;\n font-size: 14px;\n line-height: 21px;\n letter-spacing: -0.015em;\n color: ", ";\n flex: 1;\n text-align: center;\n\n /*&.value-header {\n max-width: 60px;\n }\n\n &.image-header {\n max-width: 60px;\n }\n\n &.image-name {\n min-width: 20%;\n }\n\n &.image-format {\n max-width: 60px;\n }\n\n &.image-size {\n max-width: 90px;\n }\n\n &.image-identifier {\n max-width: 80px;\n }\n\n &.image-description {\n max-width: 120px;\n }*/\n }\n"])), function (_ref) {
|
|
19
|
+
var template = _ref.template;
|
|
20
|
+
return template || "0.1fr 1fr 1fr 1fr 1fr 1fr";
|
|
21
|
+
}, _variables.FontFamily.AvenirNext, _variables.GlobalColors.s5);
|
|
19
22
|
|
|
20
23
|
exports.Container = Container;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.SinActivos = exports.Interactivo = void 0;
|
|
9
|
+
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
11
|
+
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
|
|
14
|
+
var _index = require("./index");
|
|
15
|
+
|
|
16
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
+
|
|
18
|
+
var _default = {
|
|
19
|
+
title: "Components/molecules/GalleryTrayTabs",
|
|
20
|
+
component: _index.GalleryTrayTabs
|
|
21
|
+
};
|
|
22
|
+
exports.default = _default;
|
|
23
|
+
|
|
24
|
+
var Interactivo = function Interactivo() {
|
|
25
|
+
var _useState = (0, _react.useState)(_index.TRAYS.IMAGES),
|
|
26
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
27
|
+
tray = _useState2[0],
|
|
28
|
+
setTray = _useState2[1];
|
|
29
|
+
|
|
30
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.GalleryTrayTabs, {
|
|
31
|
+
activeTray: tray,
|
|
32
|
+
setActiveTray: setTray,
|
|
33
|
+
imagesCount: 8,
|
|
34
|
+
assetsCount: 3
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
/** Estado real hasta que exista el backend: la bandeja de activos en cero. */
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
exports.Interactivo = Interactivo;
|
|
41
|
+
|
|
42
|
+
var SinActivos = function SinActivos() {
|
|
43
|
+
var _useState3 = (0, _react.useState)(_index.TRAYS.IMAGES),
|
|
44
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
45
|
+
tray = _useState4[0],
|
|
46
|
+
setTray = _useState4[1];
|
|
47
|
+
|
|
48
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.GalleryTrayTabs, {
|
|
49
|
+
activeTray: tray,
|
|
50
|
+
setActiveTray: setTray,
|
|
51
|
+
imagesCount: 8,
|
|
52
|
+
assetsCount: 0
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
exports.SinActivos = SinActivos;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TRAYS = exports.GalleryTrayTabs = void 0;
|
|
7
|
+
|
|
8
|
+
var _styles = require("./styles");
|
|
9
|
+
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
|
|
12
|
+
var TRAYS = {
|
|
13
|
+
IMAGES: "images",
|
|
14
|
+
ASSETS: "assets"
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Selector entre las dos bandejas de la pestaña Imágenes.
|
|
18
|
+
*
|
|
19
|
+
* Los activos viven aquí y no en una pestaña propia porque es lo que pide la
|
|
20
|
+
* tarea —"dentro de las bandejas de imágenes"— y porque así comparten
|
|
21
|
+
* selección, descarga y permisos con las fotos en vez de duplicarlos.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
exports.TRAYS = TRAYS;
|
|
25
|
+
|
|
26
|
+
var GalleryTrayTabs = function GalleryTrayTabs(_ref) {
|
|
27
|
+
var _ref$activeTray = _ref.activeTray,
|
|
28
|
+
activeTray = _ref$activeTray === void 0 ? TRAYS.IMAGES : _ref$activeTray,
|
|
29
|
+
setActiveTray = _ref.setActiveTray,
|
|
30
|
+
_ref$imagesCount = _ref.imagesCount,
|
|
31
|
+
imagesCount = _ref$imagesCount === void 0 ? 0 : _ref$imagesCount,
|
|
32
|
+
_ref$assetsCount = _ref.assetsCount,
|
|
33
|
+
assetsCount = _ref$assetsCount === void 0 ? 0 : _ref$assetsCount;
|
|
34
|
+
var trays = [{
|
|
35
|
+
id: TRAYS.IMAGES,
|
|
36
|
+
label: "Imágenes",
|
|
37
|
+
count: imagesCount
|
|
38
|
+
}, {
|
|
39
|
+
id: TRAYS.ASSETS,
|
|
40
|
+
label: "Activos digitales",
|
|
41
|
+
count: assetsCount
|
|
42
|
+
}];
|
|
43
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_styles.Container, {
|
|
44
|
+
children: trays.map(function (tray) {
|
|
45
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("button", {
|
|
46
|
+
type: "button",
|
|
47
|
+
className: tray.id === activeTray ? "tray-tab active" : "tray-tab",
|
|
48
|
+
onClick: function onClick() {
|
|
49
|
+
return setActiveTray === null || setActiveTray === void 0 ? void 0 : setActiveTray(tray.id);
|
|
50
|
+
},
|
|
51
|
+
children: [tray.label, /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
52
|
+
className: "tray-count",
|
|
53
|
+
children: tray.count
|
|
54
|
+
})]
|
|
55
|
+
}, tray.id);
|
|
56
|
+
})
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
exports.GalleryTrayTabs = GalleryTrayTabs;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.Container = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
|
+
|
|
14
|
+
var _variables = require("../../../global-files/variables");
|
|
15
|
+
|
|
16
|
+
var _templateObject;
|
|
17
|
+
|
|
18
|
+
var Container = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px 0 0;\n\n .tray-tab {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border: none;\n border-bottom: 2px solid transparent;\n background: none;\n cursor: pointer;\n font-family: ", ";\n font-size: 14px;\n line-height: 21px;\n letter-spacing: -0.015em;\n color: ", ";\n\n &:hover {\n color: ", ";\n }\n\n &.active {\n color: ", ";\n font-weight: 600;\n border-bottom-color: ", ";\n }\n }\n\n .tray-count {\n min-width: 20px;\n padding: 0 6px;\n border-radius: 10px;\n background: ", ";\n color: ", ";\n font-family: ", ";\n font-size: 11px;\n line-height: 18px;\n text-align: center;\n }\n\n .active .tray-count {\n background: ", ";\n color: ", ";\n }\n"])), _variables.FontFamily.AvenirNext, _variables.GlobalColors.s4, _variables.GlobalColors.s5, _variables.GlobalColors.s5, _variables.GlobalColors.color_purple, _variables.GlobalColors.s2, _variables.GlobalColors.s5, _variables.FontFamily.Lato, _variables.GlobalColors.color_purple, _variables.GlobalColors.white);
|
|
19
|
+
|
|
20
|
+
exports.Container = Container;
|
|
@@ -24,6 +24,7 @@ var ImageSelector = function ImageSelector(_ref) {
|
|
|
24
24
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.ProductImage, {
|
|
25
25
|
img: image.src,
|
|
26
26
|
altText: image.altText,
|
|
27
|
+
ext: image.ext,
|
|
27
28
|
imageType: modalSelector ? "catalogue-modal-image" : "carousel-image",
|
|
28
29
|
onClick: function onClick() {
|
|
29
30
|
return setActiveImage(index);
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.Vacia = exports.SoloLectura = exports.PayloadDeGuardado = exports.Cuadricula = exports.ConActivos = void 0;
|
|
9
|
+
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _react = require("react");
|
|
15
|
+
|
|
16
|
+
var _index = require("./index");
|
|
17
|
+
|
|
18
|
+
var _useDigitalAssets = require("../../../global-files/digital-assets/useDigitalAssets");
|
|
19
|
+
|
|
20
|
+
var _assets = require("../../../global-files/digital-assets/assets.reducer");
|
|
21
|
+
|
|
22
|
+
var _assets2 = require("../../../global-files/digital-assets/assets.adapter");
|
|
23
|
+
|
|
24
|
+
var _assets3 = require("../../../global-files/digital-assets/assets.mock");
|
|
25
|
+
|
|
26
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
|
+
|
|
28
|
+
var _default = {
|
|
29
|
+
title: "Components/organisms/DigitalAssetsTray",
|
|
30
|
+
component: _index.DigitalAssetsTray
|
|
31
|
+
};
|
|
32
|
+
/*
|
|
33
|
+
Las historias usan EL MISMO reducer que la ficha, no un estado de juguete.
|
|
34
|
+
Así lo que se ve aquí es el comportamiento real: qué queda marcado para
|
|
35
|
+
guardar, qué se anota para borrar y qué payload saldría hacia el backend.
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
exports.default = _default;
|
|
39
|
+
|
|
40
|
+
var Demo = function Demo(_ref) {
|
|
41
|
+
var _ref$initialAssets = _ref.initialAssets,
|
|
42
|
+
initialAssets = _ref$initialAssets === void 0 ? [] : _ref$initialAssets,
|
|
43
|
+
_ref$gridLayout = _ref.gridLayout,
|
|
44
|
+
gridLayout = _ref$gridLayout === void 0 ? false : _ref$gridLayout,
|
|
45
|
+
_ref$readOnly = _ref.readOnly,
|
|
46
|
+
readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
|
|
47
|
+
_ref$showPayload = _ref.showPayload,
|
|
48
|
+
showPayload = _ref$showPayload === void 0 ? false : _ref$showPayload;
|
|
49
|
+
|
|
50
|
+
var _useReducer = (0, _react.useReducer)(_assets.assetsReducer, _assets.assetsInitialState),
|
|
51
|
+
_useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2),
|
|
52
|
+
state = _useReducer2[0],
|
|
53
|
+
dispatch = _useReducer2[1];
|
|
54
|
+
|
|
55
|
+
var _useState = (0, _react.useState)([]),
|
|
56
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
57
|
+
notices = _useState2[0],
|
|
58
|
+
setNotices = _useState2[1];
|
|
59
|
+
|
|
60
|
+
var tray = (0, _useDigitalAssets.useDigitalAssets)({
|
|
61
|
+
assets: state.assets_values,
|
|
62
|
+
dispatch: dispatch,
|
|
63
|
+
notices: notices,
|
|
64
|
+
setNotices: setNotices
|
|
65
|
+
}); // Carga inicial simulando la respuesta del backend, una sola vez.
|
|
66
|
+
|
|
67
|
+
var _useState3 = (0, _react.useState)(false),
|
|
68
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
69
|
+
loaded = _useState4[0],
|
|
70
|
+
setLoaded = _useState4[1];
|
|
71
|
+
|
|
72
|
+
if (!loaded && initialAssets.length) {
|
|
73
|
+
tray.replaceAll(initialAssets);
|
|
74
|
+
setLoaded(true);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
var payload = (0, _assets2.buildSavePayload)((0, _assets.selectAssetsToSave)(state));
|
|
78
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
79
|
+
style: {
|
|
80
|
+
width: 960
|
|
81
|
+
},
|
|
82
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_index.DigitalAssetsTray, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, tray), {}, {
|
|
83
|
+
unsaved: (0, _assets.countUnsavedAssets)(state),
|
|
84
|
+
gridLayout: gridLayout,
|
|
85
|
+
readOnly: readOnly,
|
|
86
|
+
selectedAssets: state.selected_assets,
|
|
87
|
+
setSelectedAssets: function setSelectedAssets(assets) {
|
|
88
|
+
return dispatch({
|
|
89
|
+
type: "SET_SELECTED_ASSETS",
|
|
90
|
+
payload: assets
|
|
91
|
+
});
|
|
92
|
+
},
|
|
93
|
+
setCheckAll: function setCheckAll(checked) {
|
|
94
|
+
return dispatch({
|
|
95
|
+
type: "TOGGLE_CHECK_ALL_ASSETS",
|
|
96
|
+
payload: checked
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
})), /*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
|
|
100
|
+
style: {
|
|
101
|
+
fontFamily: "Lato",
|
|
102
|
+
fontSize: 12
|
|
103
|
+
},
|
|
104
|
+
children: ["Seleccionados: ", state.selected_assets.length, " \xB7 Sin subir: ", tray.pending.length, " \xB7 Marcados para actualizar: ", state.updated_assets.length, " \xB7 Para borrar:", " ", state.deleted_assets.length, " \xB7 \xBFHay cambios sin guardar?", " ", (0, _assets.hasUnsavedAssets)(state) ? "sí" : "no"]
|
|
105
|
+
}), showPayload && /*#__PURE__*/(0, _jsxRuntime.jsx)("pre", {
|
|
106
|
+
style: {
|
|
107
|
+
fontSize: 11,
|
|
108
|
+
background: "#f7f7fc",
|
|
109
|
+
padding: 12,
|
|
110
|
+
borderRadius: 6,
|
|
111
|
+
maxHeight: 280,
|
|
112
|
+
overflow: "auto"
|
|
113
|
+
},
|
|
114
|
+
children: JSON.stringify(payload, null, 2)
|
|
115
|
+
})]
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Estado real de hoy: sin backend, la bandeja arranca vacía. Arrastrar un mp4,
|
|
120
|
+
* un gif, un PDF, un xlsx o un psd lo valida y lo agrega; cualquier otra cosa se
|
|
121
|
+
* rechaza con su motivo. Nada se sube.
|
|
122
|
+
*/
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
var Vacia = function Vacia() {
|
|
126
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Demo, {});
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
exports.Vacia = Vacia;
|
|
130
|
+
|
|
131
|
+
var ConActivos = function ConActivos() {
|
|
132
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Demo, {
|
|
133
|
+
initialAssets: _assets3.backendAssetsMock
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
exports.ConActivos = ConActivos;
|
|
138
|
+
|
|
139
|
+
var Cuadricula = function Cuadricula() {
|
|
140
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Demo, {
|
|
141
|
+
initialAssets: _assets3.backendAssetsMock,
|
|
142
|
+
gridLayout: true
|
|
143
|
+
});
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
exports.Cuadricula = Cuadricula;
|
|
147
|
+
|
|
148
|
+
var SoloLectura = function SoloLectura() {
|
|
149
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Demo, {
|
|
150
|
+
initialAssets: _assets3.backendAssetsMock,
|
|
151
|
+
readOnly: true
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Lo que se le enviaría al backend, actualizándose en vivo. Cambia el tipo de un
|
|
156
|
+
* activo y aparece en `updateAssets`; bórralo y su id pasa a `deleteAssets`;
|
|
157
|
+
* suelta un archivo nuevo y aparece en `newAssets` sin `key`, porque todavía no
|
|
158
|
+
* se ha subido a S3.
|
|
159
|
+
*/
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
exports.SoloLectura = SoloLectura;
|
|
163
|
+
|
|
164
|
+
var PayloadDeGuardado = function PayloadDeGuardado() {
|
|
165
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Demo, {
|
|
166
|
+
initialAssets: _assets3.backendAssetsMock,
|
|
167
|
+
showPayload: true
|
|
168
|
+
});
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
exports.PayloadDeGuardado = PayloadDeGuardado;
|