@tma.js/sdk 1.4.3 → 1.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/dts/bridge/events/events.d.ts +16 -16
- package/dist/dts/bridge/methods/methods.d.ts +27 -27
- package/dist/dts/bridge/methods/popup.d.ts +1 -1
- package/dist/dts/{init/css → css}/bindMiniAppCSSVars.d.ts +2 -2
- package/dist/dts/{init/css → css}/bindThemeCSSVars.d.ts +1 -1
- package/dist/dts/{init/css → css}/bindViewportCSSVars.d.ts +1 -1
- package/dist/dts/css/index.d.ts +4 -0
- package/dist/dts/index.d.ts +1 -0
- package/dist/dts/init-data/types.d.ts +3 -3
- package/dist/dts/launch-params/types.d.ts +1 -1
- package/dist/dts/theme-params/types.d.ts +1 -1
- package/dist/index.cjs +1 -2
- package/dist/index.iife.js +1 -2
- package/dist/index.mjs +126 -115
- package/package.json +2 -3
- package/dist/index.cjs.map +0 -1
- package/dist/index.iife.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/src/__tests__/globals.ts +0 -39
- package/src/back-button/BackButton.ts +0 -90
- package/src/back-button/__tests__/BackButton.ts +0 -129
- package/src/back-button/index.ts +0 -2
- package/src/back-button/types.ts +0 -14
- package/src/bridge/__tests__/parseMessage.ts +0 -23
- package/src/bridge/__tests__/request.ts +0 -236
- package/src/bridge/env/__tests__/hasExternalNotify.ts +0 -15
- package/src/bridge/env/__tests__/hasWebviewProxy.ts +0 -15
- package/src/bridge/env/__tests__/isIframe.ts +0 -30
- package/src/bridge/env/hasExternalNotify.ts +0 -19
- package/src/bridge/env/hasWebviewProxy.ts +0 -19
- package/src/bridge/env/index.ts +0 -3
- package/src/bridge/env/isIframe.ts +0 -11
- package/src/bridge/errors/MethodUnsupportedError.ts +0 -13
- package/src/bridge/errors/ParameterUnsupportedError.ts +0 -13
- package/src/bridge/errors/index.ts +0 -2
- package/src/bridge/events/__tests__/createEmitter.ts +0 -143
- package/src/bridge/events/__tests__/off.ts +0 -34
- package/src/bridge/events/__tests__/on.ts +0 -49
- package/src/bridge/events/__tests__/onTelegramEvent.ts +0 -49
- package/src/bridge/events/__tests__/once.ts +0 -64
- package/src/bridge/events/__tests__/singletonEmitter.ts +0 -22
- package/src/bridge/events/__tests__/subscribe.ts +0 -49
- package/src/bridge/events/__tests__/unsubscribe.ts +0 -34
- package/src/bridge/events/createEmitter.ts +0 -108
- package/src/bridge/events/events.ts +0 -170
- package/src/bridge/events/index.ts +0 -9
- package/src/bridge/events/off.ts +0 -14
- package/src/bridge/events/on.ts +0 -19
- package/src/bridge/events/onTelegramEvent.ts +0 -81
- package/src/bridge/events/once.ts +0 -18
- package/src/bridge/events/parsers/__tests__/clipboardTextReceived.ts +0 -21
- package/src/bridge/events/parsers/__tests__/invoiceClosed.ts +0 -12
- package/src/bridge/events/parsers/__tests__/popupClosed.ts +0 -10
- package/src/bridge/events/parsers/__tests__/qrTextReceived.ts +0 -9
- package/src/bridge/events/parsers/__tests__/theme-changed.ts +0 -42
- package/src/bridge/events/parsers/__tests__/viewportChanged.ts +0 -49
- package/src/bridge/events/parsers/clipboardTextReceived.ts +0 -26
- package/src/bridge/events/parsers/customMethodInvoked.ts +0 -25
- package/src/bridge/events/parsers/index.ts +0 -9
- package/src/bridge/events/parsers/invoiceClosed.ts +0 -26
- package/src/bridge/events/parsers/phoneRequested.ts +0 -14
- package/src/bridge/events/parsers/popupClosed.ts +0 -19
- package/src/bridge/events/parsers/qrTextReceived.ts +0 -14
- package/src/bridge/events/parsers/theme-changed.ts +0 -58
- package/src/bridge/events/parsers/viewportChanged.ts +0 -33
- package/src/bridge/events/parsers/writeAccessRequested.ts +0 -14
- package/src/bridge/events/singletonEmitter.ts +0 -19
- package/src/bridge/events/subscribe.ts +0 -15
- package/src/bridge/events/unsubscribe.ts +0 -10
- package/src/bridge/index.ts +0 -7
- package/src/bridge/invokeCustomMethod.ts +0 -56
- package/src/bridge/methods/__tests__/createPostEvent.ts +0 -37
- package/src/bridge/methods/__tests__/postEvent.ts +0 -137
- package/src/bridge/methods/createPostEvent.ts +0 -40
- package/src/bridge/methods/custom-methods.ts +0 -68
- package/src/bridge/methods/haptic.ts +0 -52
- package/src/bridge/methods/index.ts +0 -6
- package/src/bridge/methods/methods.ts +0 -370
- package/src/bridge/methods/popup.ts +0 -53
- package/src/bridge/methods/postEvent.ts +0 -101
- package/src/bridge/parseMessage.ts +0 -28
- package/src/bridge/request.ts +0 -176
- package/src/classnames/__tests__/classNames.ts +0 -20
- package/src/classnames/__tests__/mergeClassNames.ts +0 -21
- package/src/classnames/classNames.ts +0 -34
- package/src/classnames/index.ts +0 -2
- package/src/classnames/mergeClassNames.ts +0 -60
- package/src/closing-behavior/ClosingBehavior.ts +0 -64
- package/src/closing-behavior/__tests__/ClosingBehavior.ts +0 -86
- package/src/closing-behavior/index.ts +0 -2
- package/src/closing-behavior/types.ts +0 -12
- package/src/cloud-storage/CloudStorage.ts +0 -138
- package/src/cloud-storage/index.ts +0 -1
- package/src/colors/__tests__/isColorDark.ts +0 -12
- package/src/colors/__tests__/isRGB.ts +0 -13
- package/src/colors/__tests__/isRGBShort.ts +0 -13
- package/src/colors/__tests__/toRGB.ts +0 -23
- package/src/colors/index.ts +0 -5
- package/src/colors/isColorDark.ts +0 -22
- package/src/colors/isRGB.ts +0 -9
- package/src/colors/isRGBShort.ts +0 -9
- package/src/colors/toRGB.ts +0 -49
- package/src/colors/types.ts +0 -9
- package/src/event-emitter/EventEmitter.ts +0 -146
- package/src/event-emitter/__tests__/EventEmitter.ts +0 -145
- package/src/event-emitter/index.ts +0 -2
- package/src/event-emitter/types.ts +0 -60
- package/src/globals.ts +0 -38
- package/src/haptic-feedback/HapticFeedback.ts +0 -70
- package/src/haptic-feedback/__tests__/HapticFeedback.ts +0 -68
- package/src/haptic-feedback/index.ts +0 -1
- package/src/index.ts +0 -179
- package/src/init/catchCustomStyles.ts +0 -17
- package/src/init/creators/__tests__/createViewport.ts +0 -96
- package/src/init/creators/createBackButton.ts +0 -25
- package/src/init/creators/createClosingBehavior.ts +0 -24
- package/src/init/creators/createMainButton.ts +0 -51
- package/src/init/creators/createMiniApp.ts +0 -48
- package/src/init/creators/createRequestIdGenerator.ts +0 -13
- package/src/init/creators/createSettingsButton.ts +0 -25
- package/src/init/creators/createThemeParams.ts +0 -11
- package/src/init/creators/createViewport.ts +0 -94
- package/src/init/creators/index.ts +0 -8
- package/src/init/css/bindMiniAppCSSVars.ts +0 -48
- package/src/init/css/bindThemeCSSVars.ts +0 -31
- package/src/init/css/bindViewportCSSVars.ts +0 -36
- package/src/init/css/index.ts +0 -1
- package/src/init/css/processCSSVarsOption.ts +0 -57
- package/src/init/css/setCSSVar.ts +0 -8
- package/src/init/index.ts +0 -2
- package/src/init/init.ts +0 -134
- package/src/init/types.ts +0 -94
- package/src/init-data/InitData.ts +0 -96
- package/src/init-data/__tests__/InitData.ts +0 -98
- package/src/init-data/__tests__/chatParser.ts +0 -102
- package/src/init-data/__tests__/initDataParser.ts +0 -136
- package/src/init-data/__tests__/parseInitData.ts +0 -136
- package/src/init-data/__tests__/userParser.ts +0 -96
- package/src/init-data/chatParser.ts +0 -19
- package/src/init-data/index.ts +0 -6
- package/src/init-data/initDataParser.ts +0 -41
- package/src/init-data/parseInitData.ts +0 -10
- package/src/init-data/types.ts +0 -164
- package/src/init-data/userParser.ts +0 -45
- package/src/invoice/Invoice.ts +0 -123
- package/src/invoice/index.ts +0 -2
- package/src/invoice/types.ts +0 -11
- package/src/launch-params/__tests__/retrieveFromUrl.ts +0 -19
- package/src/launch-params/computeLaunchData.ts +0 -81
- package/src/launch-params/computePageReload.ts +0 -13
- package/src/launch-params/getFirstNavigationEntry.ts +0 -10
- package/src/launch-params/index.ts +0 -13
- package/src/launch-params/launchParamsParser.ts +0 -45
- package/src/launch-params/parseLaunchParams.ts +0 -10
- package/src/launch-params/retrieveCurrent.ts +0 -27
- package/src/launch-params/retrieveFromLocation.ts +0 -10
- package/src/launch-params/retrieveFromPerformance.ts +0 -18
- package/src/launch-params/retrieveFromUrl.ts +0 -19
- package/src/launch-params/retrieveLaunchData.ts +0 -30
- package/src/launch-params/serializeLaunchParams.ts +0 -37
- package/src/launch-params/storage.ts +0 -33
- package/src/launch-params/types.ts +0 -62
- package/src/logger/Logger.ts +0 -72
- package/src/logger/__tests__/Logger.ts +0 -107
- package/src/logger/index.ts +0 -1
- package/src/main-button/MainButton.ts +0 -239
- package/src/main-button/__tests__/MainButton.ts +0 -346
- package/src/main-button/index.ts +0 -2
- package/src/main-button/types.ts +0 -26
- package/src/mini-app/MiniApp.ts +0 -348
- package/src/mini-app/__tests__/MiniApp.ts +0 -140
- package/src/mini-app/contactParser.ts +0 -29
- package/src/mini-app/index.ts +0 -2
- package/src/mini-app/types.ts +0 -38
- package/src/misc/__tests__/isRecord.ts +0 -21
- package/src/misc/index.ts +0 -2
- package/src/misc/isRecord.ts +0 -7
- package/src/misc/isTMA.ts +0 -13
- package/src/navigation/HashNavigator/HashNavigator.ts +0 -220
- package/src/navigation/HashNavigator/__tests__/HashNavigator.ts +0 -144
- package/src/navigation/HashNavigator/__tests__/drop.ts +0 -42
- package/src/navigation/HashNavigator/__tests__/go.ts +0 -9
- package/src/navigation/HashNavigator/drop.ts +0 -36
- package/src/navigation/HashNavigator/go.ts +0 -28
- package/src/navigation/HashNavigator/index.ts +0 -2
- package/src/navigation/HashNavigator/types.ts +0 -41
- package/src/navigation/Navigator/Navigator.ts +0 -282
- package/src/navigation/Navigator/index.ts +0 -2
- package/src/navigation/Navigator/types.ts +0 -55
- package/src/navigation/ensurePrefix.ts +0 -9
- package/src/navigation/getHash.ts +0 -17
- package/src/navigation/index.ts +0 -4
- package/src/parsing/ArrayValueParser.ts +0 -79
- package/src/parsing/ParseError.ts +0 -27
- package/src/parsing/ParseSchemaFieldError.ts +0 -21
- package/src/parsing/ValueParser.ts +0 -71
- package/src/parsing/__tests__/ArrayValueParser.ts +0 -18
- package/src/parsing/__tests__/toRecord.ts +0 -10
- package/src/parsing/createValueParserGenerator.ts +0 -16
- package/src/parsing/index.ts +0 -10
- package/src/parsing/parseBySchema.ts +0 -65
- package/src/parsing/parsers/__tests__/array.ts +0 -39
- package/src/parsing/parsers/__tests__/boolean.ts +0 -31
- package/src/parsing/parsers/__tests__/date.ts +0 -25
- package/src/parsing/parsers/__tests__/json.ts +0 -80
- package/src/parsing/parsers/__tests__/number.ts +0 -23
- package/src/parsing/parsers/__tests__/rgb.ts +0 -22
- package/src/parsing/parsers/__tests__/searchParams.ts +0 -105
- package/src/parsing/parsers/__tests__/string.ts +0 -25
- package/src/parsing/parsers/array.ts +0 -9
- package/src/parsing/parsers/boolean.ts +0 -22
- package/src/parsing/parsers/date.ts +0 -11
- package/src/parsing/parsers/index.ts +0 -8
- package/src/parsing/parsers/json.ts +0 -17
- package/src/parsing/parsers/number.ts +0 -21
- package/src/parsing/parsers/rgb.ts +0 -10
- package/src/parsing/parsers/searchParams.ts +0 -24
- package/src/parsing/parsers/string.ts +0 -12
- package/src/parsing/toRecord.ts +0 -27
- package/src/parsing/types.ts +0 -32
- package/src/parsing/unexpectedTypeError.ts +0 -6
- package/src/popup/Popup.ts +0 -91
- package/src/popup/__tests__/Popup.ts +0 -130
- package/src/popup/__tests__/preparePopupParams.ts +0 -85
- package/src/popup/index.ts +0 -2
- package/src/popup/preparePopupParams.ts +0 -59
- package/src/popup/types.ts +0 -69
- package/src/qr-scanner/QRScanner.ts +0 -95
- package/src/qr-scanner/index.ts +0 -2
- package/src/qr-scanner/types.ts +0 -11
- package/src/settings-button/SettingsButton.ts +0 -85
- package/src/settings-button/index.ts +0 -2
- package/src/settings-button/types.ts +0 -15
- package/src/state/State.ts +0 -67
- package/src/state/index.ts +0 -2
- package/src/state/types.ts +0 -31
- package/src/storage.ts +0 -69
- package/src/supports/__tests__/supports.ts +0 -123
- package/src/supports/createSupportsFunc.ts +0 -18
- package/src/supports/createSupportsParamFunc.ts +0 -27
- package/src/supports/index.ts +0 -4
- package/src/supports/supports.ts +0 -84
- package/src/supports/types.ts +0 -1
- package/src/theme-params/ThemeParams.ts +0 -131
- package/src/theme-params/__tests__/keys.ts +0 -19
- package/src/theme-params/__tests__/parseThemeParams.ts +0 -29
- package/src/theme-params/__tests__/serializeThemeParams.ts +0 -29
- package/src/theme-params/__tests__/themeParamsParser.ts +0 -29
- package/src/theme-params/index.ts +0 -6
- package/src/theme-params/keys.ts +0 -24
- package/src/theme-params/parseThemeParams.ts +0 -10
- package/src/theme-params/requestThemeParams.ts +0 -13
- package/src/theme-params/serializeThemeParams.ts +0 -20
- package/src/theme-params/themeParamsParser.ts +0 -22
- package/src/theme-params/types.ts +0 -33
- package/src/timeout/TimeoutError.ts +0 -6
- package/src/timeout/__tests__/isTimeoutError.ts +0 -9
- package/src/timeout/__tests__/withTimeout.ts +0 -28
- package/src/timeout/index.ts +0 -4
- package/src/timeout/isTimeoutError.ts +0 -9
- package/src/timeout/sleep.ts +0 -10
- package/src/timeout/withTimeout.ts +0 -24
- package/src/types/index.ts +0 -4
- package/src/types/methods.ts +0 -18
- package/src/types/platform.ts +0 -14
- package/src/types/request-id.ts +0 -10
- package/src/types/utils.ts +0 -50
- package/src/utils/Utils.ts +0 -107
- package/src/utils/index.ts +0 -1
- package/src/version/__tests__/compareVersions.ts +0 -19
- package/src/version/compareVersions.ts +0 -28
- package/src/version/index.ts +0 -2
- package/src/version/types.ts +0 -4
- package/src/viewport/Viewport.ts +0 -171
- package/src/viewport/__tests__/isStableViewportPlatform.ts +0 -15
- package/src/viewport/__tests__/utils.ts +0 -12
- package/src/viewport/index.ts +0 -4
- package/src/viewport/isStableViewportPlatform.ts +0 -10
- package/src/viewport/requestViewport.ts +0 -23
- package/src/viewport/types.ts +0 -23
- package/src/viewport/utils.ts +0 -7
- /package/dist/dts/{init/css → css}/setCSSVar.d.ts +0 -0
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
afterAll,
|
|
3
|
-
afterEach,
|
|
4
|
-
beforeAll,
|
|
5
|
-
describe,
|
|
6
|
-
expect,
|
|
7
|
-
it,
|
|
8
|
-
vi,
|
|
9
|
-
} from 'vitest';
|
|
10
|
-
|
|
11
|
-
import { Logger } from '../Logger';
|
|
12
|
-
|
|
13
|
-
const now = new Date('2022-11-04T09:09:43.007Z');
|
|
14
|
-
|
|
15
|
-
afterEach(() => {
|
|
16
|
-
vi.resetAllMocks();
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
beforeAll(() => {
|
|
20
|
-
vi.useFakeTimers().setSystemTime(now);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
afterAll(() => {
|
|
24
|
-
vi.useRealTimers();
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('should not call console methods if logger is disabled', () => {
|
|
28
|
-
const logger = new Logger('', false);
|
|
29
|
-
const spy = vi.fn();
|
|
30
|
-
|
|
31
|
-
vi.spyOn(console, 'log').mockImplementation(spy);
|
|
32
|
-
vi.spyOn(console, 'warn').mockImplementation(spy);
|
|
33
|
-
vi.spyOn(console, 'error').mockImplementation(spy);
|
|
34
|
-
|
|
35
|
-
logger.log();
|
|
36
|
-
logger.warn();
|
|
37
|
-
logger.error();
|
|
38
|
-
expect(spy).not.toHaveBeenCalled();
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
describe('enable', () => {
|
|
42
|
-
it('should start logging messages into console', () => {
|
|
43
|
-
const logger = new Logger('', false);
|
|
44
|
-
const spy = vi.fn();
|
|
45
|
-
|
|
46
|
-
vi.spyOn(console, 'log').mockImplementation(spy);
|
|
47
|
-
logger.log();
|
|
48
|
-
expect(spy).not.toHaveBeenCalled();
|
|
49
|
-
|
|
50
|
-
logger.enable();
|
|
51
|
-
logger.log();
|
|
52
|
-
expect(spy).toHaveBeenCalledOnce();
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
describe('disable', () => {
|
|
57
|
-
it('should stop logging messages into console', () => {
|
|
58
|
-
const logger = new Logger('', true);
|
|
59
|
-
const spy = vi.fn();
|
|
60
|
-
|
|
61
|
-
vi.spyOn(console, 'log').mockImplementation(spy);
|
|
62
|
-
logger.log();
|
|
63
|
-
expect(spy).toHaveBeenCalledOnce();
|
|
64
|
-
|
|
65
|
-
spy.mockReset();
|
|
66
|
-
|
|
67
|
-
logger.disable();
|
|
68
|
-
logger.log();
|
|
69
|
-
expect(spy).not.toHaveBeenCalled();
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
describe('error', () => {
|
|
74
|
-
it('should call console.error()', () => {
|
|
75
|
-
const logger = new Logger('My prefix', true);
|
|
76
|
-
const spy = vi.fn();
|
|
77
|
-
vi.spyOn(console, 'error').mockImplementation(spy);
|
|
78
|
-
|
|
79
|
-
logger.error('Test');
|
|
80
|
-
expect(spy).toHaveBeenCalledOnce();
|
|
81
|
-
expect(spy).toHaveBeenCalledWith('[09:09:43.007]', 'My prefix', 'Test');
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
describe('log', () => {
|
|
86
|
-
it('should call console.log()', () => {
|
|
87
|
-
const logger = new Logger('My prefix', true);
|
|
88
|
-
const spy = vi.fn();
|
|
89
|
-
vi.spyOn(console, 'log').mockImplementation(spy);
|
|
90
|
-
|
|
91
|
-
logger.log('Test');
|
|
92
|
-
expect(spy).toHaveBeenCalledOnce();
|
|
93
|
-
expect(spy).toHaveBeenCalledWith('[09:09:43.007]', 'My prefix', 'Test');
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
describe('warn', () => {
|
|
98
|
-
it('should call console.warn()', () => {
|
|
99
|
-
const logger = new Logger('My prefix', true);
|
|
100
|
-
const spy = vi.fn();
|
|
101
|
-
vi.spyOn(console, 'warn').mockImplementation(spy);
|
|
102
|
-
|
|
103
|
-
logger.warn('Test');
|
|
104
|
-
expect(spy).toHaveBeenCalledOnce();
|
|
105
|
-
expect(spy).toHaveBeenCalledWith('[09:09:43.007]', 'My prefix', 'Test');
|
|
106
|
-
});
|
|
107
|
-
});
|
package/src/logger/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './Logger.js';
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
off,
|
|
3
|
-
on,
|
|
4
|
-
type PostEvent,
|
|
5
|
-
postEvent as defaultPostEvent,
|
|
6
|
-
} from '~/bridge/index.js';
|
|
7
|
-
import { EventEmitter } from '~/event-emitter/index.js';
|
|
8
|
-
import { State } from '~/state/index.js';
|
|
9
|
-
import type { RGB } from '~/colors/index.js';
|
|
10
|
-
|
|
11
|
-
import type {
|
|
12
|
-
MainButtonEvents,
|
|
13
|
-
MainButtonParams,
|
|
14
|
-
MainButtonProps,
|
|
15
|
-
MainButtonState,
|
|
16
|
-
} from './types.js';
|
|
17
|
-
|
|
18
|
-
type Emitter = EventEmitter<MainButtonEvents>;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Controls the main button, which is displayed at the bottom
|
|
22
|
-
* of the Mini App in the Telegram interface.
|
|
23
|
-
*/
|
|
24
|
-
export class MainButton {
|
|
25
|
-
private readonly ee: Emitter = new EventEmitter();
|
|
26
|
-
|
|
27
|
-
private readonly state: State<MainButtonState>;
|
|
28
|
-
|
|
29
|
-
private readonly postEvent: PostEvent;
|
|
30
|
-
|
|
31
|
-
constructor(props: MainButtonProps) {
|
|
32
|
-
const {
|
|
33
|
-
postEvent = defaultPostEvent,
|
|
34
|
-
text,
|
|
35
|
-
textColor,
|
|
36
|
-
backgroundColor,
|
|
37
|
-
isEnabled,
|
|
38
|
-
isVisible,
|
|
39
|
-
isLoaderVisible,
|
|
40
|
-
} = props;
|
|
41
|
-
|
|
42
|
-
this.postEvent = postEvent;
|
|
43
|
-
this.state = new State({
|
|
44
|
-
backgroundColor,
|
|
45
|
-
isEnabled,
|
|
46
|
-
isVisible,
|
|
47
|
-
isLoaderVisible,
|
|
48
|
-
text,
|
|
49
|
-
textColor,
|
|
50
|
-
}, this.ee);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Sends current local state to Telegram application.
|
|
55
|
-
*/
|
|
56
|
-
private commit(): void {
|
|
57
|
-
// We should not commit changes until payload is correct. We could
|
|
58
|
-
// have some invalid values in case, button instance was created
|
|
59
|
-
// with empty values. Otherwise, an unexpected behaviour could be received.
|
|
60
|
-
if (this.text === '') {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
this.postEvent('web_app_setup_main_button', {
|
|
65
|
-
is_visible: this.isVisible,
|
|
66
|
-
is_active: this.isEnabled,
|
|
67
|
-
is_progress_visible: this.isLoaderVisible,
|
|
68
|
-
text: this.text,
|
|
69
|
-
color: this.backgroundColor,
|
|
70
|
-
text_color: this.textColor,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
private set isEnabled(isEnabled: boolean) {
|
|
75
|
-
this.setParams({ isEnabled });
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* True if the Main Button is currently enabled.
|
|
80
|
-
*/
|
|
81
|
-
get isEnabled(): boolean {
|
|
82
|
-
return this.state.get('isEnabled');
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
private set isLoaderVisible(isLoaderVisible: boolean) {
|
|
86
|
-
this.setParams({ isLoaderVisible });
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* True if the Main Button loader is currently visible.
|
|
91
|
-
*/
|
|
92
|
-
get isLoaderVisible(): boolean {
|
|
93
|
-
return this.state.get('isLoaderVisible');
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
private set isVisible(isVisible: boolean) {
|
|
97
|
-
this.setParams({ isVisible });
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* True if the Main Button is currently visible.
|
|
102
|
-
*/
|
|
103
|
-
get isVisible(): boolean {
|
|
104
|
-
return this.state.get('isVisible');
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* The Main Button background color.
|
|
109
|
-
*/
|
|
110
|
-
get backgroundColor(): RGB {
|
|
111
|
-
return this.state.get('backgroundColor');
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* The Main Button text.
|
|
116
|
-
*/
|
|
117
|
-
get text(): string {
|
|
118
|
-
return this.state.get('text');
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* The Main Button text color.
|
|
123
|
-
*/
|
|
124
|
-
get textColor(): RGB {
|
|
125
|
-
return this.state.get('textColor');
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Disables the Main Button.
|
|
130
|
-
*/
|
|
131
|
-
disable(): this {
|
|
132
|
-
// FIXME: This method does not work on Android. Event "main_button_pressed"
|
|
133
|
-
// keeps getting received even in case, button is disabled.
|
|
134
|
-
// Issue: https://github.com/Telegram-Mini-Apps/documentation/issues/1
|
|
135
|
-
this.isEnabled = false;
|
|
136
|
-
return this;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Enables the Main Button.
|
|
141
|
-
*/
|
|
142
|
-
enable(): this {
|
|
143
|
-
this.isEnabled = true;
|
|
144
|
-
return this;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Hides the Main Button.
|
|
149
|
-
*/
|
|
150
|
-
hide(): this {
|
|
151
|
-
this.isVisible = false;
|
|
152
|
-
return this;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Hides the Main Button loader.
|
|
157
|
-
*/
|
|
158
|
-
hideLoader(): this {
|
|
159
|
-
this.isLoaderVisible = false;
|
|
160
|
-
return this;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Adds new event listener.
|
|
165
|
-
* @param event - event name.
|
|
166
|
-
* @param listener - event listener.
|
|
167
|
-
*/
|
|
168
|
-
on: Emitter['on'] = (event, listener) => (
|
|
169
|
-
// FIXME: Event 'main_button_pressed' is still being received on Android
|
|
170
|
-
// even if the main button is disabled.
|
|
171
|
-
// Issue: https://github.com/Telegram-Mini-Apps/tma.js/issues/3
|
|
172
|
-
event === 'click'
|
|
173
|
-
? on('main_button_pressed', listener)
|
|
174
|
-
: this.ee.on(event, listener)
|
|
175
|
-
);
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Removes event listener.
|
|
179
|
-
* @param event - event name.
|
|
180
|
-
* @param listener - event listener.
|
|
181
|
-
*/
|
|
182
|
-
off: Emitter['off'] = (event, listener) => (
|
|
183
|
-
event === 'click'
|
|
184
|
-
? off('main_button_pressed', listener)
|
|
185
|
-
: this.ee.off(event, listener)
|
|
186
|
-
);
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Shows the Main Button. Note that opening the Mini App from the attachment menu hides the
|
|
190
|
-
* main button until the user interacts with the Mini App interface.
|
|
191
|
-
*/
|
|
192
|
-
show(): this {
|
|
193
|
-
this.isVisible = true;
|
|
194
|
-
return this;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* A method to show a loading indicator on the Main Button. It is recommended to display
|
|
199
|
-
* loader if the action tied to the button may take a long time.
|
|
200
|
-
*/
|
|
201
|
-
showLoader(): this {
|
|
202
|
-
this.isLoaderVisible = true;
|
|
203
|
-
return this;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Sets new Main Button text. Minimal length for text is 1 symbol, and maximum is 64 symbols.
|
|
208
|
-
* @param text - new text.
|
|
209
|
-
*/
|
|
210
|
-
setText(text: string): this {
|
|
211
|
-
return this.setParams({ text });
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
/**
|
|
215
|
-
* Sets new Main Button text color.
|
|
216
|
-
* @param textColor - new text color.
|
|
217
|
-
*/
|
|
218
|
-
setTextColor(textColor: RGB): this {
|
|
219
|
-
return this.setParams({ textColor });
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Updates current Main Button color.
|
|
224
|
-
* @param backgroundColor - color to set.
|
|
225
|
-
*/
|
|
226
|
-
setBackgroundColor(backgroundColor: RGB): this {
|
|
227
|
-
return this.setParams({ backgroundColor });
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
/**
|
|
231
|
-
* Allows setting multiple Main Button parameters.
|
|
232
|
-
* @param params - Main Button parameters.
|
|
233
|
-
*/
|
|
234
|
-
setParams(params: MainButtonParams): this {
|
|
235
|
-
this.state.set(params);
|
|
236
|
-
this.commit();
|
|
237
|
-
return this;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
@@ -1,346 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
-
|
|
3
|
-
import { MainButton } from '../MainButton';
|
|
4
|
-
|
|
5
|
-
describe('disable', () => {
|
|
6
|
-
it('should call "web_app_setup_main_button" method with parameter where "is_active" property equal to false', () => {
|
|
7
|
-
const postEvent = vi.fn();
|
|
8
|
-
const mainButton = new MainButton({
|
|
9
|
-
text: 'Test',
|
|
10
|
-
textColor: '#000000',
|
|
11
|
-
backgroundColor: '#ffffff',
|
|
12
|
-
postEvent,
|
|
13
|
-
isLoaderVisible: false,
|
|
14
|
-
isVisible: false,
|
|
15
|
-
isEnabled: false,
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
mainButton.disable();
|
|
19
|
-
expect(postEvent).toHaveBeenCalledTimes(1);
|
|
20
|
-
expect(postEvent.mock.calls[0][0]).toBe('web_app_setup_main_button');
|
|
21
|
-
expect(postEvent.mock.calls[0][1]).toHaveProperty('is_active', false);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it('should emit "change:isEnabled" event with false value', () => {
|
|
25
|
-
const listener = vi.fn();
|
|
26
|
-
const postEvent = vi.fn();
|
|
27
|
-
const mainButton = new MainButton({
|
|
28
|
-
text: 'Test',
|
|
29
|
-
textColor: '#000000',
|
|
30
|
-
backgroundColor: '#ffffff',
|
|
31
|
-
postEvent,
|
|
32
|
-
isLoaderVisible: false,
|
|
33
|
-
isVisible: false,
|
|
34
|
-
isEnabled: true,
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
mainButton.on('change:isEnabled', listener);
|
|
38
|
-
mainButton.disable();
|
|
39
|
-
expect(listener).toHaveBeenCalledTimes(1);
|
|
40
|
-
expect(listener).toHaveBeenCalledWith(false);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
describe('enable', () => {
|
|
45
|
-
it('should call "web_app_setup_main_button" method with parameter where "is_active" property equal to true', () => {
|
|
46
|
-
const postEvent = vi.fn();
|
|
47
|
-
const mainButton = new MainButton({
|
|
48
|
-
text: 'Test',
|
|
49
|
-
textColor: '#000000',
|
|
50
|
-
backgroundColor: '#ffffff',
|
|
51
|
-
postEvent,
|
|
52
|
-
isLoaderVisible: false,
|
|
53
|
-
isVisible: false,
|
|
54
|
-
isEnabled: false,
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
mainButton.enable();
|
|
58
|
-
expect(postEvent).toHaveBeenCalledTimes(1);
|
|
59
|
-
expect(postEvent.mock.calls[0][0]).toBe('web_app_setup_main_button');
|
|
60
|
-
expect(postEvent.mock.calls[0][1]).toHaveProperty('is_active', true);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
it('should emit "change:isEnabled" event with true value', () => {
|
|
64
|
-
const listener = vi.fn();
|
|
65
|
-
const mainButton = new MainButton({
|
|
66
|
-
text: 'Test',
|
|
67
|
-
textColor: '#000000',
|
|
68
|
-
backgroundColor: '#ffffff',
|
|
69
|
-
postEvent: vi.fn(),
|
|
70
|
-
isLoaderVisible: false,
|
|
71
|
-
isVisible: false,
|
|
72
|
-
isEnabled: false,
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
mainButton.on('change:isEnabled', listener);
|
|
76
|
-
mainButton.enable();
|
|
77
|
-
expect(listener).toHaveBeenCalledTimes(1);
|
|
78
|
-
expect(listener).toHaveBeenCalledWith(true);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
describe('hide', () => {
|
|
83
|
-
it('should call "web_app_setup_main_button" method with parameter where "is_visible" property equal to false', () => {
|
|
84
|
-
const postEvent = vi.fn();
|
|
85
|
-
const mainButton = new MainButton({
|
|
86
|
-
text: 'Test',
|
|
87
|
-
textColor: '#000000',
|
|
88
|
-
backgroundColor: '#ffffff',
|
|
89
|
-
postEvent,
|
|
90
|
-
isLoaderVisible: false,
|
|
91
|
-
isVisible: true,
|
|
92
|
-
isEnabled: false,
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
mainButton.hide();
|
|
96
|
-
expect(postEvent).toHaveBeenCalledTimes(1);
|
|
97
|
-
expect(postEvent.mock.calls[0][0]).toBe('web_app_setup_main_button');
|
|
98
|
-
expect(postEvent.mock.calls[0][1]).toHaveProperty('is_visible', false);
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
it('should emit "change:isVisible" event with false value', () => {
|
|
102
|
-
const listener = vi.fn();
|
|
103
|
-
const mainButton = new MainButton({
|
|
104
|
-
text: 'Test',
|
|
105
|
-
textColor: '#000000',
|
|
106
|
-
backgroundColor: '#ffffff',
|
|
107
|
-
postEvent: vi.fn(),
|
|
108
|
-
isLoaderVisible: false,
|
|
109
|
-
isVisible: true,
|
|
110
|
-
isEnabled: false,
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
mainButton.on('change:isVisible', listener);
|
|
114
|
-
mainButton.hide();
|
|
115
|
-
expect(listener).toHaveBeenCalledTimes(1);
|
|
116
|
-
expect(listener).toHaveBeenCalledWith(false);
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
describe('hideLoader', () => {
|
|
121
|
-
it('should call "web_app_setup_main_button" method with parameter where "is_progress_visible" property equal to false', () => {
|
|
122
|
-
const postEvent = vi.fn();
|
|
123
|
-
const mainButton = new MainButton({
|
|
124
|
-
text: 'Test',
|
|
125
|
-
textColor: '#000000',
|
|
126
|
-
backgroundColor: '#ffffff',
|
|
127
|
-
postEvent,
|
|
128
|
-
isLoaderVisible: true,
|
|
129
|
-
isVisible: false,
|
|
130
|
-
isEnabled: false,
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
mainButton.hideLoader();
|
|
134
|
-
expect(postEvent).toHaveBeenCalledTimes(1);
|
|
135
|
-
expect(postEvent.mock.calls[0][0]).toBe('web_app_setup_main_button');
|
|
136
|
-
expect(postEvent.mock.calls[0][1]).toHaveProperty('is_progress_visible', false);
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
it('should emit "change:isLoaderVisible" event with false value', () => {
|
|
140
|
-
const listener = vi.fn();
|
|
141
|
-
const mainButton = new MainButton({
|
|
142
|
-
text: 'Test',
|
|
143
|
-
textColor: '#000000',
|
|
144
|
-
backgroundColor: '#ffffff',
|
|
145
|
-
postEvent: vi.fn(),
|
|
146
|
-
isLoaderVisible: true,
|
|
147
|
-
isVisible: false,
|
|
148
|
-
isEnabled: false,
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
mainButton.on('change:isLoaderVisible', listener);
|
|
152
|
-
mainButton.hideLoader();
|
|
153
|
-
expect(listener).toHaveBeenCalledTimes(1);
|
|
154
|
-
expect(listener).toHaveBeenCalledWith(false);
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
describe('show', () => {
|
|
159
|
-
it('should call "web_app_setup_main_button" method with parameter where "is_visible" property equal to true', () => {
|
|
160
|
-
const postEvent = vi.fn();
|
|
161
|
-
const mainButton = new MainButton({
|
|
162
|
-
text: 'Test',
|
|
163
|
-
textColor: '#000000',
|
|
164
|
-
backgroundColor: '#ffffff',
|
|
165
|
-
postEvent,
|
|
166
|
-
isLoaderVisible: false,
|
|
167
|
-
isVisible: false,
|
|
168
|
-
isEnabled: false,
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
mainButton.show();
|
|
172
|
-
expect(postEvent).toHaveBeenCalledTimes(1);
|
|
173
|
-
expect(postEvent.mock.calls[0][0]).toBe('web_app_setup_main_button');
|
|
174
|
-
expect(postEvent.mock.calls[0][1]).toHaveProperty('is_visible', true);
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
it('should emit "change:isVisible" event with true value', () => {
|
|
178
|
-
const listener = vi.fn();
|
|
179
|
-
const mainButton = new MainButton({
|
|
180
|
-
text: 'Test',
|
|
181
|
-
textColor: '#000000',
|
|
182
|
-
backgroundColor: '#ffffff',
|
|
183
|
-
postEvent: vi.fn(),
|
|
184
|
-
isLoaderVisible: false,
|
|
185
|
-
isVisible: false,
|
|
186
|
-
isEnabled: false,
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
mainButton.on('change:isVisible', listener);
|
|
190
|
-
mainButton.show();
|
|
191
|
-
expect(listener).toHaveBeenCalledTimes(1);
|
|
192
|
-
expect(listener).toHaveBeenCalledWith(true);
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
describe('showLoader', () => {
|
|
197
|
-
it('should call "web_app_setup_main_button" method with parameter where "is_progress_visible" property equal to true', () => {
|
|
198
|
-
const postEvent = vi.fn();
|
|
199
|
-
const mainButton = new MainButton({
|
|
200
|
-
text: 'Test',
|
|
201
|
-
textColor: '#000000',
|
|
202
|
-
backgroundColor: '#ffffff',
|
|
203
|
-
postEvent,
|
|
204
|
-
isLoaderVisible: false,
|
|
205
|
-
isVisible: false,
|
|
206
|
-
isEnabled: false,
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
mainButton.showLoader();
|
|
210
|
-
expect(postEvent).toHaveBeenCalledTimes(1);
|
|
211
|
-
expect(postEvent.mock.calls[0][0]).toBe('web_app_setup_main_button');
|
|
212
|
-
expect(postEvent.mock.calls[0][1]).toHaveProperty('is_progress_visible', true);
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
it('should emit "change:isLoaderVisible" event with true value', () => {
|
|
216
|
-
const listener = vi.fn();
|
|
217
|
-
const mainButton = new MainButton({
|
|
218
|
-
text: 'Test',
|
|
219
|
-
textColor: '#000000',
|
|
220
|
-
backgroundColor: '#ffffff',
|
|
221
|
-
postEvent: vi.fn(),
|
|
222
|
-
isLoaderVisible: false,
|
|
223
|
-
isVisible: false,
|
|
224
|
-
isEnabled: false,
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
mainButton.on('change:isLoaderVisible', listener);
|
|
228
|
-
mainButton.showLoader();
|
|
229
|
-
expect(listener).toHaveBeenCalledTimes(1);
|
|
230
|
-
expect(listener).toHaveBeenCalledWith(true);
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
describe('setText', () => {
|
|
235
|
-
it('should call "web_app_setup_main_button" method with parameter where "text" property equal to specified value', () => {
|
|
236
|
-
const postEvent = vi.fn();
|
|
237
|
-
const mainButton = new MainButton({
|
|
238
|
-
text: 'Test',
|
|
239
|
-
textColor: '#000000',
|
|
240
|
-
backgroundColor: '#ffffff',
|
|
241
|
-
postEvent,
|
|
242
|
-
isLoaderVisible: false,
|
|
243
|
-
isVisible: false,
|
|
244
|
-
isEnabled: false,
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
mainButton.setText('WOW');
|
|
248
|
-
expect(postEvent).toHaveBeenCalledTimes(1);
|
|
249
|
-
expect(postEvent.mock.calls[0][0]).toBe('web_app_setup_main_button');
|
|
250
|
-
expect(postEvent.mock.calls[0][1]).toHaveProperty('text', 'WOW');
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
it('should emit "change:text" event with specified value', () => {
|
|
254
|
-
const listener = vi.fn();
|
|
255
|
-
const mainButton = new MainButton({
|
|
256
|
-
text: 'Test',
|
|
257
|
-
textColor: '#000000',
|
|
258
|
-
backgroundColor: '#ffffff',
|
|
259
|
-
postEvent: vi.fn(),
|
|
260
|
-
isLoaderVisible: false,
|
|
261
|
-
isVisible: false,
|
|
262
|
-
isEnabled: false,
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
mainButton.on('change:text', listener);
|
|
266
|
-
mainButton.setText('Punch');
|
|
267
|
-
expect(listener).toHaveBeenCalledTimes(1);
|
|
268
|
-
expect(listener).toHaveBeenCalledWith('Punch');
|
|
269
|
-
});
|
|
270
|
-
});
|
|
271
|
-
|
|
272
|
-
describe('setTextColor', () => {
|
|
273
|
-
it('should call "web_app_setup_main_button" method with parameter where "text_color" property equal to specified value', () => {
|
|
274
|
-
const postEvent = vi.fn();
|
|
275
|
-
const mainButton = new MainButton({
|
|
276
|
-
text: 'Test',
|
|
277
|
-
textColor: '#000000',
|
|
278
|
-
backgroundColor: '#ffffff',
|
|
279
|
-
postEvent,
|
|
280
|
-
isLoaderVisible: false,
|
|
281
|
-
isVisible: false,
|
|
282
|
-
isEnabled: false,
|
|
283
|
-
});
|
|
284
|
-
|
|
285
|
-
mainButton.setTextColor('#ffaacc');
|
|
286
|
-
expect(postEvent).toHaveBeenCalledTimes(1);
|
|
287
|
-
expect(postEvent.mock.calls[0][0]).toBe('web_app_setup_main_button');
|
|
288
|
-
expect(postEvent.mock.calls[0][1]).toHaveProperty('text_color', '#ffaacc');
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
it('should emit "change:textColor" event with specified value', () => {
|
|
292
|
-
const listener = vi.fn();
|
|
293
|
-
const mainButton = new MainButton({
|
|
294
|
-
text: 'Test',
|
|
295
|
-
textColor: '#000000',
|
|
296
|
-
backgroundColor: '#ffffff',
|
|
297
|
-
postEvent: vi.fn(),
|
|
298
|
-
isLoaderVisible: false,
|
|
299
|
-
isVisible: false,
|
|
300
|
-
isEnabled: false,
|
|
301
|
-
});
|
|
302
|
-
|
|
303
|
-
mainButton.on('change:textColor', listener);
|
|
304
|
-
mainButton.setTextColor('#aaaaaa');
|
|
305
|
-
expect(listener).toHaveBeenCalledTimes(1);
|
|
306
|
-
expect(listener).toHaveBeenCalledWith('#aaaaaa');
|
|
307
|
-
});
|
|
308
|
-
});
|
|
309
|
-
|
|
310
|
-
describe('setColor', () => {
|
|
311
|
-
it('should call "web_app_setup_main_button" method with parameter where "color" property equal to specified value', () => {
|
|
312
|
-
const postEvent = vi.fn();
|
|
313
|
-
const mainButton = new MainButton({
|
|
314
|
-
text: 'Test',
|
|
315
|
-
textColor: '#000000',
|
|
316
|
-
backgroundColor: '#ffffff',
|
|
317
|
-
postEvent,
|
|
318
|
-
isLoaderVisible: false,
|
|
319
|
-
isVisible: false,
|
|
320
|
-
isEnabled: false,
|
|
321
|
-
});
|
|
322
|
-
|
|
323
|
-
mainButton.setBackgroundColor('#ffaacc');
|
|
324
|
-
expect(postEvent).toHaveBeenCalledTimes(1);
|
|
325
|
-
expect(postEvent.mock.calls[0][0]).toBe('web_app_setup_main_button');
|
|
326
|
-
expect(postEvent.mock.calls[0][1]).toHaveProperty('color', '#ffaacc');
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
it('should emit "change:backgroundColor" event with specified value', () => {
|
|
330
|
-
const listener = vi.fn();
|
|
331
|
-
const mainButton = new MainButton({
|
|
332
|
-
text: 'Test',
|
|
333
|
-
textColor: '#000000',
|
|
334
|
-
backgroundColor: '#ffffff',
|
|
335
|
-
postEvent: vi.fn(),
|
|
336
|
-
isLoaderVisible: false,
|
|
337
|
-
isVisible: false,
|
|
338
|
-
isEnabled: false,
|
|
339
|
-
});
|
|
340
|
-
|
|
341
|
-
mainButton.on('change:backgroundColor', listener);
|
|
342
|
-
mainButton.setBackgroundColor('#aaaaaa');
|
|
343
|
-
expect(listener).toHaveBeenCalledTimes(1);
|
|
344
|
-
expect(listener).toHaveBeenCalledWith('#aaaaaa');
|
|
345
|
-
});
|
|
346
|
-
});
|
package/src/main-button/index.ts
DELETED