@redocly/theme 0.60.0-next.1 → 0.60.0-next.3
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/lib/components/Buttons/ConnectMCPButton.js +3 -3
- package/lib/components/Buttons/variables.js +2 -0
- package/lib/components/Catalog/CatalogCardView/CatalogCard.js +4 -3
- package/lib/components/Catalog/CatalogEntity/CatalogEntity.js +5 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsGraph.js +2 -2
- package/lib/components/Catalog/CatalogEntity/CatalogEntityLinks.js +4 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityMetadata.js +1 -0
- package/lib/components/Catalog/CatalogEntity/CatalogEntityMethodAndPath.js +4 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/ContactProperty.js +4 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/DomainsProperty.js +4 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/EntityTypeProperty.js +4 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/FormatProperty.js +4 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/GitProperty.js +4 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/OwnersProperty.js +4 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/TagsProperty.js +4 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntityProperties/UserEmailProperty.js +4 -1
- package/lib/components/Catalog/CatalogEntity/CatalogEntitySchema.js +2 -2
- package/lib/components/Catalog/CatalogFilter/CatalogFilterDateRange.js +2 -2
- package/lib/components/Catalog/CatalogSelector.js +1 -1
- package/lib/components/Catalog/CatalogSortButton.js +4 -1
- package/lib/components/Catalog/CatalogTableView/CatalogTableHeaderCell.js +2 -2
- package/lib/components/Catalog/CatalogTableView/CatalogTableViewRow.js +2 -2
- package/lib/components/Catalog/CatalogTagsWithTooltip.js +5 -1
- package/lib/components/Catalog/variables.dark.js +1 -1
- package/lib/components/Catalog/variables.js +5 -3
- package/lib/components/CatalogClassic/variables.js +1 -1
- package/lib/components/CodeBlock/CodeBlock.js +3 -1
- package/lib/components/CodeBlock/CodeBlockTabs.js +3 -3
- package/lib/components/DatePicker/variables.js +2 -0
- package/lib/components/Feedback/Mood.js +2 -2
- package/lib/components/Feedback/Rating.js +2 -2
- package/lib/components/Filter/FilterDateRange.js +2 -2
- package/lib/components/Filter/FilterSelect.js +5 -1
- package/lib/components/JsonViewer/{helpers.js → Helpers.js} +1 -1
- package/lib/components/JsonViewer/JsonViewer.js +2 -2
- package/lib/components/Loaders/Loading.js +4 -1
- package/lib/components/Markdown/Markdown.js +9 -9
- package/lib/components/Markdown/styles/{baseTable.js → base-table.js} +1 -1
- package/lib/components/Markdown/styles/{headingAnchor.js → heading-anchor.js} +1 -1
- package/lib/components/Menu/MenuItem.js +5 -1
- package/lib/components/OpenApiDocs/hooks/AfterOpenApiOperation.js +1 -0
- package/lib/components/OpenApiDocs/hooks/AfterOpenApiTitle.js +1 -0
- package/lib/components/OpenApiDocs/hooks/BeforeOpenApiOperation.js +1 -0
- package/lib/components/OpenApiDocs/hooks/OpenApiFooter.js +3 -2
- package/lib/components/OpenApiDocs/hooks/OpenApiHeader.js +3 -2
- package/lib/components/Search/FilterFields/SearchFilterFieldSelect.js +2 -1
- package/lib/components/Search/FilterFields/SearchFilterFieldTags.js +7 -1
- package/lib/components/Search/SearchAiMessage.js +20 -18
- package/lib/components/Search/SearchAiNegativeFeedbackForm.d.ts +5 -3
- package/lib/components/Search/SearchAiNegativeFeedbackForm.js +5 -4
- package/lib/components/Search/SearchGroups.js +4 -1
- package/lib/components/Search/SearchHighlight.js +1 -0
- package/lib/components/Search/SearchItem.js +9 -2
- package/lib/components/Search/variables.js +2 -0
- package/lib/components/Segmented/Segmented.d.ts +1 -1
- package/lib/components/Segmented/Segmented.js +2 -2
- package/lib/components/Select/Select.d.ts +1 -1
- package/lib/components/Select/Select.js +4 -2
- package/lib/components/Select/SelectInput.d.ts +1 -1
- package/lib/components/Select/SelectInput.js +2 -0
- package/lib/components/SidebarActions/styled.d.ts +5 -4
- package/lib/components/SidebarActions/styled.js +9 -5
- package/lib/components/Tag/Tag.d.ts +1 -1
- package/lib/components/Tag/variables.dark.js +8 -0
- package/lib/components/Tag/variables.js +8 -0
- package/lib/components/Tooltip/Tooltip.js +2 -0
- package/lib/components/VersionPicker/VersionPicker.d.ts +1 -1
- package/lib/core/constants/index.d.ts +1 -0
- package/lib/core/constants/index.js +1 -0
- package/lib/core/constants/request-methods.d.ts +1 -0
- package/lib/core/constants/request-methods.js +14 -0
- package/lib/core/hoc/index.d.ts +1 -1
- package/lib/core/hoc/index.js +1 -1
- package/lib/core/hoc/{typedMemo.js → typed-memo.js} +1 -1
- package/lib/core/hooks/__tests__/mocks/mock-intersection-observer.d.ts +1 -1
- package/lib/core/hooks/__tests__/mocks/mock-intersection-observer.js +1 -3
- package/lib/core/hooks/catalog/{useCatalogEntities.js → use-catalog-entities.js} +1 -1
- package/lib/core/hooks/catalog/{useCatalogEntitySchema.d.ts → use-catalog-entity-schema.d.ts} +1 -1
- package/lib/core/hooks/catalog/{useCatalogEntitySchema.js → use-catalog-entity-schema.js} +1 -1
- package/lib/core/hooks/catalog/{useCatalogTableHeaderCellActions.js → use-catalog-table-header-cell-actions.js} +1 -1
- package/lib/core/hooks/catalog/{useCatalogTableViewRow.js → use-catalog-table-view-row.js} +1 -1
- package/lib/core/hooks/catalog/{useGraph.js → use-graph.js} +2 -2
- package/lib/core/hooks/code-walkthrough/use-code-walkthrough-controls.js +1 -0
- package/lib/core/hooks/code-walkthrough/use-code-walkthrough-steps.d.ts +1 -0
- package/lib/core/hooks/code-walkthrough/use-renderable-files.js +2 -2
- package/lib/core/hooks/index.d.ts +5 -2
- package/lib/core/hooks/index.js +5 -2
- package/lib/core/hooks/menu/use-collapse.js +1 -0
- package/lib/core/hooks/menu/use-mobile-menu-items.js +1 -0
- package/lib/core/hooks/use-mcp-config.js +9 -6
- package/lib/core/hooks/use-page-actions.js +5 -3
- package/lib/core/hooks/use-telemetry-fallback.js +1 -0
- package/lib/core/hooks/use-theme-config.js +1 -0
- package/lib/core/hooks/use-theme-hooks.js +1 -0
- package/lib/core/openapi/index.d.ts +2 -1
- package/lib/core/openapi/index.js +5 -3
- package/lib/core/templates/Markdown.js +1 -0
- package/lib/core/types/hooks.d.ts +6 -0
- package/lib/core/types/index.d.ts +20 -19
- package/lib/core/types/index.js +0 -19
- package/lib/core/types/l10n.d.ts +1 -1
- package/lib/core/types/search.d.ts +1 -0
- package/lib/core/types/sidebar.d.ts +1 -0
- package/lib/core/utils/{dynamic.js → Dynamic.js} +1 -1
- package/lib/core/utils/{get-file-icon.js → GetFileIcon.js} +1 -1
- package/lib/core/utils/args-typecheck.d.ts +2 -2
- package/lib/core/utils/clipboard-service.js +2 -0
- package/lib/core/utils/get-operation-color.d.ts +7 -0
- package/lib/core/utils/get-operation-color.js +13 -0
- package/lib/core/utils/get-user-agent.js +1 -0
- package/lib/core/utils/index.d.ts +3 -2
- package/lib/core/utils/index.js +3 -2
- package/lib/core/utils/js-utils.d.ts +1 -1
- package/lib/core/utils/load-and-navigate.js +1 -0
- package/lib/core/utils/markdoc.js +1 -0
- package/lib/core/utils/parse-style-string.js +1 -0
- package/lib/ext/configure.d.ts +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +2 -3
- package/lib/layouts/ThreePanelLayout.js +4 -4
- package/lib/markdoc/components/Cards/variables.dark.js +2 -0
- package/lib/markdoc/components/Cards/variables.js +2 -0
- package/lib/markdoc/components/CodeWalkthrough/CodePanelHeader.js +1 -0
- package/lib/markdoc/tags/code-walkthrough.js +1 -0
- package/lib/markdoc/tags/html.js +1 -0
- package/package.json +2 -2
- package/src/components/Button/Button.tsx +1 -0
- package/src/components/Buttons/ConnectMCPButton.tsx +1 -1
- package/src/components/Buttons/variables.ts +2 -0
- package/src/components/Catalog/CatalogCardView/CatalogCard.tsx +4 -3
- package/src/components/Catalog/CatalogEntity/CatalogEntity.tsx +4 -0
- package/src/components/Catalog/CatalogEntity/CatalogEntityGraph/CatalogEntityRelationsGraph.tsx +1 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityLinks.tsx +5 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityMetadata.tsx +1 -0
- package/src/components/Catalog/CatalogEntity/CatalogEntityMethodAndPath.tsx +5 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/ContactProperty.tsx +5 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/DomainsProperty.tsx +5 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/EntityTypeProperty.tsx +5 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/FormatProperty.tsx +5 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/GitProperty.tsx +5 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/OwnersProperty.tsx +5 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/TagsProperty.tsx +5 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntityProperties/UserEmailProperty.tsx +5 -1
- package/src/components/Catalog/CatalogEntity/CatalogEntitySchema.tsx +3 -1
- package/src/components/Catalog/CatalogFilter/CatalogFilterDateRange.tsx +2 -2
- package/src/components/Catalog/CatalogSelector.tsx +2 -2
- package/src/components/Catalog/CatalogSortButton.tsx +5 -1
- package/src/components/Catalog/CatalogTableView/CatalogTableHeaderCell.tsx +1 -1
- package/src/components/Catalog/CatalogTableView/CatalogTableViewRow.tsx +1 -1
- package/src/components/Catalog/CatalogTagsWithTooltip.tsx +8 -1
- package/src/components/Catalog/variables.dark.ts +1 -1
- package/src/components/Catalog/variables.ts +5 -3
- package/src/components/CatalogClassic/CatalogClassicInfoBlock.tsx +1 -0
- package/src/components/CatalogClassic/variables.ts +1 -1
- package/src/components/CodeBlock/CodeBlock.tsx +4 -0
- package/src/components/CodeBlock/CodeBlockControls.tsx +1 -0
- package/src/components/CodeBlock/CodeBlockTabs.tsx +1 -1
- package/src/components/DatePicker/variables.ts +3 -1
- package/src/components/Feedback/Mood.tsx +2 -2
- package/src/components/Feedback/Rating.tsx +2 -2
- package/src/components/Filter/FilterDateRange.tsx +2 -2
- package/src/components/Filter/FilterSelect.tsx +1 -0
- package/src/components/JsonViewer/{helpers.tsx → Helpers.tsx} +2 -0
- package/src/components/JsonViewer/JsonViewer.tsx +2 -1
- package/src/components/LastUpdated/LastUpdated.tsx +1 -0
- package/src/components/Loaders/Loading.tsx +5 -1
- package/src/components/Markdown/Markdown.tsx +2 -2
- package/src/components/Menu/MenuItem.tsx +6 -2
- package/src/components/OpenApiDocs/hooks/AfterOpenApiOperation.tsx +1 -1
- package/src/components/OpenApiDocs/hooks/AfterOpenApiTitle.tsx +1 -1
- package/src/components/OpenApiDocs/hooks/BeforeOpenApiOperation.tsx +1 -1
- package/src/components/OpenApiDocs/hooks/OpenApiFooter.tsx +1 -1
- package/src/components/OpenApiDocs/hooks/OpenApiHeader.tsx +1 -1
- package/src/components/Search/FilterFields/SearchFilterFieldSelect.tsx +4 -1
- package/src/components/Search/FilterFields/SearchFilterFieldTags.tsx +7 -1
- package/src/components/Search/SearchAiMessage.tsx +42 -37
- package/src/components/Search/SearchAiNegativeFeedbackForm.tsx +7 -5
- package/src/components/Search/SearchGroups.tsx +4 -1
- package/src/components/Search/SearchHighlight.tsx +1 -0
- package/src/components/Search/SearchItem.tsx +15 -3
- package/src/components/Search/variables.ts +2 -0
- package/src/components/Segmented/Segmented.tsx +2 -2
- package/src/components/Select/Select.tsx +8 -4
- package/src/components/Select/SelectInput.tsx +10 -1
- package/src/components/SidebarActions/{styled.tsx → styled.ts} +11 -4
- package/src/components/Tag/Tag.tsx +2 -1
- package/src/components/Tag/variables.dark.ts +8 -0
- package/src/components/Tag/variables.ts +8 -0
- package/src/components/Tooltip/Tooltip.tsx +2 -1
- package/src/components/VersionPicker/VersionPicker.tsx +2 -1
- package/src/core/constants/index.ts +1 -0
- package/src/core/constants/request-methods.ts +10 -0
- package/src/core/hoc/index.ts +1 -1
- package/src/core/hooks/__mocks__/use-theme-hooks.ts +2 -2
- package/src/core/hooks/__tests__/mocks/mock-intersection-observer.ts +9 -8
- package/src/core/hooks/catalog/{useCatalogEntitySchema.ts → use-catalog-entity-schema.ts} +3 -3
- package/src/core/hooks/catalog/{useGraph.ts → use-graph.ts} +1 -1
- package/src/core/hooks/code-walkthrough/__mocks__/MockIntersectionObserver.ts +1 -1
- package/src/core/hooks/code-walkthrough/__mocks__/mock-intersection-observer.ts +24 -0
- package/src/core/hooks/code-walkthrough/use-code-walkthrough-controls.ts +1 -0
- package/src/core/hooks/code-walkthrough/use-code-walkthrough-steps.ts +2 -2
- package/src/core/hooks/code-walkthrough/use-renderable-files.ts +1 -1
- package/src/core/hooks/index.ts +5 -2
- package/src/core/hooks/menu/use-collapse.ts +3 -3
- package/src/core/hooks/menu/use-mobile-menu-items.ts +1 -0
- package/src/core/hooks/use-mcp-config.ts +11 -5
- package/src/core/hooks/use-page-actions.ts +3 -1
- package/src/core/hooks/use-telemetry-fallback.ts +1 -0
- package/src/core/hooks/use-theme-config.ts +1 -0
- package/src/core/hooks/use-theme-hooks.ts +2 -1
- package/src/core/openapi/index.ts +2 -1
- package/src/core/templates/Markdown.tsx +1 -0
- package/src/core/types/catalog.ts +3 -1
- package/src/core/types/filter.ts +1 -0
- package/src/core/types/hooks.ts +6 -0
- package/src/core/types/index.ts +20 -19
- package/src/core/types/l10n.ts +24 -1
- package/src/core/types/search.ts +2 -1
- package/src/core/types/segmented.ts +1 -0
- package/src/core/types/select.ts +1 -0
- package/src/core/types/sidebar.ts +1 -0
- package/src/core/utils/args-typecheck.ts +2 -2
- package/src/core/utils/clipboard-service.ts +2 -0
- package/src/core/utils/get-operation-color.ts +18 -0
- package/src/core/utils/get-user-agent.ts +1 -0
- package/src/core/utils/index.ts +3 -2
- package/src/core/utils/js-utils.ts +1 -1
- package/src/core/utils/load-and-navigate.ts +1 -0
- package/src/core/utils/markdoc.ts +1 -0
- package/src/core/utils/parse-style-string.ts +1 -0
- package/src/ext/configure.ts +2 -1
- package/src/index.ts +3 -3
- package/src/layouts/ThreePanelLayout.tsx +1 -1
- package/src/markdoc/components/Cards/variables.dark.ts +2 -0
- package/src/markdoc/components/Cards/variables.ts +3 -1
- package/src/markdoc/components/CodeWalkthrough/CodePanelHeader.tsx +1 -1
- package/src/markdoc/tags/code-walkthrough.ts +2 -0
- package/src/markdoc/tags/html.ts +1 -0
- package/lib/core/hooks/__mocks__/index.d.ts +0 -28
- package/lib/core/hooks/__mocks__/index.js +0 -45
- package/lib/core/hooks/__mocks__/search/use-recent-searches.d.ts +0 -5
- package/lib/core/hooks/__mocks__/search/use-recent-searches.js +0 -13
- package/lib/core/hooks/__mocks__/search/use-search-filter.d.ts +0 -8
- package/lib/core/hooks/__mocks__/search/use-search-filter.js +0 -15
- package/lib/core/hooks/__mocks__/search/use-suggested-pages.d.ts +0 -4
- package/lib/core/hooks/__mocks__/search/use-suggested-pages.js +0 -13
- package/lib/core/hooks/__mocks__/use-controlled-state.d.ts +0 -1
- package/lib/core/hooks/__mocks__/use-controlled-state.js +0 -7
- package/lib/core/hooks/__mocks__/use-element-size.d.ts +0 -4
- package/lib/core/hooks/__mocks__/use-element-size.js +0 -9
- package/lib/core/hooks/__mocks__/use-input-key-commands.d.ts +0 -3
- package/lib/core/hooks/__mocks__/use-input-key-commands.js +0 -8
- package/lib/core/hooks/__mocks__/use-mobile-menu.d.ts +0 -1
- package/lib/core/hooks/__mocks__/use-mobile-menu.js +0 -7
- package/lib/core/hooks/__mocks__/use-theme-config.d.ts +0 -8
- package/lib/core/hooks/__mocks__/use-theme-config.js +0 -13
- package/lib/core/hooks/__mocks__/use-theme-hooks.d.ts +0 -69
- package/lib/core/hooks/__mocks__/use-theme-hooks.js +0 -94
- package/lib/core/hooks/__mocks__/use-time-ago.d.ts +0 -3
- package/lib/core/hooks/__mocks__/use-time-ago.js +0 -8
- package/lib/core/hooks/code-walkthrough/__mocks__/MockIntersectionObserver.d.ts +0 -10
- package/lib/core/hooks/code-walkthrough/__mocks__/MockIntersectionObserver.js +0 -56
- package/lib/core/hooks/menu/__mocks__/use-mobile-menu-items.d.ts +0 -1
- package/lib/core/hooks/menu/__mocks__/use-mobile-menu-items.js +0 -35
- /package/lib/components/JsonViewer/{helpers.d.ts → Helpers.d.ts} +0 -0
- /package/lib/components/Markdown/styles/{baseTable.d.ts → base-table.d.ts} +0 -0
- /package/lib/components/Markdown/styles/{headingAnchor.d.ts → heading-anchor.d.ts} +0 -0
- /package/lib/core/hoc/{typedMemo.d.ts → typed-memo.d.ts} +0 -0
- /package/lib/core/hooks/catalog/{useCatalogEntities.d.ts → use-catalog-entities.d.ts} +0 -0
- /package/lib/core/hooks/catalog/{useCatalogTableHeaderCellActions.d.ts → use-catalog-table-header-cell-actions.d.ts} +0 -0
- /package/lib/core/hooks/catalog/{useCatalogTableViewRow.d.ts → use-catalog-table-view-row.d.ts} +0 -0
- /package/lib/core/hooks/catalog/{useGraph.d.ts → use-graph.d.ts} +0 -0
- /package/lib/core/utils/{dynamic.d.ts → Dynamic.d.ts} +0 -0
- /package/lib/core/utils/{get-file-icon.d.ts → GetFileIcon.d.ts} +0 -0
- /package/src/components/Markdown/styles/{baseTable.ts → base-table.ts} +0 -0
- /package/src/components/Markdown/styles/{headingAnchor.ts → heading-anchor.ts} +0 -0
- /package/src/components/Panel/{PanelBody.ts → PanelBody.tsx} +0 -0
- /package/src/components/Panel/{PanelHeader.ts → PanelHeader.tsx} +0 -0
- /package/src/components/Panel/{PanelHeaderTitle.ts → PanelHeaderTitle.tsx} +0 -0
- /package/src/components/StatusCode/{StatusCode.ts → StatusCode.tsx} +0 -0
- /package/src/components/Typography/{CompactTypography.ts → CompactTypography.tsx} +0 -0
- /package/src/components/Typography/{Emphasis.ts → Emphasis.tsx} +0 -0
- /package/src/components/Typography/{H1.ts → H1.tsx} +0 -0
- /package/src/components/Typography/{H2.ts → H2.tsx} +0 -0
- /package/src/components/Typography/{H3.ts → H3.tsx} +0 -0
- /package/src/components/Typography/{H4.ts → H4.tsx} +0 -0
- /package/src/components/Typography/{SectionHeader.ts → SectionHeader.tsx} +0 -0
- /package/src/components/Typography/{Typography.ts → Typography.tsx} +0 -0
- /package/src/core/hoc/{typedMemo.ts → typed-memo.ts} +0 -0
- /package/src/core/hooks/catalog/{useCatalogEntities.ts → use-catalog-entities.ts} +0 -0
- /package/src/core/hooks/catalog/{useCatalogTableHeaderCellActions.ts → use-catalog-table-header-cell-actions.ts} +0 -0
- /package/src/core/hooks/catalog/{useCatalogTableViewRow.ts → use-catalog-table-view-row.ts} +0 -0
- /package/src/core/utils/{dynamic.tsx → Dynamic.tsx} +0 -0
- /package/src/core/utils/{get-file-icon.tsx → GetFileIcon.tsx} +0 -0
|
@@ -2,8 +2,8 @@ import React, { useState, useEffect } from 'react';
|
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
|
|
4
4
|
import type { JSX } from 'react';
|
|
5
|
-
import type { FeedbackType } from '@redocly/theme/core/types';
|
|
6
5
|
|
|
6
|
+
import { FeedbackType } from '@redocly/theme/core/types';
|
|
7
7
|
import { Button } from '@redocly/theme/components/Button/Button';
|
|
8
8
|
import { CloseIcon } from '@redocly/theme/icons/CloseIcon/CloseIcon';
|
|
9
9
|
import { ArrowLeftIcon } from '@redocly/theme/icons/ArrowLeftIcon/ArrowLeftIcon';
|
|
@@ -12,8 +12,9 @@ import { useThemeHooks } from '@redocly/theme/core/hooks';
|
|
|
12
12
|
|
|
13
13
|
export type SearchAiNegativeFeedbackFormProps = {
|
|
14
14
|
messageId: string;
|
|
15
|
-
onClose: (messageId: string, feedback: FeedbackType
|
|
15
|
+
onClose: (messageId: string, feedback: FeedbackType, reason?: string) => void;
|
|
16
16
|
onSubmit: (reason: string) => void;
|
|
17
|
+
formRef?: React.Ref<HTMLDivElement>;
|
|
17
18
|
};
|
|
18
19
|
|
|
19
20
|
const NEGATIVE_FEEDBACK_DEFAULT_REASONS = [
|
|
@@ -27,6 +28,7 @@ export function SearchAiNegativeFeedbackForm({
|
|
|
27
28
|
messageId,
|
|
28
29
|
onClose,
|
|
29
30
|
onSubmit,
|
|
31
|
+
formRef,
|
|
30
32
|
}: SearchAiNegativeFeedbackFormProps): JSX.Element {
|
|
31
33
|
const { useTranslate } = useThemeHooks();
|
|
32
34
|
const { translate } = useTranslate();
|
|
@@ -54,7 +56,7 @@ export function SearchAiNegativeFeedbackForm({
|
|
|
54
56
|
}, [showMoreInput]);
|
|
55
57
|
|
|
56
58
|
return (
|
|
57
|
-
<FeedbackFormWrapper data-component-name="Search/SearchAiNegativeFeedbackForm">
|
|
59
|
+
<FeedbackFormWrapper data-component-name="Search/SearchAiNegativeFeedbackForm" ref={formRef}>
|
|
58
60
|
<FeedbackHeader>
|
|
59
61
|
{showMoreInput ? (
|
|
60
62
|
<BackButton
|
|
@@ -72,7 +74,7 @@ export function SearchAiNegativeFeedbackForm({
|
|
|
72
74
|
variant="text"
|
|
73
75
|
size="small"
|
|
74
76
|
icon={<CloseIcon />}
|
|
75
|
-
onClick={() => onClose(messageId, undefined)}
|
|
77
|
+
onClick={() => onClose(messageId, FeedbackType.Dislike, undefined)}
|
|
76
78
|
aria-label="Close feedback form"
|
|
77
79
|
/>
|
|
78
80
|
</FeedbackHeader>
|
|
@@ -85,7 +87,7 @@ export function SearchAiNegativeFeedbackForm({
|
|
|
85
87
|
</Button>
|
|
86
88
|
))}
|
|
87
89
|
<Button variant="outlined" size="small" onClick={() => setShowMoreInput(true)}>
|
|
88
|
-
More...
|
|
90
|
+
{translate('search.ai.feedback.more', 'More...')}
|
|
89
91
|
</Button>
|
|
90
92
|
</FeedbackReasonsWrapper>
|
|
91
93
|
) : (
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
type SearchFilterItem,
|
|
10
10
|
} from '@redocly/theme/core/types';
|
|
11
11
|
import { Tag } from '@redocly/theme/components/Tag/Tag';
|
|
12
|
+
import { useThemeHooks } from '@redocly/theme/core/hooks';
|
|
12
13
|
|
|
13
14
|
type SearchGroupsProps = {
|
|
14
15
|
facets: SearchFacet[];
|
|
@@ -26,6 +27,8 @@ export function SearchGroups({
|
|
|
26
27
|
onQuickFilterReset,
|
|
27
28
|
}: SearchGroupsProps): JSX.Element {
|
|
28
29
|
const groupFacets = facets.filter((facet) => facet.field === groupField);
|
|
30
|
+
const { useTranslate } = useThemeHooks();
|
|
31
|
+
const { translate } = useTranslate();
|
|
29
32
|
|
|
30
33
|
const handleGroupTagClick = (
|
|
31
34
|
value: string,
|
|
@@ -47,7 +50,7 @@ export function SearchGroups({
|
|
|
47
50
|
onClick={() => searchFilter.some((item) => item.isQuickFilter) && onQuickFilterReset()}
|
|
48
51
|
selectable
|
|
49
52
|
>
|
|
50
|
-
All
|
|
53
|
+
{translate('search.groups.all', 'All')}
|
|
51
54
|
</GroupTag>
|
|
52
55
|
<Divider />
|
|
53
56
|
{groupFacets.flatMap((facet) =>
|
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
|
|
4
4
|
import type { JSX } from 'react';
|
|
5
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
5
6
|
function slicer(str: string, arr: string[]): any[] {
|
|
6
7
|
const markOpenIndex = str.indexOf('<mark>');
|
|
7
8
|
const markCloseIndex = str.indexOf('</mark>');
|
|
@@ -9,8 +9,9 @@ import { Link } from '@redocly/theme/components/Link/Link';
|
|
|
9
9
|
import { Image } from '@redocly/theme/components/Image/Image';
|
|
10
10
|
import { searchHighlight } from '@redocly/theme/components/Search/SearchHighlight';
|
|
11
11
|
import { Badge } from '@redocly/theme/components/Badge/Badge';
|
|
12
|
-
import { trimText } from '@redocly/theme/core/utils';
|
|
12
|
+
import { trimText, getOperationColor } from '@redocly/theme/core/utils';
|
|
13
13
|
import { ReturnKeyIcon } from '@redocly/theme/icons/ReturnKeyIcon/ReturnKeyIcon';
|
|
14
|
+
import { useThemeHooks } from '@redocly/theme/core/hooks';
|
|
14
15
|
|
|
15
16
|
type ActiveItem<T> = T & { active?: boolean };
|
|
16
17
|
export type SearchItemProps = {
|
|
@@ -32,6 +33,8 @@ export function SearchItem({
|
|
|
32
33
|
innerRef,
|
|
33
34
|
}: SearchItemProps): JSX.Element {
|
|
34
35
|
const ref = useRef<HTMLAnchorElement>(null);
|
|
36
|
+
const { useTranslate } = useThemeHooks();
|
|
37
|
+
const { translate } = useTranslate();
|
|
35
38
|
|
|
36
39
|
useEffect(() => {
|
|
37
40
|
if (item.active) {
|
|
@@ -45,6 +48,11 @@ export function SearchItem({
|
|
|
45
48
|
highlight.parameters && highlight.parameters.length ? highlight.parameters[0] : null;
|
|
46
49
|
const shouldShowPath = document.path && document.path?.length > 1;
|
|
47
50
|
|
|
51
|
+
const httpColor = getOperationColor({
|
|
52
|
+
isAdditionalOperation: document.isAdditionalOperation,
|
|
53
|
+
httpVerb: document.httpMethod || '',
|
|
54
|
+
});
|
|
55
|
+
|
|
48
56
|
return (
|
|
49
57
|
<SearchItemWrapper
|
|
50
58
|
className={className}
|
|
@@ -74,7 +82,7 @@ export function SearchItem({
|
|
|
74
82
|
)}
|
|
75
83
|
{document.httpMethod ? (
|
|
76
84
|
<SearchItemOperation>
|
|
77
|
-
<SearchItemOperationTag color={
|
|
85
|
+
<SearchItemOperationTag color={httpColor}>
|
|
78
86
|
{document.httpMethod.toUpperCase()}
|
|
79
87
|
</SearchItemOperationTag>
|
|
80
88
|
{highlight.httpPath ? searchHighlight(highlight.httpPath) : document.httpPath}
|
|
@@ -84,7 +92,11 @@ export function SearchItem({
|
|
|
84
92
|
<SearchItemTitle>
|
|
85
93
|
{highlight.title ? searchHighlight(highlight.title) : document.title}
|
|
86
94
|
</SearchItemTitle>
|
|
87
|
-
{document.deprecated ?
|
|
95
|
+
{document.deprecated ? (
|
|
96
|
+
<SearchItemBadge deprecated>
|
|
97
|
+
{translate('search.searchItem.deprecated', 'Deprecated')}
|
|
98
|
+
</SearchItemBadge>
|
|
99
|
+
) : null}
|
|
88
100
|
{document.badges
|
|
89
101
|
? document.badges.map(({ name, color }) => (
|
|
90
102
|
<SearchItemBadge color={color || 'var(--color-info-base)'} key={name}>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { css } from 'styled-components';
|
|
2
2
|
|
|
3
|
+
/* eslint-disable theme/no-raw-colors-in-styles */
|
|
3
4
|
export const search = css`
|
|
4
5
|
/**
|
|
5
6
|
* @tokens Search
|
|
@@ -261,3 +262,4 @@ export const search = css`
|
|
|
261
262
|
|
|
262
263
|
// @tokens End
|
|
263
264
|
`;
|
|
265
|
+
/* eslint-enable theme/no-raw-colors-in-styles */
|
|
@@ -2,9 +2,9 @@ import React, { forwardRef } from 'react';
|
|
|
2
2
|
import styled, { css } from 'styled-components';
|
|
3
3
|
|
|
4
4
|
import type { ForwardedRef, ReactElement } from 'react';
|
|
5
|
-
import type { SegmentedProps } from '@redocly/theme/core/types
|
|
5
|
+
import type { SegmentedProps } from '@redocly/theme/core/types';
|
|
6
6
|
|
|
7
|
-
import { typedMemo } from '@redocly/theme/core/hoc/
|
|
7
|
+
import { typedMemo } from '@redocly/theme/core/hoc/typed-memo';
|
|
8
8
|
|
|
9
9
|
function SegmentedComponent<T>(
|
|
10
10
|
{ options, onChange, value, className = '', size = 'regular' }: SegmentedProps<T>,
|
|
@@ -2,14 +2,14 @@ import React, { Fragment, useEffect, useId, useRef, useState } from 'react';
|
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
|
|
4
4
|
import type { JSX } from 'react';
|
|
5
|
-
import type { SelectOption, SelectProps } from '@redocly/theme/core/types
|
|
5
|
+
import type { SelectOption, SelectProps } from '@redocly/theme/core/types';
|
|
6
6
|
|
|
7
7
|
import { CheckmarkIcon } from '@redocly/theme/icons/CheckmarkIcon/CheckmarkIcon';
|
|
8
8
|
import { SelectInput } from '@redocly/theme/components/Select/SelectInput';
|
|
9
9
|
import { Dropdown } from '@redocly/theme/components/Dropdown/Dropdown';
|
|
10
10
|
import { DropdownMenu } from '@redocly/theme/components/Dropdown/DropdownMenu';
|
|
11
11
|
import { DropdownMenuItem } from '@redocly/theme/components/Dropdown/DropdownMenuItem';
|
|
12
|
-
import { useOutsideClick } from '@redocly/theme/core/hooks';
|
|
12
|
+
import { useOutsideClick, useThemeHooks } from '@redocly/theme/core/hooks';
|
|
13
13
|
|
|
14
14
|
export function Select<T>(props: SelectProps<T>): JSX.Element {
|
|
15
15
|
const {
|
|
@@ -37,6 +37,8 @@ export function Select<T>(props: SelectProps<T>): JSX.Element {
|
|
|
37
37
|
renderInput,
|
|
38
38
|
renderDivider,
|
|
39
39
|
} = props;
|
|
40
|
+
const { useTranslate } = useThemeHooks();
|
|
41
|
+
const { translate } = useTranslate();
|
|
40
42
|
|
|
41
43
|
const getSelectedOptionsFromPropsValue = () => {
|
|
42
44
|
const values = Array.isArray(value) ? value : [value];
|
|
@@ -231,7 +233,9 @@ export function Select<T>(props: SelectProps<T>): JSX.Element {
|
|
|
231
233
|
>
|
|
232
234
|
<SelectDropdownMenu role="listbox" footer={footer}>
|
|
233
235
|
{filteredOptions.length === 0 ? (
|
|
234
|
-
<DropdownMenuItem disabled>
|
|
236
|
+
<DropdownMenuItem disabled>
|
|
237
|
+
{translate('select.noResults', 'No results')}
|
|
238
|
+
</DropdownMenuItem>
|
|
235
239
|
) : (
|
|
236
240
|
filteredOptions.map((option, index) => {
|
|
237
241
|
return (
|
|
@@ -258,7 +262,7 @@ export function Select<T>(props: SelectProps<T>): JSX.Element {
|
|
|
258
262
|
{renderDivider && index !== options.length - 1 ? renderDivider() : null}
|
|
259
263
|
</Fragment>
|
|
260
264
|
);
|
|
261
|
-
}) || 'No results'
|
|
265
|
+
}) || translate('select.noResults', 'No results')
|
|
262
266
|
)}
|
|
263
267
|
</SelectDropdownMenu>
|
|
264
268
|
</SelectDropdown>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import styled from 'styled-components';
|
|
2
2
|
import React, { useRef } from 'react';
|
|
3
3
|
|
|
4
|
-
import type { SelectOption } from '@redocly/theme/core/types
|
|
4
|
+
import type { SelectOption } from '@redocly/theme/core/types';
|
|
5
5
|
|
|
6
6
|
import { Tag } from '@redocly/theme/components/Tag/Tag';
|
|
7
7
|
import { CloseIcon } from '@redocly/theme/icons/CloseIcon/CloseIcon';
|
|
@@ -11,7 +11,9 @@ type SelectInputProps<T> = {
|
|
|
11
11
|
id?: string;
|
|
12
12
|
listboxId?: string;
|
|
13
13
|
selectedOptions: SelectOption<T>[];
|
|
14
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
14
15
|
searchValue: any;
|
|
16
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
15
17
|
stickyValue: any;
|
|
16
18
|
onlyIcon?: boolean;
|
|
17
19
|
icon?: React.ReactNode;
|
|
@@ -21,10 +23,15 @@ type SelectInputProps<T> = {
|
|
|
21
23
|
searchable?: boolean;
|
|
22
24
|
clearable?: boolean;
|
|
23
25
|
inputRef?: React.ForwardedRef<HTMLInputElement>;
|
|
26
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
24
27
|
clearHandler?: (value?: any) => void;
|
|
28
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
25
29
|
inputBlurHandler?: (e?: any) => void;
|
|
30
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
26
31
|
inputFocusHandler?: (e?: any) => void;
|
|
32
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
27
33
|
searchHandler?: (e?: any) => void;
|
|
34
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
28
35
|
clickHandler?: (e?: any) => void;
|
|
29
36
|
};
|
|
30
37
|
|
|
@@ -50,11 +57,13 @@ export function SelectInput<T>(props: SelectInputProps<T>): React.ReactNode {
|
|
|
50
57
|
} = props;
|
|
51
58
|
const inputRef = useRef<HTMLInputElement | null>(null);
|
|
52
59
|
|
|
60
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
53
61
|
const onChangeHandler = (e: any) => {
|
|
54
62
|
searchHandler?.(e);
|
|
55
63
|
inputRef.current?.focus();
|
|
56
64
|
};
|
|
57
65
|
|
|
66
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
58
67
|
const onKeyDownHandler = (e: any) => {
|
|
59
68
|
if (e.key === 'Backspace' && !searchValue && selectedOptions.length) {
|
|
60
69
|
clearHandler?.(selectedOptions[selectedOptions.length - 1]);
|
|
@@ -3,7 +3,7 @@ import styled, { css } from 'styled-components';
|
|
|
3
3
|
import { breakpoints } from '@redocly/theme/core/utils';
|
|
4
4
|
import { Tooltip } from '@redocly/theme/components/Tooltip/Tooltip';
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
const StyledChangeViewButton = styled.span<{ collapsedSidebar?: boolean }>`
|
|
7
7
|
display: flex;
|
|
8
8
|
position: relative;
|
|
9
9
|
flex-direction: ${({ collapsedSidebar }) => (collapsedSidebar ? 'column' : 'row')};
|
|
@@ -16,7 +16,7 @@ export const StyledChangeViewButton = styled.span<{ collapsedSidebar?: boolean }
|
|
|
16
16
|
padding: calc(var(--spacing-unit) / 2);
|
|
17
17
|
`;
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
const StyledChangeViewButtonWrap = styled(Tooltip)<{ active?: boolean }>`
|
|
20
20
|
width: 20px;
|
|
21
21
|
height: 20px;
|
|
22
22
|
border-radius: var(--border-radius);
|
|
@@ -26,7 +26,7 @@ export const StyledChangeViewButtonWrap = styled(Tooltip)<{ active?: boolean }>`
|
|
|
26
26
|
background-color: ${({ active }) => active && 'var(--segmented-buttons-bg-color-inner)'};
|
|
27
27
|
`;
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
const ControlsWrap = styled.span<{
|
|
30
30
|
iconCount?: number;
|
|
31
31
|
isCollapsed?: boolean;
|
|
32
32
|
}>`
|
|
@@ -59,10 +59,17 @@ export const ControlsWrap = styled.span<{
|
|
|
59
59
|
}
|
|
60
60
|
`;
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
const ControlsWrapChangeLayoutButtons = styled.span<{ isCollapsed?: boolean }>`
|
|
63
63
|
display: flex;
|
|
64
64
|
bottom: 0;
|
|
65
65
|
flex-direction: ${({ isCollapsed }) => (isCollapsed ? 'column-reverse' : 'row')};
|
|
66
66
|
gap: ${({ isCollapsed }) => (isCollapsed ? '10px' : 'var(--spacing-xs)')};
|
|
67
67
|
align-items: center;
|
|
68
68
|
`;
|
|
69
|
+
|
|
70
|
+
export {
|
|
71
|
+
StyledChangeViewButton,
|
|
72
|
+
StyledChangeViewButtonWrap,
|
|
73
|
+
ControlsWrapChangeLayoutButtons,
|
|
74
|
+
ControlsWrap,
|
|
75
|
+
};
|
|
@@ -12,7 +12,7 @@ type SubjectStatusColor = 'active' | 'draft' | 'deprecated' | 'product';
|
|
|
12
12
|
type HttpColor = 'get' | 'post' | 'put' | 'delete' | 'option' | 'patch' | 'head' | 'hook' | 'link';
|
|
13
13
|
type ActionColor = 'receive' | 'send';
|
|
14
14
|
type ChannelColor = 'channel';
|
|
15
|
-
type HttpStatusColor = 'http-deprecated';
|
|
15
|
+
type HttpStatusColor = 'http-deprecated' | 'http-additional-operation';
|
|
16
16
|
type StatusColor =
|
|
17
17
|
| DefaultStatusColor
|
|
18
18
|
| ActionStatusColor
|
|
@@ -120,6 +120,7 @@ export function Tag({
|
|
|
120
120
|
return React.cloneElement(element, {
|
|
121
121
|
...props,
|
|
122
122
|
children: truncateText(props.children, maxLen),
|
|
123
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
123
124
|
} as any);
|
|
124
125
|
}
|
|
125
126
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { css } from 'styled-components';
|
|
2
2
|
|
|
3
|
+
/* eslint-disable theme/no-raw-colors-in-styles */
|
|
3
4
|
export const tagDarkMode = css`
|
|
4
5
|
--tag-close-button-bg-color-focus: var(--color-warm-grey-6); // @presenter Color
|
|
5
6
|
|
|
@@ -229,6 +230,12 @@ export const tagDarkMode = css`
|
|
|
229
230
|
--tag-bg-color-hover: #373776; // @presenter Color
|
|
230
231
|
}
|
|
231
232
|
|
|
233
|
+
.tag-http-additional-operation {
|
|
234
|
+
--tag-color: #FCAB69; // @presenter Color
|
|
235
|
+
--tag-bg-color: #523926; // @presenter Color
|
|
236
|
+
--tag-bg-color-hover: #694830; // @presenter Color
|
|
237
|
+
}
|
|
238
|
+
|
|
232
239
|
.tag-receive {
|
|
233
240
|
--tag-color: #88CF82; // @presenter Color
|
|
234
241
|
--tag-bg-color: #23421F; // @presenter Color
|
|
@@ -276,3 +283,4 @@ export const tagDarkMode = css`
|
|
|
276
283
|
--tag-bg-color-hover: transparent;
|
|
277
284
|
}
|
|
278
285
|
`;
|
|
286
|
+
/* eslint-enable theme/no-raw-colors-in-styles */
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { css } from 'styled-components';
|
|
2
2
|
|
|
3
|
+
/* eslint-disable theme/no-raw-colors-in-styles */
|
|
3
4
|
export const tag = css`
|
|
4
5
|
/**
|
|
5
6
|
* @tokens Tag borders
|
|
@@ -310,6 +311,12 @@ export const tag = css`
|
|
|
310
311
|
--tag-color: var(--text-color-disabled); // @presenter Color
|
|
311
312
|
}
|
|
312
313
|
|
|
314
|
+
.tag-http-additional-operation {
|
|
315
|
+
--tag-color: #F97316; // @presenter Color
|
|
316
|
+
--tag-bg-color: #faede3; // @presenter Color
|
|
317
|
+
--tag-bg-color-hover: #fae2cf; // @presenter Color
|
|
318
|
+
}
|
|
319
|
+
|
|
313
320
|
.tag-send {
|
|
314
321
|
--tag-color: #4144F6; // @presenter Color
|
|
315
322
|
--tag-bg-color: #ECECFE; // @presenter Color
|
|
@@ -393,3 +400,4 @@ export const tag = css`
|
|
|
393
400
|
|
|
394
401
|
// @tokens End
|
|
395
402
|
`;
|
|
403
|
+
/* eslint-enable theme/no-raw-colors-in-styles */
|
|
@@ -259,7 +259,7 @@ const TooltipWrapper = styled.div`
|
|
|
259
259
|
position: relative;
|
|
260
260
|
display: flex;
|
|
261
261
|
`;
|
|
262
|
-
|
|
262
|
+
/* eslint-disable theme/no-raw-colors-in-styles */
|
|
263
263
|
const TooltipBody = styled.span<
|
|
264
264
|
Pick<Required<TooltipProps>, 'placement' | 'withArrow' | 'arrowPosition'> & { width?: string }
|
|
265
265
|
>`
|
|
@@ -302,3 +302,4 @@ const TooltipBody = styled.span<
|
|
|
302
302
|
${PLACEMENTS[placement]};
|
|
303
303
|
`}
|
|
304
304
|
`;
|
|
305
|
+
/* eslint-enable theme/no-raw-colors-in-styles */
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
|
|
4
4
|
import type { Version } from '@redocly/config';
|
|
5
|
-
import type { SelectProps } from '@redocly/theme/core/types
|
|
5
|
+
import type { SelectProps } from '@redocly/theme/core/types';
|
|
6
6
|
|
|
7
7
|
import { useThemeHooks, useThemeConfig } from '@redocly/theme/core/hooks';
|
|
8
8
|
import { Select } from '@redocly/theme/components/Select/Select';
|
|
@@ -58,6 +58,7 @@ export function VersionPicker(props: { versions?: Version[]; onChange: (v: Versi
|
|
|
58
58
|
'aria-label': translate('versionPicker.label', 'Select version'),
|
|
59
59
|
}}
|
|
60
60
|
/>
|
|
61
|
+
{/* eslint-disable-next-line theme/require-translate */}
|
|
61
62
|
<SrOnly id="version-picker-description">
|
|
62
63
|
This is version picker select, using it you can select a version of the API.
|
|
63
64
|
</SrOnly>
|
package/src/core/hoc/index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './typed-memo';
|
|
@@ -2,10 +2,10 @@ import { vi } from 'vitest';
|
|
|
2
2
|
|
|
3
3
|
export const useThemeHooks = vi.fn(() => ({
|
|
4
4
|
useTranslate: vi.fn(() => ({
|
|
5
|
-
translate: vi.fn((key: string, defaultValue: string) =>
|
|
5
|
+
translate: vi.fn((key: string, defaultValue: string | { defaultValue: string }) =>
|
|
6
6
|
defaultValue
|
|
7
7
|
? typeof defaultValue !== 'string'
|
|
8
|
-
? (defaultValue as
|
|
8
|
+
? (defaultValue as { defaultValue: string }).defaultValue
|
|
9
9
|
: defaultValue
|
|
10
10
|
: key,
|
|
11
11
|
),
|
|
@@ -3,8 +3,8 @@ export class MockIntersectionObserver {
|
|
|
3
3
|
public readonly rootMargin: string;
|
|
4
4
|
public readonly thresholds: ReadonlyArray<number>;
|
|
5
5
|
|
|
6
|
-
private viewPort:
|
|
7
|
-
private entries:
|
|
6
|
+
private viewPort: Element | Document | Window;
|
|
7
|
+
private entries: Array<Partial<IntersectionObserverEntry> & { target: HTMLElement }>;
|
|
8
8
|
private readonly callback: IntersectionObserverCallback;
|
|
9
9
|
|
|
10
10
|
constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverInit) {
|
|
@@ -19,10 +19,11 @@ export class MockIntersectionObserver {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
private intersect = () => {
|
|
22
|
-
this.entries.map((entry) => {
|
|
23
|
-
entry
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
this.entries = this.entries.map((entry) => ({
|
|
23
|
+
...entry,
|
|
24
|
+
isIntersecting: this.isInViewPort(entry.target),
|
|
25
|
+
}));
|
|
26
|
+
this.callback(this.entries as IntersectionObserverEntry[], this);
|
|
26
27
|
};
|
|
27
28
|
|
|
28
29
|
isInViewPort(target: HTMLElement): boolean {
|
|
@@ -42,7 +43,7 @@ export class MockIntersectionObserver {
|
|
|
42
43
|
this.entries = [];
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
takeRecords():
|
|
46
|
-
return this.entries;
|
|
46
|
+
takeRecords(): IntersectionObserverEntry[] {
|
|
47
|
+
return this.entries as IntersectionObserverEntry[];
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -16,17 +16,17 @@ export function useCatalogEntitySchema({ entity, relatedEntity }: CatalogEntityS
|
|
|
16
16
|
parsedSchema = undefined;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
let parsedApiDefinition:
|
|
19
|
+
let parsedApiDefinition: Record<string, unknown> | undefined;
|
|
20
20
|
|
|
21
21
|
try {
|
|
22
22
|
parsedApiDefinition = relatedEntity?.metadata?.schema
|
|
23
|
-
? JSON.parse(relatedEntity.metadata.schema)
|
|
23
|
+
? (JSON.parse(relatedEntity.metadata.schema) as Record<string, unknown>)
|
|
24
24
|
: undefined;
|
|
25
25
|
} catch (err) {
|
|
26
26
|
parsedApiDefinition = undefined;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
const definition:
|
|
29
|
+
const definition: Record<string, unknown> =
|
|
30
30
|
!parsedApiDefinition || relatedEntity?.metadata?.specType !== 'openapi'
|
|
31
31
|
? {
|
|
32
32
|
openapi: '3.0.0',
|
|
@@ -42,7 +42,7 @@ type EntityGraphData = {
|
|
|
42
42
|
key: string;
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
-
//
|
|
45
|
+
// Note: This isn't final implementation, leaved comments for future reference.
|
|
46
46
|
export function useGraph({ entity, relations }: UseGraphProps): UseGraphReturn {
|
|
47
47
|
const rootNodeId = entity.id;
|
|
48
48
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { vi } from 'vitest';
|
|
2
|
+
|
|
3
|
+
export class MockIntersectionObserver {
|
|
4
|
+
public readonly root: Element | Document | null;
|
|
5
|
+
public readonly rootMargin: string;
|
|
6
|
+
public readonly thresholds: ReadonlyArray<number>;
|
|
7
|
+
observe: (target: HTMLElement) => void;
|
|
8
|
+
unobserve: (target: HTMLElement) => void;
|
|
9
|
+
disconnect: () => void;
|
|
10
|
+
|
|
11
|
+
// @ts-ignore
|
|
12
|
+
constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverInit) {
|
|
13
|
+
this.root = null;
|
|
14
|
+
this.rootMargin = '0px';
|
|
15
|
+
this.thresholds = [1];
|
|
16
|
+
this.observe = vi.fn();
|
|
17
|
+
this.unobserve = vi.fn();
|
|
18
|
+
this.disconnect = vi.fn();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
takeRecords(): IntersectionObserverEntry[] {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -211,6 +211,7 @@ export function useCodeWalkthroughControls(
|
|
|
211
211
|
continue;
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
+
// eslint-disable-next-line no-warning-comments
|
|
214
215
|
// code-walk-todo: need to check if we have a default fallback
|
|
215
216
|
const items = Array.isArray(filter?.items) ? filter.items : [];
|
|
216
217
|
|
|
@@ -299,7 +299,7 @@ type StepsGroup = {
|
|
|
299
299
|
freeSpace: number;
|
|
300
300
|
usedSpace: number;
|
|
301
301
|
offset: number;
|
|
302
|
-
steps: { offset: number; height: number }[];
|
|
302
|
+
steps: { offset: number; height: number; ref?: HTMLElement }[];
|
|
303
303
|
};
|
|
304
304
|
/**
|
|
305
305
|
* This function analyzes the offset and height of each step to determine
|
|
@@ -358,7 +358,7 @@ function getGroups(steps: CodeWalkthroughStep[]): StepsGroup[] {
|
|
|
358
358
|
offset: stepOffset - currentGroup.offset,
|
|
359
359
|
height: stepHeight,
|
|
360
360
|
ref: step.compRef,
|
|
361
|
-
}
|
|
361
|
+
});
|
|
362
362
|
currentGroup.usedSpace += stepHeight + margin;
|
|
363
363
|
}
|
|
364
364
|
|
|
@@ -3,7 +3,7 @@ import { useMemo } from 'react';
|
|
|
3
3
|
import type { CodeWalkthroughFile } from '@redocly/config';
|
|
4
4
|
|
|
5
5
|
import { findClosestCommonDirectory } from '../../utils/find-closest-common-directory';
|
|
6
|
-
import { getFileIconByExt } from '../../utils/
|
|
6
|
+
import { getFileIconByExt } from '../../utils/GetFileIcon';
|
|
7
7
|
import { removeLeadingSlash } from '../../utils/urls';
|
|
8
8
|
|
|
9
9
|
export type RenderableFile = CodeWalkthroughFile & {
|
package/src/core/hooks/index.ts
CHANGED
|
@@ -37,11 +37,14 @@ export * from './code-walkthrough/use-renderable-files';
|
|
|
37
37
|
export * from './use-element-size';
|
|
38
38
|
export * from './use-time-ago';
|
|
39
39
|
export * from './use-input-key-commands';
|
|
40
|
-
export * from './catalog/
|
|
41
|
-
export * from './catalog/
|
|
40
|
+
export * from './catalog/use-catalog-entities';
|
|
41
|
+
export * from './catalog/use-graph';
|
|
42
42
|
export * from './use-active-page-version';
|
|
43
43
|
export * from './use-page-versions';
|
|
44
44
|
export * from './use-user-teams';
|
|
45
45
|
export * from './use-page-actions';
|
|
46
46
|
export * from './use-mcp-config';
|
|
47
47
|
export * from './use-connect-mcp-button';
|
|
48
|
+
export * from './catalog/use-catalog-table-view-row';
|
|
49
|
+
export * from './catalog/use-catalog-entity-schema';
|
|
50
|
+
export * from './catalog/use-catalog-table-header-cell-actions';
|
|
@@ -199,13 +199,13 @@ function setStyles<T extends Partial<CSSStyleDeclaration>>(
|
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
|
-
|
|
203
|
-
export function useEvent<T extends (...args: any[]) => any>(callback?: T) {
|
|
202
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
203
|
+
export function useEvent<T extends (...args: any[]) => any>(callback?: T): T {
|
|
204
204
|
const ref = useRef<T | undefined>(callback);
|
|
205
205
|
|
|
206
206
|
useEffect(() => {
|
|
207
207
|
ref.current = callback;
|
|
208
208
|
});
|
|
209
209
|
|
|
210
|
-
return useCallback(((...args:
|
|
210
|
+
return useCallback(((...args: Parameters<T>) => ref.current?.(...args)) as T, []);
|
|
211
211
|
}
|
|
@@ -42,6 +42,7 @@ export const useMobileMenuItems = (menuType: MobileMenuType) => {
|
|
|
42
42
|
|
|
43
43
|
if (menuType === MobileMenuType.PAGE) {
|
|
44
44
|
if (activeVersion) {
|
|
45
|
+
// eslint-disable-next-line no-warning-comments
|
|
45
46
|
// TODO: consider to refactor
|
|
46
47
|
const versionsSection = buildVersionSection(translate, versions, activeVersion);
|
|
47
48
|
menuItems.push(...versionsSection);
|