ywana-core8 0.1.55 → 0.1.57

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/dist/index.cjs CHANGED
@@ -3,6 +3,7 @@ var React = require('react');
3
3
  var ResumableJS = require('resumablejs');
4
4
  var RSwitch = require('react-switch');
5
5
  var reactNotificationsComponent = require('react-notifications-component');
6
+ var framerMotion = require('framer-motion');
6
7
  require('react-notifications-component/dist/theme.css');
7
8
  var moment$1 = require('moment');
8
9
  var momentRange = require('moment-range');
@@ -3347,6 +3348,75 @@ var Page = function Page(props) {
3347
3348
  }, children));
3348
3349
  };
3349
3350
 
3351
+ /**
3352
+ * Use Hash Page
3353
+ */
3354
+ function useHashPage(defaultPage) {
3355
+ if (defaultPage === void 0) {
3356
+ defaultPage = "home";
3357
+ }
3358
+ var getCurrentPageFromURL = function getCurrentPageFromURL() {
3359
+ var hash = window.location.hash.replace("#", "");
3360
+ return hash || defaultPage;
3361
+ };
3362
+ var _useState = React.useState(getCurrentPageFromURL()),
3363
+ page = _useState[0],
3364
+ setPage = _useState[1];
3365
+ var _useState2 = React.useState([]),
3366
+ history = _useState2[0],
3367
+ setHistory = _useState2[1];
3368
+ var _useState3 = React.useState("left"),
3369
+ setDirection = _useState3[1];
3370
+ var isFirstLoad = React.useRef(true);
3371
+ React.useEffect(function () {
3372
+ var handleHashChange = function handleHashChange() {
3373
+ var newPage = getCurrentPageFromURL();
3374
+ if (!isFirstLoad.current) {
3375
+ setHistory(function (prev) {
3376
+ return [].concat(prev, [page]);
3377
+ }); // Guarda la página anterior
3378
+ } else {
3379
+ isFirstLoad.current = false;
3380
+ }
3381
+ setPage(newPage);
3382
+ };
3383
+ window.addEventListener("hashchange", handleHashChange);
3384
+ return function () {
3385
+ return window.removeEventListener("hashchange", handleHashChange);
3386
+ };
3387
+ }, [page]);
3388
+ var _goto = function _goto(id, dir) {
3389
+ if (dir === void 0) {
3390
+ dir = "left";
3391
+ }
3392
+ if (page) {
3393
+ setHistory(function (prev) {
3394
+ return [].concat(prev, [page]);
3395
+ });
3396
+ }
3397
+ setDirection(dir);
3398
+ setPage(id);
3399
+ window.location.hash = id;
3400
+ };
3401
+ var goBack = function goBack() {
3402
+ if (history.length > 0) {
3403
+ var lastPage = history[history.length - 1];
3404
+ setHistory(function (prev) {
3405
+ return prev.slice(0, -1);
3406
+ });
3407
+ setDirection("right");
3408
+ setPage(lastPage);
3409
+ window.location.hash = lastPage;
3410
+ }
3411
+ };
3412
+ return {
3413
+ page: page,
3414
+ "goto": _goto,
3415
+ goBack: goBack,
3416
+ history: history
3417
+ };
3418
+ }
3419
+
3350
3420
  /**
3351
3421
  * Site Provider
3352
3422
  */
@@ -3387,30 +3457,10 @@ var SiteProvider = function SiteProvider(_ref) {
3387
3457
  var _useState11 = React.useState(),
3388
3458
  breadcrumb = _useState11[0],
3389
3459
  setBreadcrumb = _useState11[1];
3390
- var _useState12 = React.useState([]),
3391
- history = _useState12[0],
3392
- setHistory = _useState12[1];
3393
-
3394
- // 📌 Extraer la página actual desde la URL (por defecto "home")
3395
- var getCurrentPageFromURL = function getCurrentPageFromURL() {
3396
- var path = window.location.pathname.replace("/", "");
3397
- return path || "home";
3398
- };
3399
- var _useState13 = React.useState(getCurrentPageFromURL()),
3400
- page = _useState13[0],
3401
- setPage = _useState13[1];
3402
- React.useEffect(function () {
3403
- // 📌 Detectar cambios en la URL cuando el usuario presiona "Atrás" o "Adelante"
3404
- var handlePopState = function handlePopState(event) {
3405
- var _event$state;
3406
- var previousPage = ((_event$state = event.state) == null ? void 0 : _event$state.page) || "home";
3407
- setPage(previousPage);
3408
- };
3409
- window.addEventListener("popstate", handlePopState);
3410
- return function () {
3411
- return window.removeEventListener("popstate", handlePopState);
3412
- };
3413
- }, []);
3460
+ var _useHashPage = useHashPage(),
3461
+ page = _useHashPage.page,
3462
+ _goto = _useHashPage["goto"],
3463
+ goBack = _useHashPage.goBack;
3414
3464
  var value = {
3415
3465
  lang: lang,
3416
3466
  setLang: setLang,
@@ -3420,15 +3470,6 @@ var SiteProvider = function SiteProvider(_ref) {
3420
3470
  var _dictionary$key;
3421
3471
  return (dictionary == null ? void 0 : (_dictionary$key = dictionary[key]) == null ? void 0 : _dictionary$key[lang]) || key;
3422
3472
  }, [lang, dictionary]),
3423
- /*
3424
- translate: (key) => {
3425
- if (!key) return key
3426
- if (dictionary === undefined) return key
3427
- const term = dictionary[key]
3428
- return term ? term[lang] : key
3429
- },
3430
- */
3431
-
3432
3473
  sideNav: sideNav,
3433
3474
  setSideNav: setSideNav,
3434
3475
  showNav: showNav,
@@ -3455,27 +3496,8 @@ var SiteProvider = function SiteProvider(_ref) {
3455
3496
  breadcrumb: breadcrumb,
3456
3497
  setBreadcrumb: setBreadcrumb,
3457
3498
  page: page,
3458
- "goto": function goto(id) {
3459
- if (page) {
3460
- setHistory(function (prev) {
3461
- return [].concat(prev, [page]);
3462
- }); // 🔹 Guarda la página actual en el historial antes de cambiar
3463
- }
3464
- setPage(id);
3465
- window.history.pushState({
3466
- page: id
3467
- }, "", "/" + id); // 🔹 Actualiza la URL
3468
- },
3469
- goBack: function goBack() {
3470
- if (history.length > 0) {
3471
- var lastPage = history[history.length - 1];
3472
- setHistory(function (prev) {
3473
- return prev.slice(0, -1);
3474
- }); // 🔹 Elimina la última entrada del historial
3475
- setPage(lastPage); // 🔹 Vuelve a la página anterior
3476
- window.history.back(); // 🔹 Regresa en la navegación del navegador
3477
- }
3478
- },
3499
+ "goto": _goto,
3500
+ goBack: goBack,
3479
3501
  dialog: dialog,
3480
3502
  openDialog: function openDialog(dialog) {
3481
3503
  setDialog(dialog);
@@ -3628,7 +3650,7 @@ var SiteMenu = function SiteMenu(_ref6) {
3628
3650
  var next = sideNav === 'max' ? 'min' : 'max';
3629
3651
  setSideNav(next);
3630
3652
  }
3631
- var _goto = function _goto(id) {
3653
+ var _goto2 = function _goto2(id) {
3632
3654
  context.setShowNav(false);
3633
3655
  context["goto"](id);
3634
3656
  };
@@ -3666,7 +3688,7 @@ var SiteMenu = function SiteMenu(_ref6) {
3666
3688
  className: "site-menu-item " + styleItem,
3667
3689
  key: id,
3668
3690
  onClick: function onClick() {
3669
- return _goto(id);
3691
+ return _goto2(id);
3670
3692
  }
3671
3693
  }, /*#__PURE__*/React__default["default"].createElement(Tooltip, {
3672
3694
  text: title,
@@ -3677,7 +3699,7 @@ var SiteMenu = function SiteMenu(_ref6) {
3677
3699
  icon: icon,
3678
3700
  clickable: true,
3679
3701
  action: function action() {
3680
- return _goto(id);
3702
+ return _goto2(id);
3681
3703
  }
3682
3704
  })), sideNav === 'max' ? /*#__PURE__*/React__default["default"].createElement("label", null, titleTxt) : null);
3683
3705
  }), /*#__PURE__*/React__default["default"].createElement("div", {
@@ -3697,7 +3719,8 @@ var SitePage = function SitePage(_ref8) {
3697
3719
  var children = _ref8.children,
3698
3720
  init = _ref8.init;
3699
3721
  var context = React.useContext(SiteContext);
3700
- var page = context.page;
3722
+ var page = context.page,
3723
+ direction = context.direction;
3701
3724
  React.useEffect(function () {
3702
3725
  if (init) {
3703
3726
  context["goto"](init);
@@ -3705,9 +3728,32 @@ var SitePage = function SitePage(_ref8) {
3705
3728
  context["goto"]("EMPTY");
3706
3729
  }
3707
3730
  }, []);
3708
- return /*#__PURE__*/React__default["default"].createElement("main", null, React__default["default"].Children.toArray(children).filter(function (child) {
3731
+ var currentPage = React__default["default"].Children.toArray(children).filter(function (child) {
3709
3732
  return child.props ? child.props.id === page : false;
3710
- }));
3733
+ });
3734
+ var xOffset = direction === "left" ? 40 : -40;
3735
+ return /*#__PURE__*/React__default["default"].createElement("main", {
3736
+ className: "site-page-container"
3737
+ }, /*#__PURE__*/React__default["default"].createElement(framerMotion.AnimatePresence, {
3738
+ exitBeforeEnter: true
3739
+ }, currentPage && /*#__PURE__*/React__default["default"].createElement(framerMotion.motion.div, {
3740
+ key: page,
3741
+ initial: {
3742
+ opacity: 0,
3743
+ x: xOffset
3744
+ },
3745
+ animate: {
3746
+ opacity: 1,
3747
+ x: 0
3748
+ },
3749
+ exit: {
3750
+ opacity: 0,
3751
+ x: -xOffset
3752
+ },
3753
+ transition: {
3754
+ duration: 0.3
3755
+ }
3756
+ }, currentPage)));
3711
3757
  };
3712
3758
 
3713
3759
  /**
@@ -3876,6 +3922,36 @@ var TabbedView = function TabbedView(props) {
3876
3922
  }, children));
3877
3923
  };
3878
3924
 
3925
+ /**
3926
+ * PageLink - Navegación declarativa usando el sistema de hash
3927
+ *
3928
+ * Props:
3929
+ * - page: string → ID de la página a mostrar
3930
+ * - children: ReactNode → contenido visual del enlace
3931
+ * - className: string → clases opcionales
3932
+ * - style: object → estilos en línea opcionales
3933
+ */
3934
+ var PageLink = function PageLink(_ref) {
3935
+ var page = _ref.page,
3936
+ children = _ref.children,
3937
+ _ref$className = _ref.className,
3938
+ className = _ref$className === void 0 ? '' : _ref$className,
3939
+ _ref$style = _ref.style,
3940
+ style = _ref$style === void 0 ? {} : _ref$style;
3941
+ var _useContext = React.useContext(SiteContext),
3942
+ _goto2 = _useContext["goto"];
3943
+ var handleClick = function handleClick(e) {
3944
+ e.preventDefault();
3945
+ _goto2(page);
3946
+ };
3947
+ return /*#__PURE__*/React__default["default"].createElement("a", {
3948
+ href: "#" + page,
3949
+ onClick: handleClick,
3950
+ className: className,
3951
+ style: style
3952
+ }, children);
3953
+ };
3954
+
3879
3955
  /**
3880
3956
  * Admin Change User Password Dialog
3881
3957
  */
@@ -12842,6 +12918,7 @@ exports.MonthCalendar = MonthCalendar;
12842
12918
  exports.MultiSelector = MultiSelector;
12843
12919
  exports.Page = Page;
12844
12920
  exports.PageContext = PageContext;
12921
+ exports.PageLink = PageLink;
12845
12922
  exports.PageProvider = PageProvider;
12846
12923
  exports.PasswordEditor = PasswordEditor;
12847
12924
  exports.PasswordField = PasswordField;