@antscorp/antsomi-ui 2.0.102 → 2.0.104
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/es/__mocks__/sql-query.json +56 -0
- package/es/assets/css/main.scss +2 -2
- package/es/components/atoms/App/App.d.ts +7 -0
- package/es/components/atoms/App/App.js +5 -0
- package/es/components/atoms/App/index.d.ts +1 -0
- package/es/components/atoms/App/index.js +1 -0
- package/es/components/atoms/Input/Input.d.ts +11 -17
- package/es/components/atoms/Input/Input.js +11 -12
- package/es/components/atoms/List/List.d.ts +1 -0
- package/es/components/atoms/List/List.js +1 -0
- package/es/components/atoms/List/index.d.ts +1 -0
- package/es/components/atoms/List/index.js +1 -0
- package/es/components/atoms/Scrollbars/Scrollbars.d.ts +3 -4
- package/es/components/atoms/Scrollbars/Scrollbars.js +2 -1
- package/es/components/atoms/SlideBar/SlideBar.js +1 -1
- package/es/components/atoms/Tag/Tag.js +1 -1
- package/es/components/atoms/index.d.ts +3 -0
- package/es/components/atoms/index.js +2 -0
- package/es/components/icons/FeedbackOutlinedIcon.d.ts +3 -0
- package/es/components/icons/FeedbackOutlinedIcon.js +7 -0
- package/es/components/icons/LazyIcon/LazyIcon.d.ts +5 -0
- package/es/components/icons/LazyIcon/LazyIcon.js +5 -0
- package/es/components/icons/NavigateBeforeIcon.d.ts +3 -0
- package/es/components/icons/NavigateBeforeIcon.js +7 -0
- package/es/components/icons/NavigateNextIcon.d.ts +3 -0
- package/es/components/icons/NavigateNextIcon.js +7 -0
- package/es/components/icons/PenSparkIcon.d.ts +3 -0
- package/es/components/icons/PenSparkIcon.js +7 -0
- package/es/components/icons/StatusSuccessIcon.d.ts +3 -0
- package/es/components/icons/StatusSuccessIcon.js +7 -0
- package/es/components/icons/SummarizeIconIcon.d.ts +3 -0
- package/es/components/icons/SummarizeIconIcon.js +7 -0
- package/es/components/icons/index.d.ts +5 -0
- package/es/components/icons/index.js +5 -0
- package/es/components/index.scss +1 -0
- package/es/components/molecules/AddDynamicContent/AddDynamicContent.d.ts +1 -2
- package/es/components/molecules/CalendarSelection/constants.d.ts +1 -1
- package/es/components/molecules/CalendarSelection/constants.js +1 -1
- package/es/components/molecules/CaptureScreen/CaptureScreen.d.ts +8 -2
- package/es/components/molecules/CaptureScreen/CaptureScreen.js +2 -2
- package/es/components/molecules/DrawerDetail/DrawerDetail.js +19 -7
- package/es/components/molecules/DrawerDetail/types.d.ts +5 -0
- package/es/components/molecules/EditingListV2/components/Loadable.d.ts +1 -1
- package/es/components/molecules/EditorScript/EditorScript.d.ts +1 -2
- package/es/components/molecules/EditorScript/EditorScript.js +5 -1
- package/es/components/molecules/FontSizeInput/index.scss +15 -0
- package/es/components/molecules/Select/styled.js +1 -1
- package/es/components/molecules/SelectAccount/type.d.ts +1 -1
- package/es/components/molecules/TagifyInput/utils.style.js +1 -0
- package/es/components/molecules/TemplateSaveAs/hooks/useTemplateSave.d.ts +1 -1
- package/es/components/organism/AccountProfile/components/AccountSetting/AccountSetting.js +2 -1
- package/es/components/organism/AccountProfile/components/AccountSetting/components/LanguageSelector/styles.d.ts +1 -1
- package/es/components/organism/AccountProfile/components/AccountSetting/components/LanguageSelector/styles.js +1 -1
- package/es/components/organism/ActivityTimeline/__mocks__/event_tracking.json +1290 -0
- package/es/components/organism/ActivityTimeline/__mocks__/timeline.json +3059 -0
- package/es/components/organism/BasicLogin/BasicLogin.js +1 -10
- package/es/components/organism/BasicLogin/components/AuthenticateResult/AuthenticateResult.js +1 -1
- package/es/components/organism/BasicLogin/styled.js +1 -1
- package/es/components/organism/DataTable/hooks/useDataTableListing/useDataTableListing.js +5 -4
- package/es/components/organism/Login/Login.js +1 -5
- package/es/components/organism/Login/components/LoginWithEmail/styled.js +1 -1
- package/es/components/organism/Login/components/SetupGGAuthenticator/styled.js +1 -1
- package/es/components/organism/Login/components/SignIn/styled.js +1 -1
- package/es/components/organism/Login/components/WidgetLayout/styled.js +1 -1
- package/es/components/organism/Login/styled.d.ts +3 -3
- package/es/components/organism/Login/styled.js +11 -11
- package/es/components/organism/ModifyColumnModal/styled.d.ts +2 -2
- package/es/components/organism/PreviewTemplateModal/components/ThumbnailSlider/styled.d.ts +1 -2
- package/es/components/organism/PreviewTemplateModal/components/ThumbnailSlider/styled.js +3 -1
- package/es/components/organism/SQLGeneration/SQLGeneration.d.ts +3 -0
- package/es/components/organism/SQLGeneration/SQLGeneration.js +26 -0
- package/es/components/organism/SQLGeneration/components/CheckboxShowDiff.d.ts +2 -0
- package/es/components/organism/SQLGeneration/components/CheckboxShowDiff.js +16 -0
- package/es/components/organism/SQLGeneration/components/EditTableSourcesDrawer.d.ts +2 -0
- package/es/components/organism/SQLGeneration/components/EditTableSourcesDrawer.js +56 -0
- package/es/components/organism/SQLGeneration/components/ErrorDisplay.d.ts +21 -0
- package/es/components/organism/SQLGeneration/components/ErrorDisplay.js +69 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationActions.d.ts +4 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationActions.js +23 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationCodeBlock.d.ts +2 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationCodeBlock.js +22 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationEditPrompt.d.ts +2 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationEditPrompt.js +66 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationHeader.d.ts +2 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationHeader.js +10 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationModal.d.ts +2 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationModal.js +35 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationPagination.d.ts +4 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationPagination.js +13 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationPrompt.d.ts +2 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationPrompt.js +31 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationPromptDisplay.d.ts +2 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationPromptDisplay.js +15 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationQuerySummary.d.ts +2 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationQuerySummary.js +17 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationRefine.d.ts +1 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationRefine.js +55 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationResult.d.ts +5 -0
- package/es/components/organism/SQLGeneration/components/SQLGenerationResult.js +29 -0
- package/es/components/organism/SQLGeneration/components/index.d.ts +9 -0
- package/es/components/organism/SQLGeneration/components/index.js +9 -0
- package/es/components/organism/SQLGeneration/components/styled.d.ts +52 -0
- package/es/components/organism/SQLGeneration/components/styled.js +382 -0
- package/es/components/organism/SQLGeneration/constants.d.ts +48 -0
- package/es/components/organism/SQLGeneration/constants.js +48 -0
- package/es/components/organism/SQLGeneration/hooks/index.d.ts +1 -0
- package/es/components/organism/SQLGeneration/hooks/index.js +1 -0
- package/es/components/organism/SQLGeneration/hooks/useKeyboardNavigation.d.ts +14 -0
- package/es/components/organism/SQLGeneration/hooks/useKeyboardNavigation.js +123 -0
- package/es/components/organism/SQLGeneration/index.d.ts +10 -0
- package/es/components/organism/SQLGeneration/index.js +6 -0
- package/es/components/organism/SQLGeneration/index.scss +1 -0
- package/es/components/organism/SQLGeneration/integrations/AceEditor/index.d.ts +1 -0
- package/es/components/organism/SQLGeneration/integrations/AceEditor/index.js +1 -0
- package/es/components/organism/SQLGeneration/integrations/AceEditor/index.scss +4 -0
- package/es/components/organism/SQLGeneration/integrations/AceEditor/useAceEditor.d.ts +9 -0
- package/es/components/organism/SQLGeneration/integrations/AceEditor/useAceEditor.js +24 -0
- package/es/components/organism/SQLGeneration/integrations/AceEditor/useEnhancePlaceholder.d.ts +10 -0
- package/es/components/organism/SQLGeneration/integrations/AceEditor/useEnhancePlaceholder.js +172 -0
- package/es/components/organism/SQLGeneration/integrations/AceEditor/useInsertQuery.d.ts +8 -0
- package/es/components/organism/SQLGeneration/integrations/AceEditor/useInsertQuery.js +21 -0
- package/es/components/organism/SQLGeneration/integrations/AntsomiAI/index.d.ts +1 -0
- package/es/components/organism/SQLGeneration/integrations/AntsomiAI/index.js +1 -0
- package/es/components/organism/SQLGeneration/integrations/AntsomiAI/useAntsomiAI.d.ts +1 -0
- package/es/components/organism/SQLGeneration/integrations/AntsomiAI/useAntsomiAI.js +35 -0
- package/es/components/organism/SQLGeneration/integrations/AntsomiSqlWS/index.d.ts +1 -0
- package/es/components/organism/SQLGeneration/integrations/AntsomiSqlWS/index.js +1 -0
- package/es/components/organism/SQLGeneration/integrations/AntsomiSqlWS/useAntsomiSqlWS.d.ts +7 -0
- package/es/components/organism/SQLGeneration/integrations/AntsomiSqlWS/useAntsomiSqlWS.js +10 -0
- package/es/components/organism/SQLGeneration/selectors.d.ts +857 -0
- package/es/components/organism/SQLGeneration/selectors.js +61 -0
- package/es/components/organism/SQLGeneration/store/index.d.ts +2 -0
- package/es/components/organism/SQLGeneration/store/index.js +1 -0
- package/es/components/organism/SQLGeneration/store/provider.d.ts +7 -0
- package/es/components/organism/SQLGeneration/store/provider.js +40 -0
- package/es/components/organism/SQLGeneration/store/store.d.ts +383 -0
- package/es/components/organism/SQLGeneration/store/store.js +309 -0
- package/es/components/organism/SQLGeneration/store/types.d.ts +97 -0
- package/es/components/organism/SQLGeneration/store/types.js +1 -0
- package/es/components/organism/SQLGeneration/types.d.ts +29 -0
- package/es/components/organism/SQLGeneration/types.js +1 -0
- package/es/components/organism/index.d.ts +1 -0
- package/es/components/organism/index.js +1 -0
- package/es/components/organism/index.scss +1 -0
- package/es/components/template/TemplateListing/hooks/useTemplateListing.d.ts +3 -4
- package/es/hooks/index.d.ts +1 -0
- package/es/hooks/index.js +1 -0
- package/es/hooks/useFocusManagement.d.ts +14 -0
- package/es/hooks/useFocusManagement.js +124 -0
- package/es/locales/ja/google-sheet.json +2 -2
- package/es/providers/ConfigProvider/ConfigProvider.js +4 -1
- package/es/providers/ConfigProvider/GlobalStyle.js +153 -46
- package/es/queries/AI/index.d.ts +23 -0
- package/es/queries/AI/index.js +4 -0
- package/es/queries/AI/useSqlGeneration.d.ts +25 -0
- package/es/queries/AI/useSqlGeneration.js +13 -0
- package/es/queries/TemplateListing/index.d.ts +2 -2
- package/es/queries/index.d.ts +1 -0
- package/es/queries/index.js +1 -0
- package/es/services/AI/index.d.ts +15 -0
- package/es/services/AI/index.js +15 -0
- package/es/types/auth.d.ts +25 -0
- package/es/types/auth.js +1 -0
- package/es/types/index.d.ts +1 -0
- package/es/types/index.js +1 -0
- package/es/utils/common.d.ts +1 -0
- package/es/utils/common.js +16 -1
- package/es/utils/web.d.ts +16 -3
- package/es/utils/web.js +36 -3
- package/es/utils/zustand.d.ts +10 -0
- package/es/utils/zustand.js +8 -0
- package/package.json +15 -10
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Modal } from 'antd';
|
|
3
|
+
import { SQL_GENERATION_CONSTANTS } from '../constants';
|
|
4
|
+
import { PopoverContent, PopoverBody, AccessibilityStyles } from './styled';
|
|
5
|
+
import { useSQLGenerationStore } from '../store/provider';
|
|
6
|
+
import { selectHasResult, selectIsEditingPrompt, selectIsOpen } from '../selectors';
|
|
7
|
+
import { SQLGenerationHeader } from './SQLGenerationHeader';
|
|
8
|
+
import { SQLGenerationEditPrompt } from './SQLGenerationEditPrompt';
|
|
9
|
+
import { SQLGenerationPromptDisplay } from './SQLGenerationPromptDisplay';
|
|
10
|
+
import { SQLGenerationResult } from './SQLGenerationResult';
|
|
11
|
+
import { SQLGenerationRefine } from './SQLGenerationRefine';
|
|
12
|
+
import { SQLGenerationActions } from './SQLGenerationActions';
|
|
13
|
+
import { SQLGenerationQuerySummary } from './SQLGenerationQuerySummary';
|
|
14
|
+
import { SQLGenerationPrompt } from './SQLGenerationPrompt';
|
|
15
|
+
import { EditTableSourcesDrawer } from './EditTableSourcesDrawer';
|
|
16
|
+
import { useSQLGenerationKeyboard } from '../hooks';
|
|
17
|
+
import { useFocusManagement } from '@antscorp/antsomi-ui/es/hooks';
|
|
18
|
+
export const SQLGenerationModal = () => {
|
|
19
|
+
const isOpen = useSQLGenerationStore(selectIsOpen);
|
|
20
|
+
const hasResults = useSQLGenerationStore(selectHasResult);
|
|
21
|
+
const isEditingPrompt = useSQLGenerationStore(selectIsEditingPrompt);
|
|
22
|
+
const setIsOpen = useSQLGenerationStore(s => s.setIsOpen);
|
|
23
|
+
// Enable keyboard navigation
|
|
24
|
+
useSQLGenerationKeyboard();
|
|
25
|
+
// Enable focus management
|
|
26
|
+
const { containerRef } = useFocusManagement(isOpen, {
|
|
27
|
+
autoFocus: true,
|
|
28
|
+
restoreFocus: true,
|
|
29
|
+
trapFocus: true,
|
|
30
|
+
});
|
|
31
|
+
const popoverContent = (_jsxs(PopoverContent, { ref: containerRef, children: [_jsx(SQLGenerationHeader, {}), _jsx(PopoverBody, { children: hasResults ? (_jsxs(_Fragment, { children: [isEditingPrompt ? _jsx(SQLGenerationEditPrompt, {}) : _jsx(SQLGenerationPromptDisplay, {}), _jsx(SQLGenerationResult, {}), _jsx(SQLGenerationRefine, {}), _jsx(SQLGenerationActions, { children: _jsx(SQLGenerationQuerySummary, {}) })] })) : (_jsx(SQLGenerationPrompt, {})) })] }));
|
|
32
|
+
return (_jsx(AccessibilityStyles, { children: _jsxs(Modal, { open: isOpen, footer: null, closeIcon: null, width: SQL_GENERATION_CONSTANTS.MODAL_WIDTH, onCancel: () => setIsOpen(false), destroyOnClose: true, maskClosable: false,
|
|
33
|
+
// Accessibility improvements - Antd Modal already has role="dialog" and aria-modal="true"
|
|
34
|
+
title: null, className: "sql-generation-modal", children: [popoverContent, _jsx(EditTableSourcesDrawer, {})] }) }));
|
|
35
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useSQLGenerationStore } from '../store/provider';
|
|
3
|
+
import { selectCurrentResultIndex, selectResultsAllKeys, selectTotalResults } from '../selectors';
|
|
4
|
+
import { PaginationIndicator } from './styled';
|
|
5
|
+
import { Button, Space, Text } from '../../../atoms';
|
|
6
|
+
import { NavigateBeforeIcon, NavigateNextIcon } from '../../../icons';
|
|
7
|
+
export const SQLGenerationPagination = ({ style }) => {
|
|
8
|
+
const totalResults = useSQLGenerationStore(selectTotalResults);
|
|
9
|
+
const currentResultIndex = useSQLGenerationStore(selectCurrentResultIndex);
|
|
10
|
+
const resultAllKeys = useSQLGenerationStore(selectResultsAllKeys);
|
|
11
|
+
const setCurrentResultKey = useSQLGenerationStore(s => s.setCurrentResultKey);
|
|
12
|
+
return (_jsxs(_Fragment, { children: [totalResults > 1 && (_jsx(PaginationIndicator, { style: style, role: "navigation", "aria-label": "SQL results pagination", children: _jsxs(Space, { size: 8, align: "center", children: [_jsx(Button, { type: "text", size: "small", disabled: currentResultIndex === 0, onClick: () => setCurrentResultKey(resultAllKeys[currentResultIndex - 1]), icon: _jsx(NavigateBeforeIcon, { size: 14 }), "aria-label": "Go to previous SQL result", title: "Previous result (Arrow Left)" }), _jsxs(Text, { style: { fontSize: '13px', color: '#999' }, role: "status", "aria-label": `Result ${currentResultIndex + 1} of ${totalResults}`, children: [currentResultIndex + 1, " / ", totalResults] }), _jsx(Button, { type: "text", size: "small", disabled: currentResultIndex === totalResults - 1, onClick: () => setCurrentResultKey(resultAllKeys[currentResultIndex + 1]), icon: _jsx(NavigateNextIcon, { size: 14 }), "aria-label": "Go to next SQL result", title: "Next result (Arrow Right)" })] }) })), totalResults === 1 && (_jsx(PaginationIndicator, { style: style, role: "status", "aria-label": "Single result", children: _jsx(Text, { style: { fontSize: '13px', color: '#5f6368' }, children: "1/1" }) }))] }));
|
|
13
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { SQL_GENERATION_CONSTANTS } from '../constants';
|
|
3
|
+
import { PromptSection, PromptTextArea, GenerateButtonContainer, GenerateButton } from './styled';
|
|
4
|
+
import { useSQLGenerationStore } from '../store/provider';
|
|
5
|
+
import { selectIsLoading, selectPrompt, selectGenerateSQLError } from '../selectors';
|
|
6
|
+
import { GenerateSQLError } from './ErrorDisplay';
|
|
7
|
+
export const SQLGenerationPrompt = () => {
|
|
8
|
+
const prompt = useSQLGenerationStore(selectPrompt);
|
|
9
|
+
const isLoading = useSQLGenerationStore(selectIsLoading);
|
|
10
|
+
const generateError = useSQLGenerationStore(selectGenerateSQLError);
|
|
11
|
+
const setPrompt = useSQLGenerationStore(s => s.setPrompt);
|
|
12
|
+
const generateSQL = useSQLGenerationStore(s => s.generateSQL);
|
|
13
|
+
const onGenerateSQL = useSQLGenerationStore(s => s.onGenerateSQL);
|
|
14
|
+
const disabled = !onGenerateSQL;
|
|
15
|
+
// Handle textarea change
|
|
16
|
+
const handleChange = (e) => {
|
|
17
|
+
setPrompt(e.target.value);
|
|
18
|
+
};
|
|
19
|
+
// Handle Enter key press (Ctrl/Cmd + Enter to generate)
|
|
20
|
+
const handleKeyDown = (e) => {
|
|
21
|
+
if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {
|
|
22
|
+
e.preventDefault();
|
|
23
|
+
if (!disabled && !isLoading && prompt.trim()) {
|
|
24
|
+
generateSQL();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
// Check if generate button should be disabled
|
|
29
|
+
const isGenerateDisabled = disabled || isLoading || !prompt.trim();
|
|
30
|
+
return (_jsxs(PromptSection, { direction: "vertical", size: 12, style: { width: '100%' }, children: [_jsx(PromptTextArea, { id: "sql-prompt-input", value: prompt, onChange: handleChange, onKeyDown: handleKeyDown, placeholder: SQL_GENERATION_CONSTANTS.PLACEHOLDER_TEXTS.PROMPT, disabled: disabled, "aria-label": "SQL generation prompt", "aria-describedby": "sql-generation-description prompt-help-text", "aria-required": "true", autoFocus: true }), _jsx(GenerateButtonContainer, { children: _jsx(GenerateButton, { type: "primary", onClick: generateSQL, loading: isLoading, disabled: isGenerateDisabled, children: SQL_GENERATION_CONSTANTS.BUTTON_TEXTS.GENERATE }) }), generateError && _jsx(GenerateSQLError, { style: { marginTop: '12px' } })] }));
|
|
31
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Typography, Button } from '../../../atoms';
|
|
3
|
+
import { PromptDisplaySection, PromptDisplayText, PromptDisplayActions } from './styled';
|
|
4
|
+
import { useSQLGenerationStore } from '../store/provider';
|
|
5
|
+
import { selectCurrentResult, selectIsLoading } from '../selectors';
|
|
6
|
+
const { Text } = Typography;
|
|
7
|
+
export const SQLGenerationPromptDisplay = () => {
|
|
8
|
+
const currentResult = useSQLGenerationStore(selectCurrentResult);
|
|
9
|
+
const isLoading = useSQLGenerationStore(selectIsLoading);
|
|
10
|
+
const setIsEditingPrompt = useSQLGenerationStore(s => s.setIsEditingPrompt);
|
|
11
|
+
if (!currentResult)
|
|
12
|
+
return null;
|
|
13
|
+
const { prompt } = currentResult;
|
|
14
|
+
return (_jsxs(PromptDisplaySection, { children: [_jsx(PromptDisplayText, { children: _jsx(Text, { style: { color: '#1a73e8', fontSize: '14px' }, children: prompt }) }), _jsx(PromptDisplayActions, { children: _jsx(Button, { onClick: () => setIsEditingPrompt(true), disabled: isLoading, children: "Edit" }) })] }));
|
|
15
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useSQLGenerationStore } from '../store/provider';
|
|
3
|
+
import { selectCurrentResultSummary, selectIsSummaryLoading } from '../selectors';
|
|
4
|
+
import { SummarySection } from './styled';
|
|
5
|
+
import { Spin, Typography } from '../../../atoms';
|
|
6
|
+
const { Text } = Typography;
|
|
7
|
+
export const SQLGenerationQuerySummary = () => {
|
|
8
|
+
const isSummaryLoading = useSQLGenerationStore(selectIsSummaryLoading);
|
|
9
|
+
const summary = useSQLGenerationStore(selectCurrentResultSummary);
|
|
10
|
+
if (isSummaryLoading) {
|
|
11
|
+
return (_jsx(SummarySection, { className: "loading", role: "status", "aria-live": "polite", children: _jsx(Spin, { size: "small", indicatorSize: 20, "aria-hidden": "true" }) }));
|
|
12
|
+
}
|
|
13
|
+
if (!summary) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return (_jsx(SummarySection, { role: "region", "aria-label": "Query summary", children: _jsx(Text, { children: summary }) }));
|
|
17
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SQLGenerationRefine: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, Input } from 'antd';
|
|
3
|
+
import { useSQLGenerationStore } from '../store/provider';
|
|
4
|
+
import { selectCurrentResult, selectIsRefining, selectRefineSQLError } from '../selectors';
|
|
5
|
+
import { RefineSection } from './styled';
|
|
6
|
+
import { useEffect, useRef, useState } from 'react';
|
|
7
|
+
import { PlaneIcon } from '../../../icons';
|
|
8
|
+
import { RefineSQLError } from './ErrorDisplay';
|
|
9
|
+
export const SQLGenerationRefine = () => {
|
|
10
|
+
const currentResult = useSQLGenerationStore(selectCurrentResult);
|
|
11
|
+
const isRefining = useSQLGenerationStore(selectIsRefining);
|
|
12
|
+
const refineError = useSQLGenerationStore(selectRefineSQLError);
|
|
13
|
+
const setRefinePrompt = useSQLGenerationStore(s => s.setRefinePrompt);
|
|
14
|
+
const refineSQL = useSQLGenerationStore(s => s.refineSQL);
|
|
15
|
+
const { refinePrompt: originalRefinePrompt = '' } = currentResult || {};
|
|
16
|
+
const sectionRef = useRef(null);
|
|
17
|
+
const [hasChanges, setHasChanges] = useState(false);
|
|
18
|
+
const [currentRefinePrompt, setCurrentRefinePrompt] = useState(originalRefinePrompt);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
setCurrentRefinePrompt(originalRefinePrompt);
|
|
21
|
+
setHasChanges(false);
|
|
22
|
+
}, [originalRefinePrompt]);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
setHasChanges(currentRefinePrompt.trim() !== originalRefinePrompt.trim());
|
|
25
|
+
}, [currentRefinePrompt, originalRefinePrompt]);
|
|
26
|
+
const handleCancel = () => {
|
|
27
|
+
setCurrentRefinePrompt(originalRefinePrompt);
|
|
28
|
+
setHasChanges(false);
|
|
29
|
+
};
|
|
30
|
+
const handleBlur = (e) => {
|
|
31
|
+
if (!sectionRef.current?.contains(e.relatedTarget)) {
|
|
32
|
+
handleCancel();
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const handleRefine = () => {
|
|
36
|
+
if (hasChanges && currentRefinePrompt.trim()) {
|
|
37
|
+
setRefinePrompt(currentRefinePrompt.trim());
|
|
38
|
+
refineSQL().finally(() => {
|
|
39
|
+
setHasChanges(false);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const handleKeyPress = (e) => {
|
|
44
|
+
if (e.key === 'Enter' && hasChanges && !isRefining) {
|
|
45
|
+
handleRefine();
|
|
46
|
+
}
|
|
47
|
+
if (e.key === 'Escape') {
|
|
48
|
+
handleCancel();
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const handleRefinePromptChange = (e) => {
|
|
52
|
+
setCurrentRefinePrompt(e.target.value);
|
|
53
|
+
};
|
|
54
|
+
return (_jsxs(RefineSection, { ref: sectionRef, role: "region", "aria-label": "Refine SQL query", children: [_jsx(Input, { id: "refine-input", value: currentRefinePrompt, onChange: handleRefinePromptChange, onKeyDown: handleKeyPress, placeholder: "Enter refine prompt", disabled: isRefining, onBlur: handleBlur, "aria-label": "SQL refinement prompt" }), _jsxs(Button, { type: "primary", disabled: !hasChanges, onClick: handleRefine, loading: isRefining, "aria-describedby": isRefining ? 'refine-loading' : undefined, children: ["Refine", _jsx(PlaneIcon, { size: 16 })] }), refineError && _jsx(RefineSQLError, { style: { marginTop: '12px' } })] }));
|
|
55
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Spin, Typography, Flex } from '../../../atoms';
|
|
3
|
+
import { SQL_GENERATION_CONSTANTS } from '../constants';
|
|
4
|
+
import { ResultSection, LoadingContainer, ResultInfo } from './styled';
|
|
5
|
+
import { useSQLGenerationStore } from '../store/provider';
|
|
6
|
+
import { selectCurrentResult, selectIsLoading, selectResultsAllKeys } from '../selectors';
|
|
7
|
+
import { StatusSuccessIcon } from '../../../icons';
|
|
8
|
+
import 'ace-builds/src-noconflict/mode-mysql';
|
|
9
|
+
import 'ace-builds/src-noconflict/theme-textmate';
|
|
10
|
+
import { globalToken } from '@antscorp/antsomi-ui/es/constants';
|
|
11
|
+
import { SQLGenerationCodeBlock } from './SQLGenerationCodeBlock';
|
|
12
|
+
import { SQLGenerationPagination } from './SQLGenerationPagination';
|
|
13
|
+
import { CheckboxShowDiff } from './CheckboxShowDiff';
|
|
14
|
+
const { Text } = Typography;
|
|
15
|
+
export const SQLGenerationResult = () => {
|
|
16
|
+
const isLoading = useSQLGenerationStore(selectIsLoading);
|
|
17
|
+
const resultAllKeys = useSQLGenerationStore(selectResultsAllKeys);
|
|
18
|
+
const currentResult = useSQLGenerationStore(selectCurrentResult);
|
|
19
|
+
// Loading state
|
|
20
|
+
if (isLoading) {
|
|
21
|
+
return (_jsx(ResultSection, { role: "region", "aria-labelledby": "result-heading", children: _jsxs(LoadingContainer, { role: "status", "aria-live": "polite", children: [_jsx(Spin, { size: "small", indicatorSize: 20, "aria-hidden": "true" }), _jsx(Text, { style: { fontSize: '14px', color: '#666' }, children: SQL_GENERATION_CONSTANTS.LOADING_TEXTS.GENERATING })] }) }));
|
|
22
|
+
}
|
|
23
|
+
if (resultAllKeys.length === 0) {
|
|
24
|
+
return (_jsx(ResultSection, { role: "region", "aria-labelledby": "result-heading", children: _jsx(LoadingContainer, { role: "status", children: _jsx(Text, { style: { fontSize: '14px', color: '#999' }, children: SQL_GENERATION_CONSTANTS.PLACEHOLDER_TEXTS.NO_RESULT }) }) }));
|
|
25
|
+
}
|
|
26
|
+
if (!currentResult)
|
|
27
|
+
return null;
|
|
28
|
+
return (_jsxs(ResultSection, { role: "region", "aria-labelledby": "result-heading", children: [_jsx("div", { role: "region", "aria-label": "Generated SQL code", children: _jsx(SQLGenerationCodeBlock, {}) }), currentResult.processedDataSize && (_jsxs(ResultInfo, { role: "status", "aria-label": "Query processing information", children: [_jsx(StatusSuccessIcon, { size: 16, color: globalToken?.colorSuccess, "aria-hidden": "true" }), _jsx(Text, { style: { fontSize: '13px', color: '#5f6368' }, children: SQL_GENERATION_CONSTANTS.RESULT_TEXTS.PROCESSED_DATA.replace('{size}', currentResult.processedDataSize) })] })), _jsxs(Flex, { style: { marginTop: '16px', marginBottom: '16px' }, justify: "space-between", align: "center", children: [_jsx(CheckboxShowDiff, {}), _jsx(SQLGenerationPagination, { style: { marginLeft: 'auto' } })] })] }));
|
|
29
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { SQLGenerationModal } from './SQLGenerationModal';
|
|
2
|
+
export { SQLGenerationHeader } from './SQLGenerationHeader';
|
|
3
|
+
export { SQLGenerationPrompt } from './SQLGenerationPrompt';
|
|
4
|
+
export { SQLGenerationEditPrompt } from './SQLGenerationEditPrompt';
|
|
5
|
+
export { SQLGenerationPromptDisplay } from './SQLGenerationPromptDisplay';
|
|
6
|
+
export { SQLGenerationResult } from './SQLGenerationResult';
|
|
7
|
+
export { SQLGenerationActions } from './SQLGenerationActions';
|
|
8
|
+
export { EditTableSourcesDrawer } from './EditTableSourcesDrawer';
|
|
9
|
+
export { ErrorDisplay, CurrentOperationError, GenerateSQLError, RefineSQLError, QuerySummaryError, } from './ErrorDisplay';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { SQLGenerationModal } from './SQLGenerationModal';
|
|
2
|
+
export { SQLGenerationHeader } from './SQLGenerationHeader';
|
|
3
|
+
export { SQLGenerationPrompt } from './SQLGenerationPrompt';
|
|
4
|
+
export { SQLGenerationEditPrompt } from './SQLGenerationEditPrompt';
|
|
5
|
+
export { SQLGenerationPromptDisplay } from './SQLGenerationPromptDisplay';
|
|
6
|
+
export { SQLGenerationResult } from './SQLGenerationResult';
|
|
7
|
+
export { SQLGenerationActions } from './SQLGenerationActions';
|
|
8
|
+
export { EditTableSourcesDrawer } from './EditTableSourcesDrawer';
|
|
9
|
+
export { ErrorDisplay, CurrentOperationError, GenerateSQLError, RefineSQLError, QuerySummaryError, } from './ErrorDisplay';
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const PopoverContent: import("styled-components").StyledComponent<"div", any, {
|
|
3
|
+
maxWidth?: number | undefined;
|
|
4
|
+
}, never>;
|
|
5
|
+
export declare const PopoverBody: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
6
|
+
export declare const HeaderContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
7
|
+
export declare const HeaderContent: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
8
|
+
export declare const HeaderTitle: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("antd/es/typography/Text").TextProps & import("react").RefAttributes<HTMLSpanElement>>, any, {}, never>;
|
|
9
|
+
export declare const CloseButton: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("antd").ButtonProps & import("react").RefAttributes<import("react").LegacyRef<HTMLElement>>>, any, {}, never>;
|
|
10
|
+
export declare const PromptSection: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("antd").SpaceProps & import("react").RefAttributes<HTMLDivElement>> & {
|
|
11
|
+
Compact: import("react").FC<import("antd/es/space/Compact").SpaceCompactProps>;
|
|
12
|
+
}, any, {}, never>;
|
|
13
|
+
export declare const PromptTextArea: import("styled-components").StyledComponent<"textarea", any, {}, never>;
|
|
14
|
+
export declare const GenerateButtonContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
15
|
+
export declare const GenerateButton: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("antd").ButtonProps & import("react").RefAttributes<import("react").LegacyRef<HTMLElement>>>, any, {}, never>;
|
|
16
|
+
export declare const ResultSection: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
17
|
+
export declare const LoadingContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
18
|
+
export declare const SQLCodeBlock: import("styled-components").StyledComponent<import("react").FC<import("../../../molecules/EditorScript").EditorScriptProps>, any, {}, never>;
|
|
19
|
+
export declare const ResultInfo: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
20
|
+
export declare const PaginationIndicator: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
21
|
+
export declare const ActionsSection: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
22
|
+
export declare const ActionButton: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("antd").ButtonProps & import("react").RefAttributes<import("react").LegacyRef<HTMLElement>>>, any, {}, never>;
|
|
23
|
+
export declare const CautionLink: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("antd").ButtonProps & import("react").RefAttributes<import("react").LegacyRef<HTMLElement>>>, any, {}, never>;
|
|
24
|
+
export declare const RatingSection: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
25
|
+
export declare const RatingText: import("styled-components").StyledComponent<"span", any, {}, never>;
|
|
26
|
+
export declare const RatingButton: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("antd").ButtonProps & import("react").RefAttributes<import("react").LegacyRef<HTMLElement>>>, any, {}, never>;
|
|
27
|
+
export declare const StyledModal: import("styled-components").StyledComponent<import("react").ComponentType<any> | keyof import("react").JSX.IntrinsicElements, any, any, any>;
|
|
28
|
+
export declare const ModalDescription: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("antd/es/typography/Text").TextProps & import("react").RefAttributes<HTMLSpanElement>>, any, {}, never>;
|
|
29
|
+
export declare const SearchSection: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
30
|
+
export declare const LanguageSelector: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
31
|
+
export declare const SearchInput: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
32
|
+
export declare const SearchActions: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
33
|
+
export declare const GeneratedSearchInfo: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
34
|
+
export declare const TableListHeader: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
35
|
+
export declare const TableListHeaderLeft: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
36
|
+
export declare const TableListHeaderRight: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
37
|
+
export declare const TableListContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
38
|
+
export declare const TableItem: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
39
|
+
export declare const TableItemContent: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
40
|
+
export declare const TableName: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("antd/es/typography/Text").TextProps & import("react").RefAttributes<HTMLSpanElement>>, any, {}, never>;
|
|
41
|
+
export declare const EmptyState: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
42
|
+
export declare const PaginationControls: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
43
|
+
export declare const PaginationText: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("antd/es/typography/Text").TextProps & import("react").RefAttributes<HTMLSpanElement>>, any, {}, never>;
|
|
44
|
+
export declare const EditPromptSection: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
45
|
+
export declare const EditPromptInput: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
46
|
+
export declare const EditPromptActions: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
47
|
+
export declare const PromptDisplaySection: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
48
|
+
export declare const PromptDisplayText: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
49
|
+
export declare const PromptDisplayActions: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
50
|
+
export declare const SummarySection: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
51
|
+
export declare const RefineSection: import("styled-components").StyledComponent<"div", any, {}, never>;
|
|
52
|
+
export declare const AccessibilityStyles: import("styled-components").StyledComponent<"div", any, {}, never>;
|