diff --git a/CHANGELOG.md b/CHANGELOG.md
index e9de93875982e2da00ec475656421e658c21fcad..22620a25a8e1fe4356d8ace5dd72816901797497 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,18 @@
## [Unreleased]
+### Added
+
+- 卡片新增快速工具栏和批操作工具栏
+
+### Changed
+
+- 优化卡片和看板项行为样式
+
+### Fixed
+
+- 修复数据选择类编辑器值无值时异常
+
## [0.7.41-alpha.8] - 2025-07-03
### Added
diff --git a/src/control/data-view/data-view.scss b/src/control/data-view/data-view.scss
index b00c4138334ab4697a1a7d29fb9fb30c5d5fd069..41c5d4a8aebc3122ffaf16986f09a304510f16bb 100644
--- a/src/control/data-view/data-view.scss
+++ b/src/control/data-view/data-view.scss
@@ -100,6 +100,11 @@ $control-dataview-group-item-content: (
align-content: flex-start;
overflow: auto;
}
+
+ @include e(batchtoolbar) {
+ padding: 0 getCssVar(spacing, base);
+ margin: getCssVar(spacing, tight) getCssVar(spacing, super, tight);
+ }
}
@include b(control-dataview-item) {
@@ -155,6 +160,14 @@ $control-dataview-group-item-content: (
@include m(actions) {
display: flex;
justify-content: center;
+ .#{bem(action-toolbar, item)} {
+ margin: 0;
+ }
+ .#{bem(action-toolbar, item, label)} {
+ &.is-has-caption {
+ margin: 0;
+ }
+ }
}
}
}
diff --git a/src/control/data-view/data-view.tsx b/src/control/data-view/data-view.tsx
index b5627e582cabcafcc4e08482eba0234fd39dc9ab..1ee12d6afbc50c8a14f494ade26fc6cb8695a4c1 100644
--- a/src/control/data-view/data-view.tsx
+++ b/src/control/data-view/data-view.tsx
@@ -494,13 +494,43 @@ export const DataViewControl = defineComponent({
);
};
+ // 绘制快速工具栏
+ const renderQuickToolBar = (): VNode | undefined => {
+ const ctrlModel = c.model.controls?.find(item => {
+ return item.name === `${c.model.name!}_quicktoolbar`;
+ });
+ if (!ctrlModel) return;
+ return (
+
+ );
+ };
+
+ // 绘制批操作工具栏
+ const renderBatchToolBar = (): VNode | undefined => {
+ const ctrlModel = c.model.controls?.find(item => {
+ return item.name === `${c.model.name!}_batchtoolbar`;
+ });
+ if (!ctrlModel) return;
+ return (
+
+
+
+ );
+ };
+
const renderNoData = (): VNode | undefined => {
// 未加载不显示无数据
const { isLoaded } = c.state;
- if (!isLoaded) {
- return;
- }
- const noDataSlots: IParams = {};
+ if (!isLoaded) return;
+ const noDataSlots: IParams = { default: () => renderQuickToolBar() };
if (hasEmptyPanelRenderer(c)) {
Object.assign(noDataSlots, {
customRender: () => (
@@ -603,6 +633,7 @@ export const DataViewControl = defineComponent({
const renderContent = () => {
return [
c.state.items.length > 0 ? renderHasData() : renderNoData(),
+ renderBatchToolBar(),
renderNavIcon(),
renderCollapseExpandIcon(),
];
diff --git a/src/control/kanban/kanban.scss b/src/control/kanban/kanban.scss
index acedd62f3af8bf68cfbe834f22dbd9263a921831..7833e704a33fd5354f6642aa2397f16b198a3537 100644
--- a/src/control/kanban/kanban.scss
+++ b/src/control/kanban/kanban.scss
@@ -216,6 +216,18 @@ $control-kanban: (
padding: getCssVar('spacing', 'tight');
margin-top: getCssVar('spacing', 'tight');
border-top: 1px solid getCssVar('color', 'border');
+ @include m(actions) {
+ display: flex;
+ justify-content: center;
+ .#{bem(action-toolbar, item)} {
+ margin: 0;
+ }
+ .#{bem(action-toolbar, item, label)} {
+ &.is-has-caption {
+ margin: 0;
+ }
+ }
+ }
}
}
diff --git a/src/control/kanban/lane-kanban/lane-kanban.scss b/src/control/kanban/lane-kanban/lane-kanban.scss
index 78cfa6b59ae825c25bf82add68ac5136b5fba307..441b4c600d7ae6c39b8e1a72c9ee796e76c84f5f 100644
--- a/src/control/kanban/lane-kanban/lane-kanban.scss
+++ b/src/control/kanban/lane-kanban/lane-kanban.scss
@@ -250,6 +250,18 @@
margin-top: getCssVar('spacing', 'tight');
border-top: 1px solid getCssVar('color', 'border');
}
+ @include m(actions) {
+ display: flex;
+ justify-content: center;
+ .#{bem(action-toolbar, item)} {
+ margin: 0;
+ }
+ .#{bem(action-toolbar, item, label)} {
+ &.is-has-caption {
+ margin: 0;
+ }
+ }
+ }
}
@include e(batch) {
diff --git a/src/control/kanban/lane-kanban/lane-kanban.tsx b/src/control/kanban/lane-kanban/lane-kanban.tsx
index 88ed4efbc6d7907081424d94ca4f415111481f3e..6df5e5590cffbfaf375c5cbba9d0d4749686294b 100644
--- a/src/control/kanban/lane-kanban/lane-kanban.tsx
+++ b/src/control/kanban/lane-kanban/lane-kanban.tsx
@@ -419,7 +419,7 @@ export const LaneKanban = defineComponent({
{actionModel.length ? (