From 3241eee66325ef98daa17ffb2aae553825b6c4d0 Mon Sep 17 00:00:00 2001 From: jian Date: Mon, 27 Nov 2023 10:26:01 +0800 Subject: [PATCH 01/11] =?UTF-8?q?BI-138460=20fix:=20=E7=BB=99=E4=BA=86?= =?UTF-8?q?=E5=9B=BA=E5=AE=9A=E9=AB=98=E5=BA=A6=E4=B8=8D=E9=9C=80=E8=A6=81?= =?UTF-8?q?minHeight?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../intervalslider/intervalslider.label.less | 3 -- .../widget/intervalslider/intervalslider.less | 3 -- .../widget/intervalslider/intervalslider.js | 52 ++++++------------- 3 files changed, 16 insertions(+), 42 deletions(-) delete mode 100644 packages/fineui/src/less/widget/intervalslider/intervalslider.label.less delete mode 100644 packages/fineui/src/less/widget/intervalslider/intervalslider.less diff --git a/packages/fineui/src/less/widget/intervalslider/intervalslider.label.less b/packages/fineui/src/less/widget/intervalslider/intervalslider.label.less deleted file mode 100644 index fa4882c00..000000000 --- a/packages/fineui/src/less/widget/intervalslider/intervalslider.label.less +++ /dev/null @@ -1,3 +0,0 @@ -.bi-interval-slider-label { - min-height: 50px; -} \ No newline at end of file diff --git a/packages/fineui/src/less/widget/intervalslider/intervalslider.less b/packages/fineui/src/less/widget/intervalslider/intervalslider.less deleted file mode 100644 index f875baf5d..000000000 --- a/packages/fineui/src/less/widget/intervalslider/intervalslider.less +++ /dev/null @@ -1,3 +0,0 @@ -.bi-interval-slider { - min-height: 50px; -} \ No newline at end of file diff --git a/packages/fineui/src/widget/intervalslider/intervalslider.js b/packages/fineui/src/widget/intervalslider/intervalslider.js index b24a795af..f3a1c4aff 100644 --- a/packages/fineui/src/widget/intervalslider/intervalslider.js +++ b/packages/fineui/src/widget/intervalslider/intervalslider.js @@ -23,19 +23,17 @@ import { Single, Editor } from "@/base"; import { AccurateCalculationModel } from "./model.accuratecalculation"; import { SignTextEditor, SliderIconButton } from "../singleslider"; +const CONSTANTS = { + EDITOR_WIDTH: 58, + EDITOR_HEIGHT: 20, + LABEL_HEIGHT: 30, + SLIDER_HEIGHT: 30, +}; + @shortcut() export class IntervalSlider extends Single { static xtype = "bi.interval_slider"; - _constant = { - EDITOR_WIDTH: 58, - EDITOR_R_GAP: 60, - EDITOR_HEIGHT: 20, - SLIDER_WIDTH_HALF: 15, - LABEL_HEIGHT: 30, - SLIDER_WIDTH: 30, - SLIDER_HEIGHT: 30, - TRACK_HEIGHT: 24, - }; + props = { baseCls: "bi-interval-slider bi-slider-track", digit: false, @@ -45,6 +43,8 @@ export class IntervalSlider extends Single { value: { min: "", max: "" }, lAlign: "center", rAlign: "center", + labelHeight: CONSTANTS.LABEL_HEIGHT, + sliderHeight: CONSTANTS.SLIDER_HEIGHT, }; static EVENT_CHANGE = "EVENT_CHANGE"; @@ -60,7 +60,6 @@ export class IntervalSlider extends Single { } render() { - const c = this._constant; const o = this.options; this.enable = false; this.valueOne = ""; @@ -86,8 +85,8 @@ export class IntervalSlider extends Single { text: unit, allowBlank: false, textAlign: lAlign, - width: BI.isNull(editorWidth) ? BI.toPix(c.EDITOR_WIDTH, 2) : BI.toPix(editorWidth, 2), - height: toPix(c.EDITOR_HEIGHT, 2), + width: BI.isNull(editorWidth) ? BI.toPix(CONSTANTS.EDITOR_WIDTH, 2) : BI.toPix(editorWidth, 2), + height: toPix(CONSTANTS.EDITOR_HEIGHT, 2), validationChecker: v => this._checkValidation(v), }); this.labelOne.element.hover( @@ -116,8 +115,8 @@ export class IntervalSlider extends Single { text: unit, allowBlank: false, textAlign: rAlign, - width: BI.isNull(editorWidth) ? BI.toPix(c.EDITOR_WIDTH, 2) : BI.toPix(editorWidth, 2), - height: toPix(c.EDITOR_HEIGHT, 2), + width: BI.isNull(editorWidth) ? BI.toPix(CONSTANTS.EDITOR_WIDTH, 2) : BI.toPix(editorWidth, 2), + height: toPix(CONSTANTS.EDITOR_HEIGHT, 2), validationChecker: v => this._checkValidation(v), }); this.labelTwo.element.hover( @@ -152,7 +151,7 @@ export class IntervalSlider extends Single { return { type: VerticalFillLayout.xtype, - rowSize: [o.labelHeight || c.LABEL_HEIGHT, o.sliderHeight || c.SLIDER_HEIGHT], + rowSize: [o.labelHeight, o.sliderHeight], items: [ this._createLabelWrapper(), { @@ -253,7 +252,6 @@ export class IntervalSlider extends Single { _createLabelWrapper() { const o = this.options; - const c = this._constant; return { el: { @@ -275,7 +273,7 @@ export class IntervalSlider extends Single { ], }, ], - height: o.labelHeight || c.LABEL_HEIGHT, + height: o.labelHeight, }, top: 0, left: 0, @@ -372,24 +370,6 @@ export class IntervalSlider extends Single { return valid; } - _checkOverlap() { - const labelOneLeft = this.labelOne.element[0].offsetLeft; - const labelTwoLeft = this.labelTwo.element[0].offsetLeft; - if (labelOneLeft <= labelTwoLeft) { - if (labelTwoLeft - labelOneLeft < 90) { - this.labelTwo.element.css({ top: 40 }); - } else { - this.labelTwo.element.css({ top: 0 }); - } - } else { - if (labelOneLeft - labelTwoLeft < 90) { - this.labelTwo.element.css({ top: 40 }); - } else { - this.labelTwo.element.css({ top: 0 }); - } - } - } - _checkLabelPosition(oldValueOne, oldValueTwo, valueOne, valueTwo, isLeft) { oldValueOne = parseFloat(oldValueOne); oldValueTwo = parseFloat(oldValueTwo); From 0a6ae59c07811a98fbbcf7e96b753b6d74442a32 Mon Sep 17 00:00:00 2001 From: jimmychai Date: Mon, 27 Nov 2023 19:35:18 +0800 Subject: [PATCH 02/11] =?UTF-8?q?BI-138644=20fix:=20=E7=81=B0=E5=8C=96?= =?UTF-8?q?=E7=9A=84=E5=88=86=E7=A7=92=E5=8F=AF=E8=AE=BE=E7=BD=AE=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dynamicdatetime.timeselect.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/fineui/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js b/packages/fineui/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js index 32ef8f9a0..928ad02fe 100644 --- a/packages/fineui/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js +++ b/packages/fineui/src/widget/dynamicdatetime/dynamicdatetime.timeselect.js @@ -181,18 +181,24 @@ export class DynamicDateTimeSelect extends Widget { } _checkHour(value) { - this.hour.setDownEnable(parseInt(value) > 0); - this.hour.setUpEnable(parseInt(value) < 23); + const { timeSelectTypes } = this.options; + const canSelect = timeSelectTypes.includes(DynamicDateTimeSelect.HOUR); + this.hour.setDownEnable(canSelect && parseInt(value) > 0); + this.hour.setUpEnable(canSelect && parseInt(value) < 23); } _checkMinute(value) { - this.minute.setDownEnable(parseInt(value) > 0); - this.minute.setUpEnable(parseInt(value) < 59); + const { timeSelectTypes } = this.options; + const canSelect = timeSelectTypes.includes(DynamicDateTimeSelect.MINUTE); + this.minute.setDownEnable(canSelect && parseInt(value) > 0); + this.minute.setUpEnable(canSelect && parseInt(value) < 59); } _checkSecond(value) { - this.second.setDownEnable(parseInt(value) > 0); - this.second.setUpEnable(parseInt(value) < 59); + const { timeSelectTypes } = this.options; + const canSelect = timeSelectTypes.includes(DynamicDateTimeSelect.SECOND); + this.second.setDownEnable(canSelect && parseInt(value) > 0); + this.second.setUpEnable(canSelect && parseInt(value) < 59); } _autoSwitch(v, type) { From ceebbfad94c130a90498bd7dd21b3503dbac2d99 Mon Sep 17 00:00:00 2001 From: jimmychai Date: Tue, 28 Nov 2023 13:47:07 +0800 Subject: [PATCH 03/11] =?UTF-8?q?BI-139113=20fix:=20=E4=BC=98=E5=8C=96subs?= =?UTF-8?q?=E9=94=80=E6=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/fineui/src/fix/fix.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/fineui/src/fix/fix.js b/packages/fineui/src/fix/fix.js index a28f5e4a8..ddc37b044 100644 --- a/packages/fineui/src/fix/fix.js +++ b/packages/fineui/src/fix/fix.js @@ -7,7 +7,7 @@ const pendingCleanupDeps = []; const cleanupDeps = () => { for (let i = 0; i < pendingCleanupDeps.length; i++) { const dep = pendingCleanupDeps[i]; - dep.subs = dep.subs.filter(s => s); + dep.subs = dep.subs.filter(s => dep.subsSet.has(s.id)); dep._pending = false; } pendingCleanupDeps.length = 0; @@ -23,14 +23,16 @@ class Dep { this.id = uid++; this._pending = false; this.subs = []; + this.subsSet = new Set(); } addSub(sub) { this.subs.push(sub); + this.subsSet.add(sub.id); } removeSub(sub) { - this.subs[this.subs.indexOf(sub)] = null; + this.subsSet.delete(sub.id); if (!this._pending) { this._pending = true; pendingCleanupDeps.push(this); @@ -45,7 +47,7 @@ class Dep { notify(options) { // stabilize the subscriber list first - const subs = this.subs.filter(s => s); + const subs = this.subs.filter(s => this.subsSet.has(s.id)); for (let i = 0, l = subs.length; i < l; i++) { subs[i].update(options); } From 1630eb36a19b1a86f8afe987efc6825f386548ba Mon Sep 17 00:00:00 2001 From: guyi Date: Tue, 28 Nov 2023 20:27:40 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E6=9C=AA=E5=B1=95=E5=BC=80=E7=9A=84popup?= =?UTF-8?q?=EF=BC=8CsetValue=E5=90=8E=E4=B8=8D=E4=BC=9A=E6=94=B9=E5=8F=98?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/fineui/src/base/combination/bubble.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/fineui/src/base/combination/bubble.js b/packages/fineui/src/base/combination/bubble.js index c78fcf111..af3da3cef 100644 --- a/packages/fineui/src/base/combination/bubble.js +++ b/packages/fineui/src/base/combination/bubble.js @@ -520,6 +520,7 @@ export class Bubble extends Widget { this.combo.setValue(v); if (isNull(this.popupView)) { this.options.popup.value = v; + !isNull(this.options.popup.el) && (this.options.popup.el.value = v); } else { this.popupView.setValue(v); } From bb7e287448f3371603a8b0af60ebb37880f58464 Mon Sep 17 00:00:00 2001 From: treecat <2184452844@qq.com> Date: Sun, 3 Dec 2023 18:29:37 +0800 Subject: [PATCH 05/11] =?UTF-8?q?BI-139664=20fix:=E6=BB=91=E5=9D=97?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widget/intervalslider/intervalslider.js | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/packages/fineui/src/widget/intervalslider/intervalslider.js b/packages/fineui/src/widget/intervalslider/intervalslider.js index f3a1c4aff..afd1919f3 100644 --- a/packages/fineui/src/widget/intervalslider/intervalslider.js +++ b/packages/fineui/src/widget/intervalslider/intervalslider.js @@ -59,6 +59,10 @@ export class IntervalSlider extends Single { this.populate(); } + getConstant() { + return CONSTANTS; + } + render() { const o = this.options; this.enable = false; @@ -85,7 +89,7 @@ export class IntervalSlider extends Single { text: unit, allowBlank: false, textAlign: lAlign, - width: BI.isNull(editorWidth) ? BI.toPix(CONSTANTS.EDITOR_WIDTH, 2) : BI.toPix(editorWidth, 2), + width: isNull(editorWidth) ? toPix(CONSTANTS.EDITOR_WIDTH, 2) : toPix(editorWidth, 2), height: toPix(CONSTANTS.EDITOR_HEIGHT, 2), validationChecker: v => this._checkValidation(v), }); @@ -115,7 +119,7 @@ export class IntervalSlider extends Single { text: unit, allowBlank: false, textAlign: rAlign, - width: BI.isNull(editorWidth) ? BI.toPix(CONSTANTS.EDITOR_WIDTH, 2) : BI.toPix(editorWidth, 2), + width: isNull(editorWidth) ? toPix(CONSTANTS.EDITOR_WIDTH, 2) : toPix(editorWidth, 2), height: toPix(CONSTANTS.EDITOR_HEIGHT, 2), validationChecker: v => this._checkValidation(v), }); @@ -384,18 +388,27 @@ export class IntervalSlider extends Single { } } + // 别删,历史原因,定时调度不能用 parentElement.children 函数 + _getElementFirstChild() { + return parentElement.children()[0] + } + _resetLabelPosition(needReverse) { const { lAlign, rAlign } = this.options; + this.labelOne.element.css({ left: needReverse ? "unset" : "0%", right: needReverse ? "0%" : "unset", }); - this.labelOne.element.children()[0] && (this.labelOne.element.children()[0].style.textAlign = needReverse ? rAlign : lAlign); + this._getElementFirstChild(this.labelOne.element) + ?.labelOneChild.css({ textAlign: needReverse ? rAlign : lAlign }); + this.labelTwo.element.css({ - left: needReverse ? "0%" : "unset", - right: needReverse ? "unset" : "0%", + left: needReverse ? "0%" : "unset", + right: needReverse ? "unset" : "0%", }); - this.labelTwo.element.children()[0] && (this.labelTwo.element.children()[0].style.textAlign = needReverse ? lAlign : rAlign); + this._getElementFirstChild(this.labelTwo.element) + ?.css({ textAlign: needReverse ? lAlign : rAlign }); } _setSliderOnePosition(percent) { From 59a94237536078fe2fe3e168cbe3df7c3042fd76 Mon Sep 17 00:00:00 2001 From: treecat <2184452844@qq.com> Date: Sun, 3 Dec 2023 18:31:53 +0800 Subject: [PATCH 06/11] =?UTF-8?q?BI-139664=20fix:=E6=BB=91=E5=9D=97?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/fineui/src/widget/intervalslider/intervalslider.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/fineui/src/widget/intervalslider/intervalslider.js b/packages/fineui/src/widget/intervalslider/intervalslider.js index afd1919f3..413fa78ad 100644 --- a/packages/fineui/src/widget/intervalslider/intervalslider.js +++ b/packages/fineui/src/widget/intervalslider/intervalslider.js @@ -388,8 +388,8 @@ export class IntervalSlider extends Single { } } - // 别删,历史原因,定时调度不能用 parentElement.children 函数 - _getElementFirstChild() { + // 别删,历史原因,定时调度不能用 element.children 函数 + _getElementFirstChild(parentElement) { return parentElement.children()[0] } From d1357ed07e4ca1480e5c6d065762dc5ca8c77f93 Mon Sep 17 00:00:00 2001 From: treecat <2184452844@qq.com> Date: Sun, 3 Dec 2023 18:48:37 +0800 Subject: [PATCH 07/11] =?UTF-8?q?BI-139664=20fix:=E6=BB=91=E5=9D=97?= =?UTF-8?q?=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/widget/intervalslider/intervalslider.js | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/packages/fineui/src/widget/intervalslider/intervalslider.js b/packages/fineui/src/widget/intervalslider/intervalslider.js index 413fa78ad..63c1af7b8 100644 --- a/packages/fineui/src/widget/intervalslider/intervalslider.js +++ b/packages/fineui/src/widget/intervalslider/intervalslider.js @@ -388,27 +388,18 @@ export class IntervalSlider extends Single { } } - // 别删,历史原因,定时调度不能用 element.children 函数 - _getElementFirstChild(parentElement) { - return parentElement.children()[0] - } - _resetLabelPosition(needReverse) { const { lAlign, rAlign } = this.options; - this.labelOne.element.css({ left: needReverse ? "unset" : "0%", right: needReverse ? "0%" : "unset", }); - this._getElementFirstChild(this.labelOne.element) - ?.labelOneChild.css({ textAlign: needReverse ? rAlign : lAlign }); - + this.labelOne.element.children()[0] && (this.labelOne.element.children()[0].style.textAlign = needReverse ? rAlign : lAlign); this.labelTwo.element.css({ - left: needReverse ? "0%" : "unset", - right: needReverse ? "unset" : "0%", + left: needReverse ? "0%" : "unset", + right: needReverse ? "unset" : "0%", }); - this._getElementFirstChild(this.labelTwo.element) - ?.css({ textAlign: needReverse ? lAlign : rAlign }); + this.labelTwo.element.children()[0] && (this.labelTwo.element.children()[0].style.textAlign = needReverse ? lAlign : rAlign); } _setSliderOnePosition(percent) { From c9f21b2950aa2b6196d7ceb89944c4efddaf54ed Mon Sep 17 00:00:00 2001 From: treecat <2184452844@qq.com> Date: Sun, 3 Dec 2023 20:28:28 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E6=97=A0jira=20fix:bind?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/widget/singleslider/button/editor.sign.text.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/fineui/src/widget/singleslider/button/editor.sign.text.js b/packages/fineui/src/widget/singleslider/button/editor.sign.text.js index da7c44cb9..7c9608307 100644 --- a/packages/fineui/src/widget/singleslider/button/editor.sign.text.js +++ b/packages/fineui/src/widget/singleslider/button/editor.sign.text.js @@ -106,17 +106,18 @@ export class SignTextEditor extends Widget { _checkText() { const o = this.options; nextTick( - bind(() => { + () => { if (this.editor.getValue() === "") { this.text.setValue(o.watermark || ""); this.text.element.addClass("bi-water-mark"); } else { let v = this.editor.getValue(); v = isEmpty(v) || v === o.text ? o.text : v + o.text; + console.log(v) this.text.setValue(v); this.text.element.removeClass("bi-water-mark"); } - }, this) + } ); } From ade902d4e67b2ba064aa773df8fb584e66b0e4ff Mon Sep 17 00:00:00 2001 From: treecat <2184452844@qq.com> Date: Sun, 3 Dec 2023 22:28:50 +0800 Subject: [PATCH 09/11] =?UTF-8?q?BI-137647=20fix:=E5=8D=95=E9=80=89?= =?UTF-8?q?=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/fineui/src/less/base/single/input/radio.less | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/fineui/src/less/base/single/input/radio.less b/packages/fineui/src/less/base/single/input/radio.less index a1aaa4071..52e569874 100644 --- a/packages/fineui/src/less/base/single/input/radio.less +++ b/packages/fineui/src/less/base/single/input/radio.less @@ -15,6 +15,9 @@ border-color: @color-bi-border-hover-active-radio; } } + .bi-radio-icon { + background-color: @color-bi-background-active-radio-content; + } &.active { & .radio-content, &.radio-content { border-color: @color-bi-border-hover-active-radio; From 91d175508d2476d24faa0a2777778c4abfcb9a2c Mon Sep 17 00:00:00 2001 From: treecat <2184452844@qq.com> Date: Sun, 3 Dec 2023 22:36:49 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E6=97=A0jira=20chore:=20console.log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fineui/src/widget/singleslider/button/editor.sign.text.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/fineui/src/widget/singleslider/button/editor.sign.text.js b/packages/fineui/src/widget/singleslider/button/editor.sign.text.js index 7c9608307..c03ba34bc 100644 --- a/packages/fineui/src/widget/singleslider/button/editor.sign.text.js +++ b/packages/fineui/src/widget/singleslider/button/editor.sign.text.js @@ -113,7 +113,6 @@ export class SignTextEditor extends Widget { } else { let v = this.editor.getValue(); v = isEmpty(v) || v === o.text ? o.text : v + o.text; - console.log(v) this.text.setValue(v); this.text.element.removeClass("bi-water-mark"); } From 7bbc4297604cb50d0ebf860693ff4bfd0e165c62 Mon Sep 17 00:00:00 2001 From: Treecat Date: Mon, 4 Dec 2023 11:26:09 +0800 Subject: [PATCH 11/11] BI-138908 fix:nextTick --- packages/fineui/package.json | 2 +- packages/fineui/src/core/2.base.js | 9 +- .../fineui/src/core/constant/writable.var.js | 115 +++++++-------- packages/fineui/src/core/element/element.js | 132 +++++++++--------- packages/fineui/src/fix/fix.js | 2 +- 5 files changed, 124 insertions(+), 136 deletions(-) diff --git a/packages/fineui/package.json b/packages/fineui/package.json index 0bd7ddf2e..f467aa097 100644 --- a/packages/fineui/package.json +++ b/packages/fineui/package.json @@ -1,6 +1,6 @@ { "name": "@fui/core", - "version": "3.0.20230727164622", + "version": "3.0.20231204103846", "description": "fineui", "main": "dist/fineui.min.js", "module": "dist/lib/index.js", diff --git a/packages/fineui/src/core/2.base.js b/packages/fineui/src/core/2.base.js index 23fc68095..3bbf2d00d 100644 --- a/packages/fineui/src/core/2.base.js +++ b/packages/fineui/src/core/2.base.js @@ -912,7 +912,8 @@ export const delay = lodashFns.delay; export const defer = lodashFns.defer; export const wrap = lodashFns.wrap; -export const nextTick = (function () { + +export let nextTick = /*!PURE*/(function () { const callbacks = []; let pending = false; let timerFunc = void 0; @@ -971,7 +972,7 @@ export const nextTick = (function () { pending = true; timerFunc(); } - // $flow-disable-line + if (!cb && typeof Promise !== "undefined") { return new Promise((resolve, reject) => { _resolve = resolve; @@ -980,6 +981,10 @@ export const nextTick = (function () { }; })(); +export const setNextTick = (fn) => { + nextTick = fn; +} + // 数字相关方法 _.each(["random"], name => { lodashFns[name] = _apply(name); diff --git a/packages/fineui/src/core/constant/writable.var.js b/packages/fineui/src/core/constant/writable.var.js index 4d4f90484..d8a503c29 100644 --- a/packages/fineui/src/core/constant/writable.var.js +++ b/packages/fineui/src/core/constant/writable.var.js @@ -1,51 +1,50 @@ /** * 可写的常量 */ -import { isNumber } from "../2.base"; +import { isNumber, nextTick, setNextTick } from "../2.base"; import { _global } from "../0.foundation"; import { Cache } from "../structure"; +import { Element, setElement } from "../element/element"; import { setDom, DOM } from "../utils"; const PropertyDescriptors = {}; +export function _defineVarProperties(libName) { + Object.defineProperties(libName, PropertyDescriptors); +} + +function addDescriptor(key, options) { + options.enumerable = options.enumerable === undefined ? true : options.enumerable; + options.configurable = options.configurable === undefined ? true : options.configurable; + PropertyDescriptors[key] = options; +} + export let EVENT_RESPONSE_TIME = 200; export const setEventResponseTime = v => { EVENT_RESPONSE_TIME = v; }; -PropertyDescriptors["EVENT_RESPONSE_TIME"] = { - enumerable: true, - configurable: true, - get: function() { - return EVENT_RESPONSE_TIME; - }, +addDescriptor("EVENT_RESPONSE_TIME", { + get: () => EVENT_RESPONSE_TIME, set: setEventResponseTime, -}; +}); export let pixUnit = "px"; export const setPixUnit = v => { pixUnit = v; }; -PropertyDescriptors["pixUnit"] = { - enumerable: true, - configurable: true, - get: function() { - return pixUnit; - }, +addDescriptor("pixUnit", { + get: () => pixUnit, set: setPixUnit, -}; +}); export let pixRatio = 1; export const setPixRatio = v => { pixRatio = v; }; -PropertyDescriptors["pixRatio"] = { - enumerable: true, - configurable: true, - get: function() { - return pixRatio; - }, +addDescriptor("pixRatio", { + get: () => pixRatio, set: setPixRatio, -}; +}); export let StartOfWeek = 1; export const setStartOfWeek = v => { @@ -55,27 +54,19 @@ export const setStartOfWeek = v => { } StartOfWeek = v; }; -PropertyDescriptors["StartOfWeek"] = { - enumerable: true, - configurable: true, - get: function() { - return StartOfWeek; - }, +addDescriptor("StartOfWeek", { + get: () => StartOfWeek, set: setStartOfWeek, -}; +}); export let BlankSplitChar = "\u200b \u200b"; export const setBlankSplitChar = v => { BlankSplitChar = v; }; -PropertyDescriptors["BlankSplitChar"] = { - enumerable: true, - configurable: true, - get: function() { - return BlankSplitChar; - }, +addDescriptor("BlankSplitChar", { + get: () => BlankSplitChar, set: setBlankSplitChar, -}; +}); // 一定返回最终的单位 export let pixFormat = (pix, border) => { @@ -95,14 +86,10 @@ export let pixFormat = (pix, border) => { export const setPixFormat = v => { pixFormat = v; }; -PropertyDescriptors["pixFormat"] = { - enumerable: true, - configurable: true, - get: function() { - return pixFormat; - }, +addDescriptor("pixFormat", { + get: () => pixFormat, set: setPixFormat, -}; +}); export let toPix = (pix, border) => { if (!isNumber(pix)) { @@ -120,14 +107,10 @@ export let toPix = (pix, border) => { export let setToPix = v => { toPix = v; }; -PropertyDescriptors["toPix"] = { - enumerable: true, - configurable: true, - get: function() { - return toPix; - }, +addDescriptor("toPix", { + get: () => toPix, set: setToPix, -}; +}); const getCacheItem = key => { Cache.getItem(key, { typeConversion: true, defaultValue: true }); @@ -137,24 +120,22 @@ export const setEventBlur = v => { EVENT_BLUR = v; Cache.setItem("event.blur", v); }; -PropertyDescriptors["EVENT_BLUR"] = { - enumerable: true, - configurable: true, - get: function() { - return EVENT_BLUR; - }, +addDescriptor("EVENT_BLUR", { + get: () => EVENT_BLUR, set: setEventBlur, -}; +}); + +addDescriptor("Element", { + get: () => Element, + set: setElement, +}); -PropertyDescriptors["DOM"] = { - enumerable: true, - configurable: true, - get: function() { - return DOM; - }, +addDescriptor("DOM", { + get: () => DOM, set: setDom, -}; +}); -export function _defineVarProperties(libName) { - Object.defineProperties(libName, PropertyDescriptors); -} +addDescriptor("nextTick", { + get: () => nextTick, + set: setNextTick, +}); \ No newline at end of file diff --git a/packages/fineui/src/core/element/element.js b/packages/fineui/src/core/element/element.js index 9b08c0762..111605ad3 100644 --- a/packages/fineui/src/core/element/element.js +++ b/packages/fineui/src/core/element/element.js @@ -1,76 +1,78 @@ import { registFunction } from "./plugins"; import { isWidget, isString } from "../2.base"; -export function Element(widget, attribs) { - this.l = this.r = this.t = this.b = 0; // 边框 - this.marginLeft = this.marginRight = this.marginTop = this.marginBottom = 0; // 间距 - this.position = {}; - this.classMap = {}; - this.classList = []; - this.children = []; - this.attribs = attribs || {}; - this.styles = {}; - // 兼容处理 - this["0"] = this; - this.style = {}; - if (!widget) { - this.nodeName = "body"; - this.position.x = 0; - this.position.y = 0; - this.attribs.id = "body"; - } else if (isWidget(widget)) { - this.widget = widget; - this.nodeName = widget.options.tagName; - this.textBaseLine = widget.options.textBaseLine; - } else if (isString(widget)) { - this.nodeName = widget; +export let Element = class { + constructor(widget, attribs) { + this.l = this.r = this.t = this.b = 0; // 边框 + this.marginLeft = this.marginRight = this.marginTop = this.marginBottom = 0; // 间距 + this.position = {}; + this.classMap = {}; + this.classList = []; + this.children = []; + this.attribs = attribs || {}; + this.styles = {}; + // 兼容处理 + this["0"] = this; + this.style = {}; + if (!widget) { + this.nodeName = "body"; + this.position.x = 0; + this.position.y = 0; + this.attribs.id = "body"; + } else if (isWidget(widget)) { + this.widget = widget; + this.nodeName = widget.options.tagName; + this.textBaseLine = widget.options.textBaseLine; + } else if (isString(widget)) { + this.nodeName = widget; + } } -} -initElement(Element); -registFunction(Element); + appendChild(child) { + child.parent = this; + if (this.children.push(child) !== 1) { + const sibling = this.children[this.children.length - 2]; + sibling.next = child; + child.prev = sibling; + child.next = null; + } + } + + append(child) { + child.parent = this; + if (this.children.push(child) !== 1) { + const sibling = this.children[this.children.length - 2]; + sibling.next = child; + child.prev = sibling; + child.next = null; + } + } -function initElement(element) { - element.prototype = { - appendChild(child) { - child.parent = this; - if (this.children.push(child) !== 1) { - const sibling = this.children[this.children.length - 2]; - sibling.next = child; - child.prev = sibling; - child.next = null; - } - }, - append(child) { - child.parent = this; - if (this.children.push(child) !== 1) { - const sibling = this.children[this.children.length - 2]; - sibling.next = child; - child.prev = sibling; - child.next = null; - } - }, - getParent() { - return this.parent; - }, - getSiblings() { - const parent = this.getParent(); - - return parent ? parent.getChildren() : [this]; - }, - getChildren() { - return this.children; - }, + getParent() { + return this.parent; + } - getBounds() { - return {}; - }, + getSiblings() { + const parent = this.getParent(); - width() { + return parent ? parent.getChildren() : [this]; + } - }, - height() { + getChildren() { + return this.children; + } + + getBounds() { + return {}; + } + + width() {} + + height() {} +} + +registFunction(Element); - }, - }; +export function setElement(element) { + Element = element; } diff --git a/packages/fineui/src/fix/fix.js b/packages/fineui/src/fix/fix.js index ddc37b044..0572c66d6 100644 --- a/packages/fineui/src/fix/fix.js +++ b/packages/fineui/src/fix/fix.js @@ -205,7 +205,7 @@ const nextTick = (function () { pending = true; timerFunc(); } - // $flow-disable-line + if (!cb && typeof Promise !== "undefined") { return new Promise((resolve, reject) => { _resolve = resolve;