mirror of
https://github.com/nocobase/nocobase
synced 2024-11-15 18:08:24 +00:00
Merge branch 'main' into T-2327-and-2771
This commit is contained in:
commit
8e7cb845d4
2
.github/workflows/nocobase-test-backend.yml
vendored
2
.github/workflows/nocobase-test-backend.yml
vendored
@ -136,7 +136,7 @@ jobs:
|
|||||||
container: node:${{ matrix.node_version }}
|
container: node:${{ matrix.node_version }}
|
||||||
services:
|
services:
|
||||||
mysql:
|
mysql:
|
||||||
image: mysql:8
|
image: mysql:8.2 # >= 8.3 will meet unsolved error: https://github.com/nocobase/nocobase/actions/runs/7581141593/job/20653828990?pr=3383
|
||||||
env:
|
env:
|
||||||
MYSQL_ROOT_PASSWORD: password
|
MYSQL_ROOT_PASSWORD: password
|
||||||
MYSQL_DATABASE: nocobase
|
MYSQL_DATABASE: nocobase
|
||||||
|
@ -167,6 +167,7 @@ Upload.Attachment = connect((props: UploadProps) => {
|
|||||||
if (info.file.status === 'done') {
|
if (info.file.status === 'done') {
|
||||||
onChange?.(toValue(list));
|
onChange?.(toValue(list));
|
||||||
}
|
}
|
||||||
|
onChange?.(toValue(list));
|
||||||
setFileList(list.map(toItem));
|
setFileList(list.map(toItem));
|
||||||
setSync(true);
|
setSync(true);
|
||||||
} else {
|
} else {
|
||||||
|
@ -5,11 +5,11 @@ import { Space } from 'antd';
|
|||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import React, { FC, useEffect, useMemo, useRef } from 'react';
|
import React, { FC, useEffect, useMemo, useRef } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
|
import { SchemaToolbarProvider, useSchemaInitializerRender, useSchemaSettingsRender } from '../application';
|
||||||
import { DragHandler, useCompile, useDesignable, useGridContext, useGridRowContext } from '../schema-component';
|
import { DragHandler, useCompile, useDesignable, useGridContext, useGridRowContext } from '../schema-component';
|
||||||
import { gridRowColWrap } from '../schema-initializer/utils';
|
import { gridRowColWrap } from '../schema-initializer/utils';
|
||||||
import { SchemaSettingsDropdown } from './SchemaSettings';
|
import { SchemaSettingsDropdown } from './SchemaSettings';
|
||||||
import { useGetAriaLabelOfDesigner } from './hooks/useGetAriaLabelOfDesigner';
|
import { useGetAriaLabelOfDesigner } from './hooks/useGetAriaLabelOfDesigner';
|
||||||
import { SchemaToolbarProvider, useSchemaInitializerRender, useSchemaSettingsRender } from '../application';
|
|
||||||
import { useStyles } from './styles';
|
import { useStyles } from './styles';
|
||||||
|
|
||||||
const titleCss = css`
|
const titleCss = css`
|
||||||
@ -160,7 +160,7 @@ export interface SchemaToolbarProps {
|
|||||||
showBackground?: boolean;
|
showBackground?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const SchemaToolbar: FC<SchemaToolbarProps> = (props) => {
|
const InternalSchemaToolbar: FC<SchemaToolbarProps> = (props) => {
|
||||||
const { title, initializer, settings, showBackground, showBorder = true, draggable = true } = props;
|
const { title, initializer, settings, showBackground, showBorder = true, draggable = true } = props;
|
||||||
const { designable } = useDesignable();
|
const { designable } = useDesignable();
|
||||||
const fieldSchema = useFieldSchema();
|
const fieldSchema = useFieldSchema();
|
||||||
@ -242,13 +242,13 @@ export const SchemaToolbar: FC<SchemaToolbarProps> = (props) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (toolbarElement) {
|
if (toolbarElement?.parentElement) {
|
||||||
toolbarElement.parentElement.addEventListener('mouseenter', show);
|
toolbarElement.parentElement.addEventListener('mouseenter', show);
|
||||||
toolbarElement.parentElement.addEventListener('mouseleave', hide);
|
toolbarElement.parentElement.addEventListener('mouseleave', hide);
|
||||||
}
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
if (toolbarElement) {
|
if (toolbarElement?.parentElement) {
|
||||||
toolbarElement.parentElement.removeEventListener('mouseenter', show);
|
toolbarElement.parentElement.removeEventListener('mouseenter', show);
|
||||||
toolbarElement.parentElement.removeEventListener('mouseleave', hide);
|
toolbarElement.parentElement.removeEventListener('mouseleave', hide);
|
||||||
}
|
}
|
||||||
@ -286,3 +286,13 @@ export const SchemaToolbar: FC<SchemaToolbarProps> = (props) => {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const SchemaToolbar: FC<SchemaToolbarProps> = (props) => {
|
||||||
|
const { designable } = useDesignable();
|
||||||
|
|
||||||
|
if (!designable) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return <InternalSchemaToolbar {...props} />;
|
||||||
|
};
|
||||||
|
@ -86,7 +86,7 @@ describe('workflow > instructions > delay', () => {
|
|||||||
expect(j2.status).toBe(JOB_STATUS.FAILED);
|
expect(j2.status).toBe(JOB_STATUS.FAILED);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('delay to resolve and rollback in downstream node', async () => {
|
it('delay to resolve and downstream node error', async () => {
|
||||||
const n1 = await workflow.createNode({
|
const n1 = await workflow.createNode({
|
||||||
type: 'delay',
|
type: 'delay',
|
||||||
config: {
|
config: {
|
||||||
@ -97,11 +97,9 @@ describe('workflow > instructions > delay', () => {
|
|||||||
const n2 = await workflow.createNode({
|
const n2 = await workflow.createNode({
|
||||||
type: 'create',
|
type: 'create',
|
||||||
config: {
|
config: {
|
||||||
collection: 'comment',
|
collection: 'notExistsTable',
|
||||||
params: {
|
params: {
|
||||||
values: {
|
values: {},
|
||||||
status: 'should be number but use string to raise an error',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
upstreamId: n1.id,
|
upstreamId: n1.id,
|
||||||
|
Loading…
Reference in New Issue
Block a user