diff --git a/CHANGELOG.md b/CHANGELOG.md index 9425a60d73cc1fbf47735536f0e966ba13bdba69..8a51d981779da165dc4883d6610397045145e54a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ ## [Unreleased] +### Added +- 部件新增接收参数provider,用于插件只重写逻辑,未重写UI的情况 + ## [0.0.27] - 2024-10-16 ### Added diff --git a/src/common/index.ts b/src/common/index.ts index 34bae54c3f76c85021572dfd445748b014a31c1a..f4c654ff391ed249657bf335342a37d2aa484886 100644 --- a/src/common/index.ts +++ b/src/common/index.ts @@ -5,6 +5,7 @@ import { IBizControlBase, IBizRouterView, IBizControlShell, + IBizBadge, } from '@ibiz-template/vue3-util'; import { App } from 'vue'; import { IBizActionToolbar } from './action-toolbar/action-toolbar'; @@ -44,6 +45,7 @@ export const IBizCommonComponents = { v.component(IBizFullscreenHeader.name, IBizFullscreenHeader); v.component(IBizButtonList.name, IBizButtonList); v.component(IBizEmojiSelect.name, IBizEmojiSelect); + v.component(IBizBadge.name, IBizBadge); }, }; diff --git a/src/control/app-menu-icon-view/app-menu-icon-view.tsx b/src/control/app-menu-icon-view/app-menu-icon-view.tsx index 33b9ae21e7ab377f0e997cdeb2d2a694f2fa9fa7..2e1688ebfd8a354243b7c2c2caff45e886a9b15b 100644 --- a/src/control/app-menu-icon-view/app-menu-icon-view.tsx +++ b/src/control/app-menu-icon-view/app-menu-icon-view.tsx @@ -1,8 +1,8 @@ -import { prepareControl, useControlController } from '@ibiz-template/vue3-util'; import { IAppMenu } from '@ibiz/model-core'; import { computed, defineComponent, PropType } from 'vue'; +import { AppMenuController, IControlProvider } from '@ibiz-template/runtime'; +import { prepareControl, useControlController } from '@ibiz-template/vue3-util'; import './app-menu-icon-view.scss'; -import { AppMenuController } from '@ibiz-template/runtime'; export const AppMenuIconViewControl = defineComponent({ name: 'IBizAppMenuIconViewControl', @@ -10,6 +10,7 @@ export const AppMenuIconViewControl = defineComponent({ modelData: { type: Object as PropType, required: true }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, + provider: { type: Object as PropType }, }, setup() { const c = useControlController((...args) => new AppMenuController(...args)); diff --git a/src/control/app-menu-list-view/app-menu-list-view.tsx b/src/control/app-menu-list-view/app-menu-list-view.tsx index 7c61d1a3c0b2b4ef8c07ad1b23b782614c851275..371e6f23d09dbc1f55c982d1c3e5ca6bfa662a85 100644 --- a/src/control/app-menu-list-view/app-menu-list-view.tsx +++ b/src/control/app-menu-list-view/app-menu-list-view.tsx @@ -1,8 +1,8 @@ -import { prepareControl, useControlController } from '@ibiz-template/vue3-util'; -import { IAppMenu } from '@ibiz/model-core'; import { defineComponent, PropType } from 'vue'; +import { IAppMenu } from '@ibiz/model-core'; +import { AppMenuController, IControlProvider } from '@ibiz-template/runtime'; +import { prepareControl, useControlController } from '@ibiz-template/vue3-util'; import './app-menu-list-view.scss'; -import { AppMenuController } from '@ibiz-template/runtime'; export const AppMenuListViewControl = defineComponent({ name: 'IBizAppMenuListViewControl', @@ -10,6 +10,7 @@ export const AppMenuListViewControl = defineComponent({ modelData: { type: Object as PropType, required: true }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, + provider: { type: Object as PropType }, }, setup() { const c = useControlController((...args) => new AppMenuController(...args)); diff --git a/src/control/app-menu/app-menu.tsx b/src/control/app-menu/app-menu.tsx index e8d8758d1fc0047ccbd75281dad2d0bb11141757..59d152b673c4434107b47390d38d37a3f66d6d04 100644 --- a/src/control/app-menu/app-menu.tsx +++ b/src/control/app-menu/app-menu.tsx @@ -1,9 +1,9 @@ +import { useRoute } from 'vue-router'; +import { defineComponent, onMounted, PropType, ref } from 'vue'; import { prepareControl, useControlController } from '@ibiz-template/vue3-util'; import { IAppMenu, IAppMenuItem } from '@ibiz/model-core'; -import { defineComponent, onMounted, PropType, ref } from 'vue'; +import { AppMenuController, IControlProvider } from '@ibiz-template/runtime'; import './app-menu.scss'; -import { useRoute } from 'vue-router'; -import { AppMenuController } from '@ibiz-template/runtime'; export const AppMenuControl = defineComponent({ name: 'IBizAppMenuControl', @@ -11,6 +11,7 @@ export const AppMenuControl = defineComponent({ modelData: { type: Object as PropType, required: true }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, + provider: { type: Object as PropType }, }, setup() { const c = useControlController((...args) => new AppMenuController(...args)); diff --git a/src/control/calendar/calendar.tsx b/src/control/calendar/calendar.tsx index 553eed036ae113d2d0f943073bc683e280cad2be..4ac09c2f8d99e02c030d220014ddf9237dc2f7b2 100644 --- a/src/control/calendar/calendar.tsx +++ b/src/control/calendar/calendar.tsx @@ -1,7 +1,6 @@ import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; import { computed, defineComponent, PropType, Ref, ref, VNode } from 'vue'; import { ILayoutPanel, ISysCalendar } from '@ibiz/model-core'; -import './calendar.scss'; import { CalendarController, ICalendarItemData, @@ -11,6 +10,7 @@ import dayjs from 'dayjs'; import VueHashCalendar from 'vue3-hash-calendar'; import 'vue3-hash-calendar/es/index.css'; import { getCurSelectDayDate, getCurSelectMonthDate } from './date-util'; +import './calendar.scss'; export const CalendarControl = defineComponent({ name: 'IBizCalendarControl', diff --git a/src/control/caption-bar/caption-bar.tsx b/src/control/caption-bar/caption-bar.tsx index c23b073db885483f88e9e119ee6e49b44f505687..1f9d61a41aed29a50d1b2244d0218d176dfd5f90 100644 --- a/src/control/caption-bar/caption-bar.tsx +++ b/src/control/caption-bar/caption-bar.tsx @@ -1,8 +1,8 @@ -import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; -import { defineComponent, onActivated, PropType } from 'vue'; import { ICaptionBar } from '@ibiz/model-core'; +import { defineComponent, onActivated, PropType } from 'vue'; +import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; +import { CaptionBarController, IControlProvider } from '@ibiz-template/runtime'; import './caption-bar.scss'; -import { CaptionBarController } from '@ibiz-template/runtime'; export const CaptionBarControl = defineComponent({ name: 'IBizCaptionBarControl', @@ -13,6 +13,7 @@ export const CaptionBarControl = defineComponent({ }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, + provider: { type: Object as PropType }, }, setup() { const c = useControlController( diff --git a/src/control/chart/chart.tsx b/src/control/chart/chart.tsx index 8fcdf985f4afce54cc963c98e775b09f29a453fc..8b574131b90055ff86981e24fd6ae35b2ca2a3fc 100644 --- a/src/control/chart/chart.tsx +++ b/src/control/chart/chart.tsx @@ -8,8 +8,8 @@ import { } from 'vue'; import { IDEChart } from '@ibiz/model-core'; import { init } from 'echarts'; -import './chart.scss'; import { ChartController, IControlProvider } from '@ibiz-template/runtime'; +import './chart.scss'; const ChartControl = defineComponent({ name: 'IBizChartControl', diff --git a/src/control/dashboard/dashboard.tsx b/src/control/dashboard/dashboard.tsx index a992f7af7c1499a810f3a5e6695380e0f8de24ad..16c500d106f95738cbe782e6a6722ec49bfb6918 100644 --- a/src/control/dashboard/dashboard.tsx +++ b/src/control/dashboard/dashboard.tsx @@ -12,8 +12,8 @@ import { IDBContainerPortletPart, IDBPortletPart, } from '@ibiz/model-core'; +import { DashboardController, IControlProvider } from '@ibiz-template/runtime'; import './dashboard.scss'; -import { DashboardController } from '@ibiz-template/runtime'; /** * 根据类型绘制数据看板成员 @@ -62,8 +62,6 @@ function renderPortletByType( }, ); } - console.log(model, 'model'); - // 绘制门户部件 return h(providerComp, { ...commonProps, @@ -80,6 +78,7 @@ export const DashboardControl = defineComponent({ }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, + provider: { type: Object as PropType }, }, setup() { const c = useControlController( diff --git a/src/control/data-view/data-view.tsx b/src/control/data-view/data-view.tsx index e1156b1ef6c43386fab3b581325e40c1296218c2..ec64ab637a2b6c247230c4c65ad067f4fe54ff8f 100644 --- a/src/control/data-view/data-view.tsx +++ b/src/control/data-view/data-view.tsx @@ -5,7 +5,10 @@ import { ILayoutPanel, IUIActionGroupDetail, } from '@ibiz/model-core'; -import { DataViewControlController } from '@ibiz-template/runtime'; +import { + DataViewControlController, + IControlProvider, +} from '@ibiz-template/runtime'; import { usePagination } from '../../util'; import './data-view.scss'; @@ -15,6 +18,7 @@ export const DataViewControl = defineComponent({ modelData: { type: Object as PropType, required: true }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, + provider: { type: Object as PropType }, singleSelect: { type: Boolean, default: true }, loadDefault: { type: Boolean, default: true }, }, diff --git a/src/control/form/search-form/search-form.tsx b/src/control/form/search-form/search-form.tsx index ae99beaa5c52e8c879a1794c878bdd851d55b5fb..ecfca325d9db10bef2e613dea17c95d99c8044ed 100644 --- a/src/control/form/search-form/search-form.tsx +++ b/src/control/form/search-form/search-form.tsx @@ -1,4 +1,4 @@ -import { SearchFormController } from '@ibiz-template/runtime'; +import { IControlProvider, SearchFormController } from '@ibiz-template/runtime'; import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; import { IDESearchForm } from '@ibiz/model-core'; import { defineComponent, PropType, reactive } from 'vue'; @@ -11,6 +11,7 @@ export const SearchFormControl = defineComponent({ type: Object as PropType, required: true, }, + provider: { type: Object as PropType }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, }, diff --git a/src/control/list/list/list.tsx b/src/control/list/list/list.tsx index 2ba0d4edd454934cc5f05f79d248127cd5693180..b12f8948298574eb3851bd66f47211cdf7a1f125 100644 --- a/src/control/list/list/list.tsx +++ b/src/control/list/list/list.tsx @@ -1,9 +1,9 @@ -import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; -import { defineComponent, PropType, ref } from 'vue'; import { IDEList } from '@ibiz/model-core'; -import './list.scss'; -import { ListController } from '@ibiz-template/runtime'; +import { defineComponent, PropType, ref } from 'vue'; +import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; +import { IControlProvider, ListController } from '@ibiz-template/runtime'; import { useListRender } from '../list-render-util'; +import './list.scss'; export const ListControl = defineComponent({ name: 'IBizListControl', @@ -11,31 +11,12 @@ export const ListControl = defineComponent({ modelData: { type: Object as PropType, required: true }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, - /** - * 部件行数据默认激活模式 - * - 0 不激活 - * - 1 单击激活 - * - 2 双击激活(默认值) - * - * @type {(number | 0 | 1 | 2)} - */ + provider: { type: Object as PropType }, mdctrlActiveMode: { type: Number, default: 1 }, - - /** - * 是否为单选 - * - true 单选 - * - false 多选 - * - * @type {(Boolean)} - */ singleSelect: { type: Boolean, default: true }, - // 默认行数 rowsCount: { type: Number, default: 2 }, - // 默认列数 columnsCount: { type: Number, default: 5 }, - loadDefault: { type: Boolean, default: true }, - mode: { type: String, default: 'LIST' }, }, setup(props) { diff --git a/src/control/list/md-ctrl/md-ctrl.tsx b/src/control/list/md-ctrl/md-ctrl.tsx index bae1aff37e5097d1e60b3aea6af64c7d5d53bfc5..e060cc0e9363a47cb928935394cfbbe25fd30d43 100644 --- a/src/control/list/md-ctrl/md-ctrl.tsx +++ b/src/control/list/md-ctrl/md-ctrl.tsx @@ -1,10 +1,14 @@ import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; import { computed, defineComponent, PropType } from 'vue'; import { IDEMobMDCtrl, IUIActionGroup } from '@ibiz/model-core'; -import { IMobMDCtrlRowState, MDCtrlController } from '@ibiz-template/runtime'; -import './md-ctrl.scss'; +import { + IControlProvider, + IMobMDCtrlRowState, + MDCtrlController, +} from '@ibiz-template/runtime'; import { useListRender } from '../list-render-util'; import { usePagination } from '../../../util'; +import './md-ctrl.scss'; export const MDCtrlControl = defineComponent({ name: 'IBizMDCtrlControl', @@ -12,23 +16,8 @@ export const MDCtrlControl = defineComponent({ modelData: { type: Object as PropType, required: true }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, - /** - * 部件行数据默认激活模式 - * - 0 不激活 - * - 1 单击激活 - * - 2 双击激活(默认值) - * - * @type {(number | 0 | 1 | 2)} - */ + provider: { type: Object as PropType }, mdctrlActiveMode: { type: Number, default: 1 }, - - /** - * 是否为单选 - * - true 单选 - * - false 多选 - * - * @type {(Boolean)} - */ singleSelect: { type: Boolean, default: true }, selectedData: { type: Object as PropType, required: false }, mode: { type: String, default: 'LIST' }, diff --git a/src/control/pickup-view-panel/pickup-view-panel.tsx b/src/control/pickup-view-panel/pickup-view-panel.tsx index fd436caf8c02a35f64c788d83c867b001448f82c..957e73b6f77a25e481883cdc4304d7c87b77fd8f 100644 --- a/src/control/pickup-view-panel/pickup-view-panel.tsx +++ b/src/control/pickup-view-panel/pickup-view-panel.tsx @@ -3,6 +3,7 @@ import { defineComponent, h, PropType, resolveComponent } from 'vue'; import { IAppDEGridView, IDEPickupViewPanel } from '@ibiz/model-core'; import { EventBase, + IControlProvider, IPickupGridViewEvent, IPickupGridViewState, IViewController, @@ -17,6 +18,7 @@ export const PickupViewPanelControl = defineComponent({ context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, singleSelect: { type: Boolean, default: true }, + provider: { type: Object as PropType }, selectedData: { type: Object as PropType, required: false }, }, setup() { diff --git a/src/control/search-bar/search-bar.tsx b/src/control/search-bar/search-bar.tsx index df49698a868cb93d78608c8d6e2206cc1f95d845..b65abb54917da480fa352b928a714892cdd04071 100644 --- a/src/control/search-bar/search-bar.tsx +++ b/src/control/search-bar/search-bar.tsx @@ -2,8 +2,8 @@ import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; import { computed, defineComponent, PropType } from 'vue'; import { ISearchBar } from '@ibiz/model-core'; import { debounce } from 'lodash-es'; +import { IControlProvider, SearchBarController } from '@ibiz-template/runtime'; import './search-bar.scss'; -import { SearchBarController } from '@ibiz-template/runtime'; export const SearchBarControl = defineComponent({ name: 'IBizSearchBarControl', @@ -12,6 +12,7 @@ export const SearchBarControl = defineComponent({ type: Object as PropType, required: true, }, + provider: { type: Object as PropType }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, }, diff --git a/src/control/tab-exp-panel/tab-exp-panel.tsx b/src/control/tab-exp-panel/tab-exp-panel.tsx index 0e065530ee75cfc435b9ba4521a2b04b1c4c6539..c87e4051114321fdf6c36e91ff2c257abe7f7164 100644 --- a/src/control/tab-exp-panel/tab-exp-panel.tsx +++ b/src/control/tab-exp-panel/tab-exp-panel.tsx @@ -1,7 +1,10 @@ import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; import { defineComponent, PropType } from 'vue'; import { ITabExpPanel } from '@ibiz/model-core'; -import { TabExpPanelController } from '@ibiz-template/runtime'; +import { + IControlProvider, + TabExpPanelController, +} from '@ibiz-template/runtime'; export const TabExpPanelControl = defineComponent({ name: 'IBizTabExpPanelControl', @@ -9,6 +12,7 @@ export const TabExpPanelControl = defineComponent({ modelData: { type: Object as PropType, required: true }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, + provider: { type: Object as PropType }, defaultTabName: { type: String, required: false }, }, setup() { diff --git a/src/control/toolbar/toolbar.tsx b/src/control/toolbar/toolbar.tsx index 10f08f5543c8d8f3e949c2891afd97d2623a05eb..b95247e080807e1c26ad22ab943d3369d4053536 100644 --- a/src/control/toolbar/toolbar.tsx +++ b/src/control/toolbar/toolbar.tsx @@ -6,7 +6,11 @@ import { IDEToolbar, IDEToolbarItem, } from '@ibiz/model-core'; -import { IExtraButton, ToolbarController } from '@ibiz-template/runtime'; +import { + IControlProvider, + IExtraButton, + ToolbarController, +} from '@ibiz-template/runtime'; import { IBizPopperToolbar } from './popper-toolbar/popper-toolbar'; import './toolbar.scss'; @@ -35,6 +39,7 @@ export const ToolbarControl = defineComponent({ type: Object as PropType, required: true, }, + provider: { type: Object as PropType }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, }, diff --git a/src/control/tree/tree.tsx b/src/control/tree/tree.tsx index da56c508a105be526563ea932ebc673b6f41ae64..3f96c2e6b2634f389575f6888faccb3a1eed1067 100644 --- a/src/control/tree/tree.tsx +++ b/src/control/tree/tree.tsx @@ -2,6 +2,7 @@ import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; import { computed, defineComponent, PropType, ref, VNode } from 'vue'; import { IDETree } from '@ibiz/model-core'; import { + IControlProvider, ITreeController, ITreeNodeData, TreeController, @@ -19,23 +20,8 @@ export const TreeControl = defineComponent({ modelData: { type: Object as PropType, required: true }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, - /** - * 部件行数据默认激活模式 - * - 0 不激活 - * - 1 单击激活 - * - 2 双击激活(默认值) - * - * @type {(number | 0 | 1 | 2)} - */ + provider: { type: Object as PropType }, mdctrlActiveMode: { type: Number, default: 2 }, - - /** - * 是否为单选 - * - true 单选 - * - false 多选 - * - * @type {(Boolean)} - */ singleSelect: { type: Boolean, default: true }, }, setup() {