@looker/api-explorer 0.9.21 → 0.9.26
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 +101 -0
- package/lib/ApiExplorer.d.ts +4 -39
- package/lib/ApiExplorer.js +23 -30
- package/lib/ApiExplorer.js.map +1 -1
- package/lib/App.d.ts +1 -0
- package/lib/App.js +29 -0
- package/lib/App.js.map +1 -0
- package/lib/StandaloneApiExplorer.js +8 -13
- package/lib/StandaloneApiExplorer.js.map +1 -1
- package/lib/components/DocCode/DocCode.js +6 -10
- package/lib/components/DocCode/DocCode.js.map +1 -1
- package/lib/components/DocMarkdown/DocMarkdown.js +11 -15
- package/lib/components/DocMarkdown/DocMarkdown.js.map +1 -1
- package/lib/components/DocReferences/DocReferences.js +7 -11
- package/lib/components/DocReferences/DocReferences.js.map +1 -1
- package/lib/components/DocSdkUsage/DocSdkUsage.js +3 -6
- package/lib/components/DocSdkUsage/DocSdkUsage.js.map +1 -1
- package/lib/components/DocSource/DocSource.js +5 -7
- package/lib/components/DocSource/DocSource.js.map +1 -1
- package/lib/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.d.ts +1 -1
- package/lib/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js +152 -8
- package/lib/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js.map +1 -1
- package/lib/components/SelectorContainer/SdkLanguageSelector.js +1 -1
- package/lib/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
- package/lib/components/SideNav/SideNav.js +39 -26
- package/lib/components/SideNav/SideNav.js.map +1 -1
- package/lib/components/SideNav/SideNavMethods.js +7 -9
- package/lib/components/SideNav/SideNavMethods.js.map +1 -1
- package/lib/components/SideNav/SideNavTypes.js +6 -8
- package/lib/components/SideNav/SideNavTypes.js.map +1 -1
- package/lib/components/SideNav/searchUtils.d.ts +1 -1
- package/lib/components/SideNav/searchUtils.js +1 -1
- package/lib/components/SideNav/searchUtils.js.map +1 -1
- package/lib/components/common/Loader.d.ts +1 -1
- package/lib/components/common/Loader.js.map +1 -1
- package/lib/esm/ApiExplorer.js +26 -33
- package/lib/esm/ApiExplorer.js.map +1 -1
- package/lib/esm/App.js +19 -0
- package/lib/esm/App.js.map +1 -0
- package/lib/esm/StandaloneApiExplorer.js +7 -10
- package/lib/esm/StandaloneApiExplorer.js.map +1 -1
- package/lib/esm/components/DocCode/DocCode.js +5 -8
- package/lib/esm/components/DocCode/DocCode.js.map +1 -1
- package/lib/esm/components/DocMarkdown/DocMarkdown.js +8 -11
- package/lib/esm/components/DocMarkdown/DocMarkdown.js.map +1 -1
- package/lib/esm/components/DocReferences/DocReferences.js +5 -8
- package/lib/esm/components/DocReferences/DocReferences.js.map +1 -1
- package/lib/esm/components/DocSdkUsage/DocSdkUsage.js +5 -7
- package/lib/esm/components/DocSdkUsage/DocSdkUsage.js.map +1 -1
- package/lib/esm/components/DocSource/DocSource.js +4 -5
- package/lib/esm/components/DocSource/DocSource.js.map +1 -1
- package/lib/esm/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js +153 -6
- package/lib/esm/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js.map +1 -1
- package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js +2 -2
- package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
- package/lib/esm/components/SideNav/SideNav.js +40 -27
- package/lib/esm/components/SideNav/SideNav.js.map +1 -1
- package/lib/esm/components/SideNav/SideNavMethods.js +7 -10
- package/lib/esm/components/SideNav/SideNavMethods.js.map +1 -1
- package/lib/esm/components/SideNav/SideNavTypes.js +6 -9
- package/lib/esm/components/SideNav/SideNavTypes.js.map +1 -1
- package/lib/esm/components/SideNav/searchUtils.js +1 -1
- package/lib/esm/components/SideNav/searchUtils.js.map +1 -1
- package/lib/esm/components/common/Loader.js.map +1 -1
- package/lib/esm/index.js +4 -18
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/reducers/index.js +0 -1
- package/lib/esm/reducers/index.js.map +1 -1
- package/lib/esm/routes/AppRouter.js +2 -2
- package/lib/esm/routes/AppRouter.js.map +1 -1
- package/lib/esm/scenes/MethodScene/MethodScene.js +9 -11
- package/lib/esm/scenes/MethodScene/MethodScene.js.map +1 -1
- package/lib/esm/state/index.js +1 -0
- package/lib/esm/state/index.js.map +1 -1
- package/lib/esm/state/lodes/index.js +3 -0
- package/lib/{test-utils/envAdaptor.js.map → esm/state/lodes/index.js.map} +1 -1
- package/lib/esm/state/lodes/sagas.js +25 -0
- package/lib/esm/state/lodes/sagas.js.map +1 -0
- package/lib/esm/state/lodes/selectors.js +5 -0
- package/lib/esm/state/lodes/selectors.js.map +1 -0
- package/lib/esm/state/lodes/slice.js +30 -0
- package/lib/esm/state/lodes/slice.js.map +1 -0
- package/lib/esm/state/settings/sagas.js +28 -16
- package/lib/esm/state/settings/sagas.js.map +1 -1
- package/lib/esm/state/settings/selectors.js +5 -3
- package/lib/esm/state/settings/selectors.js.map +1 -1
- package/lib/esm/state/settings/slice.js +16 -9
- package/lib/esm/state/settings/slice.js.map +1 -1
- package/lib/esm/state/store.js +6 -3
- package/lib/esm/state/store.js.map +1 -1
- package/lib/esm/test-utils/index.js +2 -4
- package/lib/esm/test-utils/index.js.map +1 -1
- package/lib/esm/test-utils/lodes.js +12 -0
- package/lib/esm/test-utils/lodes.js.map +1 -0
- package/lib/esm/test-utils/redux.js +12 -9
- package/lib/esm/test-utils/redux.js.map +1 -1
- package/lib/esm/utils/index.js +0 -1
- package/lib/esm/utils/index.js.map +1 -1
- package/lib/esm/utils/lodeUtils.js +3 -7
- package/lib/esm/utils/lodeUtils.js.map +1 -1
- package/lib/index.d.ts +4 -1
- package/lib/index.js +52 -23
- package/lib/index.js.map +1 -1
- package/lib/reducers/index.d.ts +0 -1
- package/lib/reducers/index.js +0 -13
- package/lib/reducers/index.js.map +1 -1
- package/lib/routes/AppRouter.d.ts +2 -2
- package/lib/routes/AppRouter.js +2 -2
- package/lib/routes/AppRouter.js.map +1 -1
- package/lib/scenes/MethodScene/MethodScene.d.ts +2 -2
- package/lib/scenes/MethodScene/MethodScene.js +7 -9
- package/lib/scenes/MethodScene/MethodScene.js.map +1 -1
- package/lib/state/index.d.ts +1 -0
- package/lib/state/index.js +13 -0
- package/lib/state/index.js.map +1 -1
- package/lib/state/lodes/index.d.ts +2 -0
- package/lib/{reducers/search → state/lodes}/index.js +8 -8
- package/lib/state/lodes/index.js.map +1 -0
- package/lib/state/lodes/sagas.d.ts +1 -0
- package/lib/state/lodes/sagas.js +34 -0
- package/lib/state/lodes/sagas.js.map +1 -0
- package/lib/state/lodes/selectors.d.ts +3 -0
- package/lib/state/lodes/selectors.js +17 -0
- package/lib/state/lodes/selectors.js.map +1 -0
- package/lib/state/lodes/slice.d.ts +29 -0
- package/lib/state/lodes/slice.js +45 -0
- package/lib/state/lodes/slice.js.map +1 -0
- package/lib/state/settings/sagas.js +28 -15
- package/lib/state/settings/sagas.js.map +1 -1
- package/lib/state/settings/selectors.d.ts +2 -0
- package/lib/state/settings/selectors.js +12 -4
- package/lib/state/settings/selectors.js.map +1 -1
- package/lib/state/settings/slice.d.ts +24 -16
- package/lib/state/settings/slice.js +22 -14
- package/lib/state/settings/slice.js.map +1 -1
- package/lib/state/store.d.ts +3 -0
- package/lib/state/store.js +6 -2
- package/lib/state/store.js.map +1 -1
- package/lib/test-data/declarations.js +24 -0
- package/lib/test-data/declarations.js.map +1 -0
- package/lib/test-data/index.js +23 -0
- package/lib/test-data/index.js.map +1 -1
- package/lib/test-utils/index.d.ts +2 -4
- package/lib/test-utils/index.js +22 -56
- package/lib/test-utils/index.js.map +1 -1
- package/lib/test-utils/lodes.d.ts +4 -0
- package/lib/test-utils/lodes.js +23 -0
- package/lib/test-utils/lodes.js.map +1 -0
- package/lib/test-utils/redux.d.ts +9 -3
- package/lib/test-utils/redux.js +14 -10
- package/lib/test-utils/redux.js.map +1 -1
- package/lib/utils/index.d.ts +0 -1
- package/lib/utils/index.js +0 -24
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/lodeUtils.d.ts +2 -2
- package/lib/utils/lodeUtils.js +3 -7
- package/lib/utils/lodeUtils.js.map +1 -1
- package/package.json +11 -10
- package/public/Looker.3.1.json +1343 -412
- package/public/Looker.4.0.json +3305 -661
- package/src/ApiExplorer.tsx +100 -119
- package/src/{index.tsx → App.tsx} +0 -0
- package/src/StandaloneApiExplorer.tsx +8 -16
- package/src/components/DocCode/DocCode.tsx +6 -6
- package/src/components/DocMarkdown/DocMarkdown.spec.tsx +16 -11
- package/src/components/DocMarkdown/DocMarkdown.tsx +8 -10
- package/src/components/DocReferences/DocReferences.spec.tsx +11 -4
- package/src/components/DocReferences/DocReferences.tsx +8 -9
- package/src/components/DocSdkUsage/DocSdkUsage.spec.tsx +2 -2
- package/src/components/DocSdkUsage/DocSdkUsage.tsx +5 -5
- package/src/components/DocSource/DocSource.tsx +4 -3
- package/src/components/ErrorBoundary/components/SomethingWentWrong/SomethingWentWrong.spec.tsx +1 -1
- package/src/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.tsx +170 -6
- package/src/components/ExploreType/ExploreProperty.spec.tsx +7 -12
- package/src/components/ExploreType/ExploreType.spec.tsx +9 -27
- package/src/components/Header/Header.spec.tsx +30 -38
- package/src/components/SelectorContainer/ApiSpecSelector.spec.tsx +2 -2
- package/src/components/SelectorContainer/SdkLanguageSelector.spec.tsx +3 -5
- package/src/components/SelectorContainer/SdkLanguageSelector.tsx +2 -2
- package/src/components/SelectorContainer/SelectorContainer.spec.tsx +20 -26
- package/src/components/SideNav/SideNav.spec.tsx +24 -29
- package/src/components/SideNav/SideNav.tsx +45 -24
- package/src/components/SideNav/SideNavMethodTags.spec.tsx +8 -6
- package/src/components/SideNav/SideNavMethods.spec.tsx +9 -5
- package/src/components/SideNav/SideNavMethods.tsx +8 -8
- package/src/components/SideNav/SideNavTypeTags.spec.tsx +8 -6
- package/src/components/SideNav/SideNavTypes.spec.tsx +9 -4
- package/src/components/SideNav/SideNavTypes.tsx +7 -7
- package/src/components/SideNav/{searchUtils.tsx → searchUtils.ts} +2 -2
- package/src/components/common/Loader.tsx +1 -1
- package/src/{context/lode/index.ts → index.ts} +4 -1
- package/src/reducers/index.ts +0 -1
- package/src/routes/AppRouter.tsx +5 -4
- package/src/scenes/MethodScene/MethodScene.tsx +11 -11
- package/src/scenes/TypeTagScene/TypeTagScene.spec.tsx +4 -4
- package/src/state/index.ts +1 -0
- package/src/{reducers/search → state/lodes}/index.ts +2 -2
- package/src/state/lodes/sagas.spec.ts +92 -0
- package/src/state/lodes/sagas.ts +51 -0
- package/src/{context/search/SearchContext.ts → state/lodes/selectors.spec.ts} +13 -15
- package/src/{test-utils/envAdaptor.ts → state/lodes/selectors.ts} +8 -5
- package/src/{test-utils/render_with_lode.tsx → state/lodes/slice.ts} +37 -37
- package/src/state/settings/sagas.spec.ts +29 -24
- package/src/state/settings/sagas.ts +16 -16
- package/src/state/settings/selectors.spec.ts +1 -5
- package/src/state/settings/selectors.ts +9 -3
- package/src/state/settings/slice.ts +27 -10
- package/src/state/store.ts +7 -2
- package/src/{reducers/search/actions.ts → test-data/declarations.ts} +16 -15
- package/src/test-data/index.ts +1 -0
- package/src/test-utils/index.ts +2 -10
- package/src/{context/lode/LodeContext.ts → test-utils/lodes.tsx} +14 -13
- package/src/test-utils/redux.tsx +29 -10
- package/src/utils/index.ts +0 -1
- package/src/utils/lodeUtils.ts +4 -6
- package/webpack.dev.config.js +3 -0
- package/webpack.prod.config.js +4 -0
- package/lib/components/SideNav/SearchCriteriaSelector.d.ts +0 -2
- package/lib/components/SideNav/SearchCriteriaSelector.js +0 -57
- package/lib/components/SideNav/SearchCriteriaSelector.js.map +0 -1
- package/lib/context/index.d.ts +0 -2
- package/lib/context/index.js +0 -34
- package/lib/context/index.js.map +0 -1
- package/lib/context/lode/LodeContext.d.ts +0 -9
- package/lib/context/lode/LodeContext.js +0 -21
- package/lib/context/lode/LodeContext.js.map +0 -1
- package/lib/context/lode/index.d.ts +0 -1
- package/lib/context/lode/index.js +0 -20
- package/lib/context/lode/index.js.map +0 -1
- package/lib/context/search/SearchContext.d.ts +0 -9
- package/lib/context/search/SearchContext.js +0 -19
- package/lib/context/search/SearchContext.js.map +0 -1
- package/lib/context/search/index.d.ts +0 -1
- package/lib/context/search/index.js +0 -20
- package/lib/context/search/index.js.map +0 -1
- package/lib/esm/components/SideNav/SearchCriteriaSelector.js +0 -38
- package/lib/esm/components/SideNav/SearchCriteriaSelector.js.map +0 -1
- package/lib/esm/context/index.js +0 -3
- package/lib/esm/context/index.js.map +0 -1
- package/lib/esm/context/lode/LodeContext.js +0 -11
- package/lib/esm/context/lode/LodeContext.js.map +0 -1
- package/lib/esm/context/lode/index.js +0 -2
- package/lib/esm/context/lode/index.js.map +0 -1
- package/lib/esm/context/search/SearchContext.js +0 -8
- package/lib/esm/context/search/SearchContext.js.map +0 -1
- package/lib/esm/context/search/index.js +0 -2
- package/lib/esm/context/search/index.js.map +0 -1
- package/lib/esm/reducers/search/actions.js +0 -13
- package/lib/esm/reducers/search/actions.js.map +0 -1
- package/lib/esm/reducers/search/index.js +0 -3
- package/lib/esm/reducers/search/index.js.map +0 -1
- package/lib/esm/reducers/search/reducer.js +0 -31
- package/lib/esm/reducers/search/reducer.js.map +0 -1
- package/lib/esm/test-utils/envAdaptor.js +0 -5
- package/lib/esm/test-utils/envAdaptor.js.map +0 -1
- package/lib/esm/test-utils/render_with_lode.js +0 -19
- package/lib/esm/test-utils/render_with_lode.js.map +0 -1
- package/lib/esm/test-utils/render_with_search.js +0 -34
- package/lib/esm/test-utils/render_with_search.js.map +0 -1
- package/lib/esm/utils/envAdaptor.js +0 -84
- package/lib/esm/utils/envAdaptor.js.map +0 -1
- package/lib/reducers/search/actions.d.ts +0 -4
- package/lib/reducers/search/actions.js +0 -25
- package/lib/reducers/search/actions.js.map +0 -1
- package/lib/reducers/search/index.d.ts +0 -2
- package/lib/reducers/search/index.js.map +0 -1
- package/lib/reducers/search/reducer.d.ts +0 -11
- package/lib/reducers/search/reducer.js +0 -43
- package/lib/reducers/search/reducer.js.map +0 -1
- package/lib/test-utils/envAdaptor.d.ts +0 -2
- package/lib/test-utils/envAdaptor.js +0 -15
- package/lib/test-utils/render_with_lode.d.ts +0 -7
- package/lib/test-utils/render_with_lode.js +0 -36
- package/lib/test-utils/render_with_lode.js.map +0 -1
- package/lib/test-utils/render_with_search.d.ts +0 -4
- package/lib/test-utils/render_with_search.js +0 -52
- package/lib/test-utils/render_with_search.js.map +0 -1
- package/lib/utils/envAdaptor.d.ts +0 -31
- package/lib/utils/envAdaptor.js +0 -106
- package/lib/utils/envAdaptor.js.map +0 -1
- package/src/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/somethingWentWrong.svg +0 -45
- package/src/components/SideNav/SearchCriteriaSelector.tsx +0 -76
- package/src/context/index.ts +0 -27
- package/src/context/search/index.ts +0 -26
- package/src/reducers/search/actions.spec.ts +0 -50
- package/src/reducers/search/reducer.spec.ts +0 -69
- package/src/reducers/search/reducer.ts +0 -63
- package/src/test-utils/render_with_search.tsx +0 -71
- package/src/utils/envAdaptor.spec.ts +0 -50
- package/src/utils/envAdaptor.ts +0 -147
package/src/ApiExplorer.tsx
CHANGED
|
@@ -44,14 +44,12 @@ import { funFetch, fallbackFetch, OAuthScene } from '@looker/run-it'
|
|
|
44
44
|
import { FirstPage } from '@styled-icons/material/FirstPage'
|
|
45
45
|
import { LastPage } from '@styled-icons/material/LastPage'
|
|
46
46
|
|
|
47
|
-
import {
|
|
48
|
-
import type { IApixEnvAdaptor } from './utils'
|
|
47
|
+
import type { IEnvironmentAdaptor } from '@looker/extension-utils'
|
|
49
48
|
import {
|
|
50
|
-
getLoded,
|
|
51
|
-
oAuthPath,
|
|
52
49
|
registerEnvAdaptor,
|
|
53
50
|
unregisterEnvAdaptor,
|
|
54
|
-
} from '
|
|
51
|
+
} from '@looker/extension-utils'
|
|
52
|
+
import { oAuthPath } from './utils'
|
|
55
53
|
import {
|
|
56
54
|
Header,
|
|
57
55
|
SideNav,
|
|
@@ -60,38 +58,39 @@ import {
|
|
|
60
58
|
SelectorContainer,
|
|
61
59
|
HEADER_TOGGLE_LABEL,
|
|
62
60
|
} from './components'
|
|
63
|
-
import {
|
|
64
|
-
specReducer,
|
|
65
|
-
initDefaultSpecState,
|
|
66
|
-
searchReducer,
|
|
67
|
-
defaultSearchState,
|
|
68
|
-
updateSpecApi,
|
|
69
|
-
} from './reducers'
|
|
61
|
+
import { specReducer, initDefaultSpecState, updateSpecApi } from './reducers'
|
|
70
62
|
import { AppRouter } from './routes'
|
|
71
63
|
import { apixFilesHost } from './utils/lodeUtils'
|
|
72
|
-
import {
|
|
64
|
+
import {
|
|
65
|
+
useSettingActions,
|
|
66
|
+
useSettingStoreState,
|
|
67
|
+
useLodeActions,
|
|
68
|
+
useLodesStoreState,
|
|
69
|
+
} from './state'
|
|
73
70
|
|
|
74
71
|
export interface ApiExplorerProps {
|
|
75
72
|
specs: SpecList
|
|
76
|
-
|
|
73
|
+
adaptor: IEnvironmentAdaptor
|
|
77
74
|
setVersionsUrl: RunItSetter
|
|
78
|
-
|
|
75
|
+
examplesLodeUrl?: string
|
|
79
76
|
declarationsLodeUrl?: string
|
|
80
77
|
headless?: boolean
|
|
81
78
|
}
|
|
82
79
|
|
|
83
|
-
|
|
80
|
+
const BodyOverride = createGlobalStyle` html { height: 100%; overflow: hidden; } `
|
|
84
81
|
|
|
85
|
-
const ApiExplorer: FC<ApiExplorerProps> = ({
|
|
82
|
+
export const ApiExplorer: FC<ApiExplorerProps> = ({
|
|
86
83
|
specs,
|
|
87
|
-
|
|
84
|
+
adaptor,
|
|
88
85
|
setVersionsUrl,
|
|
89
|
-
|
|
86
|
+
examplesLodeUrl = 'https://raw.githubusercontent.com/looker-open-source/sdk-codegen/main/examplesIndex.json',
|
|
90
87
|
declarationsLodeUrl = `${apixFilesHost}/declarationsIndex.json`,
|
|
91
88
|
headless = false,
|
|
92
89
|
}) => {
|
|
93
|
-
const { initialized } =
|
|
94
|
-
|
|
90
|
+
const { initialized } = useSettingStoreState()
|
|
91
|
+
useLodesStoreState()
|
|
92
|
+
const { initLodesAction } = useLodeActions()
|
|
93
|
+
const { initSettingsAction } = useSettingActions()
|
|
95
94
|
const location = useLocation()
|
|
96
95
|
const oauthReturn = location.pathname === `/${oAuthPath}`
|
|
97
96
|
const [specState, specDispatch] = useReducer(
|
|
@@ -99,12 +98,6 @@ const ApiExplorer: FC<ApiExplorerProps> = ({
|
|
|
99
98
|
initDefaultSpecState(specs, location)
|
|
100
99
|
)
|
|
101
100
|
const { spec } = specState
|
|
102
|
-
const [searchSettings, setSearchSettings] = useReducer(
|
|
103
|
-
searchReducer,
|
|
104
|
-
defaultSearchState
|
|
105
|
-
)
|
|
106
|
-
|
|
107
|
-
const [lode, setLode] = useState(defaultLodeContextValue)
|
|
108
101
|
|
|
109
102
|
const [hasNavigation, setHasNavigation] = useState(true)
|
|
110
103
|
const toggleNavigation = (target?: boolean) =>
|
|
@@ -117,8 +110,9 @@ const ApiExplorer: FC<ApiExplorerProps> = ({
|
|
|
117
110
|
}, [])
|
|
118
111
|
|
|
119
112
|
useEffect(() => {
|
|
120
|
-
registerEnvAdaptor(
|
|
121
|
-
|
|
113
|
+
registerEnvAdaptor(adaptor)
|
|
114
|
+
initSettingsAction()
|
|
115
|
+
initLodesAction({ examplesLodeUrl, declarationsLodeUrl })
|
|
122
116
|
|
|
123
117
|
return () => unregisterEnvAdaptor()
|
|
124
118
|
}, [])
|
|
@@ -154,11 +148,7 @@ const ApiExplorer: FC<ApiExplorerProps> = ({
|
|
|
154
148
|
}
|
|
155
149
|
}, [spec, location])
|
|
156
150
|
|
|
157
|
-
|
|
158
|
-
getLoded(exampleLodeUrl, declarationsLodeUrl).then((resp) => setLode(resp))
|
|
159
|
-
}, [exampleLodeUrl, declarationsLodeUrl])
|
|
160
|
-
|
|
161
|
-
const themeOverrides = envAdaptor.themeOverrides()
|
|
151
|
+
const themeOverrides = adaptor.themeOverrides()
|
|
162
152
|
|
|
163
153
|
return (
|
|
164
154
|
<>
|
|
@@ -169,94 +159,86 @@ const ApiExplorer: FC<ApiExplorerProps> = ({
|
|
|
169
159
|
{!initialized ? (
|
|
170
160
|
<Loader message="Initializing" themeOverrides={themeOverrides} />
|
|
171
161
|
) : (
|
|
172
|
-
<ErrorBoundary logError={
|
|
173
|
-
<
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
{
|
|
179
|
-
|
|
162
|
+
<ErrorBoundary logError={adaptor.logError.bind(adaptor)}>
|
|
163
|
+
<Page style={{ overflow: 'hidden' }}>
|
|
164
|
+
{!headless && (
|
|
165
|
+
<Header
|
|
166
|
+
specs={specs}
|
|
167
|
+
spec={spec}
|
|
168
|
+
specDispatch={specDispatch}
|
|
169
|
+
toggleNavigation={toggleNavigation}
|
|
170
|
+
/>
|
|
171
|
+
)}
|
|
172
|
+
<Layout hasAside height="100%">
|
|
173
|
+
<AsideBorder
|
|
174
|
+
borderRight
|
|
175
|
+
isOpen={hasNavigation}
|
|
176
|
+
headless={headless}
|
|
177
|
+
>
|
|
178
|
+
{headless && (
|
|
179
|
+
<>
|
|
180
|
+
<Space
|
|
181
|
+
alignItems="center"
|
|
182
|
+
py="u3"
|
|
183
|
+
px={hasNavigation ? 'u5' : '0'}
|
|
184
|
+
justifyContent={
|
|
185
|
+
hasNavigation ? 'space-between' : 'center'
|
|
186
|
+
}
|
|
187
|
+
>
|
|
188
|
+
{hasNavigation && (
|
|
189
|
+
<Heading
|
|
190
|
+
as="h2"
|
|
191
|
+
fontSize="xsmall"
|
|
192
|
+
fontWeight="bold"
|
|
193
|
+
color="text2"
|
|
194
|
+
>
|
|
195
|
+
API DOCUMENTATION
|
|
196
|
+
</Heading>
|
|
197
|
+
)}
|
|
198
|
+
<IconButton
|
|
199
|
+
size="xsmall"
|
|
200
|
+
shape="round"
|
|
201
|
+
icon={hasNavigation ? <FirstPage /> : <LastPage />}
|
|
202
|
+
label={HEADER_TOGGLE_LABEL}
|
|
203
|
+
onClick={() => toggleNavigation()}
|
|
204
|
+
/>
|
|
205
|
+
</Space>
|
|
206
|
+
{hasNavigation && (
|
|
207
|
+
<>
|
|
208
|
+
<Divider mb="u3" appearance="light" />
|
|
209
|
+
<SelectorContainer
|
|
210
|
+
ml="large"
|
|
211
|
+
mr="large"
|
|
212
|
+
specs={specs}
|
|
213
|
+
spec={spec}
|
|
214
|
+
specDispatch={specDispatch}
|
|
215
|
+
/>
|
|
216
|
+
</>
|
|
217
|
+
)}
|
|
218
|
+
</>
|
|
219
|
+
)}
|
|
220
|
+
{hasNavigation && (
|
|
221
|
+
<SideNav
|
|
222
|
+
headless={headless}
|
|
180
223
|
specs={specs}
|
|
181
224
|
spec={spec}
|
|
182
225
|
specDispatch={specDispatch}
|
|
183
|
-
toggleNavigation={toggleNavigation}
|
|
184
226
|
/>
|
|
185
227
|
)}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
>
|
|
202
|
-
{hasNavigation && (
|
|
203
|
-
<Heading
|
|
204
|
-
as="h2"
|
|
205
|
-
fontSize="xsmall"
|
|
206
|
-
fontWeight="bold"
|
|
207
|
-
color="text2"
|
|
208
|
-
>
|
|
209
|
-
API DOCUMENTATION
|
|
210
|
-
</Heading>
|
|
211
|
-
)}
|
|
212
|
-
<IconButton
|
|
213
|
-
size="xsmall"
|
|
214
|
-
shape="round"
|
|
215
|
-
icon={
|
|
216
|
-
hasNavigation ? <FirstPage /> : <LastPage />
|
|
217
|
-
}
|
|
218
|
-
label={HEADER_TOGGLE_LABEL}
|
|
219
|
-
onClick={() => toggleNavigation()}
|
|
220
|
-
/>
|
|
221
|
-
</Space>
|
|
222
|
-
{hasNavigation && (
|
|
223
|
-
<>
|
|
224
|
-
<Divider mb="u3" appearance="light" />
|
|
225
|
-
<SelectorContainer
|
|
226
|
-
ml="large"
|
|
227
|
-
mr="large"
|
|
228
|
-
specs={specs}
|
|
229
|
-
spec={spec}
|
|
230
|
-
specDispatch={specDispatch}
|
|
231
|
-
/>
|
|
232
|
-
</>
|
|
233
|
-
)}
|
|
234
|
-
</>
|
|
235
|
-
)}
|
|
236
|
-
{hasNavigation && (
|
|
237
|
-
<SideNav
|
|
238
|
-
headless={headless}
|
|
239
|
-
specs={specs}
|
|
240
|
-
spec={spec}
|
|
241
|
-
specDispatch={specDispatch}
|
|
242
|
-
/>
|
|
243
|
-
)}
|
|
244
|
-
</AsideBorder>
|
|
245
|
-
{oauthReturn && <OAuthScene />}
|
|
246
|
-
{!oauthReturn && spec.api && (
|
|
247
|
-
<AppRouter
|
|
248
|
-
api={spec.api}
|
|
249
|
-
specKey={spec.key}
|
|
250
|
-
specs={specs}
|
|
251
|
-
toggleNavigation={toggleNavigation}
|
|
252
|
-
envAdaptor={envAdaptor}
|
|
253
|
-
setVersionsUrl={setVersionsUrl}
|
|
254
|
-
/>
|
|
255
|
-
)}
|
|
256
|
-
</Layout>
|
|
257
|
-
</Page>
|
|
258
|
-
</SearchContext.Provider>
|
|
259
|
-
</LodeContext.Provider>
|
|
228
|
+
</AsideBorder>
|
|
229
|
+
{oauthReturn && <OAuthScene />}
|
|
230
|
+
{!oauthReturn && spec.api && (
|
|
231
|
+
<AppRouter
|
|
232
|
+
api={spec.api}
|
|
233
|
+
specKey={spec.key}
|
|
234
|
+
specs={specs}
|
|
235
|
+
toggleNavigation={toggleNavigation}
|
|
236
|
+
adaptor={adaptor}
|
|
237
|
+
setVersionsUrl={setVersionsUrl}
|
|
238
|
+
/>
|
|
239
|
+
)}
|
|
240
|
+
</Layout>
|
|
241
|
+
</Page>
|
|
260
242
|
</ErrorBoundary>
|
|
261
243
|
)}
|
|
262
244
|
</ComponentsProvider>
|
|
@@ -265,11 +247,10 @@ const ApiExplorer: FC<ApiExplorerProps> = ({
|
|
|
265
247
|
)
|
|
266
248
|
}
|
|
267
249
|
|
|
268
|
-
|
|
250
|
+
const AsideBorder = styled(Aside)<{
|
|
269
251
|
isOpen: boolean
|
|
270
252
|
headless: boolean
|
|
271
253
|
}>`
|
|
272
254
|
width: ${({ isOpen, headless }) =>
|
|
273
255
|
isOpen ? '20rem' : headless ? '2.75rem' : '0rem'};
|
|
274
256
|
`
|
|
275
|
-
export default ApiExplorer
|
|
File without changes
|
|
@@ -28,19 +28,17 @@ import type { FC } from 'react'
|
|
|
28
28
|
import React, { useEffect, useState } from 'react'
|
|
29
29
|
import {
|
|
30
30
|
RunItProvider,
|
|
31
|
-
defaultConfigurator,
|
|
32
|
-
initRunItSdk,
|
|
33
31
|
loadSpecsFromVersions,
|
|
34
32
|
RunItConfigKey,
|
|
35
33
|
RunItNoConfig,
|
|
34
|
+
initRunItSdk,
|
|
36
35
|
} from '@looker/run-it'
|
|
37
|
-
import type { IAPIMethods } from '@looker/sdk-rtl'
|
|
38
36
|
import type { SpecList } from '@looker/sdk-codegen'
|
|
39
37
|
import { Provider } from 'react-redux'
|
|
38
|
+
import { BrowserAdaptor } from '@looker/extension-utils'
|
|
40
39
|
|
|
41
|
-
import ApiExplorer from './ApiExplorer'
|
|
40
|
+
import { ApiExplorer } from './ApiExplorer'
|
|
42
41
|
import { store } from './state'
|
|
43
|
-
import { StandaloneEnvAdaptor } from './utils'
|
|
44
42
|
import { Loader } from './components'
|
|
45
43
|
|
|
46
44
|
export interface StandaloneApiExplorerProps {
|
|
@@ -48,10 +46,10 @@ export interface StandaloneApiExplorerProps {
|
|
|
48
46
|
versionsUrl: string
|
|
49
47
|
}
|
|
50
48
|
|
|
51
|
-
const
|
|
49
|
+
const browserAdaptor = new BrowserAdaptor(initRunItSdk())
|
|
52
50
|
|
|
53
51
|
const loadVersions = async (current: string) => {
|
|
54
|
-
const data = await
|
|
52
|
+
const data = await browserAdaptor.localStorageGetItem(RunItConfigKey)
|
|
55
53
|
const config = data ? JSON.parse(data) : RunItNoConfig
|
|
56
54
|
let url = config.base_url ? `${config.base_url}/versions` : current
|
|
57
55
|
let response = await loadSpecsFromVersions(url)
|
|
@@ -86,25 +84,19 @@ export const StandaloneApiExplorer: FC<StandaloneApiExplorerProps> = ({
|
|
|
86
84
|
}
|
|
87
85
|
}, [versionsUrl, currentVersionsUrl])
|
|
88
86
|
|
|
89
|
-
const chosenSdk: IAPIMethods = initRunItSdk(defaultConfigurator)
|
|
90
|
-
|
|
91
87
|
return (
|
|
92
88
|
<Provider store={store}>
|
|
93
|
-
<RunItProvider
|
|
94
|
-
sdk={chosenSdk}
|
|
95
|
-
configurator={defaultConfigurator}
|
|
96
|
-
basePath="/api/4.0"
|
|
97
|
-
>
|
|
89
|
+
<RunItProvider basePath="/api/4.0">
|
|
98
90
|
<>
|
|
99
91
|
{specs ? (
|
|
100
92
|
<ApiExplorer
|
|
101
93
|
specs={specs}
|
|
102
|
-
|
|
94
|
+
adaptor={browserAdaptor}
|
|
103
95
|
headless={headless}
|
|
104
96
|
setVersionsUrl={setCurrentVersionsUrl}
|
|
105
97
|
/>
|
|
106
98
|
) : (
|
|
107
|
-
<Loader themeOverrides={
|
|
99
|
+
<Loader themeOverrides={browserAdaptor.themeOverrides()} />
|
|
108
100
|
)}
|
|
109
101
|
</>
|
|
110
102
|
</RunItProvider>
|
|
@@ -25,10 +25,12 @@
|
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
27
|
import type { FC } from 'react'
|
|
28
|
-
import React
|
|
28
|
+
import React from 'react'
|
|
29
29
|
import { findGenerator } from '@looker/sdk-codegen'
|
|
30
30
|
import { CodeDisplay } from '@looker/code-editor'
|
|
31
|
-
import {
|
|
31
|
+
import { useSelector } from 'react-redux'
|
|
32
|
+
|
|
33
|
+
import { selectSearchPattern } from '../../state'
|
|
32
34
|
|
|
33
35
|
interface DocCodeProps {
|
|
34
36
|
code: string
|
|
@@ -36,11 +38,9 @@ interface DocCodeProps {
|
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
export const DocCode: FC<DocCodeProps> = ({ code, language = 'json' }) => {
|
|
41
|
+
const searchPattern = useSelector(selectSearchPattern)
|
|
39
42
|
const gen = findGenerator(language)
|
|
40
43
|
if (gen) language = gen.language.toLocaleLowerCase()
|
|
41
|
-
const {
|
|
42
|
-
searchSettings: { pattern },
|
|
43
|
-
} = useContext(SearchContext)
|
|
44
44
|
|
|
45
|
-
return <CodeDisplay language={language} code={code} pattern={
|
|
45
|
+
return <CodeDisplay language={language} code={code} pattern={searchPattern} />
|
|
46
46
|
}
|
|
@@ -26,14 +26,13 @@
|
|
|
26
26
|
|
|
27
27
|
import React from 'react'
|
|
28
28
|
import { screen } from '@testing-library/react'
|
|
29
|
-
import {
|
|
29
|
+
import { createTestStore, renderWithReduxProvider } from '../../test-utils'
|
|
30
30
|
|
|
31
|
-
import { renderWithSearch } from '../../test-utils'
|
|
32
31
|
import { DocMarkdown } from './DocMarkdown'
|
|
33
32
|
|
|
34
33
|
describe('DocMarkdown', () => {
|
|
35
34
|
test('it renders markdown', () => {
|
|
36
|
-
|
|
35
|
+
renderWithReduxProvider(
|
|
37
36
|
<DocMarkdown
|
|
38
37
|
source={
|
|
39
38
|
'# Markdown Component \n Renders markdown using [ReactMarkdown](https://github.com/rexxars/react-markdown)'
|
|
@@ -54,7 +53,7 @@ describe('DocMarkdown', () => {
|
|
|
54
53
|
test('it remaps hashbang urls found in markdown input', () => {
|
|
55
54
|
const input =
|
|
56
55
|
'A link to the [create_dashboard](#!/Dashboard/create_dashboard) endpoint'
|
|
57
|
-
|
|
56
|
+
renderWithReduxProvider(<DocMarkdown source={input} specKey={'3.1'} />)
|
|
58
57
|
expect(screen.getByText(/A link to the/)).toBeInTheDocument()
|
|
59
58
|
expect(screen.getByText('create_dashboard')).toHaveAttribute(
|
|
60
59
|
'href',
|
|
@@ -63,7 +62,7 @@ describe('DocMarkdown', () => {
|
|
|
63
62
|
})
|
|
64
63
|
|
|
65
64
|
test('it leaves external urls untouched', () => {
|
|
66
|
-
|
|
65
|
+
renderWithReduxProvider(
|
|
67
66
|
<DocMarkdown
|
|
68
67
|
source={'[external_link](https://www.foo.com)'}
|
|
69
68
|
specKey={'3.1'}
|
|
@@ -77,12 +76,15 @@ describe('DocMarkdown', () => {
|
|
|
77
76
|
|
|
78
77
|
test('it highlights text matching search pattern', () => {
|
|
79
78
|
const highlightPattern = 'spec'
|
|
80
|
-
|
|
79
|
+
const store = createTestStore({
|
|
80
|
+
settings: { searchPattern: highlightPattern },
|
|
81
|
+
})
|
|
82
|
+
renderWithReduxProvider(
|
|
81
83
|
<DocMarkdown
|
|
82
84
|
source={'An API Explorer to explore your OpenAPI spec'}
|
|
83
85
|
specKey={'3.1'}
|
|
84
86
|
/>,
|
|
85
|
-
|
|
87
|
+
store
|
|
86
88
|
)
|
|
87
89
|
const mark = screen.getByText(highlightPattern)
|
|
88
90
|
expect(mark.tagName).toEqual('MARK')
|
|
@@ -90,14 +92,17 @@ describe('DocMarkdown', () => {
|
|
|
90
92
|
|
|
91
93
|
test('it only highlights search matches in the display text of link', () => {
|
|
92
94
|
const highlightPattern = 'dashboard'
|
|
93
|
-
|
|
95
|
+
const store = createTestStore({
|
|
96
|
+
settings: { searchPattern: highlightPattern },
|
|
97
|
+
})
|
|
98
|
+
renderWithReduxProvider(
|
|
94
99
|
<DocMarkdown
|
|
95
100
|
source={
|
|
96
101
|
'An inline styled link with matching text in both the link text and the href: [create_dashboard](/3.1/methods/Dashboard/create_dashboard)'
|
|
97
102
|
}
|
|
98
103
|
specKey={'3.1'}
|
|
99
104
|
/>,
|
|
100
|
-
|
|
105
|
+
store
|
|
101
106
|
)
|
|
102
107
|
const link = screen.getByRole('link')
|
|
103
108
|
expect(link).toHaveAttribute(
|
|
@@ -110,7 +115,7 @@ describe('DocMarkdown', () => {
|
|
|
110
115
|
test('it renders code blocks', () => {
|
|
111
116
|
const code =
|
|
112
117
|
'```\nAuthorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4\n```'
|
|
113
|
-
|
|
118
|
+
renderWithReduxProvider(<DocMarkdown source={code} specKey={'3.1'} />)
|
|
114
119
|
expect(
|
|
115
120
|
screen.getByText(
|
|
116
121
|
'Authorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4'
|
|
@@ -120,7 +125,7 @@ describe('DocMarkdown', () => {
|
|
|
120
125
|
|
|
121
126
|
test('it renders inline code', () => {
|
|
122
127
|
const markdown = 'Some text with code: `const noop = () => null`'
|
|
123
|
-
|
|
128
|
+
renderWithReduxProvider(<DocMarkdown source={markdown} specKey={'3.1'} />)
|
|
124
129
|
expect(screen.getByText('const noop = () => null')).toBeInTheDocument()
|
|
125
130
|
})
|
|
126
131
|
})
|
|
@@ -25,11 +25,12 @@
|
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
27
|
import type { FC } from 'react'
|
|
28
|
-
import React
|
|
28
|
+
import React from 'react'
|
|
29
29
|
import { useHistory } from 'react-router-dom'
|
|
30
30
|
import { Markdown } from '@looker/code-editor'
|
|
31
|
-
import {
|
|
32
|
-
import { getEnvAdaptor } from '
|
|
31
|
+
import { useSelector } from 'react-redux'
|
|
32
|
+
import { getEnvAdaptor } from '@looker/extension-utils'
|
|
33
|
+
import { selectSearchPattern } from '../../state'
|
|
33
34
|
import { transformURL } from './utils'
|
|
34
35
|
|
|
35
36
|
interface DocMarkdownProps {
|
|
@@ -38,10 +39,7 @@ interface DocMarkdownProps {
|
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
export const DocMarkdown: FC<DocMarkdownProps> = ({ source, specKey }) => {
|
|
41
|
-
const
|
|
42
|
-
searchSettings: { pattern },
|
|
43
|
-
} = useContext(SearchContext)
|
|
44
|
-
|
|
42
|
+
const searchPattern = useSelector(selectSearchPattern)
|
|
45
43
|
const history = useHistory()
|
|
46
44
|
|
|
47
45
|
const linkClickHandler = (pathname: string, url: string) => {
|
|
@@ -50,14 +48,14 @@ export const DocMarkdown: FC<DocMarkdownProps> = ({ source, specKey }) => {
|
|
|
50
48
|
} else if (url.startsWith(`/${specKey}`)) {
|
|
51
49
|
history.push(url)
|
|
52
50
|
} else if (url.startsWith('https://')) {
|
|
53
|
-
const
|
|
54
|
-
|
|
51
|
+
const adaptor = getEnvAdaptor()
|
|
52
|
+
adaptor.openBrowserWindow(url)
|
|
55
53
|
}
|
|
56
54
|
}
|
|
57
55
|
return (
|
|
58
56
|
<Markdown
|
|
59
57
|
source={source}
|
|
60
|
-
pattern={
|
|
58
|
+
pattern={searchPattern}
|
|
61
59
|
linkClickHandler={linkClickHandler}
|
|
62
60
|
transformLinkUri={transformURL.bind(null, specKey)}
|
|
63
61
|
/>
|
|
@@ -27,7 +27,10 @@ import React from 'react'
|
|
|
27
27
|
import { methodRefs, typeRefs } from '@looker/sdk-codegen'
|
|
28
28
|
import { screen } from '@testing-library/react'
|
|
29
29
|
|
|
30
|
-
import {
|
|
30
|
+
import {
|
|
31
|
+
createTestStore,
|
|
32
|
+
renderWithRouterAndReduxProvider,
|
|
33
|
+
} from '../../test-utils'
|
|
31
34
|
import { api } from '../../test-data'
|
|
32
35
|
import { buildPath } from '../../utils'
|
|
33
36
|
import { DocReferences } from './DocReferences'
|
|
@@ -37,7 +40,7 @@ describe('DocReferences', () => {
|
|
|
37
40
|
const typesUsed = typeRefs(api, api.types.DashboardElement.customTypes)
|
|
38
41
|
const typesUsedBy = typeRefs(api, api.types.DashboardElement.parentTypes)
|
|
39
42
|
const methodsUsedBy = methodRefs(api, api.types.DashboardElement.methodRefs)
|
|
40
|
-
|
|
43
|
+
renderWithRouterAndReduxProvider(
|
|
41
44
|
<DocReferences
|
|
42
45
|
typesUsed={typesUsed}
|
|
43
46
|
typesUsedBy={typesUsedBy}
|
|
@@ -67,13 +70,17 @@ describe('DocReferences', () => {
|
|
|
67
70
|
|
|
68
71
|
test('it highlights text matching search pattern', () => {
|
|
69
72
|
const highlightPattern = 'dash'
|
|
70
|
-
|
|
73
|
+
const store = createTestStore({
|
|
74
|
+
settings: { searchPattern: highlightPattern },
|
|
75
|
+
})
|
|
76
|
+
renderWithRouterAndReduxProvider(
|
|
71
77
|
<DocReferences
|
|
72
78
|
typesUsed={[api.types.Dashboard]}
|
|
73
79
|
specKey={'3.1'}
|
|
74
80
|
api={api}
|
|
75
81
|
/>,
|
|
76
|
-
|
|
82
|
+
undefined,
|
|
83
|
+
store
|
|
77
84
|
)
|
|
78
85
|
const foundRef = screen.getByRole('link')
|
|
79
86
|
expect(foundRef).toContainHTML('<span class="hi">Dash</span>board')
|
|
@@ -25,11 +25,12 @@
|
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
27
|
import type { FC } from 'react'
|
|
28
|
-
import React
|
|
28
|
+
import React from 'react'
|
|
29
29
|
import type { ApiModel, IMethod, IType } from '@looker/sdk-codegen'
|
|
30
|
-
|
|
31
30
|
import { CollapserCard } from '@looker/run-it'
|
|
32
|
-
|
|
31
|
+
|
|
32
|
+
import { useSelector } from 'react-redux'
|
|
33
|
+
import { selectSearchPattern } from '../../state'
|
|
33
34
|
import { DocReferenceItems } from './utils'
|
|
34
35
|
|
|
35
36
|
interface DocReferencesProps {
|
|
@@ -50,9 +51,7 @@ export const DocReferences: FC<DocReferencesProps> = ({
|
|
|
50
51
|
methodsUsedBy = [],
|
|
51
52
|
typesUsedBy = [],
|
|
52
53
|
}) => {
|
|
53
|
-
const
|
|
54
|
-
searchSettings: { pattern },
|
|
55
|
-
} = useContext(SearchContext)
|
|
54
|
+
const searchPattern = useSelector(selectSearchPattern)
|
|
56
55
|
|
|
57
56
|
if (
|
|
58
57
|
typesUsed.length === 0 &&
|
|
@@ -69,21 +68,21 @@ export const DocReferences: FC<DocReferencesProps> = ({
|
|
|
69
68
|
typesUsed,
|
|
70
69
|
api,
|
|
71
70
|
specKey,
|
|
72
|
-
|
|
71
|
+
searchPattern
|
|
73
72
|
)}
|
|
74
73
|
{DocReferenceItems(
|
|
75
74
|
'Used by types:',
|
|
76
75
|
typesUsedBy,
|
|
77
76
|
api,
|
|
78
77
|
specKey,
|
|
79
|
-
|
|
78
|
+
searchPattern
|
|
80
79
|
)}
|
|
81
80
|
{DocReferenceItems(
|
|
82
81
|
'Used by methods:',
|
|
83
82
|
methodsUsedBy,
|
|
84
83
|
api,
|
|
85
84
|
specKey,
|
|
86
|
-
|
|
85
|
+
searchPattern
|
|
87
86
|
)}
|
|
88
87
|
</>
|
|
89
88
|
</CollapserCard>
|
|
@@ -27,7 +27,7 @@ import React from 'react'
|
|
|
27
27
|
import { screen } from '@testing-library/react'
|
|
28
28
|
import { findExampleLanguages } from '@looker/sdk-codegen'
|
|
29
29
|
|
|
30
|
-
import {
|
|
30
|
+
import { renderWithLode } from '../../test-utils'
|
|
31
31
|
import { api, examples } from '../../test-data'
|
|
32
32
|
import { DocSdkUsage } from './DocSdkUsage'
|
|
33
33
|
import {
|
|
@@ -47,7 +47,7 @@ describe('DocSdkUsage', () => {
|
|
|
47
47
|
method.operationId,
|
|
48
48
|
1
|
|
49
49
|
)
|
|
50
|
-
|
|
50
|
+
renderWithLode(<DocSdkUsage method={method} />, examples)
|
|
51
51
|
expect(screen.getAllByRole('link')).toHaveLength(PER_PAGE_COUNT)
|
|
52
52
|
|
|
53
53
|
expect(
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
*/
|
|
26
26
|
import type { FC } from 'react'
|
|
27
|
-
import React, {
|
|
27
|
+
import React, { useState, useEffect } from 'react'
|
|
28
28
|
import {
|
|
29
29
|
Box,
|
|
30
30
|
Card,
|
|
@@ -41,8 +41,7 @@ import { CollapserCard } from '@looker/run-it'
|
|
|
41
41
|
import { InsertDriveFile } from '@styled-icons/material-outlined/InsertDriveFile'
|
|
42
42
|
import { useSelector } from 'react-redux'
|
|
43
43
|
|
|
44
|
-
import { selectSdkLanguage } from '../../state'
|
|
45
|
-
import { LodeContext } from '../../context'
|
|
44
|
+
import { selectSdkLanguage, selectExamplesLode } from '../../state'
|
|
46
45
|
import {
|
|
47
46
|
exampleColumns,
|
|
48
47
|
EMPTY_STRING,
|
|
@@ -61,15 +60,16 @@ interface DocSdkUsageProps {
|
|
|
61
60
|
* links to the source files
|
|
62
61
|
*/
|
|
63
62
|
export const DocSdkUsage: FC<DocSdkUsageProps> = ({ method }) => {
|
|
64
|
-
const
|
|
63
|
+
const examples = useSelector(selectExamplesLode)
|
|
65
64
|
const sdkLanguage = useSelector(selectSdkLanguage)
|
|
66
|
-
let languages = findExampleLanguages(examples, method.name)
|
|
67
65
|
const [page, setPage] = useState(1)
|
|
68
66
|
|
|
69
67
|
useEffect(() => {
|
|
70
68
|
setPage(1)
|
|
71
69
|
}, [method])
|
|
72
70
|
|
|
71
|
+
if (!examples) return <></>
|
|
72
|
+
let languages = findExampleLanguages(examples, method.name)
|
|
73
73
|
if (languages.length === 0) return <></>
|
|
74
74
|
|
|
75
75
|
languages = sortLanguagesByPreference(languages, sdkLanguage)
|