index.uts 2.1 KB
Newer Older
DCloud-yyl's avatar
DCloud-yyl 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
import { getCurrentPage } from '@dcloudio/uni-runtime'
import {
    SetNavigationBarColorOptions,
    SetNavigationBarColorSuccess,
    SetNavigationBarTitleOptions,
    SetNavigationBarTitleSuccess,
} from '../interface.uts'
import {
    SetNavigationBarColorFailImpl,
    SetNavigationBarTitleFailImpl,
} from '../unierror.uts'

export const setNavigationBarColor = defineAsyncApi<
    SetNavigationBarColorOptions,
    SetNavigationBarColorSuccess
>(
    'setNavigationBarColor',
    (options: SetNavigationBarColorOptions, res: ApiExecutor) => {
        const page = getCurrentPage()
        if (page == null) {
            res.reject(new SetNavigationBarColorFailImpl('page is not ready'))
            return
        }
        const appPage = page.$nativePage
        appPage!.updateStyle(
            new Map<string, any | null>([
                [
                    'navigationBar',
                    new Map<string, any | null>([
                        [
                            'navigationBarTextStyle',
                            options.frontColor == '#000000' ? 'black' : 'white',
                        ],
                        [
                            'navigationBarBackgroundColor',
                            options.backgroundColor,
                        ],
                    ]),
                ],
            ]),
        )
        res.resolve(null)
    },
)

export const setNavigationBarTitle = defineAsyncApi<
    SetNavigationBarTitleOptions,
    SetNavigationBarTitleSuccess
>(
    'setNavigationBarTitle',
    (options: SetNavigationBarTitleOptions, res: ApiExecutor) => {
        const page = getCurrentPage()
        if (page == null) {
            res.reject(new SetNavigationBarTitleFailImpl('page is not ready'))
            return
        }
        const appPage = page.$nativePage
        appPage!.updateStyle(
            new Map<string, any | null>([
                [
                    'navigationBar',
                    new Map<string, any | null>([
                        ['navigationBarTitleText', options.title],
                    ]),
                ],
            ]),
        )
        res.resolve(null)
    },
)