| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import { types, getEnv } from 'mobx-state-tree';
- import { NavItem } from './NavItem';
- export const NavStore = types
- .model('NavStore', {
- main: types.maybe(NavItem),
- node: types.maybe(NavItem),
- })
- .actions(self => ({
- load(...args) {
- let children = getEnv(self).navTree;
- let main, node;
- let parents = [];
- for (let id of args) {
- node = children.find(el => el.id === id);
- if (!node) {
- throw new Error(`NavItem with id ${id} not found`);
- }
- children = node.children;
- parents.push(node);
- }
- main = parents[parents.length - 2];
- if (main.children) {
- for (let item of main.children) {
- item.active = false;
- if (item.url === node.url) {
- item.active = true;
- }
- }
- }
- self.main = NavItem.create(main);
- self.node = NavItem.create(node);
- },
- }));
|