diff --git a/package.json b/package.json index 9982cdf4..d5f9497e 100644 --- a/package.json +++ b/package.json @@ -67,8 +67,8 @@ "eslint-plugin-no-function-declare-after-return": "^1.0.0", "eslint-plugin-react": "7.14.3", "husky": "^8.0.3", - "jest": "^25.5.4", - "jest-environment-jsdom-sixteen": "^1.0.3", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "lint-staged": "^15.2.0", "openinula": "workspace:*", "prettier": "^3.1.1", diff --git a/packages/inula/__tests__/ComponentTest/PortalComponent.test.js b/packages/inula/__tests__/ComponentTest/PortalComponent.test.js index 79801e02..26186fb4 100644 --- a/packages/inula/__tests__/ComponentTest/PortalComponent.test.js +++ b/packages/inula/__tests__/ComponentTest/PortalComponent.test.js @@ -282,7 +282,7 @@ describe('PortalComponent Test', () => { Inula.render(, container); showPortalInput(true); - jest.advanceTimersToNextTimer(); + jest.useFakeTimers(); dispatchChangeEvent(inputRef.current, 'test'); expect(fn).toHaveBeenCalledTimes(1); }); diff --git a/packages/inula/jest.config.js b/packages/inula/jest.config.js index 884a8a8b..3cc92923 100644 --- a/packages/inula/jest.config.js +++ b/packages/inula/jest.config.js @@ -23,7 +23,7 @@ module.exports = { setupFilesAfterEnv: [require.resolve('./__tests__/jest/jestSetting.js')], - testEnvironment: 'jest-environment-jsdom-sixteen', + testEnvironment: 'jest-environment-jsdom', testMatch: [ // '/scripts/__tests__/InulaXTest/edgeCases/deepVariableObserver.test.tsx', @@ -32,5 +32,5 @@ module.exports = { '/__tests__/**/*.test.tsx', ], - timers: 'fake', + fakeTimers: { enableGlobally: true }, }; diff --git a/packages/inula/src/dom/DOMPropertiesHandler/StyleHandler.ts b/packages/inula/src/dom/DOMPropertiesHandler/StyleHandler.ts index 46496f2f..76d9c8c0 100644 --- a/packages/inula/src/dom/DOMPropertiesHandler/StyleHandler.ts +++ b/packages/inula/src/dom/DOMPropertiesHandler/StyleHandler.ts @@ -62,16 +62,16 @@ function isNeedUnitCSS(styleName: string) { * 对空值或布尔值进行适配,转为空字符串 * 去掉多余空字符 */ -export function adjustStyleValue(name, value) { - let validValue = value; - - if (typeof value === 'number' && value !== 0 && isNeedUnitCSS(name)) { - validValue = `${value}px`; - } else if (value === '' || value === null || value === undefined || typeof value === 'boolean') { - validValue = ''; +export function adjustStyleValue(name: string, value: unknown, isCustomProperty = false) { + if (value === '' || value === null || value === undefined || typeof value === 'boolean') { + return ''; } - return validValue; + if (!isCustomProperty && typeof value === 'number' && value !== 0 && isNeedUnitCSS(name)) { + return `${value}px`; + } + + return value; } /** @@ -83,14 +83,16 @@ export function setStyles(dom, styles) { } const style = dom.style; - Object.keys(styles).forEach(name => { - const styleVal = styles[name]; - // 以--开始的样式直接设置即可 - if (name.indexOf('--') === 0) { + for (let name of Object.keys(styles)) { + const isCustomProperty = name.indexOf('--') == 0; + const styleVal = adjustStyleValue(name, styles[name], isCustomProperty); + if (name === 'float') { + name = 'cssFloat'; + } + if (isCustomProperty) { style.setProperty(name, styleVal); } else { - // 使用这种赋值方式,浏览器可以将'WebkitLineClamp', 'backgroundColor'分别识别为'-webkit-line-clamp'和'backgroud-color' - style[name] = adjustStyleValue(name, styleVal); + style[name] = styleVal; } - }); + } }