ywana-core8 0.1.55 → 0.1.56
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 +102 -57
- package/dist/index.cjs.map +1 -1
- package/dist/index.modern.js +102 -58
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +102 -57
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/site/index.js +3 -1
- package/src/site/link.js +75 -0
- package/src/site/navigation.js +51 -0
- package/src/site/site.js +4 -41
package/dist/index.modern.js
CHANGED
@@ -3338,6 +3338,68 @@ var Page = function Page(props) {
|
|
3338
3338
|
}, children));
|
3339
3339
|
};
|
3340
3340
|
|
3341
|
+
/**
|
3342
|
+
* Use Hash Page
|
3343
|
+
*/
|
3344
|
+
function useHashPage(defaultPage) {
|
3345
|
+
if (defaultPage === void 0) {
|
3346
|
+
defaultPage = "home";
|
3347
|
+
}
|
3348
|
+
var getCurrentPageFromURL = function getCurrentPageFromURL() {
|
3349
|
+
var hash = window.location.hash.replace("#", "");
|
3350
|
+
return hash || defaultPage;
|
3351
|
+
};
|
3352
|
+
var _useState = useState(getCurrentPageFromURL()),
|
3353
|
+
page = _useState[0],
|
3354
|
+
setPage = _useState[1];
|
3355
|
+
var _useState2 = useState([]),
|
3356
|
+
history = _useState2[0],
|
3357
|
+
setHistory = _useState2[1];
|
3358
|
+
var isFirstLoad = useRef(true);
|
3359
|
+
useEffect(function () {
|
3360
|
+
var handleHashChange = function handleHashChange() {
|
3361
|
+
var newPage = getCurrentPageFromURL();
|
3362
|
+
if (!isFirstLoad.current) {
|
3363
|
+
setHistory(function (prev) {
|
3364
|
+
return [].concat(prev, [page]);
|
3365
|
+
}); // Guarda la página anterior
|
3366
|
+
} else {
|
3367
|
+
isFirstLoad.current = false;
|
3368
|
+
}
|
3369
|
+
setPage(newPage);
|
3370
|
+
};
|
3371
|
+
window.addEventListener("hashchange", handleHashChange);
|
3372
|
+
return function () {
|
3373
|
+
return window.removeEventListener("hashchange", handleHashChange);
|
3374
|
+
};
|
3375
|
+
}, [page]);
|
3376
|
+
var _goto = function _goto(id) {
|
3377
|
+
if (page) {
|
3378
|
+
setHistory(function (prev) {
|
3379
|
+
return [].concat(prev, [page]);
|
3380
|
+
});
|
3381
|
+
}
|
3382
|
+
setPage(id);
|
3383
|
+
window.location.hash = id;
|
3384
|
+
};
|
3385
|
+
var goBack = function goBack() {
|
3386
|
+
if (history.length > 0) {
|
3387
|
+
var lastPage = history[history.length - 1];
|
3388
|
+
setHistory(function (prev) {
|
3389
|
+
return prev.slice(0, -1);
|
3390
|
+
});
|
3391
|
+
setPage(lastPage);
|
3392
|
+
window.location.hash = lastPage;
|
3393
|
+
}
|
3394
|
+
};
|
3395
|
+
return {
|
3396
|
+
page: page,
|
3397
|
+
"goto": _goto,
|
3398
|
+
goBack: goBack,
|
3399
|
+
history: history
|
3400
|
+
};
|
3401
|
+
}
|
3402
|
+
|
3341
3403
|
/**
|
3342
3404
|
* Site Provider
|
3343
3405
|
*/
|
@@ -3378,30 +3440,10 @@ var SiteProvider = function SiteProvider(_ref) {
|
|
3378
3440
|
var _useState11 = useState(),
|
3379
3441
|
breadcrumb = _useState11[0],
|
3380
3442
|
setBreadcrumb = _useState11[1];
|
3381
|
-
var
|
3382
|
-
|
3383
|
-
|
3384
|
-
|
3385
|
-
// 📌 Extraer la página actual desde la URL (por defecto "home")
|
3386
|
-
var getCurrentPageFromURL = function getCurrentPageFromURL() {
|
3387
|
-
var path = window.location.pathname.replace("/", "");
|
3388
|
-
return path || "home";
|
3389
|
-
};
|
3390
|
-
var _useState13 = useState(getCurrentPageFromURL()),
|
3391
|
-
page = _useState13[0],
|
3392
|
-
setPage = _useState13[1];
|
3393
|
-
useEffect(function () {
|
3394
|
-
// 📌 Detectar cambios en la URL cuando el usuario presiona "Atrás" o "Adelante"
|
3395
|
-
var handlePopState = function handlePopState(event) {
|
3396
|
-
var _event$state;
|
3397
|
-
var previousPage = ((_event$state = event.state) == null ? void 0 : _event$state.page) || "home";
|
3398
|
-
setPage(previousPage);
|
3399
|
-
};
|
3400
|
-
window.addEventListener("popstate", handlePopState);
|
3401
|
-
return function () {
|
3402
|
-
return window.removeEventListener("popstate", handlePopState);
|
3403
|
-
};
|
3404
|
-
}, []);
|
3443
|
+
var _useHashPage = useHashPage(),
|
3444
|
+
page = _useHashPage.page,
|
3445
|
+
_goto = _useHashPage["goto"],
|
3446
|
+
goBack = _useHashPage.goBack;
|
3405
3447
|
var value = {
|
3406
3448
|
lang: lang,
|
3407
3449
|
setLang: setLang,
|
@@ -3411,15 +3453,6 @@ var SiteProvider = function SiteProvider(_ref) {
|
|
3411
3453
|
var _dictionary$key;
|
3412
3454
|
return (dictionary == null ? void 0 : (_dictionary$key = dictionary[key]) == null ? void 0 : _dictionary$key[lang]) || key;
|
3413
3455
|
}, [lang, dictionary]),
|
3414
|
-
/*
|
3415
|
-
translate: (key) => {
|
3416
|
-
if (!key) return key
|
3417
|
-
if (dictionary === undefined) return key
|
3418
|
-
const term = dictionary[key]
|
3419
|
-
return term ? term[lang] : key
|
3420
|
-
},
|
3421
|
-
*/
|
3422
|
-
|
3423
3456
|
sideNav: sideNav,
|
3424
3457
|
setSideNav: setSideNav,
|
3425
3458
|
showNav: showNav,
|
@@ -3446,27 +3479,8 @@ var SiteProvider = function SiteProvider(_ref) {
|
|
3446
3479
|
breadcrumb: breadcrumb,
|
3447
3480
|
setBreadcrumb: setBreadcrumb,
|
3448
3481
|
page: page,
|
3449
|
-
"goto":
|
3450
|
-
|
3451
|
-
setHistory(function (prev) {
|
3452
|
-
return [].concat(prev, [page]);
|
3453
|
-
}); // 🔹 Guarda la página actual en el historial antes de cambiar
|
3454
|
-
}
|
3455
|
-
setPage(id);
|
3456
|
-
window.history.pushState({
|
3457
|
-
page: id
|
3458
|
-
}, "", "/" + id); // 🔹 Actualiza la URL
|
3459
|
-
},
|
3460
|
-
goBack: function goBack() {
|
3461
|
-
if (history.length > 0) {
|
3462
|
-
var lastPage = history[history.length - 1];
|
3463
|
-
setHistory(function (prev) {
|
3464
|
-
return prev.slice(0, -1);
|
3465
|
-
}); // 🔹 Elimina la última entrada del historial
|
3466
|
-
setPage(lastPage); // 🔹 Vuelve a la página anterior
|
3467
|
-
window.history.back(); // 🔹 Regresa en la navegación del navegador
|
3468
|
-
}
|
3469
|
-
},
|
3482
|
+
"goto": _goto,
|
3483
|
+
goBack: goBack,
|
3470
3484
|
dialog: dialog,
|
3471
3485
|
openDialog: function openDialog(dialog) {
|
3472
3486
|
setDialog(dialog);
|
@@ -3619,7 +3633,7 @@ var SiteMenu = function SiteMenu(_ref6) {
|
|
3619
3633
|
var next = sideNav === 'max' ? 'min' : 'max';
|
3620
3634
|
setSideNav(next);
|
3621
3635
|
}
|
3622
|
-
var
|
3636
|
+
var _goto2 = function _goto2(id) {
|
3623
3637
|
context.setShowNav(false);
|
3624
3638
|
context["goto"](id);
|
3625
3639
|
};
|
@@ -3657,7 +3671,7 @@ var SiteMenu = function SiteMenu(_ref6) {
|
|
3657
3671
|
className: "site-menu-item " + styleItem,
|
3658
3672
|
key: id,
|
3659
3673
|
onClick: function onClick() {
|
3660
|
-
return
|
3674
|
+
return _goto2(id);
|
3661
3675
|
}
|
3662
3676
|
}, /*#__PURE__*/React.createElement(Tooltip, {
|
3663
3677
|
text: title,
|
@@ -3668,7 +3682,7 @@ var SiteMenu = function SiteMenu(_ref6) {
|
|
3668
3682
|
icon: icon,
|
3669
3683
|
clickable: true,
|
3670
3684
|
action: function action() {
|
3671
|
-
return
|
3685
|
+
return _goto2(id);
|
3672
3686
|
}
|
3673
3687
|
})), sideNav === 'max' ? /*#__PURE__*/React.createElement("label", null, titleTxt) : null);
|
3674
3688
|
}), /*#__PURE__*/React.createElement("div", {
|
@@ -3867,6 +3881,36 @@ var TabbedView = function TabbedView(props) {
|
|
3867
3881
|
}, children));
|
3868
3882
|
};
|
3869
3883
|
|
3884
|
+
/**
|
3885
|
+
* PageLink - Navegación declarativa usando el sistema de hash
|
3886
|
+
*
|
3887
|
+
* Props:
|
3888
|
+
* - page: string → ID de la página a mostrar
|
3889
|
+
* - children: ReactNode → contenido visual del enlace
|
3890
|
+
* - className: string → clases opcionales
|
3891
|
+
* - style: object → estilos en línea opcionales
|
3892
|
+
*/
|
3893
|
+
var PageLink = function PageLink(_ref) {
|
3894
|
+
var page = _ref.page,
|
3895
|
+
children = _ref.children,
|
3896
|
+
_ref$className = _ref.className,
|
3897
|
+
className = _ref$className === void 0 ? '' : _ref$className,
|
3898
|
+
_ref$style = _ref.style,
|
3899
|
+
style = _ref$style === void 0 ? {} : _ref$style;
|
3900
|
+
var _useContext = useContext(SiteContext),
|
3901
|
+
_goto2 = _useContext["goto"];
|
3902
|
+
var handleClick = function handleClick(e) {
|
3903
|
+
e.preventDefault();
|
3904
|
+
_goto2(page);
|
3905
|
+
};
|
3906
|
+
return /*#__PURE__*/React.createElement("a", {
|
3907
|
+
href: "#" + page,
|
3908
|
+
onClick: handleClick,
|
3909
|
+
className: className,
|
3910
|
+
style: style
|
3911
|
+
}, children);
|
3912
|
+
};
|
3913
|
+
|
3870
3914
|
/**
|
3871
3915
|
* Admin Change User Password Dialog
|
3872
3916
|
*/
|
@@ -12765,5 +12809,5 @@ var isFunction = function isFunction(value) {
|
|
12765
12809
|
return value && (Object.prototype.toString.call(value) === "[object Function]" || "function" === typeof value || value instanceof Function);
|
12766
12810
|
};
|
12767
12811
|
|
12768
|
-
export { Accordion, ActionButton, Avatar, Button, Calendar, ChangeUserPasswordAction, ChangeUserPasswordDialog, CheckBox, Chip, Chips, CircularProgress, CollectionAPI$1 as CollectionAPI, CollectionAPI as CollectionAPI2, CollectionContext$1 as CollectionContext, CollectionContext as CollectionContext2, CollectionEditor$2 as CollectionEditor, CollectionFilters$1 as CollectionFilters, CollectionPage$1 as CollectionPage, CollectionPage as CollectionPage2, CollectionTree, ColorField, Content, ContentEditor, ContentForm, ContentViewer, CreateContentDialog, DataTable, DateRange, Dialog, DropDown, DynamicForm, EditContentDialog, EmptyMessage, FORMATS$1 as FORMATS, FieldEditor, FileExplorer, FileExplorerView, FileGridItem, FilesGridView, FilesSearchBox, FilesTableView, FoldersTreeView, ForgetUserPasswordAction, Form, HTTPClient, Header, Icon, ImageViewer, Kanban, KanbanCard, KanbanColumn, KanbanHeader, KanbanSwimlane, LOGIN_API, LOGIN_CONTEXT, LOGIN_DICTIONARY, LinearProgress, List, ListEditor, LoginBox, Menu, MenuIcon, MenuItem, MenuSeparator, MonthCalendar, MultiSelector, Page, PageContext, PageProvider, PasswordEditor, PasswordField, Planner, Planner2, Property, RadioButton, ResetPasswordBox, Section, Session, Site, SiteContext, SiteProvider, Stack, Switch, Switch2, TASK_STATES, TEXTFORMATS, TYPES$1 as TYPES, Tab, TabbedContentEditor, TabbedTablePage, TabbedView, TableEditor$2 as TableEditor, TablePage, TablePage2, Tabs, TaskContext, TaskContextProvider, TaskMonitor, TaskProgress, Text, TextArea, TextField, Thumbnail, ToggleButton, TokenField, Tooltip, Tree, TreeItem, TreeNode, TreededContentEditor, UnlockUserAction, UploadArea, UploadDialog, UploadFile$1 as UploadFile, UploadForm, UploadIcon, Uploader, View, Viewer, WaitScreen, Wizard, WizardContext, isEmpty, isFunction, validatePassword };
|
12812
|
+
export { Accordion, ActionButton, Avatar, Button, Calendar, ChangeUserPasswordAction, ChangeUserPasswordDialog, CheckBox, Chip, Chips, CircularProgress, CollectionAPI$1 as CollectionAPI, CollectionAPI as CollectionAPI2, CollectionContext$1 as CollectionContext, CollectionContext as CollectionContext2, CollectionEditor$2 as CollectionEditor, CollectionFilters$1 as CollectionFilters, CollectionPage$1 as CollectionPage, CollectionPage as CollectionPage2, CollectionTree, ColorField, Content, ContentEditor, ContentForm, ContentViewer, CreateContentDialog, DataTable, DateRange, Dialog, DropDown, DynamicForm, EditContentDialog, EmptyMessage, FORMATS$1 as FORMATS, FieldEditor, FileExplorer, FileExplorerView, FileGridItem, FilesGridView, FilesSearchBox, FilesTableView, FoldersTreeView, ForgetUserPasswordAction, Form, HTTPClient, Header, Icon, ImageViewer, Kanban, KanbanCard, KanbanColumn, KanbanHeader, KanbanSwimlane, LOGIN_API, LOGIN_CONTEXT, LOGIN_DICTIONARY, LinearProgress, List, ListEditor, LoginBox, Menu, MenuIcon, MenuItem, MenuSeparator, MonthCalendar, MultiSelector, Page, PageContext, PageLink, PageProvider, PasswordEditor, PasswordField, Planner, Planner2, Property, RadioButton, ResetPasswordBox, Section, Session, Site, SiteContext, SiteProvider, Stack, Switch, Switch2, TASK_STATES, TEXTFORMATS, TYPES$1 as TYPES, Tab, TabbedContentEditor, TabbedTablePage, TabbedView, TableEditor$2 as TableEditor, TablePage, TablePage2, Tabs, TaskContext, TaskContextProvider, TaskMonitor, TaskProgress, Text, TextArea, TextField, Thumbnail, ToggleButton, TokenField, Tooltip, Tree, TreeItem, TreeNode, TreededContentEditor, UnlockUserAction, UploadArea, UploadDialog, UploadFile$1 as UploadFile, UploadForm, UploadIcon, Uploader, View, Viewer, WaitScreen, Wizard, WizardContext, isEmpty, isFunction, validatePassword };
|
12769
12813
|
//# sourceMappingURL=index.modern.js.map
|