@ibiz-template/vue3-components 0.7.13 → 0.7.14

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.
Files changed (59) hide show
  1. package/dist/{index-WP6TUdg-.js → index-8Lu2Ax-_.js} +1 -1
  2. package/dist/index-8tvyarHw.js +4 -0
  3. package/dist/{index-kgWpXafW.js → index-Hg_8xCYx.js} +1 -1
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +1 -1
  6. package/dist/{xlsx-util-8i01yifN.js → xlsx-util-OfvrEAre.js} +1 -1
  7. package/es/common/carousel/carousel.d.ts +8 -0
  8. package/es/common/carousel/carousel.mjs +9 -1
  9. package/es/common/carousel-card/carousel-card.css +1 -0
  10. package/es/common/carousel-card/carousel-card.d.ts +41 -0
  11. package/es/common/carousel-card/carousel-card.mjs +218 -0
  12. package/es/common/index.mjs +2 -0
  13. package/es/control/context-menu/context-menu.d.ts +1 -0
  14. package/es/control/context-menu/context-menu.mjs +9 -1
  15. package/es/control/context-menu/index.d.ts +1 -0
  16. package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.d.ts +76 -1
  17. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.d.ts +74 -0
  18. package/es/control/search-bar/filter-tree/filter-tree.mjs +19 -20
  19. package/es/control/toolbar/toolbar.mjs +27 -2
  20. package/es/control/tree/tree.css +1 -1
  21. package/es/control/tree/tree.mjs +2 -1
  22. package/es/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.mjs +10 -10
  23. package/es/locale/en/index.d.ts +1 -0
  24. package/es/locale/en/index.mjs +2 -1
  25. package/es/locale/zh-CN/index.d.ts +1 -0
  26. package/es/locale/zh-CN/index.mjs +2 -1
  27. package/es/panel-component/auth-captcha/auth-captcha.controller.d.ts +13 -0
  28. package/es/panel-component/auth-captcha/auth-captcha.controller.mjs +15 -11
  29. package/es/panel-component/panel-button/panel-button.controller.d.ts +1 -1
  30. package/es/panel-component/panel-button/panel-button.controller.mjs +6 -9
  31. package/es/panel-component/panel-static-carousel/index.d.ts +1 -0
  32. package/es/panel-component/panel-static-carousel/panel-static-carousel.d.ts +1 -0
  33. package/es/panel-component/panel-static-carousel/panel-static-carousel.mjs +13 -2
  34. package/es/panel-component/short-cut/short-cut.css +1 -1
  35. package/es/panel-component/short-cut/short-cut.mjs +19 -16
  36. package/es/view-engine/login-view.engine.d.ts +31 -3
  37. package/es/view-engine/login-view.engine.mjs +32 -12
  38. package/es/web-app/components/modal-router-shell/modal-router-shell.mjs +19 -5
  39. package/lib/common/carousel/carousel.cjs +9 -1
  40. package/lib/common/carousel-card/carousel-card.cjs +220 -0
  41. package/lib/common/carousel-card/carousel-card.css +1 -0
  42. package/lib/common/index.cjs +2 -0
  43. package/lib/control/context-menu/context-menu.cjs +8 -0
  44. package/lib/control/search-bar/filter-tree/filter-tree.cjs +19 -20
  45. package/lib/control/toolbar/toolbar.cjs +26 -1
  46. package/lib/control/tree/tree.cjs +2 -1
  47. package/lib/control/tree/tree.css +1 -1
  48. package/lib/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.cjs +10 -10
  49. package/lib/locale/en/index.cjs +2 -1
  50. package/lib/locale/zh-CN/index.cjs +2 -1
  51. package/lib/panel-component/auth-captcha/auth-captcha.controller.cjs +15 -11
  52. package/lib/panel-component/panel-button/panel-button.controller.cjs +6 -9
  53. package/lib/panel-component/panel-static-carousel/panel-static-carousel.cjs +13 -2
  54. package/lib/panel-component/short-cut/short-cut.cjs +19 -16
  55. package/lib/panel-component/short-cut/short-cut.css +1 -1
  56. package/lib/view-engine/login-view.engine.cjs +32 -12
  57. package/lib/web-app/components/modal-router-shell/modal-router-shell.cjs +17 -3
  58. package/package.json +7 -7
  59. package/dist/index-5IjaPupj.js +0 -4
@@ -54,7 +54,7 @@ const FilterModes = [{
54
54
  valueOP: ValueOP.NOT_EXISTS,
55
55
  label: "\u4E0D\u5B58\u5728(NOTEXISTS)"
56
56
  }];
57
- const ExcludeOPs = [ValueOP.IS_NULL, ValueOP.IS_NOT_NULL];
57
+ const ExcludeOPs = [ValueOP.IS_NULL, ValueOP.IS_NOT_NULL, ValueOP.EXISTS, ValueOP.NOT_EXISTS];
58
58
  const FilterTreeControl = /* @__PURE__ */ defineComponent({
59
59
  name: "IBizFilterTreeControl",
60
60
  props: {
@@ -240,7 +240,6 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
240
240
  }, [editor]);
241
241
  };
242
242
  const renderFilterItem = (node, itemsC) => {
243
- let _slot;
244
243
  if (node.hidden) {
245
244
  return;
246
245
  }
@@ -271,14 +270,14 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
271
270
  "onChange": (field) => {
272
271
  onFieldSelect(node, field, fieldInfos);
273
272
  }
274
- }, _isSlot(_slot = fieldInfos.map((field) => {
275
- return createVNode(resolveComponent("el-option"), {
276
- "key": field.name,
277
- "value": field.name,
278
- "label": field.label
279
- }, null);
280
- })) ? _slot : {
281
- default: () => [_slot]
273
+ }, {
274
+ default: () => [fieldInfos == null ? void 0 : fieldInfos.map((field) => {
275
+ return createVNode(resolveComponent("el-option"), {
276
+ "key": field.name,
277
+ "value": field.name,
278
+ "label": field.label
279
+ }, null);
280
+ })]
282
281
  }), availableModes && availableModes.length > 0 && createVNode(resolveComponent("iBizFilterModeSelect"), {
283
282
  "disabled": node.disabled,
284
283
  "class": ns.e("mode-select"),
@@ -356,10 +355,10 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
356
355
  })])]);
357
356
  };
358
357
  renderFilterItems = (node) => {
359
- let _slot3;
358
+ let _slot2;
360
359
  const itemsC = findFilterController(node);
361
360
  if (node.simple) {
362
- let _slot2;
361
+ let _slot;
363
362
  const child = node.children[0];
364
363
  if (!child) {
365
364
  return;
@@ -371,14 +370,14 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
371
370
  "onChange": (field) => {
372
371
  onFieldSelect(node, field);
373
372
  }
374
- }, _isSlot(_slot2 = allFields.map((field) => {
373
+ }, _isSlot(_slot = allFields.map((field) => {
375
374
  return createVNode(resolveComponent("el-option"), {
376
375
  "key": field.name,
377
376
  "value": field.name,
378
377
  "label": field.label
379
378
  }, null);
380
- })) ? _slot2 : {
381
- default: () => [_slot2]
379
+ })) ? _slot : {
380
+ default: () => [_slot]
382
381
  }), createVNode(resolveComponent("iBizFilterModeSelect"), {
383
382
  "disabled": true,
384
383
  "class": ns.e("mode-select"),
@@ -395,8 +394,8 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
395
394
  "onClick": () => {
396
395
  addItem(node);
397
396
  }
398
- }, _isSlot(_slot3 = ibiz.i18n.t("control.searchBar.filterTree.addItem")) ? _slot3 : {
399
- default: () => [_slot3]
397
+ }, _isSlot(_slot2 = ibiz.i18n.t("control.searchBar.filterTree.addItem")) ? _slot2 : {
398
+ default: () => [_slot2]
400
399
  })]), createVNode("div", {
401
400
  "class": ns.be("group", "list")
402
401
  }, [node.children.length > 0 && node.children.map((child, index) => {
@@ -433,7 +432,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
433
432
  };
434
433
  },
435
434
  render() {
436
- let _slot4;
435
+ let _slot3;
437
436
  return createVNode("div", {
438
437
  "class": [this.ns.b()]
439
438
  }, [this.UiFilterNodes.length > 0 && this.UiFilterNodes.map((node) => {
@@ -453,8 +452,8 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
453
452
  "onClick": () => {
454
453
  this.onCancel();
455
454
  }
456
- }, _isSlot(_slot4 = ibiz.i18n.t("app.reset")) ? _slot4 : {
457
- default: () => [_slot4]
455
+ }, _isSlot(_slot3 = ibiz.i18n.t("app.reset")) ? _slot3 : {
456
+ default: () => [_slot3]
458
457
  })])]);
459
458
  }
460
459
  });
@@ -1,4 +1,4 @@
1
- import { isVNode, resolveComponent, createVNode, ref, createTextVNode, defineComponent } from 'vue';
1
+ import { isVNode, resolveComponent, createVNode, ref, h, createTextVNode, defineComponent } from 'vue';
2
2
  import { useNamespace, useControlController } from '@ibiz-template/vue3-util';
3
3
  import { ToolbarController } from '@ibiz-template/runtime';
4
4
  import { IBizExportExcel } from './export-excel/export-excel.mjs';
@@ -80,6 +80,11 @@ const ToolbarControl = /* @__PURE__ */ defineComponent({
80
80
  };
81
81
  const renderSubmenu = (item) => {
82
82
  const detoolbarItems = item.detoolbarItems || [];
83
+ const curVisible = c.state.buttonsState[item.id].visible;
84
+ const curDisabled = c.state.buttonsState[item.id].disabled;
85
+ if (!curVisible) {
86
+ return null;
87
+ }
83
88
  const ploading = detoolbarItems.findIndex((item2) => c.state.buttonsState[item2.id].loading) !== -1;
84
89
  const pvisible = detoolbarItems.findIndex((item2) => {
85
90
  return c.state.buttonsState[item2.id].visible === true;
@@ -87,7 +92,7 @@ const ToolbarControl = /* @__PURE__ */ defineComponent({
87
92
  if (!pvisible) {
88
93
  return null;
89
94
  }
90
- const pdisabled = detoolbarItems.findIndex((item2) => {
95
+ const pdisabled = curDisabled || detoolbarItems.findIndex((item2) => {
91
96
  return c.state.buttonsState[item2.id].disabled === false;
92
97
  }) === -1;
93
98
  const groupButtonStyle = item.buttonStyle || "";
@@ -102,9 +107,19 @@ const ToolbarControl = /* @__PURE__ */ defineComponent({
102
107
  var _a2, _b;
103
108
  const actionId = item2.uiactionId;
104
109
  const visible = (_a2 = c.state.buttonsState[item2.id]) == null ? void 0 : _a2.visible;
110
+ const provider = c.itemProviders[item2.id];
105
111
  if (!visible) {
106
112
  return null;
107
113
  }
114
+ if (provider) {
115
+ const component = resolveComponent(provider.component);
116
+ return h(component, {
117
+ key: item2.id,
118
+ class: [ns.e("item")],
119
+ item,
120
+ controller: c
121
+ });
122
+ }
108
123
  if (item2.itemType === "SEPERATOR") {
109
124
  return;
110
125
  }
@@ -170,9 +185,19 @@ const ToolbarControl = /* @__PURE__ */ defineComponent({
170
185
  var _a2, _b;
171
186
  const itemId = item.id;
172
187
  const visible = (_a2 = c.state.buttonsState[itemId]) == null ? void 0 : _a2.visible;
188
+ const provider = c.itemProviders[itemId];
173
189
  if (!visible) {
174
190
  return null;
175
191
  }
192
+ if (provider) {
193
+ const component = resolveComponent(provider.component);
194
+ return h(component, {
195
+ key: itemId,
196
+ class: [ns.e("item")],
197
+ item,
198
+ controller: c
199
+ });
200
+ }
176
201
  if (item.itemType === "SEPERATOR") {
177
202
  return createVNode("div", {
178
203
  "key": itemId,
@@ -1 +1 @@
1
- .ibiz-control-treeview{--ibiz-control-treeview-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-treeview-icon-height:var(--ibiz-spacing-base);--ibiz-control-treeview-icon-width:var(--ibiz-spacing-base);height:100%;padding:var(--ibiz-control-treeview-padding)}.ibiz-control-treeview-node{display:flex;flex-grow:1;flex-shrink:1;align-items:center;min-width:1px;height:100%}.ibiz-control-treeview-node__icon{display:inline-block;width:var(--ibiz-control-treeview-icon-width);height:var(--ibiz-control-treeview-icon-height);margin-right:var(--ibiz-spacing-tight)}.ibiz-control-treeview-node__icon>svg{width:100%;height:100%}.ibiz-control-treeview-node__label{flex-grow:1;flex-shrink:1;min-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-control-treeview-node:hover .ibiz-control-treeview-context-menu-trigger{display:inline-block}.ibiz-control-treeview-node--disabled{color:var(--ibiz-color-disabled-text);cursor:not-allowed}.ibiz-control-treeview-context-menu-trigger{display:none;flex-shrink:0;width:30px;text-align:center;cursor:pointer}.ibiz-control-treeview-context-menu-trigger__caption-icon{vertical-align:middle}.ibiz-control-treeview-context-menu.mx-context-menu{padding:var(--ibiz-spacing-extra-tight) 0}.ibiz-control-treeview-context-menu.mx-context-menu .mx-context-menu-item{padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base)}.ibiz-control-treeview-quick-search{margin-bottom:var(--ibiz-spacing-tight)}
1
+ .ibiz-control-treeview{--ibiz-control-treeview-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-treeview-icon-height:var(--ibiz-spacing-base);--ibiz-control-treeview-icon-width:var(--ibiz-spacing-base);height:100%;padding:var(--ibiz-spacing-tight) 0}.ibiz-control-treeview-node{display:flex;flex-grow:1;flex-shrink:1;align-items:center;min-width:1px;height:100%}.ibiz-control-treeview-node__icon{display:inline-block;width:var(--ibiz-control-treeview-icon-width);height:var(--ibiz-control-treeview-icon-height);margin-right:var(--ibiz-spacing-tight)}.ibiz-control-treeview-node__icon>svg{width:100%;height:100%}.ibiz-control-treeview-node__label{flex-grow:1;flex-shrink:1;min-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-control-treeview-node:hover .ibiz-control-treeview-context-menu-trigger{display:inline-block}.ibiz-control-treeview-node--disabled{color:var(--ibiz-color-disabled-text);cursor:not-allowed}.ibiz-control-treeview-context-menu-trigger{display:none;flex-shrink:0;width:30px;text-align:center;cursor:pointer}.ibiz-control-treeview-context-menu-trigger__caption-icon{vertical-align:middle}.ibiz-control-treeview-context-menu.mx-context-menu{padding:var(--ibiz-spacing-extra-tight) 0}.ibiz-control-treeview-context-menu.mx-context-menu .mx-context-menu-item{padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base)}.ibiz-control-treeview-quick-search{padding:0 var(--ibiz-spacing-base) var(--ibiz-spacing-tight)}.ibiz-control-treeview-tree{padding:0 var(--ibiz-spacing-base)}
@@ -441,7 +441,7 @@ const TreeControl = /* @__PURE__ */ defineComponent({
441
441
  }
442
442
  return createVNode(resolveComponent("el-input"), {
443
443
  "model-value": this.c.state.query,
444
- "class": [this.ns.b("quick-search"), this.ns.b("quick-search")],
444
+ "class": this.ns.b("quick-search"),
445
445
  "placeholder": this.c.state.placeHolder,
446
446
  "onInput": this.onInput
447
447
  }, {
@@ -459,6 +459,7 @@ const TreeControl = /* @__PURE__ */ defineComponent({
459
459
  if (this.c.state.isLoaded && this.treeRefreshKey) {
460
460
  return createVNode(resolveComponent("el-tree"), {
461
461
  "ref": "treeRef",
462
+ "class": this.ns.b("tree"),
462
463
  "key": this.treeRefreshKey,
463
464
  "node-key": "_id",
464
465
  "highlight-current": true,
@@ -247,6 +247,16 @@ const IBizPickerSelectView = /* @__PURE__ */ defineComponent({
247
247
  keySet.value = items.value.map((item) => item.srfkey);
248
248
  }
249
249
  }
250
+ if (!singleSelect.value) {
251
+ if (c.model.valueType === "OBJECTS") {
252
+ emit("change", multipleObjs.value);
253
+ } else {
254
+ if (c.valueItem) {
255
+ emit("change", multipleTempValue.value, c.valueItem);
256
+ }
257
+ emit("change", multipleTempText.value);
258
+ }
259
+ }
250
260
  };
251
261
  const openLinkView = async (e) => {
252
262
  e.stopPropagation();
@@ -335,16 +345,6 @@ const IBizPickerSelectView = /* @__PURE__ */ defineComponent({
335
345
  });
336
346
  const onVisibleChange = (e) => {
337
347
  showView.value = e;
338
- if (!e && !singleSelect.value) {
339
- if (c.model.valueType === "OBJECTS") {
340
- emit("change", multipleObjs.value);
341
- } else {
342
- if (c.valueItem) {
343
- emit("change", multipleTempValue.value, c.valueItem);
344
- }
345
- emit("change", multipleTempText.value);
346
- }
347
- }
348
348
  if (e === false) {
349
349
  onBlur({});
350
350
  }
@@ -731,6 +731,7 @@ declare const _default: {
731
731
  frontEndPluginNode: string;
732
732
  viewPlugin: string;
733
733
  correspondViewTypeStyle: string;
734
+ toolbarItem: string;
734
735
  };
735
736
  };
736
737
  service: {
@@ -737,7 +737,8 @@ var index = {
737
737
  interfaceBehaviorMode: "Find the adapter that does not correspond to the interface behavior mode {uiactionMode}.",
738
738
  frontEndPluginNode: "Cannot find interface logic front-end plugin node, plugin {pluginKey} corresponding adapter",
739
739
  viewPlugin: "Cannot find the adapter corresponding to the view plugin {pluginKey}.",
740
- correspondViewTypeStyle: "Cannot find an adapter for view type: [{viewType}] corresponding to view style: [{viewStyle}]."
740
+ correspondViewTypeStyle: "Cannot find an adapter for view type: [{viewType}] corresponding to view style: [{viewStyle}].",
741
+ toolbarItem: "Cannot find the adapter corresponding to the toolbar item plugin {pluginKey}."
741
742
  }
742
743
  },
743
744
  service: {
@@ -729,6 +729,7 @@ declare const _default: {
729
729
  frontEndPluginNode: string;
730
730
  viewPlugin: string;
731
731
  correspondViewTypeStyle: string;
732
+ toolbarItem: string;
732
733
  };
733
734
  };
734
735
  service: {
@@ -735,7 +735,8 @@ var index = {
735
735
  interfaceBehaviorMode: "\u627E\u4E0D\u754C\u9762\u884C\u4E3A\u6A21\u5F0F{uiactionMode}\u5BF9\u5E94\u7684\u9002\u914D\u5668",
736
736
  frontEndPluginNode: "\u627E\u4E0D\u5230\u754C\u9762\u903B\u8F91\u524D\u7AEF\u63D2\u4EF6\u8282\u70B9\uFF0C\u63D2\u4EF6{pluginKey}\u5BF9\u5E94\u7684\u9002\u914D\u5668",
737
737
  viewPlugin: "\u627E\u4E0D\u5230\u89C6\u56FE\u63D2\u4EF6{pluginKey}\u5BF9\u5E94\u7684\u9002\u914D\u5668",
738
- correspondViewTypeStyle: "\u627E\u4E0D\u5230\u89C6\u56FE\u7C7B\u578B\uFF1A[{viewType}]\u7684\u89C6\u56FE\u6837\u5F0F\uFF1A[{viewStyle}]\u5BF9\u5E94\u7684\u9002\u914D\u5668"
738
+ correspondViewTypeStyle: "\u627E\u4E0D\u5230\u89C6\u56FE\u7C7B\u578B\uFF1A[{viewType}]\u7684\u89C6\u56FE\u6837\u5F0F\uFF1A[{viewStyle}]\u5BF9\u5E94\u7684\u9002\u914D\u5668",
739
+ toolbarItem: "\u627E\u4E0D\u5230\u5DE5\u5177\u680F\u9879\u63D2\u4EF6{pluginKey}\u5BF9\u5E94\u7684\u9002\u914D\u5668"
739
740
  }
740
741
  },
741
742
  service: {
@@ -9,6 +9,12 @@ import { AuthCaptchaState } from './auth-captcha.state';
9
9
  * @extends {PanelItemController<IPanelRawItem>}
10
10
  */
11
11
  export declare class AuthCaptchaController extends PanelItemController<IPanelRawItem> {
12
+ /**
13
+ * 人机识别状态对象
14
+ *
15
+ * @type {AuthCaptchaState}
16
+ * @memberof AuthCaptchaController
17
+ */
12
18
  state: AuthCaptchaState;
13
19
  /**
14
20
  * 验证码数据
@@ -17,6 +23,13 @@ export declare class AuthCaptchaController extends PanelItemController<IPanelRaw
17
23
  * @memberof AuthCaptchaController
18
24
  */
19
25
  private captcha;
26
+ /**
27
+ * 创建人机识别状态对象
28
+ *
29
+ * @protected
30
+ * @return {*} {AuthCaptchaState}
31
+ * @memberof AuthCaptchaController
32
+ */
20
33
  protected createState(): AuthCaptchaState;
21
34
  /**
22
35
  * 面板状态变更通知
@@ -24,6 +24,13 @@ class AuthCaptchaController extends PanelItemController {
24
24
  "Captcha-Code": ""
25
25
  }));
26
26
  }
27
+ /**
28
+ * 创建人机识别状态对象
29
+ *
30
+ * @protected
31
+ * @return {*} {AuthCaptchaState}
32
+ * @memberof AuthCaptchaController
33
+ */
27
34
  createState() {
28
35
  var _a;
29
36
  return new AuthCaptchaState((_a = this.parent) == null ? void 0 : _a.state);
@@ -49,18 +56,15 @@ class AuthCaptchaController extends PanelItemController {
49
56
  async onInit() {
50
57
  super.onInit();
51
58
  await this.loadCaptcha();
52
- const view = this.panel.view;
53
- view.hooks.beforeLogin.tapPromise(async (context) => {
54
- if (!context.parentId || context.parentId === this.dataParent.model.id) {
55
- context.validate = context.validate && await this.validate();
56
- }
57
- });
58
- view.hooks.afterLogin.tap((context) => {
59
- if (!context.ok) {
60
- this.loadCaptcha();
61
- this.state.code = "";
59
+ this.panel.view.evt.on(
60
+ "onAfterLogin",
61
+ (evt) => {
62
+ if (!evt.ok && (!evt.panelDataParent || evt.panelDataParent === this.dataParent.model.id)) {
63
+ this.loadCaptcha();
64
+ this.state.code = "";
65
+ }
62
66
  }
63
- });
67
+ );
64
68
  }
65
69
  /**
66
70
  * 值校验
@@ -71,7 +71,7 @@ export declare class PanelButtonController extends PanelItemController<IPanelBut
71
71
  updateButtonState(): Promise<void>;
72
72
  /**
73
73
  * 行为点击
74
- *
74
+ * - 在行为参数中传递panelDataParent(面板项数据父容器标识)
75
75
  * @param {MouseEvent} event
76
76
  * @return {*} {Promise<void>}
77
77
  * @memberof PanelButtonController
@@ -87,7 +87,7 @@ class PanelButtonController extends PanelItemController {
87
87
  }
88
88
  /**
89
89
  * 行为点击
90
- *
90
+ * - 在行为参数中传递panelDataParent(面板项数据父容器标识)
91
91
  * @param {MouseEvent} event
92
92
  * @return {*} {Promise<void>}
93
93
  * @memberof PanelButtonController
@@ -99,19 +99,16 @@ class PanelButtonController extends PanelItemController {
99
99
  }
100
100
  event.stopPropagation();
101
101
  event.preventDefault();
102
- const view = this.panel.view;
103
- if (actionType === "UIACTION" && uiactionId === "login" && view.model.viewType === "APPLOGINVIEW" && !await view.validate(
104
- this.dataParent.model.id
105
- )) {
106
- return;
107
- }
108
102
  await UIActionUtil.execAndResolved(
109
103
  uiactionId,
110
104
  {
111
105
  context: this.panel.context,
112
- params: this.panel.params,
106
+ params: {
107
+ panelDataParent: this.dataParent.model.id,
108
+ ...this.panel.params
109
+ },
113
110
  data: [this.data],
114
- view,
111
+ view: this.panel.view,
115
112
  event,
116
113
  noWaitRoute: true
117
114
  },
@@ -18,6 +18,7 @@ export declare const IBizPanelStaticCarousel: import("@ibiz-template/vue3-util")
18
18
  }[]>;
19
19
  isAuto: import("vue").Ref<boolean>;
20
20
  timeSpan: import("vue").Ref<number>;
21
+ carouselMode: import("vue").Ref<string>;
21
22
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
22
23
  modelData: {
23
24
  type: import("vue").PropType<import("@ibiz/model-core").IPanelRawItem>;
@@ -22,6 +22,7 @@ export declare const PanelStaticCarousel: import("vue").DefineComponent<{
22
22
  }[]>;
23
23
  isAuto: Ref<boolean>;
24
24
  timeSpan: Ref<number>;
25
+ carouselMode: Ref<string>;
25
26
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
26
27
  modelData: {
27
28
  type: PropType<IPanelRawItem>;
@@ -23,6 +23,7 @@ const PanelStaticCarousel = /* @__PURE__ */ defineComponent({
23
23
  const carouselData = ref([]);
24
24
  const isAuto = ref(true);
25
25
  const timeSpan = ref(3e3);
26
+ const carouselMode = ref("default");
26
27
  const getSwipeConfig = (swipeData) => {
27
28
  const autoPlay = swipeData.find((item) => Object.is(item.key, "autoplay"));
28
29
  if (autoPlay) {
@@ -32,12 +33,17 @@ const PanelStaticCarousel = /* @__PURE__ */ defineComponent({
32
33
  if (span) {
33
34
  timeSpan.value = Number(span.value) || 0;
34
35
  }
36
+ const carouselModeItem = swipeData.find((item) => Object.is(item.key, "carouselMode"));
37
+ if (carouselModeItem && carouselModeItem.value) {
38
+ carouselMode.value = carouselModeItem.value;
39
+ }
35
40
  };
36
41
  if ((_a = model.rawItem) == null ? void 0 : _a.rawItemParams) {
37
42
  let swipeData = [];
38
43
  const imgData = model.rawItem.rawItemParams;
39
44
  const autoplayIndex = imgData.findIndex((item) => Object.is(item.key, "autoplay"));
40
45
  const timespanIndex = imgData.findIndex((item) => Object.is(item.key, "timespan"));
46
+ const carouselModeIndex = imgData.findIndex((item) => Object.is(item.key, "carouselMode"));
41
47
  let number = 0;
42
48
  if (autoplayIndex >= 0) {
43
49
  number += 1;
@@ -45,6 +51,9 @@ const PanelStaticCarousel = /* @__PURE__ */ defineComponent({
45
51
  if (timespanIndex >= 0) {
46
52
  number += 1;
47
53
  }
54
+ if (carouselModeIndex >= 0) {
55
+ number += 1;
56
+ }
48
57
  if (number > 0) {
49
58
  swipeData = imgData.slice(0, -number);
50
59
  getSwipeConfig(imgData.slice(-number));
@@ -71,7 +80,8 @@ const PanelStaticCarousel = /* @__PURE__ */ defineComponent({
71
80
  ns,
72
81
  carouselData,
73
82
  isAuto,
74
- timeSpan
83
+ timeSpan,
84
+ carouselMode
75
85
  };
76
86
  },
77
87
  render() {
@@ -80,7 +90,8 @@ const PanelStaticCarousel = /* @__PURE__ */ defineComponent({
80
90
  }, [createVNode(resolveComponent("iBizCarouselComponent"), {
81
91
  "carouselData": this.carouselData,
82
92
  "isAuto": this.isAuto,
83
- "timeSpan": this.timeSpan
93
+ "timeSpan": this.timeSpan,
94
+ "carouselMode": this.carouselMode
84
95
  }, null)]);
85
96
  }
86
97
  });
@@ -1 +1 @@
1
- .ibiz-short-cut{bottom:4px;right:4px;z-index:2;position:fixed;display:flex;align-items:center;border-radius:4px;box-shadow:0 0 16px rgba(0,0,0,.0784313725);border:1px solid var(--ibiz-color-border);background:var(--ibiz-color-bg-1)}.ibiz-short-cut.is-conceal{visibility:hidden}.ibiz-short-cut__more{padding:2px;cursor:pointer}.ibiz-short-cut__more .el-tooltip__trigger{padding:8px;line-height:16px}.ibiz-short-cut__more .el-tooltip__trigger:hover{border-radius:2px;color:var(--ibiz-color-primary);background-color:var(--ibiz-color-primary-light-default)}.ibiz-short-cut__more--icon{font-size:16px;margin-left:8px}.ibiz-short-cut__recover{padding:2px;display:flex;cursor:pointer;align-items:center}.ibiz-short-cut__recover .el-tooltip__trigger{padding:8px;line-height:16px}.ibiz-short-cut__recover .el-tooltip__trigger:hover{border-radius:2px;color:var(--ibiz-color-primary);background-color:var(--ibiz-color-primary-light-default)}.ibiz-short-cut__item{display:flex;cursor:pointer;position:relative;align-items:center;flex-flow:row nowrap;place-content:center flex-start}.ibiz-short-cut__item .icon{flex-shrink:0;font-size:16px}.ibiz-short-cut__item .caption-icon,.ibiz-short-cut__item .expand-icon{margin-right:8px}.ibiz-short-cut__item .close-icon,.ibiz-short-cut__item .drag-icon{visibility:hidden}.ibiz-short-cut__item .close-icon:hover{color:var(--ibiz-color-danger-hover)}.ibiz-short-cut__item--caption{flex-grow:1;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ibiz-short-cut__item:hover .close-icon,.ibiz-short-cut__item:hover .drag-icon{visibility:visible}.ibiz-short-cut .is-horizontal{display:flex;padding:8px 0}.ibiz-short-cut .is-horizontal .ibiz-short-cut__item{max-width:168px;min-width:84px;padding:0 12px;border-right:1px solid var(--ibiz-color-border)}.ibiz-short-cut .is-horizontal .ibiz-short-cut__item .close-icon{right:0;position:absolute;padding-right:4px;background-color:var(--ibiz-color-white);box-shadow:-10px 0 20px 8px var(--ibiz-color-white)}.ibiz-short-cut .is-horizontal .ibiz-short-cut__item .drag-icon{display:none;margin-right:8px}.ibiz-short-cut .is-horizontal .ibiz-short-cut__item:hover .drag-icon{display:block}.ibiz-short-cut .is-horizontal .ibiz-short-cut__item:hover .caption-icon{display:none}.ibiz-short-cut__popover.el-popover.el-popper{padding:10px 0}.ibiz-short-cut__popover .is-vertical .ibiz-short-cut__item{width:225px;height:44px;padding:9px 20px}.ibiz-short-cut__popover .is-vertical .ibiz-short-cut__item .drag-icon{left:5px;position:absolute}.ibiz-short-cut__popover .is-vertical .ibiz-short-cut__item:hover{background-color:var(--ibiz-color-fill-1)}
1
+ .ibiz-short-cut{z-index:2;bottom:26px;display:flex;position:fixed;border-radius:4px;align-items:center;box-shadow:0 0 16px rgba(0,0,0,.0784313725);background:var(--ibiz-color-bg-1);right:var(--ibiz-spacing-base-loose);border:1px solid var(--ibiz-color-border)}.ibiz-short-cut.is-conceal{visibility:hidden}.ibiz-short-cut__more{padding:2px;cursor:pointer}.ibiz-short-cut__more .el-tooltip__trigger{padding:8px;line-height:16px}.ibiz-short-cut__more .el-tooltip__trigger:hover{border-radius:2px;color:var(--ibiz-color-primary);background-color:var(--ibiz-color-primary-light-default)}.ibiz-short-cut__more .recover-icon{font-size:16px;margin-left:8px}.ibiz-short-cut__recover{padding:2px;display:flex;cursor:pointer;align-items:center}.ibiz-short-cut__recover .el-tooltip__trigger{padding:8px;line-height:16px}.ibiz-short-cut__recover .el-tooltip__trigger:hover{border-radius:2px;color:var(--ibiz-color-primary);background-color:var(--ibiz-color-primary-light-default)}.ibiz-short-cut__action{display:flex;cursor:pointer;position:relative;align-items:center;flex-flow:row nowrap;place-content:center flex-start;width:225px;height:44px;padding:9px 20px}.ibiz-short-cut__action .expand-icon{font-size:16px;margin-right:8px}.ibiz-short-cut__item{display:flex;cursor:pointer;position:relative;align-items:center;flex-flow:row nowrap;place-content:center flex-start}.ibiz-short-cut__item .icon{flex-shrink:0;font-size:16px}.ibiz-short-cut__item .drag-icon{display:none;margin-right:8px}.ibiz-short-cut__item .caption-icon{margin-right:8px}.ibiz-short-cut__item .close-icon{visibility:hidden}.ibiz-short-cut__item .close-icon:hover{color:var(--ibiz-color-danger-hover)}.ibiz-short-cut__item--caption{flex-grow:1;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ibiz-short-cut__item:hover .drag-icon{display:block}.ibiz-short-cut__item:hover .caption-icon{display:none}.ibiz-short-cut__item:hover .close-icon{visibility:visible}.ibiz-short-cut .is-horizontal{display:flex;padding:8px 0}.ibiz-short-cut .is-horizontal .ibiz-short-cut__item{max-width:168px;min-width:84px;padding:0 12px;border-right:1px solid var(--ibiz-color-border)}.ibiz-short-cut .is-horizontal .ibiz-short-cut__item .close-icon{right:0;position:absolute;padding-right:4px;background-color:var(--ibiz-color-white);box-shadow:-10px 0 20px 8px var(--ibiz-color-white)}.ibiz-short-cut__popover .is-hidden{display:none}.ibiz-short-cut__popover.el-popover.el-popper{padding:10px 0}.ibiz-short-cut__popover .is-vertical{max-height:400px;overflow-y:auto}.ibiz-short-cut__popover .is-vertical .ibiz-short-cut__item{width:225px;height:44px;padding:9px 20px}.ibiz-short-cut__popover .is-vertical .ibiz-short-cut__item:hover{background-color:var(--ibiz-color-fill-1)}
@@ -26,9 +26,10 @@ const ShortCut = /* @__PURE__ */ defineComponent({
26
26
  const ns = useNamespace("short-cut");
27
27
  const vue = getCurrentInstance().proxy;
28
28
  const router = useRouter();
29
- const isShowToolbar = ref(false);
29
+ const shortCutUtil = ibiz.util.shortCut;
30
+ const isShowToolbar = ref(true);
30
31
  const isShowMore = ref(false);
31
- const data = reactive(ibiz.util.shortCut.data);
32
+ const data = reactive(shortCutUtil.data);
32
33
  const dragCache = {
33
34
  newIndex: 0,
34
35
  oldIndex: 0
@@ -41,6 +42,7 @@ const ShortCut = /* @__PURE__ */ defineComponent({
41
42
  vue.$forceUpdate();
42
43
  };
43
44
  onMounted(() => {
45
+ isShowToolbar.value = shortCutUtil.mode !== "vertical";
44
46
  ibiz.util.shortCut.onChange(onShortCutChange);
45
47
  });
46
48
  onUnmounted(() => {
@@ -50,6 +52,9 @@ const ShortCut = /* @__PURE__ */ defineComponent({
50
52
  isShowToolbar.value = !isShowToolbar.value;
51
53
  if (isShowToolbar.value) {
52
54
  isShowMore.value = false;
55
+ shortCutUtil.setShortCutMode("horizontal");
56
+ } else {
57
+ shortCutUtil.setShortCutMode("vertical");
53
58
  }
54
59
  };
55
60
  const onClick = (item) => {
@@ -130,22 +135,20 @@ const ShortCut = /* @__PURE__ */ defineComponent({
130
135
  "onClick": (event) => onDelete(event, element.key)
131
136
  }, null)]);
132
137
  }
133
- },
134
- footer: () => {
135
- if (isVertical && !isShowToolbar.value) {
136
- return createVNode("div", {
137
- "class": [ns.e("item"), ns.e("action")],
138
- "onClick": onShowChange
139
- }, [createVNode("ion-icon", {
140
- "class": ["expand-icon", "icon"],
141
- "name": "chevron-back-outline"
142
- }, null), createVNode("div", {
143
- "class": ns.em("item", "caption")
144
- }, [ibiz.i18n.t("panelComponent.shortCut.expandToolbar")])]);
145
- }
146
138
  }
147
139
  });
148
140
  };
141
+ const renderFoolterToolbar = () => {
142
+ return createVNode("div", {
143
+ "class": [ns.e("action"), ns.is("hidden", isShowToolbar.value)],
144
+ "onClick": onShowChange
145
+ }, [createVNode("ion-icon", {
146
+ "class": ["expand-icon", "icon"],
147
+ "name": "chevron-back-outline"
148
+ }, null), createVNode("div", {
149
+ "class": ns.em("item", "caption")
150
+ }, [ibiz.i18n.t("panelComponent.shortCut.expandToolbar")])]);
151
+ };
149
152
  const renderMoreToolbar = () => {
150
153
  return createVNode(resolveComponent("el-popover"), {
151
154
  "visible": isShowMore.value,
@@ -171,7 +174,7 @@ const ShortCut = /* @__PURE__ */ defineComponent({
171
174
  })]);
172
175
  },
173
176
  default: () => {
174
- return renderDraggable(true);
177
+ return [renderDraggable(true), renderFoolterToolbar()];
175
178
  }
176
179
  });
177
180
  };
@@ -1,11 +1,39 @@
1
- import { ViewController, ViewEngineBase, AppLoginViewController, IViewState, IViewEvent } from '@ibiz-template/runtime';
1
+ import { ViewController, ViewEngineBase, IAppLoginViewState, IAppLoginViewEvent } from '@ibiz-template/runtime';
2
2
  import { RouteLocationNormalizedLoaded } from 'vue-router';
3
3
  import { IAppView } from '@ibiz/model-core';
4
4
  export declare class LoginViewEngine extends ViewEngineBase {
5
+ /**
6
+ * 路由对象
7
+ *
8
+ * @type {RouteLocationNormalizedLoaded}
9
+ * @memberof LoginViewEngine
10
+ */
5
11
  route: RouteLocationNormalizedLoaded;
6
- protected view: AppLoginViewController<IAppView, IViewState, IViewEvent>;
7
- get AppLoginView(): ViewController;
12
+ /**
13
+ * 应用登录视图控制器
14
+ *
15
+ * @protected
16
+ * @type {ViewController<
17
+ * IAppView,
18
+ * IAppLoginViewState,
19
+ * IAppLoginViewEvent
20
+ * >}
21
+ * @memberof LoginViewEngine
22
+ */
23
+ protected view: ViewController<IAppView, IAppLoginViewState, IAppLoginViewEvent>;
24
+ /**
25
+ * 视图mounted生命周期执行逻辑
26
+ *
27
+ * @return {*} {Promise<void>}
28
+ * @memberof LoginViewEngine
29
+ */
8
30
  onMounted(): Promise<void>;
31
+ /**
32
+ * 视图destroyed生命周期执行逻辑
33
+ *
34
+ * @return {*} {Promise<void>}
35
+ * @memberof LoginViewEngine
36
+ */
9
37
  onDestroyed(): Promise<void>;
10
38
  call(key: string, args?: IData): Promise<IData | null | undefined>;
11
39
  login(args: IData): Promise<void>;