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 ? (
+