@pega/cosmos-react-build 9.0.0-build.12.2 → 9.0.0-build.12.4
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/ExpressionBuilder/ExpressionBuilder.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionBuilder.js +3 -2
- package/lib/components/ExpressionBuilder/ExpressionBuilder.js.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionBuilder.types.d.ts +3 -2
- package/lib/components/ExpressionBuilder/ExpressionBuilder.types.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionBuilder.types.js.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionList.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionList.js +10 -10
- package/lib/components/ExpressionBuilder/ExpressionList.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionBuilder.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionBuilder.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAuB,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;;;;
|
|
1
|
+
{"version":3,"file":"ExpressionBuilder.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionBuilder.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAuB,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;;;;AA6U7F,wBAAuE"}
|
|
@@ -12,6 +12,7 @@ const ExpressionBuilder = forwardRef(({ testId, list, search, errors, defaultVal
|
|
|
12
12
|
const textAreaRef = useRef(null);
|
|
13
13
|
const codeEditorHandle = useRef(null);
|
|
14
14
|
const generatedExpressionHandler = useRef(null);
|
|
15
|
+
const scrollableRef = useRef(null);
|
|
15
16
|
const testIds = useTestIds(testId, getExpressionBuilderIds);
|
|
16
17
|
const { describeExpressionTextArea, onGenerateExpression, loadingExpression = false, generatedExpression, onInsert } = generateExpression || {};
|
|
17
18
|
const getExpression = () => {
|
|
@@ -66,10 +67,10 @@ const ExpressionBuilder = forwardRef(({ testId, list, search, errors, defaultVal
|
|
|
66
67
|
}, item: {
|
|
67
68
|
grow: 1,
|
|
68
69
|
basis: '50%'
|
|
69
|
-
}, as: generateExpression ? StyledExpressions : undefined, children: [generateExpression && (_jsxs(_Fragment, { children: [_jsx(TextArea, { label: t('describe_expression'), defaultValue: describeExpressionTextArea?.defaultValue, autoResize: false, additionalInfo: describeExpressionTextArea?.additionalInfo, placeholder: describeExpressionTextArea?.placeholder, info: describeExpressionTextArea?.error, status: describeExpressionTextArea?.error ? 'error' : undefined, testId: testIds.describeExpression, ref: textAreaRef, row: 3 }), _jsx(Flex, { container: true, item: { alignSelf: 'end' }, children: loadingExpression ? (_jsxs(Flex, { container: { gap: 1, alignItems: 'center' }, children: [t('generating_expression'), _jsx(Progress, { placement: 'inline' })] })) : (onGenerateExpression && (_jsx(AIButton, { onClick: () => onGenerateExpression(textAreaRef.current?.value || ''), label: t('generate'), variant: 'secondary', "data-testid": testIds.generate }))) }), _jsxs(Flex, { container: { direction: 'column' }, item: { grow: 1 }, as: StyledGeneratedExpression, children: [_jsx(Label, { children: t('generated_expression') }), _jsx(CodeEditor, { codeEditorHandle: generatedExpressionHandler, editorConfigProps: {
|
|
70
|
+
}, as: generateExpression ? StyledExpressions : undefined, ref: scrollableRef, children: [generateExpression && (_jsxs(_Fragment, { children: [_jsx(TextArea, { label: t('describe_expression'), defaultValue: describeExpressionTextArea?.defaultValue, autoResize: false, additionalInfo: describeExpressionTextArea?.additionalInfo, placeholder: describeExpressionTextArea?.placeholder, info: describeExpressionTextArea?.error, status: describeExpressionTextArea?.error ? 'error' : undefined, testId: testIds.describeExpression, ref: textAreaRef, row: 3 }), _jsx(Flex, { container: true, item: { alignSelf: 'end' }, children: loadingExpression ? (_jsxs(Flex, { container: { gap: 1, alignItems: 'center' }, children: [t('generating_expression'), _jsx(Progress, { placement: 'inline' })] })) : (onGenerateExpression && (_jsx(AIButton, { onClick: () => onGenerateExpression(textAreaRef.current?.value || ''), label: t('generate'), variant: 'secondary', "data-testid": testIds.generate }))) }), _jsxs(Flex, { container: { direction: 'column' }, item: { grow: 1 }, as: StyledGeneratedExpression, children: [_jsx(Label, { children: t('generated_expression') }), _jsx(CodeEditor, { codeEditorHandle: generatedExpressionHandler, editorConfigProps: {
|
|
70
71
|
mode: 'expression',
|
|
71
72
|
readOnly: true
|
|
72
|
-
}, readOnly: true, testId: testIds.generatedExpression }), _jsx(Text, { variant: 'secondary', children: t('verify_ai_generated_expression') }), loadingExpression && _jsx(Progress, { variant: 'ring', placement: 'local' })] }), onInsert && (_jsx(Button, { as: StyledInsertButton, onClick: () => onInsert(generatedExpressionHandler.current?.getValue() ?? ''), "data-testid": testIds.insert, children: t('insert') })), _jsx(Text, { variant: 'h4', children: t('library') })] })), _jsx(SearchInput, { testId: testIds.search, ...search }), _jsx(ExpressionBuilderContext.Provider, { value: ctxValue, children: _jsx(ExpressionList, { testId: testIds.root, ...list, onItemAdd: onItemAdd }) })] })] })), _jsxs(Flex, { container: {
|
|
73
|
+
}, readOnly: true, testId: testIds.generatedExpression }), _jsx(Text, { variant: 'secondary', children: t('verify_ai_generated_expression') }), loadingExpression && _jsx(Progress, { variant: 'ring', placement: 'local' })] }), onInsert && (_jsx(Button, { as: StyledInsertButton, onClick: () => onInsert(generatedExpressionHandler.current?.getValue() ?? ''), "data-testid": testIds.insert, children: t('insert') })), _jsx(Text, { variant: 'h4', children: t('library') })] })), _jsx(SearchInput, { testId: testIds.search, ...search }), _jsx(ExpressionBuilderContext.Provider, { value: ctxValue, children: _jsx(ExpressionList, { testId: testIds.root, ...list, onItemAdd: onItemAdd, scrollableRef: scrollableRef }) })] })] })), _jsxs(Flex, { container: {
|
|
73
74
|
direction: 'column',
|
|
74
75
|
gap: 1,
|
|
75
76
|
pad: [1, 2, 1, 1]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionBuilder.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionBuilder.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useImperativeHandle, useMemo, useRef, useEffect } from 'react';\nimport type { PropsWithoutRef } from 'react';\n\nimport {\n Flex,\n SearchInput,\n useI18n,\n VisuallyHiddenText,\n withTestIds,\n useTestIds,\n useLiveLog,\n useAfterInitialEffect,\n Label,\n Text,\n Progress,\n AIButton,\n Button,\n TextArea\n} from '@pega/cosmos-react-core';\nimport type { ForwardRefForwardPropsComponent } from '@pega/cosmos-react-core';\n\nimport type { ExpressionItemProps, ExpressionBuilderProps } from './ExpressionBuilder.types';\nimport type { EditorState } from './CodeEditor/CodeEditor.types';\nimport ExpressionList from './ExpressionList';\nimport {\n StyledExpressionWrapper,\n StyledClearButton,\n StyledExplanationContainer,\n StyledExpressionBuilder,\n StyledCodeEditorContainer,\n StyledExplainContainer,\n StyledExpressions,\n StyledFormField,\n StyledGeneratedExpression,\n StyledInsertButton\n} from './ExpressionBuilder.styles';\nimport CodeEditor from './CodeEditor/CodeEditor';\nimport ExpressionBuilderContext from './ExpressionBuilderContext';\nimport { getExpressionBuilderIds } from './ExpressionBuilder.test-ids';\n\nconst ExpressionBuilder: ForwardRefForwardPropsComponent<ExpressionBuilderProps> = forwardRef(\n (\n {\n testId,\n list,\n search,\n errors,\n defaultValue,\n handle,\n showEditorOnly = false,\n fetchSuggestions,\n loading,\n readOnly,\n onChange,\n inLineErrors,\n placeholder,\n generateExplanation,\n label,\n required,\n additionalInfo,\n generateExpression,\n ...restProps\n }: PropsWithoutRef<ExpressionBuilderProps>,\n ref: ExpressionBuilderProps['ref']\n ) => {\n const t = useI18n();\n const { announcePolite } = useLiveLog();\n const textAreaRef = useRef<HTMLTextAreaElement | null>(null);\n const codeEditorHandle = useRef<EditorState>(null);\n const generatedExpressionHandler = useRef<EditorState>(null);\n const testIds = useTestIds(testId, getExpressionBuilderIds);\n const {\n describeExpressionTextArea,\n onGenerateExpression,\n loadingExpression = false,\n generatedExpression,\n onInsert\n } = generateExpression || {};\n\n const getExpression = () => {\n return codeEditorHandle.current?.getValue() || '';\n };\n\n const insertExpression = (text: string, replaceContent?: boolean) => {\n return codeEditorHandle.current?.insertText(text, replaceContent);\n };\n\n useImperativeHandle(\n handle,\n () => ({\n getExpression,\n ...(!!generateExpression && { insertExpression })\n }),\n [getExpression, insertExpression]\n );\n\n const addExpression = (expression: string) => {\n codeEditorHandle.current?.insertText(expression);\n };\n const onItemAdd = (id: ExpressionItemProps['id']) => {\n list.onItemAdd(id, addExpression);\n };\n\n const ctxValue = useMemo(\n () => ({\n accent: search.accent\n }),\n [search.accent]\n );\n\n useAfterInitialEffect(() => {\n if (generateExplanation?.loadingExplanation) {\n announcePolite({ message: t('generating_explanation') });\n } else if (generateExplanation?.explanation) {\n announcePolite({ message: t('explanation_generated') });\n }\n }, [generateExplanation?.loadingExplanation, generateExplanation?.explanation]);\n\n useAfterInitialEffect(() => {\n if (loadingExpression) {\n announcePolite({ message: t('generating_expression') });\n }\n if (generatedExpression && !loadingExpression) {\n announcePolite({ message: t('expression_generated') });\n }\n }, [loadingExpression, generatedExpression]);\n\n useEffect(() => {\n if (generatedExpression !== undefined) {\n generatedExpressionHandler.current?.insertText(generatedExpression, true);\n }\n }, [generatedExpression]);\n\n return (\n <StyledExpressionBuilder\n data-testid={testIds.root}\n {...restProps}\n ref={ref}\n container={{\n justify: 'between'\n }}\n item={{\n grow: 1\n }}\n showEditorOnly={showEditorOnly}\n showGenerateExpression={!!generateExpression}\n >\n {/* Results count and Column 1 */}\n {!readOnly && !showEditorOnly && (\n <>\n <VisuallyHiddenText aria-live='polite' role='status'>\n {t('results_count', [list.items?.length || 0], { count: list.items?.length || 0 })}\n </VisuallyHiddenText>\n <Flex\n container={{\n direction: 'column',\n justify: 'between',\n gap: 1,\n pad: [1, 1, 1, 2]\n }}\n item={{\n grow: 1,\n basis: '50%'\n }}\n as={generateExpression ? StyledExpressions : undefined}\n >\n {generateExpression && (\n <>\n <TextArea\n label={t('describe_expression')}\n defaultValue={describeExpressionTextArea?.defaultValue}\n autoResize={false}\n additionalInfo={describeExpressionTextArea?.additionalInfo}\n placeholder={describeExpressionTextArea?.placeholder}\n info={describeExpressionTextArea?.error}\n status={describeExpressionTextArea?.error ? 'error' : undefined}\n testId={testIds.describeExpression}\n ref={textAreaRef}\n row={3}\n />\n\n <Flex container item={{ alignSelf: 'end' }}>\n {loadingExpression ? (\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n {t('generating_expression')}\n <Progress placement='inline' />\n </Flex>\n ) : (\n onGenerateExpression && (\n <AIButton\n onClick={() => onGenerateExpression(textAreaRef.current?.value || '')}\n label={t('generate')}\n variant='secondary'\n data-testid={testIds.generate}\n />\n )\n )}\n </Flex>\n\n <Flex\n container={{ direction: 'column' }}\n item={{ grow: 1 }}\n as={StyledGeneratedExpression}\n >\n <Label>{t('generated_expression')}</Label>\n <CodeEditor\n codeEditorHandle={generatedExpressionHandler}\n editorConfigProps={{\n mode: 'expression',\n readOnly: true\n }}\n readOnly\n testId={testIds.generatedExpression}\n />\n <Text variant='secondary'>{t('verify_ai_generated_expression')}</Text>\n {loadingExpression && <Progress variant='ring' placement='local' />}\n </Flex>\n\n {onInsert && (\n <Button\n as={StyledInsertButton}\n onClick={() => onInsert(generatedExpressionHandler.current?.getValue() ?? '')}\n data-testid={testIds.insert}\n >\n {t('insert')}\n </Button>\n )}\n\n <Text variant='h4'>{t('library')}</Text>\n </>\n )}\n <SearchInput testId={testIds.search} {...search} />\n <ExpressionBuilderContext.Provider value={ctxValue}>\n <ExpressionList testId={testIds.root} {...list} onItemAdd={onItemAdd} />\n </ExpressionBuilderContext.Provider>\n </Flex>\n </>\n )}\n {/* Column 2 */}\n <Flex\n container={{\n direction: 'column',\n gap: 1,\n pad: [1, 2, 1, 1]\n }}\n item={{\n grow: 1,\n basis: '50%'\n }}\n as={StyledExpressionWrapper}\n >\n <Flex\n container\n as={StyledCodeEditorContainer}\n explainEnabled={!!generateExplanation?.onExplain}\n >\n {label ? (\n <StyledFormField label={label} additionalInfo={additionalInfo} required={required}>\n <CodeEditor\n testId={testIds.root}\n fetchSuggestions={fetchSuggestions}\n codeEditorHandle={codeEditorHandle}\n autoCompleteTriggers={['.', '@', ':', '#', '(', ')']}\n editorConfigProps={{\n mode: 'expression',\n readOnly,\n lineNumbers: true,\n placeholder\n }}\n defaultValue={defaultValue}\n loading={loading}\n errors={errors}\n readOnly={readOnly}\n onChange={onChange}\n aria-label={t('expression_editor')}\n showEditorOnly={showEditorOnly}\n inLineErrors={inLineErrors}\n />\n </StyledFormField>\n ) : (\n <CodeEditor\n testId={testIds.root}\n fetchSuggestions={fetchSuggestions}\n codeEditorHandle={codeEditorHandle}\n autoCompleteTriggers={['.', '@', ':', '#', '(', ')']}\n editorConfigProps={{\n mode: 'expression',\n readOnly,\n lineNumbers: true,\n placeholder\n }}\n defaultValue={defaultValue}\n loading={loading}\n errors={errors}\n readOnly={readOnly}\n onChange={onChange}\n aria-label={t('expression_editor')}\n showEditorOnly={showEditorOnly}\n inLineErrors={inLineErrors}\n />\n )}\n </Flex>\n <Flex container={{ direction: 'column', gap: 1 }}>\n <Flex container item={{ alignSelf: 'end' }} as={StyledExplainContainer}>\n {generateExplanation?.loadingExplanation ? (\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n {t('generating_explanation')}\n <Progress placement='inline' />\n </Flex>\n ) : (\n <AIButton\n onClick={generateExplanation?.onExplain}\n label={t('explain')}\n variant='secondary'\n data-testid={testIds.explain}\n />\n )}\n </Flex>\n <Flex as={StyledExplanationContainer} container={{ direction: 'column' }}>\n <TextArea\n label={t('generated_explanation')}\n value={generateExplanation?.explanation}\n autoResize={false}\n testId={testIds.explanation}\n readOnly\n />\n {generateExplanation?.loadingExplanation && (\n <Progress variant='ring' placement='local' />\n )}\n </Flex>\n\n {generateExplanation?.onClearExplanation && (\n <Button\n as={StyledClearButton}\n onClick={generateExplanation.onClearExplanation}\n data-testid={testIds.clear}\n >\n {t('clear')}\n </Button>\n )}\n </Flex>\n </Flex>\n </StyledExpressionBuilder>\n );\n }\n);\n\nexport default withTestIds(ExpressionBuilder, getExpressionBuilderIds);\n"]}
|
|
1
|
+
{"version":3,"file":"ExpressionBuilder.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionBuilder.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useImperativeHandle, useMemo, useRef, useEffect } from 'react';\nimport type { PropsWithoutRef } from 'react';\n\nimport {\n Flex,\n SearchInput,\n useI18n,\n VisuallyHiddenText,\n withTestIds,\n useTestIds,\n useLiveLog,\n useAfterInitialEffect,\n Label,\n Text,\n Progress,\n AIButton,\n Button,\n TextArea\n} from '@pega/cosmos-react-core';\nimport type { ForwardRefForwardPropsComponent } from '@pega/cosmos-react-core';\n\nimport type { ExpressionItemProps, ExpressionBuilderProps } from './ExpressionBuilder.types';\nimport type { EditorState } from './CodeEditor/CodeEditor.types';\nimport ExpressionList from './ExpressionList';\nimport {\n StyledExpressionWrapper,\n StyledClearButton,\n StyledExplanationContainer,\n StyledExpressionBuilder,\n StyledCodeEditorContainer,\n StyledExplainContainer,\n StyledExpressions,\n StyledFormField,\n StyledGeneratedExpression,\n StyledInsertButton\n} from './ExpressionBuilder.styles';\nimport CodeEditor from './CodeEditor/CodeEditor';\nimport ExpressionBuilderContext from './ExpressionBuilderContext';\nimport { getExpressionBuilderIds } from './ExpressionBuilder.test-ids';\n\nconst ExpressionBuilder: ForwardRefForwardPropsComponent<ExpressionBuilderProps> = forwardRef(\n (\n {\n testId,\n list,\n search,\n errors,\n defaultValue,\n handle,\n showEditorOnly = false,\n fetchSuggestions,\n loading,\n readOnly,\n onChange,\n inLineErrors,\n placeholder,\n generateExplanation,\n label,\n required,\n additionalInfo,\n generateExpression,\n ...restProps\n }: PropsWithoutRef<ExpressionBuilderProps>,\n ref: ExpressionBuilderProps['ref']\n ) => {\n const t = useI18n();\n const { announcePolite } = useLiveLog();\n const textAreaRef = useRef<HTMLTextAreaElement | null>(null);\n const codeEditorHandle = useRef<EditorState>(null);\n const generatedExpressionHandler = useRef<EditorState>(null);\n const scrollableRef = useRef<HTMLDivElement>(null);\n const testIds = useTestIds(testId, getExpressionBuilderIds);\n const {\n describeExpressionTextArea,\n onGenerateExpression,\n loadingExpression = false,\n generatedExpression,\n onInsert\n } = generateExpression || {};\n\n const getExpression = () => {\n return codeEditorHandle.current?.getValue() || '';\n };\n\n const insertExpression = (text: string, replaceContent?: boolean) => {\n return codeEditorHandle.current?.insertText(text, replaceContent);\n };\n\n useImperativeHandle(\n handle,\n () => ({\n getExpression,\n ...(!!generateExpression && { insertExpression })\n }),\n [getExpression, insertExpression]\n );\n\n const addExpression = (expression: string) => {\n codeEditorHandle.current?.insertText(expression);\n };\n const onItemAdd = (id: ExpressionItemProps['id']) => {\n list.onItemAdd(id, addExpression);\n };\n\n const ctxValue = useMemo(\n () => ({\n accent: search.accent\n }),\n [search.accent]\n );\n\n useAfterInitialEffect(() => {\n if (generateExplanation?.loadingExplanation) {\n announcePolite({ message: t('generating_explanation') });\n } else if (generateExplanation?.explanation) {\n announcePolite({ message: t('explanation_generated') });\n }\n }, [generateExplanation?.loadingExplanation, generateExplanation?.explanation]);\n\n useAfterInitialEffect(() => {\n if (loadingExpression) {\n announcePolite({ message: t('generating_expression') });\n }\n if (generatedExpression && !loadingExpression) {\n announcePolite({ message: t('expression_generated') });\n }\n }, [loadingExpression, generatedExpression]);\n\n useEffect(() => {\n if (generatedExpression !== undefined) {\n generatedExpressionHandler.current?.insertText(generatedExpression, true);\n }\n }, [generatedExpression]);\n\n return (\n <StyledExpressionBuilder\n data-testid={testIds.root}\n {...restProps}\n ref={ref}\n container={{\n justify: 'between'\n }}\n item={{\n grow: 1\n }}\n showEditorOnly={showEditorOnly}\n showGenerateExpression={!!generateExpression}\n >\n {/* Results count and Column 1 */}\n {!readOnly && !showEditorOnly && (\n <>\n <VisuallyHiddenText aria-live='polite' role='status'>\n {t('results_count', [list.items?.length || 0], { count: list.items?.length || 0 })}\n </VisuallyHiddenText>\n <Flex\n container={{\n direction: 'column',\n justify: 'between',\n gap: 1,\n pad: [1, 1, 1, 2]\n }}\n item={{\n grow: 1,\n basis: '50%'\n }}\n as={generateExpression ? StyledExpressions : undefined}\n ref={scrollableRef}\n >\n {generateExpression && (\n <>\n <TextArea\n label={t('describe_expression')}\n defaultValue={describeExpressionTextArea?.defaultValue}\n autoResize={false}\n additionalInfo={describeExpressionTextArea?.additionalInfo}\n placeholder={describeExpressionTextArea?.placeholder}\n info={describeExpressionTextArea?.error}\n status={describeExpressionTextArea?.error ? 'error' : undefined}\n testId={testIds.describeExpression}\n ref={textAreaRef}\n row={3}\n />\n\n <Flex container item={{ alignSelf: 'end' }}>\n {loadingExpression ? (\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n {t('generating_expression')}\n <Progress placement='inline' />\n </Flex>\n ) : (\n onGenerateExpression && (\n <AIButton\n onClick={() => onGenerateExpression(textAreaRef.current?.value || '')}\n label={t('generate')}\n variant='secondary'\n data-testid={testIds.generate}\n />\n )\n )}\n </Flex>\n\n <Flex\n container={{ direction: 'column' }}\n item={{ grow: 1 }}\n as={StyledGeneratedExpression}\n >\n <Label>{t('generated_expression')}</Label>\n <CodeEditor\n codeEditorHandle={generatedExpressionHandler}\n editorConfigProps={{\n mode: 'expression',\n readOnly: true\n }}\n readOnly\n testId={testIds.generatedExpression}\n />\n <Text variant='secondary'>{t('verify_ai_generated_expression')}</Text>\n {loadingExpression && <Progress variant='ring' placement='local' />}\n </Flex>\n\n {onInsert && (\n <Button\n as={StyledInsertButton}\n onClick={() => onInsert(generatedExpressionHandler.current?.getValue() ?? '')}\n data-testid={testIds.insert}\n >\n {t('insert')}\n </Button>\n )}\n\n <Text variant='h4'>{t('library')}</Text>\n </>\n )}\n <SearchInput testId={testIds.search} {...search} />\n <ExpressionBuilderContext.Provider value={ctxValue}>\n <ExpressionList\n testId={testIds.root}\n {...list}\n onItemAdd={onItemAdd}\n scrollableRef={scrollableRef}\n />\n </ExpressionBuilderContext.Provider>\n </Flex>\n </>\n )}\n {/* Column 2 */}\n <Flex\n container={{\n direction: 'column',\n gap: 1,\n pad: [1, 2, 1, 1]\n }}\n item={{\n grow: 1,\n basis: '50%'\n }}\n as={StyledExpressionWrapper}\n >\n <Flex\n container\n as={StyledCodeEditorContainer}\n explainEnabled={!!generateExplanation?.onExplain}\n >\n {label ? (\n <StyledFormField label={label} additionalInfo={additionalInfo} required={required}>\n <CodeEditor\n testId={testIds.root}\n fetchSuggestions={fetchSuggestions}\n codeEditorHandle={codeEditorHandle}\n autoCompleteTriggers={['.', '@', ':', '#', '(', ')']}\n editorConfigProps={{\n mode: 'expression',\n readOnly,\n lineNumbers: true,\n placeholder\n }}\n defaultValue={defaultValue}\n loading={loading}\n errors={errors}\n readOnly={readOnly}\n onChange={onChange}\n aria-label={t('expression_editor')}\n showEditorOnly={showEditorOnly}\n inLineErrors={inLineErrors}\n />\n </StyledFormField>\n ) : (\n <CodeEditor\n testId={testIds.root}\n fetchSuggestions={fetchSuggestions}\n codeEditorHandle={codeEditorHandle}\n autoCompleteTriggers={['.', '@', ':', '#', '(', ')']}\n editorConfigProps={{\n mode: 'expression',\n readOnly,\n lineNumbers: true,\n placeholder\n }}\n defaultValue={defaultValue}\n loading={loading}\n errors={errors}\n readOnly={readOnly}\n onChange={onChange}\n aria-label={t('expression_editor')}\n showEditorOnly={showEditorOnly}\n inLineErrors={inLineErrors}\n />\n )}\n </Flex>\n <Flex container={{ direction: 'column', gap: 1 }}>\n <Flex container item={{ alignSelf: 'end' }} as={StyledExplainContainer}>\n {generateExplanation?.loadingExplanation ? (\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n {t('generating_explanation')}\n <Progress placement='inline' />\n </Flex>\n ) : (\n <AIButton\n onClick={generateExplanation?.onExplain}\n label={t('explain')}\n variant='secondary'\n data-testid={testIds.explain}\n />\n )}\n </Flex>\n <Flex as={StyledExplanationContainer} container={{ direction: 'column' }}>\n <TextArea\n label={t('generated_explanation')}\n value={generateExplanation?.explanation}\n autoResize={false}\n testId={testIds.explanation}\n readOnly\n />\n {generateExplanation?.loadingExplanation && (\n <Progress variant='ring' placement='local' />\n )}\n </Flex>\n\n {generateExplanation?.onClearExplanation && (\n <Button\n as={StyledClearButton}\n onClick={generateExplanation.onClearExplanation}\n data-testid={testIds.clear}\n >\n {t('clear')}\n </Button>\n )}\n </Flex>\n </Flex>\n </StyledExpressionBuilder>\n );\n }\n);\n\nexport default withTestIds(ExpressionBuilder, getExpressionBuilderIds);\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComponentType, Ref } from 'react';
|
|
1
|
+
import type { ComponentType, Ref, RefObject } from 'react';
|
|
2
2
|
import type { BaseProps, EmptyStateProps, OmitStrict, SearchInputProps, FieldValueListProps, MenuProps, TestIdProp, FormControlProps, TextAreaProps } from '@pega/cosmos-react-core';
|
|
3
3
|
import type { CodeEditorProps, CustomPositionProps } from './CodeEditor/CodeEditor.types';
|
|
4
4
|
export interface ExpressionItemProps extends TestIdProp {
|
|
@@ -40,6 +40,7 @@ export interface ExpressionListProps extends BaseProps, TestIdProp {
|
|
|
40
40
|
details: {
|
|
41
41
|
[id: string]: ExpressionDetailsProps;
|
|
42
42
|
};
|
|
43
|
+
scrollableRef: RefObject<HTMLDivElement>;
|
|
43
44
|
}
|
|
44
45
|
export interface HandleValue {
|
|
45
46
|
/** Returns the expression value */
|
|
@@ -52,7 +53,7 @@ export interface ExpressionBuilderProps extends BaseProps, TestIdProp, Pick<Form
|
|
|
52
53
|
placeholder?: string;
|
|
53
54
|
ref?: Ref<HTMLDivElement>;
|
|
54
55
|
/** Expression items list */
|
|
55
|
-
list: OmitStrict<ExpressionListProps, 'ref' | 'onItemAdd'> & {
|
|
56
|
+
list: OmitStrict<ExpressionListProps, 'ref' | 'onItemAdd' | 'scrollableRef'> & {
|
|
56
57
|
onItemAdd: (id: ExpressionItemProps['id'], addExpression: (expression: string) => void) => void;
|
|
57
58
|
};
|
|
58
59
|
/** Search input props */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionBuilder.types.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionBuilder.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ExpressionBuilder.types.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionBuilder.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionBuilder.types.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionBuilder.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ComponentType, Ref } from 'react';\n\nimport type {\n BaseProps,\n EmptyStateProps,\n OmitStrict,\n SearchInputProps,\n FieldValueListProps,\n MenuProps,\n TestIdProp,\n FormControlProps,\n TextAreaProps\n} from '@pega/cosmos-react-core';\n\nimport type { CodeEditorProps, CustomPositionProps } from './CodeEditor/CodeEditor.types';\n\nexport interface ExpressionItemProps extends TestIdProp {\n /** Id of the item */\n id: string;\n /** Item name to be displayed as rule name */\n primary: string;\n /** Type of expression item. Eg: Decision, When, Automation etc. */\n type: string;\n /** Callback for add event */\n onAdd: (id: ExpressionItemProps['id']) => void;\n /** Callback for expand event */\n onExpand?: (id: ExpressionItemProps['id']) => void;\n /** Callback for collapse event */\n onCollapse?: (id: ExpressionItemProps['id']) => void;\n /** Show the expanded details */\n expanded?: boolean;\n /** Expression details to show in expanded view */\n details?: ExpressionDetailsProps;\n /** Matched field to be shown in expression item collapsed mode during search */\n matchedField?: { name: string; value: string };\n}\n\nexport interface ExpressionListProps extends BaseProps, TestIdProp {\n ref?: Ref<HTMLUListElement>;\n /** Expression builder items */\n items?: OmitStrict<ExpressionItemProps, 'onAdd' | 'onExpand' | 'onCollapse' | 'details'>[];\n /** Callback for item add */\n onItemAdd: ExpressionItemProps['onAdd'];\n /** Callback for item expand */\n onItemExpand?: ExpressionItemProps['onExpand'];\n /** Callback for item collapse */\n onItemCollapse?: ExpressionItemProps['onCollapse'];\n /** No items */\n emptyText?: EmptyStateProps['message'];\n /** Expanded items data */\n details: {\n [id: string]: ExpressionDetailsProps;\n };\n}\n\nexport interface HandleValue {\n /** Returns the expression value */\n getExpression: () => string;\n /** Insert the expression value */\n insertExpression?: (\n expression: string,\n replaceContent?: boolean,\n customCursorPosition?: CustomPositionProps\n ) => void;\n}\n\nexport interface ExpressionBuilderProps\n extends BaseProps,\n TestIdProp,\n Pick<FormControlProps, 'required' | 'label' | 'additionalInfo'>,\n Pick<\n CodeEditorProps,\n | 'defaultValue'\n | 'errors'\n | 'readOnly'\n | 'fetchSuggestions'\n | 'autoCompleteTriggers'\n | 'loading'\n | 'onBlur'\n | 'onChange'\n | 'inLineErrors'\n | 'isSingleLine'\n | 'aria-describedby'\n > {\n /** Placeholder text for the editor */\n placeholder?: string;\n ref?: Ref<HTMLDivElement>;\n /** Expression items list */\n list: OmitStrict<ExpressionListProps, 'ref' | 'onItemAdd'> & {\n onItemAdd: (id: ExpressionItemProps['id'], addExpression: (expression: string) => void) => void;\n };\n /** Search input props */\n search: Pick<\n Required<SearchInputProps>,\n 'filters' | 'onFilterChange' | 'onSearchChange' | 'value'\n > &\n Pick<SearchInputProps, 'defaultFilter'> &\n Pick<MenuProps, 'accent'>;\n\n /** Imperative handle */\n handle?: Ref<HandleValue>;\n /** Show only editor instead of expression list and expression details */\n showEditorOnly?: boolean;\n /** Expression explanation */\n generateExplanation: {\n loadingExplanation?: boolean;\n /** Explain expression */\n onExplain: () => void;\n /** Clearing explanation */\n onClearExplanation: () => void;\n /** Explanation of expression generated from AI */\n explanation?: string;\n };\n generateExpression?: {\n /** Describe expression textarea */\n describeExpressionTextArea?: Pick<\n TextAreaProps,\n 'additionalInfo' | 'placeholder' | 'defaultValue'\n > & {\n error?: string;\n };\n /** Generate expression callback */\n onGenerateExpression: (prompt: string) => void;\n /** Expression generation in-progress */\n loadingExpression?: boolean;\n /** Expression generated from AI */\n generatedExpression?: string;\n /** Insert expression callback */\n onInsert: (generatedExpression: string) => void;\n };\n}\n\nexport interface InputParams<P> {\n id: string;\n renderer: ComponentType<P>;\n rendererProps: P;\n}\n\nexport interface ExpressionDetailsProps extends BaseProps, TestIdProp {\n /** Primary details of the expression */\n primary: Required<FieldValueListProps['fields']>;\n /** Output params of the expression */\n outputParams?: Required<FieldValueListProps['fields']>;\n /** Input params of the expression */\n inputParams?: InputParams<any>[];\n /** Ref to the component */\n ref?: Ref<HTMLElement>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ExpressionBuilder.types.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionBuilder.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ComponentType, Ref, RefObject } from 'react';\n\nimport type {\n BaseProps,\n EmptyStateProps,\n OmitStrict,\n SearchInputProps,\n FieldValueListProps,\n MenuProps,\n TestIdProp,\n FormControlProps,\n TextAreaProps\n} from '@pega/cosmos-react-core';\n\nimport type { CodeEditorProps, CustomPositionProps } from './CodeEditor/CodeEditor.types';\n\nexport interface ExpressionItemProps extends TestIdProp {\n /** Id of the item */\n id: string;\n /** Item name to be displayed as rule name */\n primary: string;\n /** Type of expression item. Eg: Decision, When, Automation etc. */\n type: string;\n /** Callback for add event */\n onAdd: (id: ExpressionItemProps['id']) => void;\n /** Callback for expand event */\n onExpand?: (id: ExpressionItemProps['id']) => void;\n /** Callback for collapse event */\n onCollapse?: (id: ExpressionItemProps['id']) => void;\n /** Show the expanded details */\n expanded?: boolean;\n /** Expression details to show in expanded view */\n details?: ExpressionDetailsProps;\n /** Matched field to be shown in expression item collapsed mode during search */\n matchedField?: { name: string; value: string };\n}\n\nexport interface ExpressionListProps extends BaseProps, TestIdProp {\n ref?: Ref<HTMLUListElement>;\n /** Expression builder items */\n items?: OmitStrict<ExpressionItemProps, 'onAdd' | 'onExpand' | 'onCollapse' | 'details'>[];\n /** Callback for item add */\n onItemAdd: ExpressionItemProps['onAdd'];\n /** Callback for item expand */\n onItemExpand?: ExpressionItemProps['onExpand'];\n /** Callback for item collapse */\n onItemCollapse?: ExpressionItemProps['onCollapse'];\n /** No items */\n emptyText?: EmptyStateProps['message'];\n /** Expanded items data */\n details: {\n [id: string]: ExpressionDetailsProps;\n };\n scrollableRef: RefObject<HTMLDivElement>;\n}\n\nexport interface HandleValue {\n /** Returns the expression value */\n getExpression: () => string;\n /** Insert the expression value */\n insertExpression?: (\n expression: string,\n replaceContent?: boolean,\n customCursorPosition?: CustomPositionProps\n ) => void;\n}\n\nexport interface ExpressionBuilderProps\n extends BaseProps,\n TestIdProp,\n Pick<FormControlProps, 'required' | 'label' | 'additionalInfo'>,\n Pick<\n CodeEditorProps,\n | 'defaultValue'\n | 'errors'\n | 'readOnly'\n | 'fetchSuggestions'\n | 'autoCompleteTriggers'\n | 'loading'\n | 'onBlur'\n | 'onChange'\n | 'inLineErrors'\n | 'isSingleLine'\n | 'aria-describedby'\n > {\n /** Placeholder text for the editor */\n placeholder?: string;\n ref?: Ref<HTMLDivElement>;\n /** Expression items list */\n list: OmitStrict<ExpressionListProps, 'ref' | 'onItemAdd' | 'scrollableRef'> & {\n onItemAdd: (id: ExpressionItemProps['id'], addExpression: (expression: string) => void) => void;\n };\n /** Search input props */\n search: Pick<\n Required<SearchInputProps>,\n 'filters' | 'onFilterChange' | 'onSearchChange' | 'value'\n > &\n Pick<SearchInputProps, 'defaultFilter'> &\n Pick<MenuProps, 'accent'>;\n\n /** Imperative handle */\n handle?: Ref<HandleValue>;\n /** Show only editor instead of expression list and expression details */\n showEditorOnly?: boolean;\n /** Expression explanation */\n generateExplanation: {\n loadingExplanation?: boolean;\n /** Explain expression */\n onExplain: () => void;\n /** Clearing explanation */\n onClearExplanation: () => void;\n /** Explanation of expression generated from AI */\n explanation?: string;\n };\n generateExpression?: {\n /** Describe expression textarea */\n describeExpressionTextArea?: Pick<\n TextAreaProps,\n 'additionalInfo' | 'placeholder' | 'defaultValue'\n > & {\n error?: string;\n };\n /** Generate expression callback */\n onGenerateExpression: (prompt: string) => void;\n /** Expression generation in-progress */\n loadingExpression?: boolean;\n /** Expression generated from AI */\n generatedExpression?: string;\n /** Insert expression callback */\n onInsert: (generatedExpression: string) => void;\n };\n}\n\nexport interface InputParams<P> {\n id: string;\n renderer: ComponentType<P>;\n rendererProps: P;\n}\n\nexport interface ExpressionDetailsProps extends BaseProps, TestIdProp {\n /** Primary details of the expression */\n primary: Required<FieldValueListProps['fields']>;\n /** Output params of the expression */\n outputParams?: Required<FieldValueListProps['fields']>;\n /** Input params of the expression */\n inputParams?: InputParams<any>[];\n /** Ref to the component */\n ref?: Ref<HTMLElement>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionList.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionList.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExpressionList.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionList.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAuB,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;;;;AAkF1F,wBAAqE"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createElement as _createElement } from "react";
|
|
3
|
-
import { forwardRef, useState,
|
|
4
|
-
import { EmptyState, useItemIntersection,
|
|
3
|
+
import { forwardRef, useState, useEffect } from 'react';
|
|
4
|
+
import { EmptyState, useItemIntersection, useTestIds, withTestIds } from '@pega/cosmos-react-core';
|
|
5
5
|
import ExpressionItem from './ExpressionItem';
|
|
6
6
|
import { StyledExpressionList } from './ExpressionBuilder.styles';
|
|
7
7
|
import { getExpressionListTestIds } from './ExpressionBuilder.test-ids';
|
|
8
8
|
const LIST_OFFSET = 20;
|
|
9
|
-
const ExpressionList = forwardRef(function ExpressionList({ testId, items = [], emptyText, onItemAdd, onItemExpand, onItemCollapse, details, ...restProps }, ref) {
|
|
9
|
+
const ExpressionList = forwardRef(function ExpressionList({ testId, items = [], emptyText, onItemAdd, onItemExpand, onItemCollapse, details, scrollableRef, ...restProps }, ref) {
|
|
10
10
|
const [count, setCount] = useState(Math.min(LIST_OFFSET, items.length));
|
|
11
|
-
const listRef = useRef(null);
|
|
12
11
|
useEffect(() => {
|
|
13
|
-
|
|
12
|
+
if (items.length > 0) {
|
|
13
|
+
setCount(Math.min(LIST_OFFSET, items.length));
|
|
14
|
+
}
|
|
14
15
|
}, [items]);
|
|
15
|
-
const
|
|
16
|
-
useItemIntersection(
|
|
16
|
+
const testIds = useTestIds(testId, getExpressionListTestIds);
|
|
17
|
+
useItemIntersection(scrollableRef, count - 1, () => {
|
|
17
18
|
setCount(prev => Math.min(items.length, prev + LIST_OFFSET));
|
|
18
|
-
},
|
|
19
|
+
}, `ul[data-testid="${testIds.root}"] > li`);
|
|
19
20
|
const [expandedItems, setExpandedItems] = useState([]);
|
|
20
21
|
const handleItemExpand = (id) => {
|
|
21
22
|
setExpandedItems(prev => {
|
|
@@ -35,8 +36,7 @@ const ExpressionList = forwardRef(function ExpressionList({ testId, items = [],
|
|
|
35
36
|
return prev.filter(itemId => itemId !== id);
|
|
36
37
|
});
|
|
37
38
|
};
|
|
38
|
-
|
|
39
|
-
return (_jsx(StyledExpressionList, { ...restProps, ref: consolidatedRef, "data-testid": testIds.root, children: items && items.length > 0 ? (items.slice(0, count).map(item => {
|
|
39
|
+
return (_jsx(StyledExpressionList, { ...restProps, ref: ref, "data-testid": testIds.root, children: items && items.length > 0 ? (items.slice(0, count).map(item => {
|
|
40
40
|
return (_createElement(ExpressionItem, { ...item, onAdd: onItemAdd, onExpand: handleItemExpand, onCollapse: handleItemCollapse, expanded: expandedItems.includes(item.id), key: item.id, details: details?.[item.id] }));
|
|
41
41
|
})) : (_jsx(EmptyState, { message: emptyText })) }));
|
|
42
42
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressionList.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionList.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"ExpressionList.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionList.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAwB,MAAM,OAAO,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAInG,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,cAAc,GAAyD,UAAU,CACrF,SAAS,cAAc,CACrB,EACE,MAAM,EACN,KAAK,GAAG,EAAE,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,cAAc,EACd,OAAO,EACP,aAAa,EACb,GAAG,SAAS,EACyB,EACvC,GAA+B;IAE/B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAExE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAE7D,mBAAmB,CACjB,aAAa,EACb,KAAK,GAAG,CAAC,EACT,GAAG,EAAE;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;IAC/D,CAAC,EACD,mBAAmB,OAAO,CAAC,IAAI,SAAS,CACzC,CAAC;IACF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAA8B,EAAE,CAAC,CAAC;IAEpF,MAAM,gBAAgB,GAAG,CAAC,EAA6B,EAAE,EAAE;QACzD,gBAAgB,CAAC,IAAI,CAAC,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,SAAS,KAAK,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;YACnB,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,EAA6B,EAAE,EAAE;QAC3D,gBAAgB,CAAC,IAAI,CAAC,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,SAAS,KAAK,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAO,CACL,KAAC,oBAAoB,OAAK,SAAS,EAAE,GAAG,EAAE,GAAG,iBAAe,OAAO,CAAC,IAAI,YACrE,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC3B,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC/B,OAAO,CACL,eAAC,cAAc,OACT,IAAI,EACR,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,kBAAkB,EAC9B,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EACzC,GAAG,EAAE,IAAI,CAAC,EAAE,EACZ,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAC3B,CACH,CAAC;QACJ,CAAC,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IAAC,OAAO,EAAE,SAAS,GAAI,CACnC,GACoB,CACxB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,WAAW,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC","sourcesContent":["import { forwardRef, useState, useEffect, type PropsWithoutRef } from 'react';\n\nimport { EmptyState, useItemIntersection, useTestIds, withTestIds } from '@pega/cosmos-react-core';\nimport type { ForwardRefForwardPropsComponent } from '@pega/cosmos-react-core';\n\nimport type { ExpressionItemProps, ExpressionListProps } from './ExpressionBuilder.types';\nimport ExpressionItem from './ExpressionItem';\nimport { StyledExpressionList } from './ExpressionBuilder.styles';\nimport { getExpressionListTestIds } from './ExpressionBuilder.test-ids';\n\nconst LIST_OFFSET = 20;\nconst ExpressionList: ForwardRefForwardPropsComponent<ExpressionListProps> = forwardRef(\n function ExpressionList(\n {\n testId,\n items = [],\n emptyText,\n onItemAdd,\n onItemExpand,\n onItemCollapse,\n details,\n scrollableRef,\n ...restProps\n }: PropsWithoutRef<ExpressionListProps>,\n ref: ExpressionListProps['ref']\n ) {\n const [count, setCount] = useState(Math.min(LIST_OFFSET, items.length));\n\n useEffect(() => {\n if (items.length > 0) {\n setCount(Math.min(LIST_OFFSET, items.length));\n }\n }, [items]);\n\n const testIds = useTestIds(testId, getExpressionListTestIds);\n\n useItemIntersection(\n scrollableRef,\n count - 1,\n () => {\n setCount(prev => Math.min(items.length, prev + LIST_OFFSET));\n },\n `ul[data-testid=\"${testIds.root}\"] > li`\n );\n const [expandedItems, setExpandedItems] = useState<ExpressionItemProps['id'][]>([]);\n\n const handleItemExpand = (id: ExpressionItemProps['id']) => {\n setExpandedItems(prev => {\n const itemIndex = prev.indexOf(id);\n if (itemIndex !== -1) return prev;\n onItemExpand?.(id);\n return [...prev, id];\n });\n };\n\n const handleItemCollapse = (id: ExpressionItemProps['id']) => {\n setExpandedItems(prev => {\n const itemIndex = prev.indexOf(id);\n if (itemIndex === -1) return prev;\n onItemCollapse?.(id);\n return prev.filter(itemId => itemId !== id);\n });\n };\n return (\n <StyledExpressionList {...restProps} ref={ref} data-testid={testIds.root}>\n {items && items.length > 0 ? (\n items.slice(0, count).map(item => {\n return (\n <ExpressionItem\n {...item}\n onAdd={onItemAdd}\n onExpand={handleItemExpand}\n onCollapse={handleItemCollapse}\n expanded={expandedItems.includes(item.id)}\n key={item.id}\n details={details?.[item.id]}\n />\n );\n })\n ) : (\n <EmptyState message={emptyText} />\n )}\n </StyledExpressionList>\n );\n }\n);\n\nexport default withTestIds(ExpressionList, getExpressionListTestIds);\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/cosmos-react-build",
|
|
3
|
-
"version": "9.0.0-build.12.
|
|
3
|
+
"version": "9.0.0-build.12.4",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"author": "Pegasystems",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"build": "tsc -b tsconfig.build.json"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@pega/cosmos-react-core": "9.0.0-build.12.
|
|
18
|
-
"@pega/cosmos-react-dnd": "9.0.0-build.12.
|
|
19
|
-
"@pega/cosmos-react-rte": "9.0.0-build.12.
|
|
17
|
+
"@pega/cosmos-react-core": "9.0.0-build.12.4",
|
|
18
|
+
"@pega/cosmos-react-dnd": "9.0.0-build.12.4",
|
|
19
|
+
"@pega/cosmos-react-rte": "9.0.0-build.12.4",
|
|
20
20
|
"@types/codemirror": "^5.60.15",
|
|
21
21
|
"@types/dagre": "^0.7.46",
|
|
22
22
|
"@types/react": "^17.0.62 || ^18.3.3",
|