@looker/api-explorer 0.9.35 → 0.9.37
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 +56 -1
- package/dist/bundle.js +1 -1
- package/dist/bundle.js.map +1 -1
- package/e2e/MethodScene.spec.ts +80 -0
- package/e2e/diffScene.spec.ts +28 -20
- package/e2e/e2e.spec.ts +45 -7
- package/lib/ApiExplorer.js +24 -5
- package/lib/ApiExplorer.js.map +1 -1
- package/lib/components/DocMarkdown/DocMarkdown.js +9 -7
- package/lib/components/DocMarkdown/DocMarkdown.js.map +1 -1
- package/lib/components/DocSDKs/DocDeclarations.js +10 -15
- package/lib/components/DocSDKs/DocDeclarations.js.map +1 -1
- package/lib/components/SelectorContainer/ApiSpecSelector.js +6 -2
- package/lib/components/SelectorContainer/ApiSpecSelector.js.map +1 -1
- package/lib/components/SelectorContainer/SdkLanguageSelector.js +20 -21
- package/lib/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
- package/lib/components/SelectorContainer/SelectorContainer.js +4 -1
- package/lib/components/SelectorContainer/SelectorContainer.js.map +1 -1
- package/lib/components/SelectorContainer/utils.d.ts +2 -0
- package/lib/components/SelectorContainer/utils.js +32 -0
- package/lib/components/SelectorContainer/utils.js.map +1 -0
- package/lib/components/SideNav/SideNav.js +37 -16
- package/lib/components/SideNav/SideNav.js.map +1 -1
- package/lib/components/SideNav/SideNavMethods.js +9 -6
- package/lib/components/SideNav/SideNavMethods.js.map +1 -1
- package/lib/components/SideNav/SideNavTypes.js +7 -4
- package/lib/components/SideNav/SideNavTypes.js.map +1 -1
- package/lib/components/index.d.ts +0 -1
- package/lib/components/index.js +0 -8
- package/lib/components/index.js.map +1 -1
- package/lib/esm/ApiExplorer.js +26 -7
- package/lib/esm/ApiExplorer.js.map +1 -1
- package/lib/esm/components/DocMarkdown/DocMarkdown.js +6 -4
- package/lib/esm/components/DocMarkdown/DocMarkdown.js.map +1 -1
- package/lib/esm/components/DocSDKs/DocDeclarations.js +9 -14
- package/lib/esm/components/DocSDKs/DocDeclarations.js.map +1 -1
- package/lib/esm/components/SelectorContainer/ApiSpecSelector.js +6 -3
- package/lib/esm/components/SelectorContainer/ApiSpecSelector.js.map +1 -1
- package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js +16 -18
- package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
- package/lib/esm/components/SelectorContainer/SelectorContainer.js +5 -2
- package/lib/esm/components/SelectorContainer/SelectorContainer.js.map +1 -1
- package/lib/esm/components/SelectorContainer/utils.js +22 -0
- package/lib/esm/components/SelectorContainer/utils.js.map +1 -0
- package/lib/esm/components/SideNav/SideNav.js +40 -20
- package/lib/esm/components/SideNav/SideNav.js.map +1 -1
- package/lib/esm/components/SideNav/SideNavMethods.js +9 -6
- package/lib/esm/components/SideNav/SideNavMethods.js.map +1 -1
- package/lib/esm/components/SideNav/SideNavTypes.js +9 -6
- package/lib/esm/components/SideNav/SideNavTypes.js.map +1 -1
- package/lib/esm/components/index.js +0 -1
- package/lib/esm/components/index.js.map +1 -1
- package/lib/esm/routes/AppRouter.js +6 -4
- package/lib/esm/routes/AppRouter.js.map +1 -1
- package/lib/esm/scenes/DiffScene/DiffScene.js +11 -9
- package/lib/esm/scenes/DiffScene/DiffScene.js.map +1 -1
- package/lib/esm/scenes/DiffScene/DocDiff/DiffItem.js +5 -4
- package/lib/esm/scenes/DiffScene/DocDiff/DiffItem.js.map +1 -1
- package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js +4 -4
- package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
- package/lib/esm/scenes/ErrorDetailScene/ErrorDetailScene.js +31 -0
- package/lib/esm/scenes/ErrorDetailScene/ErrorDetailScene.js.map +1 -0
- package/lib/esm/scenes/ErrorDetailScene/index.js +2 -0
- package/lib/esm/scenes/ErrorDetailScene/index.js.map +1 -0
- package/lib/esm/scenes/MethodScene/MethodScene.js +30 -10
- package/lib/esm/scenes/MethodScene/MethodScene.js.map +1 -1
- package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.js +1 -1
- package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponseTypes.js.map +1 -0
- package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponses.js +73 -0
- package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponses.js.map +1 -0
- package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/index.js +0 -0
- package/lib/esm/scenes/MethodScene/components/DocResponses/index.js.map +1 -0
- package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/utils.js +0 -0
- package/lib/esm/scenes/MethodScene/components/DocResponses/utils.js.map +1 -0
- package/lib/esm/scenes/MethodScene/components/index.js +1 -0
- package/lib/esm/scenes/MethodScene/components/index.js.map +1 -1
- package/lib/esm/scenes/MethodTagScene/MethodTagScene.js +38 -10
- package/lib/esm/scenes/MethodTagScene/MethodTagScene.js.map +1 -1
- package/lib/esm/scenes/TypeScene/TypeScene.js +7 -1
- package/lib/esm/scenes/TypeScene/TypeScene.js.map +1 -1
- package/lib/esm/scenes/TypeTagScene/TypeTagScene.js +39 -12
- package/lib/esm/scenes/TypeTagScene/TypeTagScene.js.map +1 -1
- package/lib/esm/scenes/index.js +1 -0
- package/lib/esm/scenes/index.js.map +1 -1
- package/lib/esm/scenes/utils/hooks/index.js +2 -0
- package/lib/esm/scenes/utils/hooks/index.js.map +1 -0
- package/lib/esm/scenes/utils/hooks/tagStoreSync.js +37 -0
- package/lib/esm/scenes/utils/hooks/tagStoreSync.js.map +1 -0
- package/lib/esm/scenes/utils/index.js +2 -0
- package/lib/esm/scenes/utils/index.js.map +1 -0
- package/lib/esm/state/settings/selectors.js +1 -0
- package/lib/esm/state/settings/selectors.js.map +1 -1
- package/lib/esm/state/settings/slice.js +6 -1
- package/lib/esm/state/settings/slice.js.map +1 -1
- package/lib/esm/utils/hooks/globalStoreSync.js +53 -0
- package/lib/esm/utils/hooks/globalStoreSync.js.map +1 -0
- package/lib/esm/utils/hooks/index.js +4 -0
- package/lib/esm/utils/hooks/index.js.map +1 -0
- package/lib/esm/utils/hooks/navigation.js +72 -0
- package/lib/esm/utils/hooks/navigation.js.map +1 -0
- package/lib/esm/utils/hooks/useQuery.js +9 -0
- package/lib/esm/utils/hooks/useQuery.js.map +1 -0
- package/lib/esm/utils/index.js +2 -0
- package/lib/esm/utils/index.js.map +1 -1
- package/lib/esm/utils/path.js +23 -2
- package/lib/esm/utils/path.js.map +1 -1
- package/lib/esm/utils/sdkLanguage.js +42 -0
- package/lib/esm/utils/sdkLanguage.js.map +1 -0
- package/lib/routes/AppRouter.d.ts +1 -2
- package/lib/routes/AppRouter.js +5 -3
- package/lib/routes/AppRouter.js.map +1 -1
- package/lib/scenes/DiffScene/DiffScene.d.ts +0 -2
- package/lib/scenes/DiffScene/DiffScene.js +8 -6
- package/lib/scenes/DiffScene/DiffScene.js.map +1 -1
- package/lib/scenes/DiffScene/DocDiff/DiffItem.js +4 -4
- package/lib/scenes/DiffScene/DocDiff/DiffItem.js.map +1 -1
- package/lib/scenes/DiffScene/DocDiff/DocDiff.js +4 -4
- package/lib/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
- package/lib/scenes/ErrorDetailScene/ErrorDetailScene.d.ts +7 -0
- package/lib/scenes/ErrorDetailScene/ErrorDetailScene.js +47 -0
- package/lib/scenes/ErrorDetailScene/ErrorDetailScene.js.map +1 -0
- package/lib/scenes/ErrorDetailScene/index.d.ts +1 -0
- package/lib/scenes/ErrorDetailScene/index.js +14 -0
- package/lib/{components/DocResponses → scenes/ErrorDetailScene}/index.js.map +1 -1
- package/lib/scenes/MethodScene/MethodScene.js +25 -5
- package/lib/scenes/MethodScene/MethodScene.js.map +1 -1
- package/lib/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.d.ts +2 -2
- package/lib/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.js +2 -2
- package/lib/scenes/MethodScene/components/DocResponses/DocResponseTypes.js.map +1 -0
- package/lib/scenes/MethodScene/components/DocResponses/DocResponses.d.ts +9 -0
- package/lib/scenes/MethodScene/components/DocResponses/DocResponses.js +93 -0
- package/lib/scenes/MethodScene/components/DocResponses/DocResponses.js.map +1 -0
- package/lib/{components → scenes/MethodScene/components}/DocResponses/index.d.ts +0 -0
- package/lib/{components → scenes/MethodScene/components}/DocResponses/index.js +0 -0
- package/lib/scenes/MethodScene/components/DocResponses/index.js.map +1 -0
- package/lib/{components → scenes/MethodScene/components}/DocResponses/utils.d.ts +0 -0
- package/lib/{components → scenes/MethodScene/components}/DocResponses/utils.js +0 -0
- package/lib/scenes/MethodScene/components/DocResponses/utils.js.map +1 -0
- package/lib/scenes/MethodScene/components/index.d.ts +1 -0
- package/lib/scenes/MethodScene/components/index.js +8 -0
- package/lib/scenes/MethodScene/components/index.js.map +1 -1
- package/lib/scenes/MethodTagScene/MethodTagScene.js +42 -11
- package/lib/scenes/MethodTagScene/MethodTagScene.js.map +1 -1
- package/lib/scenes/TypeScene/TypeScene.js +8 -1
- package/lib/scenes/TypeScene/TypeScene.js.map +1 -1
- package/lib/scenes/TypeTagScene/TypeTagScene.js +42 -12
- package/lib/scenes/TypeTagScene/TypeTagScene.js.map +1 -1
- package/lib/scenes/index.d.ts +1 -0
- package/lib/scenes/index.js +8 -0
- package/lib/scenes/index.js.map +1 -1
- package/lib/scenes/utils/hooks/index.d.ts +1 -0
- package/lib/scenes/utils/hooks/index.js +14 -0
- package/lib/scenes/utils/hooks/index.js.map +1 -0
- package/lib/scenes/utils/hooks/tagStoreSync.d.ts +1 -0
- package/lib/scenes/utils/hooks/tagStoreSync.js +51 -0
- package/lib/scenes/utils/hooks/tagStoreSync.js.map +1 -0
- package/lib/scenes/utils/index.d.ts +1 -0
- package/lib/scenes/utils/index.js +14 -0
- package/lib/scenes/utils/index.js.map +1 -0
- package/lib/state/settings/selectors.d.ts +2 -1
- package/lib/state/settings/selectors.js +5 -1
- package/lib/state/settings/selectors.js.map +1 -1
- package/lib/state/settings/slice.d.ts +7 -1
- package/lib/state/settings/slice.js +6 -1
- package/lib/state/settings/slice.js.map +1 -1
- package/lib/test-data/index.d.ts +1 -0
- package/lib/test-data/index.js +14 -0
- package/lib/test-data/index.js.map +1 -1
- package/lib/test-data/sdkLanguages.d.ts +10 -0
- package/lib/test-data/sdkLanguages.js +19 -0
- package/lib/test-data/sdkLanguages.js.map +1 -0
- package/lib/utils/hooks/globalStoreSync.d.ts +1 -0
- package/lib/utils/hooks/globalStoreSync.js +67 -0
- package/lib/utils/hooks/globalStoreSync.js.map +1 -0
- package/lib/utils/hooks/index.d.ts +3 -0
- package/lib/utils/hooks/index.js +30 -0
- package/lib/utils/hooks/index.js.map +1 -0
- package/lib/utils/hooks/navigation.d.ts +11 -0
- package/lib/utils/hooks/navigation.js +83 -0
- package/lib/utils/hooks/navigation.js.map +1 -0
- package/lib/utils/hooks/useQuery.d.ts +1 -0
- package/lib/utils/hooks/useQuery.js +20 -0
- package/lib/utils/hooks/useQuery.js.map +1 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.js +38 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/path.d.ts +6 -2
- package/lib/utils/path.js +34 -3
- package/lib/utils/path.js.map +1 -1
- package/lib/utils/sdkLanguage.d.ts +6 -0
- package/lib/utils/sdkLanguage.js +59 -0
- package/lib/utils/sdkLanguage.js.map +1 -0
- package/package.json +14 -14
- package/src/ApiExplorer.tsx +18 -7
- package/src/components/DocMarkdown/DocMarkdown.tsx +4 -4
- package/src/components/DocSDKs/DocDeclarations.tsx +11 -22
- package/src/components/DocSDKs/DocSDKs.spec.tsx +4 -1
- package/src/components/Header/Header.spec.tsx +1 -1
- package/src/components/SelectorContainer/ApiSpecSelector.spec.tsx +5 -2
- package/src/components/SelectorContainer/ApiSpecSelector.tsx +4 -3
- package/src/components/SelectorContainer/SdkLanguageSelector.spec.tsx +60 -33
- package/src/components/SelectorContainer/SdkLanguageSelector.tsx +15 -22
- package/src/components/SelectorContainer/SelectorContainer.spec.tsx +1 -1
- package/src/components/SelectorContainer/SelectorContainer.tsx +18 -15
- package/src/components/SelectorContainer/utils.ts +45 -0
- package/src/components/SideNav/SideNav.spec.tsx +39 -5
- package/src/components/SideNav/SideNav.tsx +42 -29
- package/src/components/SideNav/SideNavMethods.spec.tsx +5 -0
- package/src/components/SideNav/SideNavMethods.tsx +11 -8
- package/src/components/SideNav/SideNavTypes.spec.tsx +9 -2
- package/src/components/SideNav/SideNavTypes.tsx +10 -8
- package/src/components/index.ts +0 -1
- package/src/routes/AppRouter.tsx +7 -5
- package/src/scenes/DiffScene/DiffScene.tsx +10 -10
- package/src/scenes/DiffScene/DocDiff/DiffItem.spec.tsx +4 -3
- package/src/scenes/DiffScene/DocDiff/DiffItem.tsx +3 -4
- package/src/scenes/DiffScene/DocDiff/DocDiff.spec.tsx +73 -2
- package/src/scenes/DiffScene/DocDiff/DocDiff.tsx +4 -4
- package/src/scenes/ErrorDetailScene/ErrorDetailScene.tsx +72 -0
- package/src/scenes/ErrorDetailScene/index.ts +26 -0
- package/src/scenes/MethodScene/MethodScene.tsx +23 -8
- package/src/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.tsx +3 -6
- package/src/scenes/MethodScene/components/DocResponses/DocResponses.spec.tsx +153 -0
- package/src/scenes/MethodScene/components/DocResponses/DocResponses.tsx +103 -0
- package/src/{components → scenes/MethodScene/components}/DocResponses/index.ts +0 -0
- package/src/{components → scenes/MethodScene/components}/DocResponses/utils.spec.ts +1 -1
- package/src/{components → scenes/MethodScene/components}/DocResponses/utils.ts +0 -0
- package/src/scenes/MethodScene/components/index.ts +1 -0
- package/src/scenes/MethodTagScene/MethodTagScene.spec.tsx +25 -14
- package/src/scenes/MethodTagScene/MethodTagScene.tsx +42 -10
- package/src/scenes/TypeScene/TypeScene.tsx +8 -2
- package/src/scenes/TypeTagScene/TypeTagScene.spec.tsx +21 -11
- package/src/scenes/TypeTagScene/TypeTagScene.tsx +46 -13
- package/src/scenes/index.ts +1 -0
- package/src/scenes/utils/hooks/index.ts +27 -0
- package/src/scenes/utils/hooks/tagStoreSync.spec.ts +102 -0
- package/src/scenes/utils/hooks/tagStoreSync.ts +68 -0
- package/src/scenes/utils/index.ts +27 -0
- package/src/state/settings/selectors.spec.ts +5 -1
- package/src/state/settings/selectors.ts +3 -0
- package/src/state/settings/slice.ts +6 -0
- package/src/test-data/index.ts +1 -0
- package/src/test-data/sdkLanguages.ts +36 -0
- package/src/utils/hooks/globalStoreSync.spec.tsx +146 -0
- package/src/utils/hooks/globalStoreSync.ts +77 -0
- package/src/utils/hooks/index.ts +28 -0
- package/src/utils/hooks/navigation.spec.ts +118 -0
- package/src/utils/hooks/navigation.ts +121 -0
- package/src/utils/hooks/useQuery.ts +36 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/path.spec.ts +92 -3
- package/src/utils/path.ts +46 -4
- package/src/utils/sdkLanguage.spec.ts +69 -0
- package/src/utils/sdkLanguage.ts +63 -0
- package/lib/components/DocResponses/DocResponseTypes.js.map +0 -1
- package/lib/components/DocResponses/DocResponses.d.ts +0 -8
- package/lib/components/DocResponses/DocResponses.js +0 -46
- package/lib/components/DocResponses/DocResponses.js.map +0 -1
- package/lib/components/DocResponses/utils.js.map +0 -1
- package/lib/esm/components/DocResponses/DocResponseTypes.js.map +0 -1
- package/lib/esm/components/DocResponses/DocResponses.js +0 -30
- package/lib/esm/components/DocResponses/DocResponses.js.map +0 -1
- package/lib/esm/components/DocResponses/index.js.map +0 -1
- package/lib/esm/components/DocResponses/utils.js.map +0 -1
- package/src/components/DocResponses/DocResponses.spec.tsx +0 -60
- package/src/components/DocResponses/DocResponses.tsx +0 -69
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SelectorContainer/ApiSpecSelector.tsx"],"names":["ApiSpecSelector","spec","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SelectorContainer/ApiSpecSelector.tsx"],"names":["ApiSpecSelector","spec","location","navigate","specs","selectSpecs","options","Object","entries","map","key","value","label","description","status","handleChange","specKey","matchPath","pathname","replace"],"mappings":";;;;;;;AA2BA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;;;AAMO,IAAMA,eAAyC,GAAG,QAAc;AAAA,MAAb;AAAEC,IAAAA;AAAF,GAAa;AACrE,MAAMC,QAAQ,GAAG,kCAAjB;AACA,MAAM;AAAEC,IAAAA;AAAF,MAAe,2BAArB;AACA,MAAMC,KAAK,GAAG,6BAAYC,kBAAZ,CAAd;AACA,MAAMC,OAAO,GAAGC,MAAM,CAACC,OAAP,CAAeJ,KAAf,EAAsBK,GAAtB,CAA0B;AAAA,QAAC,CAACC,GAAD,EAAMT,IAAN,CAAD;AAAA,WAAkB;AAC1DU,MAAAA,KAAK,EAAED,GADmD;AAE1DE,MAAAA,KAAK,EAAEF,GAFmD;AAG1DG,MAAAA,WAAW,EAAEZ,IAAI,CAACa;AAHwC,KAAlB;AAAA,GAA1B,CAAhB;;AAMA,MAAMC,YAAY,GAAIC,OAAD,IAAqB;AACxC,QAAMC,SAAS,GAAGf,QAAQ,CAACgB,QAAT,CAAkBC,OAAlB,YAA8BlB,IAAI,CAACS,GAAnC,cAA8CM,OAA9C,EAAlB;AACAb,IAAAA,QAAQ,CAACc,SAAD,CAAR;AACD,GAHD;;AAKA,SACE,6BAAC,kBAAD;AACE,IAAA,KAAK,EAAC,OADR;AAEE,kBAAW,eAFb;AAGE,IAAA,YAAY,EAAEhB,IAAI,CAACS,GAHrB;AAIE,IAAA,OAAO,EAAEJ,OAJX;AAKE,IAAA,QAAQ,EAAES;AALZ,IADF;AASD,CAxBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React from 'react'\nimport { Select } from '@looker/components'\nimport { useLocation } from 'react-router-dom'\nimport type { SpecItem } from '@looker/sdk-codegen'\nimport { useSelector } from 'react-redux'\nimport { useNavigation } from '../../utils'\n\nimport { selectSpecs } from '../../state'\n\ninterface ApiSpecSelectorProps {\n spec: SpecItem\n}\n\nexport const ApiSpecSelector: FC<ApiSpecSelectorProps> = ({ spec }) => {\n const location = useLocation()\n const { navigate } = useNavigation()\n const specs = useSelector(selectSpecs)\n const options = Object.entries(specs).map(([key, spec]) => ({\n value: key,\n label: key,\n description: spec.status,\n }))\n\n const handleChange = (specKey: string) => {\n const matchPath = location.pathname.replace(`/${spec.key}`, `/${specKey}`)\n navigate(matchPath)\n }\n\n return (\n <Select\n width=\"10rem\"\n aria-label=\"spec selector\"\n defaultValue={spec.key}\n options={options}\n onChange={handleChange}\n />\n )\n}\n"],"file":"ApiSpecSelector.js"}
|
|
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.SdkLanguageSelector = void 0;
|
|
7
7
|
|
|
8
|
-
var _react =
|
|
9
|
-
|
|
10
|
-
var _sdkCodegen = require("@looker/sdk-codegen");
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
9
|
|
|
12
10
|
var _components = require("@looker/components");
|
|
13
11
|
|
|
@@ -15,35 +13,36 @@ var _reactRedux = require("react-redux");
|
|
|
15
13
|
|
|
16
14
|
var _state = require("../../state");
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
var _utils = require("../../utils");
|
|
17
|
+
|
|
18
|
+
var _utils2 = require("./utils");
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
23
|
|
|
20
24
|
var SdkLanguageSelector = () => {
|
|
21
25
|
var {
|
|
22
|
-
|
|
23
|
-
} = (0,
|
|
26
|
+
navigate
|
|
27
|
+
} = (0, _utils.useNavigation)();
|
|
24
28
|
var selectedSdkLanguage = (0, _reactRedux.useSelector)(_state.selectSdkLanguage);
|
|
29
|
+
var [language, setLanguage] = (0, _react.useState)(selectedSdkLanguage);
|
|
30
|
+
var options = (0, _utils2.allSdkLanguageOptions)();
|
|
25
31
|
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
allSdkLanguages.push({
|
|
31
|
-
options: [{
|
|
32
|
-
value: 'All'
|
|
33
|
-
}]
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
var handleChange = language => {
|
|
37
|
-
setSdkLanguageAction({
|
|
38
|
-
sdkLanguage: language
|
|
32
|
+
var handleChange = alias => {
|
|
33
|
+
navigate(location.pathname, {
|
|
34
|
+
sdk: alias === _utils.allAlias ? null : alias
|
|
39
35
|
});
|
|
40
36
|
};
|
|
41
37
|
|
|
38
|
+
(0, _react.useEffect)(() => {
|
|
39
|
+
setLanguage(selectedSdkLanguage);
|
|
40
|
+
}, [selectedSdkLanguage]);
|
|
42
41
|
return _react.default.createElement(_components.Select, {
|
|
43
42
|
"aria-label": "sdk language selector",
|
|
44
|
-
value:
|
|
43
|
+
value: language,
|
|
45
44
|
onChange: handleChange,
|
|
46
|
-
options:
|
|
45
|
+
options: options
|
|
47
46
|
});
|
|
48
47
|
};
|
|
49
48
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SelectorContainer/SdkLanguageSelector.tsx"],"names":["SdkLanguageSelector","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SelectorContainer/SdkLanguageSelector.tsx"],"names":["SdkLanguageSelector","navigate","selectedSdkLanguage","selectSdkLanguage","language","setLanguage","options","handleChange","alias","location","pathname","sdk","allAlias"],"mappings":";;;;;;;AA0BA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAKO,IAAMA,mBAAuB,GAAG,MAAM;AAC3C,MAAM;AAAEC,IAAAA;AAAF,MAAe,2BAArB;AACA,MAAMC,mBAAmB,GAAG,6BAAYC,wBAAZ,CAA5B;AACA,MAAM,CAACC,QAAD,EAAWC,WAAX,IAA0B,qBAASH,mBAAT,CAAhC;AACA,MAAMI,OAAO,GAAG,oCAAhB;;AAEA,MAAMC,YAAY,GAAIC,KAAD,IAAmB;AACtCP,IAAAA,QAAQ,CAACQ,QAAQ,CAACC,QAAV,EAAoB;AAAEC,MAAAA,GAAG,EAAEH,KAAK,KAAKI,eAAV,GAAqB,IAArB,GAA4BJ;AAAnC,KAApB,CAAR;AACD,GAFD;;AAIA,wBAAU,MAAM;AACdH,IAAAA,WAAW,CAACH,mBAAD,CAAX;AACD,GAFD,EAEG,CAACA,mBAAD,CAFH;AAIA,SACE,6BAAC,kBAAD;AACE,kBAAW,uBADb;AAEE,IAAA,KAAK,EAAEE,QAFT;AAGE,IAAA,QAAQ,EAAEG,YAHZ;AAIE,IAAA,OAAO,EAAED;AAJX,IADF;AAQD,CAtBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport type { FC } from 'react'\nimport React, { useEffect, useState } from 'react'\nimport { Select } from '@looker/components'\nimport { useSelector } from 'react-redux'\nimport { selectSdkLanguage } from '../../state'\nimport { allAlias, useNavigation } from '../../utils'\nimport { allSdkLanguageOptions } from './utils'\n\n/**\n * Allows the user to select their preferred SDK language\n */\nexport const SdkLanguageSelector: FC = () => {\n const { navigate } = useNavigation()\n const selectedSdkLanguage = useSelector(selectSdkLanguage)\n const [language, setLanguage] = useState(selectedSdkLanguage)\n const options = allSdkLanguageOptions()\n\n const handleChange = (alias: string) => {\n navigate(location.pathname, { sdk: alias === allAlias ? null : alias })\n }\n\n useEffect(() => {\n setLanguage(selectedSdkLanguage)\n }, [selectedSdkLanguage])\n\n return (\n <Select\n aria-label=\"sdk language selector\"\n value={language}\n onChange={handleChange}\n options={options}\n />\n )\n}\n"],"file":"SdkLanguageSelector.js"}
|
|
@@ -36,12 +36,15 @@ var SelectorContainer = _ref => {
|
|
|
36
36
|
} = _ref,
|
|
37
37
|
spaceProps = _objectWithoutProperties(_ref, ["spec"]);
|
|
38
38
|
|
|
39
|
+
var {
|
|
40
|
+
buildPathWithGlobalParams
|
|
41
|
+
} = (0, _utils.useNavigation)();
|
|
39
42
|
return _react.default.createElement(_components.Space, _extends({
|
|
40
43
|
width: "auto"
|
|
41
44
|
}, spaceProps), _react.default.createElement(_SdkLanguageSelector.SdkLanguageSelector, null), _react.default.createElement(_ApiSpecSelector.ApiSpecSelector, {
|
|
42
45
|
spec: spec
|
|
43
46
|
}), _react.default.createElement(_Link.Link, {
|
|
44
|
-
to: "/".concat(
|
|
47
|
+
to: buildPathWithGlobalParams("/".concat(spec.key, "/").concat(_utils.diffPath))
|
|
45
48
|
}, _react.default.createElement(_components.IconButton, {
|
|
46
49
|
toggle: true,
|
|
47
50
|
label: "Compare Specifications",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SelectorContainer/SelectorContainer.tsx"],"names":["HEADER_REM","SelectorContainer","spec","spaceProps","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SelectorContainer/SelectorContainer.tsx"],"names":["HEADER_REM","SelectorContainer","spec","spaceProps","buildPathWithGlobalParams","key","diffPath"],"mappings":";;;;;;;AA2BA;;AAEA;;AACA;;AAGA;;AACA;;AACA;;AACA;;;;;;;;;;AAOO,IAAMA,UAAU,GAAG,CAAnB;;;AAKA,IAAMC,iBAA6C,GAAG,QAGvD;AAAA,MAHwD;AAC5DC,IAAAA;AAD4D,GAGxD;AAAA,MADDC,UACC;;AACJ,MAAM;AAAEC,IAAAA;AAAF,MAAgC,2BAAtC;AACA,SACE,6BAAC,iBAAD;AAAO,IAAA,KAAK,EAAC;AAAb,KAAwBD,UAAxB,GACE,6BAAC,wCAAD,OADF,EAEE,6BAAC,gCAAD;AAAiB,IAAA,IAAI,EAAED;AAAvB,IAFF,EAGE,6BAAC,UAAD;AAAM,IAAA,EAAE,EAAEE,yBAAyB,YAAKF,IAAI,CAACG,GAAV,cAAiBC,eAAjB;AAAnC,KACE,6BAAC,sBAAD;AACE,IAAA,MAAM,MADR;AAEE,IAAA,KAAK,EAAC,wBAFR;AAGE,IAAA,IAAI,EAAE,6BAAC,4BAAD,OAHR;AAIE,IAAA,IAAI,EAAC;AAJP,IADF,CAHF,CADF;AAcD,CAnBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React from 'react'\nimport type { SpaceHelperProps } from '@looker/components'\nimport { Space, IconButton } from '@looker/components'\nimport { ChangeHistory } from '@styled-icons/material/ChangeHistory'\nimport type { SpecItem } from '@looker/sdk-codegen'\n\nimport { Link } from '../Link'\nimport { diffPath, useNavigation } from '../../utils'\nimport { SdkLanguageSelector } from './SdkLanguageSelector'\nimport { ApiSpecSelector } from './ApiSpecSelector'\n\ninterface SelectorContainerProps extends SpaceHelperProps {\n /** Current selected spec */\n spec: SpecItem\n}\n\nexport const HEADER_REM = 4\n\n/**\n * Renders a container for selectors\n */\nexport const SelectorContainer: FC<SelectorContainerProps> = ({\n spec,\n ...spaceProps\n}) => {\n const { buildPathWithGlobalParams } = useNavigation()\n return (\n <Space width=\"auto\" {...spaceProps}>\n <SdkLanguageSelector />\n <ApiSpecSelector spec={spec} />\n <Link to={buildPathWithGlobalParams(`/${spec.key}/${diffPath}`)}>\n <IconButton\n toggle\n label=\"Compare Specifications\"\n icon={<ChangeHistory />}\n size=\"small\"\n />\n </Link>\n </Space>\n )\n}\n"],"file":"SelectorContainer.js"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.allSdkLanguageOptions = void 0;
|
|
7
|
+
|
|
8
|
+
var _utils = require("../../utils");
|
|
9
|
+
|
|
10
|
+
var allSdkLanguageOptions = () => {
|
|
11
|
+
var options = [];
|
|
12
|
+
var languages = (0, _utils.allSdkLanguages)();
|
|
13
|
+
Object.entries(languages).forEach(_ref => {
|
|
14
|
+
var [alias, language] = _ref;
|
|
15
|
+
var option = {
|
|
16
|
+
value: alias,
|
|
17
|
+
label: language
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
if (alias === _utils.allAlias) {
|
|
21
|
+
options.push({
|
|
22
|
+
options: [option]
|
|
23
|
+
});
|
|
24
|
+
} else {
|
|
25
|
+
options.push(option);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return options;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
exports.allSdkLanguageOptions = allSdkLanguageOptions;
|
|
32
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SelectorContainer/utils.ts"],"names":["allSdkLanguageOptions","options","languages","Object","entries","forEach","alias","language","option","value","label","allAlias","push"],"mappings":";;;;;;;AA0BA;;AAKO,IAAMA,qBAAqB,GAAG,MAA2B;AAC9D,MAAMC,OAAO,GAAG,EAAhB;AACA,MAAMC,SAAS,GAAG,6BAAlB;AACAC,EAAAA,MAAM,CAACC,OAAP,CAAeF,SAAf,EAA0BG,OAA1B,CAAkC,QAAuB;AAAA,QAAtB,CAACC,KAAD,EAAQC,QAAR,CAAsB;AACvD,QAAMC,MAAM,GAAG;AAAEC,MAAAA,KAAK,EAAEH,KAAT;AAAgBI,MAAAA,KAAK,EAAEH;AAAvB,KAAf;;AACA,QAAID,KAAK,KAAKK,eAAd,EAAwB;AACtBV,MAAAA,OAAO,CAACW,IAAR,CAAa;AAAEX,QAAAA,OAAO,EAAE,CAACO,MAAD;AAAX,OAAb;AACD,KAFD,MAEO;AACLP,MAAAA,OAAO,CAACW,IAAR,CAAaJ,MAAb;AACD;AACF,GAPD;AASA,SAAOP,OAAP;AACD,CAbM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2022 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport type { SelectOptionProps } from '@looker/components'\nimport { allSdkLanguages, allAlias } from '../../utils'\n\n/**\n * @returns sdk language options for render\n */\nexport const allSdkLanguageOptions = (): SelectOptionProps[] => {\n const options = [] as SelectOptionProps[]\n const languages = allSdkLanguages()\n Object.entries(languages).forEach(([alias, language]) => {\n const option = { value: alias, label: language }\n if (alias === allAlias) {\n options.push({ options: [option] })\n } else {\n options.push(option)\n }\n })\n\n return options\n}\n"],"file":"utils.js"}
|
|
@@ -15,6 +15,8 @@ var _sdkCodegen = require("@looker/sdk-codegen");
|
|
|
15
15
|
|
|
16
16
|
var _reactRedux = require("react-redux");
|
|
17
17
|
|
|
18
|
+
var _runIt = require("@looker/run-it");
|
|
19
|
+
|
|
18
20
|
var _utils = require("../../utils");
|
|
19
21
|
|
|
20
22
|
var _Header = require("../Header");
|
|
@@ -40,8 +42,11 @@ var SideNav = _ref => {
|
|
|
40
42
|
headless = false,
|
|
41
43
|
spec
|
|
42
44
|
} = _ref;
|
|
43
|
-
var history = (0, _reactRouterDom.useHistory)();
|
|
44
45
|
var location = (0, _reactRouterDom.useLocation)();
|
|
46
|
+
var {
|
|
47
|
+
navigate,
|
|
48
|
+
navigateWithGlobalParams
|
|
49
|
+
} = (0, _utils.useNavigation)();
|
|
45
50
|
var specKey = spec.key;
|
|
46
51
|
var tabNames = ['methods', 'types'];
|
|
47
52
|
var pathParts = location.pathname.split('/');
|
|
@@ -58,12 +63,12 @@ var SideNav = _ref => {
|
|
|
58
63
|
if (parts[1] === 'diff') {
|
|
59
64
|
if (parts[3] !== tabNames[index]) {
|
|
60
65
|
parts[3] = tabNames[index];
|
|
61
|
-
|
|
66
|
+
navigateWithGlobalParams(parts.join('/'));
|
|
62
67
|
}
|
|
63
68
|
} else {
|
|
64
69
|
if (parts[2] !== tabNames[index]) {
|
|
65
70
|
parts[2] = tabNames[index];
|
|
66
|
-
|
|
71
|
+
navigateWithGlobalParams(parts.join('/'));
|
|
67
72
|
}
|
|
68
73
|
}
|
|
69
74
|
};
|
|
@@ -73,10 +78,8 @@ var SideNav = _ref => {
|
|
|
73
78
|
onChange: onTabChange
|
|
74
79
|
});
|
|
75
80
|
var searchCriteria = (0, _reactRedux.useSelector)(_state.selectSearchCriteria);
|
|
76
|
-
var
|
|
77
|
-
|
|
78
|
-
} = (0, _state.useSettingActions)();
|
|
79
|
-
var [pattern, setSearchPattern] = (0, _react.useState)('');
|
|
81
|
+
var searchPattern = (0, _reactRedux.useSelector)(_state.selectSearchPattern);
|
|
82
|
+
var [pattern, setSearchPattern] = (0, _react.useState)(searchPattern);
|
|
80
83
|
var debouncedPattern = (0, _searchUtils.useDebounce)(pattern, 250);
|
|
81
84
|
var [sideNavState, setSideNavState] = (0, _react.useState)(() => {
|
|
82
85
|
var _spec$api, _spec$api2, _spec$api3, _spec$api4;
|
|
@@ -101,15 +104,31 @@ var SideNav = _ref => {
|
|
|
101
104
|
setSearchPattern(value);
|
|
102
105
|
};
|
|
103
106
|
|
|
107
|
+
(0, _react.useEffect)(() => {
|
|
108
|
+
var searchParams = new URLSearchParams(location.search);
|
|
109
|
+
|
|
110
|
+
if (debouncedPattern && debouncedPattern !== searchParams.get('s')) {
|
|
111
|
+
searchParams.set('s', debouncedPattern);
|
|
112
|
+
navigate(location.pathname, {
|
|
113
|
+
s: searchParams.get('s')
|
|
114
|
+
});
|
|
115
|
+
} else if (!debouncedPattern && searchParams.get('s')) {
|
|
116
|
+
searchParams.delete('s');
|
|
117
|
+
navigate(location.pathname, {
|
|
118
|
+
s: null
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}, [debouncedPattern]);
|
|
104
122
|
(0, _react.useEffect)(() => {
|
|
105
123
|
var results;
|
|
106
124
|
var newTags;
|
|
107
125
|
var newTypes;
|
|
108
126
|
var newTypeTags;
|
|
109
127
|
var api = spec.api || {};
|
|
128
|
+
setSearchPattern(searchPattern);
|
|
110
129
|
|
|
111
|
-
if (
|
|
112
|
-
results = api.search(
|
|
130
|
+
if (searchPattern && api.search) {
|
|
131
|
+
results = api.search(searchPattern, (0, _sdkCodegen.criteriaToSet)(searchCriteria));
|
|
113
132
|
newTags = results.tags;
|
|
114
133
|
newTypes = results.types;
|
|
115
134
|
newTypeTags = (0, _sdkCodegen.tagTypes)(api, results.types);
|
|
@@ -126,10 +145,7 @@ var SideNav = _ref => {
|
|
|
126
145
|
methodCount: (0, _searchUtils.countMethods)(newTags),
|
|
127
146
|
searchResults: results
|
|
128
147
|
});
|
|
129
|
-
|
|
130
|
-
searchPattern: debouncedPattern
|
|
131
|
-
});
|
|
132
|
-
}, [debouncedPattern, specKey, spec, setSearchPatternAction, pattern, searchCriteria]);
|
|
148
|
+
}, [searchPattern, specKey, spec, searchCriteria]);
|
|
133
149
|
(0, _react.useEffect)(() => {
|
|
134
150
|
var {
|
|
135
151
|
selectedIndex,
|
|
@@ -143,19 +159,24 @@ var SideNav = _ref => {
|
|
|
143
159
|
var size = (0, _utils.useWindowSize)();
|
|
144
160
|
var headlessOffset = headless ? 200 : 120;
|
|
145
161
|
var menuH = size.height - 16 * _Header.HEADER_REM - headlessOffset;
|
|
146
|
-
return _react.default.createElement("nav", null, _react.default.createElement(_components.
|
|
162
|
+
return _react.default.createElement("nav", null, _react.default.createElement(_components.Box2, {
|
|
147
163
|
pl: "large",
|
|
148
164
|
pr: "large",
|
|
149
165
|
pb: "large",
|
|
150
166
|
pt: headless ? 'u3' : 'large',
|
|
167
|
+
position: 'relative',
|
|
168
|
+
width: '100%'
|
|
169
|
+
}, _react.default.createElement(_runIt.CopyLinkWrapper, {
|
|
170
|
+
visible: !!pattern
|
|
171
|
+
}, _react.default.createElement(_components.InputSearch, {
|
|
151
172
|
"aria-label": "Search",
|
|
152
173
|
onChange: handleInputChange,
|
|
153
174
|
placeholder: "Search",
|
|
154
175
|
value: pattern,
|
|
155
176
|
isClearable: true
|
|
156
|
-
}), _react.default.createElement(_SearchMessage.SearchMessage, {
|
|
177
|
+
})), _react.default.createElement(_SearchMessage.SearchMessage, {
|
|
157
178
|
search: searchResults
|
|
158
|
-
}), _react.default.createElement(_components.TabList, _extends({}, tabs, {
|
|
179
|
+
})), _react.default.createElement(_components.TabList, _extends({}, tabs, {
|
|
159
180
|
distribute: true
|
|
160
181
|
}), _react.default.createElement(_components.Tab, null, "Methods (", methodCount, ")"), _react.default.createElement(_components.Tab, null, "Types (", typeCount, ")")), _react.default.createElement(_components.TabPanels, _extends({}, tabs, {
|
|
161
182
|
pt: "xsmall",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SideNav/SideNav.tsx"],"names":["SideNav","headless","spec","history","location","specKey","key","tabNames","pathParts","pathname","split","sideNavTab","defaultIndex","indexOf","onTabChange","index","parts","push","join","tabs","onChange","searchCriteria","selectSearchCriteria","setSearchPatternAction","pattern","setSearchPattern","debouncedPattern","sideNavState","setSideNavState","tags","api","typeTags","methodCount","typeCount","types","searchResults","undefined","handleInputChange","value","results","newTags","newTypes","newTypeTags","search","searchPattern","selectedIndex","onSelectTab","size","headlessOffset","menuH","height","HEADER_REM"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React, { useEffect, useState } from 'react'\nimport { useHistory, useLocation } from 'react-router-dom'\nimport {\n TabList,\n Tab,\n TabPanel,\n TabPanels,\n useTabs,\n InputSearch,\n} from '@looker/components'\nimport type {\n SpecItem,\n ISearchResult,\n ApiModel,\n TagList,\n TypeTagList,\n} from '@looker/sdk-codegen'\nimport { criteriaToSet, tagTypes } from '@looker/sdk-codegen'\nimport { useSelector } from 'react-redux'\n\nimport { useWindowSize } from '../../utils'\nimport { HEADER_REM } from '../Header'\nimport { selectSearchCriteria, useSettingActions } from '../../state'\nimport { SideNavMethodTags } from './SideNavMethodTags'\nimport { SideNavTypeTags } from './SideNavTypeTags'\nimport { useDebounce, countMethods, countTypes } from './searchUtils'\nimport { SearchMessage } from './SearchMessage'\n\ninterface SideNavState {\n tags: TagList\n typeTags: TypeTagList\n methodCount: number\n typeCount: number\n searchResults?: ISearchResult\n}\n\ninterface SideNavProps {\n headless?: boolean\n /** Current selected spec */\n spec: SpecItem\n}\n\nexport const SideNav: FC<SideNavProps> = ({ headless = false, spec }) => {\n const history = useHistory()\n const location = useLocation()\n const specKey = spec.key\n const tabNames = ['methods', 'types']\n const pathParts = location.pathname.split('/')\n const sideNavTab = pathParts[1] === 'diff' ? pathParts[3] : pathParts[2]\n let defaultIndex = tabNames.indexOf(sideNavTab)\n if (defaultIndex < 0) {\n defaultIndex = tabNames.indexOf('methods')\n }\n const onTabChange = (index: number) => {\n const parts = location.pathname.split('/')\n if (parts[1] === 'diff') {\n if (parts[3] !== tabNames[index]) {\n parts[3] = tabNames[index]\n history.push(parts.join('/'))\n }\n } else {\n if (parts[2] !== tabNames[index]) {\n parts[2] = tabNames[index]\n history.push(parts.join('/'))\n }\n }\n }\n const tabs = useTabs({ defaultIndex, onChange: onTabChange })\n const searchCriteria = useSelector(selectSearchCriteria)\n const { setSearchPatternAction } = useSettingActions()\n\n const [pattern, setSearchPattern] = useState('')\n const debouncedPattern = useDebounce(pattern, 250)\n const [sideNavState, setSideNavState] = useState<SideNavState>(() => ({\n tags: spec?.api?.tags || {},\n typeTags: spec?.api?.typeTags || {},\n methodCount: countMethods(spec?.api?.tags || {}),\n typeCount: countTypes(spec?.api?.types || {}),\n searchResults: undefined,\n }))\n const { tags, typeTags, methodCount, typeCount, searchResults } = sideNavState\n\n const handleInputChange = (value: string) => {\n setSearchPattern(value)\n }\n\n useEffect(() => {\n let results\n let newTags\n let newTypes\n let newTypeTags\n const api = spec.api || ({} as ApiModel)\n\n if (debouncedPattern && api.search) {\n results = api.search(pattern, criteriaToSet(searchCriteria))\n newTags = results.tags\n newTypes = results.types\n newTypeTags = tagTypes(api, results.types)\n } else {\n newTags = api.tags || {}\n newTypes = api.types || {}\n newTypeTags = api.typeTags || {}\n }\n\n setSideNavState({\n tags: newTags,\n typeTags: newTypeTags,\n typeCount: countTypes(newTypes),\n methodCount: countMethods(newTags),\n searchResults: results,\n })\n setSearchPatternAction({ searchPattern: debouncedPattern })\n }, [\n debouncedPattern,\n specKey,\n spec,\n setSearchPatternAction,\n pattern,\n searchCriteria,\n ])\n\n useEffect(() => {\n const { selectedIndex, onSelectTab } = tabs\n if (defaultIndex !== selectedIndex) {\n onSelectTab(defaultIndex)\n }\n }, [defaultIndex, tabs])\n\n const size = useWindowSize()\n const headlessOffset = headless ? 200 : 120\n const menuH = size.height - 16 * HEADER_REM - headlessOffset\n\n return (\n <nav>\n <InputSearch\n pl=\"large\"\n pr=\"large\"\n pb=\"large\"\n pt={headless ? 'u3' : 'large'}\n aria-label=\"Search\"\n onChange={handleInputChange}\n placeholder=\"Search\"\n value={pattern}\n isClearable\n />\n <SearchMessage search={searchResults} />\n <TabList {...tabs} distribute>\n <Tab>Methods ({methodCount})</Tab>\n <Tab>Types ({typeCount})</Tab>\n </TabList>\n <TabPanels {...tabs} pt=\"xsmall\" height={`${menuH}px`} overflow=\"auto\">\n <TabPanel>\n <SideNavMethodTags\n tags={tags}\n specKey={specKey}\n defaultOpen={!!searchResults}\n />\n </TabPanel>\n <TabPanel>\n <SideNavTypeTags\n tags={typeTags}\n specKey={specKey}\n defaultOpen={!!searchResults}\n />\n </TabPanel>\n </TabPanels>\n </nav>\n )\n}\n"],"file":"SideNav.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SideNav/SideNav.tsx"],"names":["SideNav","headless","spec","location","navigate","navigateWithGlobalParams","specKey","key","tabNames","pathParts","pathname","split","sideNavTab","defaultIndex","indexOf","onTabChange","index","parts","join","tabs","onChange","searchCriteria","selectSearchCriteria","searchPattern","selectSearchPattern","pattern","setSearchPattern","debouncedPattern","sideNavState","setSideNavState","tags","api","typeTags","methodCount","typeCount","types","searchResults","undefined","handleInputChange","value","searchParams","URLSearchParams","search","get","set","s","delete","results","newTags","newTypes","newTypeTags","selectedIndex","onSelectTab","size","headlessOffset","menuH","height","HEADER_REM"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React, { useEffect, useState } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport {\n TabList,\n Tab,\n TabPanel,\n TabPanels,\n useTabs,\n InputSearch,\n Box2,\n} from '@looker/components'\nimport type {\n SpecItem,\n ISearchResult,\n ApiModel,\n TagList,\n TypeTagList,\n} from '@looker/sdk-codegen'\nimport { criteriaToSet, tagTypes } from '@looker/sdk-codegen'\nimport { useSelector } from 'react-redux'\nimport { CopyLinkWrapper } from '@looker/run-it'\nimport { useWindowSize, useNavigation } from '../../utils'\nimport { HEADER_REM } from '../Header'\nimport { selectSearchCriteria, selectSearchPattern } from '../../state'\nimport { SideNavMethodTags } from './SideNavMethodTags'\nimport { SideNavTypeTags } from './SideNavTypeTags'\nimport { useDebounce, countMethods, countTypes } from './searchUtils'\nimport { SearchMessage } from './SearchMessage'\n\ninterface SideNavState {\n tags: TagList\n typeTags: TypeTagList\n methodCount: number\n typeCount: number\n searchResults?: ISearchResult\n}\n\ninterface SideNavProps {\n headless?: boolean\n /** Current selected spec */\n spec: SpecItem\n}\n\nexport const SideNav: FC<SideNavProps> = ({ headless = false, spec }) => {\n const location = useLocation()\n const { navigate, navigateWithGlobalParams } = useNavigation()\n const specKey = spec.key\n const tabNames = ['methods', 'types']\n const pathParts = location.pathname.split('/')\n const sideNavTab = pathParts[1] === 'diff' ? pathParts[3] : pathParts[2]\n let defaultIndex = tabNames.indexOf(sideNavTab)\n if (defaultIndex < 0) {\n defaultIndex = tabNames.indexOf('methods')\n }\n const onTabChange = (index: number) => {\n const parts = location.pathname.split('/')\n if (parts[1] === 'diff') {\n if (parts[3] !== tabNames[index]) {\n parts[3] = tabNames[index]\n navigateWithGlobalParams(parts.join('/'))\n }\n } else {\n if (parts[2] !== tabNames[index]) {\n parts[2] = tabNames[index]\n navigateWithGlobalParams(parts.join('/'))\n }\n }\n }\n const tabs = useTabs({ defaultIndex, onChange: onTabChange })\n const searchCriteria = useSelector(selectSearchCriteria)\n const searchPattern = useSelector(selectSearchPattern)\n const [pattern, setSearchPattern] = useState(searchPattern)\n const debouncedPattern = useDebounce(pattern, 250)\n const [sideNavState, setSideNavState] = useState<SideNavState>(() => ({\n tags: spec?.api?.tags || {},\n typeTags: spec?.api?.typeTags || {},\n methodCount: countMethods(spec?.api?.tags || {}),\n typeCount: countTypes(spec?.api?.types || {}),\n searchResults: undefined,\n }))\n const { tags, typeTags, methodCount, typeCount, searchResults } = sideNavState\n\n const handleInputChange = (value: string) => {\n setSearchPattern(value)\n }\n\n useEffect(() => {\n const searchParams = new URLSearchParams(location.search)\n if (debouncedPattern && debouncedPattern !== searchParams.get('s')) {\n searchParams.set('s', debouncedPattern)\n navigate(location.pathname, { s: searchParams.get('s') })\n } else if (!debouncedPattern && searchParams.get('s')) {\n searchParams.delete('s')\n navigate(location.pathname, { s: null })\n }\n }, [debouncedPattern])\n // Removed location.search as dep to fix bug related to\n // browser forward / backward navigation\n\n useEffect(() => {\n let results\n let newTags\n let newTypes\n let newTypeTags\n const api = spec.api || ({} as ApiModel)\n setSearchPattern(searchPattern)\n\n if (searchPattern && api.search) {\n results = api.search(searchPattern, criteriaToSet(searchCriteria))\n newTags = results.tags\n newTypes = results.types\n newTypeTags = tagTypes(api, results.types)\n } else {\n newTags = api.tags || {}\n newTypes = api.types || {}\n newTypeTags = api.typeTags || {}\n }\n\n setSideNavState({\n tags: newTags,\n typeTags: newTypeTags,\n typeCount: countTypes(newTypes),\n methodCount: countMethods(newTags),\n searchResults: results,\n })\n }, [searchPattern, specKey, spec, searchCriteria])\n\n useEffect(() => {\n const { selectedIndex, onSelectTab } = tabs\n if (defaultIndex !== selectedIndex) {\n onSelectTab(defaultIndex)\n }\n }, [defaultIndex, tabs])\n\n const size = useWindowSize()\n const headlessOffset = headless ? 200 : 120\n const menuH = size.height - 16 * HEADER_REM - headlessOffset\n\n return (\n <nav>\n <Box2\n pl=\"large\"\n pr=\"large\"\n pb=\"large\"\n pt={headless ? 'u3' : 'large'}\n position={'relative'}\n width={'100%'}\n >\n <CopyLinkWrapper visible={!!pattern}>\n <InputSearch\n aria-label=\"Search\"\n onChange={handleInputChange}\n placeholder=\"Search\"\n value={pattern}\n isClearable\n />\n </CopyLinkWrapper>\n <SearchMessage search={searchResults} />\n </Box2>\n <TabList {...tabs} distribute>\n <Tab>Methods ({methodCount})</Tab>\n <Tab>Types ({typeCount})</Tab>\n </TabList>\n <TabPanels {...tabs} pt=\"xsmall\" height={`${menuH}px`} overflow=\"auto\">\n <TabPanel>\n <SideNavMethodTags\n tags={tags}\n specKey={specKey}\n defaultOpen={!!searchResults}\n />\n </TabPanel>\n <TabPanel>\n <SideNavTypeTags\n tags={typeTags}\n specKey={specKey}\n defaultOpen={!!searchResults}\n />\n </TabPanel>\n </TabPanels>\n </nav>\n )\n}\n"],"file":"SideNav.js"}
|
|
@@ -15,10 +15,10 @@ var _reactRedux = require("react-redux");
|
|
|
15
15
|
|
|
16
16
|
var _reactRouterDom = require("react-router-dom");
|
|
17
17
|
|
|
18
|
-
var _Link = require("../Link");
|
|
19
|
-
|
|
20
18
|
var _utils = require("../../utils");
|
|
21
19
|
|
|
20
|
+
var _Link = require("../Link");
|
|
21
|
+
|
|
22
22
|
var _state = require("../../state");
|
|
23
23
|
|
|
24
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -35,10 +35,13 @@ var SideNavMethods = (0, _styledComponents.default)(_ref => {
|
|
|
35
35
|
specKey,
|
|
36
36
|
defaultOpen = false
|
|
37
37
|
} = _ref;
|
|
38
|
+
var {
|
|
39
|
+
buildPathWithGlobalParams,
|
|
40
|
+
navigateWithGlobalParams
|
|
41
|
+
} = (0, _utils.useNavigation)();
|
|
38
42
|
var searchPattern = (0, _reactRedux.useSelector)(_state.selectSearchPattern);
|
|
39
43
|
var match = (0, _reactRouterDom.useRouteMatch)("/:specKey/methods/:methodTag/:methodName?");
|
|
40
44
|
var [isOpen, setIsOpen] = (0, _react.useState)(defaultOpen);
|
|
41
|
-
var history = (0, _reactRouterDom.useHistory)();
|
|
42
45
|
|
|
43
46
|
var handleOpen = () => {
|
|
44
47
|
var _isOpen = !isOpen;
|
|
@@ -46,9 +49,9 @@ var SideNavMethods = (0, _styledComponents.default)(_ref => {
|
|
|
46
49
|
setIsOpen(_isOpen);
|
|
47
50
|
|
|
48
51
|
if (_isOpen) {
|
|
49
|
-
|
|
52
|
+
navigateWithGlobalParams("/".concat(specKey, "/methods/").concat(tag));
|
|
50
53
|
} else {
|
|
51
|
-
|
|
54
|
+
navigateWithGlobalParams("/".concat(specKey, "/methods"));
|
|
52
55
|
}
|
|
53
56
|
};
|
|
54
57
|
|
|
@@ -68,7 +71,7 @@ var SideNavMethods = (0, _styledComponents.default)(_ref => {
|
|
|
68
71
|
}, _react.default.createElement("ul", null, Object.values(methods).map(method => _react.default.createElement("li", {
|
|
69
72
|
key: method.name
|
|
70
73
|
}, _react.default.createElement(_Link.Link, {
|
|
71
|
-
to:
|
|
74
|
+
to: buildPathWithGlobalParams((0, _utils.buildMethodPath)(specKey, tag, method.name))
|
|
72
75
|
}, (0, _utils.highlightHTML)(searchPattern, method.summary))))));
|
|
73
76
|
}).withConfig({
|
|
74
77
|
displayName: "SideNavMethods",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SideNav/SideNavMethods.tsx"],"names":["SideNavMethods","className","methods","tag","specKey","defaultOpen","searchPattern","selectSearchPattern","match","isOpen","setIsOpen","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SideNav/SideNavMethods.tsx"],"names":["SideNavMethods","className","methods","tag","specKey","defaultOpen","buildPathWithGlobalParams","navigateWithGlobalParams","searchPattern","selectSearchPattern","match","isOpen","setIsOpen","handleOpen","_isOpen","status","params","methodTag","Object","values","map","method","name","summary","theme","fonts","brand","colors","key","fontWeights","semiBold","ui2","space","xxsmall","ui1","Link","radii","medium","xsmall"],"mappings":";;;;;;;AA0BA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAUO,IAAMA,cAAc,GAAG,+BAC5B,QAA6E;AAAA,MAA5E;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,OAAb;AAAsBC,IAAAA,GAAtB;AAA2BC,IAAAA,OAA3B;AAAoCC,IAAAA,WAAW,GAAG;AAAlD,GAA4E;AAC3E,MAAM;AAAEC,IAAAA,yBAAF;AAA6BC,IAAAA;AAA7B,MACJ,2BADF;AAEA,MAAMC,aAAa,GAAG,6BAAYC,0BAAZ,CAAtB;AACA,MAAMC,KAAK,GAAG,+EAAd;AAGA,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsB,qBAASP,WAAT,CAA5B;;AACA,MAAMQ,UAAU,GAAG,MAAM;AACvB,QAAMC,OAAO,GAAG,CAACH,MAAjB;;AACAC,IAAAA,SAAS,CAACE,OAAD,CAAT;;AACA,QAAIA,OAAJ,EAAa;AACXP,MAAAA,wBAAwB,YAAKH,OAAL,sBAAwBD,GAAxB,EAAxB;AACD,KAFD,MAEO;AACLI,MAAAA,wBAAwB,YAAKH,OAAL,cAAxB;AACD;AACF,GARD;;AAUA,wBAAU,MAAM;AACd,QAAMW,MAAM,GAAGL,KAAK,GAChBL,WAAW,IAAIK,KAAK,CAACM,MAAN,CAAaC,SAAb,KAA2Bd,GAD1B,GAEhBE,WAFJ;AAGAO,IAAAA,SAAS,CAACG,MAAD,CAAT;AACD,GALD,EAKG,CAACV,WAAD,CALH;AAQA,SACE,6BAAC,sBAAD;AACE,IAAA,MAAM,EAAEM,MADV;AAEE,IAAA,UAAU,EAAEE,UAFd;AAGE,IAAA,SAAS,EAAEZ,SAHb;AAIE,IAAA,KAAK,EACH,6BAAC,mBAAD;AAAS,MAAA,EAAE,EAAC,IAAZ;AAAiB,MAAA,QAAQ,EAAC,OAA1B;AAAkC,MAAA,EAAE,EAAC;AAArC,OACG,0BAAcO,aAAd,EAA6BL,GAA7B,CADH;AALJ,KAUE,yCACGe,MAAM,CAACC,MAAP,CAAcjB,OAAd,EAAuBkB,GAAvB,CAA4BC,MAAD,IAC1B;AAAI,IAAA,GAAG,EAAEA,MAAM,CAACC;AAAhB,KACE,6BAAC,UAAD;AACE,IAAA,EAAE,EAAEhB,yBAAyB,CAC3B,4BAAgBF,OAAhB,EAAyBD,GAAzB,EAA8BkB,MAAM,CAACC,IAArC,CAD2B;AAD/B,KAKG,0BAAcd,aAAd,EAA6Ba,MAAM,CAACE,OAApC,CALH,CADF,CADD,CADH,CAVF,CADF;AA0BD,CArD2B,CAAH;AAAA;AAAA;AAAA,sbAuDV;AAAA,MAAC;AAAEC,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACC,KAAN,CAAYC,KAA3B;AAAA,CAvDU,EA6DZ;AAAA,MAAC;AAAEF,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACG,MAAN,CAAaC,GAA5B;AAAA,CA7DY,EAkER;AAAA,MAAC;AAAEJ,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACK,WAAN,CAAkBC,QAAjC;AAAA,CAlEQ,EAsEG;AAAA,MAAC;AAAEN,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACG,MAAN,CAAaI,GAA5B;AAAA,CAtEH,EA0EP;AAAA,MAAC;AAAEP,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACQ,KAAN,CAAYC,OAA3B;AAAA,CA1EO,EA2ER;AAAA,MAAC;AAAET,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACQ,KAAN,CAAYC,OAA3B;AAAA,CA3EQ,EA+ET;AAAA,MAAC;AAAET,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACG,MAAN,CAAaO,GAA5B;AAAA,CA/ES,EAgFR;AAAA,MAAC;AAAEV,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACK,WAAN,CAAkBC,QAAjC;AAAA,CAhFQ,EAmFvBK,UAnFuB,EAoFN;AAAA,MAAC;AAAEX,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACY,KAAN,CAAYC,MAA3B;AAAA,CApFM,EAuFZ;AAAA,MAAC;AAAEb,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACQ,KAAN,CAAYM,MAA3B;AAAA,CAvFY,EA8FP;AAAA,MAAC;AAAEd,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACG,MAAN,CAAaO,GAA5B;AAAA,CA9FO,CAApB","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { Accordion2, Heading } from '@looker/components'\nimport type { MethodList } from '@looker/sdk-codegen'\nimport { useSelector } from 'react-redux'\nimport { useRouteMatch } from 'react-router-dom'\nimport { useNavigation, highlightHTML, buildMethodPath } from '../../utils'\nimport { Link } from '../Link'\nimport { selectSearchPattern } from '../../state'\n\ninterface MethodsProps {\n methods: MethodList\n tag: string\n specKey: string\n className?: string\n defaultOpen?: boolean\n}\n\nexport const SideNavMethods = styled(\n ({ className, methods, tag, specKey, defaultOpen = false }: MethodsProps) => {\n const { buildPathWithGlobalParams, navigateWithGlobalParams } =\n useNavigation()\n const searchPattern = useSelector(selectSearchPattern)\n const match = useRouteMatch<{ methodTag: string }>(\n `/:specKey/methods/:methodTag/:methodName?`\n )\n const [isOpen, setIsOpen] = useState(defaultOpen)\n const handleOpen = () => {\n const _isOpen = !isOpen\n setIsOpen(_isOpen)\n if (_isOpen) {\n navigateWithGlobalParams(`/${specKey}/methods/${tag}`)\n } else {\n navigateWithGlobalParams(`/${specKey}/methods`)\n }\n }\n\n useEffect(() => {\n const status = match\n ? defaultOpen || match.params.methodTag === tag\n : defaultOpen\n setIsOpen(status)\n }, [defaultOpen])\n\n /* TODO: Fix highlighting. It is applied but it is somehow being overridden */\n return (\n <Accordion2\n isOpen={isOpen}\n toggleOpen={handleOpen}\n className={className}\n label={\n <Heading as=\"h4\" fontSize=\"small\" py=\"xsmall\">\n {highlightHTML(searchPattern, tag)}\n </Heading>\n }\n >\n <ul>\n {Object.values(methods).map((method) => (\n <li key={method.name}>\n <Link\n to={buildPathWithGlobalParams(\n buildMethodPath(specKey, tag, method.name)\n )}\n >\n {highlightHTML(searchPattern, method.summary)}\n </Link>\n </li>\n ))}\n </ul>\n </Accordion2>\n )\n }\n)`\n font-family: ${({ theme }) => theme.fonts.brand};\n\n [aria-controls]:hover,\n [aria-expanded='true'] {\n h4,\n svg {\n color: ${({ theme }) => theme.colors.key};\n }\n }\n\n [aria-expanded='true'] h4 {\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ul {\n border-left: dashed 1px ${({ theme }) => theme.colors.ui2};\n list-style: none;\n margin: 0;\n padding: 0;\n padding-left: ${({ theme }) => theme.space.xxsmall};\n padding-top: ${({ theme }) => theme.space.xxsmall};\n }\n\n [aria-current] {\n background: ${({ theme }) => theme.colors.ui1};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ${Link} {\n border-radius: ${({ theme }) => theme.radii.medium};\n display: block;\n overflow: hidden;\n padding: ${({ theme }) => theme.space.xsmall};\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover,\n &:focus,\n &.active {\n background: ${({ theme }) => theme.colors.ui1};\n }\n }\n`\n"],"file":"SideNavMethods.js"}
|
|
@@ -35,10 +35,13 @@ var SideNavTypes = (0, _styledComponents.default)(_ref => {
|
|
|
35
35
|
specKey,
|
|
36
36
|
defaultOpen = false
|
|
37
37
|
} = _ref;
|
|
38
|
+
var {
|
|
39
|
+
navigate,
|
|
40
|
+
buildPathWithGlobalParams
|
|
41
|
+
} = (0, _utils.useNavigation)();
|
|
38
42
|
var searchPattern = (0, _reactRedux.useSelector)(_state.selectSearchPattern);
|
|
39
43
|
var match = (0, _reactRouterDom.useRouteMatch)("/:specKey/types/:typeTag/:typeName?");
|
|
40
44
|
var [isOpen, setIsOpen] = (0, _react.useState)(defaultOpen);
|
|
41
|
-
var history = (0, _reactRouterDom.useHistory)();
|
|
42
45
|
|
|
43
46
|
var handleOpen = () => {
|
|
44
47
|
var _isOpen = !isOpen;
|
|
@@ -46,9 +49,9 @@ var SideNavTypes = (0, _styledComponents.default)(_ref => {
|
|
|
46
49
|
setIsOpen(_isOpen);
|
|
47
50
|
|
|
48
51
|
if (_isOpen) {
|
|
49
|
-
|
|
52
|
+
navigate("/".concat(specKey, "/types/").concat(tag));
|
|
50
53
|
} else {
|
|
51
|
-
|
|
54
|
+
navigate("/".concat(specKey, "/types"));
|
|
52
55
|
}
|
|
53
56
|
};
|
|
54
57
|
|
|
@@ -68,7 +71,7 @@ var SideNavTypes = (0, _styledComponents.default)(_ref => {
|
|
|
68
71
|
}, _react.default.createElement("ul", null, Object.values(types).map(type => _react.default.createElement("li", {
|
|
69
72
|
key: type.name
|
|
70
73
|
}, _react.default.createElement(_Link.Link, {
|
|
71
|
-
to:
|
|
74
|
+
to: buildPathWithGlobalParams((0, _utils.buildTypePath)(specKey, tag, type.name))
|
|
72
75
|
}, (0, _utils.highlightHTML)(searchPattern, type.name))))));
|
|
73
76
|
}).withConfig({
|
|
74
77
|
displayName: "SideNavTypes",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/SideNav/SideNavTypes.tsx"],"names":["SideNavTypes","className","types","tag","specKey","defaultOpen","searchPattern","selectSearchPattern","match","isOpen","setIsOpen","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/SideNav/SideNavTypes.tsx"],"names":["SideNavTypes","className","types","tag","specKey","defaultOpen","navigate","buildPathWithGlobalParams","searchPattern","selectSearchPattern","match","isOpen","setIsOpen","handleOpen","_isOpen","status","params","typeTag","Object","values","map","type","name","theme","fonts","brand","colors","key","fontWeights","semiBold","ui2","space","xxsmall","ui1","Link","radii","medium","xsmall"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport React, { useEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { Accordion2, Heading } from '@looker/components'\nimport type { TypeList } from '@looker/sdk-codegen'\nimport { useRouteMatch } from 'react-router-dom'\nimport { useSelector } from 'react-redux'\nimport { Link } from '../Link'\nimport { highlightHTML, useNavigation, buildTypePath } from '../../utils'\nimport { selectSearchPattern } from '../../state'\n\ninterface TypesProps {\n types: TypeList\n tag: string\n specKey: string\n className?: string\n defaultOpen?: boolean\n}\n\nexport const SideNavTypes = styled(\n ({ className, types, tag, specKey, defaultOpen = false }: TypesProps) => {\n const { navigate, buildPathWithGlobalParams } = useNavigation()\n const searchPattern = useSelector(selectSearchPattern)\n const match = useRouteMatch<{ typeTag: string }>(\n `/:specKey/types/:typeTag/:typeName?`\n )\n const [isOpen, setIsOpen] = useState(defaultOpen)\n const handleOpen = () => {\n const _isOpen = !isOpen\n setIsOpen(_isOpen)\n if (_isOpen) {\n navigate(`/${specKey}/types/${tag}`)\n } else {\n navigate(`/${specKey}/types`)\n }\n }\n\n useEffect(() => {\n const status = match\n ? defaultOpen || match.params.typeTag === tag\n : defaultOpen\n setIsOpen(status)\n }, [defaultOpen])\n\n /* TODO: Fix highlighting. It is applied but it is somehow being overridden */\n return (\n <Accordion2\n isOpen={isOpen}\n toggleOpen={handleOpen}\n className={className}\n label={\n <Heading as=\"h4\" fontSize=\"small\" py=\"xsmall\">\n {highlightHTML(searchPattern, tag)}\n </Heading>\n }\n >\n <ul>\n {Object.values(types).map((type) => (\n <li key={type.name}>\n <Link\n to={buildPathWithGlobalParams(\n buildTypePath(specKey, tag, type.name)\n )}\n >\n {highlightHTML(searchPattern, type.name)}\n </Link>\n </li>\n ))}\n </ul>\n </Accordion2>\n )\n }\n)`\n font-family: ${({ theme }) => theme.fonts.brand};\n\n [aria-controls]:hover,\n [aria-expanded='true'] {\n h4,\n svg {\n color: ${({ theme }) => theme.colors.key};\n }\n }\n\n [aria-expanded='true'] h4 {\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ul {\n border-left: dashed 1px ${({ theme }) => theme.colors.ui2};\n list-style: none;\n margin: 0;\n padding: 0;\n padding-left: ${({ theme }) => theme.space.xxsmall};\n padding-top: ${({ theme }) => theme.space.xxsmall};\n }\n\n [aria-current] {\n background: ${({ theme }) => theme.colors.ui1};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ${Link} {\n border-radius: ${({ theme }) => theme.radii.medium};\n display: block;\n overflow: hidden;\n padding: ${({ theme }) => theme.space.xsmall};\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover,\n &:focus,\n &.active {\n background: ${({ theme }) => theme.colors.ui1};\n }\n }\n`\n"],"file":"SideNavTypes.js"}
|
|
@@ -6,7 +6,6 @@ export { DocMarkdown } from './DocMarkdown';
|
|
|
6
6
|
export { DocPseudo } from './DocPseudo';
|
|
7
7
|
export { DocRateLimited } from './DocRateLimited';
|
|
8
8
|
export { DocReferences } from './DocReferences';
|
|
9
|
-
export { DocResponses } from './DocResponses';
|
|
10
9
|
export { DocSDKs } from './DocSDKs';
|
|
11
10
|
export { DocSdkUsage } from './DocSdkUsage';
|
|
12
11
|
export { DocSource } from './DocSource';
|
package/lib/components/index.js
CHANGED
|
@@ -63,12 +63,6 @@ Object.defineProperty(exports, "DocReferences", {
|
|
|
63
63
|
return _DocReferences.DocReferences;
|
|
64
64
|
}
|
|
65
65
|
});
|
|
66
|
-
Object.defineProperty(exports, "DocResponses", {
|
|
67
|
-
enumerable: true,
|
|
68
|
-
get: function get() {
|
|
69
|
-
return _DocResponses.DocResponses;
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
66
|
Object.defineProperty(exports, "DocSDKs", {
|
|
73
67
|
enumerable: true,
|
|
74
68
|
get: function get() {
|
|
@@ -182,8 +176,6 @@ var _DocRateLimited = require("./DocRateLimited");
|
|
|
182
176
|
|
|
183
177
|
var _DocReferences = require("./DocReferences");
|
|
184
178
|
|
|
185
|
-
var _DocResponses = require("./DocResponses");
|
|
186
|
-
|
|
187
179
|
var _DocSDKs = require("./DocSDKs");
|
|
188
180
|
|
|
189
181
|
var _DocSdkUsage = require("./DocSdkUsage");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nexport { ApixSection, Loader } from './common'\nexport { DocActivityType } from './DocActivityType'\nexport { DocCode } from './DocCode'\nexport { DocMethodSummary, DocSummaryStatus } from './DocMethodSummary'\nexport { DocMarkdown } from './DocMarkdown'\nexport { DocPseudo } from './DocPseudo'\nexport { DocRateLimited } from './DocRateLimited'\nexport { DocReferences } from './DocReferences'\nexport { DocSDKs } from './DocSDKs'\nexport { DocSdkUsage } from './DocSdkUsage'\nexport { DocSource } from './DocSource'\nexport { DocStatus } from './DocStatus'\nexport { DocTitle } from './DocTitle'\nexport { Header, HEADER_TOGGLE_LABEL } from './Header'\nexport { SideNav } from './SideNav'\nexport { ExploreType, ExploreProperty } from './ExploreType'\nexport { DocSchema } from './DocSchema'\nexport { DocTypeSummary } from './DocTypeSummary'\nexport { Link } from './Link'\nexport { ErrorBoundary } from './ErrorBoundary'\nexport { SelectorContainer } from './SelectorContainer'\nexport { Banner } from './Banner'\n"],"file":"index.js"}
|