@xh/hoist 72.0.0-SNAPSHOT.1737150473558 → 72.0.0-SNAPSHOT.1737484375112
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 +10 -1
- package/admin/columns/Tracking.ts +10 -0
- package/admin/tabs/activity/tracking/ActivityTrackingModel.ts +2 -0
- package/admin/tabs/activity/tracking/detail/ActivityDetailModel.ts +1 -0
- package/build/types/admin/columns/Tracking.d.ts +1 -0
- package/build/types/core/types/Interfaces.d.ts +12 -3
- package/build/types/kit/onsen/index.d.ts +1 -1
- package/build/types/kit/swiper/index.d.ts +98 -0
- package/build/types/mobile/cmp/navigator/Navigator.d.ts +2 -6
- package/build/types/mobile/cmp/navigator/NavigatorModel.d.ts +18 -11
- package/build/types/mobile/cmp/navigator/impl/GestureRefresh.d.ts +8 -0
- package/build/types/mobile/cmp/navigator/impl/{swipe/SwiperModel.d.ts → GestureRefreshModel.d.ts} +1 -8
- package/build/types/mobile/cmp/navigator/impl/Utils.d.ts +9 -0
- package/cmp/ag-grid/AgGrid.scss +6 -0
- package/core/types/Interfaces.ts +13 -3
- package/kit/onsen/index.ts +0 -1
- package/kit/onsen/theme.scss +0 -5
- package/kit/swiper/index.ts +14 -0
- package/kit/swiper/styles.scss +2 -0
- package/mobile/cmp/navigator/Navigator.scss +20 -0
- package/mobile/cmp/navigator/Navigator.ts +36 -19
- package/mobile/cmp/navigator/NavigatorModel.ts +156 -99
- package/mobile/cmp/navigator/impl/{swipe/Swiper.scss → GestureRefresh.scss} +6 -1
- package/mobile/cmp/navigator/impl/GestureRefresh.ts +55 -0
- package/mobile/cmp/navigator/impl/GestureRefreshModel.ts +86 -0
- package/mobile/cmp/navigator/impl/Page.scss +4 -2
- package/mobile/cmp/navigator/impl/Page.ts +10 -12
- package/mobile/cmp/navigator/impl/Utils.ts +107 -0
- package/package.json +3 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/build/types/mobile/cmp/navigator/impl/swipe/BackIndicator.d.ts +0 -6
- package/build/types/mobile/cmp/navigator/impl/swipe/RefreshIndicator.d.ts +0 -6
- package/build/types/mobile/cmp/navigator/impl/swipe/Swiper.d.ts +0 -8
- package/mobile/cmp/navigator/impl/swipe/BackIndicator.ts +0 -34
- package/mobile/cmp/navigator/impl/swipe/RefreshIndicator.ts +0 -36
- package/mobile/cmp/navigator/impl/swipe/Swiper.ts +0 -35
- package/mobile/cmp/navigator/impl/swipe/SwiperModel.ts +0 -153
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## v72.0.0-SNAPSHOT - unreleased
|
|
4
4
|
|
|
5
|
+
### 💥 Breaking Changes
|
|
6
|
+
|
|
7
|
+
* Mobile `Navigator` no longer supports `animation` prop, and `NavigatorModel` no longer supports
|
|
8
|
+
`swipeToGoBack`. Both of these properties are now managed internally by the `Navigator` component.
|
|
9
|
+
|
|
10
|
+
### 🎁 New Features
|
|
11
|
+
|
|
12
|
+
* Mobile `Navigator` has been rebuilt to support smooth swipe-based navigation. The API remains
|
|
13
|
+
largely the same, notwithstanding the minor breaking changes detailed above.
|
|
14
|
+
|
|
5
15
|
### 🐞 Bug Fixes
|
|
6
16
|
|
|
7
17
|
* Fixed `ViewManagerModel` unique name validation.
|
|
@@ -11,7 +21,6 @@
|
|
|
11
21
|
|
|
12
22
|
* Added support for providing custom `PersistenceProvider` implementations to `PersistOptions`.
|
|
13
23
|
|
|
14
|
-
|
|
15
24
|
### ⚙️ Typescript API Adjustments
|
|
16
25
|
|
|
17
26
|
* Improved signature of `HoistBase.markPersist`.
|
|
@@ -37,6 +37,16 @@ export const browser: ColumnSpec = {
|
|
|
37
37
|
width: 100
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
+
export const severity: ColumnSpec = {
|
|
41
|
+
field: {
|
|
42
|
+
name: 'severity',
|
|
43
|
+
type: 'string',
|
|
44
|
+
isDimension: true,
|
|
45
|
+
aggregator: 'UNIQUE'
|
|
46
|
+
},
|
|
47
|
+
width: 80
|
|
48
|
+
};
|
|
49
|
+
|
|
40
50
|
export const category: ColumnSpec = {
|
|
41
51
|
field: {
|
|
42
52
|
name: 'category',
|
|
@@ -87,6 +87,7 @@ export class ActivityTrackingModel extends HoistModel {
|
|
|
87
87
|
fields: [
|
|
88
88
|
Col.browser.field,
|
|
89
89
|
Col.category.field,
|
|
90
|
+
Col.severity.field,
|
|
90
91
|
Col.correlationId.field,
|
|
91
92
|
Col.data.field,
|
|
92
93
|
{...(Col.dateCreated.field as FieldSpec), displayName: 'Timestamp'},
|
|
@@ -131,6 +132,7 @@ export class ActivityTrackingModel extends HoistModel {
|
|
|
131
132
|
{field: 'userAgent'},
|
|
132
133
|
{field: 'url', displayName: 'URL'},
|
|
133
134
|
{field: 'instance'},
|
|
135
|
+
{field: 'severity'},
|
|
134
136
|
{field: 'appVersion'},
|
|
135
137
|
{field: 'appEnvironment', displayName: 'Environment'}
|
|
136
138
|
]
|
|
@@ -2,6 +2,7 @@ import { ColumnSpec } from '@xh/hoist/cmp/grid/columns';
|
|
|
2
2
|
export declare const appEnvironment: ColumnSpec;
|
|
3
3
|
export declare const appVersion: ColumnSpec;
|
|
4
4
|
export declare const browser: ColumnSpec;
|
|
5
|
+
export declare const severity: ColumnSpec;
|
|
5
6
|
export declare const category: ColumnSpec;
|
|
6
7
|
export declare const data: ColumnSpec;
|
|
7
8
|
export declare const day: ColumnSpec;
|
|
@@ -153,6 +153,10 @@ export interface AppOptionSpec {
|
|
|
153
153
|
/** Optional flag to omit displaying option. */
|
|
154
154
|
omit?: Thunkable<boolean>;
|
|
155
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Severity levels for tracking. Default is 'INFO'.
|
|
158
|
+
*/
|
|
159
|
+
export type TrackSeverity = 'DEBUG' | 'INFO' | 'WARN';
|
|
156
160
|
/**
|
|
157
161
|
* Options for tracking activity on the server via TrackService.
|
|
158
162
|
*/
|
|
@@ -174,11 +178,16 @@ export interface TrackOptions {
|
|
|
174
178
|
*/
|
|
175
179
|
logData?: boolean | string[];
|
|
176
180
|
/**
|
|
177
|
-
* Flag to indicate relative importance of activity.
|
|
178
|
-
*
|
|
181
|
+
* Flag to indicate relative importance of activity. Default 'INFO'.
|
|
182
|
+
*
|
|
183
|
+
* Allows conditional saving of messages depending on the currently active
|
|
184
|
+
* level configuration for the category/user. See HoistCore's 'TrackService' for
|
|
185
|
+
* more information.
|
|
186
|
+
*
|
|
187
|
+
* Note, errors should be tracked via {@link XH.handleException}, which
|
|
179
188
|
* will post to the server for dedicated logging if requested.
|
|
180
189
|
*/
|
|
181
|
-
severity?:
|
|
190
|
+
severity?: TrackSeverity;
|
|
182
191
|
/**
|
|
183
192
|
* Set to true to log this message only once during the current session. The category and
|
|
184
193
|
* message text will be used as a compound key to identify repeated messages.
|
|
@@ -4,5 +4,5 @@ import 'onsenui/css/onsenui.css';
|
|
|
4
4
|
import { FunctionComponent } from 'react';
|
|
5
5
|
import './styles.scss';
|
|
6
6
|
import './theme.scss';
|
|
7
|
-
export declare const button: ElementFactory, Button: FunctionComponent<{}>, checkbox: ElementFactory, Checkbox: FunctionComponent<{}>, gestureDetector: ElementFactory, GestureDetector: FunctionComponent<{}>, input: ElementFactory, Input: FunctionComponent<{}>,
|
|
7
|
+
export declare const button: ElementFactory, Button: FunctionComponent<{}>, checkbox: ElementFactory, Checkbox: FunctionComponent<{}>, gestureDetector: ElementFactory, GestureDetector: FunctionComponent<{}>, input: ElementFactory, Input: FunctionComponent<{}>, searchInput: ElementFactory, SearchInput: FunctionComponent<{}>, select: ElementFactory, Select: FunctionComponent<{}>, switchControl: ElementFactory, SwitchControl: FunctionComponent<{}>;
|
|
8
8
|
export declare const dialog: ElementFactory, Dialog: FunctionComponent<{}>, listItem: ElementFactory, ListItem: FunctionComponent<{}>, page: ElementFactory, Page: FunctionComponent<{}>, tab: ElementFactory, Tab: FunctionComponent<{}>, tabbar: ElementFactory, Tabbar: FunctionComponent<{}>, toast: ElementFactory, Toast: FunctionComponent<{}>, toolbar: ElementFactory, Toolbar: FunctionComponent<{}>, bottomToolbar: ElementFactory, BottomToolbar: FunctionComponent<{}>;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Swiper, SwiperSlide } from 'swiper/react';
|
|
3
|
+
import { EffectCreative } from 'swiper/modules';
|
|
4
|
+
import './styles.scss';
|
|
5
|
+
export { Swiper, SwiperSlide, EffectCreative };
|
|
6
|
+
export declare const swiper: import("@xh/hoist/core").ElementFactory<import("react").RefAttributes<import("swiper/react").SwiperRef> & Omit<import("react").HTMLAttributes<HTMLElement>, "onClick" | "onKeyPress" | "onProgress" | "onResize" | "onDoubleClick" | "onTouchEnd" | "onTouchMove" | "onTouchStart" | "onScroll" | "onTransitionEnd"> & import("swiper/types").SwiperOptions & {
|
|
7
|
+
tag?: string;
|
|
8
|
+
wrapperTag?: string;
|
|
9
|
+
onSwiper?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
10
|
+
onAutoplayStart?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
11
|
+
onAutoplayStop?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
12
|
+
onAutoplayPause?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
13
|
+
onAutoplayResume?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
14
|
+
onAutoplayTimeLeft?: (swiper: import("swiper/types/swiper-class").default, timeLeft: number, percentage: number) => void;
|
|
15
|
+
onAutoplay?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
16
|
+
onHashChange?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
17
|
+
onHashSet?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
18
|
+
onKeyPress?: (swiper: import("swiper/types/swiper-class").default, keyCode: string) => void;
|
|
19
|
+
onScroll?: (swiper: import("swiper/types/swiper-class").default, event: WheelEvent) => void;
|
|
20
|
+
onScrollbarDragStart?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
21
|
+
onScrollbarDragMove?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
22
|
+
onScrollbarDragEnd?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
23
|
+
onNavigationHide?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
24
|
+
onNavigationShow?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
25
|
+
onNavigationPrev?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
26
|
+
onNavigationNext?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
27
|
+
onPaginationRender?: (swiper: import("swiper/types/swiper-class").default, paginationEl: HTMLElement) => void;
|
|
28
|
+
onPaginationUpdate?: (swiper: import("swiper/types/swiper-class").default, paginationEl: HTMLElement) => void;
|
|
29
|
+
onPaginationHide?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
30
|
+
onPaginationShow?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
31
|
+
onZoomChange?: (swiper: import("swiper/types/swiper-class").default, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void;
|
|
32
|
+
onInit?: (swiper: import("swiper/types/swiper-class").default) => any;
|
|
33
|
+
onBeforeDestroy?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
34
|
+
onSlidesUpdated?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
35
|
+
onSlideChange?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
36
|
+
onSlideChangeTransitionStart?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
37
|
+
onSlideChangeTransitionEnd?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
38
|
+
onSlideNextTransitionStart?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
39
|
+
onSlideNextTransitionEnd?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
40
|
+
onSlidePrevTransitionStart?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
41
|
+
onSlidePrevTransitionEnd?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
42
|
+
onTransitionStart?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
43
|
+
onTransitionEnd?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
44
|
+
onTouchStart?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
45
|
+
onTouchMove?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
46
|
+
onTouchMoveOpposite?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
47
|
+
onSliderMove?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
48
|
+
onTouchEnd?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
49
|
+
onClick?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
50
|
+
onTap?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
51
|
+
onDoubleTap?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
52
|
+
onProgress?: (swiper: import("swiper/types/swiper-class").default, progress: number) => void;
|
|
53
|
+
onReachBeginning?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
54
|
+
onReachEnd?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
55
|
+
onToEdge?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
56
|
+
onFromEdge?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
57
|
+
onSetTranslate?: (swiper: import("swiper/types/swiper-class").default, translate: number) => void;
|
|
58
|
+
onSetTransition?: (swiper: import("swiper/types/swiper-class").default, transition: number) => void;
|
|
59
|
+
onResize?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
60
|
+
onObserverUpdate?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
61
|
+
onBeforeLoopFix?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
62
|
+
onLoopFix?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
63
|
+
onBreakpoint?: (swiper: import("swiper/types/swiper-class").default, breakpointParams: import("swiper/types").SwiperOptions) => void;
|
|
64
|
+
_beforeBreakpoint?: (swiper: import("swiper/types/swiper-class").default, breakpointParams: import("swiper/types").SwiperOptions) => void;
|
|
65
|
+
_containerClasses?: (swiper: import("swiper/types/swiper-class").default, classNames: string) => void;
|
|
66
|
+
_slideClass?: (swiper: import("swiper/types/swiper-class").default, slideEl: HTMLElement, classNames: string) => void;
|
|
67
|
+
_slideClasses?: (swiper: import("swiper/types/swiper-class").default, slides: {
|
|
68
|
+
slideEl: HTMLElement;
|
|
69
|
+
classNames: string;
|
|
70
|
+
index: number;
|
|
71
|
+
}[]) => void;
|
|
72
|
+
_swiper?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
73
|
+
_freeModeNoMomentumRelease?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
74
|
+
onActiveIndexChange?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
75
|
+
onSnapIndexChange?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
76
|
+
onRealIndexChange?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
77
|
+
onAfterInit?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
78
|
+
onBeforeInit?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
79
|
+
onBeforeResize?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
80
|
+
onBeforeSlideChangeStart?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
81
|
+
onBeforeTransitionStart?: (swiper: import("swiper/types/swiper-class").default, speed: number, internal: any) => void;
|
|
82
|
+
onChangeDirection?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
83
|
+
onDoubleClick?: (swiper: import("swiper/types/swiper-class").default, event: MouseEvent | PointerEvent | TouchEvent) => void;
|
|
84
|
+
onDestroy?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
85
|
+
onMomentumBounce?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
86
|
+
onOrientationchange?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
87
|
+
onSlideResetTransitionStart?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
88
|
+
onSlideResetTransitionEnd?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
89
|
+
onSliderFirstMove?: (swiper: import("swiper/types/swiper-class").default, event: TouchEvent) => void;
|
|
90
|
+
onSlidesLengthChange?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
91
|
+
onSlidesGridLengthChange?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
92
|
+
onSnapGridLengthChange?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
93
|
+
onUpdate?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
94
|
+
onLock?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
95
|
+
onUnlock?: (swiper: import("swiper/types/swiper-class").default) => void;
|
|
96
|
+
} & {
|
|
97
|
+
children?: import("react").ReactNode;
|
|
98
|
+
}>, swiperSlide: import("@xh/hoist/core").ElementFactory<import("swiper/react").SwiperSlideProps>;
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { HoistProps } from '@xh/hoist/core';
|
|
3
2
|
import '@xh/hoist/mobile/register';
|
|
3
|
+
import './Navigator.scss';
|
|
4
4
|
import { NavigatorModel } from './NavigatorModel';
|
|
5
|
-
export interface NavigatorProps extends HoistProps<NavigatorModel> {
|
|
6
|
-
/** Set animation style or turn off, default 'slide'. */
|
|
7
|
-
animation?: 'slide' | 'lift' | 'fade' | 'none';
|
|
8
|
-
}
|
|
9
5
|
/**
|
|
10
6
|
* Top-level Component within an application, responsible for rendering a stack of
|
|
11
7
|
* pages and managing transitions between pages.
|
|
12
8
|
*/
|
|
13
|
-
export declare const Navigator: import("react").FC<
|
|
9
|
+
export declare const Navigator: import("react").FC<import("@xh/hoist/core").DefaultHoistProps<NavigatorModel>>, navigator: import("@xh/hoist/core").ElementFactory<import("@xh/hoist/core").DefaultHoistProps<NavigatorModel>>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { HoistModel, RefreshMode, RenderMode } from '@xh/hoist/core';
|
|
2
|
+
import { Swiper } from 'swiper/types';
|
|
3
3
|
import '@xh/hoist/mobile/register';
|
|
4
4
|
import { PageConfig, PageModel } from './PageModel';
|
|
5
5
|
export interface NavigatorConfig {
|
|
@@ -10,10 +10,13 @@ export interface NavigatorConfig {
|
|
|
10
10
|
* Viewing of each page will be tracked with the `oncePerSession` flag, to avoid duplication.
|
|
11
11
|
*/
|
|
12
12
|
track?: boolean;
|
|
13
|
-
/** True to enable 'swipe to go back' functionality. */
|
|
14
|
-
swipeToGoBack?: boolean;
|
|
15
13
|
/** True to enable 'pull down to refresh' functionality. */
|
|
16
14
|
pullDownToRefresh?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Time (in milliseconds) for the transition between pages on route change.
|
|
17
|
+
* Defaults to 500.
|
|
18
|
+
*/
|
|
19
|
+
transitionMs?: number;
|
|
17
20
|
/**
|
|
18
21
|
* Strategy for rendering pages. Can be set per-page via `PageModel.renderMode`.
|
|
19
22
|
* See enum for description of supported modes.
|
|
@@ -26,7 +29,7 @@ export interface NavigatorConfig {
|
|
|
26
29
|
refreshMode?: RefreshMode;
|
|
27
30
|
}
|
|
28
31
|
/**
|
|
29
|
-
* Model for handling stack-based navigation between
|
|
32
|
+
* Model for handling stack-based navigation between pages.
|
|
30
33
|
* Provides support for routing based navigation.
|
|
31
34
|
*/
|
|
32
35
|
export declare class NavigatorModel extends HoistModel {
|
|
@@ -34,22 +37,26 @@ export declare class NavigatorModel extends HoistModel {
|
|
|
34
37
|
stack: PageModel[];
|
|
35
38
|
pages: PageConfig[];
|
|
36
39
|
track: boolean;
|
|
37
|
-
swipeToGoBack: boolean;
|
|
38
40
|
pullDownToRefresh: boolean;
|
|
41
|
+
transitionMs: number;
|
|
39
42
|
renderMode: RenderMode;
|
|
40
43
|
refreshMode: RefreshMode;
|
|
41
|
-
private
|
|
44
|
+
private _swiper;
|
|
42
45
|
private _callback;
|
|
43
|
-
private
|
|
46
|
+
private _touchStartX;
|
|
44
47
|
get activePageId(): string;
|
|
45
48
|
get activePage(): PageModel;
|
|
46
|
-
|
|
49
|
+
get activePageIdx(): number;
|
|
50
|
+
get allowSlideNext(): boolean;
|
|
51
|
+
get allowSlidePrev(): boolean;
|
|
52
|
+
constructor({ pages, track, pullDownToRefresh, transitionMs, renderMode, refreshMode }: NavigatorConfig);
|
|
47
53
|
/**
|
|
48
54
|
* @param callback - function to execute (once) after the next page transition.
|
|
49
55
|
*/
|
|
50
56
|
setCallback(callback: () => void): void;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
57
|
+
/** @internal */
|
|
58
|
+
setSwiper(swiper: Swiper): void;
|
|
59
|
+
/** @internal */
|
|
54
60
|
onPageChange: () => void;
|
|
61
|
+
private onRouteChange;
|
|
55
62
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import './GestureRefresh.scss';
|
|
2
|
+
import { GestureRefreshModel } from './GestureRefreshModel';
|
|
3
|
+
/**
|
|
4
|
+
* Wrap the Navigator with gesture that triggers a refresh by pulling down.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const gestureRefresh: import("@xh/hoist/core").ElementFactory<import("@xh/hoist/core").DefaultHoistProps<GestureRefreshModel>>;
|
package/build/types/mobile/cmp/navigator/impl/{swipe/SwiperModel.d.ts → GestureRefreshModel.d.ts}
RENAMED
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import { HoistModel } from '@xh/hoist/core';
|
|
2
|
-
import './Swiper.scss';
|
|
3
2
|
/**
|
|
4
3
|
* @internal
|
|
5
4
|
*/
|
|
6
|
-
export declare class
|
|
5
|
+
export declare class GestureRefreshModel extends HoistModel {
|
|
7
6
|
navigatorModel: any;
|
|
8
|
-
backProgress: any;
|
|
9
7
|
refreshProgress: any;
|
|
10
|
-
get backStarted(): boolean;
|
|
11
|
-
get backCompleted(): boolean;
|
|
12
|
-
backStart(): void;
|
|
13
|
-
backEnd(): void;
|
|
14
8
|
get refreshStarted(): boolean;
|
|
15
9
|
get refreshCompleted(): boolean;
|
|
16
10
|
refreshStart(): void;
|
|
@@ -19,5 +13,4 @@ export declare class SwiperModel extends HoistModel {
|
|
|
19
13
|
onDragStart: (e: any) => void;
|
|
20
14
|
onDrag: (e: any) => void;
|
|
21
15
|
onDragEnd: (e: any) => void;
|
|
22
|
-
isDraggingChild(e: any, dir: any): boolean;
|
|
23
16
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
4
|
+
export declare function hasScrollableParent(e: TouchEvent, axis: 'horizontal' | 'vertical'): boolean;
|
|
5
|
+
export declare function findScrollableParent(e: TouchEvent, axis: 'horizontal' | 'vertical'): HTMLElement;
|
|
6
|
+
export declare function isScrollableEl(el: HTMLElement, axis: 'horizontal' | 'vertical'): boolean;
|
|
7
|
+
export declare function hasDraggableParent(e: TouchEvent, direction: 'up' | 'right' | 'down' | 'left'): boolean;
|
|
8
|
+
export declare function findDraggableParent(e: TouchEvent, direction: 'up' | 'right' | 'down' | 'left'): HTMLElement;
|
|
9
|
+
export declare function isDraggableEl(el: HTMLElement, direction: 'up' | 'right' | 'down' | 'left'): boolean;
|
package/cmp/ag-grid/AgGrid.scss
CHANGED
|
@@ -26,6 +26,12 @@
|
|
|
26
26
|
.ag-floating-bottom {
|
|
27
27
|
overflow-y: hidden !important;
|
|
28
28
|
}
|
|
29
|
+
|
|
30
|
+
// Prevent the "bounce" overscroll effect for horizontal scrolling on mobile devices, as it
|
|
31
|
+
// conflicts with the drag management in the Navigator.
|
|
32
|
+
.ag-center-cols-viewport {
|
|
33
|
+
overscroll-behavior-x: none;
|
|
34
|
+
}
|
|
29
35
|
}
|
|
30
36
|
|
|
31
37
|
// Ag-Grid themes referenced here to help ensure a high enough level of specificity for our rules.
|
package/core/types/Interfaces.ts
CHANGED
|
@@ -193,6 +193,11 @@ export interface AppOptionSpec {
|
|
|
193
193
|
omit?: Thunkable<boolean>;
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
+
/**
|
|
197
|
+
* Severity levels for tracking. Default is 'INFO'.
|
|
198
|
+
*/
|
|
199
|
+
export type TrackSeverity = 'DEBUG' | 'INFO' | 'WARN';
|
|
200
|
+
|
|
196
201
|
/**
|
|
197
202
|
* Options for tracking activity on the server via TrackService.
|
|
198
203
|
*/
|
|
@@ -219,11 +224,16 @@ export interface TrackOptions {
|
|
|
219
224
|
logData?: boolean | string[];
|
|
220
225
|
|
|
221
226
|
/**
|
|
222
|
-
* Flag to indicate relative importance of activity.
|
|
223
|
-
*
|
|
227
|
+
* Flag to indicate relative importance of activity. Default 'INFO'.
|
|
228
|
+
*
|
|
229
|
+
* Allows conditional saving of messages depending on the currently active
|
|
230
|
+
* level configuration for the category/user. See HoistCore's 'TrackService' for
|
|
231
|
+
* more information.
|
|
232
|
+
*
|
|
233
|
+
* Note, errors should be tracked via {@link XH.handleException}, which
|
|
224
234
|
* will post to the server for dedicated logging if requested.
|
|
225
235
|
*/
|
|
226
|
-
severity?:
|
|
236
|
+
severity?: TrackSeverity;
|
|
227
237
|
|
|
228
238
|
/**
|
|
229
239
|
* Set to true to log this message only once during the current session. The category and
|
package/kit/onsen/index.ts
CHANGED
|
@@ -23,7 +23,6 @@ export const [button, Button] = wrappedCmp(ons.Button),
|
|
|
23
23
|
[checkbox, Checkbox] = wrappedCmp(ons.Checkbox),
|
|
24
24
|
[gestureDetector, GestureDetector] = wrappedCmp(ons.GestureDetector),
|
|
25
25
|
[input, Input] = wrappedCmp(ons.Input),
|
|
26
|
-
[navigator, Navigator] = wrappedCmp(ons.Navigator),
|
|
27
26
|
[searchInput, SearchInput] = wrappedCmp(ons.SearchInput),
|
|
28
27
|
[select, Select] = wrappedCmp(ons.Select),
|
|
29
28
|
[switchControl, SwitchControl] = wrappedCmp(ons.Switch);
|
package/kit/onsen/theme.scss
CHANGED
|
@@ -11,15 +11,10 @@
|
|
|
11
11
|
// Override styles provided in onsenui.css and onsen-css-components.css to use variable declarations
|
|
12
12
|
body.xh-app.xh-mobile {
|
|
13
13
|
// Background
|
|
14
|
-
.page,
|
|
15
|
-
.page__content,
|
|
16
|
-
.page__background,
|
|
17
14
|
.textarea {
|
|
18
15
|
background-color: var(--xh-bg);
|
|
19
16
|
}
|
|
20
17
|
|
|
21
|
-
.page--material,
|
|
22
|
-
.page--material__background,
|
|
23
18
|
.bottom-bar,
|
|
24
19
|
.tabbar {
|
|
25
20
|
background-color: var(--xh-bg-alt);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file belongs to Hoist, an application development toolkit
|
|
3
|
+
* developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
|
|
4
|
+
*
|
|
5
|
+
* Copyright © 2025 Extremely Heavy Industries Inc.
|
|
6
|
+
*/
|
|
7
|
+
import {elementFactory} from '@xh/hoist/core';
|
|
8
|
+
import {Swiper, SwiperSlide} from 'swiper/react';
|
|
9
|
+
import {EffectCreative} from 'swiper/modules';
|
|
10
|
+
import './styles.scss';
|
|
11
|
+
|
|
12
|
+
export {Swiper, SwiperSlide, EffectCreative};
|
|
13
|
+
export const swiper = elementFactory(Swiper),
|
|
14
|
+
swiperSlide = elementFactory(SwiperSlide);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file belongs to Hoist, an application development toolkit
|
|
3
|
+
* developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
|
|
4
|
+
*
|
|
5
|
+
* Copyright © 2025 Extremely Heavy Industries Inc.
|
|
6
|
+
*/
|
|
7
|
+
.xh-navigator {
|
|
8
|
+
width: 100%;
|
|
9
|
+
height: 100%;
|
|
10
|
+
|
|
11
|
+
.swiper-slide {
|
|
12
|
+
box-shadow:
|
|
13
|
+
0 0 0 1px var(--xh-border-color),
|
|
14
|
+
0 0 20px rgba(0, 0, 0, 0.3);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.div.swiper-container {
|
|
18
|
+
touch-action: pan-x;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -4,36 +4,53 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Copyright © 2025 Extremely Heavy Industries Inc.
|
|
6
6
|
*/
|
|
7
|
-
import {hoistCmp,
|
|
8
|
-
import {
|
|
7
|
+
import {hoistCmp, uses} from '@xh/hoist/core';
|
|
8
|
+
import {swiper, swiperSlide, EffectCreative} from '@xh/hoist/kit/swiper';
|
|
9
9
|
import '@xh/hoist/mobile/register';
|
|
10
|
-
import
|
|
10
|
+
import './Navigator.scss';
|
|
11
11
|
import {NavigatorModel} from './NavigatorModel';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
animation?: 'slide' | 'lift' | 'fade' | 'none';
|
|
16
|
-
}
|
|
12
|
+
import {PageModel} from './PageModel';
|
|
13
|
+
import {gestureRefresh} from './impl/GestureRefresh';
|
|
14
|
+
import {page} from './impl/Page';
|
|
17
15
|
|
|
18
16
|
/**
|
|
19
17
|
* Top-level Component within an application, responsible for rendering a stack of
|
|
20
18
|
* pages and managing transitions between pages.
|
|
21
19
|
*/
|
|
22
|
-
export const [Navigator, navigator] = hoistCmp.withFactory<
|
|
20
|
+
export const [Navigator, navigator] = hoistCmp.withFactory<NavigatorModel>({
|
|
23
21
|
displayName: 'Navigator',
|
|
24
22
|
model: uses(NavigatorModel),
|
|
25
23
|
className: 'xh-navigator',
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return
|
|
29
|
-
|
|
24
|
+
render({model, className}) {
|
|
25
|
+
const {stack, allowSlideNext, allowSlidePrev} = model;
|
|
26
|
+
return gestureRefresh(
|
|
27
|
+
swiper({
|
|
30
28
|
className,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
29
|
+
allowSlideNext,
|
|
30
|
+
allowSlidePrev,
|
|
31
|
+
slidesPerView: 1,
|
|
32
|
+
modules: [EffectCreative],
|
|
33
|
+
effect: 'creative',
|
|
34
|
+
creativeEffect: {
|
|
35
|
+
prev: {
|
|
36
|
+
shadow: true,
|
|
37
|
+
translate: ['-15%', 0, -1]
|
|
38
|
+
},
|
|
39
|
+
next: {
|
|
40
|
+
translate: ['100%', 0, 0]
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
onSwiper: swiper => model.setSwiper(swiper),
|
|
44
|
+
items: stack.map(it => {
|
|
45
|
+
const {key} = it as PageModel;
|
|
46
|
+
return swiperSlide({
|
|
47
|
+
key: `slide-${key}`,
|
|
48
|
+
item: page({
|
|
49
|
+
key: `page-${key}`,
|
|
50
|
+
model: it
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
})
|
|
37
54
|
})
|
|
38
55
|
);
|
|
39
56
|
}
|