441 lines
16 KiB
JavaScript
441 lines
16 KiB
JavaScript
const THEME_MODE_STORAGE_KEY = 'u-theme-mode'
|
|||
|
|
|
||
|
|
const FALLBACK_THEME_VARS = {
|
||
|
|
light: {
|
||
|
|
'--up-main-color': 'var(--up-light-main-color, #303133)',
|
||
|
|
'--up-content-color': 'var(--up-light-content-color, #606266)',
|
||
|
|
'--up-tips-color': 'var(--up-light-tips-color, #909193)',
|
||
|
|
'--up-light-color': 'var(--up-light-light-color, #c0c4cc)',
|
||
|
|
'--up-border-color': 'var(--up-light-border-color, #dadbde)',
|
||
|
|
'--up-bg-color': 'var(--up-light-bg-color, #f3f4f6)',
|
||
|
|
'--up-hover-bg-color': '#e7ebf0',
|
||
|
|
'--up-page-bg-color': '#f3f4f6',
|
||
|
|
'--up-card-bg-color': '#ffffff',
|
||
|
|
'--up-navbar-bg-color': '#ffffff',
|
||
|
|
'--up-table2-header-bg-color': '#f5f7fa',
|
||
|
|
'--up-table2-zebra-bg-color': '#fafafa',
|
||
|
|
'--up-table2-highlight-bg-color': '#f5f7fa',
|
||
|
|
'--up-gap-bg-color': '#f3f4f6',
|
||
|
|
'--up-skeleton-bg-color': '#f1f2f4',
|
||
|
|
'--up-skeleton-shimmer-color': '#e6e6e6',
|
||
|
|
'--up-swipe-action-button-bg-color': '#c7c6cd',
|
||
|
|
'--up-index-list-indicator-bg-color': '#c9c9c9',
|
||
|
|
'--up-calendar-month-mark-color': 'rgba(231, 232, 234, 0.83)',
|
||
|
|
'--up-disabled-color': 'var(--up-light-disabled-color, #c8c9cc)',
|
||
|
|
'--up-primary': 'var(--up-light-primary, #3c9cff)',
|
||
|
|
'--up-primary-dark': 'var(--up-light-primary-dark, #398ade)',
|
||
|
|
'--up-primary-disabled': 'var(--up-light-primary-disabled, #9acafc)',
|
||
|
|
'--up-primary-light': 'var(--up-light-primary-light, #ecf5ff)',
|
||
|
|
'--up-warning': 'var(--up-light-warning, #f9ae3d)',
|
||
|
|
'--up-warning-dark': 'var(--up-light-warning-dark, #f1a532)',
|
||
|
|
'--up-warning-disabled': 'var(--up-light-warning-disabled, #f9d39b)',
|
||
|
|
'--up-warning-light': 'var(--up-light-warning-light, #fdf6ec)',
|
||
|
|
'--up-success': 'var(--up-light-success, #5ac725)',
|
||
|
|
'--up-success-dark': 'var(--up-light-success-dark, #53c21d)',
|
||
|
|
'--up-success-disabled': 'var(--up-light-success-disabled, #a9e08f)',
|
||
|
|
'--up-success-light': 'var(--up-light-success-light, #f5fff0)',
|
||
|
|
'--up-error': 'var(--up-light-error, #f56c6c)',
|
||
|
|
'--up-error-dark': 'var(--up-light-error-dark, #e45656)',
|
||
|
|
'--up-error-disabled': 'var(--up-light-error-disabled, #f7b2b2)',
|
||
|
|
'--up-error-light': 'var(--up-light-error-light, #fef0f0)',
|
||
|
|
'--up-info': 'var(--up-light-info, #909399)',
|
||
|
|
'--up-info-dark': 'var(--up-light-info-dark, #767a82)',
|
||
|
|
'--up-info-disabled': 'var(--up-light-info-disabled, #c4c6c9)',
|
||
|
|
'--up-info-light': 'var(--up-light-info-light, #f4f4f5)'
|
||
|
|
},
|
||
|
|
dark: {
|
||
|
|
'--up-main-color': '#f5f5f5',
|
||
|
|
'--up-content-color': '#d1d5db',
|
||
|
|
'--up-tips-color': '#9ca3af',
|
||
|
|
'--up-light-color': '#6b7280',
|
||
|
|
'--up-border-color': '#3a3a3c',
|
||
|
|
'--up-bg-color': '#1f1f1f',
|
||
|
|
'--up-hover-bg-color': '#343741',
|
||
|
|
'--up-page-bg-color': '#1f1f1f',
|
||
|
|
'--up-card-bg-color': '#1c1c1e',
|
||
|
|
'--up-navbar-bg-color': '#1c1c1e',
|
||
|
|
'--up-table2-header-bg-color': '#2a2d33',
|
||
|
|
'--up-table2-zebra-bg-color': '#23262b',
|
||
|
|
'--up-table2-highlight-bg-color': '#2f3440',
|
||
|
|
'--up-gap-bg-color': '#111111',
|
||
|
|
'--up-skeleton-bg-color': '#2f3135',
|
||
|
|
'--up-skeleton-shimmer-color': 'rgba(255, 255, 255, 0.12)',
|
||
|
|
'--up-swipe-action-button-bg-color': '#4b5563',
|
||
|
|
'--up-index-list-indicator-bg-color': '#4b5563',
|
||
|
|
'--up-calendar-month-mark-color': 'rgba(255, 255, 255, 0.04)',
|
||
|
|
'--up-disabled-color': '#4b5563',
|
||
|
|
'--up-primary': '#3c9cff',
|
||
|
|
'--up-primary-dark': '#5aa8ff',
|
||
|
|
'--up-primary-disabled': '#4c6f92',
|
||
|
|
'--up-primary-light': '#10243a',
|
||
|
|
'--up-warning': '#f9ae3d',
|
||
|
|
'--up-warning-dark': '#ffbf66',
|
||
|
|
'--up-warning-disabled': '#8a6a3a',
|
||
|
|
'--up-warning-light': '#3d2f1b',
|
||
|
|
'--up-success': '#5ac725',
|
||
|
|
'--up-success-dark': '#7ad94b',
|
||
|
|
'--up-success-disabled': '#5f7f4f',
|
||
|
|
'--up-success-light': '#1f3316',
|
||
|
|
'--up-error': '#f56c6c',
|
||
|
|
'--up-error-dark': '#ff8a8a',
|
||
|
|
'--up-error-disabled': '#8d5858',
|
||
|
|
'--up-error-light': '#3a2222',
|
||
|
|
'--up-info': '#909399',
|
||
|
|
'--up-info-dark': '#b0b3b8',
|
||
|
|
'--up-info-disabled': '#5f6368',
|
||
|
|
'--up-info-light': '#2f3238'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
const THEME_COLOR_SYNC_MAP = {
|
||
|
|
'--up-main-color': 'mainColor',
|
||
|
|
'--up-content-color': 'contentColor',
|
||
|
|
'--up-tips-color': 'tipsColor',
|
||
|
|
'--up-light-color': 'lightColor',
|
||
|
|
'--up-border-color': 'borderColor',
|
||
|
|
'--up-bg-color': 'bgColor',
|
||
|
|
'--up-disabled-color': 'disabledColor',
|
||
|
|
'--up-primary': 'primary',
|
||
|
|
'--up-primary-dark': 'primaryDark',
|
||
|
|
'--up-primary-disabled': 'primaryDisabled',
|
||
|
|
'--up-primary-light': 'primaryLight',
|
||
|
|
'--up-warning': 'warning',
|
||
|
|
'--up-warning-dark': 'warningDark',
|
||
|
|
'--up-warning-disabled': 'warningDisabled',
|
||
|
|
'--up-warning-light': 'warningLight',
|
||
|
|
'--up-success': 'success',
|
||
|
|
'--up-success-dark': 'successDark',
|
||
|
|
'--up-success-disabled': 'successDisabled',
|
||
|
|
'--up-success-light': 'successLight',
|
||
|
|
'--up-error': 'error',
|
||
|
|
'--up-error-dark': 'errorDark',
|
||
|
|
'--up-error-disabled': 'errorDisabled',
|
||
|
|
'--up-error-light': 'errorLight',
|
||
|
|
'--up-info': 'info',
|
||
|
|
'--up-info-dark': 'infoDark',
|
||
|
|
'--up-info-disabled': 'infoDisabled',
|
||
|
|
'--up-info-light': 'infoLight'
|
||
|
|
}
|
||
|
|
|
||
|
|
function buildFallbackAliasVars(vars) {
|
||
|
|
const aliasVars = {}
|
||
|
|
Object.keys(vars).forEach((key) => {
|
||
|
|
if (typeof key === 'string' && key.indexOf('--up-') === 0) {
|
||
|
|
aliasVars[key.replace('--up-', '--u-')] = vars[key]
|
||
|
|
}
|
||
|
|
})
|
||
|
|
return aliasVars
|
||
|
|
}
|
||
|
|
|
||
|
|
function getRuntimeU(upU) {
|
||
|
|
if (upU) return upU
|
||
|
|
if (typeof uni !== 'undefined') return uni.$u
|
||
|
|
return null
|
||
|
|
}
|
||
|
|
|
||
|
|
function normalizeRuntimeRoute(route) {
|
||
|
|
if (typeof route !== 'string') return ''
|
||
|
|
return route.replace(/^\//, '').split('?')[0]
|
||
|
|
}
|
||
|
|
|
||
|
|
function getCurrentRuntimeRoute() {
|
||
|
|
try {
|
||
|
|
if (typeof getCurrentPages !== 'function') return ''
|
||
|
|
const pages = getCurrentPages()
|
||
|
|
if (!Array.isArray(pages) || pages.length === 0) return ''
|
||
|
|
const page = pages[pages.length - 1] || {}
|
||
|
|
return normalizeRuntimeRoute(page.route || page.path || '')
|
||
|
|
} catch (e) {}
|
||
|
|
return ''
|
||
|
|
}
|
||
|
|
|
||
|
|
function getRuntimeTabBarRoutes() {
|
||
|
|
const routes = []
|
||
|
|
try {
|
||
|
|
const runtimeConfig = typeof __uniConfig !== 'undefined' ? __uniConfig : null
|
||
|
|
const tabBarList = runtimeConfig?.tabBar?.list
|
||
|
|
if (Array.isArray(tabBarList)) {
|
||
|
|
tabBarList.forEach((item) => {
|
||
|
|
const route = normalizeRuntimeRoute(item?.pagePath || '')
|
||
|
|
if (route) routes.push(route)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
} catch (e) {}
|
||
|
|
return routes
|
||
|
|
}
|
||
|
|
|
||
|
|
function hasActiveRuntimePage() {
|
||
|
|
try {
|
||
|
|
if (typeof getCurrentPages === 'function') {
|
||
|
|
const pages = getCurrentPages()
|
||
|
|
return Array.isArray(pages) && pages.length > 0
|
||
|
|
}
|
||
|
|
} catch (e) {}
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
|
||
|
|
function trySetNavigationBarColor(options) {
|
||
|
|
if (typeof uni === 'undefined' || typeof uni.setNavigationBarColor !== 'function') return
|
||
|
|
if (!hasActiveRuntimePage()) return
|
||
|
|
try {
|
||
|
|
const result = uni.setNavigationBarColor(options)
|
||
|
|
if (result && typeof result.catch === 'function') {
|
||
|
|
result.catch(() => {})
|
||
|
|
}
|
||
|
|
} catch (e) {}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function isTabBarPage() {
|
||
|
|
const route = getCurrentRuntimeRoute()
|
||
|
|
if (!route) return false
|
||
|
|
const tabBarRoutes = getRuntimeTabBarRoutes()
|
||
|
|
if (!tabBarRoutes.length) return false
|
||
|
|
return tabBarRoutes.includes(route)
|
||
|
|
}
|
||
|
|
|
||
|
|
export function trySetTabBarStyle(options) {
|
||
|
|
if (typeof uni === 'undefined' || typeof uni.setTabBarStyle !== 'function') return
|
||
|
|
if (!isTabBarPage()) return
|
||
|
|
try {
|
||
|
|
const result = uni.setTabBarStyle(options)
|
||
|
|
if (result && typeof result.catch === 'function') {
|
||
|
|
result.catch(() => {})
|
||
|
|
}
|
||
|
|
} catch (e) {}
|
||
|
|
}
|
||
|
|
|
||
|
|
function normalizeThemeMode(theme = 'light') {
|
||
|
|
return theme === 'dark' ? 'dark' : 'light'
|
||
|
|
}
|
||
|
|
|
||
|
|
function normalizeThemePreference(mode = 'system') {
|
||
|
|
return mode === 'dark' || mode === 'light' ? mode : 'system'
|
||
|
|
}
|
||
|
|
|
||
|
|
function getFallbackSystemTheme() {
|
||
|
|
let theme = 'light'
|
||
|
|
try {
|
||
|
|
if (typeof uni !== 'undefined' && typeof uni.getAppBaseInfo === 'function') {
|
||
|
|
const appBaseInfo = uni.getAppBaseInfo() || {}
|
||
|
|
if (appBaseInfo.theme) theme = appBaseInfo.theme
|
||
|
|
}
|
||
|
|
if (typeof uni !== 'undefined' && typeof uni.getSystemInfoSync === 'function') {
|
||
|
|
const systemInfo = uni.getSystemInfoSync() || {}
|
||
|
|
if (systemInfo.theme) theme = systemInfo.theme
|
||
|
|
}
|
||
|
|
} catch (e) {
|
||
|
|
theme = 'light'
|
||
|
|
}
|
||
|
|
return normalizeThemeMode(theme)
|
||
|
|
}
|
||
|
|
|
||
|
|
function getFallbackThemePreference() {
|
||
|
|
try {
|
||
|
|
if (typeof uni !== 'undefined' && typeof uni.getStorageSync === 'function') {
|
||
|
|
const preference = uni.getStorageSync(THEME_MODE_STORAGE_KEY)
|
||
|
|
return normalizeThemePreference(preference)
|
||
|
|
}
|
||
|
|
} catch (e) {}
|
||
|
|
return 'system'
|
||
|
|
}
|
||
|
|
|
||
|
|
function getFallbackThemeMode() {
|
||
|
|
const preference = getFallbackThemePreference()
|
||
|
|
if (preference === 'dark' || preference === 'light') return preference
|
||
|
|
return getFallbackSystemTheme()
|
||
|
|
}
|
||
|
|
|
||
|
|
function getFallbackThemeVarsByMode(mode) {
|
||
|
|
const vars = FALLBACK_THEME_VARS[normalizeThemeMode(mode)] || FALLBACK_THEME_VARS.light
|
||
|
|
return {
|
||
|
|
...vars,
|
||
|
|
...buildFallbackAliasVars(vars)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function getFallbackThemeVars(upU) {
|
||
|
|
const mode = getThemeIsDark(upU) ? 'dark' : 'light'
|
||
|
|
return getFallbackThemeVarsByMode(mode)
|
||
|
|
}
|
||
|
|
|
||
|
|
function syncRuntimeColor(runtimeU, vars) {
|
||
|
|
if (!runtimeU || !runtimeU.color) return
|
||
|
|
Object.keys(THEME_COLOR_SYNC_MAP).forEach((token) => {
|
||
|
|
const field = THEME_COLOR_SYNC_MAP[token]
|
||
|
|
runtimeU.color[field] = vars[token]
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
export function syncThemeRuntimeFromStorage(upU) {
|
||
|
|
const runtimeU = getRuntimeU(upU)
|
||
|
|
if (!runtimeU || !runtimeU.theme) return runtimeU?.theme
|
||
|
|
const preference = getFallbackThemePreference()
|
||
|
|
const mode = preference === 'system' ? getFallbackSystemTheme() : preference
|
||
|
|
const vars = getFallbackThemeVarsByMode(mode)
|
||
|
|
const shouldUpdate = runtimeU.theme.preference !== preference || runtimeU.theme.mode !== mode
|
||
|
|
if (shouldUpdate && typeof runtimeU.setThemePreference === 'function') {
|
||
|
|
return runtimeU.setThemePreference(preference) || runtimeU.theme
|
||
|
|
}
|
||
|
|
runtimeU.theme.preference = preference
|
||
|
|
runtimeU.theme.mode = mode
|
||
|
|
runtimeU.theme.vars = {
|
||
|
|
...vars,
|
||
|
|
...(runtimeU.theme.vars && !shouldUpdate ? runtimeU.theme.vars : {})
|
||
|
|
}
|
||
|
|
if (shouldUpdate) {
|
||
|
|
runtimeU.theme.version = Number(runtimeU.theme.version || 0) + 1
|
||
|
|
}
|
||
|
|
syncRuntimeColor(runtimeU, runtimeU.theme.vars)
|
||
|
|
return runtimeU.theme
|
||
|
|
}
|
||
|
|
|
||
|
|
export function getThemeIsDark(upU) {
|
||
|
|
const runtimeMode = getRuntimeU(upU)?.theme?.mode
|
||
|
|
if (runtimeMode) return runtimeMode === 'dark'
|
||
|
|
return getFallbackThemeMode() === 'dark'
|
||
|
|
}
|
||
|
|
|
||
|
|
export function getThemeVarsForStyle(upU) {
|
||
|
|
const runtimeU = getRuntimeU(upU)
|
||
|
|
if (runtimeU && typeof runtimeU.getThemeVars === 'function') {
|
||
|
|
return runtimeU.getThemeVars()
|
||
|
|
}
|
||
|
|
return getFallbackThemeVars(runtimeU)
|
||
|
|
}
|
||
|
|
|
||
|
|
export function getThemeVar(varName, fallbackColor, upU) {
|
||
|
|
const runtimeU = getRuntimeU(upU)
|
||
|
|
const themeVars = runtimeU?.theme?.vars
|
||
|
|
if (themeVars && Object.prototype.hasOwnProperty.call(themeVars, varName)) {
|
||
|
|
return themeVars[varName]
|
||
|
|
}
|
||
|
|
if (typeof varName === 'string') {
|
||
|
|
const aliasVarName = varName.indexOf('--up-') === 0
|
||
|
|
? varName.replace('--up-', '--u-')
|
||
|
|
: (varName.indexOf('--u-') === 0 ? varName.replace('--u-', '--up-') : '')
|
||
|
|
if (aliasVarName && themeVars && Object.prototype.hasOwnProperty.call(themeVars, aliasVarName)) {
|
||
|
|
return themeVars[aliasVarName]
|
||
|
|
}
|
||
|
|
const runtimeColorMap = runtimeU?.config?.color || {}
|
||
|
|
const colorTokenKey = varName.indexOf('--') === 0 ? varName.slice(2) : varName
|
||
|
|
if (Object.prototype.hasOwnProperty.call(runtimeColorMap, colorTokenKey)) {
|
||
|
|
return runtimeColorMap[colorTokenKey]
|
||
|
|
}
|
||
|
|
const aliasColorTokenKey = colorTokenKey.indexOf('up-') === 0
|
||
|
|
? colorTokenKey.replace('up-', 'u-')
|
||
|
|
: (colorTokenKey.indexOf('u-') === 0 ? colorTokenKey.replace('u-', 'up-') : '')
|
||
|
|
if (aliasColorTokenKey && Object.prototype.hasOwnProperty.call(runtimeColorMap, aliasColorTokenKey)) {
|
||
|
|
return runtimeColorMap[aliasColorTokenKey]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (runtimeU && typeof runtimeU.getThemeVars === 'function') {
|
||
|
|
const vars = runtimeU.getThemeVars()
|
||
|
|
if (vars && Object.prototype.hasOwnProperty.call(vars, varName)) {
|
||
|
|
return vars[varName]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
const fallbackVars = getFallbackThemeVars(runtimeU)
|
||
|
|
if (fallbackVars && Object.prototype.hasOwnProperty.call(fallbackVars, varName)) {
|
||
|
|
return fallbackVars[varName]
|
||
|
|
}
|
||
|
|
return typeof fallbackColor !== 'undefined' ? fallbackColor : ''
|
||
|
|
}
|
||
|
|
|
||
|
|
export function getThemeCssVar(varName, fallbackColor) {
|
||
|
|
if (typeof fallbackColor === 'undefined') {
|
||
|
|
return `var(${varName})`
|
||
|
|
}
|
||
|
|
return `var(${varName}, ${fallbackColor})`
|
||
|
|
}
|
||
|
|
|
||
|
|
export function getThemePageStyle(upU, preferCssVars = false) {
|
||
|
|
const runtimeU = getRuntimeU(upU)
|
||
|
|
const isDark = getThemeIsDark(runtimeU)
|
||
|
|
const fallbackBg = isDark ? '#1f1f1f' : (runtimeU?.color?.bgColor || '#f3f4f6')
|
||
|
|
if (preferCssVars) {
|
||
|
|
return {
|
||
|
|
...getThemeVarsForStyle(runtimeU),
|
||
|
|
minHeight: '100vh',
|
||
|
|
backgroundColor: `var(--up-page-bg-color, var(--up-bg-color, ${fallbackBg}))`
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return {
|
||
|
|
backgroundColor: getThemeVar(
|
||
|
|
'--up-page-bg-color',
|
||
|
|
getThemeVar('--up-bg-color', fallbackBg, runtimeU),
|
||
|
|
runtimeU
|
||
|
|
)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function getThemeCardStyle(upU, preferCssVars = false) {
|
||
|
|
const runtimeU = getRuntimeU(upU)
|
||
|
|
const isDark = getThemeIsDark(runtimeU)
|
||
|
|
const fallbackCard = isDark ? '#1c1c1e' : '#ffffff'
|
||
|
|
const fallbackBorder = runtimeU?.color?.borderColor || '#dadbde'
|
||
|
|
if (preferCssVars) {
|
||
|
|
return {
|
||
|
|
backgroundColor: `var(--up-card-bg-color, ${fallbackCard})`,
|
||
|
|
borderColor: `var(--up-border-color, ${fallbackBorder})`
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return {
|
||
|
|
backgroundColor: getThemeVar('--up-card-bg-color', fallbackCard, runtimeU),
|
||
|
|
borderColor: getThemeVar('--up-border-color', fallbackBorder, runtimeU)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function getThemeTabBarStyle(upU) {
|
||
|
|
const runtimeU = getRuntimeU(upU)
|
||
|
|
const isDark = getThemeIsDark(runtimeU)
|
||
|
|
return {
|
||
|
|
color: isDark ? '#8e8e93' : '#909399',
|
||
|
|
selectedColor: isDark ? '#f2f2f7' : '#303133',
|
||
|
|
backgroundColor: isDark ? '#111111' : '#ffffff',
|
||
|
|
borderStyle: isDark ? 'white' : 'black'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function applyNativeThemeUI(upU) {
|
||
|
|
if (typeof uni === 'undefined') return
|
||
|
|
const runtimeU = getRuntimeU(upU)
|
||
|
|
if (runtimeU?.config?.nativeThemeSync !== true) return
|
||
|
|
const isDark = getThemeIsDark(runtimeU)
|
||
|
|
const fallbackBg = isDark ? '#1f1f1f' : (runtimeU?.color?.bgColor || '#f3f4f6')
|
||
|
|
const pageBg = getThemeVar(
|
||
|
|
'--up-page-bg-color',
|
||
|
|
getThemeVar('--up-bg-color', fallbackBg, runtimeU),
|
||
|
|
runtimeU
|
||
|
|
)
|
||
|
|
const navBg = getThemeVar(
|
||
|
|
'--up-navbar-bg-color',
|
||
|
|
isDark ? '#1c1c1e' : '#ffffff',
|
||
|
|
runtimeU
|
||
|
|
)
|
||
|
|
trySetNavigationBarColor({
|
||
|
|
frontColor: isDark ? '#ffffff' : '#000000',
|
||
|
|
backgroundColor: navBg,
|
||
|
|
animation: {
|
||
|
|
duration: 0,
|
||
|
|
timingFunc: 'linear'
|
||
|
|
}
|
||
|
|
})
|
||
|
|
if (typeof uni.setBackgroundColor === 'function') {
|
||
|
|
uni.setBackgroundColor({
|
||
|
|
backgroundColor: pageBg,
|
||
|
|
backgroundColorTop: pageBg,
|
||
|
|
backgroundColorBottom: pageBg
|
||
|
|
})
|
||
|
|
}
|
||
|
|
trySetTabBarStyle(getThemeTabBarStyle(runtimeU))
|
||
|
|
}
|
||
|
|
|
||
|
|
export function applyNativeThemeUIDeferred(upU, delay = 30) {
|
||
|
|
applyNativeThemeUI(upU)
|
||
|
|
if (typeof setTimeout === 'function') {
|
||
|
|
setTimeout(() => {
|
||
|
|
applyNativeThemeUI(upU)
|
||
|
|
}, delay)
|
||
|
|
}
|
||
|
|
}
|