@ibiz-template/vue3-components 0.7.41-alpha.7 → 0.7.41-alpha.8

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 (87) hide show
  1. package/dist/{index-4CBJktLS.js → index-CsiyXR27.js} +1 -1
  2. package/dist/index-bg15JdWL.js +4 -0
  3. package/dist/{index-QL7Ukex9.js → index-tjsobxd3.js} +1 -1
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +1 -1
  6. package/dist/{wang-editor-ELTZ-byh.js → wang-editor-7B_U_6_C.js} +1 -1
  7. package/dist/{xlsx-util--EbSIMDJ.js → xlsx-util-J0IypI5_.js} +1 -1
  8. package/es/control/data-view/data-view.css +1 -1
  9. package/es/control/data-view/data-view.mjs +4 -4
  10. package/es/control/drbar/drbar.controller.mjs +3 -1
  11. package/es/control/drtab/drtab.controller.mjs +3 -5
  12. package/es/control/drtab/drtab.d.ts +13 -0
  13. package/es/control/drtab/drtab.mjs +7 -1
  14. package/es/control/drtab/index.d.ts +7 -0
  15. package/es/control/kanban/kanban.css +1 -1
  16. package/es/control/kanban/kanban.d.ts +2 -2
  17. package/es/control/kanban/kanban.mjs +14 -9
  18. package/es/control/kanban/lane-kanban/lane-kanban.css +1 -0
  19. package/es/control/kanban/lane-kanban/lane-kanban.d.ts +27 -0
  20. package/es/control/kanban/lane-kanban/lane-kanban.mjs +409 -0
  21. package/es/control/toolbar/toolbar.css +1 -1
  22. package/es/control/toolbar/toolbar.mjs +232 -132
  23. package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +7 -11
  24. package/es/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.mjs +13 -16
  25. package/es/editor/data-picker/ibiz-picker-link/ibiz-picker-link.mjs +5 -7
  26. package/es/editor/raw/ibiz-raw/ibiz-raw.d.ts +2 -2
  27. package/es/editor/raw/ibiz-raw/ibiz-raw.mjs +2 -0
  28. package/es/editor/span/span/span.d.ts +3 -3
  29. package/es/editor/span/span/span.mjs +3 -3
  30. package/es/editor/stepper/ibiz-stepper/ibiz-stepper.mjs +2 -1
  31. package/es/editor/switch/ibiz-switch/ibiz-switch.d.ts +1 -1
  32. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.d.ts +2 -2
  33. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.mjs +1 -1
  34. package/es/editor/text-box/input/input.d.ts +4 -3
  35. package/es/editor/text-box/input/input.mjs +2 -2
  36. package/es/locale/en/index.d.ts +5 -0
  37. package/es/locale/en/index.mjs +5 -0
  38. package/es/locale/zh-CN/index.d.ts +5 -0
  39. package/es/locale/zh-CN/index.mjs +5 -0
  40. package/es/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.css +1 -1
  41. package/es/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.mjs +13 -5
  42. package/es/util/app-util/app-util.d.ts +6 -0
  43. package/es/util/app-util/app-util.mjs +8 -0
  44. package/es/view-engine/app-start-view.engine.d.ts +12 -0
  45. package/es/view-engine/app-start-view.engine.mjs +11 -0
  46. package/es/view-engine/app-welcome-view.engine.d.ts +12 -0
  47. package/es/view-engine/app-welcome-view.engine.mjs +11 -0
  48. package/es/view-engine/edit-view.engine.d.ts +11 -2
  49. package/es/view-engine/edit-view.engine.mjs +23 -8
  50. package/es/view-engine/edit-view4.engine.mjs +4 -0
  51. package/es/view-engine/index.mjs +10 -0
  52. package/es/view-engine/opt-view.engine.d.ts +11 -2
  53. package/es/view-engine/opt-view.engine.mjs +23 -8
  54. package/es/view-engine/tab-exp-view.engine.mjs +1 -0
  55. package/lib/control/data-view/data-view.cjs +4 -4
  56. package/lib/control/data-view/data-view.css +1 -1
  57. package/lib/control/drbar/drbar.controller.cjs +3 -1
  58. package/lib/control/drtab/drtab.cjs +7 -1
  59. package/lib/control/drtab/drtab.controller.cjs +3 -5
  60. package/lib/control/kanban/kanban.cjs +14 -9
  61. package/lib/control/kanban/kanban.css +1 -1
  62. package/lib/control/kanban/lane-kanban/lane-kanban.cjs +411 -0
  63. package/lib/control/kanban/lane-kanban/lane-kanban.css +1 -0
  64. package/lib/control/toolbar/toolbar.cjs +232 -132
  65. package/lib/control/toolbar/toolbar.css +1 -1
  66. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +7 -11
  67. package/lib/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.cjs +13 -16
  68. package/lib/editor/data-picker/ibiz-picker-link/ibiz-picker-link.cjs +5 -7
  69. package/lib/editor/raw/ibiz-raw/ibiz-raw.cjs +2 -0
  70. package/lib/editor/span/span/span.cjs +3 -3
  71. package/lib/editor/stepper/ibiz-stepper/ibiz-stepper.cjs +2 -1
  72. package/lib/editor/text-box/ibiz-input-number/ibiz-input-number.cjs +1 -1
  73. package/lib/editor/text-box/input/input.cjs +2 -2
  74. package/lib/locale/en/index.cjs +5 -0
  75. package/lib/locale/zh-CN/index.cjs +5 -0
  76. package/lib/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.cjs +13 -5
  77. package/lib/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.css +1 -1
  78. package/lib/util/app-util/app-util.cjs +8 -0
  79. package/lib/view-engine/app-start-view.engine.cjs +13 -0
  80. package/lib/view-engine/app-welcome-view.engine.cjs +13 -0
  81. package/lib/view-engine/edit-view.engine.cjs +23 -8
  82. package/lib/view-engine/edit-view4.engine.cjs +4 -0
  83. package/lib/view-engine/index.cjs +10 -0
  84. package/lib/view-engine/opt-view.engine.cjs +23 -8
  85. package/lib/view-engine/tab-exp-view.engine.cjs +1 -0
  86. package/package.json +7 -7
  87. package/dist/index-cbi1NJAY.js +0 -4
@@ -8,8 +8,8 @@ var ramda = require('ramda');
8
8
  var core = require('@ibiz-template/core');
9
9
  var drtab_controller = require('./drtab.controller.cjs');
10
10
  var drtabControl_util = require('./drtab-control.util.cjs');
11
- require('./drtab.css');
12
11
  var flowDrtab = require('./flow-drtab.cjs');
12
+ require('./drtab.css');
13
13
 
14
14
  "use strict";
15
15
  const DRTabControl = /* @__PURE__ */ vue.defineComponent({
@@ -42,6 +42,12 @@ const DRTabControl = /* @__PURE__ */ vue.defineComponent({
42
42
  */
43
43
  provider: {
44
44
  type: Object
45
+ },
46
+ /**
47
+ * @description 隐藏编辑项
48
+ */
49
+ hideEditItem: {
50
+ type: Boolean
45
51
  }
46
52
  },
47
53
  setup() {
@@ -113,7 +113,7 @@ class DRTabController extends runtime.ControlController {
113
113
  super.initState();
114
114
  this.state.drTabPages = [];
115
115
  this.state.showMore = false;
116
- this.state.hideEditItem = !Object.is(this.model.hideEditItem, false);
116
+ this.state.hideEditItem = !!this.model.hideEditItem;
117
117
  }
118
118
  /**
119
119
  * 创建完成
@@ -296,16 +296,13 @@ class DRTabController extends runtime.ControlController {
296
296
  }
297
297
  if (!this.state.hideEditItem) {
298
298
  drTabPages.push({
299
- tag: uniqueTag,
300
299
  caption,
300
+ tag: uniqueTag,
301
301
  hidden: !!this.state.hideEditItem,
302
302
  disabled: false,
303
303
  sysImage: editItemSysImage,
304
304
  fullPath: this.routeDepth ? vue3Util.getNestedRoutePath(this.router.currentRoute.value, this.routeDepth) : ""
305
305
  });
306
- this.state.defaultName = "";
307
- } else {
308
- this.state.defaultName = (dedrtabPages == null ? void 0 : dedrtabPages[0].id) || "";
309
306
  }
310
307
  dedrtabPages == null ? void 0 : dedrtabPages.forEach((item) => {
311
308
  let itemCaption = item.caption;
@@ -334,6 +331,7 @@ class DRTabController extends runtime.ControlController {
334
331
  });
335
332
  });
336
333
  this.state.drTabPages = drTabPages;
334
+ this.state.defaultName = drTabPages[0].tag;
337
335
  if (this.view.state.srfnav) {
338
336
  this.state.activeName = this.view.state.srfnav;
339
337
  } else {
@@ -5,6 +5,7 @@ var vue3Util = require('@ibiz-template/vue3-util');
5
5
  var draggable = require('vuedraggable');
6
6
  var runtime = require('@ibiz-template/runtime');
7
7
  var core = require('@ibiz-template/core');
8
+ var laneKanban = require('./lane-kanban/lane-kanban.cjs');
8
9
  require('./kanban.css');
9
10
 
10
11
  "use strict";
@@ -157,11 +158,10 @@ const KanbanControl = /* @__PURE__ */ vue.defineComponent({
157
158
  }, null);
158
159
  };
159
160
  const renderItemAction = (item, group) => {
160
- var _a2;
161
161
  return vue.createVNode(vue.resolveComponent("iBizActionToolbar"), {
162
162
  "class": ns.bem("item", "bottom", "actions"),
163
- "action-details": (_a2 = c.getOptItemModel().deuiactionGroup) == null ? void 0 : _a2.uiactionGroupDetails,
164
- "actions-state": c.getOptItemAction(item),
163
+ "action-details": c.getOptItemModel(),
164
+ "actions-state": c.state.uaState[item.srfkey],
165
165
  "onActionClick": (detail, event) => c.onGroupActionClick(detail, item, event, group)
166
166
  }, null);
167
167
  };
@@ -223,13 +223,14 @@ const KanbanControl = /* @__PURE__ */ vue.defineComponent({
223
223
  }, [renderBatchToolBar(group), renderBatchCheck(group)]);
224
224
  };
225
225
  const renderDefaultItem = (item, group) => {
226
+ const actionModel = c.getOptItemModel();
226
227
  return [vue.createVNode("div", {
227
228
  "class": ns.be("item", "top")
228
229
  }, [vue.createVNode("div", {
229
230
  "class": ns.bem("item", "top", "title")
230
231
  }, [item.srfmajortext]), vue.createVNode("div", {
231
232
  "class": ns.bem("item", "top", "description")
232
- }, [item.content])]), c.getOptItemModel() ? vue.createVNode("div", {
233
+ }, [item.content])]), actionModel.length ? vue.createVNode("div", {
233
234
  "class": ns.be("item", "bottom")
234
235
  }, [renderItemAction(item, group)]) : null];
235
236
  };
@@ -451,15 +452,19 @@ const KanbanControl = /* @__PURE__ */ vue.defineComponent({
451
452
  groups,
452
453
  isCreated
453
454
  } = this.c.state;
454
- if (!isCreated) {
455
+ const {
456
+ swimlaneAppDEFieldId
457
+ } = this.c.model;
458
+ if (!isCreated)
455
459
  return null;
456
- }
457
460
  return vue.createVNode(vue.resolveComponent("iBizControlBase"), {
458
461
  "ref": "kanban",
459
462
  "controller": this.c,
460
- "class": [this.ns.m((_a = this.modelData.groupLayout) == null ? void 0 : _a.toLowerCase()), this.ns.is("full", this.isFull)]
463
+ "class": [this.ns.m((_a = this.modelData.groupLayout) == null ? void 0 : _a.toLowerCase()), this.ns.is("full", this.isFull), this.ns.is("lane", !swimlaneAppDEFieldId)]
461
464
  }, {
462
- default: () => [vue.createVNode("div", {
465
+ default: () => [swimlaneAppDEFieldId ? vue.createVNode(laneKanban.LaneKanban, {
466
+ "controller": this.c
467
+ }, null) : [vue.createVNode("div", {
463
468
  "class": this.ns.b("group-container")
464
469
  }, [groups.length > 0 && groups.map((group) => {
465
470
  return this.renderGroup(group);
@@ -470,7 +475,7 @@ const KanbanControl = /* @__PURE__ */ vue.defineComponent({
470
475
  "name": "contract-outline"
471
476
  }, null) : vue.createVNode("ion-icon", {
472
477
  "name": "expand-outline"
473
- }, null)])]
478
+ }, null)])]]
474
479
  });
475
480
  }
476
481
  });
@@ -1 +1 @@
1
- .ibiz-control-kanban{--ibiz-control-kanban-text-color:var(--ibiz-color-text-0);--ibiz-control-kanban-font-size:var(--ibiz-font-size-regular);--ibiz-control-kanban-font-weight:var(--ibiz-font-weight-bold);--ibiz-control-kanban-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-kanban-selected-bg-color:var(--ibiz-color-fill-0);--ibiz-control-kanban-group-header-height:48px;width:100%;height:100%}.ibiz-control-kanban--row .ibiz-control-kanban-group-container{display:flex;padding-bottom:var(--ibiz-spacing-tight);overflow:auto}.ibiz-control-kanban--row .ibiz-control-kanban-group-container>*+*{margin-left:var(--ibiz-spacing-base)}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse{width:32px}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header{position:relative;flex-direction:column;align-items:start;height:100%;padding:var(--ibiz-spacing-none)}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header ion-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header-caption{align-self:center;transform:rotate(90deg) translate(calc(50% - var(--ibiz-spacing-tight)),0)}.ibiz-control-kanban--column .ibiz-control-kanban-group-container{display:flex;flex-direction:column}.ibiz-control-kanban--column .ibiz-control-kanban-group-container>*+*{margin-top:var(--ibiz-spacing-base)}.ibiz-control-kanban--column .ibiz-control-kanban-group.is-collapse{width:100%}.ibiz-control-kanban--column .ibiz-control-kanban-group.is-collapse ion-icon{transform:rotate(-90deg)}.ibiz-control-kanban-group-container{width:100%;height:100%}.ibiz-control-kanban-group{display:flex;flex-flow:column nowrap;flex-shrink:0;border:1px solid var(--ibiz-color-border);border-radius:var(--ibiz-border-radius-small);transition:all .3s}.ibiz-control-kanban-group__header{position:relative;height:var(--ibiz-control-kanban-group-header-height);padding:var(--ibiz-spacing-none) var(--ibiz-spacing-base);font-size:var(--ibiz-control-kanban-font-size);font-weight:var(--ibiz-control-kanban-font-weight);cursor:pointer;border-bottom:1px solid var(--ibiz-color-border);display:flex;align-items:center;justify-content:space-between}.ibiz-control-kanban-group__header::before{position:absolute;top:0;left:0;display:block;width:100%;content:"";border-color:inherit;border-top:2px solid}.ibiz-control-kanban-group__header-left{display:flex;align-items:center;justify-content:center}.ibiz-control-kanban-group__header-left ion-icon{margin-right:var(--ibiz-spacing-tight);transition:transform .3s}.ibiz-control-kanban-group__header-caption{padding:0 var(--ibiz-spacing-tight);white-space:nowrap}.ibiz-control-kanban-group__header-caption.is-badge{color:var(--ibiz-color-primary-active-text)}.ibiz-control-kanban-group__list{position:relative;flex:auto;width:100%;height:calc(100% - 48px);padding:var(--ibiz-spacing-none) var(--ibiz-spacing-tight);overflow:auto}.ibiz-control-kanban-group__draggable{min-height:100%;padding:var(--ibiz-spacing-base) 0}.ibiz-control-kanban-group__list.is-empty .ibiz-control-kanban__quicktoolbar{position:absolute;top:50%;width:calc(100% - var(--ibiz-spacing-base));transform:translateY(86px)}.ibiz-control-kanban-group__list.is-empty .ibiz-control-toolbar__item{justify-content:center}.ibiz-control-kanban-group__header-actions{position:relative;z-index:100;width:32px;height:32px;padding:var(--ibiz-spacing-tight);margin-left:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-control-kanban-font-size);color:var(--ibiz-color-primary);cursor:pointer;border-radius:var(--ibiz-border-radius-circle)}.ibiz-control-kanban-group__header-actions:hover{background-color:var(--ibiz-color-fill-0)}.ibiz-control-kanban-group__actions-dropdown:has(.el-button){padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none)}.ibiz-control-kanban-group__actions-dropdown .ibiz-action-toolbar{display:flex;flex-flow:column nowrap}.ibiz-control-kanban-group__actions-dropdown .el-button{--el-button-size:var(--ibiz-height-control-large);justify-content:flex-start;width:100%;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);margin:var(--ibiz-spacing-none);font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text)}.ibiz-control-kanban-group__actions-dropdown .el-button ion-icon{margin-right:var(--ibiz-spacing-extra-tight)}.ibiz-control-kanban-group__actions-dropdown .el-button.is-text:not(.is-disabled):hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color)}.ibiz-control-kanban-item{cursor:pointer}.ibiz-control-kanban-item:hover{background-color:var(--ibiz-control-kanban-hover-bg-color)}.ibiz-control-kanban-item.is-selected{background-color:var(--ibiz-control-kanban-selected-bg-color)}.ibiz-control-kanban-item.is-disabled{cursor:no-drop}.ibiz-control-kanban-item+.ibiz-control-kanban-item{margin-top:var(--ibiz-spacing-base)}.ibiz-control-kanban{position:relative;padding-right:calc(var(--ibiz-control-kanban-group-header-height) + var(--ibiz-spacing-base))}.ibiz-control-kanban__quicktoolbar{display:flex;flex-flow:column nowrap;margin-bottom:var(--ibiz-spacing-base)}.ibiz-control-kanban__quicktoolbar>*+*{margin-top:var(--ibiz-spacing-tight)}.ibiz-control-kanban__full-btn{display:flex;align-items:center;justify-content:center;position:absolute;top:0;right:0;width:var(--ibiz-control-kanban-group-header-height);height:var(--ibiz-control-kanban-group-header-height);font-size:var(--ibiz-font-size-header-4);font-weight:var(--ibiz-font-weight-regular);color:var(--ibiz-color-primary);background-color:var(--ibiz-color-bg-2);border:1px solid var(--ibiz-color-border)}.ibiz-control-kanban.is-full{padding:var(--ibiz-spacing-base);padding-right:calc(var(--ibiz-control-kanban-group-header-height) + var(--ibiz-spacing-extra-loose));background-color:var(--ibiz-color-bg-2)}.ibiz-control-kanban.is-full .ibiz-control-kanban__full-btn{top:var(--ibiz-spacing-base);right:var(--ibiz-spacing-base)}.ibiz-control-kanban-batch{padding:var(--ibiz-spacing-base-tight);border-bottom:1px solid var(--ibiz-color-border)}.ibiz-control-kanban-batch__toolbar .ibiz-control-toolbar{flex-wrap:wrap;row-gap:var(--ibiz-spacing-tight)}.ibiz-control-kanban-batch__check{display:flex;align-items:center;justify-content:space-between;margin-top:var(--ibiz-spacing-base-tight);font-size:var(--ibiz-font-size-regular)}.ibiz-control-kanban-batch__info span{margin:var(--ibiz-spacing-none) var(--ibiz-spacing-extra-tight);color:var(--ibiz-color-primary)}
1
+ .ibiz-control-kanban{--ibiz-control-kanban-text-color:var(--ibiz-color-text-0);--ibiz-control-kanban-font-size:var(--ibiz-font-size-regular);--ibiz-control-kanban-font-weight:var(--ibiz-font-weight-bold);--ibiz-control-kanban-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-kanban-selected-bg-color:var(--ibiz-color-fill-0);--ibiz-control-kanban-group-header-height:48px;width:100%;height:100%}.ibiz-control-kanban.is-lane{padding-right:0}.ibiz-control-kanban--row .ibiz-control-kanban-group-container{display:flex;padding-bottom:var(--ibiz-spacing-tight);overflow:auto}.ibiz-control-kanban--row .ibiz-control-kanban-group-container>*+*{margin-left:var(--ibiz-spacing-base)}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse{width:32px}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header{position:relative;flex-direction:column;align-items:start;height:100%;padding:var(--ibiz-spacing-none)}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header ion-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header-caption{align-self:center;transform:rotate(90deg) translate(calc(50% - var(--ibiz-spacing-tight)),0)}.ibiz-control-kanban--column .ibiz-control-kanban-group-container{display:flex;flex-direction:column}.ibiz-control-kanban--column .ibiz-control-kanban-group-container>*+*{margin-top:var(--ibiz-spacing-base)}.ibiz-control-kanban--column .ibiz-control-kanban-group.is-collapse{width:100%}.ibiz-control-kanban--column .ibiz-control-kanban-group.is-collapse ion-icon{transform:rotate(-90deg)}.ibiz-control-kanban-group-container{width:100%;height:100%}.ibiz-control-kanban-group{display:flex;flex-flow:column nowrap;flex-shrink:0;border:1px solid var(--ibiz-color-border);border-radius:var(--ibiz-border-radius-small);transition:all .3s}.ibiz-control-kanban-group__header{position:relative;height:var(--ibiz-control-kanban-group-header-height);padding:var(--ibiz-spacing-none) var(--ibiz-spacing-base);font-size:var(--ibiz-control-kanban-font-size);font-weight:var(--ibiz-control-kanban-font-weight);cursor:pointer;border-bottom:1px solid var(--ibiz-color-border);display:flex;align-items:center;justify-content:space-between}.ibiz-control-kanban-group__header::before{position:absolute;top:0;left:0;display:block;width:100%;content:"";border-color:inherit;border-top:2px solid}.ibiz-control-kanban-group__header-left{display:flex;align-items:center;justify-content:center}.ibiz-control-kanban-group__header-left ion-icon{margin-right:var(--ibiz-spacing-tight);transition:transform .3s}.ibiz-control-kanban-group__header-caption{padding:0 var(--ibiz-spacing-tight);white-space:nowrap}.ibiz-control-kanban-group__header-caption.is-badge{color:var(--ibiz-color-primary-active-text)}.ibiz-control-kanban-group__list{position:relative;flex:auto;width:100%;height:calc(100% - 48px);padding:var(--ibiz-spacing-none) var(--ibiz-spacing-tight);overflow:auto}.ibiz-control-kanban-group__draggable{min-height:100%;padding:var(--ibiz-spacing-base) 0}.ibiz-control-kanban-group__list.is-empty .ibiz-control-kanban__quicktoolbar{position:absolute;top:50%;width:calc(100% - var(--ibiz-spacing-base));transform:translateY(86px)}.ibiz-control-kanban-group__list.is-empty .ibiz-control-toolbar__item{justify-content:center}.ibiz-control-kanban-group__header-actions{position:relative;z-index:100;width:32px;height:32px;padding:var(--ibiz-spacing-tight);margin-left:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-control-kanban-font-size);color:var(--ibiz-color-primary);cursor:pointer;border-radius:var(--ibiz-border-radius-circle)}.ibiz-control-kanban-group__header-actions:hover{background-color:var(--ibiz-color-fill-0)}.ibiz-control-kanban-group__actions-dropdown:has(.el-button){padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none)}.ibiz-control-kanban-group__actions-dropdown .ibiz-action-toolbar{display:flex;flex-flow:column nowrap}.ibiz-control-kanban-group__actions-dropdown .el-button{--el-button-size:var(--ibiz-height-control-large);justify-content:flex-start;width:100%;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);margin:var(--ibiz-spacing-none);font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text)}.ibiz-control-kanban-group__actions-dropdown .el-button ion-icon{margin-right:var(--ibiz-spacing-extra-tight)}.ibiz-control-kanban-group__actions-dropdown .el-button.is-text:not(.is-disabled):hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color)}.ibiz-control-kanban-item{cursor:pointer}.ibiz-control-kanban-item:hover{background-color:var(--ibiz-control-kanban-hover-bg-color)}.ibiz-control-kanban-item.is-selected{background-color:var(--ibiz-control-kanban-selected-bg-color)}.ibiz-control-kanban-item.is-disabled{cursor:no-drop}.ibiz-control-kanban-item__bottom{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-spacing-tight);margin-top:var(--ibiz-spacing-tight);border-top:1px solid var(--ibiz-color-border)}.ibiz-control-kanban-item+.ibiz-control-kanban-item{margin-top:var(--ibiz-spacing-base)}.ibiz-control-kanban{position:relative;padding-right:calc(var(--ibiz-control-kanban-group-header-height) + var(--ibiz-spacing-base))}.ibiz-control-kanban__quicktoolbar{display:flex;flex-flow:column nowrap;margin-bottom:var(--ibiz-spacing-base)}.ibiz-control-kanban__quicktoolbar>*+*{margin-top:var(--ibiz-spacing-tight)}.ibiz-control-kanban__full-btn{display:flex;align-items:center;justify-content:center;position:absolute;top:0;right:0;width:var(--ibiz-control-kanban-group-header-height);height:var(--ibiz-control-kanban-group-header-height);font-size:var(--ibiz-font-size-header-4);font-weight:var(--ibiz-font-weight-regular);color:var(--ibiz-color-primary);background-color:var(--ibiz-color-bg-2);border:1px solid var(--ibiz-color-border)}.ibiz-control-kanban.is-full{padding:var(--ibiz-spacing-base);padding-right:calc(var(--ibiz-control-kanban-group-header-height) + var(--ibiz-spacing-extra-loose));background-color:var(--ibiz-color-bg-2)}.ibiz-control-kanban.is-full .ibiz-control-kanban__full-btn{top:var(--ibiz-spacing-base);right:var(--ibiz-spacing-base)}.ibiz-control-kanban-batch{padding:var(--ibiz-spacing-base-tight);border-bottom:1px solid var(--ibiz-color-border)}.ibiz-control-kanban-batch__toolbar .ibiz-control-toolbar{flex-wrap:wrap;row-gap:var(--ibiz-spacing-tight)}.ibiz-control-kanban-batch__check{display:flex;align-items:center;justify-content:space-between;margin-top:var(--ibiz-spacing-base-tight);font-size:var(--ibiz-font-size-regular)}.ibiz-control-kanban-batch__info span{margin:var(--ibiz-spacing-none) var(--ibiz-spacing-extra-tight);color:var(--ibiz-color-primary)}
@@ -0,0 +1,411 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var vue3Util = require('@ibiz-template/vue3-util');
5
+ var draggable = require('vuedraggable');
6
+ var core = require('@ibiz-template/core');
7
+ require('./lane-kanban.css');
8
+
9
+ "use strict";
10
+ function _isSlot(s) {
11
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
12
+ }
13
+ const LaneKanban = /* @__PURE__ */ vue.defineComponent({
14
+ name: "IBizLaneKanban",
15
+ components: {
16
+ draggable
17
+ },
18
+ props: {
19
+ /**
20
+ * @description 面板直接内容控制器
21
+ */
22
+ controller: {
23
+ type: Object,
24
+ required: true
25
+ }
26
+ },
27
+ setup(props) {
28
+ var _a, _b;
29
+ const ns = vue3Util.useNamespace("lane-kanban");
30
+ const c = props.controller;
31
+ const {
32
+ zIndex
33
+ } = vue3Util.useUIStore();
34
+ const popperStyle = {
35
+ zIndex: zIndex.increment(),
36
+ position: "unset"
37
+ };
38
+ const expandAll = vue.ref(true);
39
+ const dropdownKey = vue.ref();
40
+ const cardStyle = vue.computed(() => {
41
+ const {
42
+ cardWidth,
43
+ cardHeight
44
+ } = c.model;
45
+ const style = {};
46
+ if (cardWidth)
47
+ Object.assign(style, {
48
+ width: "".concat(cardWidth, "px")
49
+ });
50
+ if (cardHeight)
51
+ Object.assign(style, {
52
+ height: "".concat(cardHeight, "px")
53
+ });
54
+ return style;
55
+ });
56
+ const disabled = vue.computed(() => {
57
+ return !c.state.draggable || c.draggableMode === 0 || c.state.updating || c.state.readonly;
58
+ });
59
+ const batchKey = vue.computed(() => {
60
+ return c.state.batching ? c.state.selectGroupKey : "";
61
+ });
62
+ const quickToolbarModel = (_a = c.model.controls) == null ? void 0 : _a.find((item) => {
63
+ return item.name === "".concat(c.model.name, "_quicktoolbar") || item.name === "".concat(c.model.name, "_groupquicktoolbar");
64
+ });
65
+ const batchToolbarModel = (_b = c.model.controls) == null ? void 0 : _b.find((item) => {
66
+ return item.name === "".concat(c.model.name, "_batchtoolbar");
67
+ });
68
+ let cacheInfo = null;
69
+ const onDraggableChange = (evt, groupKey, laneKey) => {
70
+ if (evt.moved)
71
+ c.onDragChange({
72
+ from: groupKey,
73
+ to: groupKey,
74
+ fromIndex: evt.moved.oldIndex,
75
+ toIndex: evt.moved.newIndex,
76
+ fromLane: laneKey,
77
+ toLane: laneKey
78
+ });
79
+ if (evt.added)
80
+ cacheInfo = {
81
+ to: groupKey,
82
+ toLane: laneKey,
83
+ toIndex: evt.added.newIndex
84
+ };
85
+ if (evt.removed) {
86
+ if (cacheInfo) {
87
+ Object.assign(cacheInfo, {
88
+ from: groupKey,
89
+ fromLane: laneKey,
90
+ fromIndex: evt.removed.oldIndex
91
+ });
92
+ c.onDragChange(cacheInfo);
93
+ }
94
+ cacheInfo = null;
95
+ }
96
+ };
97
+ const handleCheckAllGroup = (group, invert) => {
98
+ const selectedData = group.selectedData || [];
99
+ if (invert) {
100
+ selectedData.forEach((item) => {
101
+ c.onRowClick(item);
102
+ });
103
+ } else {
104
+ const items = group.children.filter((item) => !selectedData.includes(item));
105
+ items.forEach((item) => {
106
+ c.onRowClick(item);
107
+ });
108
+ }
109
+ };
110
+ const isSelected = (item) => {
111
+ return c.state.selectedData.findIndex((data) => {
112
+ return data.srfkey === item.srfkey;
113
+ }) !== -1;
114
+ };
115
+ const getGroupKey = (groupKey, laneKey) => {
116
+ return c.draggableMode === 1 ? groupKey.toString() : c.draggableMode === 2 ? laneKey || "custom" : c.model.id;
117
+ };
118
+ const handleExpandAll = () => {
119
+ expandAll.value = !expandAll.value;
120
+ c.state.lanes.forEach((lane) => {
121
+ lane.isExpand = expandAll.value;
122
+ });
123
+ };
124
+ const onVisibleChange = (val, key) => {
125
+ dropdownKey.value = val ? key : void 0;
126
+ };
127
+ const renderHeaderToolbar = (group) => {
128
+ let _slot;
129
+ const showActionBar = c.model.groupUIActionGroup && group.groupActionGroupState || batchToolbarModel;
130
+ if (group.isExpand === false)
131
+ return null;
132
+ if (batchKey.value === group.key)
133
+ return vue.createVNode("div", {
134
+ "class": [ns.em("cell", "right"), ns.em("header", "actions")]
135
+ }, [vue.createVNode(vue.resolveComponent("el-button"), {
136
+ "text": true,
137
+ "onClick": () => c.closeBatch()
138
+ }, _isSlot(_slot = ibiz.i18n.t("app.complete")) ? _slot : {
139
+ default: () => [_slot]
140
+ })]);
141
+ return vue.createVNode("div", {
142
+ "class": [ns.em("cell", "right"), ns.em("header", "actions")]
143
+ }, [vue.createVNode(vue.resolveComponent("el-button"), {
144
+ "text": true,
145
+ "circle": true,
146
+ "class": ns.em("header", "action"),
147
+ "onClick": () => {
148
+ group.isExpand = false;
149
+ }
150
+ }, {
151
+ default: () => [vue.createVNode("ion-icon", {
152
+ "name": "chevron-back-outline",
153
+ "title": ibiz.i18n.t("control.kanban.collapsed")
154
+ }, null)]
155
+ }), showActionBar && vue.createVNode(vue.resolveComponent("el-dropdown"), {
156
+ "trigger": "click",
157
+ "teleported": false,
158
+ "style": popperStyle,
159
+ "class": [ns.em("header", "action"), ns.is("visible", group.key === dropdownKey.value)],
160
+ "popper-class": ns.em("header", "popper"),
161
+ "onVisibleChange": (val) => onVisibleChange(val, group.key)
162
+ }, {
163
+ default: () => vue.createVNode(vue.resolveComponent("el-button"), {
164
+ "text": true,
165
+ "circle": true
166
+ }, {
167
+ default: () => [vue.createVNode("ion-icon", {
168
+ "title": core.showTitle(ibiz.i18n.t("app.more")),
169
+ "name": "ellipsis-horizontal"
170
+ }, null)]
171
+ }),
172
+ dropdown: () => vue.createVNode("div", {
173
+ "class": ns.em("header", "toolbar")
174
+ }, [vue.createVNode(vue.resolveComponent("iBizActionToolbar"), {
175
+ "actionDetails": c.model.groupUIActionGroup.uiactionGroupDetails,
176
+ "actionsState": group.groupActionGroupState,
177
+ "onActionClick": (detail, event) => {
178
+ c.onGroupToolbarClick(detail, event, group);
179
+ }
180
+ }, null), batchToolbarModel && vue.createVNode(vue.resolveComponent("el-button"), {
181
+ "size": "small",
182
+ "onClick": () => {
183
+ c.openBatch(group.key);
184
+ }
185
+ }, {
186
+ default: () => [vue.createVNode("ion-icon", {
187
+ "name": "checkmark-sharp"
188
+ }, null), ibiz.i18n.t("control.kanban.natchOperation")]
189
+ })])
190
+ })]);
191
+ };
192
+ const renderHeaderCell = (group) => {
193
+ return vue.createVNode("div", {
194
+ "class": [ns.e("cell"), ns.em("header", "cell"), ns.is("collapsed", group.isExpand === false)]
195
+ }, [vue.createVNode("div", {
196
+ "class": ns.em("cell", "content")
197
+ }, [vue.createVNode("div", {
198
+ "class": ns.em("cell", "left")
199
+ }, [vue.createVNode("div", {
200
+ "class": ns.em("cell", "caption")
201
+ }, [group.caption, vue.createVNode("span", {
202
+ "class": ns.em("cell", "separator")
203
+ }, [vue.createTextVNode("\xB7")]), group.children.length]), group.isExpand === false && vue.createVNode(vue.resolveComponent("el-button"), {
204
+ "text": true,
205
+ "circle": true,
206
+ "onClick": () => {
207
+ group.isExpand = true;
208
+ }
209
+ }, {
210
+ default: () => [vue.createVNode("ion-icon", {
211
+ "title": ibiz.i18n.t("control.kanban.expand"),
212
+ "name": "chevron-forward-outline"
213
+ }, null)]
214
+ })]), renderHeaderToolbar(group)])]);
215
+ };
216
+ const renderHeader = () => {
217
+ return vue.createVNode("div", {
218
+ "class": ns.e("header")
219
+ }, [vue.createVNode("div", {
220
+ "class": ns.em("header", "row")
221
+ }, [vue.createVNode("div", {
222
+ "class": [ns.e("cell"), ns.em("header", "cell")]
223
+ }, [vue.createVNode("div", {
224
+ "class": ns.em("cell", "content")
225
+ }, [vue.createVNode("div", {
226
+ "class": ns.em("cell", "left")
227
+ }, [vue.createVNode("ion-icon", {
228
+ "onClick": handleExpandAll,
229
+ "class": ns.em("cell", "expand-icon"),
230
+ "title": expandAll.value ? ibiz.i18n.t("control.kanban.allCollapsed") : ibiz.i18n.t("control.kanban.allExpand"),
231
+ "name": expandAll.value ? "chevron-collapse-outline" : "chevron-expand-outline"
232
+ }, null), vue.createVNode("div", {
233
+ "class": ns.em("cell", "caption")
234
+ }, [ibiz.i18n.t("control.kanban.lane")])])])]), c.state.groups.map((group) => {
235
+ return renderHeaderCell(group);
236
+ })])]);
237
+ };
238
+ const renderPanelItemLayout = (lane, item) => {
239
+ const {
240
+ context,
241
+ params
242
+ } = c;
243
+ const {
244
+ itemLayoutPanel
245
+ } = c.model;
246
+ if (!itemLayoutPanel)
247
+ return;
248
+ return vue.createVNode(vue.resolveComponent("iBizControlShell"), {
249
+ "data": item,
250
+ "params": params,
251
+ "context": context,
252
+ "class": ns.e("panel-item"),
253
+ "modelData": itemLayoutPanel
254
+ }, null);
255
+ };
256
+ const renderDefaultItem = (lane, item, group) => {
257
+ const actionModel = c.getOptItemModel();
258
+ return vue.createVNode("div", {
259
+ "class": ns.e("default-item")
260
+ }, [vue.createVNode("div", {
261
+ "class": ns.em("default-item", "header")
262
+ }, [item.srfmajortext]), vue.createVNode("div", {
263
+ "class": ns.em("default-item", "content")
264
+ }, [item.content]), actionModel.length ? vue.createVNode("div", {
265
+ "class": ns.em("default-item", "footer")
266
+ }, [vue.createVNode(vue.resolveComponent("iBizActionToolbar"), {
267
+ "class": ns.e("actions"),
268
+ "action-details": actionModel,
269
+ "actions-state": c.state.uaState[item.srfkey],
270
+ "onActionClick": (detail, event) => c.onGroupActionClick(detail, item, event, group, lane)
271
+ }, null)]) : null]);
272
+ };
273
+ const renderBodyCellToolber = (lane, group) => {
274
+ return vue.createVNode("div", {
275
+ "class": ns.em("cell", "toolbar")
276
+ }, [c.enableNew && !c.state.readonly && vue.createVNode(vue.resolveComponent("el-button"), {
277
+ "text": true,
278
+ "class": ns.em("cell", "action"),
279
+ "onClick": (event) => {
280
+ c.onClickNew(event, group.key, lane);
281
+ }
282
+ }, {
283
+ default: () => [vue.createVNode("ion-icon", {
284
+ "name": "add-outline"
285
+ }, null), ibiz.i18n.t("app.newlyBuild")]
286
+ }), quickToolbarModel && vue.createVNode(vue.resolveComponent("iBizControlShell"), {
287
+ "class": ns.e("quicktoolbar"),
288
+ "modelData": {
289
+ ...quickToolbarModel,
290
+ name: "".concat(quickToolbarModel.name, "_").concat(group.key)
291
+ },
292
+ "context": c.context,
293
+ "params": c.params
294
+ }, null)]);
295
+ };
296
+ const renderBatchToolBar = (group) => {
297
+ let _slot2;
298
+ if (!batchToolbarModel || batchKey.value !== group.key)
299
+ return;
300
+ const selectedData = group.selectedData || [];
301
+ const checkAll = selectedData.length === group.children.length;
302
+ const isIndeterminate = selectedData.length > 0 && selectedData.length < group.children.length;
303
+ return vue.createVNode("div", {
304
+ "class": ns.e("batch")
305
+ }, [vue.createVNode(vue.resolveComponent("iBizControlShell"), {
306
+ "modelData": {
307
+ ...batchToolbarModel,
308
+ name: "".concat(batchToolbarModel.name, "_").concat(group.key)
309
+ },
310
+ "class": ns.em("batch", "toolbar"),
311
+ "context": c.context,
312
+ "params": c.params
313
+ }, null), vue.createVNode("div", {
314
+ "class": ns.em("batch", "check")
315
+ }, [vue.createVNode(vue.resolveComponent("el-checkbox"), {
316
+ "model-value": checkAll,
317
+ "indeterminate": isIndeterminate,
318
+ "onChange": () => handleCheckAllGroup(group, checkAll)
319
+ }, _isSlot(_slot2 = ibiz.i18n.t("control.kanban.selectAll")) ? _slot2 : {
320
+ default: () => [_slot2]
321
+ }), vue.createVNode("span", {
322
+ "class": ns.be("batch", "info"),
323
+ "innerHTML": ibiz.i18n.t("control.kanban.selectedDataCount", {
324
+ length: selectedData.length
325
+ })
326
+ }, null)])]);
327
+ };
328
+ const renderBodyCell = (index, lane, group) => {
329
+ const {
330
+ swimlaneAppDEFieldId
331
+ } = c.model;
332
+ return vue.createVNode("div", {
333
+ "class": [ns.e("cell"), ns.em("body", "cell"), ns.is("collapsed", group.isExpand === false)]
334
+ }, [index === 0 && renderBatchToolBar(group), group.isExpand !== false ? vue.createVNode("div", {
335
+ "class": ns.em("cell", "content")
336
+ }, [lane.isExpand ? [vue.createVNode(draggable, {
337
+ "itemKey": "srfkey",
338
+ "disabled": disabled.value,
339
+ "modelValue": group.children,
340
+ "class": ns.em("cell", "draggable"),
341
+ "group": getGroupKey(group.key, lane.key),
342
+ "onChange": (evt) => onDraggableChange(evt, group.key, lane.key)
343
+ }, {
344
+ item: ({
345
+ element
346
+ }) => {
347
+ if (!swimlaneAppDEFieldId || element[swimlaneAppDEFieldId] !== lane.key)
348
+ return null;
349
+ return vue.createVNode(vue.resolveComponent("el-card"), {
350
+ "shadow": "hover",
351
+ "class": [ns.e("card"), ns.is("selected", isSelected(element)), ns.is("disabled", c.state.draggable && c.state.updating)],
352
+ "body-style": cardStyle.value,
353
+ "onClick": () => c.onRowClick(element),
354
+ "onDblclick": () => c.onDbRowClick(element)
355
+ }, {
356
+ default: () => [c.model.itemLayoutPanel ? renderPanelItemLayout(lane, element) : renderDefaultItem(lane, element, group)]
357
+ });
358
+ }
359
+ }), renderBodyCellToolber(lane, group)] : vue.createVNode("div", {
360
+ "class": ns.em("cell", "left")
361
+ }, [vue.createVNode("span", {
362
+ "class": ns.em("cell", "description")
363
+ }, ["".concat(group.children.filter((child) => swimlaneAppDEFieldId && child[swimlaneAppDEFieldId] === lane.key).length, " \u4E2A").concat(group.caption)])])]) : null]);
364
+ };
365
+ const renderBody = () => {
366
+ return vue.createVNode("div", {
367
+ "class": ns.e("body")
368
+ }, [vue.createVNode("div", {
369
+ "class": ns.em("body", "scollor")
370
+ }, [c.state.lanes.map((lane, index) => {
371
+ return vue.createVNode("div", {
372
+ "class": [ns.em("body", "row"), ns.is("expand", lane.isExpand)]
373
+ }, [vue.createVNode("div", {
374
+ "class": [ns.e("cell"), ns.em("body", "cell")]
375
+ }, [vue.createVNode("div", {
376
+ "class": ns.em("cell", "content")
377
+ }, [vue.createVNode("div", {
378
+ "class": ns.em("cell", "left")
379
+ }, [vue.createVNode("ion-icon", {
380
+ "class": ns.em("cell", "expand-icon"),
381
+ "name": lane.isExpand ? "chevron-down-outline" : "chevron-forward-outline",
382
+ "onClick": () => {
383
+ lane.isExpand = !lane.isExpand;
384
+ }
385
+ }, null), vue.createVNode("div", {
386
+ "class": ns.em("cell", "caption")
387
+ }, [lane.caption])]), vue.createVNode("div", {
388
+ "class": ns.em("cell", "right")
389
+ }, [vue.createVNode("span", {
390
+ "class": ns.em("cell", "description")
391
+ }, ["".concat(lane.count, " \u4E2A").concat(c.laneDescription)])])])]), c.state.groups.map((group) => {
392
+ return renderBodyCell(index, lane, group);
393
+ })]);
394
+ })])]);
395
+ };
396
+ return {
397
+ ns,
398
+ renderHeader,
399
+ renderBody
400
+ };
401
+ },
402
+ render() {
403
+ return vue.createVNode("div", {
404
+ "class": this.ns.b()
405
+ }, [vue.createVNode("div", {
406
+ "class": this.ns.e("table")
407
+ }, [this.renderHeader(), this.renderBody()])]);
408
+ }
409
+ });
410
+
411
+ exports.LaneKanban = LaneKanban;
@@ -0,0 +1 @@
1
+ .ibiz-lane-kanban{display:flex;flex-direction:column;width:100%;height:100%}.ibiz-lane-kanban__table{display:flex;flex:1;flex-direction:column;padding:var(--ibiz-spacing-tight);overflow:auto hidden;border-collapse:collapse}.ibiz-lane-kanban__header{box-sizing:border-box;width:100%;min-width:-moz-fit-content;min-width:fit-content;border-top:1px solid var(--ibiz-color-border)}.ibiz-lane-kanban__header--action{visibility:hidden}.ibiz-lane-kanban__header--action.is-visible{visibility:visible}.ibiz-lane-kanban__header--row{display:flex;white-space:nowrap}.ibiz-lane-kanban__header--cell .ibiz-lane-kanban__cell--content{display:flex;justify-content:space-between}.ibiz-lane-kanban__header--cell:hover .ibiz-lane-kanban__header--action{visibility:visible}.ibiz-lane-kanban__header--cell.is-collapsed{position:relative;width:50px;border-bottom:none}.ibiz-lane-kanban__header--cell.is-collapsed .ibiz-lane-kanban__cell--content{position:absolute;top:var(--ibiz-spacing-base);left:0;flex-direction:column}.ibiz-lane-kanban__header--cell.is-collapsed .ibiz-lane-kanban__cell--left{flex-direction:column;gap:var(--ibiz-spacing-extra-tight)}.ibiz-lane-kanban__header--cell.is-collapsed .ibiz-lane-kanban__cell--caption{writing-mode:tb}.ibiz-lane-kanban__header--cell.is-collapsed .ibiz-lane-kanban__cell--separator{margin:var(--ibiz-spacing-extra-tight) 0}.ibiz-lane-kanban__header--toolbar .ibiz-action-toolbar{display:flex;flex-flow:column nowrap}.ibiz-lane-kanban__header--toolbar .el-button{--el-button-size:var(--ibiz-height-control-large);justify-content:flex-start;width:100%;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);margin:var(--ibiz-spacing-none);font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text)}.ibiz-lane-kanban__header--toolbar .el-button ion-icon{margin-right:var(--ibiz-spacing-extra-tight)}.ibiz-lane-kanban__header--toolbar .el-button.is-text:not(.is-disabled):hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color)}.ibiz-lane-kanban__header--popper.el-popper.el-dropdown__popper .el-scrollbar__view.el-dropdown__list{padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none);background-color:var(--ibiz-color-white)}.ibiz-lane-kanban__header--popper.el-popper.el-dropdown__popper .el-button{color:var(--ibiz-color-text-3);--el-button-bg-color:var(--ibiz-color-white);--el-button-hover-bg-color:var(--ibiz-color-fill-0);--el-button-active-bg-color:var(--ibiz-color-fill-0);--el-button-text-color:var(--ibiz-color-text-3);--el-button-hover-text-color:var(--ibiz-color-primary);--el-button-active-text-color:var(--ibiz-color-primary);border:none}.ibiz-lane-kanban__body{display:flex;flex:1;flex-direction:column;width:100%;min-width:-moz-fit-content;min-width:fit-content;padding-bottom:var(--ibiz-spacing-extra-tight);overflow:hidden scroll}.ibiz-lane-kanban__body--scollor{width:auto;height:auto}.ibiz-lane-kanban__body--row{display:flex;width:100%;min-width:0;white-space:nowrap}.ibiz-lane-kanban__body--row.is-expand .ibiz-lane-kanban__cell{height:auto;min-height:200px}.ibiz-lane-kanban__body--row:not(.is-expand) .ibiz-lane-kanban__cell:not(.is-collapsed){border-right:none}.ibiz-lane-kanban__body--cell:first-child .ibiz-lane-kanban__cell--content{display:flex;align-items:start;justify-content:space-between}.ibiz-lane-kanban__body--cell.is-collapsed{width:50px;border-right:1px solid var(--ibiz-color-border);border-bottom:none}.ibiz-lane-kanban__body--cell:has(+.is-collapsed){border-right:1px solid var(--ibiz-color-border)!important}.ibiz-lane-kanban__cell{width:320px;padding:var(--ibiz-spacing-tight);line-height:36px;border-right:1px solid var(--ibiz-color-border);border-bottom:1px solid var(--ibiz-color-border)}.ibiz-lane-kanban__cell--expand-icon{display:flex;align-items:center;margin-right:var(--ibiz-spacing-tight);font-size:var(--ibiz-font-size-header-6);color:var(--ibiz-color-text-3);cursor:pointer}.ibiz-lane-kanban__cell--content{width:100%;height:100%}.ibiz-lane-kanban__cell--left{display:flex;align-items:center}.ibiz-lane-kanban__cell--right{display:flex;align-items:center}.ibiz-lane-kanban__cell--toolbar{margin:var(--ibiz-spacing-tight);visibility:hidden}.ibiz-lane-kanban__cell--separator{margin:0 var(--ibiz-spacing-extra-tight)}.ibiz-lane-kanban__cell--description{font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-text-3)}.ibiz-lane-kanban__cell:hover .ibiz-lane-kanban__cell--toolbar{visibility:visible}.ibiz-lane-kanban__card{margin:var(--ibiz-spacing-tight);cursor:pointer;border-radius:var(--ibiz-spacing-super-tight)}.ibiz-lane-kanban__card.is-disabled{cursor:no-drop}.ibiz-lane-kanban__card.is-selected{background-color:var(--ibiz-color-fill-0)}.ibiz-lane-kanban__default-item--footer{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-spacing-tight);margin-top:var(--ibiz-spacing-tight);border-top:1px solid var(--ibiz-color-border)}.ibiz-lane-kanban__batch{padding:var(--ibiz-spacing-base-tight);border-bottom:1px solid var(--ibiz-color-border)}.ibiz-lane-kanban__batch--toolbar{flex-wrap:wrap;row-gap:var(--ibiz-spacing-tight)}.ibiz-lane-kanban__batch--check{display:flex;align-items:center;justify-content:space-between;margin-top:var(--ibiz-spacing-base-tight);font-size:var(--ibiz-font-size-regular)}.ibiz-lane-kanban__batch--info span{margin:var(--ibiz-spacing-none) var(--ibiz-spacing-extra-tight);color:var(--ibiz-color-primary)}