@nativescript-community/ui-bottomnavigationbar 0.0.0-stage → 1.0.0
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/CHANGELOG.md +11 -0
- package/LICENSE +201 -0
- package/README.md +196 -2
- package/index-common.d.ts +102 -0
- package/index-common.js +239 -0
- package/index-common.js.map +1 -0
- package/index.android.d.ts +35 -0
- package/index.android.js +248 -0
- package/index.android.js.map +1 -0
- package/index.d.ts +50 -0
- package/index.ios.d.ts +48 -0
- package/index.ios.js +292 -0
- package/index.ios.js.map +1 -0
- package/package.json +49 -5
- package/platforms/android/native-api-usage.json +11 -0
- package/platforms/ios/native-api-usage.json +11 -0
- package/tsconfig.tsbuildinfo +1 -0
package/index-common.js
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
var BottomNavigationBarBase_1;
|
|
2
|
+
import { CSSType, CoercibleProperty, Color, CssProperty, Property, Style, View, booleanConverter } from '@nativescript/core';
|
|
3
|
+
import { cssProperty } from '@nativescript-community/ui-core';
|
|
4
|
+
import { observeScrollDirection } from '@nativescript-community/ui-core/scroll-hide';
|
|
5
|
+
/**
|
|
6
|
+
* Enum for Title Visibility options
|
|
7
|
+
*
|
|
8
|
+
* @export
|
|
9
|
+
* @enum {number}
|
|
10
|
+
*/
|
|
11
|
+
export var TitleVisibility;
|
|
12
|
+
(function (TitleVisibility) {
|
|
13
|
+
TitleVisibility[TitleVisibility["selected"] = 0] = "selected";
|
|
14
|
+
TitleVisibility[TitleVisibility["always"] = 1] = "always";
|
|
15
|
+
TitleVisibility[TitleVisibility["never"] = 2] = "never";
|
|
16
|
+
})(TitleVisibility || (TitleVisibility = {}));
|
|
17
|
+
export const selectedTabIndexProperty = new CoercibleProperty({
|
|
18
|
+
name: 'selectedTabIndex',
|
|
19
|
+
defaultValue: -1,
|
|
20
|
+
affectsLayout: global.isIOS,
|
|
21
|
+
valueChanged: (target, oldValue, newValue) => {
|
|
22
|
+
target.onSelectedTabIndexChanged(oldValue, newValue);
|
|
23
|
+
},
|
|
24
|
+
coerceValue: (target, value) => {
|
|
25
|
+
const items = target.items;
|
|
26
|
+
if (items) {
|
|
27
|
+
const max = items.length - 1;
|
|
28
|
+
if (value < 0) {
|
|
29
|
+
value = 0;
|
|
30
|
+
}
|
|
31
|
+
if (value > max) {
|
|
32
|
+
value = max;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
value = -1;
|
|
37
|
+
}
|
|
38
|
+
return value;
|
|
39
|
+
},
|
|
40
|
+
valueConverter: (v) => parseInt(v, 10)
|
|
41
|
+
});
|
|
42
|
+
let BottomNavigationBarBase = BottomNavigationBarBase_1 = class BottomNavigationBarBase extends View {
|
|
43
|
+
constructor() {
|
|
44
|
+
super(...arguments);
|
|
45
|
+
this.titleVisibility = TitleVisibility.always;
|
|
46
|
+
this._hidden = false;
|
|
47
|
+
this._items = [];
|
|
48
|
+
}
|
|
49
|
+
/** @internal */
|
|
50
|
+
observeScroll(target) {
|
|
51
|
+
this._stopObservingScroll?.();
|
|
52
|
+
this._stopObservingScroll = target
|
|
53
|
+
? observeScrollDirection(target, (direction) => {
|
|
54
|
+
const hidden = direction === 'down';
|
|
55
|
+
if (hidden !== this._hidden) {
|
|
56
|
+
this._hidden = hidden;
|
|
57
|
+
this.animate({ translate: { x: 0, y: hidden ? this.getActualSize().height + 64 : 0 }, duration: 200 }).catch(() => null);
|
|
58
|
+
}
|
|
59
|
+
})
|
|
60
|
+
: null;
|
|
61
|
+
}
|
|
62
|
+
get items() {
|
|
63
|
+
return this._items;
|
|
64
|
+
}
|
|
65
|
+
onUnloaded() {
|
|
66
|
+
this._stopObservingScroll?.();
|
|
67
|
+
this._stopObservingScroll = null;
|
|
68
|
+
super.onUnloaded();
|
|
69
|
+
}
|
|
70
|
+
onLoaded() {
|
|
71
|
+
super.onLoaded();
|
|
72
|
+
if (this.hideOnScroll && !this._stopObservingScroll) {
|
|
73
|
+
this.observeScroll(this.hideOnScroll);
|
|
74
|
+
}
|
|
75
|
+
this._items.forEach((child) => {
|
|
76
|
+
this.loadView(child);
|
|
77
|
+
return true;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
selectTab(index) {
|
|
81
|
+
if (index === this.selectedTabIndex) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
this.selectTabNative(index);
|
|
85
|
+
}
|
|
86
|
+
_emitTabPressed(index) {
|
|
87
|
+
const eventData = {
|
|
88
|
+
eventName: BottomNavigationBarBase_1.tabPressedEvent,
|
|
89
|
+
object: this,
|
|
90
|
+
index
|
|
91
|
+
};
|
|
92
|
+
this.notify(eventData);
|
|
93
|
+
if (this.autoClearBadge) {
|
|
94
|
+
this.removeBadge(index);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
_emitTabSelected(index) {
|
|
98
|
+
this.onSelectedTabIndexChanged(this.selectedTabIndex, index);
|
|
99
|
+
if (this.autoClearBadge) {
|
|
100
|
+
this.removeBadge(index);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
_emitTabReselected(index) {
|
|
104
|
+
const eventData = {
|
|
105
|
+
eventName: BottomNavigationBarBase_1.tabReselectedEvent,
|
|
106
|
+
object: this,
|
|
107
|
+
index
|
|
108
|
+
};
|
|
109
|
+
this.notify(eventData);
|
|
110
|
+
}
|
|
111
|
+
_addChildFromBuilder(name, value) {
|
|
112
|
+
if (value instanceof BottomNavigationTabBase) {
|
|
113
|
+
if (!this._items) {
|
|
114
|
+
this._items = [];
|
|
115
|
+
}
|
|
116
|
+
this._items.push(value);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
showBadge(index, value) {
|
|
120
|
+
this._items[index] && this._items[index].showBadge(value);
|
|
121
|
+
}
|
|
122
|
+
removeBadge(index) {
|
|
123
|
+
this._items[index] && this._items[index].removeBadge();
|
|
124
|
+
}
|
|
125
|
+
[selectedTabIndexProperty.setNative](value) {
|
|
126
|
+
this.selectTab(value);
|
|
127
|
+
}
|
|
128
|
+
onSelectedTabIndexChanged(oldIndex, newIndex) {
|
|
129
|
+
this.selectedTabIndex = newIndex;
|
|
130
|
+
// to be overridden in platform specific files
|
|
131
|
+
this.notify({
|
|
132
|
+
eventName: BottomNavigationBarBase_1.tabSelectedEvent,
|
|
133
|
+
object: this,
|
|
134
|
+
oldIndex,
|
|
135
|
+
newIndex
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
BottomNavigationBarBase.tabPressedEvent = 'tabPressed';
|
|
140
|
+
BottomNavigationBarBase.tabSelectedEvent = 'tabSelected';
|
|
141
|
+
BottomNavigationBarBase.tabReselectedEvent = 'tabReselected';
|
|
142
|
+
__decorate([
|
|
143
|
+
cssProperty
|
|
144
|
+
], BottomNavigationBarBase.prototype, "activeColor", void 0);
|
|
145
|
+
__decorate([
|
|
146
|
+
cssProperty
|
|
147
|
+
], BottomNavigationBarBase.prototype, "inactiveColor", void 0);
|
|
148
|
+
__decorate([
|
|
149
|
+
cssProperty
|
|
150
|
+
], BottomNavigationBarBase.prototype, "badgeColor", void 0);
|
|
151
|
+
__decorate([
|
|
152
|
+
cssProperty
|
|
153
|
+
], BottomNavigationBarBase.prototype, "badgeTextColor", void 0);
|
|
154
|
+
BottomNavigationBarBase = BottomNavigationBarBase_1 = __decorate([
|
|
155
|
+
CSSType('BottomNavigationBar')
|
|
156
|
+
], BottomNavigationBarBase);
|
|
157
|
+
export { BottomNavigationBarBase };
|
|
158
|
+
export const hideOnScrollProperty = new Property({
|
|
159
|
+
name: 'hideOnScroll',
|
|
160
|
+
valueChanged: (target, oldValue, newValue) => target.observeScroll(newValue)
|
|
161
|
+
});
|
|
162
|
+
export const tabsProperty = new Property({
|
|
163
|
+
name: 'tabs',
|
|
164
|
+
affectsLayout: true
|
|
165
|
+
});
|
|
166
|
+
tabsProperty.register(BottomNavigationBarBase);
|
|
167
|
+
hideOnScrollProperty.register(BottomNavigationBarBase);
|
|
168
|
+
export const titleVisibilityProperty = new Property({
|
|
169
|
+
name: 'titleVisibility',
|
|
170
|
+
equalityComparer: (x, y) => x === y,
|
|
171
|
+
affectsLayout: true,
|
|
172
|
+
valueConverter: (v) => (typeof v === 'string' ? TitleVisibility[v.toLowerCase()] : v)
|
|
173
|
+
});
|
|
174
|
+
titleVisibilityProperty.register(BottomNavigationBarBase);
|
|
175
|
+
export const autoClearBadgeProperty = new Property({
|
|
176
|
+
name: 'autoClearBadge',
|
|
177
|
+
defaultValue: true,
|
|
178
|
+
valueConverter: booleanConverter
|
|
179
|
+
});
|
|
180
|
+
autoClearBadgeProperty.register(BottomNavigationBarBase);
|
|
181
|
+
export const activeColorCssProperty = new CssProperty({
|
|
182
|
+
name: 'activeColor',
|
|
183
|
+
cssName: 'active-color',
|
|
184
|
+
equalityComparer: Color.equals,
|
|
185
|
+
valueConverter: (v) => new Color(v)
|
|
186
|
+
});
|
|
187
|
+
activeColorCssProperty.register(Style);
|
|
188
|
+
export const inactiveColorCssProperty = new CssProperty({
|
|
189
|
+
name: 'inactiveColor',
|
|
190
|
+
cssName: 'inactive-color',
|
|
191
|
+
equalityComparer: Color.equals,
|
|
192
|
+
valueConverter: (v) => new Color(v)
|
|
193
|
+
});
|
|
194
|
+
inactiveColorCssProperty.register(Style);
|
|
195
|
+
export const badgeColorCssProperty = new CssProperty({
|
|
196
|
+
name: 'badgeColor',
|
|
197
|
+
cssName: 'badge-color',
|
|
198
|
+
equalityComparer: Color.equals,
|
|
199
|
+
valueConverter: (v) => new Color(v)
|
|
200
|
+
});
|
|
201
|
+
badgeColorCssProperty.register(Style);
|
|
202
|
+
export const badgeTextColorCssProperty = new CssProperty({
|
|
203
|
+
name: 'badgeTextColor',
|
|
204
|
+
cssName: 'badge-text-color',
|
|
205
|
+
equalityComparer: Color.equals,
|
|
206
|
+
valueConverter: (v) => new Color(v)
|
|
207
|
+
});
|
|
208
|
+
badgeTextColorCssProperty.register(Style);
|
|
209
|
+
selectedTabIndexProperty.register(BottomNavigationBarBase);
|
|
210
|
+
let BottomNavigationTabBase = class BottomNavigationTabBase extends View {
|
|
211
|
+
};
|
|
212
|
+
__decorate([
|
|
213
|
+
cssProperty
|
|
214
|
+
], BottomNavigationTabBase.prototype, "title", void 0);
|
|
215
|
+
__decorate([
|
|
216
|
+
cssProperty
|
|
217
|
+
], BottomNavigationTabBase.prototype, "icon", void 0);
|
|
218
|
+
__decorate([
|
|
219
|
+
cssProperty
|
|
220
|
+
], BottomNavigationTabBase.prototype, "activeColor", void 0);
|
|
221
|
+
__decorate([
|
|
222
|
+
cssProperty
|
|
223
|
+
], BottomNavigationTabBase.prototype, "inactiveColor", void 0);
|
|
224
|
+
BottomNavigationTabBase = __decorate([
|
|
225
|
+
CSSType('BottomNavigationTab')
|
|
226
|
+
], BottomNavigationTabBase);
|
|
227
|
+
export { BottomNavigationTabBase };
|
|
228
|
+
export const isSelectableProperty = new Property({
|
|
229
|
+
name: 'isSelectable',
|
|
230
|
+
defaultValue: true,
|
|
231
|
+
valueConverter: booleanConverter
|
|
232
|
+
});
|
|
233
|
+
isSelectableProperty.register(BottomNavigationTabBase);
|
|
234
|
+
export const iconProperty = new Property({
|
|
235
|
+
name: 'icon',
|
|
236
|
+
affectsLayout: true
|
|
237
|
+
});
|
|
238
|
+
iconProperty.register(BottomNavigationTabBase);
|
|
239
|
+
//# sourceMappingURL=index-common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-common.js","sourceRoot":"","sources":["../../src/ui-bottomnavigationbar/index-common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Color } from '@nativescript/core';
|
|
2
|
+
import { BottomNavigationBarBase, BottomNavigationTabBase, TitleVisibility, activeColorCssProperty, iconProperty, inactiveColorCssProperty, tabsProperty, titleVisibilityProperty } from './index-common';
|
|
3
|
+
declare type OnNavigationItemSelectedListener = com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedListener;
|
|
4
|
+
declare type OnNavigationItemReselectedListener = com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemReselectedListener;
|
|
5
|
+
export declare class BottomNavigationBar extends BottomNavigationBarBase {
|
|
6
|
+
[tabsProperty.setNative]: (tabs: BottomNavigationTab[]) => void;
|
|
7
|
+
[titleVisibilityProperty.setNative]: (titleVisibility: TitleVisibility) => void;
|
|
8
|
+
[activeColorCssProperty.setNative]: (activeColor: Color) => void;
|
|
9
|
+
[inactiveColorCssProperty.setNative]: (inactiveColor: Color) => void;
|
|
10
|
+
nativeViewProtected: com.google.android.material.bottomnavigation.BottomNavigationView;
|
|
11
|
+
_items: BottomNavigationTab[];
|
|
12
|
+
reselectListener: OnNavigationItemReselectedListener;
|
|
13
|
+
selectListener: OnNavigationItemSelectedListener;
|
|
14
|
+
height: number;
|
|
15
|
+
createNativeView(): com.google.android.material.bottomnavigation.BottomNavigationView;
|
|
16
|
+
initNativeView(): void;
|
|
17
|
+
disposeNativeView(): void;
|
|
18
|
+
showBadge(index: number, value?: number): void;
|
|
19
|
+
removeBadge(index: number): void;
|
|
20
|
+
protected createTabs(tabs: BottomNavigationTab[] | undefined): void;
|
|
21
|
+
protected selectTabNative(index: number): void;
|
|
22
|
+
}
|
|
23
|
+
export declare class BottomNavigationTab extends BottomNavigationTabBase {
|
|
24
|
+
[iconProperty.setNative]: (iconSource: any) => any;
|
|
25
|
+
[activeColorCssProperty.setNative]: (activeColor: Color) => void;
|
|
26
|
+
[inactiveColorCssProperty.setNative]: (inactiveColor: Color) => void;
|
|
27
|
+
nativeViewProtected: android.view.MenuItem;
|
|
28
|
+
index: number;
|
|
29
|
+
_isPaddingRelative: boolean;
|
|
30
|
+
createNativeView(): globalAndroid.view.MenuItem;
|
|
31
|
+
initNativeView(): void;
|
|
32
|
+
showBadge(value?: any): void;
|
|
33
|
+
removeBadge(): void;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
package/index.android.js
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { state, stateSets } from '@nativescript-community/ui-core/android/utils';
|
|
2
|
+
import { Color, ImageSource, Utils } from '@nativescript/core';
|
|
3
|
+
import { BottomNavigationBarBase, BottomNavigationTabBase, activeColorCssProperty, iconProperty, inactiveColorCssProperty, tabsProperty, titleVisibilityProperty } from './index-common';
|
|
4
|
+
// eslint-disable-next-line no-redeclare
|
|
5
|
+
let OnTabSelectedlistener;
|
|
6
|
+
const getOnTabSelectedlistener = () => {
|
|
7
|
+
if (OnTabSelectedlistener) {
|
|
8
|
+
return OnTabSelectedlistener;
|
|
9
|
+
}
|
|
10
|
+
var OnTabSelectedlistenerImpl = /** @class */ (function (_super) {
|
|
11
|
+
__extends(OnTabSelectedlistenerImpl, _super);
|
|
12
|
+
function OnTabSelectedlistenerImpl(owner) {
|
|
13
|
+
var _this = _super.call(this) || this;
|
|
14
|
+
_this.owner = owner;
|
|
15
|
+
// necessary when extending TypeScript constructors
|
|
16
|
+
return global.__native(_this);
|
|
17
|
+
}
|
|
18
|
+
OnTabSelectedlistenerImpl.prototype.onNavigationItemSelected = function (menuItem) {
|
|
19
|
+
var _a;
|
|
20
|
+
var owner = (_a = this.owner) === null || _a === void 0 ? void 0 : _a.get();
|
|
21
|
+
if (owner) {
|
|
22
|
+
var index = menuItem.getItemId();
|
|
23
|
+
var bottomNavigationTab = owner.items[index];
|
|
24
|
+
if (bottomNavigationTab.isSelectable) {
|
|
25
|
+
owner._emitTabSelected(index);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
owner._emitTabPressed(index);
|
|
29
|
+
}
|
|
30
|
+
return bottomNavigationTab.isSelectable;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
};
|
|
34
|
+
var _a;
|
|
35
|
+
OnTabSelectedlistenerImpl = __decorate([
|
|
36
|
+
Interfaces([com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedListener]),
|
|
37
|
+
__metadata("design:paramtypes", [typeof (_a = typeof WeakRef !== "undefined" && WeakRef) === "function" ? _a : Object])
|
|
38
|
+
], OnTabSelectedlistenerImpl);
|
|
39
|
+
return OnTabSelectedlistenerImpl;
|
|
40
|
+
}(java.lang.Object));
|
|
41
|
+
OnTabSelectedlistener = OnTabSelectedlistenerImpl;
|
|
42
|
+
return OnTabSelectedlistener;
|
|
43
|
+
};
|
|
44
|
+
// eslint-disable-next-line no-redeclare
|
|
45
|
+
let OnTabReselectedListener;
|
|
46
|
+
const getOnTabReselectedListener = () => {
|
|
47
|
+
if (OnTabReselectedListener) {
|
|
48
|
+
return OnTabReselectedListener;
|
|
49
|
+
}
|
|
50
|
+
var OnTabReselectedListenerImpl = /** @class */ (function (_super) {
|
|
51
|
+
__extends(OnTabReselectedListenerImpl, _super);
|
|
52
|
+
function OnTabReselectedListenerImpl(owner) {
|
|
53
|
+
var _this = _super.call(this) || this;
|
|
54
|
+
_this.owner = owner;
|
|
55
|
+
// necessary when extending TypeScript constructors
|
|
56
|
+
return global.__native(_this);
|
|
57
|
+
}
|
|
58
|
+
OnTabReselectedListenerImpl.prototype.onNavigationItemReselected = function (menuItem) {
|
|
59
|
+
var _a, _b;
|
|
60
|
+
(_b = (_a = this.owner) === null || _a === void 0 ? void 0 : _a.get()) === null || _b === void 0 ? void 0 : _b._emitTabReselected(menuItem.getItemId());
|
|
61
|
+
};
|
|
62
|
+
var _a;
|
|
63
|
+
OnTabReselectedListenerImpl = __decorate([
|
|
64
|
+
Interfaces([com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemReselectedListener]),
|
|
65
|
+
__metadata("design:paramtypes", [typeof (_a = typeof WeakRef !== "undefined" && WeakRef) === "function" ? _a : Object])
|
|
66
|
+
], OnTabReselectedListenerImpl);
|
|
67
|
+
return OnTabReselectedListenerImpl;
|
|
68
|
+
}(java.lang.Object));
|
|
69
|
+
OnTabReselectedListener = OnTabReselectedListenerImpl;
|
|
70
|
+
return OnTabReselectedListener;
|
|
71
|
+
};
|
|
72
|
+
function createColorStateList(activeColor, inactiveColor) {
|
|
73
|
+
const stateChecked = Array.create('int', 1);
|
|
74
|
+
stateChecked[0] = state.checked;
|
|
75
|
+
const stateUnChecked = Array.create('int', 0);
|
|
76
|
+
const states = Array.create('[I', 2);
|
|
77
|
+
states[0] = stateChecked;
|
|
78
|
+
states[1] = stateUnChecked;
|
|
79
|
+
const colors = Array.create('int', 2);
|
|
80
|
+
colors[0] = activeColor;
|
|
81
|
+
colors[1] = inactiveColor;
|
|
82
|
+
return new android.content.res.ColorStateList(states, colors);
|
|
83
|
+
}
|
|
84
|
+
export class BottomNavigationBar extends BottomNavigationBarBase {
|
|
85
|
+
constructor() {
|
|
86
|
+
super(...arguments);
|
|
87
|
+
// default height: the one of the Material 3 NavigationBar
|
|
88
|
+
this.height = 80;
|
|
89
|
+
}
|
|
90
|
+
createNativeView() {
|
|
91
|
+
return new com.google.android.material.bottomnavigation.BottomNavigationView(this._context);
|
|
92
|
+
}
|
|
93
|
+
initNativeView() {
|
|
94
|
+
super.initNativeView();
|
|
95
|
+
const OnTabReselectedListener = getOnTabReselectedListener();
|
|
96
|
+
const OnTabSelectedListener = getOnTabSelectedlistener();
|
|
97
|
+
const that = new WeakRef(this);
|
|
98
|
+
this.reselectListener = new OnTabReselectedListener(that);
|
|
99
|
+
this.selectListener = new OnTabSelectedListener(that);
|
|
100
|
+
this.nativeViewProtected.setOnNavigationItemReselectedListener(this.reselectListener);
|
|
101
|
+
this.nativeViewProtected.setOnNavigationItemSelectedListener(this.selectListener);
|
|
102
|
+
// Create the tabs before setting the default values for each tab
|
|
103
|
+
// We call this method here to create the tabs defined in the xml
|
|
104
|
+
this.createTabs(this._items);
|
|
105
|
+
this.selectTabNative(this.selectedTabIndex);
|
|
106
|
+
}
|
|
107
|
+
disposeNativeView() {
|
|
108
|
+
this.nativeViewProtected.setOnNavigationItemReselectedListener(null);
|
|
109
|
+
this.nativeViewProtected.setOnNavigationItemSelectedListener(null);
|
|
110
|
+
this.reselectListener = null;
|
|
111
|
+
this.selectListener = null;
|
|
112
|
+
this._items.forEach((item) => this._removeView(item));
|
|
113
|
+
super.disposeNativeView();
|
|
114
|
+
}
|
|
115
|
+
showBadge(index, value) {
|
|
116
|
+
// showBadge method is available in v1.1.0-alpha07 of material components
|
|
117
|
+
// but NS team has the .d.ts for version 1
|
|
118
|
+
// that's why we need to cast the nativeView to any to avoid typing errors
|
|
119
|
+
const badge = this.nativeViewProtected.getOrCreateBadge(index);
|
|
120
|
+
if (this.badgeColor) {
|
|
121
|
+
badge.setBackgroundColor(this.badgeColor.android);
|
|
122
|
+
}
|
|
123
|
+
if (this.badgeTextColor) {
|
|
124
|
+
badge.setBadgeTextColor(this.badgeTextColor.android);
|
|
125
|
+
}
|
|
126
|
+
if (value) {
|
|
127
|
+
badge.setNumber(value);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
removeBadge(index) {
|
|
131
|
+
// removeBadge method is available in v1.1.0-alpha07 of material components
|
|
132
|
+
// but NS team has the .d.ts for version 1
|
|
133
|
+
// that's why we need to cast the nativeView to any to avoid typing errors
|
|
134
|
+
this.nativeViewProtected.removeBadge(index);
|
|
135
|
+
}
|
|
136
|
+
[tabsProperty.setNative](tabs) {
|
|
137
|
+
this.createTabs(tabs);
|
|
138
|
+
}
|
|
139
|
+
[titleVisibilityProperty.setNative](titleVisibility) {
|
|
140
|
+
this.nativeViewProtected.setLabelVisibilityMode(titleVisibility);
|
|
141
|
+
}
|
|
142
|
+
[activeColorCssProperty.setNative](activeColor) {
|
|
143
|
+
const color1 = activeColor instanceof Color ? activeColor.android : activeColor;
|
|
144
|
+
const color2 = this.inactiveColor instanceof Color ? this.inactiveColor.android : this.nativeViewProtected.getItemTextColor().getColorForState(stateSets.BACKGROUND_DEFAULT_STATE_2, color1);
|
|
145
|
+
const colorStateList = createColorStateList(color1, color2);
|
|
146
|
+
this.nativeViewProtected.setItemTextColor(colorStateList);
|
|
147
|
+
this.nativeViewProtected.setItemIconTintList(colorStateList);
|
|
148
|
+
}
|
|
149
|
+
[inactiveColorCssProperty.setNative](inactiveColor) {
|
|
150
|
+
const color2 = inactiveColor instanceof Color ? inactiveColor.android : inactiveColor;
|
|
151
|
+
const color1 = this.activeColor instanceof Color ? this.activeColor.android : this.nativeViewProtected.getItemTextColor().getColorForState(stateSets.FOCUSED_STATE_SET, color2);
|
|
152
|
+
const colorStateList = createColorStateList(color1, color2);
|
|
153
|
+
this.nativeViewProtected.setItemTextColor(colorStateList);
|
|
154
|
+
this.nativeViewProtected.setItemIconTintList(colorStateList);
|
|
155
|
+
}
|
|
156
|
+
createTabs(tabs) {
|
|
157
|
+
const bottomNavigationTabs = this.nativeViewProtected.getMenu();
|
|
158
|
+
if (bottomNavigationTabs.size() > 0) {
|
|
159
|
+
bottomNavigationTabs.clear();
|
|
160
|
+
}
|
|
161
|
+
if (tabs) {
|
|
162
|
+
this._items = tabs;
|
|
163
|
+
}
|
|
164
|
+
this._items.forEach((item, index) => {
|
|
165
|
+
// the create nativeView will actually add the item to the tab bar
|
|
166
|
+
item.index = index;
|
|
167
|
+
this._addView(item);
|
|
168
|
+
// const tab = item.nativeViewProtected;
|
|
169
|
+
// tab.setIcon(item.getNativeIcon());
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
selectTabNative(index) {
|
|
173
|
+
if (this.nativeViewProtected) {
|
|
174
|
+
const bottomNavigationTabs = this.nativeViewProtected.getMenu();
|
|
175
|
+
if (bottomNavigationTabs.size() === 0) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
this.nativeViewProtected.setSelectedItemId(index);
|
|
179
|
+
}
|
|
180
|
+
this.selectedTabIndex = index;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Bottom Navigation Tab
|
|
184
|
+
export class BottomNavigationTab extends BottomNavigationTabBase {
|
|
185
|
+
constructor() {
|
|
186
|
+
super(...arguments);
|
|
187
|
+
this.index = android.view.Menu.NONE;
|
|
188
|
+
this._isPaddingRelative = true; // trick because @nativescript/core expect us to be a view
|
|
189
|
+
}
|
|
190
|
+
createNativeView() {
|
|
191
|
+
const view = this.parent.nativeViewProtected.getMenu().add(android.view.Menu.NONE, this.index, android.view.Menu.NONE, this.title);
|
|
192
|
+
// trick because @nativescript/core expect us to be a view
|
|
193
|
+
view.defaultPaddings = { top: 0, left: 0, bottom: 0, right: 0 };
|
|
194
|
+
return view;
|
|
195
|
+
}
|
|
196
|
+
initNativeView() {
|
|
197
|
+
// override for super not to be called. isClickable does not exist on android.view.MenuItem
|
|
198
|
+
}
|
|
199
|
+
[iconProperty.setNative](iconSource) {
|
|
200
|
+
if (!iconSource) {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
let is;
|
|
204
|
+
if (iconSource instanceof ImageSource) {
|
|
205
|
+
is = iconSource;
|
|
206
|
+
}
|
|
207
|
+
else if (Utils.isFontIconURI(iconSource)) {
|
|
208
|
+
const fontIconCode = iconSource.split('//')[1];
|
|
209
|
+
const font = this.style.fontInternal;
|
|
210
|
+
is = ImageSource.fromFontIconCodeSync(fontIconCode, font, new Color('white'));
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
is = ImageSource.fromFileOrResourceSync(iconSource);
|
|
214
|
+
}
|
|
215
|
+
this.nativeViewProtected.setIcon(is ? new android.graphics.drawable.BitmapDrawable(is.android) : null);
|
|
216
|
+
}
|
|
217
|
+
showBadge(value) {
|
|
218
|
+
this.parent.showBadge(this.index, value);
|
|
219
|
+
}
|
|
220
|
+
removeBadge() {
|
|
221
|
+
this.parent.removeBadge(this.index);
|
|
222
|
+
}
|
|
223
|
+
[activeColorCssProperty.setNative](activeColor) {
|
|
224
|
+
// not working for now
|
|
225
|
+
const color1 = activeColor instanceof Color ? activeColor.android : activeColor;
|
|
226
|
+
const color2 = this.inactiveColor instanceof Color
|
|
227
|
+
? this.inactiveColor.android
|
|
228
|
+
: this.nativeViewProtected.getIconTintList()
|
|
229
|
+
? this.nativeViewProtected.getIconTintList().getColorForState(stateSets.BACKGROUND_DEFAULT_STATE_2, color1)
|
|
230
|
+
: 0;
|
|
231
|
+
const colorStateList = createColorStateList(color1, color2);
|
|
232
|
+
// this.nativeViewProtected.color(colorStateList); // can we set the text color?
|
|
233
|
+
this.nativeViewProtected.setIconTintList(colorStateList);
|
|
234
|
+
}
|
|
235
|
+
[inactiveColorCssProperty.setNative](inactiveColor) {
|
|
236
|
+
// not working for now
|
|
237
|
+
const color2 = inactiveColor instanceof Color ? inactiveColor.android : inactiveColor;
|
|
238
|
+
const color1 = this.activeColor instanceof Color
|
|
239
|
+
? this.activeColor.android
|
|
240
|
+
: this.nativeViewProtected.getIconTintList()
|
|
241
|
+
? this.nativeViewProtected.getIconTintList().getColorForState(stateSets.SELECTED_STATE_SET, color2)
|
|
242
|
+
: 0;
|
|
243
|
+
const colorStateList = createColorStateList(color1, color2);
|
|
244
|
+
// this.nativeViewProtected.setText(colorStateList); // can we set the text color?
|
|
245
|
+
this.nativeViewProtected.setIconTintList(colorStateList);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=index.android.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.android.js","sourceRoot":"","sources":["../../src/ui-bottomnavigationbar/index.android.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BottomNavigationBar component: Material 3 NavigationBar on Android, native UITabBar on iOS
|
|
3
|
+
* @module @nativescript-community/ui-bottomnavigationbar
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { Color, EventData, ImageSource, View } from '@nativescript/core';
|
|
7
|
+
import { BottomNavigationBarBase, BottomNavigationTabBase, TabPressedEventData, TabReselectedEventData, TabSelectedEventData, TitleVisibility } from './index-common';
|
|
8
|
+
|
|
9
|
+
export { TabPressedEventData, TabReselectedEventData, TabSelectedEventData, TitleVisibility };
|
|
10
|
+
|
|
11
|
+
export declare class BottomNavigationBar extends BottomNavigationBarBase {
|
|
12
|
+
static tabPressedEvent: string;
|
|
13
|
+
static tabSelectedEvent: string;
|
|
14
|
+
static tabReselectedEvent: string;
|
|
15
|
+
readonly ios: any;
|
|
16
|
+
readonly android: any;
|
|
17
|
+
//@ts-ignore
|
|
18
|
+
readonly items: BottomNavigationTab[];
|
|
19
|
+
selectedTabIndex: number;
|
|
20
|
+
/** the scrolling view (collectionview, scrollview...): the bar slides out when the content scrolls down and comes back when it scrolls up */
|
|
21
|
+
hideOnScroll: View;
|
|
22
|
+
titleVisibility: TitleVisibility;
|
|
23
|
+
activeColor: Color;
|
|
24
|
+
inactiveColor: Color;
|
|
25
|
+
backgroundColor: Color;
|
|
26
|
+
autoClearBadge: Boolean;
|
|
27
|
+
selectTab(index: number): void;
|
|
28
|
+
showBadge(index: number, value?: number): void;
|
|
29
|
+
removeBadge(index: number): void;
|
|
30
|
+
on(event: 'tabPressed', callback: (args: TabPressedEventData) => void, thisArg?: any): void;
|
|
31
|
+
on(event: 'tabSelected', callback: (args: TabSelectedEventData) => void, thisArg?: any): void;
|
|
32
|
+
on(event: 'tabReselected', callback: (args: TabReselectedEventData) => void, thisArg?: any): void;
|
|
33
|
+
|
|
34
|
+
// Needed when 'on' method is overriden.
|
|
35
|
+
/**
|
|
36
|
+
* @hidden
|
|
37
|
+
*/
|
|
38
|
+
on(eventNames: string, callback: (data: EventData) => void, thisArg?: any): void;
|
|
39
|
+
protected createTabs(tabs?: BottomNavigationTab[]): void;
|
|
40
|
+
protected selectTabNative(index: number): void;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export declare class BottomNavigationTab extends BottomNavigationTabBase {
|
|
44
|
+
title: string;
|
|
45
|
+
icon: ImageSource;
|
|
46
|
+
isSelectable: boolean;
|
|
47
|
+
getNativeIcon(): any;
|
|
48
|
+
showBadge(value?: number): void;
|
|
49
|
+
removeBadge(): void;
|
|
50
|
+
}
|
package/index.ios.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Color, backgroundColorProperty } from '@nativescript/core';
|
|
2
|
+
import { BottomNavigationBarBase, BottomNavigationTabBase, TitleVisibility, activeColorCssProperty, badgeColorCssProperty, badgeTextColorCssProperty, iconProperty, inactiveColorCssProperty, tabsProperty, titleVisibilityProperty } from './index-common';
|
|
3
|
+
export declare class BottomNavigationBar extends BottomNavigationBarBase {
|
|
4
|
+
[tabsProperty.setNative]: (tabs: BottomNavigationTab[]) => void;
|
|
5
|
+
[titleVisibilityProperty.setNative]: (titleVisibility: TitleVisibility) => void;
|
|
6
|
+
[activeColorCssProperty.setNative]: (activeColor: Color) => void;
|
|
7
|
+
[inactiveColorCssProperty.setNative]: (inactiveColor: Color) => void;
|
|
8
|
+
[badgeColorCssProperty.setNative]: (color: Color) => void;
|
|
9
|
+
[badgeTextColorCssProperty.setNative]: (color: Color) => void;
|
|
10
|
+
[backgroundColorProperty.setNative]: (backgroundColor: Color) => void;
|
|
11
|
+
nativeViewProtected: UITabBar;
|
|
12
|
+
_items: BottomNavigationTab[];
|
|
13
|
+
private _delegate;
|
|
14
|
+
createNativeView(): Object;
|
|
15
|
+
initNativeView(): void;
|
|
16
|
+
disposeNativeView(): void;
|
|
17
|
+
layoutNativeView(left: number, top: number, right: number, bottom: number): void;
|
|
18
|
+
showBadge(index: number, value?: number): void;
|
|
19
|
+
removeBadge(index: number): void;
|
|
20
|
+
/**
|
|
21
|
+
* Applies the colors of the bar to the UITabBarAppearance (stacked, inline and compact inline layouts)
|
|
22
|
+
*/
|
|
23
|
+
updateAppearance(): void;
|
|
24
|
+
/**
|
|
25
|
+
* `titleVisibility`: never hides the titles, selected only shows the title of the selected tab
|
|
26
|
+
*/
|
|
27
|
+
updateTitles(): void;
|
|
28
|
+
protected createTabs(tabs: BottomNavigationTab[] | undefined): void;
|
|
29
|
+
protected selectTabNative(index: number): void;
|
|
30
|
+
_onNativeItemSelected(item: UITabBarItem): void;
|
|
31
|
+
}
|
|
32
|
+
export declare class BottomNavigationTab extends BottomNavigationTabBase {
|
|
33
|
+
[iconProperty.setNative]: (iconSource: any) => void;
|
|
34
|
+
[activeColorCssProperty.setNative]: (activeColor: Color) => void;
|
|
35
|
+
[inactiveColorCssProperty.setNative]: (inactiveColor: Color) => void;
|
|
36
|
+
nativeViewProtected: UITabBarItem;
|
|
37
|
+
private mTitleVisible;
|
|
38
|
+
createNativeView(): UITabBarItem;
|
|
39
|
+
getNativeIcon(): UIImage;
|
|
40
|
+
/**
|
|
41
|
+
* Colors of the icons: pre tinted (always original) images, the tint of the tab bar is ignored by the iOS 26 glass bar.
|
|
42
|
+
* Without colors the icon is a template image tinted by the system.
|
|
43
|
+
*/
|
|
44
|
+
updateIcon(): void;
|
|
45
|
+
updateTitle(visible: boolean): void;
|
|
46
|
+
showBadge(value?: number): void;
|
|
47
|
+
removeBadge(): void;
|
|
48
|
+
}
|