gdx-ui 1.5.0 → 1.7.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.
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PictureZoom = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _util = require("../util");
11
+ var _button = require("../button");
12
+ var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
16
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
17
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
18
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
20
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
21
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
+ var PictureZoom = exports.PictureZoom = function PictureZoom(_ref) {
23
+ var src = _ref.src,
24
+ alt = _ref.alt,
25
+ _ref$width = _ref.width,
26
+ width = _ref$width === void 0 ? '100%' : _ref$width,
27
+ _ref$height = _ref.height,
28
+ height = _ref$height === void 0 ? 600 : _ref$height,
29
+ _ref$bordered = _ref.bordered,
30
+ bordered = _ref$bordered === void 0 ? false : _ref$bordered,
31
+ _ref$maxZoom = _ref.maxZoom,
32
+ maxZoom = _ref$maxZoom === void 0 ? 1.5 : _ref$maxZoom;
33
+ var _useState = (0, _react.useState)(),
34
+ _useState2 = _slicedToArray(_useState, 2),
35
+ imageData = _useState2[0],
36
+ setImageData = _useState2[1];
37
+ var _useState3 = (0, _react.useState)(1),
38
+ _useState4 = _slicedToArray(_useState3, 2),
39
+ zoom = _useState4[0],
40
+ setZoom = _useState4[1];
41
+ var _useState5 = (0, _react.useState)(1),
42
+ _useState6 = _slicedToArray(_useState5, 2),
43
+ minZoom = _useState6[0],
44
+ setMinZoom = _useState6[1];
45
+ var _useState7 = (0, _react.useState)(maxZoom),
46
+ _useState8 = _slicedToArray(_useState7, 2),
47
+ maxZoomState = _useState8[0],
48
+ setMaxZoomState = _useState8[1];
49
+ var _useState9 = (0, _react.useState)({
50
+ x: 0,
51
+ y: 0
52
+ }),
53
+ _useState10 = _slicedToArray(_useState9, 2),
54
+ offset = _useState10[0],
55
+ setOffset = _useState10[1];
56
+ var _useState11 = (0, _react.useState)(false),
57
+ _useState12 = _slicedToArray(_useState11, 2),
58
+ dragging = _useState12[0],
59
+ setDragging = _useState12[1];
60
+ var _useState13 = (0, _react.useState)({
61
+ x: 0,
62
+ y: 0
63
+ }),
64
+ _useState14 = _slicedToArray(_useState13, 2),
65
+ dragStart = _useState14[0],
66
+ setDragStart = _useState14[1];
67
+ var _useState15 = (0, _react.useState)({
68
+ x: 0,
69
+ y: 0
70
+ }),
71
+ _useState16 = _slicedToArray(_useState15, 2),
72
+ imgStart = _useState16[0],
73
+ setImgStart = _useState16[1];
74
+ var containerRef = (0, _react.useRef)(null);
75
+
76
+ // Cuando la imagen y el wrapper están listos, calcula el zoom mínimo y máximo
77
+ (0, _react.useEffect)(function () {
78
+ if (!src) return;
79
+ var image = new Image();
80
+ image.src = src;
81
+ image.onload = function () {
82
+ setImageData({
83
+ width: image.width,
84
+ height: image.height
85
+ });
86
+ };
87
+ }, [src]);
88
+ (0, _react.useEffect)(function () {
89
+ if (!imageData || !containerRef.current) return;
90
+ var wrapper = containerRef.current;
91
+ var dispW = wrapper.clientWidth;
92
+ var dispH = wrapper.clientHeight;
93
+ var zoomW = dispW / imageData.width;
94
+ var zoomH = dispH / imageData.height;
95
+ var fitZoom = Math.min(zoomW, zoomH);
96
+ setMinZoom(fitZoom);
97
+ setZoom(fitZoom);
98
+ setMaxZoomState(Math.max(fitZoom, maxZoom));
99
+ setOffset({
100
+ x: 0,
101
+ y: 0
102
+ });
103
+ // eslint-disable-next-line
104
+ }, [imageData, maxZoom, width, height]);
105
+
106
+ // Limita el offset para que la imagen no se salga del área visible
107
+ var clampOffset = function clampOffset(ox, oy, zoomVal) {
108
+ if (!imageData || !containerRef.current) return {
109
+ x: 0,
110
+ y: 0
111
+ };
112
+ var dispW = containerRef.current.clientWidth;
113
+ var dispH = containerRef.current.clientHeight;
114
+ var imgW = imageData.width * zoomVal;
115
+ var imgH = imageData.height * zoomVal;
116
+ var minX = Math.min(0, dispW - imgW);
117
+ var minY = Math.min(0, dispH - imgH);
118
+ return {
119
+ x: Math.max(minX, Math.min(ox, 0)),
120
+ y: Math.max(minY, Math.min(oy, 0))
121
+ };
122
+ };
123
+
124
+ // Zoom handlers
125
+ var handleZoom = function handleZoom(delta) {
126
+ setZoom(function (prev) {
127
+ var next = Math.max(minZoom, Math.min(prev + delta, maxZoomState));
128
+ setOffset(function (current) {
129
+ return clampOffset(current.x, current.y, next);
130
+ });
131
+ return next;
132
+ });
133
+ };
134
+
135
+ // Wheel zoom (más suave)
136
+ // const handleWheel = (e) => {
137
+ // e.preventDefault();
138
+ // const delta = e.deltaY < 0 ? -0.05 : 0.05;
139
+ // handleZoom(delta);
140
+ // };
141
+
142
+ // Drag handlers (mouse & touch)
143
+ var startDrag = function startDrag(clientX, clientY) {
144
+ setDragging(true);
145
+ setDragStart({
146
+ x: clientX,
147
+ y: clientY
148
+ });
149
+ setImgStart(offset);
150
+ };
151
+ var onMouseDown = function onMouseDown(e) {
152
+ if (zoom === minZoom) return;
153
+ e.preventDefault();
154
+ startDrag(e.clientX, e.clientY);
155
+ };
156
+ var onMouseMove = function onMouseMove(e) {
157
+ if (!dragging) return;
158
+ var dx = e.clientX - dragStart.x;
159
+ var dy = e.clientY - dragStart.y;
160
+ setOffset(clampOffset(imgStart.x + dx, imgStart.y + dy, zoom));
161
+ };
162
+ var onMouseUp = function onMouseUp() {
163
+ return setDragging(false);
164
+ };
165
+
166
+ // Touch events
167
+ var onTouchStart = function onTouchStart(e) {
168
+ if (zoom === minZoom) return;
169
+ if (e.touches.length === 1) {
170
+ var t = e.touches[0];
171
+ startDrag(t.clientX, t.clientY);
172
+ }
173
+ };
174
+ var onTouchMove = function onTouchMove(e) {
175
+ if (!dragging || e.touches.length !== 1) return;
176
+ var t = e.touches[0];
177
+ var dx = t.clientX - dragStart.x;
178
+ var dy = t.clientY - dragStart.y;
179
+ setOffset(clampOffset(imgStart.x + dx, imgStart.y + dy, zoom));
180
+ };
181
+ var onTouchEnd = function onTouchEnd() {
182
+ return setDragging(false);
183
+ };
184
+
185
+ // Reset offset if zoom regresa al mínimo
186
+ // useEffect(() => {
187
+ // if (zoom === minZoom) setOffset({ x: 0, y: 0 });
188
+ // }, [zoom, minZoom]);
189
+
190
+ (0, _react.useEffect)(function () {
191
+ if (!imageData || !containerRef.current) return;
192
+ var wrapper = containerRef.current;
193
+ var dispW = wrapper.clientWidth;
194
+ var dispH = wrapper.clientHeight;
195
+ var zoomW = dispW / imageData.width;
196
+ var zoomH = dispH / imageData.height;
197
+ var fitZoom = Math.min(zoomW, zoomH);
198
+ setMinZoom(fitZoom);
199
+ setZoom(fitZoom);
200
+ setMaxZoomState(Math.max(fitZoom, maxZoom));
201
+
202
+ // Centra la imagen al inicio
203
+ var imgW = imageData.width * fitZoom;
204
+ var imgH = imageData.height * fitZoom;
205
+ var offsetX = (dispW - imgW) / 2;
206
+ var offsetY = (dispH - imgH) / 2;
207
+ setOffset({
208
+ x: offsetX,
209
+ y: offsetY
210
+ });
211
+ // eslint-disable-next-line
212
+ }, [imageData, maxZoom, width, height]);
213
+ (0, _react.useEffect)(function () {
214
+ if (zoom === minZoom && imageData && containerRef.current) {
215
+ var dispW = containerRef.current.clientWidth;
216
+ var dispH = containerRef.current.clientHeight;
217
+ var imgW = imageData.width * minZoom;
218
+ var imgH = imageData.height * minZoom;
219
+ var offsetX = (dispW - imgW) / 2;
220
+ var offsetY = (dispH - imgH) / 2;
221
+ setOffset({
222
+ x: offsetX,
223
+ y: offsetY
224
+ });
225
+ }
226
+ }, [zoom, minZoom, imageData]);
227
+ return /*#__PURE__*/_react["default"].createElement("div", {
228
+ ref: containerRef,
229
+ style: {
230
+ width: width,
231
+ height: height,
232
+ overflow: 'hidden',
233
+ position: 'relative',
234
+ touchAction: 'none',
235
+ userSelect: dragging ? 'none' : undefined,
236
+ background: '#FFF'
237
+ }
238
+ // onWheel={handleWheel}
239
+ ,
240
+ onMouseMove: onMouseMove,
241
+ onMouseUp: onMouseUp,
242
+ onMouseLeave: onMouseUp,
243
+ onTouchMove: onTouchMove,
244
+ onTouchEnd: onTouchEnd,
245
+ className: "".concat(bordered ? 'bordered' : '', " margin-bottom")
246
+ }, imageData ? /*#__PURE__*/_react["default"].createElement("img", {
247
+ src: src,
248
+ alt: alt,
249
+ draggable: false,
250
+ style: {
251
+ width: imageData.width * zoom,
252
+ height: imageData.height * zoom,
253
+ position: 'absolute',
254
+ left: offset.x,
255
+ top: offset.y,
256
+ cursor: zoom > minZoom ? dragging ? 'grabbing' : 'grab' : 'default',
257
+ transition: dragging ? 'none' : 'left 0.1s, top 0.1s',
258
+ userSelect: 'none'
259
+ },
260
+ onMouseDown: zoom > minZoom ? onMouseDown : undefined,
261
+ onTouchStart: zoom > minZoom ? onTouchStart : undefined
262
+ }) : /*#__PURE__*/_react["default"].createElement(_util.Skeleton, {
263
+ width: "100%",
264
+ height: height
265
+ }), /*#__PURE__*/_react["default"].createElement("div", {
266
+ style: {
267
+ position: 'absolute',
268
+ right: 8,
269
+ bottom: 8,
270
+ display: 'flex',
271
+ flexDirection: 'column',
272
+ gap: 15,
273
+ zIndex: 10
274
+ }
275
+ }, /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
276
+ icon: _freeSolidSvgIcons.faPlus,
277
+ type: "button",
278
+ bg: "solid",
279
+ style: {
280
+ cursor: zoom < maxZoomState ? 'pointer' : 'not-allowed'
281
+ },
282
+ onClick: function onClick() {
283
+ return handleZoom(0.5);
284
+ },
285
+ disabled: zoom >= maxZoomState,
286
+ "aria-label": "Zoom in"
287
+ }), /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
288
+ bg: "solid",
289
+ icon: _freeSolidSvgIcons.faMinus,
290
+ type: "button",
291
+ onClick: function onClick() {
292
+ return handleZoom(-0.5);
293
+ },
294
+ disabled: zoom <= minZoom,
295
+ "aria-label": "Zoom out",
296
+ style: {
297
+ cursor: zoom > minZoom ? 'pointer' : 'not-allowed'
298
+ }
299
+ })));
300
+ };
301
+ PictureZoom.propTypes = {
302
+ src: _propTypes["default"].string.isRequired,
303
+ alt: _propTypes["default"].string,
304
+ width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
305
+ height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
306
+ bordered: _propTypes["default"].bool,
307
+ maxZoom: _propTypes["default"].number
308
+ };
@@ -4,7 +4,7 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.Image = void 0;
7
+ exports.Picture = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _util = require("../util");
@@ -17,7 +17,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
17
17
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18
18
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
19
19
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
- var Image = exports.Image = function Image(_ref) {
20
+ var Picture = exports.Picture = function Picture(_ref) {
21
21
  var src = _ref.src,
22
22
  alt = _ref.alt,
23
23
  width = _ref.width,
@@ -51,7 +51,7 @@ var Image = exports.Image = function Image(_ref) {
51
51
  height: height
52
52
  });
53
53
  };
54
- Image.propTypes = {
54
+ Picture.propTypes = {
55
55
  src: _propTypes["default"].string.isRequired,
56
56
  alt: _propTypes["default"].string,
57
57
  width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
@@ -11,6 +11,7 @@ var _util = require("../util");
11
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
12
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
13
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
14
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
14
15
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
15
16
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
17
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -23,7 +24,8 @@ var Thumb = exports.Thumb = function Thumb(_ref) {
23
24
  _ref$bordered = _ref.bordered,
24
25
  bordered = _ref$bordered === void 0 ? false : _ref$bordered,
25
26
  _ref$size = _ref.size,
26
- size = _ref$size === void 0 ? 'medium' : _ref$size;
27
+ size = _ref$size === void 0 ? 'medium' : _ref$size,
28
+ onClick = _ref.onClick;
27
29
  var _useState = (0, _react.useState)(),
28
30
  _useState2 = _slicedToArray(_useState, 2),
29
31
  imageData = _useState2[0],
@@ -40,9 +42,18 @@ var Thumb = exports.Thumb = function Thumb(_ref) {
40
42
  });
41
43
  };
42
44
  }, [src]);
43
- return /*#__PURE__*/_react["default"].createElement("div", {
44
- className: "thumb thumb-".concat(size, " ").concat(bordered ? 'thumb-bordered' : '')
45
- }, imageData ? /*#__PURE__*/_react["default"].createElement("img", {
45
+ var isClickable = typeof onClick === 'function';
46
+ return /*#__PURE__*/_react["default"].createElement("div", _extends({
47
+ className: "thumb thumb-".concat(size, " ").concat(bordered ? 'thumb-bordered' : '', " ").concat(isClickable ? 'clickable bordered-hover' : ''),
48
+ onClick: true
49
+ }, isClickable && {
50
+ onClick: onClick,
51
+ role: 'button',
52
+ tabIndex: 0,
53
+ onKeyDown: function onKeyDown(e) {
54
+ if (e.key === 'Enter' || e.key === ' ') onClick(e);
55
+ }
56
+ }), imageData ? /*#__PURE__*/_react["default"].createElement("img", {
46
57
  src: src,
47
58
  alt: alt,
48
59
  className: "center-by-".concat(imageData.width > imageData.height ? 'width' : 'height')
@@ -54,5 +65,6 @@ Thumb.propTypes = {
54
65
  src: _propTypes["default"].string.isRequired,
55
66
  alt: _propTypes["default"].string,
56
67
  bordered: _propTypes["default"].bool,
57
- size: _propTypes["default"].oneOf(['smallest', 'small', 'medium', 'large', 'largest'])
68
+ size: _propTypes["default"].oneOf(['smallest', 'small', 'medium', 'large', 'largest']),
69
+ onClick: _propTypes["default"].func
58
70
  };
@@ -3,14 +3,25 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- var _Image = require("./Image");
7
- Object.keys(_Image).forEach(function (key) {
6
+ var _CarouselImages = require("./CarouselImages");
7
+ Object.keys(_CarouselImages).forEach(function (key) {
8
8
  if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _Image[key]) return;
9
+ if (key in exports && exports[key] === _CarouselImages[key]) return;
10
10
  Object.defineProperty(exports, key, {
11
11
  enumerable: true,
12
12
  get: function get() {
13
- return _Image[key];
13
+ return _CarouselImages[key];
14
+ }
15
+ });
16
+ });
17
+ var _ImageZoom = require("./ImageZoom");
18
+ Object.keys(_ImageZoom).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _ImageZoom[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _ImageZoom[key];
14
25
  }
15
26
  });
16
27
  });
@@ -12,7 +12,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
12
12
  var Information = exports.Information = function Information(_ref) {
13
13
  var children = _ref.children,
14
14
  _ref$color = _ref.color,
15
- color = _ref$color === void 0 ? 'primary' : _ref$color,
15
+ color = _ref$color === void 0 ? 'default' : _ref$color,
16
16
  icon = _ref.icon;
17
17
  var faIcon = color === 'primary' ? _freeSolidSvgIcons.faInfoCircle : color === 'success' ? _freeSolidSvgIcons.faCircleCheck : color === 'alert' ? _freeSolidSvgIcons.faCircleExclamation : color === 'warning' ? _freeSolidSvgIcons.faTriangleExclamation : _freeSolidSvgIcons.faComment;
18
18
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -4,10 +4,11 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.CardScrollerItem = exports.CardScrollerContext = exports.CardScroller = void 0;
7
+ exports.ListScroller = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _utils = require("../../utils/utils");
10
+ var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
11
+ var _button = require("../button");
11
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
13
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
13
14
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -17,98 +18,94 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
17
18
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18
19
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
19
20
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
- // import { useScreenDimentions } from '../../hooks';
21
-
22
- var CardScrollerContext = exports.CardScrollerContext = /*#__PURE__*/(0, _react.createContext)(null);
23
- var CardScroller = exports.CardScroller = function CardScroller(_ref) {
21
+ var ListScroller = exports.ListScroller = function ListScroller(_ref) {
24
22
  var children = _ref.children,
25
- _ref$visible = _ref.visible,
26
- visible = _ref$visible === void 0 ? 3 : _ref$visible,
27
- _ref$height = _ref.height,
28
- height = _ref$height === void 0 ? 300 : _ref$height;
29
- // const [step, setStep] = useState(0);
30
- var _useState = (0, _react.useState)({
31
- height: height
32
- }),
23
+ _ref$className = _ref.className,
24
+ className = _ref$className === void 0 ? '' : _ref$className,
25
+ _ref$itemWidth = _ref.itemWidth,
26
+ itemWidth = _ref$itemWidth === void 0 ? 120 : _ref$itemWidth,
27
+ _ref$gap = _ref.gap,
28
+ gap = _ref$gap === void 0 ? 15 : _ref$gap;
29
+ var containerRef = (0, _react.useRef)(null);
30
+ var _useState = (0, _react.useState)(false),
33
31
  _useState2 = _slicedToArray(_useState, 2),
34
- settings = _useState2[0],
35
- setSettings = _useState2[1];
36
- // const [marginLeft, setMarginLeft] = useState(0);
37
-
38
- // const wrapperRef = useRef(null);
39
-
40
- // const onKeyHandler = (e) => {
41
- // const { key } = e;
42
- // console.log({ key })
43
- // if (key === 'ArrowRight') {
44
- // setMarginLeft(m => m - step <= 0 ? 0 : m - step);
45
- // } else if (key === 'ArrowLeft') {
46
- // setMarginLeft(marginLeft + step);
47
- // // setMarginLeft(m => m <= 0 ? m : m - step);
48
- // }
49
- // // console.log({marginLeft})
50
- // }
32
+ canScrollLeft = _useState2[0],
33
+ setCanScrollLeft = _useState2[1];
34
+ var _useState3 = (0, _react.useState)(false),
35
+ _useState4 = _slicedToArray(_useState3, 2),
36
+ canScrollRight = _useState4[0],
37
+ setCanScrollRight = _useState4[1];
51
38
 
52
- // const onClickRight = () => {
53
- // setMarginLeft(m => m - step <= 0 ? m : m - step);
54
- // }
39
+ // Actualiza el estado de los botones según el scroll
40
+ var updateScrollButtons = function updateScrollButtons() {
41
+ var el = containerRef.current;
42
+ if (!el) return;
43
+ setCanScrollLeft(el.scrollLeft > 0);
44
+ setCanScrollRight(el.scrollLeft + el.clientWidth < el.scrollWidth - 1);
45
+ };
46
+ (0, _react.useEffect)(function () {
47
+ updateScrollButtons();
48
+ var el = containerRef.current;
49
+ if (!el) return;
50
+ el.addEventListener('scroll', updateScrollButtons);
51
+ window.addEventListener('resize', updateScrollButtons);
52
+ return function () {
53
+ el.removeEventListener('scroll', updateScrollButtons);
54
+ window.removeEventListener('resize', updateScrollButtons);
55
+ };
56
+ }, [children]);
55
57
 
56
- // const onClickLeft = () => {
57
- // setMarginLeft(marginLeft + step);
58
- // }
59
-
60
- // useEffect(() => {
61
- // setStep(wrapperRef.current.offsetWidth / visible);
62
- // }, [])
63
-
64
- return /*#__PURE__*/_react["default"].createElement(CardScrollerContext.Provider, {
65
- value: {
66
- settings: settings,
67
- setSettings: setSettings
58
+ // Scroll a la izquierda/derecha por el ancho de un item
59
+ var scrollBy = function scrollBy(dir) {
60
+ if (containerRef.current) {
61
+ containerRef.current.scrollBy({
62
+ left: dir * (itemWidth + gap),
63
+ behavior: 'smooth'
64
+ });
68
65
  }
69
- }, /*#__PURE__*/_react["default"].createElement("div", {
70
- className: "card-scroller"
71
- }, /*#__PURE__*/_react["default"].createElement("div", {
72
- className: "card-scroller-crop",
73
- style: {
74
- height: height
75
- }
76
- }, /*#__PURE__*/_react["default"].createElement("div", {
77
- className: "card-scroller-overflow"
78
- }, /*#__PURE__*/_react["default"].createElement("div", {
79
- // style={{marginLeft: `${marginLeft}px`}}
80
- className: "card-scroller-platter card-scroller-".concat(visible)
81
- }, children)))));
82
- };
83
- var CardScrollerItem = exports.CardScrollerItem = function CardScrollerItem(_ref2) {
84
- var children = _ref2.children;
85
- // const itemRef = useRef(null);
86
- var _useContext = (0, _react.useContext)(CardScrollerContext),
87
- settings = _useContext.settings;
88
- var height = settings.height;
89
-
90
- // useEffect(() => {
91
- // if (itemRef.current) {
92
- // setSettings({...settings, width: itemRef.current.offsetWidth})
93
- // }
94
- // }, []);
66
+ };
95
67
 
68
+ // Touch/swipe para móviles
69
+ var startX = 0;
70
+ var scrollLeft = 0;
71
+ var onTouchStart = function onTouchStart(e) {
72
+ startX = e.touches[0].pageX;
73
+ scrollLeft = containerRef.current.scrollLeft;
74
+ };
75
+ var onTouchMove = function onTouchMove(e) {
76
+ if (!startX) return;
77
+ var x = e.touches[0].pageX;
78
+ containerRef.current.scrollLeft = scrollLeft - (x - startX);
79
+ };
96
80
  return /*#__PURE__*/_react["default"].createElement("div", {
97
- key: (0, _utils.generateId)(),
98
- className: "card-scroller-item",
81
+ className: "list-scroller-wrapper ".concat(className)
82
+ }, canScrollLeft && /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
83
+ className: "list-scroller-btn list-scroller-btn-left",
84
+ bg: "solid",
85
+ icon: _freeSolidSvgIcons.faChevronLeft,
86
+ onClick: function onClick() {
87
+ return scrollBy(-1);
88
+ }
89
+ }), /*#__PURE__*/_react["default"].createElement("ul", {
90
+ className: "list-scroller",
91
+ ref: containerRef,
99
92
  style: {
100
- height: height + 16
93
+ gap: gap
94
+ },
95
+ onTouchStart: onTouchStart,
96
+ onTouchMove: onTouchMove
97
+ }, children), canScrollRight && /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
98
+ className: "list-scroller-btn list-scroller-btn-right",
99
+ bg: "solid",
100
+ icon: _freeSolidSvgIcons.faChevronRight,
101
+ onClick: function onClick() {
102
+ return scrollBy(1);
101
103
  }
102
- }, /*#__PURE__*/_react["default"].createElement("div", {
103
- // ref={itemRef}
104
- className: "card-scroller-item-sized"
105
- }, children));
106
- };
107
- CardScroller.propTypes = {
108
- children: _propTypes["default"].any,
109
- visible: _propTypes["default"].number,
110
- height: _propTypes["default"].number
104
+ }));
111
105
  };
112
- CardScrollerItem.propTypes = {
113
- children: _propTypes["default"].any
106
+ ListScroller.propTypes = {
107
+ children: _propTypes["default"].node.isRequired,
108
+ className: _propTypes["default"].string,
109
+ itemWidth: _propTypes["default"].number,
110
+ gap: _propTypes["default"].number
114
111
  };
@@ -7,7 +7,6 @@ exports.Snackbar = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
10
- var _reactFontawesome = require("@fortawesome/react-fontawesome");
11
10
  var _IconButton = require("../button/IconButton");
12
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
12
  var Snackbar = exports.Snackbar = function Snackbar(_ref) {
@@ -18,7 +17,7 @@ var Snackbar = exports.Snackbar = function Snackbar(_ref) {
18
17
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
19
18
  className: "snackbar-wrapper"
20
19
  }, /*#__PURE__*/_react["default"].createElement("div", {
21
- className: "snackbar snackbar-".concat(color)
20
+ className: "snackbar bg-".concat(color)
22
21
  }, children, /*#__PURE__*/_react["default"].createElement("div", {
23
22
  className: "snackbar-close"
24
23
  }, /*#__PURE__*/_react["default"].createElement(_IconButton.IconButton, {
@@ -28,6 +27,6 @@ var Snackbar = exports.Snackbar = function Snackbar(_ref) {
28
27
  };
29
28
  Snackbar.propTypes = {
30
29
  children: _propTypes["default"].any,
31
- color: _propTypes["default"].oneOf(['info', 'primary', 'alert', 'success']),
30
+ color: _propTypes["default"].oneOf(['default', 'primary', 'alert', 'success', 'warning']),
32
31
  onClose: _propTypes["default"].func
33
32
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gdx-ui",
3
- "version": "1.5.0",
3
+ "version": "1.7.0",
4
4
  "description": "UI gdx",
5
5
  "main": "index.js",
6
6
  "module": "index.js",