From 39a0ea183eb7fccb343097934e14926bcdc207cd Mon Sep 17 00:00:00 2001 From: Treecat Date: Mon, 21 Nov 2022 13:47:52 +0800 Subject: [PATCH 01/90] =?UTF-8?q?REPORT-85040=20fix:=20=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E6=97=B6=E9=97=B4=E4=BC=9A=E8=B6=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/case/calendar/calendar.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/case/calendar/calendar.js b/src/case/calendar/calendar.js index 88ccf198a..0a9d40e05 100644 --- a/src/case/calendar/calendar.js +++ b/src/case/calendar/calendar.js @@ -156,13 +156,21 @@ BI.Calendar = BI.inherit(BI.Widget, { return BI.map(items, function (i, item) { return BI.map(item, function (j, td) { var month = td.lastMonth ? o.month - 1 : (td.nextMonth ? o.month + 1 : o.month); + var year = o.year; + if (month > 12) { + month = 1; + year++; + } else if (month < 1) { + month = 12; + year--; + } return BI.extend(td, { type: "bi.calendar_date_item", once: false, forceSelected: true, - value: o.year + "-" + month + "-" + td.text, + value: year + "-" + month + "-" + td.text, disabled: td.disabled, - cls: td.lastMonth || td.nextMonth ? "not-current-month-day": "", + cls: td.lastMonth || td.nextMonth ? "not-current-month-day" : "", lgap: 2, rgap: 2, tgap: 4, From 65626480c87c42538a60e2123fad9a1eeb7ff931 Mon Sep 17 00:00:00 2001 From: "Xavier.Meng" Date: Mon, 21 Nov 2022 14:52:57 +0800 Subject: [PATCH 02/90] =?UTF-8?q?=E6=97=A0JIRA=20refactor(TextValueCombo):?= =?UTF-8?q?=20=E8=A1=A5=E5=85=85=20ts=20=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typescript/case/combo/combo.textvalue.ts | 7 ++++++- typescript/case/combo/popup.textvalue.ts | 13 +++++++++++++ typescript/index.ts | 3 +++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 typescript/case/combo/popup.textvalue.ts diff --git a/typescript/case/combo/combo.textvalue.ts b/typescript/case/combo/combo.textvalue.ts index 0a50d2342..128ec03b6 100644 --- a/typescript/case/combo/combo.textvalue.ts +++ b/typescript/case/combo/combo.textvalue.ts @@ -5,5 +5,10 @@ export declare class TextValueCombo extends Widget { static EVENT_CHANGE: string; - populate(items: any): void; + clear(): void; + setText(text: string): void; + setValue(value: any): void; + setStatus(status: "success" | "warning" | "error"): void; + getValue(): any[]; + populate(items: any[]): void; } diff --git a/typescript/case/combo/popup.textvalue.ts b/typescript/case/combo/popup.textvalue.ts new file mode 100644 index 000000000..a3fe1b0d1 --- /dev/null +++ b/typescript/case/combo/popup.textvalue.ts @@ -0,0 +1,13 @@ +import { Pane } from "../../base/pane"; + +export declare class TextValueComboPopup extends Pane { + static xtype: string; + + static EVENT_CHANGE: string; + static EVENT_CLEAR: string; + static EVENT_CONFIRM: string; + + populate(items: any[]): void; + getValue(): any; + setValue(value: any): void; +} diff --git a/typescript/index.ts b/typescript/index.ts index a1b9831c9..cf63c604d 100644 --- a/typescript/index.ts +++ b/typescript/index.ts @@ -20,6 +20,7 @@ import { IconChangeButton } from "./case/button/icon/icon.change"; import { MultiSelectItem } from "./case/button/item.multiselect"; import { BubbleCombo } from "./case/combo/bubblecombo/combo.bubble"; import { TextValueCombo } from "./case/combo/combo.textvalue"; +import { TextValueComboPopup } from "./case/combo/popup.textvalue"; import { SmallTextValueCombo } from "./case/combo/combo.textvaluesmall"; import { SearchTextValueCombo } from "./case/combo/searchtextvaluecombo/combo.searchtextvalue"; import { SignEditor } from "./case/editor/editor.sign"; @@ -226,6 +227,7 @@ export interface BI extends _func, _i18n, _base, _inject, _var, _web, _utils { ButtonGroup: typeof ButtonGroup; Combo: typeof Combo; TextValueCombo: typeof TextValueCombo; + TextValueComboPopup: typeof TextValueComboPopup; SmallTextValueCombo: typeof SmallTextValueCombo; BubbleCombo: typeof BubbleCombo; AllValueMultiTextValueCombo: typeof AllValueMultiTextValueCombo; @@ -464,6 +466,7 @@ export { MultiSelectBar, SelectList, TextValueCombo, + TextValueComboPopup, SmallTextValueCombo, Editor, IconLabel, From 987283972996eed0b1dbb702ea946ec76fdfc3b1 Mon Sep 17 00:00:00 2001 From: windy Date: Mon, 21 Nov 2022 17:25:32 +0800 Subject: [PATCH 03/90] =?UTF-8?q?BI-117325=20=E5=8F=AF=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/widget/downlist/combo.downlist.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/widget/downlist/combo.downlist.js b/src/widget/downlist/combo.downlist.js index 8b9aa4c0c..10c39bfbf 100644 --- a/src/widget/downlist/combo.downlist.js +++ b/src/widget/downlist/combo.downlist.js @@ -44,7 +44,8 @@ popup: {}, minWidth: 140, maxHeight: 1000, - destroyWhenHide: false + destroyWhenHide: false, + isDefaultInit: true, }); }, @@ -57,7 +58,7 @@ type: "bi.combo", trigger: o.trigger, isNeedAdjustWidth: false, - isDefaultInit: true, + isDefaultInit: o.isDefaultInit, container: o.container, adjustLength: o.adjustLength, direction: o.direction, From 4c7f40659a4d5f5d40c171cb07a6af011614762d Mon Sep 17 00:00:00 2001 From: data Date: Mon, 21 Nov 2022 19:06:10 +0800 Subject: [PATCH 04/90] auto upgrade version to 2.0.20221121190600 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 841972678..b54ae8401 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221117172352", + "version": "2.0.20221121190600", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 1ef4f7f406f0d8c40c883b8d4f0f4d23b50fccfc Mon Sep 17 00:00:00 2001 From: data Date: Tue, 22 Nov 2022 10:46:04 +0800 Subject: [PATCH 05/90] auto upgrade version to 2.0.20221122104551 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b54ae8401..ba2ec6d6a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221121190600", + "version": "2.0.20221122104551", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 28c8088f7c3963e1333ead12073180887c1acea6 Mon Sep 17 00:00:00 2001 From: data Date: Tue, 22 Nov 2022 11:36:26 +0800 Subject: [PATCH 06/90] auto upgrade version to 2.0.20221122113602 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ba2ec6d6a..042ef5ce3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221122104551", + "version": "2.0.20221122113602", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From aa7964abd8b6627e1e41dd0d9b703c3ec0f479cf Mon Sep 17 00:00:00 2001 From: data Date: Tue, 22 Nov 2022 13:44:58 +0800 Subject: [PATCH 07/90] auto upgrade version to 2.0.20221122134446 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 042ef5ce3..8ff018e45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221122113602", + "version": "2.0.20221122134446", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From b719f7d34d195fe3cc506d07c154fe820658927e Mon Sep 17 00:00:00 2001 From: data Date: Tue, 22 Nov 2022 14:16:02 +0800 Subject: [PATCH 08/90] auto upgrade version to 2.0.20221122141551 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8ff018e45..e4cde1565 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221122134446", + "version": "2.0.20221122141551", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From c25f840f942f4cd3b1a3297e333374dd9dc4edb0 Mon Sep 17 00:00:00 2001 From: data Date: Tue, 22 Nov 2022 14:46:46 +0800 Subject: [PATCH 09/90] auto upgrade version to 2.0.20221122144609 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e4cde1565..99f620e2d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221122141551", + "version": "2.0.20221122144609", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 2f8aa5d584bf0ed1c1e3788d259efcff03da76b6 Mon Sep 17 00:00:00 2001 From: zsmj Date: Tue, 22 Nov 2022 14:52:08 +0800 Subject: [PATCH 10/90] =?UTF-8?q?BI-117565=20fix:=20=E8=87=AA=E9=80=82?= =?UTF-8?q?=E5=BA=94=E6=83=85=E5=86=B5=E4=B8=8Bnumber-checker=E7=9A=84?= =?UTF-8?q?=E5=9C=86=E8=A7=92=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit W3C 对于重合曲线有这样的规范:如果两个相邻的角的半径和超过了对应的盒子的边的长度,那么浏览器要重新计算保证它们不会重合。 --- .../widget/multiselect/trigger/button.checkselected.less | 2 +- .../multitree/trigger/multi.tree.button.checkselected.less | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/less/widget/multiselect/trigger/button.checkselected.less b/src/less/widget/multiselect/trigger/button.checkselected.less index 4a36315b0..ded0da5eb 100644 --- a/src/less/widget/multiselect/trigger/button.checkselected.less +++ b/src/less/widget/multiselect/trigger/button.checkselected.less @@ -2,7 +2,7 @@ .bi-multi-select-check-selected-button { z-index: 1; - .border-radius(50%); + .border-radius(99999px); &:active { color: @color-bi-text-highlight; diff --git a/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less b/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less index 55207b67a..dd7fe2527 100644 --- a/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less +++ b/src/less/widget/multitree/trigger/multi.tree.button.checkselected.less @@ -6,10 +6,11 @@ z-index: 1; } .trigger-check-text { - .border-radius(8px); + .border-radius(99999px); z-index: 1; + &:active { background-color: @color-bi-background-multi-select-trigger-check-selected; } } -} \ No newline at end of file +} From 2b4c5600dff49eed1d4effc6c3515fab77f79928 Mon Sep 17 00:00:00 2001 From: "Xavier.Meng" Date: Tue, 22 Nov 2022 17:09:33 +0800 Subject: [PATCH 11/90] =?UTF-8?q?=E6=97=A0JIRA=20refactor(each):=20?= =?UTF-8?q?=E5=8A=A0=E4=B8=AA=E9=87=8D=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typescript/core/base.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/typescript/core/base.ts b/typescript/core/base.ts index 6182a0833..4d6550f4f 100644 --- a/typescript/core/base.ts +++ b/typescript/core/base.ts @@ -38,7 +38,9 @@ export interface _base { size: (collection: any) => number; - each: (collection: T[] | object | string, callback?: ((index: number, value: T) => void) | object | string, thisArg?: any) => any; + each(collection: ArrayLike, iteratee?: (index: number, value: T) => void, thisArg?: any): ArrayLike; + each(collection: T, iteratee?: (index: K, value: T[K]) => void, thisArg?: any): T; + each(collection: T, iteratee?: any, thisArg?: any): T; map: (collection: T[] | object | string | null | undefined, callback?: ((index: number, value: T) => U) | object | string, thisArg?: any) => U[]; From 5c2ccee8b818da16de397e2b427e1e12f0d08680 Mon Sep 17 00:00:00 2001 From: data Date: Tue, 22 Nov 2022 17:25:58 +0800 Subject: [PATCH 12/90] auto upgrade version to 2.0.20221122172525 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 99f620e2d..09b179d9e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221122144609", + "version": "2.0.20221122172525", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 715c07db5d3fbf96ab3c2bb4fe9d671dbaad7777 Mon Sep 17 00:00:00 2001 From: data Date: Tue, 22 Nov 2022 22:25:18 +0800 Subject: [PATCH 13/90] auto upgrade version to 2.0.20221122222501 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 09b179d9e..25a16e4fe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221122172525", + "version": "2.0.20221122222501", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From ce6b828d9246ade1c79d2d7fc327b2a00dc111db Mon Sep 17 00:00:00 2001 From: zsmj Date: Wed, 23 Nov 2022 10:36:31 +0800 Subject: [PATCH 14/90] =?UTF-8?q?=E6=97=A0JIRA=20feat:=20=E5=8A=A0?= =?UTF-8?q?=E4=B8=AA=E6=96=B9=E6=B3=95=20BI.getMinimumFontSize()=20?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D=E6=9C=80=E5=B0=8F=E5=AD=97?= =?UTF-8?q?=E4=BD=93=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/platform/web/function.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/core/platform/web/function.js b/src/core/platform/web/function.js index 1c74836e2..47b6b9d39 100644 --- a/src/core/platform/web/function.js +++ b/src/core/platform/web/function.js @@ -137,5 +137,14 @@ BI._.extend(BI, { return version[1] * 1; } return 0; + }, + + getMinimumFontSize: function () { + const el = document.createElement('div'); + el.style.fontSize = "0px"; + document.body.appendChild(el); + const size = getComputedStyle(el).fontSize; + el.remove(); + return size; } }); From de13f33d440aff07f51082090b6f7cb74c508efd Mon Sep 17 00:00:00 2001 From: data Date: Wed, 23 Nov 2022 10:54:55 +0800 Subject: [PATCH 15/90] auto upgrade version to 2.0.20221123105406 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 25a16e4fe..5ee1f98d2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221122222501", + "version": "2.0.20221123105406", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 997e307a9e4ccd6222c3b6b591a9510fdf6a99e0 Mon Sep 17 00:00:00 2001 From: zsmj Date: Thu, 24 Nov 2022 15:54:15 +0800 Subject: [PATCH 16/90] =?UTF-8?q?=E6=97=A0JIRA=20feat:=20=E5=8A=A0?= =?UTF-8?q?=E4=B8=AA=E6=96=B9=E6=B3=95=20BI.getMinimumFontSize()=20?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D=E6=9C=80=E5=B0=8F=E5=AD=97?= =?UTF-8?q?=E4=BD=93=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/platform/web/function.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/platform/web/function.js b/src/core/platform/web/function.js index 47b6b9d39..152933882 100644 --- a/src/core/platform/web/function.js +++ b/src/core/platform/web/function.js @@ -145,6 +145,6 @@ BI._.extend(BI, { document.body.appendChild(el); const size = getComputedStyle(el).fontSize; el.remove(); - return size; + return parseInt(size); } }); From 8114b75e2da64f336528d236de315a22bec28e38 Mon Sep 17 00:00:00 2001 From: data Date: Thu, 24 Nov 2022 20:38:28 +0800 Subject: [PATCH 17/90] auto upgrade version to 2.0.20221124203811 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5ee1f98d2..b194a1dc2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221123105406", + "version": "2.0.20221124203811", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 3c7b5118d548a543e1b81c2d2ed02e24d19dbdb6 Mon Sep 17 00:00:00 2001 From: data Date: Mon, 28 Nov 2022 10:16:37 +0800 Subject: [PATCH 18/90] auto upgrade version to 2.0.20221128101611 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b194a1dc2..fb398af51 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221124203811", + "version": "2.0.20221128101611", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From dd3c91ff5566d747ed642bc9c1f576c78908895d Mon Sep 17 00:00:00 2001 From: data Date: Tue, 29 Nov 2022 15:24:58 +0800 Subject: [PATCH 19/90] auto upgrade version to 2.0.20221129152444 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fb398af51..5db81c903 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221128101611", + "version": "2.0.20221129152444", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 87355e8689acf9d781377dccdb6a15143f95cbe6 Mon Sep 17 00:00:00 2001 From: zsmj Date: Tue, 29 Nov 2022 17:52:58 +0800 Subject: [PATCH 20/90] =?UTF-8?q?KERNEL-13662=20feat:=20text=5Fvalue=5Fcom?= =?UTF-8?q?bo=20=E5=A4=8D=E9=80=89,=E6=94=AF=E6=8C=81=E4=B8=8D=E5=B8=A6?= =?UTF-8?q?=E5=85=A8=E9=80=89=20-=20from=20Richie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/js/case/combo/demo.text_value_combo.js | 30 +-- .../combo/textvaluecombo/combo.textvalue.js | 4 +- .../combo/textvaluecombo/popup.textvalue.js | 185 +++++++++++------- 3 files changed, 136 insertions(+), 83 deletions(-) diff --git a/demo/js/case/combo/demo.text_value_combo.js b/demo/js/case/combo/demo.text_value_combo.js index 15df83c54..cf6b30feb 100644 --- a/demo/js/case/combo/demo.text_value_combo.js +++ b/demo/js/case/combo/demo.text_value_combo.js @@ -8,19 +8,21 @@ Demo.TextValueCombo = BI.inherit(BI.Widget, { render: function () { var combo1, combo2; - var items = [{ - text: "MVC-1", - iconCls: "date-font", - value: 1 - }, { - text: "MVC-2", - iconCls: "search-font", - value: 2 - }, { - text: "MVC-3", - iconCls: "pull-right-font", - value: 3 - }]; + var items = [ + { + text: "MVC-1", + iconCls: "date-font", + value: 1 + }, { + text: "MVC-2", + iconCls: "search-font", + value: 2 + }, { + text: "MVC-3", + iconCls: "pull-right-font", + value: 3 + } + ]; // 创建下拉框各种场景用例 return { @@ -195,6 +197,8 @@ Demo.TextValueCombo = BI.inherit(BI.Widget, { allowClear: true, defaultText: "请选择", chooseType: BI.Selection.Multi, + value: [1], + // allowSelectAll: false, listeners: [ { eventName: BI.TextValueCombo.EVENT_CHANGE, diff --git a/src/case/combo/textvaluecombo/combo.textvalue.js b/src/case/combo/textvaluecombo/combo.textvalue.js index 1128f4ed8..02642da1a 100644 --- a/src/case/combo/textvaluecombo/combo.textvalue.js +++ b/src/case/combo/textvaluecombo/combo.textvalue.js @@ -16,7 +16,8 @@ BI.TextValueCombo = BI.inherit(BI.Widget, { el: {}, allowClear: false, status: "success", // success | warning | error, - title: null + title: null, + allowSelectAll: true, }); }, @@ -78,6 +79,7 @@ BI.TextValueCombo = BI.inherit(BI.Widget, { ref: ref => this.popup = ref, chooseType: o.chooseType, items: o.items, + allowSelectAll: o.allowSelectAll, listeners: [ { eventName: BI.TextValueComboPopup.EVENT_CHANGE, diff --git a/src/case/combo/textvaluecombo/popup.textvalue.js b/src/case/combo/textvaluecombo/popup.textvalue.js index 3f50089af..fa0de7c23 100644 --- a/src/case/combo/textvaluecombo/popup.textvalue.js +++ b/src/case/combo/textvaluecombo/popup.textvalue.js @@ -2,92 +2,132 @@ BI.TextValueComboPopup = BI.inherit(BI.Pane, { _defaultConfig: function () { return BI.extend(BI.TextValueComboPopup.superclass._defaultConfig.apply(this, arguments), { baseCls: "bi-text-icon-popup", - chooseType: BI.ButtonGroup.CHOOSE_TYPE_SINGLE + chooseType: BI.ButtonGroup.CHOOSE_TYPE_SINGLE, + allowSelectAll: true, }); }, - render () { + render() { var o = this.options, self = this; if (o.chooseType !== BI.ButtonGroup.CHOOSE_TYPE_MULTI) { return { type: "bi.vertical", vgap: 5, - items: [{ - type: "bi.button_group", - ref: (_ref) => { - this.popup = _ref; - }, - items: this._formatItems(o.items), - chooseType: o.chooseType, - layouts: [{ - type: "bi.vertical" - }], - value: o.value, - listeners: [{ - eventName: BI.Controller.EVENT_CHANGE, - action: function (type, val, obj) { - self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); - if (type === BI.Events.CLICK) { - self.fireEvent(BI.TextValueComboPopup.EVENT_CHANGE, val, obj); + items: [ + { + type: "bi.button_group", + ref: (_ref) => { + this.popup = _ref; + }, + items: this._formatItems(o.items), + chooseType: o.chooseType, + layouts: [ + { + type: "bi.vertical" } - } - }] - }] + ], + value: o.value, + listeners: [ + { + eventName: BI.Controller.EVENT_CHANGE, + action: function (type, val, obj) { + self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); + if (type === BI.Events.CLICK) { + self.fireEvent(BI.TextValueComboPopup.EVENT_CHANGE, val, obj); + } + } + } + ] + } + ] }; } return { type: "bi.vertical", verticalAlign: BI.VerticalAlign.Stretch, rowSize: ["fill", ""], - items: [{ - type: "bi.select_list", - logic: { - dynamic: true, - innerVgap: 5, - rowSize: ["", "fill"], - verticalAlign: BI.VerticalAlign.Stretch - }, - ref: (_ref) => { - this.popup = _ref; - }, - el: { - el: { - chooseType: o.chooseType + items: [ + { + el: o.allowSelectAll ? { + type: "bi.select_list", + logic: { + dynamic: true, + innerVgap: 5, + rowSize: ["", "fill"], + verticalAlign: BI.VerticalAlign.Stretch + }, + ref: (_ref) => { + this.popup = _ref; + }, + el: { + el: { + chooseType: o.chooseType, + } + }, + items: this._formatItems(o.items), + value: { + type: BI.ButtonGroup.CHOOSE_TYPE_MULTI, + value: o.value + }, + listeners: [ + { + eventName: BI.SelectList.EVENT_CHANGE, + action: function (val) { + self.fireEvent(BI.TextValueComboPopup.EVENT_CHANGE, val); + } + } + ] + } : { + type: "bi.list_pane", + logic: { + dynamic: true, + innerVgap: 5, + rowSize: ["", "fill"], + verticalAlign: BI.VerticalAlign.Stretch + }, + ref: (_ref) => { + this.popup = _ref; + }, + el: { + chooseType: o.chooseType, + }, + items: this._formatItems(o.items), + value: o.value, + listeners: [ + { + eventName: BI.ListPane.EVENT_CHANGE, + action: function (val) { + self.fireEvent(BI.TextValueComboPopup.EVENT_CHANGE, val); + } + } + ] } }, - items: this._formatItems(o.items), - value: { - type: BI.ButtonGroup.CHOOSE_TYPE_MULTI, - value: o.value - }, - listeners: [{ - eventName: BI.SelectList.EVENT_CHANGE, - action: function (val) { - self.fireEvent(BI.TextValueComboPopup.EVENT_CHANGE, val); - } - }] - }, { - type: "bi.center", - cls: "list-view-toolbar bi-high-light bi-split-top", - height: 24, - items: BI.createItems([{ - type: "bi.text_button", - text: BI.i18nText("BI-Basic_Clears"), - handler: function () { - self.fireEvent(BI.TextValueComboPopup.EVENT_CLEAR); - } - }, { - type: "bi.text_button", - text: BI.i18nText("BI-Basic_OK"), - handler: function () { - self.fireEvent(BI.TextValueComboPopup.EVENT_CONFIRM); - } - }], { - once: false, - shadow: true, - isShadowShowingOnSelected: true - }) - }] + { + type: "bi.center", + cls: "list-view-toolbar bi-high-light bi-split-top", + height: 24, + items: BI.createItems([ + { + type: "bi.text_button", + text: BI.i18nText("BI-Basic_Clears"), + handler: function () { + self.fireEvent(BI.TextValueComboPopup.EVENT_CLEAR); + } + }, { + type: "bi.text_button", + text: BI.i18nText("BI-Basic_OK"), + handler: function () { + self.fireEvent(BI.TextValueComboPopup.EVENT_CONFIRM); + } + } + ], { + once: false, + shadow: true, + isShadowShowingOnSelected: true + }) + } + ] }; }, @@ -117,6 +157,9 @@ BI.TextValueComboPopup = BI.inherit(BI.Pane, { return this.popup.getValue(); } var val = this.popup.getValue(); + if (!this.options.allowSelectAll) { + return val; + } if (val.type === BI.ButtonGroup.CHOOSE_TYPE_MULTI) { return val.value; } else { @@ -128,6 +171,10 @@ BI.TextValueComboPopup = BI.inherit(BI.Pane, { if (this.options.chooseType !== BI.ButtonGroup.CHOOSE_TYPE_MULTI) { return this.popup.setValue(v); } + if (!this.options.allowSelectAll) { + this.popup.setValue(v); + return; + } this.popup.setValue({ type: BI.ButtonGroup.CHOOSE_TYPE_MULTI, value: v From 16c85e896d3050241a1a11feaf72c2d6a909acb2 Mon Sep 17 00:00:00 2001 From: data Date: Wed, 30 Nov 2022 10:03:51 +0800 Subject: [PATCH 21/90] auto upgrade version to 2.0.20221130100342 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5db81c903..37bc66d53 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221129152444", + "version": "2.0.20221130100342", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 5aa51caf02259bc6f06c0786ad4021b30f432f4f Mon Sep 17 00:00:00 2001 From: data Date: Wed, 30 Nov 2022 15:26:02 +0800 Subject: [PATCH 22/90] auto upgrade version to 2.0.20221130152547 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 37bc66d53..412d6436c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221130100342", + "version": "2.0.20221130152547", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 6006d7bb5c878e2cec54dba324e49134b989816c Mon Sep 17 00:00:00 2001 From: zsmj Date: Thu, 1 Dec 2022 17:14:48 +0800 Subject: [PATCH 23/90] =?UTF-8?q?KERNEL-13662=20feat:=20text=5Fvalue=5Fcom?= =?UTF-8?q?bo=20=E5=A4=8D=E9=80=89,=E6=94=AF=E6=8C=81=E4=B8=8D=E5=B8=A6?= =?UTF-8?q?=E5=85=A8=E9=80=89=20-=20from=20Richie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/js/case/combo/demo.text_value_combo.js | 23 ++++ .../combo/textvaluecombo/popup.textvalue.js | 112 +++++++++--------- 2 files changed, 79 insertions(+), 56 deletions(-) diff --git a/demo/js/case/combo/demo.text_value_combo.js b/demo/js/case/combo/demo.text_value_combo.js index cf6b30feb..4f8c4a92e 100644 --- a/demo/js/case/combo/demo.text_value_combo.js +++ b/demo/js/case/combo/demo.text_value_combo.js @@ -209,6 +209,29 @@ Demo.TextValueCombo = BI.inherit(BI.Widget, { ] } ] + }), + this.createCombo("支持复选,不要全选功能", { + type: "bi.vertical", + items: [ + { + type: "bi.text_value_combo", + width: 300, + items: items, + allowClear: true, + defaultText: "请选择", + chooseType: BI.Selection.Multi, + value: [1], + allowSelectAll: false, + listeners: [ + { + eventName: BI.TextValueCombo.EVENT_CHANGE, + action: function () { + console.log(this.getValue()); + } + } + ] + } + ] }) ] }; diff --git a/src/case/combo/textvaluecombo/popup.textvalue.js b/src/case/combo/textvaluecombo/popup.textvalue.js index fa0de7c23..3411793a4 100644 --- a/src/case/combo/textvaluecombo/popup.textvalue.js +++ b/src/case/combo/textvaluecombo/popup.textvalue.js @@ -45,65 +45,38 @@ BI.TextValueComboPopup = BI.inherit(BI.Pane, { return { type: "bi.vertical", verticalAlign: BI.VerticalAlign.Stretch, - rowSize: ["fill", ""], - items: [ + items: o.allowSelectAll ? [ { - el: o.allowSelectAll ? { - type: "bi.select_list", - logic: { - dynamic: true, - innerVgap: 5, - rowSize: ["", "fill"], - verticalAlign: BI.VerticalAlign.Stretch - }, - ref: (_ref) => { - this.popup = _ref; - }, - el: { - el: { - chooseType: o.chooseType, - } - }, - items: this._formatItems(o.items), - value: { - type: BI.ButtonGroup.CHOOSE_TYPE_MULTI, - value: o.value - }, - listeners: [ - { - eventName: BI.SelectList.EVENT_CHANGE, - action: function (val) { - self.fireEvent(BI.TextValueComboPopup.EVENT_CHANGE, val); - } - } - ] - } : { - type: "bi.list_pane", - logic: { - dynamic: true, - innerVgap: 5, - rowSize: ["", "fill"], - verticalAlign: BI.VerticalAlign.Stretch - }, - ref: (_ref) => { - this.popup = _ref; - }, + type: "bi.select_list", + logic: { + dynamic: true, + innerVgap: 5, + rowSize: ["", "fill"], + verticalAlign: BI.VerticalAlign.Stretch + }, + ref: (_ref) => { + this.popup = _ref; + }, + el: { el: { chooseType: o.chooseType, - }, - items: this._formatItems(o.items), - value: o.value, - listeners: [ - { - eventName: BI.ListPane.EVENT_CHANGE, - action: function (val) { - self.fireEvent(BI.TextValueComboPopup.EVENT_CHANGE, val); - } + } + }, + items: this._formatItems(o.items), + value: { + type: BI.ButtonGroup.CHOOSE_TYPE_MULTI, + value: o.value + }, + height: "fill", + listeners: [ + { + eventName: BI.SelectList.EVENT_CHANGE, + action: function (val) { + self.fireEvent(BI.TextValueComboPopup.EVENT_CHANGE, val); } - ] - } - }, - { + } + ] + }, { type: "bi.center", cls: "list-view-toolbar bi-high-light bi-split-top", height: 24, @@ -127,7 +100,34 @@ BI.TextValueComboPopup = BI.inherit(BI.Pane, { isShadowShowingOnSelected: true }) } - ] + ] : [ + { + type: "bi.list_pane", + logic: { + dynamic: true, + innerVgap: 5, + rowSize: ["", "fill"], + verticalAlign: BI.VerticalAlign.Stretch + }, + ref: (_ref) => { + this.popup = _ref; + }, + el: { + chooseType: o.chooseType, + }, + items: this._formatItems(o.items), + value: o.value, + height: "fill", + listeners: [ + { + eventName: BI.ListPane.EVENT_CHANGE, + action: function (val) { + self.fireEvent(BI.TextValueComboPopup.EVENT_CHANGE, val); + } + } + ] + } + ], }; }, From 6e0dd6ac965645b450ac4e36cb16b5a01e12e234 Mon Sep 17 00:00:00 2001 From: data Date: Thu, 1 Dec 2022 18:03:30 +0800 Subject: [PATCH 24/90] auto upgrade version to 2.0.20221201180321 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 412d6436c..51b322873 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221130152547", + "version": "2.0.20221201180321", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From be531e8e2760ecc6ff8b231259f3fd1510731bb5 Mon Sep 17 00:00:00 2001 From: "Xavier.Meng" Date: Fri, 2 Dec 2022 16:09:07 +0800 Subject: [PATCH 25/90] =?UTF-8?q?=E6=97=A0JIRA=20fix(widget.ts):=20?= =?UTF-8?q?=E6=8A=8A=5FrenderEngine=E6=94=B9=E4=B8=BA=E9=9D=99=E6=80=81?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typescript/core/widget.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/typescript/core/widget.ts b/typescript/core/widget.ts index 4c1fc9d2f..fa945cb7c 100644 --- a/typescript/core/widget.ts +++ b/typescript/core/widget.ts @@ -418,6 +418,11 @@ export declare class Widget extends OB { */ static registerRenderEngine(engine: RenderEngine): void; + /** + * 渲染引擎 + */ + static _renderEngine: RenderEngine; + /** * 出现loading的锁 */ @@ -476,11 +481,6 @@ export declare class Widget extends OB { */ _manualSetValid: boolean; - /** - * 渲染引擎 - */ - _renderEngine: RenderEngine; - _store(): void; // 生命周期函数 From c24491b809a1f9069a5ef3253b7e38256e08c17f Mon Sep 17 00:00:00 2001 From: data Date: Fri, 2 Dec 2022 16:25:34 +0800 Subject: [PATCH 26/90] auto upgrade version to 2.0.20221202162515 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 51b322873..1be2639c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221201180321", + "version": "2.0.20221202162515", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From e5b4abe106c44c3d2ee621604e89f425a64fcee7 Mon Sep 17 00:00:00 2001 From: data Date: Fri, 2 Dec 2022 16:43:51 +0800 Subject: [PATCH 27/90] auto upgrade version to 2.0.20221202164316 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1be2639c9..bb4e6bbf3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221202162515", + "version": "2.0.20221202164316", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 50e28a62192a11d6650c120ddcd1d8b253e833e7 Mon Sep 17 00:00:00 2001 From: "Xavier.Meng" Date: Fri, 2 Dec 2022 17:12:40 +0800 Subject: [PATCH 28/90] =?UTF-8?q?=E6=97=A0JIRA=20fix(widget.ts):=20?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=5FWidget=E9=87=8C=E7=9A=84=5FrenderEngine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typescript/core/widget.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/typescript/core/widget.ts b/typescript/core/widget.ts index fa945cb7c..5992ce01c 100644 --- a/typescript/core/widget.ts +++ b/typescript/core/widget.ts @@ -69,11 +69,6 @@ export interface _Widget extends _OB { */ _manualSetValid: boolean; - /** - * 渲染引擎 - */ - _renderEngine: RenderEngine; - _store(): void; // 生命周期函数 From a710efe37e74c28ac9aa1f496414c5c9403f2f80 Mon Sep 17 00:00:00 2001 From: data Date: Fri, 2 Dec 2022 17:40:28 +0800 Subject: [PATCH 29/90] auto upgrade version to 2.0.20221202174010 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bb4e6bbf3..cd175efdf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221202164316", + "version": "2.0.20221202174010", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 5c33854bc8a5c0724e6bc514a4e41f731f99fe05 Mon Sep 17 00:00:00 2001 From: "Xavier.Meng" Date: Fri, 2 Dec 2022 19:30:16 +0800 Subject: [PATCH 30/90] =?UTF-8?q?=E6=97=A0JIRA=20refactor(widget):=20?= =?UTF-8?q?=E5=88=A0=E6=8E=89=5FWidget=E7=AD=89=EF=BC=8C=E9=83=BD=E6=8D=A2?= =?UTF-8?q?=E6=88=90Widget?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../allvalue.multitextvalue.combo.ts | 12 +- typescript/core/base.ts | 4 +- typescript/core/plugin.ts | 4 +- typescript/core/widget.ts | 404 +----------------- 4 files changed, 11 insertions(+), 413 deletions(-) diff --git a/typescript/component/allvaluemultitextvaluecombo/allvalue.multitextvalue.combo.ts b/typescript/component/allvaluemultitextvaluecombo/allvalue.multitextvalue.combo.ts index 990ef0cd1..960fa6219 100644 --- a/typescript/component/allvaluemultitextvaluecombo/allvalue.multitextvalue.combo.ts +++ b/typescript/component/allvaluemultitextvaluecombo/allvalue.multitextvalue.combo.ts @@ -1,14 +1,4 @@ -import { Widget, _Widget } from "../../core/widget"; - -export interface _AllValueMultiTextValueCombo extends _Widget { - getValue(): T[]; - - populate(items: any): void; -} - -export interface _AllValueMultiTextValueComboStatic { - EVENT_CONFIRM: string; -} +import { Widget } from "../../core/widget"; export declare class AllValueMultiTextValueCombo extends Widget { static xtype: string; diff --git a/typescript/core/base.ts b/typescript/core/base.ts index 4d6550f4f..79dc317af 100644 --- a/typescript/core/base.ts +++ b/typescript/core/base.ts @@ -1,4 +1,4 @@ -import { _Widget } from "./widget"; +import { Widget } from "./widget"; export interface _base { assert: (v: any, is: Function) => Boolean; @@ -7,7 +7,7 @@ export interface _base { UUID: () => string; - isWidget: (widget: any) => widget is _Widget; + isWidget: (widget: any) => widget is Widget; createWidgets: (items: any, options: any, context: any) => any; diff --git a/typescript/core/plugin.ts b/typescript/core/plugin.ts index 83c1176fb..afae32a91 100644 --- a/typescript/core/plugin.ts +++ b/typescript/core/plugin.ts @@ -1,7 +1,7 @@ -import { _Widget } from "./widget"; +import { Widget } from "./widget"; type configWidgetFn = (type: string, options: Obj) => void -type configObjectFn = (type: string, widget: _Widget) => void +type configObjectFn = (type: string, widget: Widget) => void export type _config = (widgetFunction: configWidgetFn | configWidgetFn[], objectFunction: configObjectFn | configObjectFn[]) => void diff --git a/typescript/core/widget.ts b/typescript/core/widget.ts index 5992ce01c..3cd8f175e 100644 --- a/typescript/core/widget.ts +++ b/typescript/core/widget.ts @@ -1,396 +1,5 @@ import { OB, _OB } from "./ob"; -export interface _WidgetStatic { - - /** - * 注册渲染引擎 - * @param engine 引擎 - */ - registerRenderEngine(engine: RenderEngine): void; -} - -export interface _Widget extends _OB { - - /** - * 出现loading的锁 - */ - __asking: boolean; - - /** - * 同步锁 - */ - __async: boolean; - - /** - * widget类标识符 - */ - widgetName: string | null; - - /** - * 是否为根节点 - */ - _isRoot: boolean; - - /** - * 父节点 - */ - _parent: _Widget | null; - // TODO: 完成jquery文件夹后把这块改了 - /** - * 真实dom的类jQuery对象 - */ - element: { - width(): number; - height(): number; - width(width: number | string): _Widget["element"]; - height(height: number | string): _Widget["element"]; - [key: string]: any; - }; - - /** - * 子元素 - */ - _children: { - [key: string]: _Widget; - }; - - /** - * 是否已挂载 - */ - _isMounted: boolean; - - /** - * 手动设置enable - */ - _manualSetEnable: boolean; - - /** - * 手动设置valid - */ - _manualSetValid: boolean; - - _store(): void; - - // 生命周期函数 - /** - * 初始化前 - */ - beforeInit?(cb: Function): void; - - /** - * 创建前 - */ - beforeCreate?(): void; - - /** - * 创建 - */ - created?(): void; - - /** - * 渲染 - */ - render?(): any; - - /** - * 挂载前 - */ - beforeMount?(): void; - - /** - * 挂载 - */ - mounted?(): void; - - /** - * 更新前 - */ - shouldUpdate?(...args: any[]): void; - - /** - * 更新 - */ - update?(...args: any[]): void; - - /** - * 销毁前 - */ - beforeDestroy?(): void; - - /** - * 销毁 - */ - destroyed?(): void; - - /** - * 初始化render函数 - */ - _initRender: () => void; - - /** - * 内部主render函数 - */ - _render: () => void; - - /** - * 初始化根节点 - */ - _initRoot: () => void; - - /** - * 初始化元素宽度 - */ - _initElementWidth: () => void; - - /** - * 初始化元素高度 - */ - _initElementHeight: () => void; - - /** - * 初始化元素可见 - */ - _initVisual: () => void; - - /** - * 初始化元素可用不可用 - */ - _initEffects: () => void; - - /** - * 设置mounted锁 - */ - _initState: () => void; - - /** - * 生成真实dom - */ - _initElement: () => void; - - /** - * 设置父节点 - */ - _setParent: () => void; - - /** - * @param force 是否强制挂载子节点 - * @param deep 子节点是否也是按照当前force处理 - * @param lifeHook 生命周期钩子触不触发,默认触发 - * @param predicate 递归每个widget的回调 - */ - _mount(force?: boolean, deep?: boolean, lifeHook?: boolean, predicate?: Function): boolean; - - /** - * 挂载子节点 - */ - _mountChildren?(): void; - - /** - * 是否已挂载 - */ - isMounted(): boolean; - - /** - * 设置宽度 - */ - setWidth(w: number): void; - - /** - * 设置高度 - */ - setHeight(h: number): void; - - /** - * 设置可用 - */ - _setEnable(enable: boolean): void; - - /** - * 设置合法 - */ - _setValid(valid: boolean): void; - - /** - * 设置可见 - */ - _setVisible(visible: boolean): void; - - /** - * 设置是否可用 - */ - setEnable(enable: boolean): void; - - /** - * 设置是否可见 - */ - setVisible(visible: boolean): void; - - /** - * 设置是否合法 - */ - setValid(valid: boolean): void; - - /** - * 设置反馈效果 - * @param args arguments参数 - */ - doBehavior(...args: any[]): void; - - /** - * 获取宽度 - */ - getWidth(): number; - - /** - * 获取高度 - */ - getHeight(): number; - - /** - * 是否合法 - */ - isValid(): boolean; - - /** - * 新增子元素 - */ - addWidget(_name: any, _widget: _Widget): _Widget; - - /** - * 根据wigetname获取子元素实例 - */ - getWidgetByName(_name: string): _Widget | undefined; - - /** - * 移除子元素 - * @param nameOrWidget widgetName或widget实例 - */ - removeWidget(nameOrWidget: string | _Widget): void; - - /** - * 是否有某个子元素 - */ - hasWidget(name: string): boolean; - - /** - * 获取widgetName - */ - getName(): string; - - /** - * 设置tag - * @param tag html tag - */ - setTag(tag: string): void; - - /** - * 获取tag - */ - getTag(): string; - - /** - * 设置属性 - * @param key 键 - * @param value 值 - */ - attr(key: string | { [key: string]: any }, value?: any): any; - - /** - * 获取text - */ - getText(): string; - - /** - * 设置text - */ - setText(text: string): void; - - /** - * 获取值 - */ - getValue(): any; - - /** - * 设置值 - */ - setValue(...args: any[]): void; - - /** - * 获取是否enable - */ - isEnabled(): boolean; - - /** - * 是否可见 - */ - isVisible(): boolean; - - /** - * disable元素 - */ - disable(): void; - - /** - * enable元素 - */ - enable(): void; - - /** - * 是widget合法 - */ - valid(): void; - - /** - * 使元素不合法 - */ - invalid(): void; - - /** - * 使不可见 - */ - invisible(..._args: any[]): void; - - /** - * 可见 - */ - visible(..._args: any[]): void; - - /** - * 清除子元素 - */ - __d(): void; - - /** - * 取消挂载 - */ - _unMount(): void; - - /** - * hang元素 - */ - isolate(): void; - - /** - * 请除元素 - */ - empty(): void; - - /** - * 刷新控件 - */ - reset(): void; - - /** - * 内部destory方法 - */ - _destroy(): void; - - /** - * destory元素 - */ - destroy(): void; -} - interface RenderEngine { // TODO: 完成jquery文件夹后把这块改了 /** @@ -406,7 +15,6 @@ interface RenderEngine { } export declare class Widget extends OB { - // /** * 注册渲染引擎 * @param engine 引擎 @@ -441,7 +49,7 @@ export declare class Widget extends OB { /** * 父节点 */ - _parent: _Widget | null; + _parent: Widget | null; // TODO: 完成jquery文件夹后把这块改了 /** * 真实dom的类jQuery对象 @@ -458,7 +66,7 @@ export declare class Widget extends OB { * 子元素 */ _children: { - [key: string]: _Widget; + [key: string]: Widget; }; /** @@ -666,19 +274,19 @@ export declare class Widget extends OB { /** * 新增子元素 */ - addWidget(widget: _Widget): _Widget; - addWidget(_name: any, _widget: _Widget): _Widget; + addWidget(widget: Widget): Widget; + addWidget(_name: any, _widget: Widget): Widget; /** * 根据wigetname获取子元素实例 */ - getWidgetByName(_name: string): _Widget | undefined; + getWidgetByName(_name: string): Widget | undefined; /** * 移除子元素 * @param nameOrWidget widgetName或widget实例 */ - removeWidget(nameOrWidget: string | _Widget): void; + removeWidget(nameOrWidget: string | Widget): void; /** * 是否有某个子元素 From c6b5a8376beabae59b2e16937697604410d1b893 Mon Sep 17 00:00:00 2001 From: data Date: Mon, 5 Dec 2022 12:17:56 +0800 Subject: [PATCH 31/90] auto upgrade version to 2.0.20221205121730 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cd175efdf..0e5717b27 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221202174010", + "version": "2.0.20221205121730", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From ff6fe859b479696ce9f2eb1d92534652337dac65 Mon Sep 17 00:00:00 2001 From: Treecat Date: Mon, 5 Dec 2022 14:41:33 +0800 Subject: [PATCH 32/90] =?UTF-8?q?REPORT-85956=20fix:=E8=AE=BE=E7=BD=AEtext?= =?UTF-8?q?Width=E5=B1=9E=E6=80=A7=E6=97=B6=E5=A6=82=E6=9E=9C=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E8=B6=85=E8=BF=87=E6=8C=89=E9=92=AE=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E4=BC=9A=E6=BA=A2=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/js/base/button/demo.button.js | 5 +++++ src/base/single/button/buttons/button.js | 18 +++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/demo/js/base/button/demo.button.js b/demo/js/base/button/demo.button.js index 981683e84..2514b949e 100644 --- a/demo/js/base/button/demo.button.js +++ b/demo/js/base/button/demo.button.js @@ -385,6 +385,11 @@ Demo.Button = BI.inherit(BI.Widget, { type: "bi.button", text: "小于最小宽度的按钮", width: 50, + }, { + type: "bi.button", + text: "一个文字超级超级长的 button, 他比按钮宽度还长。", + textWidth: 500, + width: 100, }]; return { diff --git a/src/base/single/button/buttons/button.js b/src/base/single/button/buttons/button.js index a06f23191..bc1468450 100644 --- a/src/base/single/button/buttons/button.js +++ b/src/base/single/button/buttons/button.js @@ -81,7 +81,7 @@ }, hgap: o.hgap, vgap: o.vgap, - items: self.generateItems() + items: self.generateItems(), }); // 如果 options 对应的属性为 true 则给元素添加 class @@ -102,7 +102,7 @@ // 由于button默认情况下有个边框,所以要主动算行高 var lineHeight, textHeight = o.textHeight; - var hasBorder = false + var hasBorder = false; if (BI.isNumber(o.height)) { if (!isVertical(o.iconPosition)) { if (!(o.clear && o.block && o.light)) { @@ -121,12 +121,12 @@ var iconInvisible = !(o.loading || o.iconCls || o.icon || defaultRenderIcon); - var textWidth = o.textWidth; - if (BI.isNull(o.textWidth)) { - textWidth = (o.minWidth > 0 && o.width < o.minWidth) ? o.minWidth : o.width; - textWidth -= (o.hgap * 2 + o.iconGap) - textWidth -= iconInvisible || isVertical(o.iconPosition) ? 0 : this._const.iconWidth - } + var maxTextWidth = Math.max(o.minWidth, o.width); + maxTextWidth -= (o.hgap * 2 + o.iconGap); + // 减去图标水平占位宽度 + maxTextWidth -= iconInvisible || isVertical(o.iconPosition) ? 0 : this._const.iconWidth; + var textWidth = BI.isNull(o.textWidth) ? maxTextWidth : Math.min(o.textWidth, maxTextWidth); + this.text = BI.createWidget({ type: "bi.label", text: o.text, @@ -140,7 +140,7 @@ }); if (iconInvisible) { - return [this.text] + return [this.text]; } this._iconRendered = true; From 7e7587689110e0942ae8d84c9b00b187c383cc1e Mon Sep 17 00:00:00 2001 From: data Date: Mon, 5 Dec 2022 15:15:41 +0800 Subject: [PATCH 33/90] auto upgrade version to 2.0.20221205151529 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0e5717b27..a72f5374c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221205121730", + "version": "2.0.20221205151529", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 241893125567067dbb492a823bb8354cdc6e8a1a Mon Sep 17 00:00:00 2001 From: data Date: Tue, 6 Dec 2022 10:47:09 +0800 Subject: [PATCH 34/90] auto upgrade version to 2.0.20221206104638 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a72f5374c..9d867dc31 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221205151529", + "version": "2.0.20221206104638", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From d14d460d4ccf2f3338f03cd2e83f5b82fc054de1 Mon Sep 17 00:00:00 2001 From: zsmj Date: Thu, 8 Dec 2022 09:46:16 +0800 Subject: [PATCH 35/90] =?UTF-8?q?KERNEL-13782=20feat:=20editor=E6=94=AF?= =?UTF-8?q?=E6=8C=81autoTrim=20props=E6=8E=A7=E5=88=B6=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E8=87=AA=E5=8A=A8trim?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/single/editor/editor.js | 63 ++++++++++++++------------ src/case/editor/editor.clear.js | 6 ++- src/case/editor/editor.defaulttext.js | 1 + src/case/editor/editor.shelter.js | 3 +- src/case/editor/editor.sign.js | 3 +- src/case/editor/editor.state.js | 3 +- src/case/editor/editor.state.simple.js | 19 ++++---- src/widget/editor/editor.search.js | 3 +- src/widget/editor/editor.text.js | 3 +- 9 files changed, 61 insertions(+), 43 deletions(-) diff --git a/src/base/single/editor/editor.js b/src/base/single/editor/editor.js index ac9e779e9..c0a77c9f6 100644 --- a/src/base/single/editor/editor.js +++ b/src/base/single/editor/editor.js @@ -23,6 +23,7 @@ BI.Editor = BI.inherit(BI.Single, { allowBlank: false, watermark: "", errorText: "", + autoTrim: true, }); }, @@ -49,25 +50,29 @@ BI.Editor = BI.inherit(BI.Single, { margin: "0", }); - var items = [{ - el: { - type: "bi.absolute", - ref: function (_ref) { - self.contentWrapper = _ref; + var items = [ + { + el: { + type: "bi.absolute", + ref: function (_ref) { + self.contentWrapper = _ref; + }, + items: [ + { + el: this.editor, + left: 0, + right: 0, + top: 0, + bottom: 0, + } + ], }, - items: [{ - el: this.editor, - left: 0, - right: 0, - top: 0, - bottom: 0, - }], - }, - left: o.hgap + o.lgap, - right: o.hgap + o.rgap, - top: o.vgap + o.tgap, - bottom: o.vgap + o.bgap, - }]; + left: o.hgap + o.lgap, + right: o.hgap + o.rgap, + top: o.vgap + o.tgap, + bottom: o.vgap + o.bgap, + } + ]; BI.createWidget({ type: "bi.absolute", @@ -248,13 +253,15 @@ BI.Editor = BI.inherit(BI.Single, { BI.createWidget({ type: "bi.absolute", element: this.contentWrapper, - items: [{ - el: this.watermark, - left: 0, - right: 0, - top: 0, - bottom: 0, - }], + items: [ + { + el: this.watermark, + left: 0, + right: 0, + top: 0, + bottom: 0, + } + ], }); } this.watermark.setText(v); @@ -265,7 +272,7 @@ BI.Editor = BI.inherit(BI.Single, { var o = this.options; var errorText = o.errorText; if (BI.isFunction(errorText)) { - errorText = errorText(BI.trim(this.editor.getValue())); + errorText = errorText(o.autoTrim ? BI.trim(this.editor.getValue()) : this.editor.getValue()); } if (!this.disabledError && BI.isKey(errorText)) { BI.Bubbles[b ? "show" : "hide"](this.getName(), errorText, this, { @@ -330,10 +337,10 @@ BI.Editor = BI.inherit(BI.Single, { getValue: function () { if (!this.isValid()) { - return BI.trim(this.editor.getLastValidValue()); + return this.options.autoTrim ? BI.trim(this.editor.getLastValidValue()) : this.editor.getLastValidValue(); } - return BI.trim(this.editor.getValue()); + return this.options.autoTrim ? BI.trim(this.editor.getValue()) : this.editor.getValue(); }, isEditing: function () { diff --git a/src/case/editor/editor.clear.js b/src/case/editor/editor.clear.js index 6fd199a43..e18ab9599 100644 --- a/src/case/editor/editor.clear.js +++ b/src/case/editor/editor.clear.js @@ -31,7 +31,8 @@ BI.ClearEditor = BI.inherit(BI.Widget, { errorText: o.errorText, validationChecker: o.validationChecker, quitChecker: o.quitChecker, - value: o.value + value: o.value, + autoTrim: o.autoTrim, }); this.clear = BI.createWidget({ type: "bi.icon_button", @@ -54,7 +55,8 @@ BI.ClearEditor = BI.inherit(BI.Widget, { { el: this.clear, width: 24 - }] + } + ] }); this.editor.on(BI.Controller.EVENT_CHANGE, function () { self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); diff --git a/src/case/editor/editor.defaulttext.js b/src/case/editor/editor.defaulttext.js index 4cfaf59a5..fe88d27bb 100644 --- a/src/case/editor/editor.defaulttext.js +++ b/src/case/editor/editor.defaulttext.js @@ -45,6 +45,7 @@ BI.DefaultTextEditor = BI.inherit(BI.Widget, { watermark: o.watermark, errorText: o.errorText, invisible: true, + autoTrim: o.autoTrim, }); var showText = BI.isFunction(o.text) ? o.text() : o.text; diff --git a/src/case/editor/editor.shelter.js b/src/case/editor/editor.shelter.js index 31883614c..4cb8e4d75 100644 --- a/src/case/editor/editor.shelter.js +++ b/src/case/editor/editor.shelter.js @@ -46,7 +46,8 @@ BI.ShelterEditor = BI.inherit(BI.Widget, { quitChecker: o.quitChecker, allowBlank: o.allowBlank, watermark: o.watermark, - errorText: o.errorText + errorText: o.errorText, + autoTrim: o.autoTrim, }); this.text = BI.createWidget({ type: "bi.text_button", diff --git a/src/case/editor/editor.sign.js b/src/case/editor/editor.sign.js index 7a69a5005..0fb65fa0d 100644 --- a/src/case/editor/editor.sign.js +++ b/src/case/editor/editor.sign.js @@ -46,7 +46,8 @@ BI.SignEditor = BI.inherit(BI.Widget, { quitChecker: o.quitChecker, allowBlank: o.allowBlank, watermark: o.watermark, - errorText: o.errorText + errorText: o.errorText, + autoTrim: o.autoTrim, }); this.text = BI.createWidget({ type: "bi.text_button", diff --git a/src/case/editor/editor.state.js b/src/case/editor/editor.state.js index 8ed915716..9c3f340f9 100644 --- a/src/case/editor/editor.state.js +++ b/src/case/editor/editor.state.js @@ -45,7 +45,8 @@ BI.StateEditor = BI.inherit(BI.Widget, { quitChecker: o.quitChecker, allowBlank: o.allowBlank, watermark: o.watermark, - errorText: o.errorText + errorText: o.errorText, + autoTrim: o.autoTrim, }); this.text = BI.createWidget({ type: "bi.text_button", diff --git a/src/case/editor/editor.state.simple.js b/src/case/editor/editor.state.simple.js index 4d17ab30e..96be87aa1 100644 --- a/src/case/editor/editor.state.simple.js +++ b/src/case/editor/editor.state.simple.js @@ -45,7 +45,8 @@ BI.SimpleStateEditor = BI.inherit(BI.Widget, { quitChecker: o.quitChecker, allowBlank: o.allowBlank, watermark: o.watermark, - errorText: o.errorText + errorText: o.errorText, + autoTrim: o.autoTrim, }); this.text = BI.createWidget({ type: "bi.text_button", @@ -68,13 +69,15 @@ BI.SimpleStateEditor = BI.inherit(BI.Widget, { BI.createWidget({ type: "bi.absolute", element: this, - items: [{ - el: this.text, - left: 0, - right: 0, - top: 0, - bottom: 0 - }] + items: [ + { + el: this.text, + left: 0, + right: 0, + top: 0, + bottom: 0 + } + ] }); this.editor.on(BI.Controller.EVENT_CHANGE, function () { self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); diff --git a/src/widget/editor/editor.search.js b/src/widget/editor/editor.search.js index 29e4983eb..bd40ae5a9 100644 --- a/src/widget/editor/editor.search.js +++ b/src/widget/editor/editor.search.js @@ -27,7 +27,8 @@ BI.SearchEditor = BI.inherit(BI.Widget, { errorText: o.errorText, validationChecker: o.validationChecker, quitChecker: o.quitChecker, - value: o.value + value: o.value, + autoTrim: o.autoTrim, }); this.clear = BI.createWidget({ type: "bi.icon_button", diff --git a/src/widget/editor/editor.text.js b/src/widget/editor/editor.text.js index 19f51fd73..022b5f2ad 100644 --- a/src/widget/editor/editor.text.js +++ b/src/widget/editor/editor.text.js @@ -47,7 +47,8 @@ BI.TextEditor = BI.inherit(BI.Widget, { watermark: o.watermark, errorText: o.errorText, inputType: o.inputType, - autocomplete: o.autocomplete + autocomplete: o.autocomplete, + autoTrim: o.autoTrim, }); this.editor.on(BI.Controller.EVENT_CHANGE, function () { self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); From dff599e8c1e29ac36423dc43a3ccdefd961776d6 Mon Sep 17 00:00:00 2001 From: data Date: Thu, 8 Dec 2022 12:17:02 +0800 Subject: [PATCH 36/90] auto upgrade version to 2.0.20221208121622 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9d867dc31..5d047f85b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221206104638", + "version": "2.0.20221208121622", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From e591db90646452ec9e2e3ef9620ce8212a053b32 Mon Sep 17 00:00:00 2001 From: zsmj Date: Thu, 8 Dec 2022 16:18:26 +0800 Subject: [PATCH 37/90] =?UTF-8?q?KERNEL-11877=20BI-118434=20=E7=AD=89?= =?UTF-8?q?=E6=AF=94=E4=B8=8Bscale=E7=BC=A9=E6=94=BE=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E5=81=8F=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/combination/bubble.js | 21 +++--- src/base/combination/combo.js | 39 +++++++---- src/core/platform/web/dom.js | 120 +++++++++++++++++++++++---------- 3 files changed, 123 insertions(+), 57 deletions(-) diff --git a/src/base/combination/bubble.js b/src/base/combination/bubble.js index 1af43b79c..7b5f57736 100644 --- a/src/base/combination/bubble.js +++ b/src/base/combination/bubble.js @@ -106,7 +106,8 @@ _initPullDownAction: function () { var self = this, o = this.options; var evs = (this.options.trigger || "").split(","); - function st (e) { + + function st(e) { if (o.stopEvent) { e.stopEvent(); } @@ -268,7 +269,7 @@ BI.createWidget({ type: "bi.vertical", scrolly: false, - element: this.options.container || this, + element: BI.isFunction(this.options.container) ? this.options.container() : (this.options.container || this), items: [ { el: this.popupView } ], @@ -344,14 +345,16 @@ if (this.popper) { this.popper.destroy(); } - var modifiers = [{ - name: "offset", - options: { - offset: function () { - return [o.adjustXOffset, (o.showArrow ? 12 : 0) + (o.adjustYOffset + o.adjustLength)]; + var modifiers = [ + { + name: "offset", + options: { + offset: function () { + return [o.adjustXOffset, (o.showArrow ? 12 : 0) + (o.adjustYOffset + o.adjustLength)]; + }, }, - }, - }]; + } + ]; if (this.options.showArrow) { modifiers.push({ name: "arrow", diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index 7abbf77eb..02f838877 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -38,6 +38,7 @@ adjustLength: 0, // 调整的距离 adjustXOffset: 0, adjustYOffset: 0, + supportCSSTransform: false, hideChecker: BI.emptyFn, offsetStyle: "left", // left,right,center el: {}, @@ -218,46 +219,47 @@ }, }, } : this.combo; + var positionRelativeElement = o.supportCSSTransform ? BI.DOM.getPositionRelativeContainingBlock(BI.Widget._renderEngine.createElement(BI.isFunction(o.container) ? o.container() : o.container)[0]) : null; switch (o.direction) { case "bottom": case "bottom,right": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["bottom", "top", "right", "left"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["bottom", "top", "right", "left"], o.offsetStyle, positionRelativeElement); break; case "top": case "top,right": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["top", "bottom", "right", "left"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["top", "bottom", "right", "left"], o.offsetStyle, positionRelativeElement); break; case "left": case "left,bottom": - p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["left", "right", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["left", "right", "bottom", "top"], o.offsetStyle, positionRelativeElement); break; case "right": case "right,bottom": - p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "bottom", "top"], o.offsetStyle, positionRelativeElement); break; case "top,left": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["top", "bottom", "left", "right"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["top", "bottom", "left", "right"], o.offsetStyle, positionRelativeElement); break; case "bottom,left": - p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["bottom", "top", "left", "right"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, o.adjustXOffset, (o.adjustYOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.isNeedAdjustHeight, ["bottom", "top", "left", "right"], o.offsetStyle, positionRelativeElement); break; case "left,top": - p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["left", "right", "top", "bottom"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["left", "right", "top", "bottom"], o.offsetStyle, positionRelativeElement); break; case "right,top": - p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "top", "bottom"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "top", "bottom"], o.offsetStyle, positionRelativeElement); break; case "right,innerRight": - p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "innerRight", "innerLeft", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "innerRight", "innerLeft", "bottom", "top"], o.offsetStyle, positionRelativeElement); break; case "right,innerLeft": - p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "innerLeft", "innerRight", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["right", "left", "innerLeft", "innerRight", "bottom", "top"], o.offsetStyle, positionRelativeElement); break; case "innerRight": - p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["innerRight", "innerLeft", "right", "left", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["innerRight", "innerLeft", "right", "left", "bottom", "top"], o.offsetStyle, positionRelativeElement); break; case "innerLeft": - p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["innerLeft", "innerRight", "left", "right", "bottom", "top"], o.offsetStyle); + p = BI.DOM.getComboPosition(combo, this.popupView, (o.adjustXOffset + o.adjustLength) + (o.showArrow ? this._const.TRIANGLE_LENGTH : 0), o.adjustYOffset, o.isNeedAdjustHeight, ["innerLeft", "innerRight", "left", "right", "bottom", "top"], o.offsetStyle, positionRelativeElement); break; case "top,custom": case "custom,top": @@ -290,6 +292,7 @@ if ("adaptHeight" in p) { this.resetListHeight(p.adaptHeight); } + var width = this.combo.element.outerWidth(); var height = this.combo.element.outerHeight(); this.popupView.setDirection && this.popupView.setDirection(p.dir, { @@ -300,6 +303,18 @@ adjustYOffset: o.adjustYOffset, offset: this.combo.element.offset(), }); + + if (o.supportCSSTransform) { + + var positonedRect = positionRelativeElement.getBoundingClientRect(); + + var scaleX = positonedRect.width / positionRelativeElement.offsetWidth; + var scaleY = positonedRect.height / positionRelativeElement.offsetHeight; + + p.top && (p.top = p.top / scaleY); + p.left && (p.left = p.left / scaleX); + } + if ("left" in p) { this.popupView.element.css({ left: p.left, diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index 05757959d..bab3d7042 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -56,7 +56,7 @@ preloadImages: function (srcArray, onload) { var count = 0, images = []; - function complete () { + function complete() { count++; if (count >= srcArray.length) { onload(); @@ -151,9 +151,15 @@ BI.extend(BI.DOM, { - getLeftPosition: function (combo, popup, extraWidth) { + getLeftPosition: function (combo, popup, extraWidth, container) { + var el = combo.element; + var popupEl = popup.element; + var elRect = el[0].getBoundingClientRect(); + var popupElRect = popupEl[0].getBoundingClientRect(); + var containerRect = container ? container.getBoundingClientRect() : { left: 0 }; + return { - left: combo.element.offset().left - popup.element.outerWidth() - (extraWidth || 0) + left: elRect.left - containerRect.left - popupElRect.width - (extraWidth || 0) }; }, @@ -163,10 +169,13 @@ }; }, - getRightPosition: function (combo, popup, extraWidth) { + getRightPosition: function (combo, popup, extraWidth, container) { var el = combo.element; + var elRect = el[0].getBoundingClientRect(); + var containerRect = container ? container.getBoundingClientRect() : { left: 0 }; + return { - left: el.offset().left + el.outerWidth() + (extraWidth || 0) + left: elRect.left + elRect.width - containerRect.left + (extraWidth || 0) }; }, @@ -177,16 +186,25 @@ }; }, - getTopPosition: function (combo, popup, extraHeight) { + getTopPosition: function (combo, popup, extraHeight, container) { + var el = combo.element; + var popupEl = popup.element; + var elRect = el[0].getBoundingClientRect(); + var popupElRect = popupEl[0].getBoundingClientRect(); + var containerRect = container ? container.getBoundingClientRect() : { top: 0 }; + return { - top: combo.element.offset().top - popup.element.outerHeight() - (extraHeight || 0) + top: elRect.top - containerRect.top - popupElRect.height - (extraHeight || 0) }; }, - getBottomPosition: function (combo, popup, extraHeight) { + getBottomPosition: function (combo, popup, extraHeight, container) { var el = combo.element; + var elRect = el[0].getBoundingClientRect(); + var containerRect = container ? container.getBoundingClientRect() : { top: 0 }; + return { - top: el.offset().top + el.outerHeight() + (extraHeight || 0) + top: elRect.top - containerRect.top + elRect.height + (extraHeight || 0) }; }, @@ -230,18 +248,19 @@ return windowBounds.height - combo.element.offset().top - combo.element.bounds().height >= combo.element.offset().top; }, - _getLeftAlignPosition: function (combo, popup, extraWidth) { + _getLeftAlignPosition: function (combo, popup, extraWidth, container) { var viewBounds = popup.element.bounds(), windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); - var left = combo.element.offset().left + extraWidth; + var left = combo.element.offset().left - (container ? container.getBoundingClientRect().left : 0) + extraWidth; + if (left + viewBounds.width > windowBounds.width) { left = windowBounds.width - viewBounds.width; } return left; }, - getLeftAlignPosition: function (combo, popup, extraWidth) { - var left = this._getLeftAlignPosition(combo, popup, extraWidth); + getLeftAlignPosition: function (combo, popup, extraWidth, container) { + var left = this._getLeftAlignPosition(combo, popup, extraWidth, container); var dir = ""; // 如果放不下,优先使用RightAlign, 如果RightAlign也放不下, 再使用left=0 if (left < 0) { @@ -297,13 +316,14 @@ }; }, - getTopAlignPosition: function (combo, popup, extraHeight, needAdaptHeight) { + getTopAlignPosition: function (combo, popup, extraHeight, needAdaptHeight, container) { var comboOffset = combo.element.offset(); var comboBounds = combo.element.bounds(), popupBounds = popup.element.bounds(), - windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); + windowBounds = BI.Widget._renderEngine.createElement("body").bounds(), + containerBounds = container ? container.getBoundingClientRect() : { top: 0 }; var top, adaptHeight, dir; if (BI.DOM.isBottomSpaceEnough(combo, popup, -1 * comboBounds.height + extraHeight)) { - top = comboOffset.top + extraHeight; + top = comboOffset.top - containerBounds.top + extraHeight; } else if (needAdaptHeight) { top = comboOffset.top + extraHeight; adaptHeight = windowBounds.height - top; @@ -353,13 +373,15 @@ }; }, - getBottomAlignPosition: function (combo, popup, extraHeight, needAdaptHeight) { + getBottomAlignPosition: function (combo, popup, extraHeight, needAdaptHeight, container) { var comboOffset = combo.element.offset(); - var comboBounds = combo.element.bounds(), popupBounds = popup.element.bounds(), - windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); + var comboBounds = combo.element[0].getBoundingClientRect(), + popupBounds = popup.element[0].getBoundingClientRect(), + windowBounds = BI.Widget._renderEngine.createElement("body").bounds(), + containerBounds = container ? container.getBoundingClientRect() : { top: 0 }; var top, adaptHeight, dir; if (BI.DOM.isTopSpaceEnough(combo, popup, -1 * comboBounds.height + extraHeight)) { - top = comboOffset.top + comboBounds.height - popupBounds.height - extraHeight; + top = comboOffset.top + comboBounds.height - containerBounds.top - popupBounds.height; } else if (needAdaptHeight) { top = 0; adaptHeight = comboOffset.top + comboBounds.height - extraHeight; @@ -446,7 +468,7 @@ }; }, - getComboPositionByDirections: function (combo, popup, extraWidth, extraHeight, needAdaptHeight, directions) { + getComboPositionByDirections: function (combo, popup, extraWidth, extraHeight, needAdaptHeight, directions, container) { extraWidth || (extraWidth = 0); extraHeight || (extraHeight = 0); var i, direct; @@ -483,11 +505,11 @@ if (!isNeedAdaptHeight) { var tW = tbFirst ? extraHeight : extraWidth, tH = tbFirst ? 0 : extraHeight; if (BI.DOM.isLeftSpaceEnough(combo, popup, tW)) { - left = BI.DOM.getLeftPosition(combo, popup, tW).left; + left = BI.DOM.getLeftPosition(combo, popup, tW, container).left; if (topBottom[0] === "bottom") { - pos = BI.DOM.getTopAlignPosition(combo, popup, tH, needAdaptHeight); + pos = BI.DOM.getTopAlignPosition(combo, popup, tH, needAdaptHeight, container); } else { - pos = BI.DOM.getBottomAlignPosition(combo, popup, tH, needAdaptHeight); + pos = BI.DOM.getBottomAlignPosition(combo, popup, tH, needAdaptHeight, container); } pos.dir = "left," + pos.dir; if (tbFirst) { @@ -503,11 +525,11 @@ if (!isNeedAdaptHeight) { var tW = tbFirst ? extraHeight : extraWidth, tH = tbFirst ? extraWidth : extraHeight; if (BI.DOM.isRightSpaceEnough(combo, popup, tW)) { - left = BI.DOM.getRightPosition(combo, popup, tW).left; + left = BI.DOM.getRightPosition(combo, popup, tW, container).left; if (topBottom[0] === "bottom") { - pos = BI.DOM.getTopAlignPosition(combo, popup, tH, needAdaptHeight); + pos = BI.DOM.getTopAlignPosition(combo, popup, tH, needAdaptHeight, container); } else { - pos = BI.DOM.getBottomAlignPosition(combo, popup, tH, needAdaptHeight); + pos = BI.DOM.getBottomAlignPosition(combo, popup, tH, needAdaptHeight, container); } pos.dir = "right," + pos.dir; if (tbFirst) { @@ -522,11 +544,11 @@ case "top": var tW = lrFirst ? extraHeight : extraWidth, tH = lrFirst ? extraWidth : extraHeight; if (BI.DOM.isTopSpaceEnough(combo, popup, tH)) { - top = BI.DOM.getTopPosition(combo, popup, tH).top; + top = BI.DOM.getTopPosition(combo, popup, tH, container).top; if (leftRight[0] === "right") { - pos = BI.DOM.getLeftAlignPosition(combo, popup, tW, needAdaptHeight); + pos = BI.DOM.getLeftAlignPosition(combo, popup, tW, container); } else { - pos = BI.DOM.getRightAlignPosition(combo, popup, tW); + pos = BI.DOM.getRightAlignPosition(combo, popup, tW, container); } pos.dir = "top," + pos.dir; if (lrFirst) { @@ -543,11 +565,11 @@ case "bottom": var tW = lrFirst ? extraHeight : extraWidth, tH = lrFirst ? extraWidth : extraHeight; if (BI.DOM.isBottomSpaceEnough(combo, popup, tH)) { - top = BI.DOM.getBottomPosition(combo, popup, tH).top; + top = BI.DOM.getBottomPosition(combo, popup, tH, container).top; if (leftRight[0] === "right") { - pos = BI.DOM.getLeftAlignPosition(combo, popup, tW, needAdaptHeight); + pos = BI.DOM.getLeftAlignPosition(combo, popup, tW, container); } else { - pos = BI.DOM.getRightAlignPosition(combo, popup, tW); + pos = BI.DOM.getRightAlignPosition(combo, popup, tW, container); } pos.dir = "bottom," + pos.dir; if (lrFirst) { @@ -648,13 +670,13 @@ }, - getComboPosition: function (combo, popup, extraWidth, extraHeight, needAdaptHeight, directions, offsetStyle) { + getComboPosition: function (combo, popup, extraWidth, extraHeight, needAdaptHeight, directions, offsetStyle, container) { extraWidth || (extraWidth = 0); extraHeight || (extraHeight = 0); var bodyHeight = BI.Widget._renderEngine.createElement("body").bounds().height - extraHeight; var maxHeight = Math.min(popup.attr("maxHeight") || bodyHeight, bodyHeight); popup.resetHeight && popup.resetHeight(maxHeight); - var position = BI.DOM.getComboPositionByDirections(combo, popup, extraWidth, extraHeight, needAdaptHeight, directions || ["bottom", "top", "right", "left"]); + var position = BI.DOM.getComboPositionByDirections(combo, popup, extraWidth, extraHeight, needAdaptHeight, directions || ["bottom", "top", "right", "left"], container); switch (offsetStyle) { case "center": if (position.change) { @@ -679,6 +701,32 @@ popup.resetHeight && popup.resetHeight(Math.min(bodyHeight - position.top, maxHeight)); } return position; - } + }, + + /** + * 获取position:fixed相对定位的元素 + */ + getPositionRelativeContainingBlock: function (element) { + if (['html', 'body', '#document'].indexOf((element.nodeName || '').toLowerCase()) >= 0) { + // $FlowFixMe[incompatible-return]: assume body is always available + return element.ownerDocument.body; + } + + function isExcept(node) { + var _computedStyle = getComputedStyle(node); + var transform = _computedStyle.transform; + var perspective = _computedStyle.perspective; + var filter = _computedStyle.filter; + var willChange = _computedStyle["will-change"]; + + return [transform, perspective, filter].some(value => value !== 'none') || (willChange === "transform"); + } + + if (isExcept(element)) { + return element; + } + + return BI.DOM.getPositionRelativeContainingBlock(element.parentNode); + }, }); })(); From d87670aba03018c08694af9d96ab3f8fb814fffe Mon Sep 17 00:00:00 2001 From: zsmj Date: Thu, 8 Dec 2022 16:19:37 +0800 Subject: [PATCH 38/90] demo --- demo/js/west.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/demo/js/west.js b/demo/js/west.js index d4cc9d59b..d2cd70109 100644 --- a/demo/js/west.js +++ b/demo/js/west.js @@ -9,6 +9,10 @@ Demo.West = BI.inherit(BI.Widget, { render: function () { var self = this; + + + var selectedId = BI.Router.$router.currentRoute.params?.componentId; + return { type: "bi.vtape", items: [{ @@ -60,7 +64,7 @@ Demo.West = BI.inherit(BI.Widget, { self.fireEvent(Demo.West.EVENT_VALUE_CHANGE, v); } }], - value: Demo.showIndex, + value: selectedId || Demo.showIndex, items: Demo.CONFIG, ref: function (ref) { self.tree = ref; @@ -70,4 +74,4 @@ Demo.West = BI.inherit(BI.Widget, { } }); Demo.West.EVENT_VALUE_CHANGE = "EVENT_VALUE_CHANGE"; -BI.shortcut("demo.west", Demo.West); \ No newline at end of file +BI.shortcut("demo.west", Demo.West); From 33ddf6e82e672a604deb90cef732d6ccd76f445f Mon Sep 17 00:00:00 2001 From: zsmj Date: Thu, 8 Dec 2022 18:05:26 +0800 Subject: [PATCH 39/90] =?UTF-8?q?KERNEL-11877=20feat:=20container=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=87=BD=E6=95=B0,=20=E4=BF=AE=E5=A4=8D=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/combination/combo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index 02f838877..114e4a52e 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -219,7 +219,7 @@ }, }, } : this.combo; - var positionRelativeElement = o.supportCSSTransform ? BI.DOM.getPositionRelativeContainingBlock(BI.Widget._renderEngine.createElement(BI.isFunction(o.container) ? o.container() : o.container)[0]) : null; + var positionRelativeElement = o.supportCSSTransform ? BI.DOM.getPositionRelativeContainingBlock(BI.isNull(o.container) ? this.element[0] : BI.Widget._renderEngine.createElement(BI.isFunction(o.container) ? o.container() : o.container)[0]) : null; switch (o.direction) { case "bottom": case "bottom,right": From c18961aab1a8acf98f18b440b5135c9f1fbae9ea Mon Sep 17 00:00:00 2001 From: data Date: Thu, 8 Dec 2022 18:18:19 +0800 Subject: [PATCH 40/90] auto upgrade version to 2.0.20221208181750 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5d047f85b..33de5e4e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221208121622", + "version": "2.0.20221208181750", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 5e5be1d298c1f6f81c2ecaceb65dba5234919f4d Mon Sep 17 00:00:00 2001 From: data Date: Thu, 8 Dec 2022 18:33:51 +0800 Subject: [PATCH 41/90] auto upgrade version to 2.0.20221208183344 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 33de5e4e4..673c6d446 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221208181750", + "version": "2.0.20221208183344", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 2f7e289913c70119fe264630da23e203ef943c77 Mon Sep 17 00:00:00 2001 From: data Date: Thu, 8 Dec 2022 18:54:57 +0800 Subject: [PATCH 42/90] auto upgrade version to 2.0.20221208185443 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 673c6d446..7ee88a158 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221208183344", + "version": "2.0.20221208185443", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 7bffccdd6f6fcbc05e6c75bfdc4ea91308c586d4 Mon Sep 17 00:00:00 2001 From: "Xavier.Meng" Date: Fri, 9 Dec 2022 10:52:51 +0800 Subject: [PATCH 43/90] =?UTF-8?q?BI-118474=20style:=20=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/font/iconfont.eot | Bin 263728 -> 266500 bytes dist/font/iconfont.svg | 24 ++++++++++++++++++++++++ dist/font/iconfont.ttf | Bin 263560 -> 266332 bytes dist/font/iconfont.woff | Bin 127920 -> 129444 bytes dist/font/iconfont.woff2 | Bin 97136 -> 98252 bytes 5 files changed, 24 insertions(+) diff --git a/dist/font/iconfont.eot b/dist/font/iconfont.eot index 525a2255d406aa9450e99439f059df5265884bae..3a2dc86439811fa9ad85b31f0dfd8b3de6924906 100644 GIT binary patch delta 21245 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 delta 18703 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 diff --git a/dist/font/iconfont.svg b/dist/font/iconfont.svg index 03bfcd64d..e45847d23 100644 --- a/dist/font/iconfont.svg +++ b/dist/font/iconfont.svg @@ -14,6 +14,30 @@ /> + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/font/iconfont.ttf b/dist/font/iconfont.ttf index e4c8c2ce8c5030c1e9d5874efba286cfa20c6d3a..11a6aec01970c2ac07a4955d4d86822bf1ec17a8 100644 GIT binary patch delta 21341 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 Yxi~n!{+b8g)*8DOzOA8Ma5?*b0J3F=0ssI2 delta 18762 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 P1CCnBt=*4WuIB#-W^-M_ diff --git a/dist/font/iconfont.woff b/dist/font/iconfont.woff index 13c6cb98e9dc5d6aada12775874a63c84693e040..3a5514a21c6bbe1cd81a08a5a8d5df6a536afbd4 100644 GIT binary patch delta 129017 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 K4~gfeJOBVFE&kmA delta 127419 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 diff --git a/dist/font/iconfont.woff2 b/dist/font/iconfont.woff2 index 2c3383f13cd222dd59b6adcaa6c6d1ef0465de6f..8eea86c8176a0699104cd349cd65f358a259d033 100644 GIT binary patch literal 98252 zcmV(3X9t0gN?UwelSI+QcK$CRiIln_ z0&GWTqfL{_lPegVsW|Nno_v5?`szvMni0zfJt zrE1mcHYemt$|#;{8%(ZrbR?1nJHh8-k~fo$c&$i_Xqh^OWxU{tS2~C`@x(KoNRi5- zVKTyMo=jcSjK#X?+rB+}!C}*oMATfXQ3@EZ=MBleglDdJSE|>#w}u^sxA=U1!`a() z!-(A|Zc(fjVm_`)t(I56< zW&hY$?hxMi-+R>KBpITv=+Y)GF+s-R)&&=J$Vx^cGBT2^BpDanPWZ}+FauzCzHL7Fz{eB+_qY@A!W#vJJmM=~K}E#_?*xx4 zEiEnR1hbOL($rE@lghHR)Q+Xgns#iuW$9K+*QM1uPTOkLR*ivkk{@tjS@j_Oz_ls~ z&gp(NUEO;#z%KRfdTMD4fW;O`tt8q<*JE-_vOmBt@XMm&a=j^b zd?}@<4COTcHM>2{B=3Eg(HOGO)|TzSVgSo%D9|>2fZIjzu0InXluSsG2#KNpIr~2ouFgRF)oJhM= zm)*$CEvt;7R$0nEvAX z{&|Tm5I_Wt!P?scZxA}QiEB!Pf@iTzRUhD8;Gbt4?|t8zgg-!`JI!eaz=2f3vx*RJ z+@DUrc&lMN^PU9u#rkrUQkfHyjPV*UHux{bVYxs2zpB(q^@R}14MlfFwY&F!@3eR3 zm1kPMcdnsjQ<4Jlw`9d}lC^m$OMX3WRzK3O^h>q_WDYG*&<_C2Qd5me*)IAknxj+b za_(XNl2|c-!ry*)%=SOe?|06GgzXNP?P~uYy)IdO-dc8j?(1lPI0^` zWolE@Zay6M?P=z?w-~+0Q#gfqIPYoS9!`5Y?ftS;F^{(tRhd9g@0 zG()tv;c(04@aV%LeKGXeP2Ui*$@%wH?P~$b3jY6Z$hl}_&g5$9-J%Mq&IzeHXzXB+rtRJtN8X9Eq~ek>oHTnWUs~oWGJcgwQmy zH-y*~Kg8~rd$y>yD8K*zI?HxF3YN1zIXzHQr>N4E_J{jpKfloeKmR4ID~&6M9r#j6 zl9xaVq3jJ;JLSXyEc?+RRu$2Jr zDG6z$%%s4TLFWAbKT&CWYTI-Btc_TvfMep=uoK86_Wwm}Sx5hGmu<5QN16E{6aoSA z*s*L&vJ~&Ut^en{=3?{a+x%L@B@Pi1A|fIZan`ebAi&&iCQyoI(q5By!21G+ygK~E zqQg+xmAyLVJix<^5BT2w%I*|W=sAbk=p0|7EugFQgv74gcLHrcjQ98cj=xuq?&^<$u~w9u6)&+;$x@}u zluaLBs3Y=?bK!RSTBvO0#fP6s(;d!3^EWBLlA!x^t50!jZ~gwyOq}4YB$_zSF?Y%$)=j`QBQi+$J6!UC%f9u=IyP%8muW~9=t_}CMEFx zEr(FF3ad=44{8ZU#4^1xLlbi=TL))1`1-&pR**H*@uRe;yKyPw&A>setM#=0Hk5Oj z7Q6cwboI0y$v+nSTp-=kqTcTQDRAi z!$pcB7B7)hnoQYp+OMsM?}U$MaRSzEL6Bi(F6(=^A*N}2{IPK zDOaglt$K}`87KcKDyyhz3ne=GMy3|lc8)IY$PFcEPRvS!nm65YePaB*()}0jT(L~) z{U@FN@joXjg9lP0h#1)Xa0KBJ2qTtAB1wvLS!8k*C{}8PHIz0uDFFcq3I+uY11m2f z!bFG?gCj|b3|VsI;o>V$q(qqtRch2}(4tfA_! zp7y(qwueyDD17+un=BfpU_3(M`(Y(!|NWa|L}J99(F1-#zi+4bV_Rk|BU6_Y^Z!(8OkZwiEQ!LO(PXwrWpafi%xE%OtTwyDsaI>XI^O`POs-I>#5}%0D55i% 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 Hk@y1uOvz^H literal 97136 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%0DGB>1fh+|DB!&ZIG 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 Ov?hPUkZPV_2>D;n99^pb From df446474f2d7a82f99db34e227e0b5bbeaa137aa Mon Sep 17 00:00:00 2001 From: zsmj Date: Fri, 9 Dec 2022 11:25:31 +0800 Subject: [PATCH 44/90] =?UTF-8?q?BI-118434=20=20fix:=20=E4=B8=B4=E6=97=B6?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=B8=80=E4=B8=8BbelowMouse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/combination/combo.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index 114e4a52e..6f2b3a326 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -196,6 +196,7 @@ this.popupView.visible(); var combo = (o.belowMouse && BI.isNotNull(e)) ? { element: { + 0: e.target, offset: function () { return { left: e.pageX, From 526818ef79898e07bc29f7523288ae75b4e0ac35 Mon Sep 17 00:00:00 2001 From: data Date: Fri, 9 Dec 2022 12:04:28 +0800 Subject: [PATCH 45/90] auto upgrade version to 2.0.20221209120344 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7ee88a158..7f7001428 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221208185443", + "version": "2.0.20221209120344", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 6bca7462bdc79bc59bd2530031827e3c1fe367e7 Mon Sep 17 00:00:00 2001 From: data Date: Fri, 9 Dec 2022 14:25:17 +0800 Subject: [PATCH 46/90] auto upgrade version to 2.0.20221209142506 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7f7001428..28ae244a4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221209120344", + "version": "2.0.20221209142506", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 87baab33cfb8d5ab7d237f85d7259e9496079f19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dailer-=E5=88=98=E8=8D=A3=E6=AD=86?= Date: Fri, 9 Dec 2022 15:40:38 +0800 Subject: [PATCH 47/90] =?UTF-8?q?BI-118670=20fix:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BC=A0=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/platform/web/dom.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index bab3d7042..e40f56b6a 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -657,7 +657,7 @@ firstDir = "top"; } if (leftRight[0] === "right") { - pos = BI.DOM.getLeftAlignPosition(combo, popup, extraWidth, needAdaptHeight); + pos = BI.DOM.getLeftAlignPosition(combo, popup, extraWidth); pos.top = top; pos.dir = firstDir + "," + pos.dir; return pos; From 29d08791d57981a11c290687c68dc79f76446dcd Mon Sep 17 00:00:00 2001 From: data Date: Fri, 9 Dec 2022 16:26:42 +0800 Subject: [PATCH 48/90] auto upgrade version to 2.0.20221209162625 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 28ae244a4..4bcb297d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221209142506", + "version": "2.0.20221209162625", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From f2145cbefdb77e61063e518fee6be475c051b985 Mon Sep 17 00:00:00 2001 From: zsmj Date: Sat, 10 Dec 2022 13:53:42 +0800 Subject: [PATCH 49/90] =?UTF-8?q?KERNEL-11877=20feat:=20container=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=87=BD=E6=95=B0,=20=E4=BF=AE=E5=A4=8D=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/case/combo/bubblecombo/combo.bubble.js | 1 + src/core/platform/web/dom.js | 29 +++++++++++----------- src/less/core/utils/motion/zoom.less | 2 +- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/case/combo/bubblecombo/combo.bubble.js b/src/case/combo/bubblecombo/combo.bubble.js index 5f0a4c720..7f2448ac0 100644 --- a/src/case/combo/bubblecombo/combo.bubble.js +++ b/src/case/combo/bubblecombo/combo.bubble.js @@ -53,6 +53,7 @@ BI.BubbleCombo = BI.inherit(BI.Widget, { offsetStyle: o.offsetStyle, showArrow: true, comboClass: o.comboClass, + supportCSSTransform: o.supportCSSTransform, el: o.el, popup: () => BI.extend({ type: "bi.bubble_popup_view", diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index bab3d7042..d45ccc3b2 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -219,9 +219,9 @@ }, isRightSpaceEnough: function (combo, popup, extraWidth) { - var viewBounds = popup.element.bounds(), - windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); - return BI.DOM.getRightPosition(combo, popup, extraWidth).left + viewBounds.width <= windowBounds.width; + var viewBounds = popup.element[0].getBoundingClientRect(), + viewportBounds = document.documentElement.getBoundingClientRect(); + return BI.DOM.getRightPosition(combo, popup, extraWidth).left + viewBounds.width <= viewportBounds.width; }, isInnerRightSpaceEnough: function (combo, popup, extraWidth) { @@ -233,9 +233,9 @@ }, isBottomSpaceEnough: function (combo, popup, extraHeight) { - var viewBounds = popup.element.bounds(), - windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); - return BI.DOM.getBottomPosition(combo, popup, extraHeight).top + viewBounds.height <= windowBounds.height; + var viewBounds = popup.element[0].getBoundingClientRect(), + viewportBounds = document.documentElement.getBoundingClientRect(); + return BI.DOM.getBottomPosition(combo, popup, extraHeight).top + viewBounds.height <= viewportBounds.height; }, isRightSpaceLarger: function (combo) { @@ -318,23 +318,24 @@ getTopAlignPosition: function (combo, popup, extraHeight, needAdaptHeight, container) { var comboOffset = combo.element.offset(); - var comboBounds = combo.element.bounds(), popupBounds = popup.element.bounds(), - windowBounds = BI.Widget._renderEngine.createElement("body").bounds(), + var comboBounds = combo.element[0].getBoundingClientRect(), + popupBounds = popup.element[0].getBoundingClientRect(), + viewportBounds = document.documentElement.getBoundingClientRect(), containerBounds = container ? container.getBoundingClientRect() : { top: 0 }; var top, adaptHeight, dir; if (BI.DOM.isBottomSpaceEnough(combo, popup, -1 * comboBounds.height + extraHeight)) { top = comboOffset.top - containerBounds.top + extraHeight; } else if (needAdaptHeight) { - top = comboOffset.top + extraHeight; - adaptHeight = windowBounds.height - top; + top = comboBounds.top - containerBounds.top + extraHeight; + adaptHeight = viewportBounds.height - top; } else if (BI.DOM.isTopSpaceEnough(combo, popup, -1 * comboBounds.height + extraHeight)) { // 下方空间不足且不允许调整高度的情况下,优先使用上对齐 - top = comboOffset.top + comboBounds.height - popupBounds.height - extraHeight; + top = comboBounds.top + comboBounds.height - popupBounds.height - containerBounds.top - extraHeight; dir = "top"; } else { - top = windowBounds.height - popupBounds.height; + top = viewportBounds.height - popupBounds.height; if (top < extraHeight) { - adaptHeight = windowBounds.height - extraHeight; + adaptHeight = viewportBounds.height - extraHeight; } } if (top < extraHeight) { @@ -657,7 +658,7 @@ firstDir = "top"; } if (leftRight[0] === "right") { - pos = BI.DOM.getLeftAlignPosition(combo, popup, extraWidth, needAdaptHeight); + pos = BI.DOM.getLeftAlignPosition(combo, popup, extraWidth); pos.top = top; pos.dir = firstDir + "," + pos.dir; return pos; diff --git a/src/less/core/utils/motion/zoom.less b/src/less/core/utils/motion/zoom.less index 7e0e0ec44..edeab6df4 100644 --- a/src/less/core/utils/motion/zoom.less +++ b/src/less/core/utils/motion/zoom.less @@ -4,7 +4,7 @@ .make-motion(@className, @keyframeName, @duration); .@{className}-enter, .@{className}-appear { - transform: scale(0); // need this by yiminghe + //transform: scale(0); // need this by yiminghe, but dailer did not need this opacity: 0; animation-timing-function: @ease-out-circ; From c486970d507ae7796af2c2804a7e18d8d0f6494b Mon Sep 17 00:00:00 2001 From: zsmj Date: Sat, 10 Dec 2022 14:20:58 +0800 Subject: [PATCH 50/90] =?UTF-8?q?KERNEL-11877=20feat:=20direction:bottom?= =?UTF-8?q?=E5=92=8Cdirection:top=E7=A9=BA=E9=97=B4=E4=B8=8D=E5=A4=9F?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E8=B0=83=E6=95=B4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/platform/web/dom.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index d45ccc3b2..66e970b56 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -384,11 +384,11 @@ if (BI.DOM.isTopSpaceEnough(combo, popup, -1 * comboBounds.height + extraHeight)) { top = comboOffset.top + comboBounds.height - containerBounds.top - popupBounds.height; } else if (needAdaptHeight) { - top = 0; - adaptHeight = comboOffset.top + comboBounds.height - extraHeight; + top = 0 - containerBounds.top; + adaptHeight = comboBounds.top + comboBounds.height - extraHeight; } else if (BI.DOM.isBottomSpaceEnough(combo, popup, -1 * comboBounds.height + extraHeight)) { // 上方空间不足且不允许调整高度的情况下,优先使用下对齐 - top = comboOffset.top + extraHeight; + top = comboOffset.top - containerBounds.top + extraHeight; dir = "bottom"; } else { top = 0; @@ -396,7 +396,7 @@ adaptHeight = windowBounds.height - extraHeight; } } - if (top < 0) { + if (top + containerBounds.top < 0) { top = 0; } return adaptHeight ? { From 972a22215ca1b7ec54fad4b6fd39bb790edd276c Mon Sep 17 00:00:00 2001 From: data Date: Sat, 10 Dec 2022 19:37:29 +0800 Subject: [PATCH 51/90] auto upgrade version to 2.0.20221210193709 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4bcb297d3..157b1a766 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221209162625", + "version": "2.0.20221210193709", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 7871535f63ba8a22bd38a2faddc3905d60b923ae Mon Sep 17 00:00:00 2001 From: "Kevin.King" Date: Mon, 12 Dec 2022 10:28:08 +0800 Subject: [PATCH 52/90] =?UTF-8?q?REPORT-84736=20feat:=20=E5=A4=9A=E9=97=A8?= =?UTF-8?q?=E6=88=B7=E9=A6=96=E9=A1=B5=E5=88=87=E6=8D=A2-=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E5=89=8D=E7=AB=AF=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/case/linearsegment/linear.segment.js | 10 +++++++++- src/case/segment/segment.js | 9 +++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/case/linearsegment/linear.segment.js b/src/case/linearsegment/linear.segment.js index b0b00f95b..41d282263 100644 --- a/src/case/linearsegment/linear.segment.js +++ b/src/case/linearsegment/linear.segment.js @@ -47,6 +47,14 @@ BI.LinearSegment = BI.inherit(BI.Widget, { getValue: function () { return this.buttonGroup.getValue(); - } + }, + + populate: function (buttons) { + var o = this.options; + this.buttonGroup.populate([BI.createItems(buttons, { + type: "bi.linear_segment_button", + height: o.height + })]) + }, }); BI.shortcut("bi.linear_segment", BI.LinearSegment); diff --git a/src/case/segment/segment.js b/src/case/segment/segment.js index 3f323ffb6..2c1dda918 100644 --- a/src/case/segment/segment.js +++ b/src/case/segment/segment.js @@ -58,6 +58,15 @@ BI.Segment = BI.inherit(BI.Widget, { getValue: function () { return this.buttonGroup.getValue(); }, + + populate: function (buttons) { + var o = this.options; + this.buttonGroup.populate([BI.createItems(buttons, { + type: "bi.segment_button", + height: BI.toPix(o.height, 2), + whiteSpace: o.whiteSpace, + })]); + }, }); BI.Segment.EVENT_CHANGE = "EVENT_CHANGE"; BI.shortcut("bi.segment", BI.Segment); From 142ef968c88af9d055ff1c0a90dfab4cd80d0e8f Mon Sep 17 00:00:00 2001 From: zsmj Date: Mon, 12 Dec 2022 18:43:05 +0800 Subject: [PATCH 53/90] =?UTF-8?q?KERNEL-11877=20feat:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 默认支持CSSTransform --- src/base/combination/combo.js | 12 +++++++----- src/core/platform/web/dom.js | 8 ++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index 6f2b3a326..879313495 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -220,7 +220,7 @@ }, }, } : this.combo; - var positionRelativeElement = o.supportCSSTransform ? BI.DOM.getPositionRelativeContainingBlock(BI.isNull(o.container) ? this.element[0] : BI.Widget._renderEngine.createElement(BI.isFunction(o.container) ? o.container() : o.container)[0]) : null; + var positionRelativeElement = BI.DOM.getPositionRelativeContainingBlock(BI.isNull(o.container) ? this.element[0] : BI.Widget._renderEngine.createElement(BI.isFunction(o.container) ? o.container() : o.container)[0]); switch (o.direction) { case "bottom": case "bottom,right": @@ -290,10 +290,6 @@ break; } - if ("adaptHeight" in p) { - this.resetListHeight(p.adaptHeight); - } - var width = this.combo.element.outerWidth(); var height = this.combo.element.outerHeight(); this.popupView.setDirection && this.popupView.setDirection(p.dir, { @@ -314,6 +310,12 @@ p.top && (p.top = p.top / scaleY); p.left && (p.left = p.left / scaleX); + + p.adaptHeight && (p.adaptHeight = p.adaptHeight / scaleY); + } + + if ("adaptHeight" in p) { + this.resetListHeight(p.adaptHeight); } if ("left" in p) { diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index 66e970b56..17dd9d479 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -327,7 +327,7 @@ top = comboOffset.top - containerBounds.top + extraHeight; } else if (needAdaptHeight) { top = comboBounds.top - containerBounds.top + extraHeight; - adaptHeight = viewportBounds.height - top; + adaptHeight = viewportBounds.height - comboBounds.top; } else if (BI.DOM.isTopSpaceEnough(combo, popup, -1 * comboBounds.height + extraHeight)) { // 下方空间不足且不允许调整高度的情况下,优先使用上对齐 top = comboBounds.top + comboBounds.height - popupBounds.height - containerBounds.top - extraHeight; @@ -671,13 +671,13 @@ }, - getComboPosition: function (combo, popup, extraWidth, extraHeight, needAdaptHeight, directions, offsetStyle, container) { + getComboPosition: function (combo, popup, extraWidth, extraHeight, needAdaptHeight, directions, offsetStyle, positionRelativeElement) { extraWidth || (extraWidth = 0); extraHeight || (extraHeight = 0); var bodyHeight = BI.Widget._renderEngine.createElement("body").bounds().height - extraHeight; var maxHeight = Math.min(popup.attr("maxHeight") || bodyHeight, bodyHeight); popup.resetHeight && popup.resetHeight(maxHeight); - var position = BI.DOM.getComboPositionByDirections(combo, popup, extraWidth, extraHeight, needAdaptHeight, directions || ["bottom", "top", "right", "left"], container); + var position = BI.DOM.getComboPositionByDirections(combo, popup, extraWidth, extraHeight, needAdaptHeight, directions || ["bottom", "top", "right", "left"], positionRelativeElement); switch (offsetStyle) { case "center": if (position.change) { @@ -699,7 +699,7 @@ break; } if (needAdaptHeight === true) { - popup.resetHeight && popup.resetHeight(Math.min(bodyHeight - position.top, maxHeight)); + popup.resetHeight && popup.resetHeight(Math.min(bodyHeight - position.top + (positionRelativeElement ? positionRelativeElement.getBoundingClientRect().top : 0), maxHeight)); } return position; }, From bba36875288af7f8c063fc6181ffe4028c3d4a3d Mon Sep 17 00:00:00 2001 From: "Jimmy.Chai" Date: Mon, 12 Dec 2022 22:58:27 +0800 Subject: [PATCH 54/90] =?UTF-8?q?=E6=97=A0=20jira=20=E4=BB=BB=E5=8A=A1=20r?= =?UTF-8?q?efactor:=20=E7=B1=BB=E5=9E=8B=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typescript/base/single/button/button.basic.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typescript/base/single/button/button.basic.ts b/typescript/base/single/button/button.basic.ts index 95ee1a3c3..24cfc2484 100644 --- a/typescript/base/single/button/button.basic.ts +++ b/typescript/base/single/button/button.basic.ts @@ -38,7 +38,7 @@ export declare class BasicButton extends Single { trigger?: string | null; handler?: Function; bubble?: Function | null | string; - text?: string; + text?: string | ((context: any) => string); el?: Obj; } & Single["props"]; From e69dffc9484f2cae6cbcbdea29de6dcb2de38805 Mon Sep 17 00:00:00 2001 From: zsmj Date: Tue, 13 Dec 2022 10:50:08 +0800 Subject: [PATCH 55/90] =?UTF-8?q?BI-118262=20fix:=20=E6=A0=91=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E7=BB=84=E4=BB=B6=E6=90=9C=E7=B4=A2=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E4=B8=8D=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit slow-3g 小霸王等时序问题导致. 这个判断没啥意义 --- src/widget/multiselect/multiselect.combo.js | 3 --- src/widget/multiselect/multiselect.combo.nobar.js | 3 --- src/widget/multiselect/multiselect.insert.combo.js | 3 --- src/widget/multiselect/multiselect.insert.combo.nobar.js | 3 --- src/widget/multiselect/multiselect.insert.trigger.js | 2 +- src/widget/multiselect/multiselect.trigger.js | 3 ++- src/widget/multitree/multi.tree.combo.js | 3 --- src/widget/multitree/multi.tree.insert.combo.js | 3 --- src/widget/multitree/multi.tree.list.combo.js | 3 --- .../searchmultitextvaluecombo/multitextvalue.combo.search.js | 3 --- src/widget/singleselect/singleselect.combo.js | 3 --- src/widget/singleselect/singleselect.insert.combo.js | 3 --- 12 files changed, 3 insertions(+), 32 deletions(-) diff --git a/src/widget/multiselect/multiselect.combo.js b/src/widget/multiselect/multiselect.combo.js index 5651fa04f..3a9570900 100644 --- a/src/widget/multiselect/multiselect.combo.js +++ b/src/widget/multiselect/multiselect.combo.js @@ -180,9 +180,6 @@ BI.MultiSelectCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { - if (!this.isViewVisible()) { - self._dataChange = false;// 标记数据是否发生变化 - } this.setValue(self.storeValue); BI.nextTick(function () { self._populate(); diff --git a/src/widget/multiselect/multiselect.combo.nobar.js b/src/widget/multiselect/multiselect.combo.nobar.js index ce84a730e..745247e20 100644 --- a/src/widget/multiselect/multiselect.combo.nobar.js +++ b/src/widget/multiselect/multiselect.combo.nobar.js @@ -180,9 +180,6 @@ BI.MultiSelectNoBarCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { - if (!this.isViewVisible()) { - self._dataChange = false;// 标记数据是否发生变化 - } this.setValue(self.storeValue); BI.nextTick(function () { self._populate(); diff --git a/src/widget/multiselect/multiselect.insert.combo.js b/src/widget/multiselect/multiselect.insert.combo.js index 6540e0dc9..4d3de9118 100644 --- a/src/widget/multiselect/multiselect.insert.combo.js +++ b/src/widget/multiselect/multiselect.insert.combo.js @@ -181,9 +181,6 @@ BI.MultiSelectInsertCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { - if (!this.isViewVisible()) { - self._dataChange = false;// 标记数据是否发生变化 - } this.setValue(self.storeValue); BI.nextTick(function () { self._populate(); diff --git a/src/widget/multiselect/multiselect.insert.combo.nobar.js b/src/widget/multiselect/multiselect.insert.combo.nobar.js index c7ff2109d..354e7cd20 100644 --- a/src/widget/multiselect/multiselect.insert.combo.nobar.js +++ b/src/widget/multiselect/multiselect.insert.combo.nobar.js @@ -174,9 +174,6 @@ BI.MultiSelectInsertNoBarCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { - if (!this.isViewVisible()) { - self._dataChange = false;// 标记数据是否发生变化 - } this.setValue(self.storeValue); BI.nextTick(function () { self._populate(); diff --git a/src/widget/multiselect/multiselect.insert.trigger.js b/src/widget/multiselect/multiselect.insert.trigger.js index b04aebd07..19b4e800c 100644 --- a/src/widget/multiselect/multiselect.insert.trigger.js +++ b/src/widget/multiselect/multiselect.insert.trigger.js @@ -15,7 +15,7 @@ BI.MultiSelectInsertTrigger = BI.inherit(BI.Trigger, { _defaultConfig: function () { return BI.extend(BI.MultiSelectInsertTrigger.superclass._defaultConfig.apply(this, arguments), { - baseCls: "bi-multi-select-trigger", + baseCls: "bi-multi-select-insert-trigger", itemsCreator: BI.emptyFn, valueFormatter: BI.emptyFn, itemHeight: 24, diff --git a/src/widget/multiselect/multiselect.trigger.js b/src/widget/multiselect/multiselect.trigger.js index 937e83804..0c3eba3dc 100644 --- a/src/widget/multiselect/multiselect.trigger.js +++ b/src/widget/multiselect/multiselect.trigger.js @@ -70,7 +70,8 @@ BI.MultiSelectTrigger = BI.inherit(BI.Trigger, { }); this.wrapNumberCounter = BI.createWidget({ - type: "bi.layout" + type: "bi.layout", + cls:"wrap-number-counter", }); this.wrapper = BI.createWidget({ diff --git a/src/widget/multitree/multi.tree.combo.js b/src/widget/multitree/multi.tree.combo.js index bdf374f07..e6f34bdc8 100644 --- a/src/widget/multitree/multi.tree.combo.js +++ b/src/widget/multitree/multi.tree.combo.js @@ -189,9 +189,6 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { if (isSearching()) { return; } - if (!this.isViewVisible()) { - self._dataChange = false; // 标记数据是否发生变化 - } if (change === true) { self.storeValue = { value: self.combo.getValue() }; change = false; diff --git a/src/widget/multitree/multi.tree.insert.combo.js b/src/widget/multitree/multi.tree.insert.combo.js index 6db34dc61..af50934d4 100644 --- a/src/widget/multitree/multi.tree.insert.combo.js +++ b/src/widget/multitree/multi.tree.insert.combo.js @@ -202,9 +202,6 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { if (isSearching()) { return; } - if (!this.isViewVisible()) { - self._dataChange = false; // 标记数据是否发生变化 - } if (change === true) { self.storeValue = { value: self.combo.getValue() }; change = false; diff --git a/src/widget/multitree/multi.tree.list.combo.js b/src/widget/multitree/multi.tree.list.combo.js index a3a016179..dfcd7c1d2 100644 --- a/src/widget/multitree/multi.tree.list.combo.js +++ b/src/widget/multitree/multi.tree.list.combo.js @@ -219,9 +219,6 @@ BI.MultiTreeListCombo = BI.inherit(BI.Single, { if (isSearching()) { return; } - if (!this.isViewVisible()) { - self._dataChange = false; // 标记数据是否发生变化 - } if (change === true) { self.storeValue = { value: self.combo.getValue() }; change = false; diff --git a/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js b/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js index 4fdbf42ee..2f38ca5dc 100644 --- a/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js +++ b/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js @@ -162,9 +162,6 @@ BI.SearchMultiTextValueCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { - if (!this.isViewVisible()) { - self._dataChange = false;// 标记数据是否发生变化 - } this.setValue(self.storeValue); BI.nextTick(function () { self._populate(); diff --git a/src/widget/singleselect/singleselect.combo.js b/src/widget/singleselect/singleselect.combo.js index cc4d7c261..ac1fe3548 100644 --- a/src/widget/singleselect/singleselect.combo.js +++ b/src/widget/singleselect/singleselect.combo.js @@ -125,9 +125,6 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { - if (!this.isViewVisible()) { - self._dataChange = false;// 标记数据是否发生变化 - } this.setValue(self.storeValue); BI.nextTick(function () { self.populate(); diff --git a/src/widget/singleselect/singleselect.insert.combo.js b/src/widget/singleselect/singleselect.insert.combo.js index a36bf0bd6..7c259e007 100644 --- a/src/widget/singleselect/singleselect.insert.combo.js +++ b/src/widget/singleselect/singleselect.insert.combo.js @@ -136,9 +136,6 @@ BI.SingleSelectInsertCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { - if (!this.isViewVisible()) { - self._dataChange = false;// 标记数据是否发生变化 - } this.setValue(self.storeValue); BI.nextTick(function () { self.populate(); From dc2cf542e7d7180bd9d1bb40be2628d84e9fac8a Mon Sep 17 00:00:00 2001 From: zsmj Date: Tue, 13 Dec 2022 11:47:29 +0800 Subject: [PATCH 56/90] =?UTF-8?q?KERNEL-11877=20fix:=20firefox=20=E4=B8=8B?= =?UTF-8?q?bounds=E8=AE=A1=E7=AE=97=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/combination/combo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index 879313495..c937f8f84 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -162,7 +162,7 @@ this._assertPopupViewRender(); this.fireEvent(BI.Combo.EVENT_BEFORE_POPUPVIEW); // popupVisible是为了获取其宽高, 放到可视范围之外以防止在IE下闪一下 - this.popupView.css({ left: -999999999, top: -99999999 }); + this.popupView.css({ left: -99999, top: -99999 }); this.popupView.visible(); BI.each(needHideWhenAnotherComboOpen, function (i, combo) { if (i !== self.getName()) { From 7a2e16068e1355086b18a425add7fcd99e217621 Mon Sep 17 00:00:00 2001 From: zsmj Date: Tue, 13 Dec 2022 13:34:01 +0800 Subject: [PATCH 57/90] =?UTF-8?q?Revert=20"BI-118262=20fix:=20=E6=A0=91?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E7=BB=84=E4=BB=B6=E6=90=9C=E7=B4=A2=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E4=B8=8D=E7=94=9F=E6=95=88"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit e69dffc9484f2cae6cbcbdea29de6dcb2de38805. --- src/widget/multiselect/multiselect.combo.js | 3 +++ src/widget/multiselect/multiselect.combo.nobar.js | 3 +++ src/widget/multiselect/multiselect.insert.combo.js | 3 +++ src/widget/multiselect/multiselect.insert.combo.nobar.js | 3 +++ src/widget/multiselect/multiselect.insert.trigger.js | 2 +- src/widget/multiselect/multiselect.trigger.js | 3 +-- src/widget/multitree/multi.tree.combo.js | 3 +++ src/widget/multitree/multi.tree.insert.combo.js | 3 +++ src/widget/multitree/multi.tree.list.combo.js | 3 +++ .../searchmultitextvaluecombo/multitextvalue.combo.search.js | 3 +++ src/widget/singleselect/singleselect.combo.js | 3 +++ src/widget/singleselect/singleselect.insert.combo.js | 3 +++ 12 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/widget/multiselect/multiselect.combo.js b/src/widget/multiselect/multiselect.combo.js index 3a9570900..5651fa04f 100644 --- a/src/widget/multiselect/multiselect.combo.js +++ b/src/widget/multiselect/multiselect.combo.js @@ -180,6 +180,9 @@ BI.MultiSelectCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { + if (!this.isViewVisible()) { + self._dataChange = false;// 标记数据是否发生变化 + } this.setValue(self.storeValue); BI.nextTick(function () { self._populate(); diff --git a/src/widget/multiselect/multiselect.combo.nobar.js b/src/widget/multiselect/multiselect.combo.nobar.js index 745247e20..ce84a730e 100644 --- a/src/widget/multiselect/multiselect.combo.nobar.js +++ b/src/widget/multiselect/multiselect.combo.nobar.js @@ -180,6 +180,9 @@ BI.MultiSelectNoBarCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { + if (!this.isViewVisible()) { + self._dataChange = false;// 标记数据是否发生变化 + } this.setValue(self.storeValue); BI.nextTick(function () { self._populate(); diff --git a/src/widget/multiselect/multiselect.insert.combo.js b/src/widget/multiselect/multiselect.insert.combo.js index 4d3de9118..6540e0dc9 100644 --- a/src/widget/multiselect/multiselect.insert.combo.js +++ b/src/widget/multiselect/multiselect.insert.combo.js @@ -181,6 +181,9 @@ BI.MultiSelectInsertCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { + if (!this.isViewVisible()) { + self._dataChange = false;// 标记数据是否发生变化 + } this.setValue(self.storeValue); BI.nextTick(function () { self._populate(); diff --git a/src/widget/multiselect/multiselect.insert.combo.nobar.js b/src/widget/multiselect/multiselect.insert.combo.nobar.js index 354e7cd20..c7ff2109d 100644 --- a/src/widget/multiselect/multiselect.insert.combo.nobar.js +++ b/src/widget/multiselect/multiselect.insert.combo.nobar.js @@ -174,6 +174,9 @@ BI.MultiSelectInsertNoBarCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { + if (!this.isViewVisible()) { + self._dataChange = false;// 标记数据是否发生变化 + } this.setValue(self.storeValue); BI.nextTick(function () { self._populate(); diff --git a/src/widget/multiselect/multiselect.insert.trigger.js b/src/widget/multiselect/multiselect.insert.trigger.js index 19b4e800c..b04aebd07 100644 --- a/src/widget/multiselect/multiselect.insert.trigger.js +++ b/src/widget/multiselect/multiselect.insert.trigger.js @@ -15,7 +15,7 @@ BI.MultiSelectInsertTrigger = BI.inherit(BI.Trigger, { _defaultConfig: function () { return BI.extend(BI.MultiSelectInsertTrigger.superclass._defaultConfig.apply(this, arguments), { - baseCls: "bi-multi-select-insert-trigger", + baseCls: "bi-multi-select-trigger", itemsCreator: BI.emptyFn, valueFormatter: BI.emptyFn, itemHeight: 24, diff --git a/src/widget/multiselect/multiselect.trigger.js b/src/widget/multiselect/multiselect.trigger.js index 0c3eba3dc..937e83804 100644 --- a/src/widget/multiselect/multiselect.trigger.js +++ b/src/widget/multiselect/multiselect.trigger.js @@ -70,8 +70,7 @@ BI.MultiSelectTrigger = BI.inherit(BI.Trigger, { }); this.wrapNumberCounter = BI.createWidget({ - type: "bi.layout", - cls:"wrap-number-counter", + type: "bi.layout" }); this.wrapper = BI.createWidget({ diff --git a/src/widget/multitree/multi.tree.combo.js b/src/widget/multitree/multi.tree.combo.js index e6f34bdc8..bdf374f07 100644 --- a/src/widget/multitree/multi.tree.combo.js +++ b/src/widget/multitree/multi.tree.combo.js @@ -189,6 +189,9 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { if (isSearching()) { return; } + if (!this.isViewVisible()) { + self._dataChange = false; // 标记数据是否发生变化 + } if (change === true) { self.storeValue = { value: self.combo.getValue() }; change = false; diff --git a/src/widget/multitree/multi.tree.insert.combo.js b/src/widget/multitree/multi.tree.insert.combo.js index af50934d4..6db34dc61 100644 --- a/src/widget/multitree/multi.tree.insert.combo.js +++ b/src/widget/multitree/multi.tree.insert.combo.js @@ -202,6 +202,9 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { if (isSearching()) { return; } + if (!this.isViewVisible()) { + self._dataChange = false; // 标记数据是否发生变化 + } if (change === true) { self.storeValue = { value: self.combo.getValue() }; change = false; diff --git a/src/widget/multitree/multi.tree.list.combo.js b/src/widget/multitree/multi.tree.list.combo.js index dfcd7c1d2..a3a016179 100644 --- a/src/widget/multitree/multi.tree.list.combo.js +++ b/src/widget/multitree/multi.tree.list.combo.js @@ -219,6 +219,9 @@ BI.MultiTreeListCombo = BI.inherit(BI.Single, { if (isSearching()) { return; } + if (!this.isViewVisible()) { + self._dataChange = false; // 标记数据是否发生变化 + } if (change === true) { self.storeValue = { value: self.combo.getValue() }; change = false; diff --git a/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js b/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js index 2f38ca5dc..4fdbf42ee 100644 --- a/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js +++ b/src/widget/searchmultitextvaluecombo/multitextvalue.combo.search.js @@ -162,6 +162,9 @@ BI.SearchMultiTextValueCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { + if (!this.isViewVisible()) { + self._dataChange = false;// 标记数据是否发生变化 + } this.setValue(self.storeValue); BI.nextTick(function () { self._populate(); diff --git a/src/widget/singleselect/singleselect.combo.js b/src/widget/singleselect/singleselect.combo.js index ac1fe3548..cc4d7c261 100644 --- a/src/widget/singleselect/singleselect.combo.js +++ b/src/widget/singleselect/singleselect.combo.js @@ -125,6 +125,9 @@ BI.SingleSelectCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { + if (!this.isViewVisible()) { + self._dataChange = false;// 标记数据是否发生变化 + } this.setValue(self.storeValue); BI.nextTick(function () { self.populate(); diff --git a/src/widget/singleselect/singleselect.insert.combo.js b/src/widget/singleselect/singleselect.insert.combo.js index 7c259e007..a36bf0bd6 100644 --- a/src/widget/singleselect/singleselect.insert.combo.js +++ b/src/widget/singleselect/singleselect.insert.combo.js @@ -136,6 +136,9 @@ BI.SingleSelectInsertCombo = BI.inherit(BI.Single, { }); this.combo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { + if (!this.isViewVisible()) { + self._dataChange = false;// 标记数据是否发生变化 + } this.setValue(self.storeValue); BI.nextTick(function () { self.populate(); From 16786881e33636380cf8bd68b8258ae136184857 Mon Sep 17 00:00:00 2001 From: data Date: Tue, 13 Dec 2022 15:24:31 +0800 Subject: [PATCH 58/90] auto upgrade version to 2.0.20221213152248 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 157b1a766..3c500439e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221210193709", + "version": "2.0.20221213152248", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From d739234f861b406fedbeb789b0344f2f4b7e1b2e Mon Sep 17 00:00:00 2001 From: zsmj Date: Tue, 13 Dec 2022 16:12:13 +0800 Subject: [PATCH 59/90] =?UTF-8?q?KERNEL-11877=20feat:=20=E5=8D=87=E7=BA=A7?= =?UTF-8?q?popperjs=20=E8=A7=A3=E5=86=B3scale=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/floating-ui/floating-ui/pull/1247 --- src/core/controller/popper.js | 3474 +++++++++++++++++---------------- 1 file changed, 1789 insertions(+), 1685 deletions(-) diff --git a/src/core/controller/popper.js b/src/core/controller/popper.js index a3708dbd5..2c6f613fd 100644 --- a/src/core/controller/popper.js +++ b/src/core/controller/popper.js @@ -1,1908 +1,2012 @@ /** - * @popperjs/core v2.9.2 - MIT License + * @popperjs/core v2.11.6 - MIT License */ (function (global, factory) { - factory(BI.Popper = {}); -}(this, (function (exports) { 'use strict'; - - function getBoundingClientRect(element) { - var rect = element.getBoundingClientRect(); - return { - width: rect.width, - height: rect.height, - top: rect.top, - right: rect.right, - bottom: rect.bottom, - left: rect.left, - x: rect.left, - y: rect.top - }; - } + factory(global.Popper = {}); +}(BI, (function (exports) { + 'use strict'; + + function getWindow(node) { + if (node == null) { + return window; + } - function getWindow(node) { - if (node == null) { - return window; + if (node.toString() !== '[object Window]') { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + + return node; } - if (node.toString() !== '[object Window]') { - var ownerDocument = node.ownerDocument; - return ownerDocument ? ownerDocument.defaultView || window : window; + function isElement(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; } - return node; - } + function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; + } - function getWindowScroll(node) { - var win = getWindow(node); - var scrollLeft = win.pageXOffset; - var scrollTop = win.pageYOffset; - return { - scrollLeft: scrollLeft, - scrollTop: scrollTop - }; - } - - function isElement(node) { - var OwnElement = getWindow(node).Element; - return node instanceof OwnElement || node instanceof Element; - } - - function isHTMLElement(node) { - var OwnElement = getWindow(node).HTMLElement; - return node instanceof OwnElement || node instanceof HTMLElement; - } - - function isShadowRoot(node) { - // IE 11 has no ShadowRoot - if (typeof ShadowRoot === 'undefined') { - return false; + function isShadowRoot(node) { + // IE 11 has no ShadowRoot + if (typeof ShadowRoot === 'undefined') { + return false; + } + + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; } - var OwnElement = getWindow(node).ShadowRoot; - return node instanceof OwnElement || node instanceof ShadowRoot; - } + var max = Math.max; + var min = Math.min; + var round = Math.round; - function getHTMLElementScroll(element) { - return { - scrollLeft: element.scrollLeft, - scrollTop: element.scrollTop - }; - } + function getUAString() { + var uaData = navigator.userAgentData; - function getNodeScroll(node) { - if (node === getWindow(node) || !isHTMLElement(node)) { - return getWindowScroll(node); - } else { - return getHTMLElementScroll(node); - } - } - - function getNodeName(element) { - return element ? (element.nodeName || '').toLowerCase() : null; - } - - function getDocumentElement(element) { - // $FlowFixMe[incompatible-return]: assume body is always available - return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] - element.document) || window.document).documentElement; - } - - function getWindowScrollBarX(element) { - // If has a CSS width greater than the viewport, then this will be - // incorrect for RTL. - // Popper 1 is broken in this case and never had a bug report so let's assume - // it's not an issue. I don't think anyone ever specifies width on - // anyway. - // Browsers where the left scrollbar doesn't cause an issue report `0` for - // this (e.g. Edge 2019, IE11, Safari) - return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; - } - - function getComputedStyle(element) { - return getWindow(element).getComputedStyle(element); - } - - function isScrollParent(element) { - // Firefox wants us to check `-x` and `-y` variations as well - var _getComputedStyle = getComputedStyle(element), - overflow = _getComputedStyle.overflow, - overflowX = _getComputedStyle.overflowX, - overflowY = _getComputedStyle.overflowY; - - return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); - } - - // Composite means it takes into account transforms as well as layout. - - function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { - if (isFixed === void 0) { - isFixed = false; - } + if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { + return uaData.brands.map(function (item) { + return item.brand + "/" + item.version; + }).join(' '); + } - var documentElement = getDocumentElement(offsetParent); - var rect = getBoundingClientRect(elementOrVirtualElement); - var isOffsetParentAnElement = isHTMLElement(offsetParent); - var scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - var offsets = { - x: 0, - y: 0 - }; + return navigator.userAgent; + } - if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { - if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 - isScrollParent(documentElement)) { - scroll = getNodeScroll(offsetParent); - } - - if (isHTMLElement(offsetParent)) { - offsets = getBoundingClientRect(offsetParent); - offsets.x += offsetParent.clientLeft; - offsets.y += offsetParent.clientTop; - } else if (documentElement) { - offsets.x = getWindowScrollBarX(documentElement); - } + function isLayoutViewport() { + return !/^((?!chrome|android).)*safari/i.test(getUAString()); } - return { - x: rect.left + scroll.scrollLeft - offsets.x, - y: rect.top + scroll.scrollTop - offsets.y, - width: rect.width, - height: rect.height - }; - } + function getBoundingClientRect(element, includeScale, isFixedStrategy) { + if (includeScale === void 0) { + includeScale = false; + } - // means it doesn't take into account transforms. + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } - function getLayoutRect(element) { - var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. - // Fixes https://github.com/popperjs/popper-core/issues/1223 + var clientRect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; - var width = element.offsetWidth; - var height = element.offsetHeight; + if (includeScale && isHTMLElement(element)) { + scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; + scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; + } - if (Math.abs(clientRect.width - width) <= 1) { - width = clientRect.width; + var _ref = isElement(element) ? getWindow(element) : window, + visualViewport = _ref.visualViewport; + + var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; + var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; + var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; + var width = clientRect.width / scaleX; + var height = clientRect.height / scaleY; + return { + width: width, + height: height, + top: y, + right: x + width, + bottom: y + height, + left: x, + x: x, + y: y + }; } - if (Math.abs(clientRect.height - height) <= 1) { - height = clientRect.height; + function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft: scrollLeft, + scrollTop: scrollTop + }; } - return { - x: element.offsetLeft, - y: element.offsetTop, - width: width, - height: height - }; - } + function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; + } - function getParentNode(element) { - if (getNodeName(element) === 'html') { - return element; + function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } } - return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle - // $FlowFixMe[incompatible-return] - // $FlowFixMe[prop-missing] - element.assignedSlot || // step into the shadow DOM of the parent of a slotted node - element.parentNode || ( // DOM Element detected - isShadowRoot(element) ? element.host : null) || // ShadowRoot detected - // $FlowFixMe[incompatible-call]: HTMLElement is a Node - getDocumentElement(element) // fallback - - ); - } - - function getScrollParent(node) { - if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { - // $FlowFixMe[incompatible-return]: assume body is always available - return node.ownerDocument.body; + function getNodeName(element) { + return element ? (element.nodeName || '').toLowerCase() : null; } - if (isHTMLElement(node) && isScrollParent(node)) { - return node; + function getDocumentElement(element) { + // $FlowFixMe[incompatible-return]: assume body is always available + return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] + element.document) || window.document).documentElement; } - return getScrollParent(getParentNode(node)); - } + function getWindowScrollBarX(element) { + // If has a CSS width greater than the viewport, then this will be + // incorrect for RTL. + // Popper 1 is broken in this case and never had a bug report so let's assume + // it's not an issue. I don't think anyone ever specifies width on + // anyway. + // Browsers where the left scrollbar doesn't cause an issue report `0` for + // this (e.g. Edge 2019, IE11, Safari) + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; + } - /* - given a DOM element, return the list of all scroll parents, up the list of ancesors - until we get to the top window object. This list is what we attach scroll listeners - to, because if any of these parent elements scroll, we'll need to re-calculate the - reference element's position. - */ + function getComputedStyle(element) { + return getWindow(element).getComputedStyle(element); + } - function listScrollParents(element, list) { - var _element$ownerDocumen; + function isScrollParent(element) { + // Firefox wants us to check `-x` and `-y` variations as well + var _getComputedStyle = getComputedStyle(element), + overflow = _getComputedStyle.overflow, + overflowX = _getComputedStyle.overflowX, + overflowY = _getComputedStyle.overflowY; - if (list === void 0) { - list = []; + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); } - var scrollParent = getScrollParent(element); - var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); - var win = getWindow(scrollParent); - var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; - var updatedList = list.concat(target); - return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here - updatedList.concat(listScrollParents(getParentNode(target))); - } - - function isTableElement(element) { - return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; - } - - function getTrueOffsetParent(element) { - if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 - getComputedStyle(element).position === 'fixed') { - return null; + function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; + } // Returns the composite rect of an element relative to its offsetParent. + // Composite means it takes into account transforms as well as layout. + + + function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent, true); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; } - return element.offsetParent; - } // `.offsetParent` reports `null` for fixed elements, while absolute elements - // return the containing block + // means it doesn't take into account transforms. + function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. + // Fixes https://github.com/popperjs/popper-core/issues/1223 - function getContainingBlock(element) { - var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; - var isIE = navigator.userAgent.indexOf('Trident') !== -1; + var width = element.offsetWidth; + var height = element.offsetHeight; - if (isIE && isHTMLElement(element)) { - // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport - var elementCss = getComputedStyle(element); + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } - if (elementCss.position === 'fixed') { - return null; - } + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + + return { + x: element.offsetLeft, + y: element.offsetTop, + width: width, + height: height + }; } - var currentNode = getParentNode(element); + function getParentNode(element) { + if (getNodeName(element) === 'html') { + return element; + } - while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { - var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that - // create a containing block. - // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block + return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || ( // DOM Element detected + isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) // fallback - if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { - return currentNode; - } else { - currentNode = currentNode.parentNode; - } + ); } - return null; - } // Gets the closest ancestor positioned element. Handles some edge cases, - // such as table ancestors and cross browser bugs. + function getScrollParent(node) { + if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { + // $FlowFixMe[incompatible-return]: assume body is always available + return node.ownerDocument.body; + } + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + + return getScrollParent(getParentNode(node)); + } - function getOffsetParent(element) { - var window = getWindow(element); - var offsetParent = getTrueOffsetParent(element); + /* + given a DOM element, return the list of all scroll parents, up the list of ancesors + until we get to the top window object. This list is what we attach scroll listeners + to, because if any of these parent elements scroll, we'll need to re-calculate the + reference element's position. + */ - while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') { - offsetParent = getTrueOffsetParent(offsetParent); + function listScrollParents(element, list) { + var _element$ownerDocumen; + + if (list === void 0) { + list = []; + } + + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))); } - if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) { - return window; + function isTableElement(element) { + return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; } - return offsetParent || getContainingBlock(element) || window; - } - - var top = 'top'; - var bottom = 'bottom'; - var right = 'right'; - var left = 'left'; - var auto = 'auto'; - var basePlacements = [top, bottom, right, left]; - var start = 'start'; - var end = 'end'; - var clippingParents = 'clippingParents'; - var viewport = 'viewport'; - var popper = 'popper'; - var reference = 'reference'; - var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { - return acc.concat([placement + "-" + start, placement + "-" + end]); - }, []); - var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { - return acc.concat([placement, placement + "-" + start, placement + "-" + end]); - }, []); // modifiers that need to read the DOM - - var beforeRead = 'beforeRead'; - var read = 'read'; - var afterRead = 'afterRead'; // pure-logic modifiers - - var beforeMain = 'beforeMain'; - var main = 'main'; - var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) - - var beforeWrite = 'beforeWrite'; - var write = 'write'; - var afterWrite = 'afterWrite'; - var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; - - function order(modifiers) { - var map = new Map(); - var visited = new Set(); - var result = []; - modifiers.forEach(function (modifier) { - map.set(modifier.name, modifier); - }); // On visiting object, check for its dependencies and visit them recursively - - function sort(modifier) { - visited.add(modifier.name); - var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); - requires.forEach(function (dep) { - if (!visited.has(dep)) { - var depModifier = map.get(dep); - - if (depModifier) { - sort(depModifier); - } + function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle(element).position === 'fixed') { + return null; } - }); - result.push(modifier); - } - modifiers.forEach(function (modifier) { - if (!visited.has(modifier.name)) { - // check for visited object - sort(modifier); - } - }); - return result; - } - - function orderModifiers(modifiers) { - // order based on dependencies - var orderedModifiers = order(modifiers); // order based on phase - - return modifierPhases.reduce(function (acc, phase) { - return acc.concat(orderedModifiers.filter(function (modifier) { - return modifier.phase === phase; - })); - }, []); - } - - function debounce(fn) { - var pending; - return function () { - if (!pending) { - pending = new Promise(function (resolve) { - Promise.resolve().then(function () { - pending = undefined; - resolve(fn()); - }); - }); - } + return element.offsetParent; + } // `.offsetParent` reports `null` for fixed elements, while absolute elements + // return the containing block - return pending; - }; - } - function format(str) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } + function getContainingBlock(element) { + var isFirefox = /firefox/i.test(getUAString()); + var isIE = /Trident/i.test(getUAString()); - return [].concat(args).reduce(function (p, c) { - return p.replace(/%s/, c); - }, str); - } - - var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; - var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; - var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; - function validateModifiers(modifiers) { - modifiers.forEach(function (modifier) { - Object.keys(modifier).forEach(function (key) { - switch (key) { - case 'name': - if (typeof modifier.name !== 'string') { - console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); + if (isIE && isHTMLElement(element)) { + // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport + var elementCss = getComputedStyle(element); + + if (elementCss.position === 'fixed') { + return null; } + } - break; + var currentNode = getParentNode(element); - case 'enabled': - if (typeof modifier.enabled !== 'boolean') { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); - } + if (isShadowRoot(currentNode)) { + currentNode = currentNode.host; + } + + while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that + // create a containing block. + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block - case 'phase': - if (modifierPhases.indexOf(modifier.phase) < 0) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { + return currentNode; + } else { + currentNode = currentNode.parentNode; } + } - break; + return null; + } // Gets the closest ancestor positioned element. Handles some edge cases, + // such as table ancestors and cross browser bugs. - case 'fn': - if (typeof modifier.fn !== 'function') { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); - } - break; + function getOffsetParent(element) { + var window = getWindow(element); + var offsetParent = getTrueOffsetParent(element); - case 'effect': - if (typeof modifier.effect !== 'function') { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); - } + while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent); + } - break; + if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) { + return window; + } - case 'requires': - if (!Array.isArray(modifier.requires)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); - } + return offsetParent || getContainingBlock(element) || window; + } - break; + var top = 'top'; + var bottom = 'bottom'; + var right = 'right'; + var left = 'left'; + var auto = 'auto'; + var basePlacements = [top, bottom, right, left]; + var start = 'start'; + var end = 'end'; + var clippingParents = 'clippingParents'; + var viewport = 'viewport'; + var popper = 'popper'; + var reference = 'reference'; + var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); + }, []); + var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); + }, []); // modifiers that need to read the DOM + + var beforeRead = 'beforeRead'; + var read = 'read'; + var afterRead = 'afterRead'; // pure-logic modifiers + + var beforeMain = 'beforeMain'; + var main = 'main'; + var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) + + var beforeWrite = 'beforeWrite'; + var write = 'write'; + var afterWrite = 'afterWrite'; + var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + + function order(modifiers) { + var map = new Map(); + var visited = new Set(); + var result = []; + modifiers.forEach(function (modifier) { + map.set(modifier.name, modifier); + }); // On visiting object, check for its dependencies and visit them recursively + + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function (dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } - case 'requiresIfExists': - if (!Array.isArray(modifier.requiresIfExists)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); + modifiers.forEach(function (modifier) { + if (!visited.has(modifier.name)) { + // check for visited object + sort(modifier); } + }); + return result; + } - break; + function orderModifiers(modifiers) { + // order based on dependencies + var orderedModifiers = order(modifiers); // order based on phase - case 'options': - case 'data': - break; + return modifierPhases.reduce(function (acc, phase) { + return acc.concat(orderedModifiers.filter(function (modifier) { + return modifier.phase === phase; + })); + }, []); + } - default: - console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { - return "\"" + s + "\""; - }).join(', ') + "; but \"" + key + "\" was provided."); + function debounce(fn) { + var pending; + return function () { + if (!pending) { + pending = new Promise(function (resolve) { + Promise.resolve().then(function () { + pending = undefined; + resolve(fn()); + }); + }); + } + + return pending; + }; + } + + function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; } - modifier.requires && modifier.requires.forEach(function (requirement) { - if (modifiers.find(function (mod) { - return mod.name === requirement; - }) == null) { - console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); - } + return [].concat(args).reduce(function (p, c) { + return p.replace(/%s/, c); + }, str); + } + + var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; + var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; + var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; + + function validateModifiers(modifiers) { + modifiers.forEach(function (modifier) { + [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)` + .filter(function (value, index, self) { + return self.indexOf(value) === index; + }).forEach(function (key) { + switch (key) { + case 'name': + if (typeof modifier.name !== 'string') { + console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); + } + + break; + + case 'enabled': + if (typeof modifier.enabled !== 'boolean') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); + } + + break; + + case 'phase': + if (modifierPhases.indexOf(modifier.phase) < 0) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); + } + + break; + + case 'fn': + if (typeof modifier.fn !== 'function') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); + } + + break; + + case 'effect': + if (modifier.effect != null && typeof modifier.effect !== 'function') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); + } + + break; + + case 'requires': + if (modifier.requires != null && !Array.isArray(modifier.requires)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); + } + + break; + + case 'requiresIfExists': + if (!Array.isArray(modifier.requiresIfExists)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); + } + + break; + + case 'options': + case 'data': + break; + + default: + console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { + return "\"" + s + "\""; + }).join(', ') + "; but \"" + key + "\" was provided."); + } + + modifier.requires && modifier.requires.forEach(function (requirement) { + if (modifiers.find(function (mod) { + return mod.name === requirement; + }) == null) { + console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); }); - }); - }); - } - - function uniqueBy(arr, fn) { - var identifiers = new Set(); - return arr.filter(function (item) { - var identifier = fn(item); - - if (!identifiers.has(identifier)) { - identifiers.add(identifier); - return true; - } - }); - } - - function getBasePlacement(placement) { - return placement.split('-')[0]; - } - - function mergeByName(modifiers) { - var merged = modifiers.reduce(function (merged, current) { - var existing = merged[current.name]; - merged[current.name] = existing ? Object.assign({}, existing, current, { - options: Object.assign({}, existing.options, current.options), - data: Object.assign({}, existing.data, current.data) - }) : current; - return merged; - }, {}); // IE11 does not support Object.values - - return Object.keys(merged).map(function (key) { - return merged[key]; - }); - } - - function getViewportRect(element) { - var win = getWindow(element); - var html = getDocumentElement(element); - var visualViewport = win.visualViewport; - var width = html.clientWidth; - var height = html.clientHeight; - var x = 0; - var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper - // can be obscured underneath it. - // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even - // if it isn't open, so if this isn't available, the popper will be detected - // to overflow the bottom of the screen too early. - - if (visualViewport) { - width = visualViewport.width; - height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) - // In Chrome, it returns a value very close to 0 (+/-) but contains rounding - // errors due to floating point numbers, so we need to check precision. - // Safari returns a number <= 0, usually < -1 when pinch-zoomed - // Feature detection fails in mobile emulation mode in Chrome. - // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < - // 0.001 - // Fallback here: "Not Safari" userAgent - - if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - x = visualViewport.offsetLeft; - y = visualViewport.offsetTop; - } } - return { - width: width, - height: height, - x: x + getWindowScrollBarX(element), - y: y - }; - } + function uniqueBy(arr, fn) { + var identifiers = new Set(); + return arr.filter(function (item) { + var identifier = fn(item); - var max = Math.max; - var min = Math.min; - var round = Math.round; + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); + } - // of the `` and `` rect bounds if horizontally scrollable + function getBasePlacement(placement) { + return placement.split('-')[0]; + } - function getDocumentRect(element) { - var _element$ownerDocumen; + function mergeByName(modifiers) { + var merged = modifiers.reduce(function (merged, current) { + var existing = merged[current.name]; + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged; + }, {}); // IE11 does not support Object.values + + return Object.keys(merged).map(function (key) { + return merged[key]; + }); + } - var html = getDocumentElement(element); - var winScroll = getWindowScroll(element); - var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; - var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); - var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); - var x = -winScroll.scrollLeft + getWindowScrollBarX(element); - var y = -winScroll.scrollTop; + function getViewportRect(element, strategy) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; + + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + var layoutViewport = isLayoutViewport(); + + if (layoutViewport || !layoutViewport && strategy === 'fixed') { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } - if (getComputedStyle(body || html).direction === 'rtl') { - x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + return { + width: width, + height: height, + x: x + getWindowScrollBarX(element), + y: y + }; } - return { - width: width, - height: height, - x: x, - y: y - }; - } + // of the `` and `` rect bounds if horizontally scrollable - function contains(parent, child) { - var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method + function getDocumentRect(element) { + var _element$ownerDocumen; - if (parent.contains(child)) { - return true; - } // then fallback to custom implementation with Shadow DOM support - else if (rootNode && isShadowRoot(rootNode)) { - var next = child; + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; - do { - if (next && parent.isSameNode(next)) { - return true; - } // $FlowFixMe[prop-missing]: need a better way to handle this... - - - next = next.parentNode || next.host; - } while (next); - } // Give up, the result is false - - - return false; - } - - function rectToClientRect(rect) { - return Object.assign({}, rect, { - left: rect.x, - top: rect.y, - right: rect.x + rect.width, - bottom: rect.y + rect.height - }); - } - - function getInnerBoundingClientRect(element) { - var rect = getBoundingClientRect(element); - rect.top = rect.top + element.clientTop; - rect.left = rect.left + element.clientLeft; - rect.bottom = rect.top + element.clientHeight; - rect.right = rect.left + element.clientWidth; - rect.width = element.clientWidth; - rect.height = element.clientHeight; - rect.x = rect.left; - rect.y = rect.top; - return rect; - } - - function getClientRectFromMixedType(element, clippingParent) { - return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); - } // A "clipping parent" is an overflowable container with the characteristic of - // clipping (or hiding) overflowing elements with a position different from - // `initial` - - - function getClippingParents(element) { - var clippingParents = listScrollParents(getParentNode(element)); - var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0; - var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; - - if (!isElement(clipperElement)) { - return []; - } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 - - - return clippingParents.filter(function (clippingParent) { - return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; - }); - } // Gets the maximum area that the element is visible in due to any number of - // clipping parents - - - function getClippingRect(element, boundary, rootBoundary) { - var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); - var clippingParents = [].concat(mainClippingParents, [rootBoundary]); - var firstClippingParent = clippingParents[0]; - var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { - var rect = getClientRectFromMixedType(element, clippingParent); - accRect.top = max(rect.top, accRect.top); - accRect.right = min(rect.right, accRect.right); - accRect.bottom = min(rect.bottom, accRect.bottom); - accRect.left = max(rect.left, accRect.left); - return accRect; - }, getClientRectFromMixedType(element, firstClippingParent)); - clippingRect.width = clippingRect.right - clippingRect.left; - clippingRect.height = clippingRect.bottom - clippingRect.top; - clippingRect.x = clippingRect.left; - clippingRect.y = clippingRect.top; - return clippingRect; - } - - function getVariation(placement) { - return placement.split('-')[1]; - } - - function getMainAxisFromPlacement(placement) { - return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; - } - - function computeOffsets(_ref) { - var reference = _ref.reference, - element = _ref.element, - placement = _ref.placement; - var basePlacement = placement ? getBasePlacement(placement) : null; - var variation = placement ? getVariation(placement) : null; - var commonX = reference.x + reference.width / 2 - element.width / 2; - var commonY = reference.y + reference.height / 2 - element.height / 2; - var offsets; - - switch (basePlacement) { - case top: - offsets = { - x: commonX, - y: reference.y - element.height - }; - break; + if (getComputedStyle(body || html).direction === 'rtl') { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } - case bottom: - offsets = { - x: commonX, - y: reference.y + reference.height + return { + width: width, + height: height, + x: x, + y: y }; - break; + } - case right: - offsets = { - x: reference.x + reference.width, - y: commonY - }; - break; + function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method - case left: - offsets = { - x: reference.x - element.width, - y: commonY - }; - break; + if (parent.contains(child)) { + return true; + } // then fallback to custom implementation with Shadow DOM support + else if (rootNode && isShadowRoot(rootNode)) { + var next = child; - default: - offsets = { - x: reference.x, - y: reference.y - }; + do { + if (next && parent.isSameNode(next)) { + return true; + } // $FlowFixMe[prop-missing]: need a better way to handle this... + + + next = next.parentNode || next.host; + } while (next); + } // Give up, the result is false + + + return false; + } + + function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); } - var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + function getInnerBoundingClientRect(element, strategy) { + var rect = getBoundingClientRect(element, false, strategy === 'fixed'); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; + } + + function getClientRectFromMixedType(element, clippingParent, strategy) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + } // A "clipping parent" is an overflowable container with the characteristic of + // clipping (or hiding) overflowing elements with a position different from + // `initial` + - if (mainAxis != null) { - var len = mainAxis === 'y' ? 'height' : 'width'; + function getClippingParents(element) { + var clippingParents = listScrollParents(getParentNode(element)); + var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; - switch (variation) { - case start: - offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); - break; + if (!isElement(clipperElement)) { + return []; + } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 - case end: - offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); - break; - } + + return clippingParents.filter(function (clippingParent) { + return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; + }); + } // Gets the maximum area that the element is visible in due to any number of + // clipping parents + + + function getClippingRect(element, boundary, rootBoundary, strategy) { + var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); + var clippingParents = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents[0]; + var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent, strategy); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent, strategy)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; } - return offsets; - } + function getVariation(placement) { + return placement.split('-')[1]; + } - function getFreshSideObject() { - return { - top: 0, - right: 0, - bottom: 0, - left: 0 - }; - } - - function mergePaddingObject(paddingObject) { - return Object.assign({}, getFreshSideObject(), paddingObject); - } - - function expandToHashMap(value, keys) { - return keys.reduce(function (hashMap, key) { - hashMap[key] = value; - return hashMap; - }, {}); - } - - function detectOverflow(state, options) { - if (options === void 0) { - options = {}; + function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; } - var _options = options, - _options$placement = _options.placement, - placement = _options$placement === void 0 ? state.placement : _options$placement, - _options$boundary = _options.boundary, - boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, - _options$rootBoundary = _options.rootBoundary, - rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, - _options$elementConte = _options.elementContext, - elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, - _options$altBoundary = _options.altBoundary, - altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, - _options$padding = _options.padding, - padding = _options$padding === void 0 ? 0 : _options$padding; - var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); - var altContext = elementContext === popper ? reference : popper; - var referenceElement = state.elements.reference; - var popperRect = state.rects.popper; - var element = state.elements[altBoundary ? altContext : elementContext]; - var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); - var referenceClientRect = getBoundingClientRect(referenceElement); - var popperOffsets = computeOffsets({ - reference: referenceClientRect, - element: popperRect, - strategy: 'absolute', - placement: placement - }); - var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); - var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect - // 0 or negative = within the clipping rect - - var overflowOffsets = { - top: clippingClientRect.top - elementClientRect.top + paddingObject.top, - bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, - left: clippingClientRect.left - elementClientRect.left + paddingObject.left, - right: elementClientRect.right - clippingClientRect.right + paddingObject.right - }; - var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element - - if (elementContext === popper && offsetData) { - var offset = offsetData[placement]; - Object.keys(overflowOffsets).forEach(function (key) { - var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; - var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; - overflowOffsets[key] += offset[axis] * multiply; - }); + function computeOffsets(_ref) { + var reference = _ref.reference, + element = _ref.element, + placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference.x + reference.width / 2 - element.width / 2; + var commonY = reference.y + reference.height / 2 - element.height / 2; + var offsets; + + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference.y - element.height + }; + break; + + case bottom: + offsets = { + x: commonX, + y: reference.y + reference.height + }; + break; + + case right: + offsets = { + x: reference.x + reference.width, + y: commonY + }; + break; + + case left: + offsets = { + x: reference.x - element.width, + y: commonY + }; + break; + + default: + offsets = { + x: reference.x, + y: reference.y + }; + } + + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + + if (mainAxis != null) { + var len = mainAxis === 'y' ? 'height' : 'width'; + + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); + break; + + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); + break; + } + } + + return offsets; } - return overflowOffsets; - } + function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; + } - var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; - var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; - var DEFAULT_OPTIONS = { - placement: 'bottom', - modifiers: [], - strategy: 'absolute' - }; + function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); + } - function areValidElements() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; + function expandToHashMap(value, keys) { + return keys.reduce(function (hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); } - return !args.some(function (element) { - return !(element && typeof element.getBoundingClientRect === 'function'); - }); - } + function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + _options$placement = _options.placement, + placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$strategy = _options.strategy, + strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, + _options$boundary = _options.boundary, + boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, + _options$rootBoundary = _options.rootBoundary, + rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, + _options$elementConte = _options.elementContext, + elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, + _options$altBoundary = _options.altBoundary, + altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, + _options$padding = _options.padding, + padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: 'absolute', + placement: placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect + // 0 or negative = within the clipping rect + + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element + + if (elementContext === popper && offsetData) { + var offset = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function (key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; + overflowOffsets[key] += offset[axis] * multiply; + }); + } - function popperGenerator(generatorOptions) { - if (generatorOptions === void 0) { - generatorOptions = {}; + return overflowOffsets; } - var _generatorOptions = generatorOptions, - _generatorOptions$def = _generatorOptions.defaultModifiers, - defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, - _generatorOptions$def2 = _generatorOptions.defaultOptions, - defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; - return function createPopper(reference, popper, options) { - if (options === void 0) { - options = defaultOptions; - } - - var state = { + var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; + var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; + var DEFAULT_OPTIONS = { placement: 'bottom', - orderedModifiers: [], - options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), - modifiersData: {}, - elements: { - reference: reference, - popper: popper - }, - attributes: {}, - styles: {} - }; - var effectCleanupFns = []; - var isDestroyed = false; - var instance = { - state: state, - setOptions: function setOptions(options) { - cleanupModifierEffects(); - state.options = Object.assign({}, defaultOptions, state.options, options); - state.scrollParents = { - reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], - popper: listScrollParents(popper) - }; // Orders the modifiers based on their dependencies and `phase` - // properties - - var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers - - state.orderedModifiers = orderedModifiers.filter(function (m) { - return m.enabled; - }); // Validate the provided modifiers so that the consumer will get warned - // if one of the modifiers is invalid for any reason - - { - var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) { - var name = _ref.name; - return name; - }); - validateModifiers(modifiers); + modifiers: [], + strategy: 'absolute' + }; + + function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return !args.some(function (element) { + return !(element && typeof element.getBoundingClientRect === 'function'); + }); + } - if (getBasePlacement(state.options.placement) === auto) { - var flipModifier = state.orderedModifiers.find(function (_ref2) { - var name = _ref2.name; - return name === 'flip'; - }); + function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } - if (!flipModifier) { - console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); - } + var _generatorOptions = generatorOptions, + _generatorOptions$def = _generatorOptions.defaultModifiers, + defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, + _generatorOptions$def2 = _generatorOptions.defaultOptions, + defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper(reference, popper, options) { + if (options === void 0) { + options = defaultOptions; } - var _getComputedStyle = getComputedStyle(popper), - marginTop = _getComputedStyle.marginTop, - marginRight = _getComputedStyle.marginRight, - marginBottom = _getComputedStyle.marginBottom, - marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can - // cause bugs with positioning, so we'll warn the consumer + var state = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference, + popper: popper + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state: state, + setOptions: function setOptions(setOptionsAction) { + var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options); + state.scrollParents = { + reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], + popper: listScrollParents(popper) + }; // Orders the modifiers based on their dependencies and `phase` + // properties + + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers + + state.orderedModifiers = orderedModifiers.filter(function (m) { + return m.enabled; + }); // Validate the provided modifiers so that the consumer will get warned + // if one of the modifiers is invalid for any reason + + { + var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) { + var name = _ref.name; + return name; + }); + validateModifiers(modifiers); + + if (getBasePlacement(state.options.placement) === auto) { + var flipModifier = state.orderedModifiers.find(function (_ref2) { + var name = _ref2.name; + return name === 'flip'; + }); + + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); + } + } + + var _getComputedStyle = getComputedStyle(popper), + marginTop = _getComputedStyle.marginTop, + marginRight = _getComputedStyle.marginRight, + marginBottom = _getComputedStyle.marginBottom, + marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can + // cause bugs with positioning, so we'll warn the consumer + + + if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); + } + } + + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + + var _state$elements = state.elements, + reference = _state$elements.reference, + popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements + // anymore + + if (!areValidElements(reference, popper)) { + { + console.error(INVALID_ELEMENT_ERROR); + } + + return; + } // Store the reference and popper rects to be read by modifiers + + + state.rects = { + reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), + popper: getLayoutRect(popper) + }; // Modifiers have the ability to reset the current update cycle. The + // most common use case for this is the `flip` modifier changing the + // placement, which then needs to re-run all the modifiers, because the + // logic was previously ran for the previous placement and is therefore + // stale/incorrect + + state.reset = false; + state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier + // is filled with the initial data specified by the modifier. This means + // it doesn't persist and is fresh on each update. + // To ensure persistent data, use `${name}#persistent` + + state.orderedModifiers.forEach(function (modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + var __debug_loops__ = 0; + + for (var index = 0; index < state.orderedModifiers.length; index++) { + { + __debug_loops__ += 1; + + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } + + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + + var _state$orderedModifie = state.orderedModifiers[index], + fn = _state$orderedModifie.fn, + _state$orderedModifie2 = _state$orderedModifie.options, + _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, + name = _state$orderedModifie.name; + + if (typeof fn === 'function') { + state = fn({ + state: state, + options: _options, + name: name, + instance: instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function () { + return new Promise(function (resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + + if (!areValidElements(reference, popper)) { + { + console.error(INVALID_ELEMENT_ERROR); + } + + return instance; + } + instance.setOptions(options).then(function (state) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state); + } + }); // Modifiers have the ability to execute arbitrary code before the first + // update cycle runs. They will be executed in the same order as the update + // cycle. This is useful when a modifier adds some persistent data that + // other modifiers need to use, but the modifier is run after the dependent + // one. + + function runModifierEffects() { + state.orderedModifiers.forEach(function (_ref3) { + var name = _ref3.name, + _ref3$options = _ref3.options, + options = _ref3$options === void 0 ? {} : _ref3$options, + effect = _ref3.effect; + + if (typeof effect === 'function') { + var cleanupFn = effect({ + state: state, + name: name, + instance: instance, + options: options + }); + + var noopFn = function noopFn() { + }; + + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } - if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { - return parseFloat(margin); - })) { - console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); + function cleanupModifierEffects() { + effectCleanupFns.forEach(function (fn) { + return fn(); + }); + effectCleanupFns = []; } - } - runModifierEffects(); - return instance.update(); - }, - // Sync update – it will always be executed, even if not necessary. This - // is useful for low frequency updates where sync behavior simplifies the - // logic. - // For high frequency updates (e.g. `resize` and `scroll` events), always - // prefer the async Popper#update method - forceUpdate: function forceUpdate() { - if (isDestroyed) { - return; - } + return instance; + }; + } - var _state$elements = state.elements, - reference = _state$elements.reference, - popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements - // anymore + var passive = { + passive: true + }; - if (!areValidElements(reference, popper)) { - { - console.error(INVALID_ELEMENT_ERROR); - } + function effect$2(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); + } - return; - } // Store the reference and popper rects to be read by modifiers - - - state.rects = { - reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), - popper: getLayoutRect(popper) - }; // Modifiers have the ability to reset the current update cycle. The - // most common use case for this is the `flip` modifier changing the - // placement, which then needs to re-run all the modifiers, because the - // logic was previously ran for the previous placement and is therefore - // stale/incorrect - - state.reset = false; - state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier - // is filled with the initial data specified by the modifier. This means - // it doesn't persist and is fresh on each update. - // To ensure persistent data, use `${name}#persistent` - - state.orderedModifiers.forEach(function (modifier) { - return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); - }); - var __debug_loops__ = 0; - - for (var index = 0; index < state.orderedModifiers.length; index++) { - { - __debug_loops__ += 1; + if (resize) { + window.addEventListener('resize', instance.update, passive); + } - if (__debug_loops__ > 100) { - console.error(INFINITE_LOOP_ERROR); - break; - } + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); } - if (state.reset === true) { - state.reset = false; - index = -1; - continue; + if (resize) { + window.removeEventListener('resize', instance.update, passive); } + }; + } // eslint-disable-next-line import/no-unused-modules - var _state$orderedModifie = state.orderedModifiers[index], - fn = _state$orderedModifie.fn, - _state$orderedModifie2 = _state$orderedModifie.options, - _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, - name = _state$orderedModifie.name; - if (typeof fn === 'function') { - state = fn({ - state: state, - options: _options, - name: name, - instance: instance - }) || state; - } - } + var eventListeners = { + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() { }, - // Async and optimistically optimized update – it will not be executed if - // not necessary (debounced to run at most once-per-tick) - update: debounce(function () { - return new Promise(function (resolve) { - instance.forceUpdate(); - resolve(state); - }); - }), - destroy: function destroy() { - cleanupModifierEffects(); - isDestroyed = true; + effect: effect$2, + data: {} + }; + + function popperOffsets(_ref) { + var state = _ref.state, + name = _ref.name; + // Offsets are the actual position the popper needs to have to be + // properly positioned near its reference element + // This is the most basic placement, and will be adjusted by + // the modifiers in the next step + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: 'absolute', + placement: state.placement + }); + } // eslint-disable-next-line import/no-unused-modules + + + var popperOffsets$1 = { + name: 'popperOffsets', + enabled: true, + phase: 'read', + fn: popperOffsets, + data: {} + }; + + var unsetSides = { + top: 'auto', + right: 'auto', + bottom: 'auto', + left: 'auto' + }; // Round the offsets to the nearest suitable subpixel based on the DPR. + // Zooming can change the DPR, but it seems to report a value that will + // cleanly divide the values into the appropriate subpixels. + + function roundOffsetsByDPR(_ref) { + var x = _ref.x, + y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 + }; + } + + function mapToStyles(_ref2) { + var _Object$assign2; + + var popper = _ref2.popper, + popperRect = _ref2.popperRect, + placement = _ref2.placement, + variation = _ref2.variation, + offsets = _ref2.offsets, + position = _ref2.position, + gpuAcceleration = _ref2.gpuAcceleration, + adaptive = _ref2.adaptive, + roundOffsets = _ref2.roundOffsets, + isFixed = _ref2.isFixed; + var _offsets$x = offsets.x, + x = _offsets$x === void 0 ? 0 : _offsets$x, + _offsets$y = offsets.y, + y = _offsets$y === void 0 ? 0 : _offsets$y; + + var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ + x: x, + y: y + }) : { + x: x, + y: y + }; + + x = _ref3.x; + y = _ref3.y; + var hasX = offsets.hasOwnProperty('x'); + var hasY = offsets.hasOwnProperty('y'); + var sideX = left; + var sideY = top; + var win = window; + + if (adaptive) { + var offsetParent = getOffsetParent(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; + + if (offsetParent === getWindow(popper)) { + offsetParent = getDocumentElement(popper); + + if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } + } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it + + + offsetParent = offsetParent; + + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] + offsetParent[heightProp]; + y -= offsetY - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] + offsetParent[widthProp]; + x -= offsetX - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + + var commonStyles = Object.assign({ + position: position + }, adaptive && unsetSides); + + var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ + x: x, + y: y + }) : { + x: x, + y: y + }; + + x = _ref4.x; + y = _ref4.y; + + if (gpuAcceleration) { + var _Object$assign; + + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); } - }; - if (!areValidElements(reference, popper)) { + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); + } + + function computeStyles(_ref5) { + var state = _ref5.state, + options = _ref5.options; + var _options$gpuAccelerat = options.gpuAcceleration, + gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, + _options$adaptive = options.adaptive, + adaptive = _options$adaptive === void 0 ? true : _options$adaptive, + _options$roundOffsets = options.roundOffsets, + roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + { - console.error(INVALID_ELEMENT_ERROR); + var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || ''; + + if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); + } } - return instance; - } + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration: gpuAcceleration, + isFixed: state.options.strategy === 'fixed' + }; - instance.setOptions(options).then(function (state) { - if (!isDestroyed && options.onFirstUpdate) { - options.onFirstUpdate(state); + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive: adaptive, + roundOffsets: roundOffsets + }))); } - }); // Modifiers have the ability to execute arbitrary code before the first - // update cycle runs. They will be executed in the same order as the update - // cycle. This is useful when a modifier adds some persistent data that - // other modifiers need to use, but the modifier is run after the dependent - // one. - - function runModifierEffects() { - state.orderedModifiers.forEach(function (_ref3) { - var name = _ref3.name, - _ref3$options = _ref3.options, - options = _ref3$options === void 0 ? {} : _ref3$options, - effect = _ref3.effect; - - if (typeof effect === 'function') { - var cleanupFn = effect({ - state: state, - name: name, - instance: instance, - options: options - }); - var noopFn = function noopFn() {}; + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: 'absolute', + adaptive: false, + roundOffsets: roundOffsets + }))); + } - effectCleanupFns.push(cleanupFn || noopFn); - } + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-placement': state.placement }); - } + } // eslint-disable-next-line import/no-unused-modules - function cleanupModifierEffects() { - effectCleanupFns.forEach(function (fn) { - return fn(); - }); - effectCleanupFns = []; - } - return instance; + var computeStyles$1 = { + name: 'computeStyles', + enabled: true, + phase: 'beforeWrite', + fn: computeStyles, + data: {} }; - } - - var passive = { - passive: true - }; - - function effect$2(_ref) { - var state = _ref.state, - instance = _ref.instance, - options = _ref.options; - var _options$scroll = options.scroll, - scroll = _options$scroll === void 0 ? true : _options$scroll, - _options$resize = options.resize, - resize = _options$resize === void 0 ? true : _options$resize; - var window = getWindow(state.elements.popper); - var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); - - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.addEventListener('scroll', instance.update, passive); - }); - } - if (resize) { - window.addEventListener('resize', instance.update, passive); - } + // and applies them to the HTMLElements such as popper and arrow + + function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function (name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; // arrow is optional + virtual elements - return function () { - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.removeEventListener('scroll', instance.update, passive); + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } // Flow doesn't support to extend this property, but it's the most + // effective way to apply styles to an HTMLElement + // $FlowFixMe[cannot-write] + + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (name) { + var value = attributes[name]; + + if (value === false) { + element.removeAttribute(name); + } else { + element.setAttribute(name, value === true ? '' : value); + } + }); }); - } + } - if (resize) { - window.removeEventListener('resize', instance.update, passive); - } - }; - } // eslint-disable-next-line import/no-unused-modules - - - var eventListeners = { - name: 'eventListeners', - enabled: true, - phase: 'write', - fn: function fn() {}, - effect: effect$2, - data: {} - }; - - function popperOffsets(_ref) { - var state = _ref.state, - name = _ref.name; - // Offsets are the actual position the popper needs to have to be - // properly positioned near its reference element - // This is the most basic placement, and will be adjusted by - // the modifiers in the next step - state.modifiersData[name] = computeOffsets({ - reference: state.rects.reference, - element: state.rects.popper, - strategy: 'absolute', - placement: state.placement - }); - } // eslint-disable-next-line import/no-unused-modules - - - var popperOffsets$1 = { - name: 'popperOffsets', - enabled: true, - phase: 'read', - fn: popperOffsets, - data: {} - }; - - var unsetSides = { - top: 'auto', - right: 'auto', - bottom: 'auto', - left: 'auto' - }; // Round the offsets to the nearest suitable subpixel based on the DPR. - // Zooming can change the DPR, but it seems to report a value that will - // cleanly divide the values into the appropriate subpixels. - - function roundOffsetsByDPR(_ref) { - var x = _ref.x, - y = _ref.y; - var win = window; - var dpr = win.devicePixelRatio || 1; - return { - x: round(round(x * dpr) / dpr) || 0, - y: round(round(y * dpr) / dpr) || 0 - }; - } - - function mapToStyles(_ref2) { - var _Object$assign2; - - var popper = _ref2.popper, - popperRect = _ref2.popperRect, - placement = _ref2.placement, - offsets = _ref2.offsets, - position = _ref2.position, - gpuAcceleration = _ref2.gpuAcceleration, - adaptive = _ref2.adaptive, - roundOffsets = _ref2.roundOffsets; - - var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets, - _ref3$x = _ref3.x, - x = _ref3$x === void 0 ? 0 : _ref3$x, - _ref3$y = _ref3.y, - y = _ref3$y === void 0 ? 0 : _ref3$y; - - var hasX = offsets.hasOwnProperty('x'); - var hasY = offsets.hasOwnProperty('y'); - var sideX = left; - var sideY = top; - var win = window; - - if (adaptive) { - var offsetParent = getOffsetParent(popper); - var heightProp = 'clientHeight'; - var widthProp = 'clientWidth'; - - if (offsetParent === getWindow(popper)) { - offsetParent = getDocumentElement(popper); - - if (getComputedStyle(offsetParent).position !== 'static') { - heightProp = 'scrollHeight'; - widthProp = 'scrollWidth'; + function effect$1(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { + position: 'absolute' + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); } - } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it + return function () { + Object.keys(state.elements).forEach(function (name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them + + var style = styleProperties.reduce(function (style, property) { + style[property] = ''; + return style; + }, {}); // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (attribute) { + element.removeAttribute(attribute); + }); + }); + }; + } // eslint-disable-next-line import/no-unused-modules - offsetParent = offsetParent; - if (placement === top) { - sideY = bottom; // $FlowFixMe[prop-missing] + var applyStyles$1 = { + name: 'applyStyles', + enabled: true, + phase: 'write', + fn: applyStyles, + effect: effect$1, + requires: ['computeStyles'] + }; - y -= offsetParent[heightProp] - popperRect.height; - y *= gpuAcceleration ? 1 : -1; - } + function distanceAndSkiddingToXY(placement, rects, offset) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { + placement: placement + })) : offset, + skidding = _ref[0], + distance = _ref[1]; + + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; + } - if (placement === left) { - sideX = right; // $FlowFixMe[prop-missing] + function offset(_ref2) { + var state = _ref2.state, + options = _ref2.options, + name = _ref2.name; + var _options$offset = options.offset, + offset = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function (acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); + return acc; + }, {}); + var _data$state$placement = data[state.placement], + x = _data$state$placement.x, + y = _data$state$placement.y; + + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } - x -= offsetParent[widthProp] - popperRect.width; - x *= gpuAcceleration ? 1 : -1; - } - } + state.modifiersData[name] = data; + } // eslint-disable-next-line import/no-unused-modules - var commonStyles = Object.assign({ - position: position - }, adaptive && unsetSides); - if (gpuAcceleration) { - var _Object$assign; + var offset$1 = { + name: 'offset', + enabled: true, + phase: 'main', + requires: ['popperOffsets'], + fn: offset + }; - return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); - } + var hash$1 = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' + }; - return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); - } - - function computeStyles(_ref4) { - var state = _ref4.state, - options = _ref4.options; - var _options$gpuAccelerat = options.gpuAcceleration, - gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, - _options$adaptive = options.adaptive, - adaptive = _options$adaptive === void 0 ? true : _options$adaptive, - _options$roundOffsets = options.roundOffsets, - roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; - - { - var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || ''; - - if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { - return transitionProperty.indexOf(property) >= 0; - })) { - console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); - } + function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash$1[matched]; + }); } - var commonStyles = { - placement: getBasePlacement(state.placement), - popper: state.elements.popper, - popperRect: state.rects.popper, - gpuAcceleration: gpuAcceleration + var hash = { + start: 'end', + end: 'start' }; - if (state.modifiersData.popperOffsets != null) { - state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.popperOffsets, - position: state.options.strategy, - adaptive: adaptive, - roundOffsets: roundOffsets - }))); + function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function (matched) { + return hash[matched]; + }); } - if (state.modifiersData.arrow != null) { - state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.arrow, - position: 'absolute', - adaptive: false, - roundOffsets: roundOffsets - }))); + function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + placement = _options.placement, + boundary = _options.boundary, + rootBoundary = _options.rootBoundary, + padding = _options.padding, + flipVariations = _options.flipVariations, + _options$allowedAutoP = _options.allowedAutoPlacements, + allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { + return getVariation(placement) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function (placement) { + return allowedAutoPlacements.indexOf(placement) >= 0; + }); + + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + + { + console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); + } + } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... + + + var overflows = allowedPlacements.reduce(function (acc, placement) { + acc[placement] = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding + })[getBasePlacement(placement)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function (a, b) { + return overflows[a] - overflows[b]; + }); } - state.attributes.popper = Object.assign({}, state.attributes.popper, { - 'data-popper-placement': state.placement - }); - } // eslint-disable-next-line import/no-unused-modules + function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + } - var computeStyles$1 = { - name: 'computeStyles', - enabled: true, - phase: 'beforeWrite', - fn: computeStyles, - data: {} - }; + function flip(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; - // and applies them to the HTMLElements such as popper and arrow + if (state.modifiersData[name]._skip) { + return; + } - function applyStyles(_ref) { - var state = _ref.state; - Object.keys(state.elements).forEach(function (name) { - var style = state.styles[name] || {}; - var attributes = state.attributes[name] || {}; - var element = state.elements[name]; // arrow is optional + virtual elements + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, + specifiedFallbackPlacements = options.fallbackPlacements, + padding = options.padding, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + _options$flipVariatio = options.flipVariations, + flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, + allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { + return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + flipVariations: flipVariations, + allowedAutoPlacements: allowedAutoPlacements + }) : placement); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements[0]; + + for (var i = 0; i < placements.length; i++) { + var placement = placements[i]; + + var _basePlacement = getBasePlacement(placement); + + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? 'width' : 'height'; + var overflow = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + altBoundary: altBoundary, + padding: padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; - if (!isHTMLElement(element) || !getNodeName(element)) { - return; - } // Flow doesn't support to extend this property, but it's the most - // effective way to apply styles to an HTMLElement - // $FlowFixMe[cannot-write] + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (name) { - var value = attributes[name]; + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } - if (value === false) { - element.removeAttribute(name); - } else { - element.setAttribute(name, value === true ? '' : value); + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + + if (checks.every(function (check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + + checksMap.set(placement, checks); } - }); - }); - } - - function effect$1(_ref2) { - var state = _ref2.state; - var initialStyles = { - popper: { - position: state.options.strategy, - left: '0', - top: '0', - margin: '0' - }, - arrow: { - position: 'absolute' - }, - reference: {} - }; - Object.assign(state.elements.popper.style, initialStyles.popper); - state.styles = initialStyles; - if (state.elements.arrow) { - Object.assign(state.elements.arrow.style, initialStyles.arrow); - } + if (makeFallbackChecks) { + // `2` may be desired in some cases – research later + var numberOfChecks = flipVariations ? 3 : 1; + + var _loop = function _loop(_i) { + var fittingPlacement = placements.find(function (placement) { + var checks = checksMap.get(placement); - return function () { - Object.keys(state.elements).forEach(function (name) { - var element = state.elements[name]; - var attributes = state.attributes[name] || {}; - var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them + if (checks) { + return checks.slice(0, _i).every(function (check) { + return check; + }); + } + }); - var style = styleProperties.reduce(function (style, property) { - style[property] = ''; - return style; - }, {}); // arrow is optional + virtual elements + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; - if (!isHTMLElement(element) || !getNodeName(element)) { - return; + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + + if (_ret === "break") break; + } } - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (attribute) { - element.removeAttribute(attribute); - }); - }); - }; - } // eslint-disable-next-line import/no-unused-modules - - - var applyStyles$1 = { - name: 'applyStyles', - enabled: true, - phase: 'write', - fn: applyStyles, - effect: effect$1, - requires: ['computeStyles'] - }; - - function distanceAndSkiddingToXY(placement, rects, offset) { - var basePlacement = getBasePlacement(placement); - var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; - - var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { - placement: placement - })) : offset, - skidding = _ref[0], - distance = _ref[1]; - - skidding = skidding || 0; - distance = (distance || 0) * invertDistance; - return [left, right].indexOf(basePlacement) >= 0 ? { - x: distance, - y: skidding - } : { - x: skidding, - y: distance + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } + } // eslint-disable-next-line import/no-unused-modules + + + var flip$1 = { + name: 'flip', + enabled: true, + phase: 'main', + fn: flip, + requiresIfExists: ['offset'], + data: { + _skip: false + } }; - } - - function offset(_ref2) { - var state = _ref2.state, - options = _ref2.options, - name = _ref2.name; - var _options$offset = options.offset, - offset = _options$offset === void 0 ? [0, 0] : _options$offset; - var data = placements.reduce(function (acc, placement) { - acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); - return acc; - }, {}); - var _data$state$placement = data[state.placement], - x = _data$state$placement.x, - y = _data$state$placement.y; - - if (state.modifiersData.popperOffsets != null) { - state.modifiersData.popperOffsets.x += x; - state.modifiersData.popperOffsets.y += y; + + function getAltAxis(axis) { + return axis === 'x' ? 'y' : 'x'; } - state.modifiersData[name] = data; - } // eslint-disable-next-line import/no-unused-modules - - - var offset$1 = { - name: 'offset', - enabled: true, - phase: 'main', - requires: ['popperOffsets'], - fn: offset - }; - - var hash$1 = { - left: 'right', - right: 'left', - bottom: 'top', - top: 'bottom' - }; - function getOppositePlacement(placement) { - return placement.replace(/left|right|bottom|top/g, function (matched) { - return hash$1[matched]; - }); - } - - var hash = { - start: 'end', - end: 'start' - }; - function getOppositeVariationPlacement(placement) { - return placement.replace(/start|end/g, function (matched) { - return hash[matched]; - }); - } - - function computeAutoPlacement(state, options) { - if (options === void 0) { - options = {}; + function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); } - var _options = options, - placement = _options.placement, - boundary = _options.boundary, - rootBoundary = _options.rootBoundary, - padding = _options.padding, - flipVariations = _options.flipVariations, - _options$allowedAutoP = _options.allowedAutoPlacements, - allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; - var variation = getVariation(placement); - var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { - return getVariation(placement) === variation; - }) : basePlacements; - var allowedPlacements = placements$1.filter(function (placement) { - return allowedAutoPlacements.indexOf(placement) >= 0; - }); - - if (allowedPlacements.length === 0) { - allowedPlacements = placements$1; - - { - console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); - } - } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... - - - var overflows = allowedPlacements.reduce(function (acc, placement) { - acc[placement] = detectOverflow(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding - })[getBasePlacement(placement)]; - return acc; - }, {}); - return Object.keys(overflows).sort(function (a, b) { - return overflows[a] - overflows[b]; - }); - } - - function getExpandedFallbackPlacements(placement) { - if (getBasePlacement(placement) === auto) { - return []; + function withinMaxClamp(min, value, max) { + var v = within(min, value, max); + return v > max ? max : v; } - var oppositePlacement = getOppositePlacement(placement); - return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; - } + function preventOverflow(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + padding = options.padding, + _options$tether = options.tether, + tether = _options$tether === void 0 ? true : _options$tether, + _options$tetherOffset = options.tetherOffset, + tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + altBoundary: altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; + var data = { + x: 0, + y: 0 + }; - function flip(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; + if (!popperOffsets) { + return; + } - if (state.modifiersData[name]._skip) { - return; - } + if (checkMainAxis) { + var _offsetModifierState$; + + var mainSide = mainAxis === 'y' ? top : left; + var altSide = mainAxis === 'y' ? bottom : right; + var len = mainAxis === 'y' ? 'height' : 'width'; + var offset = popperOffsets[mainAxis]; + var min$1 = offset + overflow[mainSide]; + var max$1 = offset - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go + // outside the reference bounds + + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want + // to include its full size in the calculation. If the reference is small + // and near the edge of a boundary, the popper can overflow even if the + // reference is not overflowing as well (e.g. virtual elements with no + // width or height) + + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, - specifiedFallbackPlacements = options.fallbackPlacements, - padding = options.padding, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - _options$flipVariatio = options.flipVariations, - flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, - allowedAutoPlacements = options.allowedAutoPlacements; - var preferredPlacement = state.options.placement; - var basePlacement = getBasePlacement(preferredPlacement); - var isBasePlacement = basePlacement === preferredPlacement; - var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); - var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { - return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - flipVariations: flipVariations, - allowedAutoPlacements: allowedAutoPlacements - }) : placement); - }, []); - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var checksMap = new Map(); - var makeFallbackChecks = true; - var firstFittingPlacement = placements[0]; - - for (var i = 0; i < placements.length; i++) { - var placement = placements[i]; - - var _basePlacement = getBasePlacement(placement); - - var isStartVariation = getVariation(placement) === start; - var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; - var len = isVertical ? 'width' : 'height'; - var overflow = detectOverflow(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - altBoundary: altBoundary, - padding: padding - }); - var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; - - if (referenceRect[len] > popperRect[len]) { - mainVariationSide = getOppositePlacement(mainVariationSide); - } - - var altVariationSide = getOppositePlacement(mainVariationSide); - var checks = []; - - if (checkMainAxis) { - checks.push(overflow[_basePlacement] <= 0); - } - - if (checkAltAxis) { - checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); - } - - if (checks.every(function (check) { - return check; - })) { - firstFittingPlacement = placement; - makeFallbackChecks = false; - break; - } - - checksMap.set(placement, checks); - } + if (checkAltAxis) { + var _offsetModifierState$2; - if (makeFallbackChecks) { - // `2` may be desired in some cases – research later - var numberOfChecks = flipVariations ? 3 : 1; + var _mainSide = mainAxis === 'x' ? top : left; - var _loop = function _loop(_i) { - var fittingPlacement = placements.find(function (placement) { - var checks = checksMap.get(placement); + var _altSide = mainAxis === 'x' ? bottom : right; - if (checks) { - return checks.slice(0, _i).every(function (check) { - return check; - }); - } - }); + var _offset = popperOffsets[altAxis]; - if (fittingPlacement) { - firstFittingPlacement = fittingPlacement; - return "break"; - } - }; + var _len = altAxis === 'y' ? 'height' : 'width'; - for (var _i = numberOfChecks; _i > 0; _i--) { - var _ret = _loop(_i); + var _min = _offset + overflow[_mainSide]; - if (_ret === "break") break; - } - } + var _max = _offset - overflow[_altSide]; - if (state.placement !== firstFittingPlacement) { - state.modifiersData[name]._skip = true; - state.placement = firstFittingPlacement; - state.reset = true; - } - } // eslint-disable-next-line import/no-unused-modules + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; - var flip$1 = { - name: 'flip', - enabled: true, - phase: 'main', - fn: flip, - requiresIfExists: ['offset'], - data: { - _skip: false - } - }; - - function getAltAxis(axis) { - return axis === 'x' ? 'y' : 'x'; - } - - function within(min$1, value, max$1) { - return max(min$1, min(value, max$1)); - } - - function preventOverflow(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - padding = options.padding, - _options$tether = options.tether, - tether = _options$tether === void 0 ? true : _options$tether, - _options$tetherOffset = options.tetherOffset, - tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; - var overflow = detectOverflow(state, { - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - altBoundary: altBoundary - }); - var basePlacement = getBasePlacement(state.placement); - var variation = getVariation(state.placement); - var isBasePlacement = !variation; - var mainAxis = getMainAxisFromPlacement(basePlacement); - var altAxis = getAltAxis(mainAxis); - var popperOffsets = state.modifiersData.popperOffsets; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { - placement: state.placement - })) : tetherOffset; - var data = { - x: 0, - y: 0 + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + + state.modifiersData[name] = data; + } // eslint-disable-next-line import/no-unused-modules + + + var preventOverflow$1 = { + name: 'preventOverflow', + enabled: true, + phase: 'main', + fn: preventOverflow, + requiresIfExists: ['offset'] }; - if (!popperOffsets) { - return; - } + var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + }; - if (checkMainAxis || checkAltAxis) { - var mainSide = mainAxis === 'y' ? top : left; - var altSide = mainAxis === 'y' ? bottom : right; - var len = mainAxis === 'y' ? 'height' : 'width'; - var offset = popperOffsets[mainAxis]; - var min$1 = popperOffsets[mainAxis] + overflow[mainSide]; - var max$1 = popperOffsets[mainAxis] - overflow[altSide]; - var additive = tether ? -popperRect[len] / 2 : 0; - var minLen = variation === start ? referenceRect[len] : popperRect[len]; - var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go - // outside the reference bounds - - var arrowElement = state.elements.arrow; - var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { - width: 0, - height: 0 - }; - var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); - var arrowPaddingMin = arrowPaddingObject[mainSide]; - var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want - // to include its full size in the calculation. If the reference is small - // and near the edge of a boundary, the popper can overflow even if the - // reference is not overflowing as well (e.g. virtual elements with no - // width or height) - - var arrowLen = within(0, referenceRect[len], arrowRect[len]); - var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue; - var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue; - var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); - var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; - var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0; - var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset; - var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue; - - if (checkMainAxis) { - var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); - popperOffsets[mainAxis] = preventedOffset; - data[mainAxis] = preventedOffset - offset; - } - - if (checkAltAxis) { - var _mainSide = mainAxis === 'x' ? top : left; - - var _altSide = mainAxis === 'x' ? bottom : right; - - var _offset = popperOffsets[altAxis]; - - var _min = _offset + overflow[_mainSide]; - - var _max = _offset - overflow[_altSide]; - - var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max); - - popperOffsets[altAxis] = _preventedOffset; - data[altAxis] = _preventedOffset - _offset; - } - } + function arrow(_ref) { + var _state$modifiersData$; - state.modifiersData[name] = data; - } // eslint-disable-next-line import/no-unused-modules - - - var preventOverflow$1 = { - name: 'preventOverflow', - enabled: true, - phase: 'main', - fn: preventOverflow, - requiresIfExists: ['offset'] - }; - - var toPaddingObject = function toPaddingObject(padding, state) { - padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { - placement: state.placement - })) : padding; - return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); - }; - - function arrow(_ref) { - var _state$modifiersData$; - - var state = _ref.state, - name = _ref.name, - options = _ref.options; - var arrowElement = state.elements.arrow; - var popperOffsets = state.modifiersData.popperOffsets; - var basePlacement = getBasePlacement(state.placement); - var axis = getMainAxisFromPlacement(basePlacement); - var isVertical = [left, right].indexOf(basePlacement) >= 0; - var len = isVertical ? 'height' : 'width'; - - if (!arrowElement || !popperOffsets) { - return; - } + var state = _ref.state, + name = _ref.name, + options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? 'height' : 'width'; - var paddingObject = toPaddingObject(options.padding, state); - var arrowRect = getLayoutRect(arrowElement); - var minProp = axis === 'y' ? top : left; - var maxProp = axis === 'y' ? bottom : right; - var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; - var startDiff = popperOffsets[axis] - state.rects.reference[axis]; - var arrowOffsetParent = getOffsetParent(arrowElement); - var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; - var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is - // outside of the popper bounds - - var min = paddingObject[minProp]; - var max = clientSize - arrowRect[len] - paddingObject[maxProp]; - var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; - var offset = within(min, center, max); // Prevents breaking syntax highlighting... - - var axisProp = axis; - state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); - } - - function effect(_ref2) { - var state = _ref2.state, - options = _ref2.options; - var _options$element = options.element, - arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; - - if (arrowElement == null) { - return; - } // CSS selector - - - if (typeof arrowElement === 'string') { - arrowElement = state.elements.popper.querySelector(arrowElement); - - if (!arrowElement) { - return; - } - } + if (!arrowElement || !popperOffsets) { + return; + } - { - if (!isHTMLElement(arrowElement)) { - console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); - } + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === 'y' ? top : left; + var maxProp = axis === 'y' ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; + var startDiff = popperOffsets[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is + // outside of the popper bounds + + var min = paddingObject[minProp]; + var max = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset = within(min, center, max); // Prevents breaking syntax highlighting... + + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); } - if (!contains(state.elements.popper, arrowElement)) { - { - console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); - } + function effect(_ref2) { + var state = _ref2.state, + options = _ref2.options; + var _options$element = options.element, + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; + + if (arrowElement == null) { + return; + } // CSS selector + + + if (typeof arrowElement === 'string') { + arrowElement = state.elements.popper.querySelector(arrowElement); + + if (!arrowElement) { + return; + } + } + + { + if (!isHTMLElement(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); + } + } + + if (!contains(state.elements.popper, arrowElement)) { + { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); + } + + return; + } + + state.elements.arrow = arrowElement; + } // eslint-disable-next-line import/no-unused-modules + + + var arrow$1 = { + name: 'arrow', + enabled: true, + phase: 'main', + fn: arrow, + effect: effect, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] + }; + + function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } - return; + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; } - state.elements.arrow = arrowElement; - } // eslint-disable-next-line import/no-unused-modules - - - var arrow$1 = { - name: 'arrow', - enabled: true, - phase: 'main', - fn: arrow, - effect: effect, - requires: ['popperOffsets'], - requiresIfExists: ['preventOverflow'] - }; - - function getSideOffsets(overflow, rect, preventedOffsets) { - if (preventedOffsets === void 0) { - preventedOffsets = { - x: 0, - y: 0 - }; + function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function (side) { + return overflow[side] >= 0; + }); } - return { - top: overflow.top - rect.height - preventedOffsets.y, - right: overflow.right - rect.width + preventedOffsets.x, - bottom: overflow.bottom - rect.height + preventedOffsets.y, - left: overflow.left - rect.width - preventedOffsets.x - }; - } - - function isAnySideFullyClipped(overflow) { - return [top, right, bottom, left].some(function (side) { - return overflow[side] >= 0; - }); - } - - function hide(_ref) { - var state = _ref.state, - name = _ref.name; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var preventedOffsets = state.modifiersData.preventOverflow; - var referenceOverflow = detectOverflow(state, { - elementContext: 'reference' - }); - var popperAltOverflow = detectOverflow(state, { - altBoundary: true - }); - var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); - var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); - var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); - var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); - state.modifiersData[name] = { - referenceClippingOffsets: referenceClippingOffsets, - popperEscapeOffsets: popperEscapeOffsets, - isReferenceHidden: isReferenceHidden, - hasPopperEscaped: hasPopperEscaped + function hide(_ref) { + var state = _ref.state, + name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: 'reference' + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets: referenceClippingOffsets, + popperEscapeOffsets: popperEscapeOffsets, + isReferenceHidden: isReferenceHidden, + hasPopperEscaped: hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-reference-hidden': isReferenceHidden, + 'data-popper-escaped': hasPopperEscaped + }); + } // eslint-disable-next-line import/no-unused-modules + + + var hide$1 = { + name: 'hide', + enabled: true, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: hide }; - state.attributes.popper = Object.assign({}, state.attributes.popper, { - 'data-popper-reference-hidden': isReferenceHidden, - 'data-popper-escaped': hasPopperEscaped - }); - } // eslint-disable-next-line import/no-unused-modules - - - var hide$1 = { - name: 'hide', - enabled: true, - phase: 'main', - requiresIfExists: ['preventOverflow'], - fn: hide - }; - - var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; - var createPopper$1 = /*#__PURE__*/popperGenerator({ - defaultModifiers: defaultModifiers$1 - }); // eslint-disable-next-line import/no-unused-modules - - var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; - var createPopper = /*#__PURE__*/popperGenerator({ - defaultModifiers: defaultModifiers - }); // eslint-disable-next-line import/no-unused-modules - - exports.applyStyles = applyStyles$1; - exports.arrow = arrow$1; - exports.computeStyles = computeStyles$1; - exports.createPopper = createPopper; - exports.createPopperLite = createPopper$1; - exports.defaultModifiers = defaultModifiers; - exports.detectOverflow = detectOverflow; - exports.eventListeners = eventListeners; - exports.flip = flip$1; - exports.hide = hide$1; - exports.offset = offset$1; - exports.popperGenerator = popperGenerator; - exports.popperOffsets = popperOffsets$1; - exports.preventOverflow = preventOverflow$1; - - Object.defineProperty(exports, '__esModule', { value: true }); + + var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; + var createPopper$1 = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers$1 + }); // eslint-disable-next-line import/no-unused-modules + + var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; + var createPopper = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers + }); // eslint-disable-next-line import/no-unused-modules + + exports.applyStyles = applyStyles$1; + exports.arrow = arrow$1; + exports.computeStyles = computeStyles$1; + exports.createPopper = createPopper; + exports.createPopperLite = createPopper$1; + exports.defaultModifiers = defaultModifiers; + exports.detectOverflow = detectOverflow; + exports.eventListeners = eventListeners; + exports.flip = flip$1; + exports.hide = hide$1; + exports.offset = offset$1; + exports.popperGenerator = popperGenerator; + exports.popperOffsets = popperOffsets$1; + exports.preventOverflow = preventOverflow$1; + + Object.defineProperty(exports, '__esModule', { value: true }); }))); From 6fd7a76da423e9ae345291a7b18d6791a89dd465 Mon Sep 17 00:00:00 2001 From: "Xavier.Meng" Date: Tue, 13 Dec 2022 22:17:44 +0800 Subject: [PATCH 60/90] =?UTF-8?q?BI-118754=20fix(getMinimumFontSize):=20?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=9C=80=E5=B0=8F=E5=AD=97=E5=8F=B7=E6=97=A0?= =?UTF-8?q?=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/platform/web/function.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/platform/web/function.js b/src/core/platform/web/function.js index 152933882..f05ef923d 100644 --- a/src/core/platform/web/function.js +++ b/src/core/platform/web/function.js @@ -140,8 +140,9 @@ BI._.extend(BI, { }, getMinimumFontSize: function () { + // not work for firefox const el = document.createElement('div'); - el.style.fontSize = "0px"; + el.style.fontSize = "1px"; document.body.appendChild(el); const size = getComputedStyle(el).fontSize; el.remove(); From fc107a8bf4e081db80c2bf8e6f54d2cf7d5a0acb Mon Sep 17 00:00:00 2001 From: zsmj Date: Wed, 14 Dec 2022 09:42:50 +0800 Subject: [PATCH 61/90] =?UTF-8?q?KERNEL-11877=20fix:=20=E5=85=B3=E6=8E=89B?= =?UTF-8?q?I.BubblesController=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/controller/controller.bubbles.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/core/controller/controller.bubbles.js b/src/core/controller/controller.bubbles.js index fa5cefb5f..6c679b1e9 100644 --- a/src/core/controller/controller.bubbles.js +++ b/src/core/controller/controller.bubbles.js @@ -45,9 +45,11 @@ BI.BubblesController = BI.inherit(BI.Controller, { BI.createWidget({ type: "bi.default", element: container, - items: [{ - el: bubble - }] + items: [ + { + el: bubble + } + ] }); if (this.storePoppers[name]) { this.storePoppers[name].destroy(); @@ -65,7 +67,14 @@ BI.BubblesController = BI.inherit(BI.Controller, { options: { offset: [adjustXOffset, adjustYOffset] } - } + }, + { + name: "preventOverflow", + enabled: false + }, { + name: "flip", + enabled: false + }, ] }); return this; From 3e65123596f2fe9dbfcbb2f2d8d3fe11cc9fa87c Mon Sep 17 00:00:00 2001 From: zsmj Date: Wed, 14 Dec 2022 10:05:10 +0800 Subject: [PATCH 62/90] =?UTF-8?q?KERNEL-11877=20fix:=20supportCSSTransform?= =?UTF-8?q?=20=E9=BB=98=E8=AE=A4=E6=94=B9=E4=B8=BAtrue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/combination/combo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index c937f8f84..ee1f30a1f 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -38,7 +38,7 @@ adjustLength: 0, // 调整的距离 adjustXOffset: 0, adjustYOffset: 0, - supportCSSTransform: false, + supportCSSTransform: true, hideChecker: BI.emptyFn, offsetStyle: "left", // left,right,center el: {}, From 15190475fd615a05916a524d6255702558cb6c1f Mon Sep 17 00:00:00 2001 From: data Date: Wed, 14 Dec 2022 10:43:05 +0800 Subject: [PATCH 63/90] auto upgrade version to 2.0.20221214104244 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3c500439e..360cb161b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221213152248", + "version": "2.0.20221214104244", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 062f80437c9e7ac3fa12aef74f20098c6d643e7e Mon Sep 17 00:00:00 2001 From: zsmj Date: Wed, 14 Dec 2022 11:13:20 +0800 Subject: [PATCH 64/90] =?UTF-8?q?BI-118849=20fix:=20=E9=80=82=E9=85=8D=20o?= =?UTF-8?q?ffsetStyle=20center=E5=92=8Cmiddle=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/combination/combo.js | 8 +++---- src/core/platform/web/dom.js | 43 +++++++++++++++++++---------------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index ee1f30a1f..f73fec11d 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -40,7 +40,7 @@ adjustYOffset: 0, supportCSSTransform: true, hideChecker: BI.emptyFn, - offsetStyle: "left", // left,right,center + offsetStyle: "", // "",center,middle el: {}, popup: {}, comboClass: "bi-combo-popup", @@ -308,10 +308,10 @@ var scaleX = positonedRect.width / positionRelativeElement.offsetWidth; var scaleY = positonedRect.height / positionRelativeElement.offsetHeight; - p.top && (p.top = p.top / scaleY); - p.left && (p.left = p.left / scaleX); + p.top && (p.top = Math.round(p.top / scaleY)); + p.left && (p.left = Math.round(p.left / scaleX)); - p.adaptHeight && (p.adaptHeight = p.adaptHeight / scaleY); + p.adaptHeight && (p.adaptHeight = Math.round(p.adaptHeight / scaleY)); } if ("adaptHeight" in p) { diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index 17dd9d479..203683297 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -433,17 +433,18 @@ }; }, - getCenterAdaptPosition: function (combo, popup) { - var comboOffset = combo.element.offset(); - var comboBounds = combo.element.bounds(), popupBounds = popup.element.bounds(), - windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); + getCenterAdaptPosition: function (combo, popup, positionRelativeElement) { + var comboRect = combo.element[0].getBoundingClientRect(), + popupRect = popup.element[0].getBoundingClientRect(), + positionRelativeElementRect = positionRelativeElement.getBoundingClientRect(), + viewportBounds = document.documentElement.getBoundingClientRect(); var left; - if (comboOffset.left + comboBounds.width / 2 + popupBounds.width / 2 > windowBounds.width) { - left = windowBounds.width - popupBounds.width; + if (comboRect.left + comboRect.width / 2 + popupRect.width / 2 > viewportBounds.width) { + left = viewportBounds.width - comboRect.width - positionRelativeElementRect.left; } else { - left = comboOffset.left + comboBounds.width / 2 - popupBounds.width / 2; + left = comboRect.left + (comboRect.width - popupRect.width) / 2 - positionRelativeElementRect.left; } - if (left < 0) { + if (left + positionRelativeElementRect.left < 0) { left = 0; } return { @@ -451,17 +452,19 @@ }; }, - getMiddleAdaptPosition: function (combo, popup) { - var comboOffset = combo.element.offset(); - var comboBounds = combo.element.bounds(), popupBounds = popup.element.bounds(), - windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); + getMiddleAdaptPosition: function (combo, popup, positionRelativeElement) { + var comboRect = combo.element[0].getBoundingClientRect(), + popupRect = popup.element[0].getBoundingClientRect(), + positionRelativeElementRect = positionRelativeElement.getBoundingClientRect(), + viewportBounds = document.documentElement.getBoundingClientRect(); + var top; - if (comboOffset.top + comboBounds.height / 2 + popupBounds.height / 2 > windowBounds.height) { - top = windowBounds.height - popupBounds.height; + if (comboRect.top + comboRect.height / 2 + popupRect.height / 2 > viewportBounds.height) { + top = viewportBounds.height - popupRect.height - positionRelativeElementRect.top; } else { - top = comboOffset.top + comboBounds.height / 2 - popupBounds.height / 2; + top = comboRect.top + (comboRect.height - popupRect.height) / 2 - positionRelativeElementRect.top; } - if (top < 0) { + if (top + positionRelativeElementRect.top < 0) { top = 0; } return { @@ -681,19 +684,19 @@ switch (offsetStyle) { case "center": if (position.change) { - var p = BI.DOM.getMiddleAdaptPosition(combo, popup); + var p = BI.DOM.getMiddleAdaptPosition(combo, popup, positionRelativeElement); position.top = p.top; } else { - var p = BI.DOM.getCenterAdaptPosition(combo, popup); + var p = BI.DOM.getCenterAdaptPosition(combo, popup, positionRelativeElement); position.left = p.left; } break; case "middle": if (position.change) { - var p = BI.DOM.getCenterAdaptPosition(combo, popup); + var p = BI.DOM.getCenterAdaptPosition(combo, popup, positionRelativeElement); position.left = p.left; } else { - var p = BI.DOM.getMiddleAdaptPosition(combo, popup); + var p = BI.DOM.getMiddleAdaptPosition(combo, popup, positionRelativeElement); position.top = p.top; } break; From c397ee108d58f24db07c16f013cb84f5d0af54ba Mon Sep 17 00:00:00 2001 From: data Date: Wed, 14 Dec 2022 11:58:11 +0800 Subject: [PATCH 65/90] auto upgrade version to 2.0.20221214115751 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 360cb161b..45b3d3453 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221214104244", + "version": "2.0.20221214115751", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From aab95e8e2a65a41c206ecc068b87a868a9769dad Mon Sep 17 00:00:00 2001 From: zsmj Date: Wed, 14 Dec 2022 15:22:32 +0800 Subject: [PATCH 66/90] =?UTF-8?q?BI-118917=20fix:=20bi.switcher=E8=BF=99?= =?UTF-8?q?=E7=A7=8D=E5=88=A9=E7=94=A8Masker=E9=81=AE=E7=BD=A9=E7=9A=84?= =?UTF-8?q?=E5=9C=BA=E6=99=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/controller/controller.layer.js | 61 +++++++++++++++---------- src/core/platform/web/dom.js | 14 ++++++ 2 files changed, 51 insertions(+), 24 deletions(-) diff --git a/src/core/controller/controller.layer.js b/src/core/controller/controller.layer.js index 6887603f7..abc2d7f0e 100644 --- a/src/core/controller/controller.layer.js +++ b/src/core/controller/controller.layer.js @@ -63,41 +63,54 @@ BI.LayerController = BI.inherit(BI.Controller, { var layout = BI.createWidget({ type: "bi.absolute", invisible: true, - items: [{ - el: widget, - left: 0, - right: 0, - top: 0, - bottom: 0 - }] + items: [ + { + el: widget, + left: 0, + right: 0, + top: 0, + bottom: 0 + } + ] }, context); BI.createWidget({ type: "bi.absolute", element: op.container || this.options.render, - items: [{ - el: layout, - left: offset.left || 0, - right: offset.right || 0, - top: offset.top || 0, - bottom: offset.bottom || 0 - }] + items: [ + { + el: layout, + left: offset.left || 0, + right: offset.right || 0, + top: offset.top || 0, + bottom: offset.bottom || 0 + } + ] }); if (w) { layout.element.addClass("bi-popup-view"); - layout.element.css({ - left: w.offset().left + (offset.left || 0), - top: w.offset().top + (offset.top || 0), - width: offset.width || (w.outerWidth() - (offset.left || 0) - (offset.right || 0)) || "", - height: offset.height || (w.outerHeight() - (offset.top || 0) - (offset.bottom || 0)) || "" - }); - layout.element.on("__resize__", function () { - w.is(":visible") && - layout.element.css({ + + function getComputedPosition() { + + var css = { left: w.offset().left + (offset.left || 0), top: w.offset().top + (offset.top || 0), width: offset.width || (w.outerWidth() - (offset.left || 0) - (offset.right || 0)) || "", height: offset.height || (w.outerHeight() - (offset.top || 0) - (offset.bottom || 0)) || "" - }); + }; + + const { top, left, scaleY, scaleX } = BI.DOM.getPositionRelativeContainingBlockRect(layout.element[0]); + + css.top = (css.top - top) / scaleY; + css.left = (css.left - left) / scaleX; + + return css; + } + + + layout.element.css(getComputedPosition()); + layout.element.on("__resize__", function () { + w.is(":visible") && + layout.element.css(getComputedPosition()); }); } this.add(name, widget, layout); diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index 203683297..d2fffd753 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -732,5 +732,19 @@ return BI.DOM.getPositionRelativeContainingBlock(element.parentNode); }, + + /** + * 获取position:fixed相对定位的元素的clientRect + */ + getPositionRelativeContainingBlockRect: function (element) { + var positionRelativeElement = BI.DOM.getPositionRelativeContainingBlock(element); + var rect = positionRelativeElement.getBoundingClientRect(); + + return { + ...rect.toJSON(), + scaleX: rect.width / positionRelativeElement.offsetWidth, + scaleY: rect.height / positionRelativeElement.offsetHeight + }; + }, }); })(); From 331d2710191ce591605413db0bf01cce678783aa Mon Sep 17 00:00:00 2001 From: zsmj Date: Wed, 14 Dec 2022 15:27:24 +0800 Subject: [PATCH 67/90] =?UTF-8?q?=E6=97=A0JIRA=20"bi.number=5Feditor"=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=B0=B4=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widget/numbereditor/demo.number_editor.js | 3 +- src/widget/numbereditor/number.editor.js | 48 +++++++++++-------- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/demo/js/widget/numbereditor/demo.number_editor.js b/demo/js/widget/numbereditor/demo.number_editor.js index 9a57706bd..bbd7181dd 100644 --- a/demo/js/widget/numbereditor/demo.number_editor.js +++ b/demo/js/widget/numbereditor/demo.number_editor.js @@ -14,7 +14,8 @@ Demo.FileManager = BI.inherit(BI.Widget, { }, height: 24, width: 150, - errorText: "hahah" + errorText: "hahah", + watermark: "每个人都是自己健康的第一责任人", }); editor1.on(BI.NumberEditor.EVENT_CHANGE, function () { if (BI.parseFloat(this.getValue()) < 1) { diff --git a/src/widget/numbereditor/number.editor.js b/src/widget/numbereditor/number.editor.js index 383560bf8..2624c5dc4 100644 --- a/src/widget/numbereditor/number.editor.js +++ b/src/widget/numbereditor/number.editor.js @@ -18,7 +18,8 @@ BI.NumberEditor = BI.inherit(BI.Widget, { errorText: "", step: 1, min: BI.MIN, - max: BI.MAX + max: BI.MAX, + watermark: "", }); }, @@ -30,6 +31,7 @@ BI.NumberEditor = BI.inherit(BI.Widget, { height: BI.toPix(o.height, 2), simple: o.simple, allowBlank: o.allowBlank, + watermark: o.watermark, value: o.valueFormatter(o.value), validationChecker: function (v) { // 不设置validationChecker就自动检测 @@ -89,23 +91,27 @@ BI.NumberEditor = BI.inherit(BI.Widget, { type: "bi.htape", height: BI.toPix(o.height, 2), element: this, - items: [this.editor, { - el: { - type: "bi.grid", - columns: 1, - rows: 2, - items: [{ - column: 0, - row: 0, - el: this.topBtn - }, { - column: 0, - row: 1, - el: this.bottomBtn - }] - }, - width: 23 - }] + items: [ + this.editor, { + el: { + type: "bi.grid", + columns: 1, + rows: 2, + items: [ + { + column: 0, + row: 0, + el: this.topBtn + }, { + column: 0, + row: 1, + el: this.bottomBtn + } + ] + }, + width: 23 + } + ] }); }, @@ -117,13 +123,13 @@ BI.NumberEditor = BI.inherit(BI.Widget, { return this.editor.isEditing(); }, - _checkValueInRange: function(v) { + _checkValueInRange: function (v) { var o = this.options; return !!(BI.isNumeric(v) && BI.parseFloat(v) >= o.min && BI.parseFloat(v) <= o.max); }, - _checkAdjustDisabled: function(v) { - if(this.options.validationChecker === BI.emptyFn) { + _checkAdjustDisabled: function (v) { + if (this.options.validationChecker === BI.emptyFn) { this.bottomBtn.setEnable(BI.parseFloat(v) > this.options.min); this.topBtn.setEnable(BI.parseFloat(v) < this.options.max); } From b8f272885f9e949b950cb2370cc435b5a7a34c82 Mon Sep 17 00:00:00 2001 From: zsmj Date: Wed, 14 Dec 2022 17:23:12 +0800 Subject: [PATCH 68/90] =?UTF-8?q?BI-118659=20fix:=20belowMouse=E7=9A=84?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/combination/combo.js | 26 +++++++++-------------- src/core/platform/web/dom.js | 39 ++++++++++++++++++----------------- 2 files changed, 30 insertions(+), 35 deletions(-) diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index f73fec11d..003571b29 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -196,28 +196,22 @@ this.popupView.visible(); var combo = (o.belowMouse && BI.isNotNull(e)) ? { element: { - 0: e.target, + 0: BI.extend({}, e.target, { + getBoundingClientRect: function () { + return { + left: e.pageX, + top: e.pageY, + width: 0, + height: 0, + }; + } + }), offset: function () { return { left: e.pageX, top: e.pageY, }; }, - bounds: function () { - // offset为其相对于父定位元素的偏移 - return { - x: e.offsetX, - y: e.offsetY, - width: 0, - height: 24, - }; - }, - outerWidth: function () { - return 0; - }, - outerHeight: function () { - return 24; - }, }, } : this.combo; var positionRelativeElement = BI.DOM.getPositionRelativeContainingBlock(BI.isNull(o.container) ? this.element[0] : BI.Widget._renderEngine.createElement(BI.isFunction(o.container) ? o.container() : o.container)[0]); diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index d2fffd753..9b1026683 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -249,12 +249,14 @@ }, _getLeftAlignPosition: function (combo, popup, extraWidth, container) { - var viewBounds = popup.element.bounds(), - windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); - var left = combo.element.offset().left - (container ? container.getBoundingClientRect().left : 0) + extraWidth; + var comboRect = combo.element[0].getBoundingClientRect(), + popupRect = popup.element.bounds(), + viewportRect = document.documentElement.getBoundingClientRect(), + containerRect = container ? container.getBoundingClientRect() : { left: 0 }; + var left = comboRect.left - containerRect.left + extraWidth; - if (left + viewBounds.width > windowBounds.width) { - left = windowBounds.width - viewBounds.width; + if (left + popupRect.width - containerRect.left > viewportRect.width) { + left = viewportRect.width - popupRect.width - containerRect.left; } return left; }, @@ -285,17 +287,19 @@ }; }, - _getRightAlignPosition: function (combo, popup, extraWidth) { - var comboBounds = combo.element.bounds(), viewBounds = popup.element.bounds(); - return combo.element.offset().left + comboBounds.width - viewBounds.width - extraWidth; + _getRightAlignPosition: function (combo, popup, extraWidth, container) { + var comboBounds = combo.element[0].getBoundingClientRect(), + viewBounds = popup.element[0].getBoundingClientRect(), + containerRect = container ? container.getBoundingClientRect() : { left: 0 }; + return comboBounds.left + comboBounds.width - viewBounds.width - extraWidth - containerRect.left; }, - getRightAlignPosition: function (combo, popup, extraWidth) { - var left = this._getRightAlignPosition(combo, popup, extraWidth); + getRightAlignPosition: function (combo, popup, extraWidth, container) { + var left = this._getRightAlignPosition(combo, popup, extraWidth, container); var dir = ""; // 如果放不下,优先使用LeftAlign, 如果LeftAlign也放不下, 再使用left=0 if (left < 0) { - left = this._getLeftAlignPosition(combo, popup, extraWidth); + left = this._getLeftAlignPosition(combo, popup, extraWidth, container); dir = "right"; } if (left < 0) { @@ -317,14 +321,13 @@ }, getTopAlignPosition: function (combo, popup, extraHeight, needAdaptHeight, container) { - var comboOffset = combo.element.offset(); var comboBounds = combo.element[0].getBoundingClientRect(), popupBounds = popup.element[0].getBoundingClientRect(), viewportBounds = document.documentElement.getBoundingClientRect(), containerBounds = container ? container.getBoundingClientRect() : { top: 0 }; var top, adaptHeight, dir; if (BI.DOM.isBottomSpaceEnough(combo, popup, -1 * comboBounds.height + extraHeight)) { - top = comboOffset.top - containerBounds.top + extraHeight; + top = comboBounds.top - containerBounds.top + extraHeight; } else if (needAdaptHeight) { top = comboBounds.top - containerBounds.top + extraHeight; adaptHeight = viewportBounds.height - comboBounds.top; @@ -375,20 +378,19 @@ }, getBottomAlignPosition: function (combo, popup, extraHeight, needAdaptHeight, container) { - var comboOffset = combo.element.offset(); var comboBounds = combo.element[0].getBoundingClientRect(), popupBounds = popup.element[0].getBoundingClientRect(), windowBounds = BI.Widget._renderEngine.createElement("body").bounds(), containerBounds = container ? container.getBoundingClientRect() : { top: 0 }; var top, adaptHeight, dir; if (BI.DOM.isTopSpaceEnough(combo, popup, -1 * comboBounds.height + extraHeight)) { - top = comboOffset.top + comboBounds.height - containerBounds.top - popupBounds.height; + top = comboBounds.top + comboBounds.height - containerBounds.top - popupBounds.height; } else if (needAdaptHeight) { top = 0 - containerBounds.top; adaptHeight = comboBounds.top + comboBounds.height - extraHeight; } else if (BI.DOM.isBottomSpaceEnough(combo, popup, -1 * comboBounds.height + extraHeight)) { // 上方空间不足且不允许调整高度的情况下,优先使用下对齐 - top = comboOffset.top - containerBounds.top + extraHeight; + top = comboBounds.top - containerBounds.top + extraHeight; dir = "bottom"; } else { top = 0; @@ -410,7 +412,6 @@ }, getBottomAdaptPosition: function (combo, popup, extraHeight, needAdaptHeight) { - var comboOffset = combo.element.offset(); var comboBounds = combo.element.bounds(), popupBounds = popup.element.bounds(), windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); if (BI.DOM.isBottomSpaceEnough(combo, popup, extraHeight)) { @@ -418,8 +419,8 @@ } if (needAdaptHeight) { return { - top: comboOffset.top + comboBounds.height + extraHeight, - adaptHeight: windowBounds.height - comboOffset.top - comboBounds.height - extraHeight + top: comboBounds.top + comboBounds.height + extraHeight, + adaptHeight: windowBounds.height - comboBounds.top - comboBounds.height - extraHeight }; } if (popupBounds.height + extraHeight > windowBounds.height) { From 4cbbcc8a409a286d8e36080658445cd720200a37 Mon Sep 17 00:00:00 2001 From: data Date: Thu, 15 Dec 2022 14:10:59 +0800 Subject: [PATCH 69/90] auto upgrade version to 2.0.20221215141039 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 45b3d3453..fed0f3d7f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221214115751", + "version": "2.0.20221215141039", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 1a986da1b681260dbeacc7db90a4928b6d0487cf Mon Sep 17 00:00:00 2001 From: data Date: Thu, 15 Dec 2022 14:46:37 +0800 Subject: [PATCH 70/90] auto upgrade version to 2.0.20221215144622 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fed0f3d7f..b7377dc76 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221215141039", + "version": "2.0.20221215144622", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From e01442ef69c7f8001d86954b6cc5d2461ebd3578 Mon Sep 17 00:00:00 2001 From: zsmj Date: Thu, 15 Dec 2022 16:17:06 +0800 Subject: [PATCH 71/90] =?UTF-8?q?BI-118849=20fix:=20combo=E5=9C=A8?= =?UTF-8?q?=E5=B1=8F=E5=B9=95=E8=BE=B9=E7=BC=98,=E5=B7=A6=E5=8F=B3?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E4=B8=8D=E5=A4=9F=E4=B9=8B=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E8=B0=83=E6=95=B4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/platform/web/dom.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index 9b1026683..74a1a2a28 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -250,12 +250,12 @@ _getLeftAlignPosition: function (combo, popup, extraWidth, container) { var comboRect = combo.element[0].getBoundingClientRect(), - popupRect = popup.element.bounds(), + popupRect = popup.element[0].getBoundingClientRect(), viewportRect = document.documentElement.getBoundingClientRect(), containerRect = container ? container.getBoundingClientRect() : { left: 0 }; var left = comboRect.left - containerRect.left + extraWidth; - if (left + popupRect.width - containerRect.left > viewportRect.width) { + if (comboRect.left + popupRect.width > viewportRect.width) { left = viewportRect.width - popupRect.width - containerRect.left; } return left; @@ -265,12 +265,13 @@ var left = this._getLeftAlignPosition(combo, popup, extraWidth, container); var dir = ""; // 如果放不下,优先使用RightAlign, 如果RightAlign也放不下, 再使用left=0 - if (left < 0) { + var containerRect = container ? container.getBoundingClientRect() : { left: 0 }; + if (left + containerRect.left < 0) { left = this._getRightAlignPosition(combo, popup, extraWidth); dir = "left"; } - if (left < 0) { - left = 0; + if (left + containerRect.left < 0) { + left = 0 - containerRect.left; } return { left: left, @@ -678,8 +679,8 @@ getComboPosition: function (combo, popup, extraWidth, extraHeight, needAdaptHeight, directions, offsetStyle, positionRelativeElement) { extraWidth || (extraWidth = 0); extraHeight || (extraHeight = 0); - var bodyHeight = BI.Widget._renderEngine.createElement("body").bounds().height - extraHeight; - var maxHeight = Math.min(popup.attr("maxHeight") || bodyHeight, bodyHeight); + var viewportBounds = document.documentElement.getBoundingClientRect(); + var maxHeight = Math.min(popup.attr("maxHeight") || viewportBounds.height, viewportBounds.height); popup.resetHeight && popup.resetHeight(maxHeight); var position = BI.DOM.getComboPositionByDirections(combo, popup, extraWidth, extraHeight, needAdaptHeight, directions || ["bottom", "top", "right", "left"], positionRelativeElement); switch (offsetStyle) { @@ -703,7 +704,7 @@ break; } if (needAdaptHeight === true) { - popup.resetHeight && popup.resetHeight(Math.min(bodyHeight - position.top + (positionRelativeElement ? positionRelativeElement.getBoundingClientRect().top : 0), maxHeight)); + popup.resetHeight && popup.resetHeight(Math.min(viewportBounds.height - position.top + (positionRelativeElement ? positionRelativeElement.getBoundingClientRect().top : 0), maxHeight)); } return position; }, From 7d3e424259aff4a85abadcc529b35b1d6da70146 Mon Sep 17 00:00:00 2001 From: data Date: Thu, 15 Dec 2022 17:15:53 +0800 Subject: [PATCH 72/90] auto upgrade version to 2.0.20221215171537 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b7377dc76..211e2bb1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221215144622", + "version": "2.0.20221215171537", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 41e13887387f014be89491128188f8821f162eda Mon Sep 17 00:00:00 2001 From: zsmj Date: Thu, 15 Dec 2022 17:19:00 +0800 Subject: [PATCH 73/90] =?UTF-8?q?=E6=97=A0JRIA=20fix:=20=E5=86=8D=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E4=B8=80=E9=81=8D=E8=BE=93=E5=85=A5=E6=A1=86=E5=9C=86?= =?UTF-8?q?=E8=A7=92=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../colorpicker/button/button.colorshow.js | 38 +-- .../colorpicker/editor.colorpicker.hex.js | 274 +++++++++--------- .../editor.colorpicker.hex.simple.js | 170 +++++------ .../colorpicker/editor.colorpicker.js | 96 +++--- .../colorpicker/editor.colorpicker.simple.js | 64 ++-- 5 files changed, 337 insertions(+), 305 deletions(-) diff --git a/src/case/colorchooser/colorpicker/button/button.colorshow.js b/src/case/colorchooser/colorpicker/button/button.colorshow.js index 740a5d0a7..c9b2da438 100644 --- a/src/case/colorchooser/colorpicker/button/button.colorshow.js +++ b/src/case/colorchooser/colorpicker/button/button.colorshow.js @@ -6,30 +6,32 @@ BI.ColorChooserShowButton = BI.inherit(BI.BasicButton, { props: { - baseCls: 'bi-color-chooser-show-button bi-border bi-list-item-effect', + baseCls: 'bi-color-chooser-show-button bi-border bi-list-item-effect bi-border-radius', }, render: function () { var self = this, o = this.options; return { type: 'bi.htape', - items: [{ - el: { - type: "bi.icon_label", - ref: function (_ref) { - self.icon = _ref; + items: [ + { + el: { + type: "bi.icon_label", + ref: function (_ref) { + self.icon = _ref; + }, + iconWidth: 16, + iconHeight: 16, }, - iconWidth: 16, - iconHeight: 16, - }, - hgap: 20, - width: 16, - }, { - type: 'bi.label', - textAlign: 'left', - text: o.text, - }] - } + hgap: 20, + width: 16, + }, { + type: 'bi.label', + textAlign: 'left', + text: o.text, + } + ] + }; }, doClick: function () { @@ -40,4 +42,4 @@ BI.ColorChooserShowButton = BI.inherit(BI.BasicButton, { }, }); BI.ColorChooserShowButton.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.color_picker_show_button", BI.ColorChooserShowButton); \ No newline at end of file +BI.shortcut("bi.color_picker_show_button", BI.ColorChooserShowButton); diff --git a/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js b/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js index d2be8a8f9..22c66a250 100644 --- a/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js +++ b/src/case/colorchooser/colorpicker/editor.colorpicker.hex.js @@ -21,7 +21,7 @@ BI.HexColorPickerEditor = BI.inherit(BI.Widget, { render: function () { var self = this, o = this.options, c = this.constants; this.storeValue = {}; - var RGB = BI.createItems([{text: "R"}, {text: "G"}, {text: "B"}], { + var RGB = BI.createItems([{ text: "R" }, { text: "G" }, { text: "B" }], { type: "bi.label", cls: "color-picker-editor-label", height: 20 @@ -33,146 +33,162 @@ BI.HexColorPickerEditor = BI.inherit(BI.Widget, { var Ws = BI.map(BI.range(0, 3), function () { return { type: "bi.small_text_editor", - cls: "color-picker-editor-input", + cls: "color-picker-editor-input bi-border-radius", validationChecker: checker, errorText: BI.i18nText("BI-Color_Picker_Error_Text"), allowBlank: true, value: 255, width: c.RGB_WIDTH, height: 24, - listeners: [{ - eventName: BI.TextEditor.EVENT_CHANGE, - action: function () { - self._checkEditors(); - if (checker(self.storeValue.r) && checker(self.storeValue.g) && checker(self.storeValue.b)) { - self.colorShow.element.css("background-color", self.getValue()); - self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); + listeners: [ + { + eventName: BI.TextEditor.EVENT_CHANGE, + action: function () { + self._checkEditors(); + if (checker(self.storeValue.r) && checker(self.storeValue.g) && checker(self.storeValue.b)) { + self.colorShow.element.css("background-color", self.getValue()); + self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); + } } } - }] + ] }; }); return { type: "bi.absolute", - items: [{ - el: { - type: "bi.vertical", - tgap: 10, - items: [{ - type: 'bi.vertical_adapt', - columnSize: ["fill", 'fill'], - height: 24, - items: [{ - type: "bi.color_picker_show_button", - cls: "trans-color-icon", - height: 22, - title: BI.i18nText("BI-Transparent_Color"), - text: BI.i18nText("BI-Transparent_Color"), - listeners: [{ - eventName: BI.ColorChooserShowButton.EVENT_CHANGE, - action: function () { - self.setValue("transparent"); - self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); - } - }], - ref: function (_ref) { - self.transparent = _ref; - } - }, { - el: { - type: "bi.color_picker_show_button", - cls: "auto-color-icon", - height: 22, - title: BI.i18nText("BI-Basic_Auto"), - text: BI.i18nText("BI-Basic_Auto"), - listeners: [{ - eventName: BI.ColorChooserShowButton.EVENT_CHANGE, - action: function () { - self.setValue(""); - self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); - } - }], - ref: function (_ref) { - self.none = _ref; - } - }, - lgap: 10, - }] - }, { - el: { - type: "bi.vertical_adapt", - columnSize: [22, 10, 'fill', 12, c.RGB_WIDTH, 12, c.RGB_WIDTH, 12, c.RGB_WIDTH], - - rgap: 5, - items: [{ - el: { - type: "bi.layout", - cls: "color-picker-editor-display bi-card bi-border", - height: 22, - width: 22, - ref: function (_ref) { - self.colorShow = _ref; - } - }, - width: 18 - }, { - type: "bi.label", - text: "#", - width: 10 - }, { - type: "bi.small_text_editor", - ref: function (_ref) { - self.hexEditor = _ref; - }, - cls: "color-picker-editor-input", - validationChecker: this._hexChecker, - allowBlank: true, - errorText: BI.i18nText("BI-Color_Picker_Error_Text_Hex"), - width: c.HEX_WIDTH, + items: [ + { + el: { + type: "bi.vertical", + tgap: 10, + items: [ + { + type: 'bi.vertical_adapt', + columnSize: ["fill", 'fill'], height: 24, - listeners: [{ - eventName: "EVENT_CHANGE", - action: function () { - self._checkHexEditor(); - if (checker(self.storeValue.r) && checker(self.storeValue.g) && checker(self.storeValue.b)) { - self.colorShow.element.css("background-color", self.getValue()); - self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); + items: [ + { + type: "bi.color_picker_show_button", + cls: "trans-color-icon", + height: 22, + title: BI.i18nText("BI-Transparent_Color"), + text: BI.i18nText("BI-Transparent_Color"), + listeners: [ + { + eventName: BI.ColorChooserShowButton.EVENT_CHANGE, + action: function () { + self.setValue("transparent"); + self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); + } + } + ], + ref: function (_ref) { + self.transparent = _ref; } - + }, { + el: { + type: "bi.color_picker_show_button", + cls: "auto-color-icon", + height: 22, + title: BI.i18nText("BI-Basic_Auto"), + text: BI.i18nText("BI-Basic_Auto"), + listeners: [ + { + eventName: BI.ColorChooserShowButton.EVENT_CHANGE, + action: function () { + self.setValue(""); + self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); + } + } + ], + ref: function (_ref) { + self.none = _ref; + } + }, + lgap: 10, } - }] - }, RGB[0], { - el: BI.extend(Ws[0], { - ref: function (_ref) { - self.R = _ref - } - }), - width: c.RGB_WIDTH - }, RGB[1], { - el: BI.extend(Ws[1], { - ref: function (_ref) { - self.G = _ref - } - }), - width: c.RGB_WIDTH - }, RGB[2], { - el: BI.extend(Ws[2], { - ref: function (_ref) { - self.B = _ref - } - }), - rgap: -5, - width: c.RGB_WIDTH - }] - } - }] - }, - left: 0, - right: 0, - top: 0, - bottom: 0 - }] + ] + }, { + el: { + type: "bi.vertical_adapt", + columnSize: [22, 10, 'fill', 12, c.RGB_WIDTH, 12, c.RGB_WIDTH, 12, c.RGB_WIDTH], + + rgap: 5, + items: [ + { + el: { + type: "bi.layout", + cls: "color-picker-editor-display bi-card bi-border", + height: 22, + width: 22, + ref: function (_ref) { + self.colorShow = _ref; + } + }, + width: 18 + }, { + type: "bi.label", + text: "#", + width: 10 + }, { + type: "bi.small_text_editor", + ref: function (_ref) { + self.hexEditor = _ref; + }, + cls: "color-picker-editor-input bi-border-radius", + validationChecker: this._hexChecker, + allowBlank: true, + errorText: BI.i18nText("BI-Color_Picker_Error_Text_Hex"), + width: c.HEX_WIDTH, + height: 24, + listeners: [ + { + eventName: "EVENT_CHANGE", + action: function () { + self._checkHexEditor(); + if (checker(self.storeValue.r) && checker(self.storeValue.g) && checker(self.storeValue.b)) { + self.colorShow.element.css("background-color", self.getValue()); + self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); + } + + } + } + ] + }, RGB[0], { + el: BI.extend(Ws[0], { + ref: function (_ref) { + self.R = _ref; + } + }), + width: c.RGB_WIDTH + }, RGB[1], { + el: BI.extend(Ws[1], { + ref: function (_ref) { + self.G = _ref; + } + }), + width: c.RGB_WIDTH + }, RGB[2], { + el: BI.extend(Ws[2], { + ref: function (_ref) { + self.B = _ref; + } + }), + rgap: -5, + width: c.RGB_WIDTH + } + ] + } + } + ] + }, + left: 0, + right: 0, + top: 0, + bottom: 0 + } + ] }; }, @@ -181,13 +197,13 @@ BI.HexColorPickerEditor = BI.inherit(BI.Widget, { }, _checkEditors: function () { - if(BI.isEmptyString(this.R.getValue())) { + if (BI.isEmptyString(this.R.getValue())) { this.R.setValue(0); } - if(BI.isEmptyString(this.G.getValue())) { + if (BI.isEmptyString(this.G.getValue())) { this.G.setValue(0); } - if(BI.isEmptyString(this.B.getValue())) { + if (BI.isEmptyString(this.B.getValue())) { this.B.setValue(0); } this.storeValue = { @@ -223,7 +239,7 @@ BI.HexColorPickerEditor = BI.inherit(BI.Widget, { } else if (color === "transparent") { this.colorShow.element.css("background-color", "").removeClass("auto-color-square-normal-background").addClass("trans-color-background"); } else { - this.colorShow.element.css({"background-color": color}).removeClass("auto-color-square-normal-background").removeClass("trans-color-background"); + this.colorShow.element.css({ "background-color": color }).removeClass("auto-color-square-normal-background").removeClass("trans-color-background"); } }, diff --git a/src/case/colorchooser/colorpicker/editor.colorpicker.hex.simple.js b/src/case/colorchooser/colorpicker/editor.colorpicker.hex.simple.js index 9e9c33e90..749806355 100644 --- a/src/case/colorchooser/colorpicker/editor.colorpicker.hex.simple.js +++ b/src/case/colorchooser/colorpicker/editor.colorpicker.hex.simple.js @@ -19,7 +19,7 @@ BI.SimpleHexColorPickerEditor = BI.inherit(BI.Widget, { render: function () { var self = this, o = this.options, c = this.constants; - var RGB = BI.createItems([{text: "R"}, {text: "G"}, {text: "B"}], { + var RGB = BI.createItems([{ text: "R" }, { text: "G" }, { text: "B" }], { type: "bi.label", cls: "color-picker-editor-label", height: 20 @@ -31,97 +31,105 @@ BI.SimpleHexColorPickerEditor = BI.inherit(BI.Widget, { var Ws = BI.map(BI.range(0, 3), function () { return { type: "bi.small_text_editor", - cls: "color-picker-editor-input", + cls: "color-picker-editor-input bi-border-radius", validationChecker: checker, errorText: BI.i18nText("BI-Color_Picker_Error_Text"), allowBlank: true, value: 255, width: c.RGB_WIDTH, height: 24, - listeners: [{ - eventName: BI.TextEditor.EVENT_CHANGE, - action: function () { - self._checkEditors(); - if (self.R.isValid() && self.G.isValid() && self.B.isValid()) { - self.colorShow.element.css("background-color", self.getValue()); - self.fireEvent(BI.SimpleColorPickerEditor.EVENT_CHANGE); + listeners: [ + { + eventName: BI.TextEditor.EVENT_CHANGE, + action: function () { + self._checkEditors(); + if (self.R.isValid() && self.G.isValid() && self.B.isValid()) { + self.colorShow.element.css("background-color", self.getValue()); + self.fireEvent(BI.SimpleColorPickerEditor.EVENT_CHANGE); + } } } - }] - } + ] + }; }); return { type: "bi.vertical", tgap: 10, - items: [{ - el: { - type: "bi.vertical_adapt", - rgap: 5, - columnSize: [22, 10, 'fill', 12, c.RGB_WIDTH, 12, c.RGB_WIDTH, 12, c.RGB_WIDTH], - items: [{ - el: { - type: "bi.layout", - cls: "color-picker-editor-display bi-card bi-border", - height: 22, - width: 22, - ref: function (_ref) { - self.colorShow = _ref; - } - }, - width: 18, - }, { - type: "bi.label", - text: "#", - width: 10 - }, { - type: "bi.small_text_editor", - ref: function (_ref) { - self.hexEditor = _ref; - }, - cls: "color-picker-editor-input", - validationChecker: this._hexChecker, - allowBlank: true, - errorText: BI.i18nText("BI-Color_Picker_Error_Text_Hex"), - width: c.HEX_WIDTH, - height: 24, - listeners: [{ - eventName: "EVENT_CHANGE", - action: function () { - self._checkHexEditor(); - if (checker(self.storeValue.r) && checker(self.storeValue.g) && checker(self.storeValue.b)) { - self.colorShow.element.css("background-color", self.getValue()); - self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); - } - } - }] - }, RGB[0], { - el: BI.extend(Ws[0], { - ref: function (_ref) { - self.R = _ref - } - }), - width: c.RGB_WIDTH - }, RGB[1], { - el: BI.extend(Ws[1], { - ref: function (_ref) { - self.G = _ref + items: [ + { + el: { + type: "bi.vertical_adapt", + rgap: 5, + columnSize: [22, 10, 'fill', 12, c.RGB_WIDTH, 12, c.RGB_WIDTH, 12, c.RGB_WIDTH], + items: [ + { + el: { + type: "bi.layout", + cls: "color-picker-editor-display bi-card bi-border", + height: 22, + width: 22, + ref: function (_ref) { + self.colorShow = _ref; + } + }, + width: 18, + }, { + type: "bi.label", + text: "#", + width: 10 + }, { + type: "bi.small_text_editor", + ref: function (_ref) { + self.hexEditor = _ref; + }, + cls: "color-picker-editor-input bi-border-radius", + validationChecker: this._hexChecker, + allowBlank: true, + errorText: BI.i18nText("BI-Color_Picker_Error_Text_Hex"), + width: c.HEX_WIDTH, + height: 24, + listeners: [ + { + eventName: "EVENT_CHANGE", + action: function () { + self._checkHexEditor(); + if (checker(self.storeValue.r) && checker(self.storeValue.g) && checker(self.storeValue.b)) { + self.colorShow.element.css("background-color", self.getValue()); + self.fireEvent(BI.ColorPickerEditor.EVENT_CHANGE); + } + } + } + ] + }, RGB[0], { + el: BI.extend(Ws[0], { + ref: function (_ref) { + self.R = _ref; + } + }), + width: c.RGB_WIDTH + }, RGB[1], { + el: BI.extend(Ws[1], { + ref: function (_ref) { + self.G = _ref; + } + }), + width: c.RGB_WIDTH + }, RGB[2], { + el: BI.extend(Ws[2], { + ref: function (_ref) { + self.B = _ref; + } + }), + rgap: -5, + width: c.RGB_WIDTH } - }), - width: c.RGB_WIDTH - }, RGB[2], { - el: BI.extend(Ws[2], { - ref: function (_ref) { - self.B = _ref - } - }), - rgap: -5, - width: c.RGB_WIDTH - }] + ] + } } - }] + ] - } + }; }, _hexChecker: function (v) { @@ -129,13 +137,13 @@ BI.SimpleHexColorPickerEditor = BI.inherit(BI.Widget, { }, _checkEditors: function () { - if(BI.isEmptyString(this.R.getValue())) { + if (BI.isEmptyString(this.R.getValue())) { this.R.setValue(0); } - if(BI.isEmptyString(this.G.getValue())) { + if (BI.isEmptyString(this.G.getValue())) { this.G.setValue(0); } - if(BI.isEmptyString(this.B.getValue())) { + if (BI.isEmptyString(this.B.getValue())) { this.B.setValue(0); } this.hexEditor.setValue(this.getValue().slice(this.constants.HEX_PREFIX_POSITION)); @@ -157,7 +165,7 @@ BI.SimpleHexColorPickerEditor = BI.inherit(BI.Widget, { }, setValue: function (color) { - this.colorShow.element.css({"background-color": color}); + this.colorShow.element.css({ "background-color": color }); var json = BI.DOM.rgb2json(BI.DOM.hex2rgb(color)); this.R.setValue(BI.isNull(json.r) ? "" : json.r); this.G.setValue(BI.isNull(json.g) ? "" : json.g); @@ -174,4 +182,4 @@ BI.SimpleHexColorPickerEditor = BI.inherit(BI.Widget, { } }); BI.SimpleHexColorPickerEditor.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.simple_hex_color_picker_editor", BI.SimpleHexColorPickerEditor); \ No newline at end of file +BI.shortcut("bi.simple_hex_color_picker_editor", BI.SimpleHexColorPickerEditor); diff --git a/src/case/colorchooser/colorpicker/editor.colorpicker.js b/src/case/colorchooser/colorpicker/editor.colorpicker.js index 9d0dbbca0..982d333c3 100644 --- a/src/case/colorchooser/colorpicker/editor.colorpicker.js +++ b/src/case/colorchooser/colorpicker/editor.colorpicker.js @@ -29,7 +29,7 @@ BI.ColorPickerEditor = BI.inherit(BI.Widget, { height: 16, width: 16 }); - var RGB = BI.createWidgets(BI.createItems([{text: "R"}, {text: "G"}, {text: "B"}], { + var RGB = BI.createWidgets(BI.createItems([{ text: "R" }, { text: "G" }, { text: "B" }], { type: "bi.label", cls: "color-picker-editor-label", width: 20, @@ -41,7 +41,7 @@ BI.ColorPickerEditor = BI.inherit(BI.Widget, { }; var Ws = BI.createWidgets([{}, {}, {}], { type: "bi.small_text_editor", - cls: "color-picker-editor-input", + cls: "color-picker-editor-input bi-border-radius", validationChecker: checker, errorText: BI.i18nText("BI-Color_Picker_Error_Text"), allowBlank: true, @@ -95,56 +95,60 @@ BI.ColorPickerEditor = BI.inherit(BI.Widget, { BI.createWidget({ type: "bi.absolute", element: this, - items: [{ - el: { - type: "bi.vertical_adapt", - items: [{ - el: this.colorShow, - width: 16 - }, { - el: RGB[0], - width: 20 - }, { - el: this.R, - width: c.RGB_WIDTH - }, { - el: RGB[1], - width: 20 - }, { - el: this.G, - width: c.RGB_WIDTH - }, { - el: RGB[2], - width: 20 - }, { - el: this.B, - width: c.RGB_WIDTH - }, { - el: this.transparent, - width: 16, - lgap: 5 - }, { - el: this.none, - width: 16, - lgap: 5 - }] - }, - left: 10, - right: 10, - top: 0, - bottom: 0 - }] + items: [ + { + el: { + type: "bi.vertical_adapt", + items: [ + { + el: this.colorShow, + width: 16 + }, { + el: RGB[0], + width: 20 + }, { + el: this.R, + width: c.RGB_WIDTH + }, { + el: RGB[1], + width: 20 + }, { + el: this.G, + width: c.RGB_WIDTH + }, { + el: RGB[2], + width: 20 + }, { + el: this.B, + width: c.RGB_WIDTH + }, { + el: this.transparent, + width: 16, + lgap: 5 + }, { + el: this.none, + width: 16, + lgap: 5 + } + ] + }, + left: 10, + right: 10, + top: 0, + bottom: 0 + } + ] }); }, _checkEditors: function () { - if(BI.isEmptyString(this.R.getValue())) { + if (BI.isEmptyString(this.R.getValue())) { this.R.setValue(0); } - if(BI.isEmptyString(this.G.getValue())) { + if (BI.isEmptyString(this.G.getValue())) { this.G.setValue(0); } - if(BI.isEmptyString(this.B.getValue())) { + if (BI.isEmptyString(this.B.getValue())) { this.B.setValue(0); } this.storeValue = { @@ -164,7 +168,7 @@ BI.ColorPickerEditor = BI.inherit(BI.Widget, { } else if (color === "transparent") { this.colorShow.element.css("background-color", "").removeClass("auto-color-normal-background").addClass("trans-color-background"); } else { - this.colorShow.element.css({"background-color": color}).removeClass("auto-color-normal-background").removeClass("trans-color-background"); + this.colorShow.element.css({ "background-color": color }).removeClass("auto-color-normal-background").removeClass("trans-color-background"); } }, @@ -223,4 +227,4 @@ BI.ColorPickerEditor = BI.inherit(BI.Widget, { } }); BI.ColorPickerEditor.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.color_picker_editor", BI.ColorPickerEditor); \ No newline at end of file +BI.shortcut("bi.color_picker_editor", BI.ColorPickerEditor); diff --git a/src/case/colorchooser/colorpicker/editor.colorpicker.simple.js b/src/case/colorchooser/colorpicker/editor.colorpicker.simple.js index 32943ecee..63b7576b4 100644 --- a/src/case/colorchooser/colorpicker/editor.colorpicker.simple.js +++ b/src/case/colorchooser/colorpicker/editor.colorpicker.simple.js @@ -28,7 +28,7 @@ BI.SimpleColorPickerEditor = BI.inherit(BI.Widget, { height: 16, width: 16 }); - var RGB = BI.createWidgets(BI.createItems([{text: "R"}, {text: "G"}, {text: "B"}], { + var RGB = BI.createWidgets(BI.createItems([{ text: "R" }, { text: "G" }, { text: "B" }], { type: "bi.label", cls: "color-picker-editor-label", width: 20, @@ -40,7 +40,7 @@ BI.SimpleColorPickerEditor = BI.inherit(BI.Widget, { }; var Ws = BI.createWidgets([{}, {}, {}], { type: "bi.small_text_editor", - cls: "color-picker-editor-input", + cls: "color-picker-editor-input bi-border-radius", validationChecker: checker, errorText: BI.i18nText("BI-Color_Picker_Error_Text"), allowBlank: true, @@ -64,47 +64,49 @@ BI.SimpleColorPickerEditor = BI.inherit(BI.Widget, { BI.createWidget({ type: "bi.vertical_adapt", element: this, - items: [{ - el: this.colorShow, - width: 16, - lgap: 20, - rgap: 15 - }, { - el: RGB[0], - width: 20 - }, { - el: this.R, - width: c.RGB_WIDTH - }, { - el: RGB[1], - width: 20 - }, { - el: this.G, - width: c.RGB_WIDTH - }, { - el: RGB[2], - width: 20 - }, { - el: this.B, - width: c.RGB_WIDTH - }] + items: [ + { + el: this.colorShow, + width: 16, + lgap: 20, + rgap: 15 + }, { + el: RGB[0], + width: 20 + }, { + el: this.R, + width: c.RGB_WIDTH + }, { + el: RGB[1], + width: 20 + }, { + el: this.G, + width: c.RGB_WIDTH + }, { + el: RGB[2], + width: 20 + }, { + el: this.B, + width: c.RGB_WIDTH + } + ] }); }, _checkEditors: function () { - if(BI.isEmptyString(this.R.getValue())) { + if (BI.isEmptyString(this.R.getValue())) { this.R.setValue(0); } - if(BI.isEmptyString(this.G.getValue())) { + if (BI.isEmptyString(this.G.getValue())) { this.G.setValue(0); } - if(BI.isEmptyString(this.B.getValue())) { + if (BI.isEmptyString(this.B.getValue())) { this.B.setValue(0); } }, setValue: function (color) { - this.colorShow.element.css({"background-color": color}); + this.colorShow.element.css({ "background-color": color }); var json = BI.DOM.rgb2json(BI.DOM.hex2rgb(color)); this.R.setValue(BI.isNull(json.r) ? "" : json.r); this.G.setValue(BI.isNull(json.g) ? "" : json.g); @@ -120,4 +122,4 @@ BI.SimpleColorPickerEditor = BI.inherit(BI.Widget, { } }); BI.SimpleColorPickerEditor.EVENT_CHANGE = "EVENT_CHANGE"; -BI.shortcut("bi.simple_color_picker_editor", BI.SimpleColorPickerEditor); \ No newline at end of file +BI.shortcut("bi.simple_color_picker_editor", BI.SimpleColorPickerEditor); From a3b0412925921055ce07e0f8ac3bf732663bb898 Mon Sep 17 00:00:00 2001 From: imp Date: Thu, 15 Dec 2022 21:52:09 +0800 Subject: [PATCH 74/90] =?UTF-8?q?BI-119055=20fix:=20needadaptive=E7=9A=84?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=E8=AE=A1=E7=AE=97NaN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/platform/web/dom.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index 74a1a2a28..7d6ac59ea 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -413,7 +413,7 @@ }, getBottomAdaptPosition: function (combo, popup, extraHeight, needAdaptHeight) { - var comboBounds = combo.element.bounds(), popupBounds = popup.element.bounds(), + var comboBounds = combo.element[0].getBoundingClientRect(), popupBounds = popup.element[0].getBoundingClientRect(), windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); if (BI.DOM.isBottomSpaceEnough(combo, popup, extraHeight)) { return BI.DOM.getBottomPosition(combo, popup, extraHeight); From 1f424148c29504ca8f208e47fa64385fda50b9e6 Mon Sep 17 00:00:00 2001 From: data Date: Thu, 15 Dec 2022 22:05:59 +0800 Subject: [PATCH 75/90] auto upgrade version to 2.0.20221215220552 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 211e2bb1c..c78febdb4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221215171537", + "version": "2.0.20221215220552", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 795f0f038985c5419afd28b608cd8787a8add0e9 Mon Sep 17 00:00:00 2001 From: data Date: Thu, 15 Dec 2022 22:16:43 +0800 Subject: [PATCH 76/90] auto upgrade version to 2.0.20221215221629 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c78febdb4..194b09f6d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221215220552", + "version": "2.0.20221215221629", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 0684c11e2b82962cd83d3eee13a2be8942423d89 Mon Sep 17 00:00:00 2001 From: data Date: Fri, 16 Dec 2022 10:05:25 +0800 Subject: [PATCH 77/90] auto upgrade version to 2.0.20221216100516 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 194b09f6d..806ed86bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221215221629", + "version": "2.0.20221216100516", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 62b9aa0326207798d1357d33cd9ec7ad3c4f53f5 Mon Sep 17 00:00:00 2001 From: zsmj Date: Fri, 16 Dec 2022 11:19:42 +0800 Subject: [PATCH 78/90] =?UTF-8?q?KERNEL-13893=20feat:=20=E9=A2=9C=E8=89=B2?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8=E9=BB=98=E8=AE=A4=E8=89=B2=E6=9D=BF?= =?UTF-8?q?=E5=80=99=E9=80=89=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../colorpicker/colorpicker.hex.js | 261 +++++++++++------- 1 file changed, 158 insertions(+), 103 deletions(-) diff --git a/src/case/colorchooser/colorpicker/colorpicker.hex.js b/src/case/colorchooser/colorpicker/colorpicker.hex.js index 993607841..8154b9c23 100644 --- a/src/case/colorchooser/colorpicker/colorpicker.hex.js +++ b/src/case/colorchooser/colorpicker/colorpicker.hex.js @@ -11,118 +11,173 @@ BI.HexColorPicker = BI.inherit(BI.Widget, { }, _items: [ - [{ - value: "#808080" - }, { - value: "#ffffff" - }, { - value: "#ffebe5" - }, { - value: "#ffddba" - }, { - value: "#ffeebb" - }, { - value: "#d4e9bf" - }, { - value: "#c7e1e1" - }, { - value: "#bfe3f0" - }, { - value: "#ccd6eb" - }], - [{ - value: "#616161" - }, { - value: "#f2f2f2" - }, { - value: "#ffd6cc" - }, { - value: "#ffb87a" - }, { - value: "#ffdf91" - }, { - value: "#b7d2b6" - }, { - value: "#a3d2c9" - }, { - value: "#8ab6d6" - }, { - value: "#bcbce0" - }], - [{ - value: "#404040" - }, { - value: "#dedede" - }, { - value: "#ffab9b" - }, { - value: "#eb8a3a" - }, { - value: "#ffc947" - }, { - value: "#8aa964" - }, { - value: "#5eaaa0" - }, { - value: "#2978b5" - }, { - value: "#8f8faa" - }], - [{ - value: "#202020" - }, { - value: "#bfbfbf" - }, { - value: "#df7461" - }, { - value: "#cf7536" - }, { - value: "#e6b63b" - }, { - value: "#5b8a72" - }, { - value: "#3b9aa3" - }, { - value: "#336291" - }, { - value: "#58568f" - }], - [{ - value: "#000000" - }, { - value: "#a1a1a1" - }, { - value: "#b55140" - }, { - value: "#a6713c" - }, { - value: "#ad975f" - }, { - value: "#5f7d6e" - }, { - value: "#3b7480" - }, { - value: "#425d78" - }, { - value: "#62608a" - }] + [ + { + "value": "#999999" + }, + { + "value": "#FFFFFF" + }, + { + "value": "#FFE5E5" + }, + { + "value": "#FFF1E5" + }, + { + "value": "#FFF9E5" + }, + { + "value": "#E9F5E9" + }, + { + "value": "#EAEEFF" + }, + { + "value": "#EFEBF7" + }, + { + "value": "#FCE8EF" + } + ], + [ + { + "value": "#737373" + }, + { + "value": "#F2F2F2" + }, + { + "value": "#FFA6A6" + }, + { + "value": "#FFD0A6" + }, + { + "value": "#FFEDA6" + }, + { + "value": "#B3DCB2" + }, + { + "value": "#B9C6FF" + }, + { + "value": "#CABAE6" + }, + { + "value": "#F8B1C9" + } + ], + [ + { + "value": "#4C4C4C" + }, + { + "value": "#D9D9D9" + }, + { + "value": "#FF5959" + }, + { + "value": "#FFA759" + }, + { + "value": "#FFDD59" + }, + { + "value": "#7EBE70" + }, + { + "value": "#7B95FF" + }, + { + "value": "#9C7FD0" + }, + { + "value": "#F06D99" + } + ], + [ + { + "value": "#262626" + }, + { + "value": "#BFBFBF" + }, + { + "value": "#FF0000" + }, + { + "value": "#FF7800" + }, + { + "value": "#FFCB00" + }, + { + "value": "#259B23" + }, + { + "value": "#355CFF" + }, + { + "value": "#673AB7" + }, + { + "value": "#E91E63" + } + ], + [ + { + "value": "#000000" + }, + { + "value": "#A6A6A6" + }, + { + "value": "#A80000" + }, + { + "value": "#B65600" + }, + { + "value": "#CEB000" + }, + { + "value": "#0E550C" + }, + { + "value": "#09269C" + }, + { + "value": "#3A1A73" + }, + { + "value": "#B30072" + } + ] ], render: function () { var self = this, o = this.options; + return { type: "bi.button_group", items: this._digest(o.items || this._items), - layouts: [{ - type: "bi.grid", - }], + layouts: [ + { + type: "bi.grid", + } + ], value: o.value, - listeners: [{ - eventName: BI.ButtonGroup.EVENT_CHANGE, - action: function () { - self.fireEvent(BI.HexColorPicker.EVENT_CHANGE, arguments); + listeners: [ + { + eventName: BI.ButtonGroup.EVENT_CHANGE, + action: function () { + self.fireEvent(BI.HexColorPicker.EVENT_CHANGE, arguments); + } } - }], + ], ref: function (_ref) { self.colors = _ref; } From e40e4ff43b13183e851847567e88082420b90cf7 Mon Sep 17 00:00:00 2001 From: data Date: Fri, 16 Dec 2022 11:44:00 +0800 Subject: [PATCH 79/90] auto upgrade version to 2.0.20221216114354 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 806ed86bf..e9a08f146 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221216100516", + "version": "2.0.20221216114354", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 1d0e5930c1d2e6cc0cef7fec87d632b1479f0a17 Mon Sep 17 00:00:00 2001 From: zsmj Date: Fri, 16 Dec 2022 14:24:11 +0800 Subject: [PATCH 80/90] =?UTF-8?q?BI-117667=20fix:=20=E3=80=906.0.5?= =?UTF-8?q?=E5=86=92=E7=83=9F=E3=80=91=E6=95=B0=E5=80=BC=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=A4=9A=E4=B8=AA=E9=80=89=E9=A1=B9=EF=BC=8C?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E5=B7=B2=E9=80=89=E7=82=B9=E5=87=BB=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E6=9B=B4=E5=A4=9A=E5=B1=95=E7=A4=BA=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../multiselect/check/multiselect.display.js | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/widget/multiselect/check/multiselect.display.js b/src/widget/multiselect/check/multiselect.display.js index b5b4f76e8..30442583c 100644 --- a/src/widget/multiselect/check/multiselect.display.js +++ b/src/widget/multiselect/check/multiselect.display.js @@ -40,10 +40,12 @@ BI.DisplaySelectedList = BI.inherit(BI.Pane, { }, items: this._createItems(opts.items), chooseType: BI.ButtonGroup.CHOOSE_TYPE_MULTI, - layouts: [{ - type: "bi.vertical", - lgap: 10 - }] + layouts: [ + { + type: "bi.vertical", + lgap: 10 + } + ] }, itemsCreator: function (options, callback) { if (options.times === 1) { @@ -53,10 +55,7 @@ BI.DisplaySelectedList = BI.inherit(BI.Pane, { if (cacheItems.length > 0) { var renderedItems = cacheItems.slice(0, 100); cacheItems = cacheItems.slice(100); - self.hasNext = true; - if (cacheItems.length === 0) { - self.hasNext = false; - } + self.hasNext = cacheItems.length > 0; callback(self._createItems(renderedItems)); return; } @@ -65,8 +64,8 @@ BI.DisplaySelectedList = BI.inherit(BI.Pane, { self.hasNext = !!ob.hasNext; var firstItemsCount = 100 + ob.items.length % 100; if (ob.items.length > 100) { - cacheItems = ob.items.slice(100 + ob.items.length % 100); - self.hasNext = true; + cacheItems = ob.items.slice(firstItemsCount); + self.hasNext = (firstItemsCount === ob.items.length) ? false : true; } callback(self._createItems(ob.items.slice(0, firstItemsCount))); }); @@ -104,4 +103,4 @@ BI.DisplaySelectedList = BI.inherit(BI.Pane, { } }); -BI.shortcut("bi.display_selected_list", BI.DisplaySelectedList); \ No newline at end of file +BI.shortcut("bi.display_selected_list", BI.DisplaySelectedList); From 8fce13ef6937e2a0220b35fca256e2772c04c3c9 Mon Sep 17 00:00:00 2001 From: zsmj Date: Fri, 16 Dec 2022 17:02:33 +0800 Subject: [PATCH 81/90] =?UTF-8?q?BI-118262=20fix:=20=E6=A0=91=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E7=BB=84=E4=BB=B6=E6=90=9C=E7=B4=A2=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E4=B8=8D=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 搜索面板点击node,会发请求去adjust数据,回调之后才发change事件,如果在这之前点确定,_datachange还没有发生呢 当然即使这样,外部getValue的数据也可能是没adjust的数据,这就是另外的问题了 --- src/case/ztree/parttree.js | 8 +- src/widget/multitree/multi.tree.combo.js | 124 ++++++++------- .../multitree/multi.tree.insert.combo.js | 143 ++++++++++-------- .../trigger/multi.tree.search.insert.pane.js | 108 +++++++------ .../trigger/multi.tree.search.pane.js | 30 ++-- .../multitree/trigger/searcher.multi.tree.js | 31 ++-- 6 files changed, 249 insertions(+), 195 deletions(-) diff --git a/src/case/ztree/parttree.js b/src/case/ztree/parttree.js index 974196b33..8a347548a 100644 --- a/src/case/ztree/parttree.js +++ b/src/case/ztree/parttree.js @@ -37,6 +37,7 @@ BI.PartTree = BI.inherit(BI.AsyncTree, { var self = this, o = this.options; var parentValues = BI.deepClone(treeNode.parentValues || self._getParentValues(treeNode)); var name = this._getNodeValue(treeNode); + this.fireEvent(BI.PartTree.EVENT_CLICK_TREE_NODE); if (treeNode.checked === true) { this.options.paras.selectedValues = this._getUnionValue(); // this._buildTree(self.options.paras.selectedValues, BI.concat(parentValues, name)); @@ -80,7 +81,7 @@ BI.PartTree = BI.inherit(BI.AsyncTree, { var rootNoots = this.nodes.getNodes(); track(rootNoots); - function track (nodes) { + function track(nodes) { BI.each(nodes, function (i, node) { var checkState = node.getCheckStatus(); if (checkState.checked === false) { @@ -135,7 +136,7 @@ BI.PartTree = BI.inherit(BI.AsyncTree, { self.fireEvent(BI.Events.AFTERINIT); }; - function callback (nodes) { + function callback(nodes) { if (self._stop === true) { return; } @@ -171,7 +172,7 @@ BI.PartTree = BI.inherit(BI.AsyncTree, { track([], valueA, valueB); track([], valueB, valueA); - function track (parent, node, compare) { + function track(parent, node, compare) { BI.each(node, function (n, item) { if (BI.isNull(compare[n])) { self._addTreeNode(map, parent, n, item); @@ -197,4 +198,5 @@ BI.PartTree = BI.inherit(BI.AsyncTree, { } }); +BI.PartTree.EVENT_CLICK_TREE_NODE = "EVENT_CLICK_TREE_NODE"; BI.shortcut("bi.part_tree", BI.PartTree); diff --git a/src/widget/multitree/multi.tree.combo.js b/src/widget/multitree/multi.tree.combo.js index bdf374f07..5fca0ca4f 100644 --- a/src/widget/multitree/multi.tree.combo.js +++ b/src/widget/multitree/multi.tree.combo.js @@ -42,7 +42,15 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { }, searcher: { type: "bi.multi_tree_searcher", - itemsCreator: o.itemsCreator + itemsCreator: o.itemsCreator, + listeners: [ + { + eventName: BI.MultiTreeSearcher.EVENT_CLICK_TREE_NODE, + action: function () { + self._dataChange = true; + } + } + ], }, value: { value: o.value || {} } }); @@ -61,43 +69,45 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { self.trigger.setAdapter(this); self.numberCounter.setAdapter(this); }, - listeners: [{ - eventName: BI.MultiTreePopup.EVENT_AFTERINIT, - action: function () { - self.numberCounter.adjustView(); - isInit = true; - if (want2showCounter === true) { - showCounter(); + listeners: [ + { + eventName: BI.MultiTreePopup.EVENT_AFTERINIT, + action: function () { + self.numberCounter.adjustView(); + isInit = true; + if (want2showCounter === true) { + showCounter(); + } + } + }, { + eventName: BI.MultiTreePopup.EVENT_CHANGE, + action: function () { + change = true; + var val = { + type: BI.Selection.Multi, + value: this.hasChecked() ? this.getValue() : {} + }; + self.trigger.getSearcher().setState(val); + self.numberCounter.setButtonChecked(val); + self.storeValue = { value: self.combo.getValue() }; + self.fireEvent(BI.MultiTreeCombo.EVENT_CLICK_ITEM, self.combo.getValue()); + self._dataChange = true; + } + }, { + eventName: BI.MultiTreePopup.EVENT_CLICK_CONFIRM, + action: function () { + self.combo.hideView(); + } + }, { + eventName: BI.MultiTreePopup.EVENT_CLICK_CLEAR, + action: function () { + clear = true; + self._dataChange = true; + self.setValue(); + self._defaultState(); } } - }, { - eventName: BI.MultiTreePopup.EVENT_CHANGE, - action: function () { - change = true; - var val = { - type: BI.Selection.Multi, - value: this.hasChecked() ? this.getValue() : {} - }; - self.trigger.getSearcher().setState(val); - self.numberCounter.setButtonChecked(val); - self.storeValue = { value: self.combo.getValue() }; - self.fireEvent(BI.MultiTreeCombo.EVENT_CLICK_ITEM, self.combo.getValue()); - self._dataChange = true; - } - }, { - eventName: BI.MultiTreePopup.EVENT_CLICK_CONFIRM, - action: function () { - self.combo.hideView(); - } - }, { - eventName: BI.MultiTreePopup.EVENT_CLICK_CLEAR, - action: function () { - clear = true; - self._dataChange = true; - self.setValue(); - self._defaultState(); - } - }], + ], itemsCreator: o.itemsCreator, onLoaded: function () { BI.nextTick(function () { @@ -293,26 +303,28 @@ BI.MultiTreeCombo = BI.inherit(BI.Single, { BI.createWidget({ type: "bi.absolute", element: this, - items: [{ - el: this.combo, - left: 0, - right: 0, - top: 0, - bottom: 0 - }, { - el: triggerBtn, - right: 0, - top: 0, - bottom: 0 - }, { - el: { - type: "bi.vertical_adapt", - items: [this.numberCounter] - }, - right: o.height, - top: 0, - bottom: 0 - }] + items: [ + { + el: this.combo, + left: 0, + right: 0, + top: 0, + bottom: 0 + }, { + el: triggerBtn, + right: 0, + top: 0, + bottom: 0 + }, { + el: { + type: "bi.vertical_adapt", + items: [this.numberCounter] + }, + right: o.height, + top: 0, + bottom: 0 + } + ] }); }, diff --git a/src/widget/multitree/multi.tree.insert.combo.js b/src/widget/multitree/multi.tree.insert.combo.js index 6db34dc61..acacbb875 100644 --- a/src/widget/multitree/multi.tree.insert.combo.js +++ b/src/widget/multitree/multi.tree.insert.combo.js @@ -47,18 +47,25 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { itemsCreator: o.itemsCreator, popup: { type: "bi.multi_tree_search_insert_pane", - listeners: [{ - eventName: BI.MultiTreeSearchInsertPane.EVENT_ADD_ITEM, - action: function () { - self.storeValue.value[self.trigger.getSearcher().getKeyword()] = {}; - self._assertShowValue(); - // setValue以更新paras.value, 之后从search popup中拿到的就能有add的值了 - self.combo.setValue(self.storeValue); - self.numberCounter.setValue(self.storeValue); - self._stopEditing(); - self._dataChange = true; + listeners: [ + { + eventName: BI.MultiTreeSearchInsertPane.EVENT_ADD_ITEM, + action: function () { + self.storeValue.value[self.trigger.getSearcher().getKeyword()] = {}; + self._assertShowValue(); + // setValue以更新paras.value, 之后从search popup中拿到的就能有add的值了 + self.combo.setValue(self.storeValue); + self.numberCounter.setValue(self.storeValue); + self._stopEditing(); + self._dataChange = true; + } + }, { + eventName: BI.MultiTreeSearchInsertPane.EVENT_CLICK_TREE_NODE, + action: function () { + self._dataChange = true; + } } - }] + ] } }, value: { value: o.value || {} } @@ -79,43 +86,45 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { self.trigger.setAdapter(this); self.numberCounter.setAdapter(this); }, - listeners: [{ - eventName: BI.MultiTreePopup.EVENT_AFTERINIT, - action: function () { - self.numberCounter.adjustView(); - isInit = true; - if (want2showCounter === true) { - showCounter(); + listeners: [ + { + eventName: BI.MultiTreePopup.EVENT_AFTERINIT, + action: function () { + self.numberCounter.adjustView(); + isInit = true; + if (want2showCounter === true) { + showCounter(); + } + } + }, { + eventName: BI.MultiTreePopup.EVENT_CHANGE, + action: function () { + change = true; + var val = { + type: BI.Selection.Multi, + value: this.hasChecked() ? this.getValue() : {} + }; + self.trigger.getSearcher().setState(val); + self.numberCounter.setButtonChecked(val); + self.storeValue = { value: self.combo.getValue() }; + self.fireEvent(BI.MultiTreeInsertCombo.EVENT_CLICK_ITEM, self.getValue()); + self._dataChange = true; + } + }, { + eventName: BI.MultiTreePopup.EVENT_CLICK_CONFIRM, + action: function () { + self.combo.hideView(); + } + }, { + eventName: BI.MultiTreePopup.EVENT_CLICK_CLEAR, + action: function () { + clear = true; + self._dataChange = true; + self.setValue(); + self._defaultState(); } } - }, { - eventName: BI.MultiTreePopup.EVENT_CHANGE, - action: function () { - change = true; - var val = { - type: BI.Selection.Multi, - value: this.hasChecked() ? this.getValue() : {} - }; - self.trigger.getSearcher().setState(val); - self.numberCounter.setButtonChecked(val); - self.storeValue = { value: self.combo.getValue() }; - self.fireEvent(BI.MultiTreeInsertCombo.EVENT_CLICK_ITEM, self.getValue()); - self._dataChange = true; - } - }, { - eventName: BI.MultiTreePopup.EVENT_CLICK_CONFIRM, - action: function () { - self.combo.hideView(); - } - }, { - eventName: BI.MultiTreePopup.EVENT_CLICK_CLEAR, - action: function () { - clear = true; - self._dataChange = true; - self.setValue(); - self._defaultState(); - } - }], + ], itemsCreator: o.itemsCreator, onLoaded: function () { BI.nextTick(function () { @@ -303,26 +312,28 @@ BI.MultiTreeInsertCombo = BI.inherit(BI.Single, { BI.createWidget({ type: "bi.absolute", element: this, - items: [{ - el: this.combo, - left: 0, - right: 0, - top: 0, - bottom: 0 - }, { - el: triggerBtn, - right: 0, - top: 0, - bottom: 0 - }, { - el: { - type: "bi.vertical_adapt", - items: [this.numberCounter] - }, - right: o.height, - top: 0, - height: o.height, - }] + items: [ + { + el: this.combo, + left: 0, + right: 0, + top: 0, + bottom: 0 + }, { + el: triggerBtn, + right: 0, + top: 0, + bottom: 0 + }, { + el: { + type: "bi.vertical_adapt", + items: [this.numberCounter] + }, + right: o.height, + top: 0, + height: o.height, + } + ] }); }, diff --git a/src/widget/multitree/trigger/multi.tree.search.insert.pane.js b/src/widget/multitree/trigger/multi.tree.search.insert.pane.js index cc5bff3c9..345d8dab2 100644 --- a/src/widget/multitree/trigger/multi.tree.search.insert.pane.js +++ b/src/widget/multitree/trigger/multi.tree.search.insert.pane.js @@ -25,55 +25,64 @@ BI.MultiTreeSearchInsertPane = BI.inherit(BI.Widget, { return { type: "bi.absolute", - items: [{ - el: { - type: "bi.text_button", - invisible: true, - ref: function (_ref) { - self.addTip = _ref; - }, - text: BI.i18nText("BI-Basic_Click_To_Add_Text", ""), - height: this.constants.height, - cls: "bi-high-light", - handler: function () { - self.fireEvent(BI.MultiTreeSearchInsertPane.EVENT_ADD_ITEM, opts.keywordGetter()); - } - }, - top: 5, - left: 0, - right: 0 - }, { - el: BI.extend({ - type: "bi.part_tree", - tipText: BI.i18nText("BI-No_Select"), - itemsCreator: function (op, callback) { - op.keyword = opts.keywordGetter(); - opts.itemsCreator(op, function (res) { - callback(res); - self.setKeyword(opts.keywordGetter(), res.items); - }); - }, - ref: function (_ref) { - self.partTree = _ref; - }, - value: opts.value, - listeners: [{ - eventName: BI.Controller.EVENT_CHANGE, - action: function () { - self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); + items: [ + { + el: { + type: "bi.text_button", + invisible: true, + ref: function (_ref) { + self.addTip = _ref; + }, + text: BI.i18nText("BI-Basic_Click_To_Add_Text", ""), + height: this.constants.height, + cls: "bi-high-light", + handler: function () { + self.fireEvent(BI.MultiTreeSearchInsertPane.EVENT_ADD_ITEM, opts.keywordGetter()); } - }, { - eventName: BI.TreeView.EVENT_CHANGE, - action: function () { - self.fireEvent(BI.MultiTreeSearchInsertPane.EVENT_CHANGE); - } - }] - }, opts.el), - left: 0, - top: 0, - bottom: 0, - right: 0 - }] + }, + top: 5, + left: 0, + right: 0 + }, { + el: BI.extend({ + type: "bi.part_tree", + tipText: BI.i18nText("BI-No_Select"), + itemsCreator: function (op, callback) { + op.keyword = opts.keywordGetter(); + opts.itemsCreator(op, function (res) { + callback(res); + self.setKeyword(opts.keywordGetter(), res.items); + }); + }, + ref: function (_ref) { + self.partTree = _ref; + }, + value: opts.value, + listeners: [ + { + eventName: BI.Controller.EVENT_CHANGE, + action: function () { + self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); + } + }, { + eventName: BI.TreeView.EVENT_CHANGE, + action: function () { + self.fireEvent(BI.MultiTreeSearchInsertPane.EVENT_CHANGE); + } + }, { + eventName: BI.PartTree.EVENT_CLICK_TREE_NODE, + action: function () { + self.fireEvent(BI.MultiTreeSearchInsertPane.EVENT_CLICK_TREE_NODE); + } + } + ] + }, opts.el), + left: 0, + top: 0, + bottom: 0, + right: 0 + } + ] }; }, @@ -115,5 +124,6 @@ BI.MultiTreeSearchInsertPane.EVENT_CHANGE = "EVENT_CHANGE"; BI.MultiTreeSearchInsertPane.EVENT_CLICK_CONFIRM = "EVENT_CLICK_CONFIRM"; BI.MultiTreeSearchInsertPane.EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; BI.MultiTreeSearchInsertPane.EVENT_ADD_ITEM = "EVENT_ADD_ITEM"; +BI.MultiTreeSearchInsertPane.EVENT_CLICK_TREE_NODE = "EVENT_CLICK_TREE_NODE"; -BI.shortcut("bi.multi_tree_search_insert_pane", BI.MultiTreeSearchInsertPane); \ No newline at end of file +BI.shortcut("bi.multi_tree_search_insert_pane", BI.MultiTreeSearchInsertPane); diff --git a/src/widget/multitree/trigger/multi.tree.search.pane.js b/src/widget/multitree/trigger/multi.tree.search.pane.js index a18ab2a04..82c221d18 100644 --- a/src/widget/multitree/trigger/multi.tree.search.pane.js +++ b/src/widget/multitree/trigger/multi.tree.search.pane.js @@ -25,17 +25,24 @@ BI.MultiTreeSearchPane = BI.inherit(BI.Pane, { opts.itemsCreator(op, callback); }, value: opts.value, - listeners: [{ - eventName: BI.Controller.EVENT_CHANGE, - action: function () { - self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); + listeners: [ + { + eventName: BI.Controller.EVENT_CHANGE, + action: function () { + self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); + } + }, { + eventName: BI.TreeView.EVENT_CHANGE, + action: function () { + self.fireEvent(BI.MultiTreeSearchPane.EVENT_CHANGE); + } + }, { + eventName: BI.PartTree.EVENT_CLICK_TREE_NODE, + action: function () { + self.fireEvent(BI.MultiTreeSearchPane.EVENT_CLICK_TREE_NODE); + } } - }, { - eventName: BI.TreeView.EVENT_CHANGE, - action: function () { - self.fireEvent(BI.MultiTreeSearchPane.EVENT_CHANGE); - } - }], + ], ref: function (_ref) { self.partTree = _ref; } @@ -72,5 +79,6 @@ BI.MultiTreeSearchPane.EVENT_CHANGE = "EVENT_CHANGE"; BI.MultiTreeSearchPane.EVENT_CLICK_CONFIRM = "EVENT_CLICK_CONFIRM"; BI.MultiTreeSearchPane.EVENT_CLICK_CLEAR = "EVENT_CLICK_CLEAR"; +BI.MultiTreeSearchPane.EVENT_CLICK_TREE_NODE = "EVENT_CLICK_TREE_NODE"; -BI.shortcut("bi.multi_tree_search_pane", BI.MultiTreeSearchPane); \ No newline at end of file +BI.shortcut("bi.multi_tree_search_pane", BI.MultiTreeSearchPane); diff --git a/src/widget/multitree/trigger/searcher.multi.tree.js b/src/widget/multitree/trigger/searcher.multi.tree.js index 8b9c4f004..1b2dc6983 100644 --- a/src/widget/multitree/trigger/searcher.multi.tree.js +++ b/src/widget/multitree/trigger/searcher.multi.tree.js @@ -33,17 +33,19 @@ BI.MultiTreeSearcher = BI.inherit(BI.Widget, { defaultText: o.defaultText, height: o.height }, - listeners: [{ - eventName: BI.MultiSelectEditor.EVENT_FOCUS, - action: function () { - self.fireEvent(BI.MultiSelectSearcher.EVENT_FOCUS); + listeners: [ + { + eventName: BI.MultiSelectEditor.EVENT_FOCUS, + action: function () { + self.fireEvent(BI.MultiSelectSearcher.EVENT_FOCUS); + } + }, { + eventName: BI.MultiSelectEditor.EVENT_BLUR, + action: function () { + self.fireEvent(BI.MultiSelectSearcher.EVENT_BLUR); + } } - }, { - eventName: BI.MultiSelectEditor.EVENT_BLUR, - action: function () { - self.fireEvent(BI.MultiSelectSearcher.EVENT_BLUR); - } - }] + ] }); this.searcher = BI.createWidget({ @@ -67,6 +69,14 @@ BI.MultiTreeSearcher = BI.inherit(BI.Widget, { op.keyword = self.editor.getValue(); o.itemsCreator(op, callback); }, + listeners: [ + { + eventName: BI.MultiTreeSearchPane.EVENT_CLICK_TREE_NODE, + action: function () { + self.fireEvent(BI.MultiTreeSearcher.EVENT_CLICK_TREE_NODE, arguments); + } + } + ], value: o.value }, o.popup), @@ -206,4 +216,5 @@ BI.MultiTreeSearcher.EVENT_CHANGE = "EVENT_CHANGE"; BI.MultiTreeSearcher.EVENT_START = "EVENT_START"; BI.MultiTreeSearcher.EVENT_STOP = "EVENT_STOP"; BI.MultiTreeSearcher.EVENT_PAUSE = "EVENT_PAUSE"; +BI.MultiTreeSearcher.EVENT_CLICK_TREE_NODE = "EVENT_CLICK_TREE_NODE"; BI.shortcut("bi.multi_tree_searcher", BI.MultiTreeSearcher); From 445a3b780609a7d3d84aec2f77b21d485c55a1ac Mon Sep 17 00:00:00 2001 From: data Date: Fri, 16 Dec 2022 17:04:41 +0800 Subject: [PATCH 82/90] auto upgrade version to 2.0.20221216170431 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e9a08f146..17810a088 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221216114354", + "version": "2.0.20221216170431", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From 3a57a96f957ed8860b4e51bfcb7c8fa35ec8b417 Mon Sep 17 00:00:00 2001 From: data Date: Sun, 18 Dec 2022 19:45:59 +0800 Subject: [PATCH 83/90] auto upgrade version to 2.0.20221218194544 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 17810a088..0c0ff4c72 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20221216170431", + "version": "2.0.20221218194544", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", From f2ccd1be0fba58a4931e47217fd5a5e7b192ca85 Mon Sep 17 00:00:00 2001 From: zsmj Date: Wed, 21 Dec 2022 17:51:54 +0800 Subject: [PATCH 84/90] =?UTF-8?q?REPORT-87371=20fix:=20=E3=80=90BI6.0?= =?UTF-8?q?=E3=80=91=E3=80=90=E7=9B=AE=E5=BD=95=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=A6=96=E9=A1=B5=E3=80=91=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=97=B6=E6=A8=A1=E6=9D=BF=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=9A=84=E4=B8=8B=E6=8B=89=E6=A1=86=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/combination/combo.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index 003571b29..2a7a0d8d8 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -214,7 +214,15 @@ }, }, } : this.combo; - var positionRelativeElement = BI.DOM.getPositionRelativeContainingBlock(BI.isNull(o.container) ? this.element[0] : BI.Widget._renderEngine.createElement(BI.isFunction(o.container) ? o.container() : o.container)[0]); + + var positionRelativeElement = BI.DOM.getPositionRelativeContainingBlock( + BI.isNull(o.container) + ? this.element[0] + : BI.isWidget(o.container) + ? o.container.element[0] + : BI.Widget._renderEngine.createElement(BI.isFunction(o.container) ? o.container() : o.container)[0] + ); + switch (o.direction) { case "bottom": case "bottom,right": From ac4eaf151449a3566e89216f6c6ec948c990034c Mon Sep 17 00:00:00 2001 From: zsmj Date: Wed, 21 Dec 2022 17:51:54 +0800 Subject: [PATCH 85/90] =?UTF-8?q?REPORT-87371=20fix:=20=E3=80=90BI6.0?= =?UTF-8?q?=E3=80=91=E3=80=90=E7=9B=AE=E5=BD=95=E7=AE=A1=E7=90=86-?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=A6=96=E9=A1=B5=E3=80=91=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=97=B6=E6=A8=A1=E6=9D=BF=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=9A=84=E4=B8=8B=E6=8B=89=E6=A1=86=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/combination/combo.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index 003571b29..2a7a0d8d8 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -214,7 +214,15 @@ }, }, } : this.combo; - var positionRelativeElement = BI.DOM.getPositionRelativeContainingBlock(BI.isNull(o.container) ? this.element[0] : BI.Widget._renderEngine.createElement(BI.isFunction(o.container) ? o.container() : o.container)[0]); + + var positionRelativeElement = BI.DOM.getPositionRelativeContainingBlock( + BI.isNull(o.container) + ? this.element[0] + : BI.isWidget(o.container) + ? o.container.element[0] + : BI.Widget._renderEngine.createElement(BI.isFunction(o.container) ? o.container() : o.container)[0] + ); + switch (o.direction) { case "bottom": case "bottom,right": From caf3dde39d0b360fc4f54dfd3096bf88743b7e88 Mon Sep 17 00:00:00 2001 From: zsmj Date: Thu, 22 Dec 2022 14:54:59 +0800 Subject: [PATCH 86/90] =?UTF-8?q?BI-119217=20fix:=20=E3=80=906.0.6?= =?UTF-8?q?=E5=86=92=E7=83=9F=E3=80=91=E7=AD=89=E6=AF=94=E8=87=AA=E9=80=82?= =?UTF-8?q?=E5=BA=94-=E9=AB=98=E6=B8=85=E5=B1=8F-=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E8=87=AA=E9=80=82=E5=BA=94=E9=A2=84=E8=A7=88=EF=BC=8C=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E6=A0=91=E6=9F=A5=E7=9C=8B=E5=B7=B2=E9=80=89=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 要考虑相对定位元素发生滚动的场景 --- src/base/combination/combo.js | 4 +-- src/core/platform/web/dom.js | 59 +++++++++++++++++++---------------- 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index 2a7a0d8d8..75c45a4fe 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -310,8 +310,8 @@ var scaleX = positonedRect.width / positionRelativeElement.offsetWidth; var scaleY = positonedRect.height / positionRelativeElement.offsetHeight; - p.top && (p.top = Math.round(p.top / scaleY)); - p.left && (p.left = Math.round(p.left / scaleX)); + p.top && (p.top = Math.round(p.top / scaleY + positionRelativeElement.scrollTop)); + p.left && (p.left = Math.round(p.left / scaleX + positionRelativeElement.scrollLeft)); p.adaptHeight && (p.adaptHeight = Math.round(p.adaptHeight / scaleY)); } diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index 7d6ac59ea..ef1989c8a 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -239,13 +239,15 @@ }, isRightSpaceLarger: function (combo) { - var windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); - return windowBounds.width - combo.element.offset().left - combo.element.bounds().width >= combo.element.offset().left; + var comboBounds = combo.element[0].getBoundingClientRect(), + viewportBounds = document.documentElement.getBoundingClientRect(); + return viewportBounds.width - comboBounds.right >= comboBounds.left; }, isBottomSpaceLarger: function (combo) { - var windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); - return windowBounds.height - combo.element.offset().top - combo.element.bounds().height >= combo.element.offset().top; + var comboBounds = combo.element[0].getBoundingClientRect(), + viewportBounds = document.documentElement.getBoundingClientRect(); + return viewportBounds.height - comboBounds.bottom >= comboBounds.top; }, _getLeftAlignPosition: function (combo, popup, extraWidth, container) { @@ -279,9 +281,9 @@ }; }, - getLeftAdaptPosition: function (combo, popup, extraWidth) { - if (BI.DOM.isLeftSpaceEnough(combo, popup, extraWidth)) { - return BI.DOM.getLeftPosition(combo, popup, extraWidth); + getLeftAdaptPosition: function (combo, popup, extraWidth, container) { + if (BI.DOM.isLeftSpaceEnough(combo, popup, extraWidth, container)) { + return BI.DOM.getLeftPosition(combo, popup, extraWidth, container); } return { left: 0 @@ -312,12 +314,12 @@ }; }, - getRightAdaptPosition: function (combo, popup, extraWidth) { - if (BI.DOM.isRightSpaceEnough(combo, popup, extraWidth)) { - return BI.DOM.getRightPosition(combo, popup, extraWidth); + getRightAdaptPosition: function (combo, popup, extraWidth, container) { + if (BI.DOM.isRightSpaceEnough(combo, popup, extraWidth, container)) { + return BI.DOM.getRightPosition(combo, popup, extraWidth, container); } return { - left: BI.Widget._renderEngine.createElement("body").bounds().width - popup.element.bounds().width + left: document.documentElement.getBoundingClientRect().width - popup.element[0].getBoundingClientRect().width - container.getBoundingClientRect().left }; }, @@ -355,26 +357,28 @@ }; }, - getTopAdaptPosition: function (combo, popup, extraHeight, needAdaptHeight) { - var popupBounds = popup.element.bounds(), - windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); + getTopAdaptPosition: function (combo, popup, extraHeight, needAdaptHeight, positionRelativeElement) { + var comboBounds = combo.element[0].getBoundingClientRect(), + popupBounds = popup.element[0].getBoundingClientRect(), + positionRelativeElementRect = positionRelativeElement.getBoundingClientRect(), + viewportBounds = document.documentElement.getBoundingClientRect(); if (BI.DOM.isTopSpaceEnough(combo, popup, extraHeight)) { return BI.DOM.getTopPosition(combo, popup, extraHeight); } if (needAdaptHeight) { return { - top: 0, - adaptHeight: combo.element.offset().top - extraHeight + top: 0 - positionRelativeElementRect.top, + adaptHeight: comboBounds.top - extraHeight }; } - if (popupBounds.height + extraHeight > windowBounds.height) { + if (popupBounds.height + extraHeight > viewportBounds.height) { return { - top: 0, - adaptHeight: windowBounds.height - extraHeight + top: 0 - positionRelativeElementRect.top, + adaptHeight: viewportBounds.height - extraHeight }; } return { - top: 0 + top: 0 - positionRelativeElementRect.top }; }, @@ -413,7 +417,8 @@ }, getBottomAdaptPosition: function (combo, popup, extraHeight, needAdaptHeight) { - var comboBounds = combo.element[0].getBoundingClientRect(), popupBounds = popup.element[0].getBoundingClientRect(), + var comboBounds = combo.element[0].getBoundingClientRect(), + popupBounds = popup.element[0].getBoundingClientRect(), windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); if (BI.DOM.isBottomSpaceEnough(combo, popup, extraHeight)) { return BI.DOM.getBottomPosition(combo, popup, extraHeight); @@ -638,10 +643,10 @@ case "left": case "right": if (BI.DOM.isRightSpaceLarger(combo)) { - left = BI.DOM.getRightAdaptPosition(combo, popup, extraWidth).left; + left = BI.DOM.getRightAdaptPosition(combo, popup, extraWidth, container).left; firstDir = "right"; } else { - left = BI.DOM.getLeftAdaptPosition(combo, popup, extraWidth).left; + left = BI.DOM.getLeftAdaptPosition(combo, popup, extraWidth, container).left; firstDir = "left"; } if (topBottom[0] === "bottom") { @@ -656,19 +661,19 @@ return pos; default : if (BI.DOM.isBottomSpaceLarger(combo)) { - top = BI.DOM.getBottomAdaptPosition(combo, popup, extraHeight, needAdaptHeight).top; + top = BI.DOM.getBottomAdaptPosition(combo, popup, extraHeight, needAdaptHeight, container).top; firstDir = "bottom"; } else { - top = BI.DOM.getTopAdaptPosition(combo, popup, extraHeight, needAdaptHeight).top; + top = BI.DOM.getTopAdaptPosition(combo, popup, extraHeight, needAdaptHeight, container).top; firstDir = "top"; } if (leftRight[0] === "right") { - pos = BI.DOM.getLeftAlignPosition(combo, popup, extraWidth); + pos = BI.DOM.getLeftAlignPosition(combo, popup, extraWidth, container); pos.top = top; pos.dir = firstDir + "," + pos.dir; return pos; } - pos = BI.DOM.getRightAlignPosition(combo, popup, extraWidth); + pos = BI.DOM.getRightAlignPosition(combo, popup, extraWidth, container); pos.top = top; pos.dir = firstDir + "," + pos.dir; return pos; From 287c609f6cd1f7954fbf5317ceb2ee6fa54991c0 Mon Sep 17 00:00:00 2001 From: Claire <1119518763@qq.com> Date: Thu, 22 Dec 2022 16:27:48 +0800 Subject: [PATCH 87/90] =?UTF-8?q?BI-119112=20fix:editor=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89error=20bubble=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/single/editor/editor.js | 2 +- typescript/base/single/editor/editor.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/base/single/editor/editor.js b/src/base/single/editor/editor.js index c0a77c9f6..098a0c543 100644 --- a/src/base/single/editor/editor.js +++ b/src/base/single/editor/editor.js @@ -276,7 +276,7 @@ BI.Editor = BI.inherit(BI.Single, { } if (!this.disabledError && BI.isKey(errorText)) { BI.Bubbles[b ? "show" : "hide"](this.getName(), errorText, this, { - adjustYOffset: o.simple ? 1 : 2, + adjustYOffset: BI.isKey(o.adjustYOffset) ? o.adjustYOffset : (o.simple ? 1 : 2), }); this._checkToolTip(); } diff --git a/typescript/base/single/editor/editor.ts b/typescript/base/single/editor/editor.ts index 2ac35a470..19f07aa0f 100644 --- a/typescript/base/single/editor/editor.ts +++ b/typescript/base/single/editor/editor.ts @@ -11,6 +11,7 @@ export declare class Editor extends Single { watermark?: string; errorText?: string | ((v: string) => string); autocomplete?: string; + adjustYOffset?: number; } & Single['props'] static EVENT_CHANGE: string; From 5b1f652ba3f749a6b1d64c42c5087a5cfe2dfbb8 Mon Sep 17 00:00:00 2001 From: Claire <1119518763@qq.com> Date: Thu, 22 Dec 2022 16:43:23 +0800 Subject: [PATCH 88/90] =?UTF-8?q?Revert=20"BI-119112=20fix:editor=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E8=87=AA=E5=AE=9A=E4=B9=89error=20bubble=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 287c609f6cd1f7954fbf5317ceb2ee6fa54991c0. --- src/base/single/editor/editor.js | 2 +- typescript/base/single/editor/editor.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/base/single/editor/editor.js b/src/base/single/editor/editor.js index 098a0c543..c0a77c9f6 100644 --- a/src/base/single/editor/editor.js +++ b/src/base/single/editor/editor.js @@ -276,7 +276,7 @@ BI.Editor = BI.inherit(BI.Single, { } if (!this.disabledError && BI.isKey(errorText)) { BI.Bubbles[b ? "show" : "hide"](this.getName(), errorText, this, { - adjustYOffset: BI.isKey(o.adjustYOffset) ? o.adjustYOffset : (o.simple ? 1 : 2), + adjustYOffset: o.simple ? 1 : 2, }); this._checkToolTip(); } diff --git a/typescript/base/single/editor/editor.ts b/typescript/base/single/editor/editor.ts index 19f07aa0f..2ac35a470 100644 --- a/typescript/base/single/editor/editor.ts +++ b/typescript/base/single/editor/editor.ts @@ -11,7 +11,6 @@ export declare class Editor extends Single { watermark?: string; errorText?: string | ((v: string) => string); autocomplete?: string; - adjustYOffset?: number; } & Single['props'] static EVENT_CHANGE: string; From db70951e38bcac0824de17efe8e3427eaa3a7c4f Mon Sep 17 00:00:00 2001 From: Claire <1119518763@qq.com> Date: Thu, 22 Dec 2022 16:44:20 +0800 Subject: [PATCH 89/90] =?UTF-8?q?BI-119112=20fix:editor=E5=BC=B9=E5=87=BAe?= =?UTF-8?q?rrorbubble=E4=BD=8D=E7=BD=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/controller/controller.bubbles.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/core/controller/controller.bubbles.js b/src/core/controller/controller.bubbles.js index 6c679b1e9..fc736a094 100644 --- a/src/core/controller/controller.bubbles.js +++ b/src/core/controller/controller.bubbles.js @@ -71,10 +71,7 @@ BI.BubblesController = BI.inherit(BI.Controller, { { name: "preventOverflow", enabled: false - }, { - name: "flip", - enabled: false - }, + } ] }); return this; From 25117de9d3b55461b3fe0f2cdc37356ffcc12b0c Mon Sep 17 00:00:00 2001 From: zsmj Date: Fri, 23 Dec 2022 10:39:02 +0800 Subject: [PATCH 90/90] =?UTF-8?q?BI-119128=20fix:=20=E3=80=90=E8=87=AA?= =?UTF-8?q?=E9=80=82=E5=BA=94=E8=BF=AD=E4=BB=A3=E5=8F=91=E6=95=A3=E3=80=91?= =?UTF-8?q?=E5=B0=8F=E5=B1=8F=E7=BC=96=E8=BE=91=EF=BC=8C=E9=AB=98=E5=BA=A6?= =?UTF-8?q?=E9=80=82=E5=BA=94+=E8=87=AA=E5=AE=9A=E4=B9=89=EF=BC=881366*449?= =?UTF-8?q?=EF=BC=89=EF=BC=8C=E7=9B=B4=E6=8E=A5=E9=A2=84=E8=A7=88=EF=BC=8C?= =?UTF-8?q?=E6=96=87=E6=9C=AC=E6=8E=A7=E4=BB=B6=E4=B8=8B=E6=8B=89=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E5=81=8F=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上下空间都不够的时候场景。 另外高度自适应fixed元素导致滚动问题还需探索一下 --- src/core/platform/web/dom.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/core/platform/web/dom.js b/src/core/platform/web/dom.js index ef1989c8a..945aa359a 100644 --- a/src/core/platform/web/dom.js +++ b/src/core/platform/web/dom.js @@ -416,27 +416,28 @@ }; }, - getBottomAdaptPosition: function (combo, popup, extraHeight, needAdaptHeight) { + getBottomAdaptPosition: function (combo, popup, extraHeight, needAdaptHeight, positionRelativeElement) { var comboBounds = combo.element[0].getBoundingClientRect(), popupBounds = popup.element[0].getBoundingClientRect(), - windowBounds = BI.Widget._renderEngine.createElement("body").bounds(); + viewportBounds = document.documentElement.getBoundingClientRect(), + positionRelativeElementRect = positionRelativeElement.getBoundingClientRect(); if (BI.DOM.isBottomSpaceEnough(combo, popup, extraHeight)) { - return BI.DOM.getBottomPosition(combo, popup, extraHeight); + return BI.DOM.getBottomPosition(combo, popup, extraHeight, positionRelativeElement); } if (needAdaptHeight) { return { - top: comboBounds.top + comboBounds.height + extraHeight, - adaptHeight: windowBounds.height - comboBounds.top - comboBounds.height - extraHeight + top: comboBounds.top + comboBounds.height + extraHeight - positionRelativeElementRect.top, + adaptHeight: viewportBounds.height - comboBounds.top - comboBounds.height - extraHeight }; } - if (popupBounds.height + extraHeight > windowBounds.height) { + if (popupBounds.height + extraHeight > viewportBounds.height) { return { - top: extraHeight, - adaptHeight: windowBounds.height - extraHeight + top: extraHeight - positionRelativeElementRect.top, + adaptHeight: viewportBounds.height - extraHeight }; } return { - top: windowBounds.height - popupBounds.height - extraHeight + top: viewportBounds.height - popupBounds.height - extraHeight - positionRelativeElementRect.top }; },