@ibiz-template/vue3-components 0.7.41-alpha.18 → 0.7.41-alpha.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index-BoV5htv9.js +11 -0
- package/dist/{index-swminiXb.js → index-Bt6TkADL.js} +1 -1
- package/dist/{index-AOFxMmyX.js → index-K6B-Odyq.js} +1 -1
- package/dist/index.min.css +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/{wang-editor-4OlaBV3P.js → wang-editor-exnzt_I1.js} +1 -1
- package/dist/{xlsx-util-Rg-AbK_G.js → xlsx-util-fuTLwrKA.js} +1 -1
- package/es/control/dashboard/portlet/menu-portlet/app-menu-portlet/app-menu-portlet.css +1 -1
- package/es/control/drtab/flow-drtab.css +1 -1
- package/es/control/drtab/flow-drtab.mjs +13 -5
- package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.d.ts +3 -0
- package/es/index.mjs +1 -0
- package/es/locale/en/index.d.ts +4 -0
- package/es/locale/en/index.mjs +4 -0
- package/es/locale/zh-CN/index.d.ts +4 -0
- package/es/locale/zh-CN/index.mjs +4 -0
- package/es/panel-component/app-switch/app-switch.controller.mjs +4 -1
- package/es/panel-component/app-switch/app-switch.d.ts +1 -1
- package/es/panel-component/auth-userinfo/auth-userinfo.controller.d.ts +31 -0
- package/es/panel-component/auth-userinfo/auth-userinfo.controller.mjs +51 -0
- package/es/panel-component/auth-userinfo/auth-userinfo.css +1 -1
- package/es/panel-component/auth-userinfo/auth-userinfo.d.ts +7 -4
- package/es/panel-component/auth-userinfo/auth-userinfo.mjs +20 -5
- package/es/panel-component/auth-userinfo/auth-userinfo.provider.d.ts +2 -1
- package/es/panel-component/auth-userinfo/auth-userinfo.provider.mjs +2 -2
- package/es/panel-component/auth-userinfo/index.d.ts +4 -3
- package/es/panel-component/global-search/global-search.controller.d.ts +10 -3
- package/es/panel-component/global-search/global-search.controller.mjs +39 -18
- package/es/panel-component/global-search/global-search.d.ts +3 -1
- package/es/panel-component/global-search/global-search.mjs +8 -1
- package/es/panel-component/global-search/index.d.ts +1 -0
- package/es/panel-component/index-blank-placeholder/index-blank-placeholder.controller.mjs +0 -2
- package/es/panel-component/panel-app-title/panel-app-title.controller.mjs +5 -2
- package/es/panel-component/panel-app-title/panel-app-title.d.ts +1 -0
- package/es/panel-component/panel-app-title/panel-app-title.mjs +6 -0
- package/es/panel-component/panel-index-view-search/index.d.ts +4 -3
- package/es/panel-component/panel-index-view-search/panel-index-view-search.controller.d.ts +31 -0
- package/es/panel-component/panel-index-view-search/panel-index-view-search.controller.mjs +51 -0
- package/es/panel-component/panel-index-view-search/panel-index-view-search.d.ts +8 -5
- package/es/panel-component/panel-index-view-search/panel-index-view-search.mjs +17 -3
- package/es/panel-component/panel-index-view-search/panel-index-view-search.provider.d.ts +2 -1
- package/es/panel-component/panel-index-view-search/panel-index-view-search.provider.mjs +2 -2
- package/es/panel-component/panel-tab-panel/panel-tab-panel.mjs +2 -2
- package/es/panel-component/user-action/user-action.d.ts +1 -1
- package/es/panel-component/view-msg-pos/view-msg-pos.d.ts +2 -1
- package/es/util/app-modal/app-modal-component.css +1 -1
- package/es/util/app-modal/app-modal-component.d.ts +6 -1
- package/es/util/app-modal/app-modal-component.mjs +45 -4
- package/es/util/icon/icon.d.ts +3 -0
- package/es/util/icon/icon.mjs +25 -0
- package/es/util/index.d.ts +1 -0
- package/es/util/index.mjs +1 -0
- package/lib/control/dashboard/portlet/menu-portlet/app-menu-portlet/app-menu-portlet.css +1 -1
- package/lib/control/drtab/flow-drtab.cjs +13 -5
- package/lib/control/drtab/flow-drtab.css +1 -1
- package/lib/index.cjs +3 -0
- package/lib/locale/en/index.cjs +4 -0
- package/lib/locale/zh-CN/index.cjs +4 -0
- package/lib/panel-component/app-switch/app-switch.controller.cjs +4 -1
- package/lib/panel-component/auth-userinfo/auth-userinfo.cjs +20 -5
- package/lib/panel-component/auth-userinfo/auth-userinfo.controller.cjs +53 -0
- package/lib/panel-component/auth-userinfo/auth-userinfo.css +1 -1
- package/lib/panel-component/auth-userinfo/auth-userinfo.provider.cjs +2 -2
- package/lib/panel-component/global-search/global-search.cjs +8 -1
- package/lib/panel-component/global-search/global-search.controller.cjs +39 -18
- package/lib/panel-component/index-blank-placeholder/index-blank-placeholder.controller.cjs +0 -2
- package/lib/panel-component/panel-app-title/panel-app-title.cjs +6 -0
- package/lib/panel-component/panel-app-title/panel-app-title.controller.cjs +5 -2
- package/lib/panel-component/panel-index-view-search/panel-index-view-search.cjs +16 -2
- package/lib/panel-component/panel-index-view-search/panel-index-view-search.controller.cjs +53 -0
- package/lib/panel-component/panel-index-view-search/panel-index-view-search.provider.cjs +2 -2
- package/lib/panel-component/panel-tab-panel/panel-tab-panel.cjs +2 -2
- package/lib/util/app-modal/app-modal-component.cjs +43 -2
- package/lib/util/app-modal/app-modal-component.css +1 -1
- package/lib/util/icon/icon.cjs +28 -0
- package/lib/util/index.cjs +3 -0
- package/package.json +4 -4
- package/dist/index-dXwgWAM8.js +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-control-appmenu-portlet{--ibiz-control-appmenu-portlet-margin:var(--ibiz-spacing-base-tight);--ibiz-control-appmenu-portlet-border-color:var(--ibiz-color-primary);--ibiz-control-appmenu-portlet-bg-color:var(--ibiz-color-bg-0);--ibiz-control-appmenu-portlet-padding:var(--ibiz-spacing-base-tight)}.ibiz-control-appmenu-portlet__content{display:flex;flex-wrap:wrap;width:100%}.ibiz-control-appmenu-portlet-item{position:relative;display:flex;flex-direction:column;flex-shrink:0;align-items:flex-start;justify-content:center;width:calc(25% - var(--ibiz-control-appmenu-portlet-margin) * 2);padding:var(--ibiz-control-appmenu-portlet-padding);margin:var(--ibiz-control-appmenu-portlet-margin);cursor:pointer;background-color:var(--ibiz-control-appmenu-portlet-bg-color)}.ibiz-control-appmenu-portlet-item::before{position:absolute;left:0;width:4px;height:100%;content:"";background-color:var(--ibiz-control-appmenu-portlet-border-color)}.ibiz-control-appmenu-portlet-group{width:100%}.ibiz-control-appmenu-portlet-group .el-collapse-item__content{display:flex;flex-wrap:wrap}
|
|
1
|
+
.ibiz-control-appmenu-portlet{--ibiz-control-appmenu-portlet-margin:var(--ibiz-spacing-base-tight);--ibiz-control-appmenu-portlet-border-color:var(--ibiz-color-primary);--ibiz-control-appmenu-portlet-bg-color:var(--ibiz-color-bg-0);--ibiz-control-appmenu-portlet-padding:var(--ibiz-spacing-base-tight);--ibiz-control-appmenu-portlet-content-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);padding:var(--ibiz-control-appmenu-portlet-content-padding)}.ibiz-control-appmenu-portlet__content{display:flex;flex-wrap:wrap;width:100%}.ibiz-control-appmenu-portlet-item{position:relative;display:flex;flex-direction:column;flex-shrink:0;align-items:flex-start;justify-content:center;width:calc(25% - var(--ibiz-control-appmenu-portlet-margin) * 2);padding:var(--ibiz-control-appmenu-portlet-padding);margin:var(--ibiz-control-appmenu-portlet-margin);cursor:pointer;background-color:var(--ibiz-control-appmenu-portlet-bg-color)}.ibiz-control-appmenu-portlet-item::before{position:absolute;left:0;width:4px;height:100%;content:"";background-color:var(--ibiz-control-appmenu-portlet-border-color)}.ibiz-control-appmenu-portlet-group{width:100%}.ibiz-control-appmenu-portlet-group .el-collapse-item__content{display:flex;flex-wrap:wrap}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-flow-drtab{width:100%;height:100%;overflow:hidden;background-color:var(--ibiz-color-bg-0)}.ibiz-flow-drtab__container{height:100%;overflow:auto}.ibiz-flow-drtab__tab-item{background-color:var(--ibiz-color-bg-1);border-radius:var(--ibiz-border-radius-medium)}.ibiz-flow-drtab__tab-item--label{padding:var(--ibiz-spacing-base);font-size:var(--ibiz-font-size-header-5);border-bottom:1px solid var(--ibiz-color-fill-1)}.ibiz-flow-drtab__tab-item--tab-view{padding:var(--ibiz-spacing-tight) 0}.ibiz-flow-drtab__tab-item+.ibiz-flow-drtab__tab-item{margin-top:var(--ibiz-spacing-base)}.ibiz-flow-drtab__counter{font-size:var(--ibiz-font-size-regular);text-align:center}.ibiz-flow-drtab .ibiz-flow-drtab{background-color:inherit}.ibiz-flow-drtab.is-enable-anchor{display:flex;gap:var(--ibiz-spacing-base)}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__container{flex:1}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar{display:flex;min-width:200px;padding:var(--ibiz-spacing-base) 0;font-size:var(--ibiz-font-size-regular);background-color:var(--ibiz-color-bg-1);border-radius:var(--ibiz-border-radius-medium)}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-topleft{align-items:start}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-bottomleft{align-items:end}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-topright{flex-direction:row-reverse;align-items:start}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-bottomright{flex-direction:row-reverse;align-items:end}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-middleleft{align-items:center}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-middleright{flex-direction:row-reverse;align-items:center}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-items{width:100%;max-height:100%;overflow:auto}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-item{width:100%;height:32px;padding:0 var(--ibiz-spacing-base);overflow:hidden;line-height:32px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-item:hover{color:var(--ibiz-color-primary)}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-item.is-active{position:relative;color:var(--ibiz-color-primary)}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-item.is-active::before{position:absolute;top:0;left:0;width:4px;height:100%;content:"";background-color:var(--ibiz-color-primary);border-radius:2px}.ibiz-flow-drtab.is-enable-anchor.is-left{flex-direction:row;overflow:auto}.ibiz-flow-drtab.is-enable-anchor.is-left
|
|
1
|
+
.ibiz-flow-drtab{width:100%;height:100%;overflow:hidden;background-color:var(--ibiz-color-bg-0)}.ibiz-flow-drtab__container{height:100%;overflow:auto}.ibiz-flow-drtab__tab-item{background-color:var(--ibiz-color-bg-1);border-radius:var(--ibiz-border-radius-medium)}.ibiz-flow-drtab__tab-item--label{padding:var(--ibiz-spacing-base);font-size:var(--ibiz-font-size-header-5);border-bottom:1px solid var(--ibiz-color-fill-1)}.ibiz-flow-drtab__tab-item--tab-view{padding:var(--ibiz-spacing-tight) 0}.ibiz-flow-drtab__tab-item+.ibiz-flow-drtab__tab-item{margin-top:var(--ibiz-spacing-base)}.ibiz-flow-drtab__counter{font-size:var(--ibiz-font-size-regular);text-align:center}.ibiz-flow-drtab .ibiz-flow-drtab{background-color:inherit}.ibiz-flow-drtab.is-enable-anchor{display:flex;gap:var(--ibiz-spacing-base)}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__container{flex:1}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar{display:flex;min-width:200px;padding:var(--ibiz-spacing-base) 0;font-size:var(--ibiz-font-size-regular);background-color:var(--ibiz-color-bg-1);border-radius:var(--ibiz-border-radius-medium)}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-topleft{align-items:start}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-bottomleft{align-items:end}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-topright{flex-direction:row-reverse;align-items:start}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-bottomright{flex-direction:row-reverse;align-items:end}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-middleleft{align-items:center}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-bar.is-middleright{flex-direction:row-reverse;align-items:center}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-items{width:100%;max-height:100%;overflow:auto}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-item{width:100%;height:32px;padding:0 var(--ibiz-spacing-base);overflow:hidden;line-height:32px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-item:hover{color:var(--ibiz-color-primary)}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-item.is-active{position:relative;color:var(--ibiz-color-primary)}.ibiz-flow-drtab.is-enable-anchor .ibiz-flow-drtab__anchor-item.is-active::before{position:absolute;top:0;left:0;width:4px;height:100%;content:"";background-color:var(--ibiz-color-primary);border-radius:2px}.ibiz-flow-drtab.is-enable-anchor.is-left{flex-direction:row;overflow:auto}.ibiz-flow-drtab.is-enable-anchor.is-left>.ibiz-flow-drtab__container{--navbarwidth:200px;flex:1 0;width:calc(100% - var(--navbarwidth) - 2 * var(--ibiz-spacing-base));overflow:unset}.ibiz-flow-drtab.is-enable-anchor.is-left .ibiz-flow-drtab__anchor-bar{position:sticky;top:0}.ibiz-flow-drtab.is-enable-anchor.is-left .ibiz-flow-drtab__anchor-items::-webkit-scrollbar{display:none}.ibiz-flow-drtab.is-enable-anchor.is-right{flex-direction:row-reverse;overflow:auto}.ibiz-flow-drtab.is-enable-anchor.is-right>.ibiz-flow-drtab__container{--navbarwidth:200px;flex:1 0;width:calc(100% - var(--navbarwidth) - 2 * var(--ibiz-spacing-base));overflow:unset}.ibiz-flow-drtab.is-enable-anchor.is-right .ibiz-flow-drtab__anchor-bar{position:sticky;top:0}.ibiz-flow-drtab.is-enable-anchor.is-right .ibiz-flow-drtab__anchor-items::-webkit-scrollbar{display:none}
|
|
@@ -124,9 +124,6 @@ const FlowDrtab = /* @__PURE__ */ defineComponent({
|
|
|
124
124
|
}
|
|
125
125
|
};
|
|
126
126
|
const observer = new IntersectionObserver((entries) => {
|
|
127
|
-
if (allVisibleViews.value !== completedViews.value) {
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
127
|
entries.forEach((entry) => {
|
|
131
128
|
var _a, _b;
|
|
132
129
|
if (entry.isIntersecting) {
|
|
@@ -150,6 +147,15 @@ const FlowDrtab = /* @__PURE__ */ defineComponent({
|
|
|
150
147
|
}
|
|
151
148
|
}
|
|
152
149
|
});
|
|
150
|
+
visibleViews.sort((a, b) => {
|
|
151
|
+
var _a, _b;
|
|
152
|
+
const aIndex = (_a = allNavTags.value) == null ? void 0 : _a.findIndex((tag) => tag === a);
|
|
153
|
+
const bIndex = (_b = allNavTags.value) == null ? void 0 : _b.findIndex((tag) => tag === b);
|
|
154
|
+
return aIndex - bIndex;
|
|
155
|
+
});
|
|
156
|
+
if (allVisibleViews.value !== completedViews.value || !c.enableAnchor) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
153
159
|
computeSelectItem();
|
|
154
160
|
});
|
|
155
161
|
const onViewMounted = (item) => {
|
|
@@ -164,7 +170,7 @@ const FlowDrtab = /* @__PURE__ */ defineComponent({
|
|
|
164
170
|
if (el) {
|
|
165
171
|
observer.observe(el);
|
|
166
172
|
}
|
|
167
|
-
if (completedViews.value === allVisibleViews.value && props.activeTab) {
|
|
173
|
+
if (completedViews.value === allVisibleViews.value && props.activeTab && props.activeTab.tag !== props.drtabpages[0].id) {
|
|
168
174
|
nextTick(() => {
|
|
169
175
|
scrollToTarget();
|
|
170
176
|
});
|
|
@@ -176,7 +182,9 @@ const FlowDrtab = /* @__PURE__ */ defineComponent({
|
|
|
176
182
|
return page.id === newVal.tag;
|
|
177
183
|
});
|
|
178
184
|
navtag.value = "".concat(target == null ? void 0 : target.appViewId, "_").concat(newVal.tag);
|
|
179
|
-
|
|
185
|
+
if (newVal.tag !== props.drtabpages[0].id) {
|
|
186
|
+
scrollToTarget();
|
|
187
|
+
}
|
|
180
188
|
}
|
|
181
189
|
}, {
|
|
182
190
|
deep: true,
|
|
@@ -6,6 +6,9 @@ import './ibiz-markdown-editor.scss';
|
|
|
6
6
|
* @primary
|
|
7
7
|
* @editorparams {"name":"customtheme","parameterType":"'light' | 'dark'","description":"设置Markdown主题,未配置时跟随应用主题"}
|
|
8
8
|
* @editorparams {"name":"readonly","parameterType":"boolean","defaultvalue":false,"description":"设置编辑器是否为只读态"}
|
|
9
|
+
* @editorparams {"name":"uploadparams","parameterType":"string","description":"上传参数,图片或文件上传时,用于计算上传路径"}
|
|
10
|
+
* @editorparams {"name":"exportparams","parameterType":"string","description":"下载参数,图片或文件下载时,用于计算下载路径"}
|
|
11
|
+
* @editorparams {"name":"osscat","parameterType":"string","description":"用于计算上传和下载路径的OSS参数"}
|
|
9
12
|
* @ignoreprops autoFocus | overflowMode
|
|
10
13
|
* @ignoreemits blur | focus | enter | infoTextChange
|
|
11
14
|
*/
|
package/es/index.mjs
CHANGED
|
@@ -181,6 +181,7 @@ export { useFocusByEnter } from './util/keydown-util/keydown-util.mjs';
|
|
|
181
181
|
export { calcAiToolbarItemsByAc } from './util/ai-util/ai-util.mjs';
|
|
182
182
|
export { convertBtnType } from './util/button-util/button-util.mjs';
|
|
183
183
|
export { parseHtml } from './util/wang-editor-util/wang-editor-util.mjs';
|
|
184
|
+
export { ArrowLeftBold, ArrowRightBold } from './util/icon/icon.mjs';
|
|
184
185
|
export { AuthGuard } from './web-app/guard/auth-guard/auth-guard.mjs';
|
|
185
186
|
export { runApp } from './web-app/main.mjs';
|
|
186
187
|
export { AppRouter } from './web-app/router/index.mjs';
|
package/es/locale/en/index.d.ts
CHANGED
package/es/locale/en/index.mjs
CHANGED
|
@@ -804,6 +804,10 @@ var index = {
|
|
|
804
804
|
aiDesc: "After deletion, the conversation will not be recoverable. Are you sure to delete?",
|
|
805
805
|
clearTopic: "Clear conversation",
|
|
806
806
|
clearTopicDesc: "Are you sure to clear all conversation data except for the current activation item?"
|
|
807
|
+
},
|
|
808
|
+
appModal: {
|
|
809
|
+
prev: "Previous record",
|
|
810
|
+
next: "Next record"
|
|
807
811
|
}
|
|
808
812
|
},
|
|
809
813
|
// runTime
|
|
@@ -800,6 +800,10 @@ var index = {
|
|
|
800
800
|
aiDesc: "\u5220\u9664\u540E\uFF0C\u8BE5\u5BF9\u8BDD\u5C06\u4E0D\u53EF\u6062\u590D\u3002\u786E\u8BA4\u5220\u9664\u5417\uFF1F",
|
|
801
801
|
clearTopic: "\u6E05\u7A7A\u4F1A\u8BDD",
|
|
802
802
|
clearTopicDesc: "\u786E\u8BA4\u6E05\u7A7A\u9664\u5F53\u524D\u6FC0\u6D3B\u9879\u5916\u7684\u6240\u6709\u4F1A\u8BDD\u6570\u636E\uFF1F"
|
|
803
|
+
},
|
|
804
|
+
appModal: {
|
|
805
|
+
prev: "\u4E0A\u4E00\u4E2A\u8BB0\u5F55",
|
|
806
|
+
next: "\u4E0B\u4E00\u4E2A\u8BB0\u5F55"
|
|
803
807
|
}
|
|
804
808
|
},
|
|
805
809
|
// runTime
|
|
@@ -259,7 +259,10 @@ class AppSwitchController extends PanelItemController {
|
|
|
259
259
|
await ibiz.hub.getAppAsync(tempKey);
|
|
260
260
|
}
|
|
261
261
|
const targetAppModel = ibiz.hub.getAppSourceModel(tempKey);
|
|
262
|
-
|
|
262
|
+
const defaultApp = ibiz.hub.getApp();
|
|
263
|
+
if (defaultApp.model.appId === tempKey && window.Environment.AppTitle) {
|
|
264
|
+
ibiz.env.AppTitle = window.Environment.AppTitle;
|
|
265
|
+
} else if (targetAppModel.getDefaultPSAppIndexView) {
|
|
263
266
|
const view = targetAppModel.getDefaultPSAppIndexView;
|
|
264
267
|
if (targetAppModel.caption) {
|
|
265
268
|
ibiz.env.AppTitle = targetAppModel.caption;
|
|
@@ -5,7 +5,7 @@ import './app-switch.scss';
|
|
|
5
5
|
/**
|
|
6
6
|
* 应用切换器
|
|
7
7
|
* @primary
|
|
8
|
-
* @description
|
|
8
|
+
* @description 应用切换器是前端导航核心组件,通过可视化列表实现多应用快速跳转,当应用存在子应用时,使用该能力需在首页视图配置应用选择模式为`默认`。
|
|
9
9
|
* @panelitemparams {name:sourcetype,parameterType:'UTIL' | 'REFAPP',defaultvalue:REFAPP,description:应用源类型,其中UTIL表示微应用数据来源于功能组件服务、REFAPP表示微应用数据来源于引用子应用集(主应用和引用子应用的所有首页)}
|
|
10
10
|
* @primary
|
|
11
11
|
*/
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { PanelItemController } from '@ibiz-template/runtime';
|
|
2
|
+
import { IPanelRawItem } from '@ibiz/model-core';
|
|
3
|
+
/**
|
|
4
|
+
* 面板用户信息控制器
|
|
5
|
+
*
|
|
6
|
+
* @export
|
|
7
|
+
* @class AuthUserinfoController
|
|
8
|
+
* @extends {PanelItemController<IPanelRawItem>}
|
|
9
|
+
*/
|
|
10
|
+
export declare class AuthUserinfoController extends PanelItemController<IPanelRawItem> {
|
|
11
|
+
/**
|
|
12
|
+
* @description 自定义补充参数
|
|
13
|
+
* @exposedoc
|
|
14
|
+
* @type {IData}
|
|
15
|
+
* @memberof AuthUserinfoController
|
|
16
|
+
*/
|
|
17
|
+
rawItemParams: IData;
|
|
18
|
+
/**
|
|
19
|
+
* 初始化
|
|
20
|
+
*
|
|
21
|
+
* @return {*} {Promise<void>}
|
|
22
|
+
* @memberof AuthUserinfoController
|
|
23
|
+
*/
|
|
24
|
+
onInit(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* @description 处理自定义补充参数 [{key:'name',value:'data'}] => {name:'data'}
|
|
27
|
+
* @protected
|
|
28
|
+
* @memberof AuthUserinfoController
|
|
29
|
+
*/
|
|
30
|
+
protected handleRawItemParams(): void;
|
|
31
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { PanelItemController } from '@ibiz-template/runtime';
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __publicField = (obj, key, value) => {
|
|
7
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
8
|
+
return value;
|
|
9
|
+
};
|
|
10
|
+
class AuthUserinfoController extends PanelItemController {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
/**
|
|
14
|
+
* @description 自定义补充参数
|
|
15
|
+
* @exposedoc
|
|
16
|
+
* @type {IData}
|
|
17
|
+
* @memberof AuthUserinfoController
|
|
18
|
+
*/
|
|
19
|
+
__publicField(this, "rawItemParams", {});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 初始化
|
|
23
|
+
*
|
|
24
|
+
* @return {*} {Promise<void>}
|
|
25
|
+
* @memberof AuthUserinfoController
|
|
26
|
+
*/
|
|
27
|
+
async onInit() {
|
|
28
|
+
await super.onInit();
|
|
29
|
+
this.handleRawItemParams();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @description 处理自定义补充参数 [{key:'name',value:'data'}] => {name:'data'}
|
|
33
|
+
* @protected
|
|
34
|
+
* @memberof AuthUserinfoController
|
|
35
|
+
*/
|
|
36
|
+
handleRawItemParams() {
|
|
37
|
+
var _a;
|
|
38
|
+
const rawItemParams = (_a = this.model.rawItem) == null ? void 0 : _a.rawItemParams;
|
|
39
|
+
if (Array.isArray(rawItemParams)) {
|
|
40
|
+
rawItemParams.forEach((item) => {
|
|
41
|
+
const key = item.key;
|
|
42
|
+
const value = item.value;
|
|
43
|
+
if (key && value) {
|
|
44
|
+
this.rawItemParams[key.toLowerCase()] = value;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export { AuthUserinfoController };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-user-info{--ibiz-user-info-padding:0 var(--ibiz-spacing-loose);--ibiz-user-info-color:var(--ibiz-color-text-0);--ibiz-user-info-font-size:var(--ibiz-font-size-header-5);--ibiz-user-info-height:44px;display:flex;align-items:center;justify-content:flex-start;width:100%;height:100%}.ibiz-user-info .el-dropdown{width:100%;height:var(--ibiz-user-info-height);padding:var(--ibiz-user-info-padding);cursor:pointer}.ibiz-user-info.is-left .ibiz-user-info__down{display:none}.ibiz-user-info.is-top .ibiz-user-info__down{margin-left:12px;font-size:var(--ibiz-user-info-font-size)}.ibiz-user-info.is-top .ibiz-user-info-avatar{max-width:32px;max-height:32px;margin-right:var(--ibiz-spacing-base)}.ibiz-user-info.is-collapse .el-dropdown{padding:0 var(--ibiz-spacing-base-tight)}.ibiz-user-info.is-collapse .ibiz-user-info-avatar{max-width:32px;max-height:32px;margin:0}.ibiz-user-info-avatar{width:var(--ibiz-user-info-height);height:var(--ibiz-user-info-height);margin-right:10px}.ibiz-user-info-info{width:100%;display:flex;align-items:center;justify-content:space-between;color:var(--ibiz-user-info-color)}.ibiz-user-info-info.is-collapse{justify-content:center}.ibiz-user-info-name__user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:130px;font-size:var(--ibiz-user-info-font-size);line-height:1.3}.ibiz-user-info-name__person-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:130px;margin-top:4px;font-size:var(--ibiz-font-size-small);line-height:1.2}.ibiz-user-info-name.is-collapse{display:none}.ibiz-user-info-label{display:flex;align-items:center;justify-content:flex-start;font-size:var(--ibiz-user-info-font-size);color:var(--ibiz-user-info-color);outline:0}
|
|
1
|
+
.ibiz-user-info{--ibiz-user-info-padding:0 var(--ibiz-spacing-loose);--ibiz-user-info-color:var(--ibiz-color-text-0);--ibiz-user-info-font-size:var(--ibiz-font-size-header-5);--ibiz-user-info-height:44px;display:flex;align-items:center;justify-content:flex-start;width:100%;height:100%}.ibiz-user-info .el-dropdown{width:100%;height:var(--ibiz-user-info-height);padding:var(--ibiz-user-info-padding);cursor:pointer}.ibiz-user-info.is-left .ibiz-user-info__down{display:none}.ibiz-user-info.is-top .ibiz-user-info__down{margin-left:12px;font-size:var(--ibiz-user-info-font-size)}.ibiz-user-info.is-top .ibiz-user-info-avatar{max-width:32px;max-height:32px;margin-right:var(--ibiz-spacing-base)}.ibiz-user-info.is-collapse .el-dropdown{padding:0 var(--ibiz-spacing-base-tight)}.ibiz-user-info.is-collapse .ibiz-user-info-avatar{max-width:32px;max-height:32px;margin:0}.ibiz-user-info.is-readonly .el-dropdown{cursor:default}.ibiz-user-info-avatar{width:var(--ibiz-user-info-height);height:var(--ibiz-user-info-height);margin-right:10px}.ibiz-user-info-info{width:100%;display:flex;align-items:center;justify-content:space-between;color:var(--ibiz-user-info-color)}.ibiz-user-info-info.is-collapse{justify-content:center}.ibiz-user-info-name__user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:130px;font-size:var(--ibiz-user-info-font-size);line-height:1.3}.ibiz-user-info-name__person-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:130px;margin-top:4px;font-size:var(--ibiz-font-size-small);line-height:1.2}.ibiz-user-info-name.is-collapse{display:none}.ibiz-user-info-label{display:flex;align-items:center;justify-content:flex-start;font-size:var(--ibiz-user-info-font-size);color:var(--ibiz-user-info-color);outline:0}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { PropType } from 'vue';
|
|
2
2
|
import './auth-userinfo.scss';
|
|
3
3
|
import { IPanelRawItem } from '@ibiz/model-core';
|
|
4
|
-
import {
|
|
4
|
+
import { AuthUserinfoController } from './auth-userinfo.controller';
|
|
5
5
|
/**
|
|
6
6
|
* 用户信息
|
|
7
7
|
* @description 展示用户的基本信息,提供登出功能。
|
|
8
|
+
* @panelitemparams {name:strictly,parameterType:boolean,defaultvalue:false,description:是否取消与首页菜单的关联,即菜单收缩时不会跟随改变,当用户信息未配置在首页左侧时应启用}
|
|
9
|
+
* @panelitemparams {name:readonly,parameterType:boolean,defaultvalue:false,description:是否只读}
|
|
8
10
|
* @primary
|
|
9
11
|
*/
|
|
10
12
|
export declare const AuthUserinfo: import("vue").DefineComponent<{
|
|
@@ -19,18 +21,19 @@ export declare const AuthUserinfo: import("vue").DefineComponent<{
|
|
|
19
21
|
* @description 用户信息控件控制器
|
|
20
22
|
*/
|
|
21
23
|
controller: {
|
|
22
|
-
type: typeof
|
|
24
|
+
type: typeof AuthUserinfoController;
|
|
23
25
|
required: true;
|
|
24
26
|
};
|
|
25
27
|
}, {
|
|
26
28
|
ns: import("@ibiz-template/core").Namespace;
|
|
27
|
-
c:
|
|
29
|
+
c: AuthUserinfoController;
|
|
28
30
|
onClick: () => void;
|
|
29
31
|
srfusername: any;
|
|
30
32
|
loginname: any;
|
|
31
33
|
router: import("vue-router").Router;
|
|
32
34
|
menuAlign: import("vue").ComputedRef<string>;
|
|
33
35
|
isCollapse: import("vue").ComputedRef<any>;
|
|
36
|
+
isReadonly: import("vue").ComputedRef<boolean>;
|
|
34
37
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
35
38
|
/**
|
|
36
39
|
* @description 用户信息控件模型数据
|
|
@@ -43,7 +46,7 @@ export declare const AuthUserinfo: import("vue").DefineComponent<{
|
|
|
43
46
|
* @description 用户信息控件控制器
|
|
44
47
|
*/
|
|
45
48
|
controller: {
|
|
46
|
-
type: typeof
|
|
49
|
+
type: typeof AuthUserinfoController;
|
|
47
50
|
required: true;
|
|
48
51
|
};
|
|
49
52
|
}>>, {}, {}>;
|
|
@@ -2,7 +2,7 @@ import { inject, computed, resolveComponent, createVNode, defineComponent } from
|
|
|
2
2
|
import { useRouter } from 'vue-router';
|
|
3
3
|
import { useNamespace } from '@ibiz-template/vue3-util';
|
|
4
4
|
import './auth-userinfo.css';
|
|
5
|
-
import {
|
|
5
|
+
import { AuthUserinfoController } from './auth-userinfo.controller.mjs';
|
|
6
6
|
|
|
7
7
|
"use strict";
|
|
8
8
|
const AuthUserinfo = /* @__PURE__ */ defineComponent({
|
|
@@ -19,7 +19,7 @@ const AuthUserinfo = /* @__PURE__ */ defineComponent({
|
|
|
19
19
|
* @description 用户信息控件控制器
|
|
20
20
|
*/
|
|
21
21
|
controller: {
|
|
22
|
-
type:
|
|
22
|
+
type: AuthUserinfoController,
|
|
23
23
|
required: true
|
|
24
24
|
}
|
|
25
25
|
},
|
|
@@ -43,8 +43,20 @@ const AuthUserinfo = /* @__PURE__ */ defineComponent({
|
|
|
43
43
|
ibiz.hub.controller.logout();
|
|
44
44
|
};
|
|
45
45
|
const isCollapse = computed(() => {
|
|
46
|
+
const {
|
|
47
|
+
strictly
|
|
48
|
+
} = c.rawItemParams;
|
|
49
|
+
if (strictly && strictly === "true") {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
46
52
|
return c.panel.view.state.isCollapse;
|
|
47
53
|
});
|
|
54
|
+
const isReadonly = computed(() => {
|
|
55
|
+
const {
|
|
56
|
+
readonly
|
|
57
|
+
} = c.rawItemParams;
|
|
58
|
+
return readonly === "true";
|
|
59
|
+
});
|
|
48
60
|
return {
|
|
49
61
|
ns,
|
|
50
62
|
c,
|
|
@@ -53,13 +65,16 @@ const AuthUserinfo = /* @__PURE__ */ defineComponent({
|
|
|
53
65
|
loginname,
|
|
54
66
|
router,
|
|
55
67
|
menuAlign,
|
|
56
|
-
isCollapse
|
|
68
|
+
isCollapse,
|
|
69
|
+
isReadonly
|
|
57
70
|
};
|
|
58
71
|
},
|
|
59
72
|
render() {
|
|
60
73
|
return createVNode("div", {
|
|
61
|
-
"class": [this.ns.b(), this.ns.m(this.modelData.id), ...this.controller.containerClass, this.ns.is("left", this.menuAlign === "LEFT"), this.ns.is("top", this.menuAlign === "TOP"), this.ns.is("collapse", this.isCollapse)]
|
|
62
|
-
}, [createVNode(resolveComponent("el-dropdown"),
|
|
74
|
+
"class": [this.ns.b(), this.ns.m(this.modelData.id), ...this.controller.containerClass, this.ns.is("left", this.menuAlign === "LEFT"), this.ns.is("top", this.menuAlign === "TOP"), this.ns.is("collapse", this.isCollapse), this.ns.is("readonly", this.isReadonly)]
|
|
75
|
+
}, [createVNode(resolveComponent("el-dropdown"), {
|
|
76
|
+
"disabled": this.isReadonly
|
|
77
|
+
}, {
|
|
63
78
|
default: () => createVNode("div", {
|
|
64
79
|
"class": [this.ns.b("info"), this.ns.is("collapse", this.isCollapse)]
|
|
65
80
|
}, [createVNode("div", {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IPanelItemProvider, PanelController, PanelItemController } from '@ibiz-template/runtime';
|
|
2
2
|
import { IPanelItem } from '@ibiz/model-core';
|
|
3
|
+
import { AuthUserinfoController } from './auth-userinfo.controller';
|
|
3
4
|
/**
|
|
4
5
|
* 用户信息适配器
|
|
5
6
|
*
|
|
@@ -11,5 +12,5 @@ import { IPanelItem } from '@ibiz/model-core';
|
|
|
11
12
|
*/
|
|
12
13
|
export declare class AuthUserinfoProvider implements IPanelItemProvider {
|
|
13
14
|
component: string;
|
|
14
|
-
createController(panelItem: IPanelItem, panel: PanelController, parent: PanelItemController | undefined): Promise<
|
|
15
|
+
createController(panelItem: IPanelItem, panel: PanelController, parent: PanelItemController | undefined): Promise<AuthUserinfoController>;
|
|
15
16
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AuthUserinfoController } from './auth-userinfo.controller.mjs';
|
|
2
2
|
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -12,7 +12,7 @@ class AuthUserinfoProvider {
|
|
|
12
12
|
__publicField(this, "component", "IBizAuthUserinfo");
|
|
13
13
|
}
|
|
14
14
|
async createController(panelItem, panel, parent) {
|
|
15
|
-
const c = new
|
|
15
|
+
const c = new AuthUserinfoController(panelItem, panel, parent);
|
|
16
16
|
await c.init();
|
|
17
17
|
return c;
|
|
18
18
|
}
|
|
@@ -4,25 +4,26 @@ export declare const IBizAuthUserinfo: import("@ibiz-template/vue3-util").TypeWi
|
|
|
4
4
|
required: true;
|
|
5
5
|
};
|
|
6
6
|
controller: {
|
|
7
|
-
type: typeof import("
|
|
7
|
+
type: typeof import("./auth-userinfo.controller").AuthUserinfoController;
|
|
8
8
|
required: true;
|
|
9
9
|
};
|
|
10
10
|
}, {
|
|
11
11
|
ns: import("@ibiz-template/core").Namespace;
|
|
12
|
-
c: import("
|
|
12
|
+
c: import("./auth-userinfo.controller").AuthUserinfoController;
|
|
13
13
|
onClick: () => void;
|
|
14
14
|
srfusername: any;
|
|
15
15
|
loginname: any;
|
|
16
16
|
router: import("vue-router").Router;
|
|
17
17
|
menuAlign: import("vue").ComputedRef<string>;
|
|
18
18
|
isCollapse: import("vue").ComputedRef<any>;
|
|
19
|
+
isReadonly: import("vue").ComputedRef<boolean>;
|
|
19
20
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
20
21
|
modelData: {
|
|
21
22
|
type: import("vue").PropType<import("@ibiz/model-core").IPanelRawItem>;
|
|
22
23
|
required: true;
|
|
23
24
|
};
|
|
24
25
|
controller: {
|
|
25
|
-
type: typeof import("
|
|
26
|
+
type: typeof import("./auth-userinfo.controller").AuthUserinfoController;
|
|
26
27
|
required: true;
|
|
27
28
|
};
|
|
28
29
|
}>>, {}, {}>>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PanelItemController } from '@ibiz-template/runtime';
|
|
2
|
-
import { IPanelRawItem } from '@ibiz/model-core';
|
|
2
|
+
import { IPanelRawItem, IAppFunc, IAppMenuItem } from '@ibiz/model-core';
|
|
3
3
|
import { IHttpResponse } from '@ibiz-template/core';
|
|
4
4
|
import { GlobalSearchState, ISearchItem } from './global-search.state';
|
|
5
5
|
/**
|
|
@@ -28,11 +28,11 @@ export declare class GlobalSearchController extends PanelItemController<IPanelRa
|
|
|
28
28
|
/**
|
|
29
29
|
* @description 自定义参数
|
|
30
30
|
* @exposedoc
|
|
31
|
-
* @
|
|
31
|
+
* @public
|
|
32
32
|
* @type {IData}
|
|
33
33
|
* @memberof GlobalSearchController
|
|
34
34
|
*/
|
|
35
|
-
|
|
35
|
+
rawItemParams: IData;
|
|
36
36
|
/**
|
|
37
37
|
* @description 搜索历史缓存标识
|
|
38
38
|
* @protected
|
|
@@ -91,6 +91,13 @@ export declare class GlobalSearchController extends PanelItemController<IPanelRa
|
|
|
91
91
|
* @memberof GlobalSearchController
|
|
92
92
|
*/
|
|
93
93
|
protected initHistory(): void;
|
|
94
|
+
/**
|
|
95
|
+
* @description 获取全局搜索应用功能
|
|
96
|
+
* @param {IAppMenuItem[]} appMenuItems
|
|
97
|
+
* @returns {*} {Promise<IAppFunc[]>}
|
|
98
|
+
* @memberof GlobalSearchController
|
|
99
|
+
*/
|
|
100
|
+
getSearchFunc(appMenuItems: IAppMenuItem[]): Promise<IAppFunc[]>;
|
|
94
101
|
/**
|
|
95
102
|
* 初始化全局搜索项
|
|
96
103
|
*
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { PanelItemController, getControl, getDeACMode, getAcItemProvider, calcDeCodeNameById, OpenAppViewCommand } from '@ibiz-template/runtime';
|
|
2
2
|
import { notNilEmpty, createUUID } from 'qx-util';
|
|
3
|
-
import { recursiveIterate } from '@ibiz-template/core';
|
|
4
3
|
import { GlobalSearchState } from './global-search.state.mjs';
|
|
5
4
|
|
|
6
5
|
"use strict";
|
|
@@ -30,7 +29,7 @@ class GlobalSearchController extends PanelItemController {
|
|
|
30
29
|
/**
|
|
31
30
|
* @description 自定义参数
|
|
32
31
|
* @exposedoc
|
|
33
|
-
* @
|
|
32
|
+
* @public
|
|
34
33
|
* @type {IData}
|
|
35
34
|
* @memberof GlobalSearchController
|
|
36
35
|
*/
|
|
@@ -125,6 +124,38 @@ class GlobalSearchController extends PanelItemController {
|
|
|
125
124
|
if (cache)
|
|
126
125
|
this.state.histories = JSON.parse(cache);
|
|
127
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* @description 获取全局搜索应用功能
|
|
129
|
+
* @param {IAppMenuItem[]} appMenuItems
|
|
130
|
+
* @returns {*} {Promise<IAppFunc[]>}
|
|
131
|
+
* @memberof GlobalSearchController
|
|
132
|
+
*/
|
|
133
|
+
async getSearchFunc(appMenuItems) {
|
|
134
|
+
const result = [];
|
|
135
|
+
const promises = appMenuItems.map(async (menuItem) => {
|
|
136
|
+
try {
|
|
137
|
+
if (menuItem.appMenuItems) {
|
|
138
|
+
const subFuncs = await this.getSearchFunc(menuItem.appMenuItems);
|
|
139
|
+
result.push(...subFuncs);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (menuItem.appFuncId) {
|
|
143
|
+
let app = ibiz.hub.getApp(menuItem.appId);
|
|
144
|
+
if (!app) {
|
|
145
|
+
app = await ibiz.hub.getAppAsync(menuItem.appId);
|
|
146
|
+
}
|
|
147
|
+
const appFunc = app.getAppFunc(menuItem.appFuncId);
|
|
148
|
+
if (appFunc && appFunc.appFuncType === "SEARCH" && appFunc.appDEACModeId && appFunc.appDataEntityId) {
|
|
149
|
+
result.push(appFunc);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
} catch (err) {
|
|
153
|
+
console.error("\u8BA1\u7B97\u83DC\u5355\u5E94\u7528\u529F\u80FD\u5F02\u5E38: ".concat(menuItem.appFuncId), err);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
await Promise.all(promises);
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
128
159
|
/**
|
|
129
160
|
* 初始化全局搜索项
|
|
130
161
|
*
|
|
@@ -132,24 +163,14 @@ class GlobalSearchController extends PanelItemController {
|
|
|
132
163
|
* @memberof GlobalSearchController
|
|
133
164
|
*/
|
|
134
165
|
async initGlobalSearchItem() {
|
|
135
|
-
const appMenu = getControl(
|
|
166
|
+
const appMenu = getControl(
|
|
167
|
+
this.panel.view.model,
|
|
168
|
+
"appmenu"
|
|
169
|
+
);
|
|
136
170
|
if (!appMenu)
|
|
137
171
|
return;
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
appMenu,
|
|
141
|
-
(menuItem) => {
|
|
142
|
-
if (menuItem.appFuncId) {
|
|
143
|
-
const app = ibiz.hub.getApp(menuItem.appId);
|
|
144
|
-
const appFunc = app.getAppFunc(menuItem.appFuncId);
|
|
145
|
-
if (appFunc && appFunc.appFuncType === "SEARCH" && appFunc.appDEACModeId && appFunc.appDataEntityId)
|
|
146
|
-
appFuncs.push(appFunc);
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
childrenFields: ["appMenuItems"]
|
|
151
|
-
}
|
|
152
|
-
);
|
|
172
|
+
const appMenuItems = appMenu.appMenuItems || [];
|
|
173
|
+
const appFuncs = await this.getSearchFunc(appMenuItems);
|
|
153
174
|
await Promise.all(
|
|
154
175
|
appFuncs.map(async (func) => {
|
|
155
176
|
const deACMode = await getDeACMode(
|
|
@@ -5,10 +5,11 @@ import './global-search.scss';
|
|
|
5
5
|
/**
|
|
6
6
|
* 全局搜索
|
|
7
7
|
* @primary
|
|
8
|
-
* @description 全局搜索组件,监听快捷键Ctrl+K
|
|
8
|
+
* @description 全局搜索组件,监听快捷键Ctrl+K弹出搜索框,需在菜单上绑定应用功能预定义类型为GLOBAL_SEARCH的隐藏菜单项,应用功能类型为全局搜索,同时绑定应用实体与自填模式。输入值时会查询实体自填模式数据,同时点击下拉数据后会打开自填模式中的链接视图。每次查询后还会缓存为搜索历史记录。
|
|
9
9
|
* @panelitemparams {name:historyCacheKey,parameterType:string,defaultvalue:global-search-history,description:搜索历史缓存标识}
|
|
10
10
|
* @panelitemparams {name:maxhistory,parameterType:number,defaultvalue:7,description:最大历史记录,默认7条}
|
|
11
11
|
* @panelitemparams {name:size,parameterType:number,defaultvalue:100,description:单次查询最大数量,默认100条}
|
|
12
|
+
* @panelitemparams {name:placeholder,parameterType:string,description:搜索框提示信息}
|
|
12
13
|
* @export
|
|
13
14
|
* @class GlobalSearch
|
|
14
15
|
*/
|
|
@@ -33,6 +34,7 @@ export declare const GlobalSearch: import("vue").DefineComponent<{
|
|
|
33
34
|
visible: import("vue").ComputedRef<boolean>;
|
|
34
35
|
editorRef: import("vue").Ref<any>;
|
|
35
36
|
searchValue: import("vue").Ref<string>;
|
|
37
|
+
curPlaceholder: import("vue").ComputedRef<any>;
|
|
36
38
|
handleFocus: (_evt: FocusEvent) => void;
|
|
37
39
|
handleEnter: (event: KeyboardEvent) => void;
|
|
38
40
|
renderAction: () => JSX.Element | undefined;
|
|
@@ -46,6 +46,12 @@ const GlobalSearch = /* @__PURE__ */ defineComponent({
|
|
|
46
46
|
const showEmpty = histories.includes(query) && list.length === 0;
|
|
47
47
|
return (showSearch || showEmpty || showHistory || loading) && activated.value;
|
|
48
48
|
});
|
|
49
|
+
const curPlaceholder = computed(() => {
|
|
50
|
+
const {
|
|
51
|
+
placeholder
|
|
52
|
+
} = c.rawItemParams;
|
|
53
|
+
return placeholder || ibiz.i18n.t("panelComponent.globalSearch.placeholder");
|
|
54
|
+
});
|
|
49
55
|
const handleEnter = (event) => {
|
|
50
56
|
if (event.key === "Enter") {
|
|
51
57
|
activated.value = true;
|
|
@@ -188,6 +194,7 @@ const GlobalSearch = /* @__PURE__ */ defineComponent({
|
|
|
188
194
|
visible,
|
|
189
195
|
editorRef,
|
|
190
196
|
searchValue,
|
|
197
|
+
curPlaceholder,
|
|
191
198
|
handleFocus,
|
|
192
199
|
handleEnter,
|
|
193
200
|
renderAction,
|
|
@@ -212,7 +219,7 @@ const GlobalSearch = /* @__PURE__ */ defineComponent({
|
|
|
212
219
|
"ref": "editorRef",
|
|
213
220
|
"modelValue": this.searchValue,
|
|
214
221
|
"onUpdate:modelValue": ($event) => this.searchValue = $event,
|
|
215
|
-
"placeholder":
|
|
222
|
+
"placeholder": this.curPlaceholder,
|
|
216
223
|
"class": [this.ns.e("search"), this.ns.is("search", this.visible)],
|
|
217
224
|
"onFocus": this.handleFocus,
|
|
218
225
|
"onKeyup": this.handleEnter,
|
|
@@ -13,6 +13,7 @@ export declare const IBizGlobalSearch: import("@ibiz-template/vue3-util").TypeWi
|
|
|
13
13
|
visible: import("vue").ComputedRef<boolean>;
|
|
14
14
|
editorRef: import("vue").Ref<any>;
|
|
15
15
|
searchValue: import("vue").Ref<string>;
|
|
16
|
+
curPlaceholder: import("vue").ComputedRef<any>;
|
|
16
17
|
handleFocus: (_evt: FocusEvent) => void;
|
|
17
18
|
handleEnter: (event: KeyboardEvent) => void;
|
|
18
19
|
renderAction: () => JSX.Element | undefined;
|
|
@@ -57,8 +57,6 @@ class IndexBlankPlaceholderController extends PanelItemController {
|
|
|
57
57
|
const appView = await ibiz.hub.config.view.get(appViewId);
|
|
58
58
|
const { openMode = "INDEXVIEWTAB" } = appView;
|
|
59
59
|
this.state.visible = !openMode.startsWith("INDEXVIEWTAB");
|
|
60
|
-
} else {
|
|
61
|
-
this.state.visible = true;
|
|
62
60
|
}
|
|
63
61
|
});
|
|
64
62
|
}
|
|
@@ -72,8 +72,11 @@ class PanelAppTitleController extends PanelItemController {
|
|
|
72
72
|
if (this.state.icon.endsWith(".svg") || this.state.icon2.endsWith(".svg")) {
|
|
73
73
|
this.state.isSvg = true;
|
|
74
74
|
}
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
const defaultApp = ibiz.hub.getApp();
|
|
76
|
+
if (defaultApp.model.appId === indexViewModel.appId) {
|
|
77
|
+
if (ibiz.env.AppTitle)
|
|
78
|
+
this.state.caption = ibiz.env.AppTitle;
|
|
79
|
+
}
|
|
77
80
|
}
|
|
78
81
|
/**
|
|
79
82
|
* 处理自定义补充参数 [{key:'name',value:'data'}] => {name:'data'}
|
|
@@ -5,6 +5,7 @@ import './panel-app-title.scss';
|
|
|
5
5
|
/**
|
|
6
6
|
* 应用标题
|
|
7
7
|
* @description 用于绘制应用logo和应用标题,提供点击标题跳转首页的能力。
|
|
8
|
+
* @panelitemparams {name:strictly,parameterType:boolean,defaultvalue:false,description:是否取消与首页菜单的关联,即菜单收缩时不会跟随改变,当应用标题未配置在首页左侧时应启用}
|
|
8
9
|
* @primary
|
|
9
10
|
*/
|
|
10
11
|
export declare const PanelAppTitle: import("vue").DefineComponent<{
|