react-toolkits 2.9.18 → 2.9.20

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # react-toolkits
2
2
 
3
+ ## 2.9.20
4
+
5
+ ### Patch Changes
6
+
7
+ - 544ddbc: feat: add 'menuCollapsible' prop
8
+
9
+ ## 2.9.19
10
+
11
+ ### Patch Changes
12
+
13
+ - 921deca: fix: app-id header is not right
14
+
3
15
  ## 2.9.18
4
16
 
5
17
  ### Patch Changes
package/lib/index.d.ts CHANGED
@@ -5,7 +5,7 @@ import { ParagraphProps } from 'antd/es/typography/Paragraph';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
  import { FormInstance, MenuProps, ButtonProps, ModalProps, FormProps } from 'antd';
7
7
  import { TableProps } from 'antd/es/table';
8
- import { MenuDividerType, MenuItemType, SubMenuType, MenuItemGroupType } from 'antd/es/menu/interface';
8
+ import { ItemType, SubMenuType, MenuItemGroupType, MenuItemType } from 'antd/es/menu/interface';
9
9
  import { Merge } from 'ts-essentials';
10
10
  import * as zustand_middleware from 'zustand/middleware';
11
11
  import { StateStorage } from 'zustand/middleware';
@@ -124,6 +124,7 @@ type Locale = {
124
124
  interface ContextProps {
125
125
  locale: Locale;
126
126
  usePermissionApiV2: boolean;
127
+ gameApiV2: boolean;
127
128
  interceptor?: {
128
129
  response?: (response: Response, opts: RequestOptions) => Promise<any>;
129
130
  };
@@ -196,7 +197,7 @@ type SubMenuType2 = Merge<SubMenuType, {
196
197
  type MenuItemGroupType2 = Merge<MenuItemGroupType, {
197
198
  children?: NavMenuItem[];
198
199
  }>;
199
- type NavMenuItem = MenuItemType2 | SubMenuType2 | MenuItemGroupType2 | MenuDividerType | null;
200
+ type NavMenuItem = Exclude<ItemType, SubMenuType | MenuItemGroupType | MenuItemType> | MenuItemType2 | SubMenuType2 | MenuItemGroupType2;
200
201
 
201
202
  interface NavMenuProps {
202
203
  items?: NavMenuItem[];
@@ -223,7 +224,6 @@ interface Game {
223
224
  }
224
225
 
225
226
  interface GameSelectProps {
226
- apiV2?: boolean;
227
227
  filter?: (game: Game) => boolean;
228
228
  onGameChange?: (game: Game) => void;
229
229
  }
@@ -233,7 +233,7 @@ type HeaderExtra = {
233
233
  children: ReactNode;
234
234
  };
235
235
  interface LayoutProps extends Pick<GameSelectProps, 'filter' | 'onGameChange'> {
236
- gameApiV2?: boolean;
236
+ menuCollapsible?: boolean;
237
237
  title?: ReactNode;
238
238
  items?: NavMenuItem[];
239
239
  hideGameSelect?: boolean;
package/lib/index.js CHANGED
@@ -137,8 +137,9 @@ var init_Provider = __esm({
137
137
  init_en_GB();
138
138
  createContextStore = (initProps) => {
139
139
  const DEFAULT_PROPS = {
140
+ locale: en_GB_default,
140
141
  usePermissionApiV2: false,
141
- locale: en_GB_default
142
+ gameApiV2: false
142
143
  };
143
144
  return createStore()((set) => ({
144
145
  ...DEFAULT_PROPS,
@@ -340,24 +341,23 @@ function checkChildren(children, permissions) {
340
341
  }
341
342
  function transformItems(items, permissions) {
342
343
  const result = [];
343
- for (let i = 0; i < items.length; i++) {
344
- if (items[i] === null) {
345
- result[i] = null;
346
- } else if (items[i].type === "divider") {
347
- result[i] = { ...items[i] };
348
- } else {
349
- if (items[i].children) {
350
- const { children, ...restProps } = items[i];
351
- result[i] = checkChildren(children ?? [], permissions) ? {
352
- ...restProps,
353
- children: transformItems(children ?? [], permissions)
344
+ if (items) {
345
+ for (let i = 0; i < items.length; i++) {
346
+ if (items[i] === null || items[i].type === "divider") {
347
+ result[i] = items[i];
348
+ } else if (items[i].children) {
349
+ const { children, ...rest } = items[i];
350
+ result[i] = checkChildren(children, permissions) ? {
351
+ ...rest,
352
+ children: transformItems(children, permissions)
354
353
  } : null;
355
354
  } else {
356
- const { route: route3, label, code, ...restProps } = items[i];
355
+ const { route: route3, label, code, ...rest } = items[i];
357
356
  const isPass = !code || !permissions || permissions[code];
357
+ const labelNode = route3 ? /* @__PURE__ */ jsx(Link, { to: route3, children: label }) : label;
358
358
  result[i] = isPass ? {
359
- ...restProps,
360
- label: withLink(label, route3)
359
+ ...rest,
360
+ label: labelNode
361
361
  } : null;
362
362
  }
363
363
  }
@@ -376,15 +376,8 @@ function flatItems(items, result = [], keypath = []) {
376
376
  }
377
377
  return result;
378
378
  }
379
- var withLink;
380
379
  var init_utils = __esm({
381
380
  "src/components/navMenu/utils.tsx"() {
382
- withLink = (label, route3) => {
383
- if (route3) {
384
- return /* @__PURE__ */ jsx(Link, { to: route3, children: label });
385
- }
386
- return label;
387
- };
388
381
  }
389
382
  });
390
383
  var NavMenu, NavMenu_default;
@@ -617,6 +610,7 @@ var init_stores2 = __esm({
617
610
  "src/components/layout/stores.ts"() {
618
611
  init_request();
619
612
  init_storage();
613
+ init_contextProvider();
620
614
  useLayoutStore = create()(
621
615
  persist(
622
616
  (set) => ({
@@ -637,7 +631,7 @@ var init_stores2 = __esm({
637
631
  isLoading: false,
638
632
  game: null,
639
633
  games: [],
640
- async fetchGames({ apiV2 = false, forceUpdate = false } = {}) {
634
+ async fetchGames({ apiV2 = contextStore.getState().gameApiV2, forceUpdate = false } = {}) {
641
635
  if (!forceUpdate && get2().initialized) {
642
636
  return get2().games;
643
637
  }
@@ -673,13 +667,15 @@ var init_stores2 = __esm({
673
667
  var Text, GameSelect, GameSelect_default;
674
668
  var init_GameSelect = __esm({
675
669
  "src/components/layout/GameSelect.tsx"() {
670
+ init_contextProvider();
676
671
  init_locale();
677
672
  init_stores2();
678
673
  ({ Text } = Typography);
679
674
  GameSelect = (props) => {
680
- const { apiV2, filter, onGameChange } = props;
675
+ const { filter, onGameChange } = props;
681
676
  const { t } = useTranslation();
682
677
  const { game, games, isLoading, fetchGames } = useGameStore();
678
+ const apiV2 = useToolkitsContext((state) => state.gameApiV2);
683
679
  useEffect(() => {
684
680
  fetchGames({ apiV2 });
685
681
  }, []);
@@ -733,7 +729,7 @@ var init_Layout = __esm({
733
729
  ({ Header, Sider, Content } = Antd2.Layout);
734
730
  Layout2 = (props) => {
735
731
  const {
736
- gameApiV2,
732
+ menuCollapsible,
737
733
  title,
738
734
  items,
739
735
  headerExtra,
@@ -771,7 +767,7 @@ var init_Layout = __esm({
771
767
  children: [
772
768
  /* @__PURE__ */ jsxs("div", { className: "flex gap-2 px-6 py-4 overflow-hidden", children: [
773
769
  /* @__PURE__ */ jsx(Logo_default, { width: 32, height: 32 }),
774
- !collapsed && /* @__PURE__ */ jsx("div", { className: "h-8 flex items-center expand", children: title })
770
+ (!menuCollapsible || !collapsed) && /* @__PURE__ */ jsx("div", { className: "h-8 flex items-center expand", children: title })
775
771
  ] }),
776
772
  /* @__PURE__ */ jsx(NavMenu_default, { items })
777
773
  ]
@@ -787,7 +783,7 @@ var init_Layout = __esm({
787
783
  },
788
784
  children: /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center h-full", children: [
789
785
  /* @__PURE__ */ jsxs(Space, { size: "small", split: /* @__PURE__ */ jsx(Divider, { type: "vertical" }), className: "mr-6", children: [
790
- /* @__PURE__ */ jsx(
786
+ menuCollapsible && /* @__PURE__ */ jsx(
791
787
  Button,
792
788
  {
793
789
  type: "text",
@@ -796,7 +792,7 @@ var init_Layout = __esm({
796
792
  onClick: onCollapse
797
793
  }
798
794
  ),
799
- usePermissionApiV2 && !hideGameSelect && /* @__PURE__ */ jsx(GameSelect_default, { apiV2: gameApiV2, filter, onGameChange }),
795
+ usePermissionApiV2 && !hideGameSelect && /* @__PURE__ */ jsx(GameSelect_default, { filter, onGameChange }),
800
796
  headerExtra?.left?.map((extra) => /* @__PURE__ */ jsx("span", { children: extra.children }, extra.key))
801
797
  ] }),
802
798
  /* @__PURE__ */ jsxs(Space, { size: "small", split: /* @__PURE__ */ jsx(Divider, { type: "vertical" }), children: [
@@ -874,7 +870,7 @@ async function request(url, opts = {}) {
874
870
  if (!headers.has(APP_ID_HEADER_NAME) && contextStore.getState().usePermissionApiV2) {
875
871
  const game = useGameStore.getState().game;
876
872
  if (game) {
877
- headers.set(APP_ID_HEADER_NAME, String(game.game_id ?? game.id));
873
+ headers.set(APP_ID_HEADER_NAME, String(contextStore.getState().gameApiV2 ? game.game_id : game.id));
878
874
  }
879
875
  }
880
876
  if (responseType === "blob") {
@@ -1110,7 +1106,7 @@ var init_QueryList = __esm({
1110
1106
  });
1111
1107
  const action = useRef(3 /* Init */);
1112
1108
  const { game } = useGameStore();
1113
- const usePermissionApiV2 = useToolkitsContext((state) => state.usePermissionApiV2);
1109
+ const { gameApiV2, usePermissionApiV2 } = useToolkitsContext((state) => state);
1114
1110
  const [isValid, setIsValid] = useState(false);
1115
1111
  const { keyMap, getPayload, refetch } = useQueryListStore();
1116
1112
  const { page, size = defaultSize, formValue } = getPayload(route3);
@@ -1134,7 +1130,7 @@ var init_QueryList = __esm({
1134
1130
  if (isGlobal) {
1135
1131
  newHeaders.set(APP_ID_HEADER_NAME, "global");
1136
1132
  } else if (game) {
1137
- newHeaders.set(APP_ID_HEADER_NAME, String(game.id));
1133
+ newHeaders.set(APP_ID_HEADER_NAME, String(gameApiV2 ? game.game_id : game.id));
1138
1134
  }
1139
1135
  }
1140
1136
  return newHeaders;