* fix: bug * test: kanban test * test: gantt block test * test: gantt test * test: gantt test * test: gantt test * refactor: convert parameters to destructured object * test: add tests choices * test: add tests media * test: add tests for datetime in creating form * feat(plugin-mock-collection): generate faker time * test: add tests for datetime in editing form * test: add tests for datetime in details form * test: gantt block test * test: gantt test * test: gantt test * test: gantt test * fix: bug * feat: improve code * test: add tests for relation fields * refactor: style improve * fix: rename SchemaSettings * fix: type bug * refactor: useDesinger() * fix: bug * fix: bug * fix: build tip * refactor: kanban setting * refactor: gantt setting * refactor: bulk update setting * refactor: bulk update setting * refactor: bulk edit settings * refactor: duplicate settings * refactor: print action setting * refactor: duplicate settings * refactor: bulk update refactor * refactor: bulk update refactor * fix: designableState * fix: bug * fix: designable * refactor: bulk update * fix: designable * test: add tests for relation fields * test: add tests for relation fields * test: add tests for relation fields * feat: client api doc * test: add tests for relation fields * test: avoid errors * test: make tests passing * fix: bug * test: gantt test * test: make tests passing * test: add tests for advanced fields * test: increase e2e timeout-minutes to 60 * fix: bug * fix: improve code * feat: add schema initailizer component demos * test: make tests passing * fix: schema settings demos * feat: shallowMerge & deepMerge * test: reduce number of tests * test: make tests passing * feat: updates * fix: add Initializer Internal * demos: useSchemaSettingsRender * test: make tests passing * test: make tests passing * test: bulk update test * refactor: useSchemaToolbar * fix: improve docs * fix: bug * test: duplicate action test * test: duplicate action test * test: duplicate action test * test: duplicate action test * chore: upgrade dumi theme * test: make tests passing * test: add tests for linkage rules * test: add test for form data templates * test: add tests for default value * test: reduce number of tests * refactor: bulk edit setting * test: bulk edit action test * test: bulk edit action test * fix: dn.deepMerge * fix: bug * test: bulk edit action test * test: kanban test * refactor: bulk update version * refactor: print action version * fix: bug * fix: toolbar * fix: docs ssr * test: add tests for system fields * test: add tests for actions * fix: bug * test: add tests for lazy loading of variables * test: make testing more stable * test: bulk edit test * test: bulk update action test * fix: update docs * test: print test * test: kanban test * test: kanban test * refactor: duplicate version * fix: merge bug * refactor: bulk update * fix: merge bug * refactor: bulk edit * refactor: import * refactor: export action * refactor: code improve * refactor: kanban code improve * fix: merge bug * refactor: readPrettyFormActionInitializers * test: print action test * test: print action test * refactor: print action * test: action test * refactor: gantt date change * style: gantt style improve * test: gantt &bulkUpdate test * test: bulk update test * test: duplicate action test * test: print action test * test: bulk edit action test * test: gantt block test * test: kanban block test * test: test file name * test: test file name * test: bulk update action tst * refactor: rename test file name * refactor: bulk update action * refactor: gantt test * fix: block template * fix: block template * fix: useFieldModeOptions * refactor: code improve * fix: merge bug --------- Co-authored-by: dream2023 <1098626505@qq.com> Co-authored-by: Rain <958414905@qq.com> Co-authored-by: chenos <chenlinxh@gmail.com>
112 lines
3.6 KiB
TypeScript
112 lines
3.6 KiB
TypeScript
import { css } from '@emotion/css';
|
|
import { FormLayout } from '@formily/antd-v5';
|
|
import { observer, RecursionField, useFieldSchema } from '@formily/react';
|
|
import { Card } from 'antd';
|
|
import cls from 'classnames';
|
|
import React, { useContext, useState } from 'react';
|
|
import { ActionContextProvider, DndContext, RecordProvider, SchemaComponentOptions } from '@nocobase/client';
|
|
import { KanbanCardContext } from './context';
|
|
|
|
export const KanbanCard: any = observer(
|
|
(props: any) => {
|
|
const { setDisableCardDrag, cardViewerSchema, card, cardField, columnIndex, cardIndex } =
|
|
useContext(KanbanCardContext);
|
|
const fieldSchema = useFieldSchema();
|
|
const [visible, setVisible] = useState(false);
|
|
const labelDisabled = fieldSchema['x-label-disabled'];
|
|
return (
|
|
<SchemaComponentOptions components={{}} scope={{}}>
|
|
<Card
|
|
onClick={(e) => {
|
|
setVisible(true);
|
|
}}
|
|
bordered={false}
|
|
hoverable
|
|
style={{ cursor: 'pointer', overflow: 'hidden' }}
|
|
// bodyStyle={{ paddingBottom: 0 }}
|
|
className={cls(css`
|
|
.ant-card-body {
|
|
padding: 16px;
|
|
}
|
|
.nb-row-divider {
|
|
height: 16px;
|
|
margin-top: -16px;
|
|
&:last-child {
|
|
margin-top: 0;
|
|
}
|
|
}
|
|
.ant-description-input {
|
|
text-overflow: ellipsis;
|
|
width: 100%;
|
|
overflow: hidden;
|
|
}
|
|
.ant-description-textarea {
|
|
text-overflow: ellipsis;
|
|
width: 100%;
|
|
overflow: hidden;
|
|
}
|
|
.ant-formily-item {
|
|
margin-bottom: 12px;
|
|
}
|
|
.nb-grid-row:last-of-type {
|
|
.nb-grid-col {
|
|
.nb-form-item:last-of-type {
|
|
.ant-formily-item {
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.ant-formily-item-control .ant-space-item: {
|
|
whitespace: normal;
|
|
wordbreak: break-all;
|
|
wordwrap: break-word;
|
|
}
|
|
.ant-formily-item-label {
|
|
color: #8c8c8c;
|
|
fontweight: normal;
|
|
display: ${labelDisabled ? 'none' : 'flex'};
|
|
}
|
|
`)}
|
|
>
|
|
<DndContext
|
|
onDragStart={() => {
|
|
setDisableCardDrag(true);
|
|
}}
|
|
onDragEnd={() => {
|
|
setDisableCardDrag(false);
|
|
}}
|
|
>
|
|
<FormLayout layout={'vertical'}>
|
|
<RecursionField
|
|
basePath={cardField.address.concat(`${columnIndex}.cards.${cardIndex}`)}
|
|
schema={fieldSchema}
|
|
onlyRenderProperties
|
|
/>
|
|
</FormLayout>
|
|
</DndContext>
|
|
</Card>
|
|
{cardViewerSchema && (
|
|
<ActionContextProvider
|
|
value={{
|
|
openMode: fieldSchema['x-component-props']?.['openMode'] || 'drawer',
|
|
openSize: fieldSchema['x-component-props']?.['openSize'],
|
|
visible,
|
|
setVisible,
|
|
}}
|
|
>
|
|
<RecordProvider record={card}>
|
|
<RecursionField
|
|
basePath={cardField.address.concat(`${columnIndex}.cardViewer.${cardIndex}`)}
|
|
schema={cardViewerSchema}
|
|
onlyRenderProperties
|
|
/>
|
|
</RecordProvider>
|
|
</ActionContextProvider>
|
|
)}
|
|
</SchemaComponentOptions>
|
|
);
|
|
},
|
|
{ displayName: 'KanbanCard' },
|
|
);
|