@pinnacle0/web-ui 0.5.84 → 0.6.0-beta.1
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/admin/AdminApp/Default/NavigatorSide/index.js +14 -50
- package/admin/AdminApp/Default/NavigatorSide/index.js.map +1 -1
- package/admin/AdminApp/Default/SoundSwitch.js +15 -34
- package/admin/AdminApp/Default/SoundSwitch.js.map +1 -1
- package/admin/AdminApp/Default/SquareLogo/index.js +8 -29
- package/admin/AdminApp/Default/SquareLogo/index.js.map +1 -1
- package/admin/AdminApp/Menu.js +40 -82
- package/admin/AdminApp/Menu.js.map +1 -1
- package/admin/AdminApp/Navigator.js +57 -83
- package/admin/AdminApp/Navigator.js.map +1 -1
- package/admin/AdminApp/NotFound.js +8 -30
- package/admin/AdminApp/NotFound.js.map +1 -1
- package/admin/AdminApp/RouteSwitch.js +21 -53
- package/admin/AdminApp/RouteSwitch.js.map +1 -1
- package/admin/AdminApp/WithErrorBoundary.js +13 -33
- package/admin/AdminApp/WithErrorBoundary.js.map +1 -1
- package/admin/AdminApp/context.js +3 -3
- package/admin/AdminApp/context.js.map +1 -1
- package/admin/AdminApp/index.js +26 -43
- package/admin/AdminApp/index.js.map +1 -1
- package/admin/AdminPage/Filter.js +20 -38
- package/admin/AdminPage/Filter.js.map +1 -1
- package/admin/AdminPage/Result.js +15 -62
- package/admin/AdminPage/Result.js.map +1 -1
- package/admin/AdminPage/SaveBar.js +7 -28
- package/admin/AdminPage/SaveBar.js.map +1 -1
- package/admin/AdminPage/Summary.js +6 -27
- package/admin/AdminPage/Summary.js.map +1 -1
- package/admin/AdminPage/TopBar.js +6 -27
- package/admin/AdminPage/TopBar.js.map +1 -1
- package/admin/AdminPage/index.js +11 -32
- package/admin/AdminPage/index.js.map +1 -1
- package/admin/AdminPermissionSelector.js +147 -195
- package/admin/AdminPermissionSelector.js.map +1 -1
- package/core/Amount/AmountPercentage.js +7 -50
- package/core/Amount/AmountPercentage.js.map +1 -1
- package/core/Amount/index.js +15 -36
- package/core/Amount/index.js.map +1 -1
- package/core/AmountConditionInput.js +27 -74
- package/core/AmountConditionInput.js.map +1 -1
- package/core/AmountRangeInput.js +17 -75
- package/core/AmountRangeInput.js.map +1 -1
- package/core/Animated/AnimatePresence.js +35 -87
- package/core/Animated/AnimatePresence.js.map +1 -1
- package/core/Animated/createAnimatedComponent.js +28 -50
- package/core/Animated/createAnimatedComponent.js.map +1 -1
- package/core/Animated/index.js +5 -5
- package/core/Animated/index.js.map +1 -1
- package/core/AuthenticationCodeInput/index.js +48 -136
- package/core/AuthenticationCodeInput/index.js.map +1 -1
- package/core/AutoCompleteInput.js +6 -38
- package/core/AutoCompleteInput.js.map +1 -1
- package/core/Badge.js +2 -13
- package/core/Badge.js.map +1 -1
- package/core/BoolRadio.js +16 -64
- package/core/BoolRadio.js.map +1 -1
- package/core/BoolSelect.js +16 -63
- package/core/BoolSelect.js.map +1 -1
- package/core/BoolSwitch.js +16 -48
- package/core/BoolSwitch.js.map +1 -1
- package/core/Breadcrumb/index.js +18 -66
- package/core/Breadcrumb/index.js.map +1 -1
- package/core/Button.js +2 -25
- package/core/Button.js.map +1 -1
- package/core/Card.js +6 -38
- package/core/Card.js.map +1 -1
- package/core/Carousel.js +6 -49
- package/core/Carousel.js.map +1 -1
- package/core/Carousel3D/index.js +64 -83
- package/core/Carousel3D/index.js.map +1 -1
- package/core/Cascader/InitialNullable.js +7 -50
- package/core/Cascader/InitialNullable.js.map +1 -1
- package/core/Cascader/Nullable.js +11 -81
- package/core/Cascader/Nullable.js.map +1 -1
- package/core/Cascader/index.js +38 -109
- package/core/Cascader/index.js.map +1 -1
- package/core/Checkbox.js +9 -67
- package/core/Checkbox.js.map +1 -1
- package/core/Collapse.js +5 -37
- package/core/Collapse.js.map +1 -1
- package/core/Countdown/SlidingDigit.js +12 -32
- package/core/Countdown/SlidingDigit.js.map +1 -1
- package/core/Countdown/index.js +56 -74
- package/core/Countdown/index.js.map +1 -1
- package/core/DarkOverlay/index.js +6 -27
- package/core/DarkOverlay/index.js.map +1 -1
- package/core/DateCalendar.js +48 -96
- package/core/DateCalendar.js.map +1 -1
- package/core/DatePicker.js +26 -73
- package/core/DatePicker.js.map +1 -1
- package/core/DateRangePicker.js +44 -64
- package/core/DateRangePicker.js.map +1 -1
- package/core/DateTimePicker.js +30 -78
- package/core/DateTimePicker.js.map +1 -1
- package/core/DateTimeRangePicker/index.js +48 -68
- package/core/DateTimeRangePicker/index.js.map +1 -1
- package/core/Descriptions/index.js +11 -69
- package/core/Descriptions/index.js.map +1 -1
- package/core/DocumentTitle.js +25 -43
- package/core/DocumentTitle.js.map +1 -1
- package/core/Drawer.js +4 -36
- package/core/Drawer.js.map +1 -1
- package/core/Dropdown.js +3 -7
- package/core/Dropdown.js.map +1 -1
- package/core/EnumCheckboxGroup/Map.js +8 -51
- package/core/EnumCheckboxGroup/Map.js.map +1 -1
- package/core/EnumCheckboxGroup/index.js +8 -29
- package/core/EnumCheckboxGroup/index.js.map +1 -1
- package/core/EnumRadio/InitialNullable.js +9 -78
- package/core/EnumRadio/InitialNullable.js.map +1 -1
- package/core/EnumRadio/Map.js +8 -51
- package/core/EnumRadio/Map.js.map +1 -1
- package/core/EnumRadio/Nullable.js +13 -83
- package/core/EnumRadio/Nullable.js.map +1 -1
- package/core/EnumRadio/index.js +16 -63
- package/core/EnumRadio/index.js.map +1 -1
- package/core/EnumSelect/InitialNullable.js +7 -50
- package/core/EnumSelect/InitialNullable.js.map +1 -1
- package/core/EnumSelect/Map.js +8 -51
- package/core/EnumSelect/Map.js.map +1 -1
- package/core/EnumSelect/Nullable.js +13 -83
- package/core/EnumSelect/Nullable.js.map +1 -1
- package/core/EnumSelect/index.js +37 -86
- package/core/EnumSelect/index.js.map +1 -1
- package/core/FlatList/Content/Footer/index.js +5 -6
- package/core/FlatList/Content/Footer/index.js.map +1 -1
- package/core/FlatList/Content/index.js +28 -51
- package/core/FlatList/Content/index.js.map +1 -1
- package/core/FlatList/FloatingLoader/index.js +2 -3
- package/core/FlatList/FloatingLoader/index.js.map +1 -1
- package/core/FlatList/Refresh/index.js +2 -3
- package/core/FlatList/Refresh/index.js.map +1 -1
- package/core/FlatList/hook/useRefreshing.js +7 -23
- package/core/FlatList/hook/useRefreshing.js.map +1 -1
- package/core/FlatList/hook/useScrollListSwipe.js +22 -40
- package/core/FlatList/hook/useScrollListSwipe.js.map +1 -1
- package/core/FlatList/index.js +19 -52
- package/core/FlatList/index.js.map +1 -1
- package/core/FlatList/shared/Loader/index.js +1 -1
- package/core/FlatList/shared/Loader/index.js.map +1 -1
- package/core/Form/Item.js +31 -91
- package/core/Form/Item.js.map +1 -1
- package/core/Form/context.js +4 -4
- package/core/Form/context.js.map +1 -1
- package/core/Form/index.js +52 -124
- package/core/Form/index.js.map +1 -1
- package/core/Grid.js +2 -2
- package/core/Grid.js.map +1 -1
- package/core/HTMLContent/index.js +6 -27
- package/core/HTMLContent/index.js.map +1 -1
- package/core/Image.js +5 -37
- package/core/Image.js.map +1 -1
- package/core/ImageUploader/index.js +44 -156
- package/core/ImageUploader/index.js.map +1 -1
- package/core/Input.js +34 -120
- package/core/Input.js.map +1 -1
- package/core/LabelledSelect.js +6 -38
- package/core/LabelledSelect.js.map +1 -1
- package/core/Link.js +7 -28
- package/core/Link.js.map +1 -1
- package/core/LocalImporter.js +22 -84
- package/core/LocalImporter.js.map +1 -1
- package/core/LocaleSelect.js +17 -64
- package/core/LocaleSelect.js.map +1 -1
- package/core/Markdown/index.js +30 -78
- package/core/Markdown/index.js.map +1 -1
- package/core/Modal/index.js +11 -54
- package/core/Modal/index.js.map +1 -1
- package/core/MultipleCascader/index.js +55 -135
- package/core/MultipleCascader/index.js.map +1 -1
- package/core/MultipleEnumSelect.js +13 -60
- package/core/MultipleEnumSelect.js.map +1 -1
- package/core/MultipleSelector/TablePopover.js +37 -85
- package/core/MultipleSelector/TablePopover.js.map +1 -1
- package/core/MultipleSelector/index.js +41 -88
- package/core/MultipleSelector/index.js.map +1 -1
- package/core/MutableTable/index.js +71 -125
- package/core/MutableTable/index.js.map +1 -1
- package/core/NumberInput/NumberInputPercentage.js +24 -93
- package/core/NumberInput/NumberInputPercentage.js.map +1 -1
- package/core/NumberInput/index.js +80 -115
- package/core/NumberInput/index.js.map +1 -1
- package/core/NumberInput/util.js +9 -9
- package/core/NumberInput/util.js.map +1 -1
- package/core/OrientationContext.js +4 -21
- package/core/OrientationContext.js.map +1 -1
- package/core/OverflowableText/index.js +19 -49
- package/core/OverflowableText/index.js.map +1 -1
- package/core/PagedList/index.js +18 -35
- package/core/PagedList/index.js.map +1 -1
- package/core/Pagination/index.js +19 -66
- package/core/Pagination/index.js.map +1 -1
- package/core/Popover/index.js +7 -29
- package/core/Popover/index.js.map +1 -1
- package/core/Progress/index.js +5 -37
- package/core/Progress/index.js.map +1 -1
- package/core/Progress.js +5 -37
- package/core/Progress.js.map +1 -1
- package/core/Radio.d.ts +2 -2
- package/core/Radio.js +7 -39
- package/core/Radio.js.map +1 -1
- package/core/RelativeTime.js +27 -45
- package/core/RelativeTime.js.map +1 -1
- package/core/Resizable/Resizer.js +4 -16
- package/core/Resizable/Resizer.js.map +1 -1
- package/core/Resizable/index.js +32 -55
- package/core/Resizable/index.js.map +1 -1
- package/core/SearchableSelect.js +6 -38
- package/core/SearchableSelect.js.map +1 -1
- package/core/Select.js +7 -39
- package/core/Select.js.map +1 -1
- package/core/SignedAmountInput.js +23 -70
- package/core/SignedAmountInput.js.map +1 -1
- package/core/Skeleton.js +6 -49
- package/core/Skeleton.js.map +1 -1
- package/core/Slider/RangeSlider.js +6 -49
- package/core/Slider/RangeSlider.js.map +1 -1
- package/core/Slider/index.js +24 -94
- package/core/Slider/index.js.map +1 -1
- package/core/Space.js +6 -38
- package/core/Space.js.map +1 -1
- package/core/Spin.js +6 -49
- package/core/Spin.js.map +1 -1
- package/core/StepFormContainer/index.js +17 -64
- package/core/StepFormContainer/index.js.map +1 -1
- package/core/Steps.js +5 -37
- package/core/Steps.js.map +1 -1
- package/core/Table.js +83 -116
- package/core/Table.js.map +1 -1
- package/core/Tabs/Single.js +6 -49
- package/core/Tabs/Single.js.map +1 -1
- package/core/Tabs/index.js +29 -100
- package/core/Tabs/index.js.map +1 -1
- package/core/Tag.js +5 -37
- package/core/Tag.js.map +1 -1
- package/core/TagInput/index.js +50 -95
- package/core/TagInput/index.js.map +1 -1
- package/core/Tags.js +13 -60
- package/core/Tags.js.map +1 -1
- package/core/TimePicker.js +17 -64
- package/core/TimePicker.js.map +1 -1
- package/core/TimeRangePicker.js +28 -47
- package/core/TimeRangePicker.js.map +1 -1
- package/core/Tooltip.js +7 -29
- package/core/Tooltip.js.map +1 -1
- package/core/TypedTabs/index.js +13 -75
- package/core/TypedTabs/index.js.map +1 -1
- package/core/UIProvider.js +4 -27
- package/core/UIProvider.js.map +1 -1
- package/core/Uploader.js +54 -85
- package/core/Uploader.js.map +1 -1
- package/core/VerticalMarquee/index.js +18 -35
- package/core/VerticalMarquee/index.js.map +1 -1
- package/core/VirtualList/index.js +19 -20
- package/core/VirtualList/index.js.map +1 -1
- package/core/VirtualTable/TableHeader.js +7 -9
- package/core/VirtualTable/TableHeader.js.map +1 -1
- package/core/VirtualTable/TableRow.js +12 -13
- package/core/VirtualTable/TableRow.js.map +1 -1
- package/core/VirtualTable/hooks/useColumnWidths.js +20 -36
- package/core/VirtualTable/hooks/useColumnWidths.js.map +1 -1
- package/core/VirtualTable/hooks/useColumnsStickyPosition.js +9 -9
- package/core/VirtualTable/hooks/useColumnsStickyPosition.js.map +1 -1
- package/core/VirtualTable/hooks/useRowSelection.js +28 -54
- package/core/VirtualTable/hooks/useRowSelection.js.map +1 -1
- package/core/VirtualTable/hooks/useScroll.js +13 -29
- package/core/VirtualTable/hooks/useScroll.js.map +1 -1
- package/core/VirtualTable/hooks/useScrollBarSize.js +6 -22
- package/core/VirtualTable/hooks/useScrollBarSize.js.map +1 -1
- package/core/VirtualTable/index.js +24 -25
- package/core/VirtualTable/index.js.map +1 -1
- package/core/WithExplanation/index.js +11 -32
- package/core/WithExplanation/index.js.map +1 -1
- package/core/WithTooltipList.js +17 -66
- package/core/WithTooltipList.js.map +1 -1
- package/core/YearMonthSelector.js +28 -76
- package/core/YearMonthSelector.js.map +1 -1
- package/hooks/useAPI.js +8 -44
- package/hooks/useAPI.js.map +1 -1
- package/hooks/useBool.js +4 -21
- package/hooks/useBool.js.map +1 -1
- package/hooks/useCompositeRef.js +4 -8
- package/hooks/useCompositeRef.js.map +1 -1
- package/hooks/useDebounce.js +6 -35
- package/hooks/useDebounce.js.map +1 -1
- package/hooks/useDelayed.js +7 -8
- package/hooks/useDelayed.js.map +1 -1
- package/hooks/useDidMountEffect.js +1 -1
- package/hooks/useDidMountEffect.js.map +1 -1
- package/hooks/useDraggable/DragController.js +37 -45
- package/hooks/useDraggable/DragController.js.map +1 -1
- package/hooks/useDraggable/index.js +25 -53
- package/hooks/useDraggable/index.js.map +1 -1
- package/hooks/useDraggable/useDrag.js +5 -5
- package/hooks/useDraggable/useDrag.js.map +1 -1
- package/hooks/useExtended.js +8 -8
- package/hooks/useExtended.js.map +1 -1
- package/hooks/useForceUpdate.js +2 -18
- package/hooks/useForceUpdate.js.map +1 -1
- package/hooks/useOrientation.js +2 -18
- package/hooks/useOrientation.js.map +1 -1
- package/hooks/usePrevious.js +1 -1
- package/hooks/usePrevious.js.map +1 -1
- package/hooks/useResizeObserver.js +7 -9
- package/hooks/useResizeObserver.js.map +1 -1
- package/hooks/useSwipe/controller.js +68 -75
- package/hooks/useSwipe/controller.js.map +1 -1
- package/hooks/useSwipe/index.js +6 -14
- package/hooks/useSwipe/index.js.map +1 -1
- package/hooks/useThunk.js +9 -36
- package/hooks/useThunk.js.map +1 -1
- package/hooks/useTransform.js +18 -30
- package/hooks/useTransform.js.map +1 -1
- package/hooks/useWhyDidYouUpdate.js +10 -19
- package/hooks/useWhyDidYouUpdate.js.map +1 -1
- package/hooks/useWillUnmountEffect.js +1 -1
- package/hooks/useWillUnmountEffect.js.map +1 -1
- package/internal/ArrayUtil.js +13 -38
- package/internal/ArrayUtil.js.map +1 -1
- package/internal/ExpirableLocalStorage.js +70 -74
- package/internal/ExpirableLocalStorage.js.map +1 -1
- package/internal/NumberUtil.js +11 -11
- package/internal/NumberUtil.js.map +1 -1
- package/internal/StorageHelper.js +62 -65
- package/internal/StorageHelper.js.map +1 -1
- package/internal/TextUtil.js +6 -10
- package/internal/TextUtil.js.map +1 -1
- package/internal/i18n/admin/en.js +1 -1
- package/internal/i18n/admin/en.js.map +1 -1
- package/internal/i18n/admin/index.js +3 -3
- package/internal/i18n/admin/index.js.map +1 -1
- package/internal/i18n/admin/zh.js +1 -1
- package/internal/i18n/admin/zh.js.map +1 -1
- package/internal/i18n/core/en.js +1 -1
- package/internal/i18n/core/en.js.map +1 -1
- package/internal/i18n/core/index.js +3 -3
- package/internal/i18n/core/index.js.map +1 -1
- package/internal/i18n/core/zh.js +1 -1
- package/internal/i18n/core/zh.js.map +1 -1
- package/internal/i18n/util/en.js +1 -1
- package/internal/i18n/util/en.js.map +1 -1
- package/internal/i18n/util/index.js +3 -3
- package/internal/i18n/util/index.js.map +1 -1
- package/internal/i18n/util/zh.js +1 -1
- package/internal/i18n/util/zh.js.map +1 -1
- package/package.json +6 -6
- package/util/AdminNavigationUtil.js +22 -64
- package/util/AdminNavigationUtil.js.map +1 -1
- package/util/BrowserBookmarkUtil.js +5 -5
- package/util/BrowserBookmarkUtil.js.map +1 -1
- package/util/BrowserUtil/index.js +29 -68
- package/util/BrowserUtil/index.js.map +1 -1
- package/util/CanvasUtil.js +22 -61
- package/util/CanvasUtil.js.map +1 -1
- package/util/Clipboard.js +25 -85
- package/util/Clipboard.js.map +1 -1
- package/util/ExpirableLocalStorageUtil.js +1 -1
- package/util/ExpirableLocalStorageUtil.js.map +1 -1
- package/util/ExportUtil.js +13 -13
- package/util/ExportUtil.js.map +1 -1
- package/util/ImportUtil.js +34 -86
- package/util/ImportUtil.js.map +1 -1
- package/util/LocalStorageUtil.js +1 -1
- package/util/LocalStorageUtil.js.map +1 -1
- package/util/LocaleUtil.js +16 -19
- package/util/LocaleUtil.js.map +1 -1
- package/util/MediaUtil/index.js +15 -15
- package/util/MediaUtil/index.js.map +1 -1
- package/util/MessageUtil.js +5 -16
- package/util/MessageUtil.js.map +1 -1
- package/util/ModalUtil/index.js +46 -68
- package/util/ModalUtil/index.js.map +1 -1
- package/util/NotificationUtil.js +8 -24
- package/util/NotificationUtil.js.map +1 -1
- package/util/OrientationUtil.js +8 -8
- package/util/OrientationUtil.js.map +1 -1
- package/util/PromptUtil/PromptBody.js +24 -88
- package/util/PromptUtil/PromptBody.js.map +1 -1
- package/util/PromptUtil/index.js +20 -33
- package/util/PromptUtil/index.js.map +1 -1
- package/util/ReactUtil.js +20 -54
- package/util/ReactUtil.js.map +1 -1
- package/util/RecentUsedStorageUtil/index.js +14 -15
- package/util/RecentUsedStorageUtil/index.js.map +1 -1
- package/util/RecentUsedStorageUtil/pushToList.js +3 -28
- package/util/RecentUsedStorageUtil/pushToList.js.map +1 -1
- package/util/SessionStorageUtil.js +1 -1
- package/util/SessionStorageUtil.js.map +1 -1
- package/util/SwipeUtil.js +9 -9
- package/util/SwipeUtil.js.map +1 -1
- package/util/UploadUtil/index.js +29 -30
- package/util/UploadUtil/index.js.map +1 -1
|
@@ -1,28 +1,3 @@
|
|
|
1
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
2
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
3
|
-
if (!m) return o;
|
|
4
|
-
var i = m.call(o), r, ar = [], e;
|
|
5
|
-
try {
|
|
6
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7
|
-
}
|
|
8
|
-
catch (error) { e = { error: error }; }
|
|
9
|
-
finally {
|
|
10
|
-
try {
|
|
11
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
12
|
-
}
|
|
13
|
-
finally { if (e) throw e.error; }
|
|
14
|
-
}
|
|
15
|
-
return ar;
|
|
16
|
-
};
|
|
17
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
18
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
19
|
-
if (ar || !(i in from)) {
|
|
20
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
21
|
-
ar[i] = from[i];
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
25
|
-
};
|
|
26
1
|
import React from "react";
|
|
27
2
|
import { Tabs } from "../../core/Tabs";
|
|
28
3
|
import { useHistory, useLocation } from "react-router-dom";
|
|
@@ -30,43 +5,42 @@ import { AdminAppContext } from "./context";
|
|
|
30
5
|
import { i18n } from "../../internal/i18n/admin";
|
|
31
6
|
import { Spin } from "../../core/Spin";
|
|
32
7
|
import { AdminNavigationUtil } from "../../util/AdminNavigationUtil";
|
|
33
|
-
export function Navigator(
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
var locationRef = React.useRef(location);
|
|
8
|
+
export function Navigator({ permissions, superAdminPermission, navigationGroups }) {
|
|
9
|
+
const [tabs, setTabs] = React.useState([]);
|
|
10
|
+
const location = useLocation();
|
|
11
|
+
const locationRef = React.useRef(location);
|
|
38
12
|
locationRef.current = location;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
13
|
+
const history = useHistory();
|
|
14
|
+
const t = i18n();
|
|
15
|
+
const context = React.useContext(AdminAppContext);
|
|
16
|
+
const groups = React.useMemo(() => AdminNavigationUtil.groups(navigationGroups, permissions, superAdminPermission, true), [navigationGroups, permissions, superAdminPermission]);
|
|
17
|
+
const modules = React.useMemo(() => AdminNavigationUtil.modules(groups), [groups]);
|
|
18
|
+
const computeIndexByURL = React.useCallback((url, tabs) => {
|
|
45
19
|
// If url is null, then use current URL
|
|
46
|
-
|
|
20
|
+
const matchedModule = AdminNavigationUtil.moduleByURL(url, modules);
|
|
47
21
|
if (matchedModule) {
|
|
48
22
|
if (matchedModule.separateTab) {
|
|
49
|
-
return tabs.findIndex(
|
|
23
|
+
return tabs.findIndex(_ => _.url === url);
|
|
50
24
|
}
|
|
51
25
|
else {
|
|
52
|
-
return tabs.findIndex(
|
|
26
|
+
return tabs.findIndex(_ => _.module === matchedModule);
|
|
53
27
|
}
|
|
54
28
|
}
|
|
55
29
|
else {
|
|
56
30
|
return -1;
|
|
57
31
|
}
|
|
58
32
|
}, [modules]);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
33
|
+
const onTabClose = (key) => {
|
|
34
|
+
const currentURL = location.pathname;
|
|
35
|
+
const closedURL = key;
|
|
36
|
+
const closedIndex = computeIndexByURL(closedURL, tabs);
|
|
63
37
|
if (closedIndex >= 0) {
|
|
64
|
-
|
|
38
|
+
const newTabs = [...tabs];
|
|
65
39
|
newTabs.splice(closedIndex, 1);
|
|
66
40
|
setTabs(newTabs);
|
|
67
41
|
if (currentURL === closedURL) {
|
|
68
42
|
// Close current tab, then re-open the previous tab, or the first tab
|
|
69
|
-
|
|
43
|
+
const followingItem = newTabs[closedIndex - 1];
|
|
70
44
|
if (followingItem) {
|
|
71
45
|
history.push(followingItem.url, followingItem.historyState);
|
|
72
46
|
}
|
|
@@ -76,11 +50,11 @@ export function Navigator(_a) {
|
|
|
76
50
|
}
|
|
77
51
|
}
|
|
78
52
|
};
|
|
79
|
-
|
|
80
|
-
|
|
53
|
+
const onTabChange = (url) => {
|
|
54
|
+
const index = computeIndexByURL(url, tabs);
|
|
81
55
|
if (index >= 0) {
|
|
82
56
|
// Trigger URL change, then the flow will go to componentDidUpdate
|
|
83
|
-
|
|
57
|
+
const existedItem = tabs[index];
|
|
84
58
|
history.push(existedItem.url, existedItem.historyState);
|
|
85
59
|
}
|
|
86
60
|
else {
|
|
@@ -88,38 +62,38 @@ export function Navigator(_a) {
|
|
|
88
62
|
history.push("/");
|
|
89
63
|
}
|
|
90
64
|
};
|
|
91
|
-
|
|
65
|
+
const tabItems = [
|
|
92
66
|
{
|
|
93
67
|
key: "/",
|
|
94
68
|
label: t.homePageTitle,
|
|
95
69
|
closable: false,
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
React.useEffect(
|
|
118
|
-
context.registerTitleUpdater(
|
|
119
|
-
setTabs(
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
70
|
+
},
|
|
71
|
+
...tabs.map(({ customTitle, url, module }) => {
|
|
72
|
+
let label;
|
|
73
|
+
if (customTitle) {
|
|
74
|
+
label = customTitle;
|
|
75
|
+
}
|
|
76
|
+
else if (module.separateTab) {
|
|
77
|
+
label = (React.createElement(React.Fragment, null,
|
|
78
|
+
module.title,
|
|
79
|
+
React.createElement(Spin, { spinning: true, size: "small" })));
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
label = module.title;
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
label,
|
|
86
|
+
key: url,
|
|
87
|
+
closable: true,
|
|
88
|
+
};
|
|
89
|
+
}),
|
|
90
|
+
];
|
|
91
|
+
React.useEffect(() => {
|
|
92
|
+
context.registerTitleUpdater(title => {
|
|
93
|
+
setTabs(tabs => {
|
|
94
|
+
const url = locationRef.current.pathname;
|
|
95
|
+
const index = computeIndexByURL(url, tabs);
|
|
96
|
+
const newTabs = [...tabs];
|
|
123
97
|
if (index >= 0) {
|
|
124
98
|
newTabs[index].customTitle = title;
|
|
125
99
|
}
|
|
@@ -127,13 +101,13 @@ export function Navigator(_a) {
|
|
|
127
101
|
});
|
|
128
102
|
});
|
|
129
103
|
}, [computeIndexByURL, context]);
|
|
130
|
-
React.useEffect(
|
|
131
|
-
setTabs(
|
|
132
|
-
|
|
104
|
+
React.useEffect(() => {
|
|
105
|
+
setTabs(tabs => {
|
|
106
|
+
const newTabs = [...tabs];
|
|
133
107
|
// Determine whether create a new tab, or update the existing tab
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
108
|
+
const newURL = location.pathname;
|
|
109
|
+
const newHistoryState = location.state;
|
|
110
|
+
const newIndex = computeIndexByURL(newURL, newTabs);
|
|
137
111
|
if (newIndex >= 0) {
|
|
138
112
|
// Update the existing tab
|
|
139
113
|
newTabs[newIndex].url = newURL;
|
|
@@ -142,7 +116,7 @@ export function Navigator(_a) {
|
|
|
142
116
|
else {
|
|
143
117
|
// If module exists, create a new tab
|
|
144
118
|
// Else, it means, the user goes to the homepage tab, so just do nothing
|
|
145
|
-
|
|
119
|
+
const targetModule = AdminNavigationUtil.moduleByURL(newURL, modules);
|
|
146
120
|
if (targetModule) {
|
|
147
121
|
newTabs.push({
|
|
148
122
|
url: newURL,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Navigator.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/Navigator.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Navigator.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/Navigator.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,15 @@
|
|
|
1
|
-
var __extends = (this && this.__extends) || (function () {
|
|
2
|
-
var extendStatics = function (d, b) {
|
|
3
|
-
extendStatics = Object.setPrototypeOf ||
|
|
4
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
-
return extendStatics(d, b);
|
|
7
|
-
};
|
|
8
|
-
return function (d, b) {
|
|
9
|
-
if (typeof b !== "function" && b !== null)
|
|
10
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
-
extendStatics(d, b);
|
|
12
|
-
function __() { this.constructor = d; }
|
|
13
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
-
};
|
|
15
|
-
})();
|
|
16
1
|
import React from "react";
|
|
17
2
|
import { AdminPage } from "../AdminPage";
|
|
18
3
|
import { i18n } from "../../internal/i18n/admin";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
4
|
+
export class NotFound extends React.PureComponent {
|
|
5
|
+
static displayName = "NotFound";
|
|
6
|
+
componentDidMount() {
|
|
7
|
+
this.props.onNotFound?.(location.href);
|
|
23
8
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
(_b = (_a = this.props).onNotFound) === null || _b === void 0 ? void 0 : _b.call(_a, location.href);
|
|
27
|
-
};
|
|
28
|
-
NotFound.prototype.render = function () {
|
|
29
|
-
var t = i18n();
|
|
9
|
+
render() {
|
|
10
|
+
const t = i18n();
|
|
30
11
|
return (React.createElement(AdminPage, null,
|
|
31
12
|
React.createElement(AdminPage.Result, { type: "error", title: t.notFound })));
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return NotFound;
|
|
35
|
-
}(React.PureComponent));
|
|
36
|
-
export { NotFound };
|
|
13
|
+
}
|
|
14
|
+
}
|
|
37
15
|
//# sourceMappingURL=NotFound.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotFound.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/NotFound.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NotFound.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/NotFound.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,IAAI,EAAC,MAAM,2BAA2B,CAAC;AAM/C,MAAM,OAAO,QAAS,SAAQ,KAAK,CAAC,aAAoB;IACpD,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC;IAEhC,iBAAiB;QACb,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM;QACF,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;QACjB,OAAO,CACH,oBAAC,SAAS;YACN,oBAAC,SAAS,CAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAI,CAC5C,CACf,CAAC;IACN,CAAC"}
|
|
@@ -1,29 +1,3 @@
|
|
|
1
|
-
var __extends = (this && this.__extends) || (function () {
|
|
2
|
-
var extendStatics = function (d, b) {
|
|
3
|
-
extendStatics = Object.setPrototypeOf ||
|
|
4
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
-
return extendStatics(d, b);
|
|
7
|
-
};
|
|
8
|
-
return function (d, b) {
|
|
9
|
-
if (typeof b !== "function" && b !== null)
|
|
10
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
-
extendStatics(d, b);
|
|
12
|
-
function __() { this.constructor = d; }
|
|
13
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
-
};
|
|
15
|
-
})();
|
|
16
|
-
var __assign = (this && this.__assign) || function () {
|
|
17
|
-
__assign = Object.assign || function(t) {
|
|
18
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
19
|
-
s = arguments[i];
|
|
20
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
21
|
-
t[p] = s[p];
|
|
22
|
-
}
|
|
23
|
-
return t;
|
|
24
|
-
};
|
|
25
|
-
return __assign.apply(this, arguments);
|
|
26
|
-
};
|
|
27
1
|
import React from "react";
|
|
28
2
|
import { AdminNavigationUtil } from "../../util/AdminNavigationUtil";
|
|
29
3
|
import { Route, Switch } from "react-router-dom";
|
|
@@ -33,34 +7,28 @@ import { i18n } from "../../internal/i18n/admin";
|
|
|
33
7
|
import { AdminPage } from "../AdminPage";
|
|
34
8
|
import { TextUtil } from "../../internal/TextUtil";
|
|
35
9
|
import { AdminAppContext } from "./context";
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
React.createElement(AdminPage.Result, { type: "success", title: TextUtil.interpolate(t.welcome, name), subtitle: t.homePageSubtitle, hideButton: true })));
|
|
45
|
-
};
|
|
46
|
-
var enabledNavigationGroups = AdminNavigationUtil.groups(props.navigationGroups, props.permissions, props.superAdminPermission, true);
|
|
47
|
-
_this.navigationModules = AdminNavigationUtil.modules(enabledNavigationGroups);
|
|
48
|
-
return _this;
|
|
10
|
+
export class RouteSwitch extends React.PureComponent {
|
|
11
|
+
static displayName = "RouteSwitch";
|
|
12
|
+
static contextType = AdminAppContext;
|
|
13
|
+
navigationModules;
|
|
14
|
+
constructor(props) {
|
|
15
|
+
super(props);
|
|
16
|
+
const enabledNavigationGroups = AdminNavigationUtil.groups(props.navigationGroups, props.permissions, props.superAdminPermission, true);
|
|
17
|
+
this.navigationModules = AdminNavigationUtil.modules(enabledNavigationGroups);
|
|
49
18
|
}
|
|
50
|
-
|
|
51
|
-
|
|
19
|
+
renderWelcome = () => {
|
|
20
|
+
const { name } = this.context;
|
|
21
|
+
const t = i18n();
|
|
22
|
+
return (React.createElement(AdminPage, null,
|
|
23
|
+
React.createElement(AdminPage.Result, { type: "success", title: TextUtil.interpolate(t.welcome, name), subtitle: t.homePageSubtitle, hideButton: true })));
|
|
24
|
+
};
|
|
25
|
+
render() {
|
|
26
|
+
const { WelcomeComponent, onLifecycleError, onNotFound } = this.props;
|
|
52
27
|
return (React.createElement(Switch, null,
|
|
53
28
|
React.createElement(Route, { exact: true, path: "/", component: WelcomeComponent || this.renderWelcome }),
|
|
54
|
-
this.navigationModules.map(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
React.createElement(Route, { component: function () { return React.createElement(NotFound, { onNotFound: onNotFound }); } })));
|
|
60
|
-
};
|
|
61
|
-
RouteSwitch.displayName = "RouteSwitch";
|
|
62
|
-
RouteSwitch.contextType = AdminAppContext;
|
|
63
|
-
return RouteSwitch;
|
|
64
|
-
}(React.PureComponent));
|
|
65
|
-
export { RouteSwitch };
|
|
29
|
+
this.navigationModules.map(({ url, routeParam, componentType: RouteComponent }) => (React.createElement(Route, { exact: true, key: url, path: routeParam ? url + routeParam : url, component: (props) => (React.createElement(WithErrorBoundary, { onLifecycleError: onLifecycleError },
|
|
30
|
+
React.createElement(RouteComponent, { ...props }))) }))),
|
|
31
|
+
React.createElement(Route, { component: () => React.createElement(NotFound, { onNotFound: onNotFound }) })));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
66
34
|
//# sourceMappingURL=RouteSwitch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteSwitch.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/RouteSwitch.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RouteSwitch.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/RouteSwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,IAAI,EAAC,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAC,eAAe,EAAC,MAAM,WAAW,CAAC;AAW1C,MAAM,OAAO,WAA4B,SAAQ,KAAK,CAAC,aAAoC;IACvF,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC;IACnC,MAAM,CAAC,WAAW,GAAG,eAAe,CAAC;IAGpB,iBAAiB,CAAmC;IAErE,YAAY,KAA4B;QACpC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACxI,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAClF,CAAC;IAED,aAAa,GAAG,GAAG,EAAE;QACjB,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;QACjB,OAAO,CACH,oBAAC,SAAS;YACN,oBAAC,SAAS,CAAC,MAAM,IAAC,IAAI,EAAC,SAAS,EAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,gBAAgB,EAAE,UAAU,SAAG,CAClH,CACf,CAAC;IACN,CAAC,CAAC;IAEF,MAAM;QACF,MAAM,EAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACpE,OAAO,CACH,oBAAC,MAAM;YACH,oBAAC,KAAK,IAAC,KAAK,QAAC,IAAI,EAAC,GAAG,EAAC,SAAS,EAAE,gBAAgB,IAAI,IAAI,CAAC,aAAa,GAAI;YAC1E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAC,EAAE,EAAE,CAAC,CAC9E,oBAAC,KAAK,IACF,KAAK,QACL,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,EACzC,SAAS,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,CACvB,oBAAC,iBAAiB,IAAC,gBAAgB,EAAE,gBAAgB;oBACjD,oBAAC,cAAc,OAAK,KAAK,GAAI,CACb,CACvB,GACH,CACL,CAAC;YACF,oBAAC,KAAK,IAAC,SAAS,EAAE,GAAG,EAAE,CAAC,oBAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,GAAI,GAAI,CAC3D,CACZ,CAAC;IACN,CAAC"}
|
|
@@ -1,39 +1,19 @@
|
|
|
1
|
-
var __extends = (this && this.__extends) || (function () {
|
|
2
|
-
var extendStatics = function (d, b) {
|
|
3
|
-
extendStatics = Object.setPrototypeOf ||
|
|
4
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
-
return extendStatics(d, b);
|
|
7
|
-
};
|
|
8
|
-
return function (d, b) {
|
|
9
|
-
if (typeof b !== "function" && b !== null)
|
|
10
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
-
extendStatics(d, b);
|
|
12
|
-
function __() { this.constructor = d; }
|
|
13
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
-
};
|
|
15
|
-
})();
|
|
16
1
|
import React from "react";
|
|
17
2
|
import { AdminPage } from "../AdminPage";
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return _this;
|
|
3
|
+
export class WithErrorBoundary extends React.PureComponent {
|
|
4
|
+
static displayName = "WithErrorBoundary";
|
|
5
|
+
constructor(props) {
|
|
6
|
+
super(props);
|
|
7
|
+
this.state = { error: null };
|
|
24
8
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
var error = this.state.error;
|
|
9
|
+
componentDidCatch(error, errorInfo) {
|
|
10
|
+
this.setState({ error });
|
|
11
|
+
this.props.onLifecycleError?.(error, errorInfo.componentStack || "<unknown>");
|
|
12
|
+
}
|
|
13
|
+
render() {
|
|
14
|
+
const { error } = this.state;
|
|
32
15
|
return error ? (React.createElement(AdminPage, null,
|
|
33
16
|
React.createElement(AdminPage.Result, { type: "error", title: "Page Script Error", subtitle: error.message }))) : (this.props.children);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return WithErrorBoundary;
|
|
37
|
-
}(React.PureComponent));
|
|
38
|
-
export { WithErrorBoundary };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
39
19
|
//# sourceMappingURL=WithErrorBoundary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WithErrorBoundary.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/WithErrorBoundary.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WithErrorBoundary.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/WithErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAWvC,MAAM,OAAO,iBAAkB,SAAQ,KAAK,CAAC,aAA2B;IACpE,MAAM,CAAC,WAAW,GAAG,mBAAmB,CAAC;IAEzC,YAAY,KAAY;QACpB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC;IAC/B,CAAC;IAED,iBAAiB,CAAC,KAAY,EAAE,SAA0B;QACtD,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,cAAc,IAAI,WAAW,CAAC,CAAC;IAClF,CAAC;IAED,MAAM;QACF,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,OAAO,KAAK,CAAC,CAAC,CAAC,CACX,oBAAC,SAAS;YACN,oBAAC,SAAS,CAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,mBAAmB,EAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,GAAI,CAC5E,CACf,CAAC,CAAC,CAAC,CACA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACtB,CAAC;IACN,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
export
|
|
2
|
+
export const AdminAppContext = React.createContext({
|
|
3
3
|
name: "",
|
|
4
|
-
updateTitle:
|
|
5
|
-
registerTitleUpdater:
|
|
4
|
+
updateTitle: () => { },
|
|
5
|
+
registerTitleUpdater: () => { },
|
|
6
6
|
});
|
|
7
7
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAAsB;IACpE,IAAI,EAAE,EAAE;IACR,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;IACrB,oBAAoB,EAAE,GAAG,EAAE,GAAE,CAAC;CACjC,CAAC,CAAC"}
|
package/admin/AdminApp/index.js
CHANGED
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
var __extends = (this && this.__extends) || (function () {
|
|
2
|
-
var extendStatics = function (d, b) {
|
|
3
|
-
extendStatics = Object.setPrototypeOf ||
|
|
4
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
-
return extendStatics(d, b);
|
|
7
|
-
};
|
|
8
|
-
return function (d, b) {
|
|
9
|
-
if (typeof b !== "function" && b !== null)
|
|
10
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
-
extendStatics(d, b);
|
|
12
|
-
function __() { this.constructor = d; }
|
|
13
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
-
};
|
|
15
|
-
})();
|
|
16
1
|
import React from "react";
|
|
17
2
|
import AntLayout from "antd/es/layout";
|
|
18
3
|
import MenuFoldOutlined from "@ant-design/icons/MenuFoldOutlined";
|
|
@@ -27,30 +12,34 @@ import { RouteSwitch } from "./RouteSwitch";
|
|
|
27
12
|
import { Menu } from "./Menu";
|
|
28
13
|
import { Navigator } from "./Navigator";
|
|
29
14
|
import "./index.less";
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
menuExpanded: LocalStorageUtil.getBool(
|
|
15
|
+
export class AdminApp extends React.PureComponent {
|
|
16
|
+
static displayName = "AdminApp";
|
|
17
|
+
static SquareLogo = SquareLogo;
|
|
18
|
+
static SoundSwitch = SoundSwitch;
|
|
19
|
+
static NavigatorSide = NavigatorSide;
|
|
20
|
+
menuExpandedKey = "admin-menu-expanded";
|
|
21
|
+
adminAppContext;
|
|
22
|
+
registeredTitleUpdater;
|
|
23
|
+
constructor(props) {
|
|
24
|
+
super(props);
|
|
25
|
+
this.state = {
|
|
26
|
+
menuExpanded: LocalStorageUtil.getBool(this.menuExpandedKey, true),
|
|
42
27
|
};
|
|
43
|
-
|
|
28
|
+
this.adminAppContext = {
|
|
44
29
|
name: props.name,
|
|
45
|
-
updateTitle:
|
|
46
|
-
registerTitleUpdater:
|
|
30
|
+
updateTitle: title => this.registeredTitleUpdater?.(title),
|
|
31
|
+
registerTitleUpdater: fn => (this.registeredTitleUpdater = fn),
|
|
47
32
|
};
|
|
48
|
-
return _this;
|
|
49
33
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
34
|
+
toggleMenuExpansion = () => {
|
|
35
|
+
const newValue = !this.state.menuExpanded;
|
|
36
|
+
this.setState({ menuExpanded: newValue });
|
|
37
|
+
LocalStorageUtil.setBool(this.menuExpandedKey, newValue);
|
|
38
|
+
};
|
|
39
|
+
render() {
|
|
40
|
+
const { name, navigationGroups, permissions, superAdminPermission, WelcomeComponent, LogoComponent, NavigatorSideComponent, noBrowserRouter, badges, sideMenuWidth, onNotFound, onLifecycleError, } = this.props;
|
|
41
|
+
const { menuExpanded } = this.state;
|
|
42
|
+
const coreContent = (React.createElement(AdminAppContext.Provider, { value: this.adminAppContext },
|
|
54
43
|
React.createElement(AntLayout, { id: "admin-app" },
|
|
55
44
|
React.createElement(AntLayout.Sider, { collapsed: !menuExpanded, width: sideMenuWidth },
|
|
56
45
|
LogoComponent && React.createElement(LogoComponent, { expanded: menuExpanded }),
|
|
@@ -63,12 +52,6 @@ var AdminApp = /** @class */ (function (_super) {
|
|
|
63
52
|
React.createElement(AntLayout.Content, null,
|
|
64
53
|
React.createElement(RouteSwitch, { navigationGroups: navigationGroups, permissions: permissions, superAdminPermission: superAdminPermission, WelcomeComponent: WelcomeComponent, onLifecycleError: onLifecycleError, onNotFound: onNotFound }))))));
|
|
65
54
|
return noBrowserRouter ? coreContent : React.createElement(BrowserRouter, null, coreContent);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
AdminApp.SquareLogo = SquareLogo;
|
|
69
|
-
AdminApp.SoundSwitch = SoundSwitch;
|
|
70
|
-
AdminApp.NavigatorSide = NavigatorSide;
|
|
71
|
-
return AdminApp;
|
|
72
|
-
}(React.PureComponent));
|
|
73
|
-
export { AdminApp };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
74
57
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/AdminApp/index.tsx"],"names":[],"mappings":"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"}
|