@hotwired/turbo 7.1.0 → 7.2.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/README.md +5 -1
- package/dist/turbo.es2017-esm.js +1108 -617
- package/dist/turbo.es2017-umd.js +1122 -624
- package/dist/types/core/bardo.d.ts +7 -2
- package/dist/types/core/cache.d.ts +10 -0
- package/dist/types/core/drive/error_renderer.d.ts +2 -1
- package/dist/types/core/drive/form_submission.d.ts +12 -5
- package/dist/types/core/drive/head_snapshot.d.ts +3 -3
- package/dist/types/core/drive/history.d.ts +1 -1
- package/dist/types/core/drive/navigator.d.ts +1 -0
- package/dist/types/core/drive/page_renderer.d.ts +8 -5
- package/dist/types/core/drive/page_view.d.ts +8 -5
- package/dist/types/core/drive/preloader.d.ts +14 -0
- package/dist/types/core/drive/progress_bar.d.ts +1 -0
- package/dist/types/core/drive/visit.d.ts +13 -4
- package/dist/types/core/frames/frame_controller.d.ts +51 -24
- package/dist/types/core/frames/frame_redirector.d.ts +13 -10
- package/dist/types/core/frames/frame_renderer.d.ts +8 -1
- package/dist/types/core/frames/frame_view.d.ts +2 -1
- package/dist/types/core/index.d.ts +11 -3
- package/dist/types/core/native/adapter.d.ts +2 -1
- package/dist/types/core/native/browser_adapter.d.ts +17 -8
- package/dist/types/core/renderer.d.ts +11 -5
- package/dist/types/core/session.d.ts +72 -17
- package/dist/types/core/snapshot.d.ts +5 -2
- package/dist/types/core/streams/stream_actions.d.ts +4 -2
- package/dist/types/core/streams/stream_message.d.ts +2 -6
- package/dist/types/core/streams/stream_message_renderer.d.ts +7 -0
- package/dist/types/core/view.d.ts +13 -7
- package/dist/types/elements/frame_element.d.ts +10 -6
- package/dist/types/elements/index.d.ts +1 -0
- package/dist/types/elements/stream_element.d.ts +8 -1
- package/dist/types/elements/stream_source_element.d.ts +7 -0
- package/dist/types/http/fetch_request.d.ts +14 -0
- package/dist/types/http/index.d.ts +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/observers/cache_observer.d.ts +1 -1
- package/dist/types/observers/form_link_click_observer.d.ts +14 -0
- package/dist/types/observers/form_submit_observer.d.ts +2 -1
- package/dist/types/observers/link_click_observer.d.ts +5 -4
- package/dist/types/polyfills/submit-event.d.ts +1 -7
- package/dist/types/tests/functional/async_script_tests.d.ts +1 -6
- package/dist/types/tests/functional/autofocus_tests.d.ts +1 -9
- package/dist/types/tests/functional/cache_observer_tests.d.ts +1 -5
- package/dist/types/tests/functional/drive_custom_body_tests.d.ts +1 -0
- package/dist/types/tests/functional/drive_disabled_tests.d.ts +1 -9
- package/dist/types/tests/functional/drive_tests.d.ts +1 -8
- package/dist/types/tests/functional/form_mode_tests.d.ts +1 -0
- package/dist/types/tests/functional/form_submission_tests.d.ts +1 -84
- package/dist/types/tests/functional/frame_navigation_tests.d.ts +1 -7
- package/dist/types/tests/functional/frame_tests.d.ts +1 -52
- package/dist/types/tests/functional/import_tests.d.ts +1 -4
- package/dist/types/tests/functional/loading_tests.d.ts +1 -13
- package/dist/types/tests/functional/navigation_tests.d.ts +1 -38
- package/dist/types/tests/functional/pausable_rendering_tests.d.ts +1 -6
- package/dist/types/tests/functional/pausable_requests_tests.d.ts +1 -6
- package/dist/types/tests/functional/preloader_tests.d.ts +1 -0
- package/dist/types/tests/functional/rendering_tests.d.ts +1 -35
- package/dist/types/tests/functional/scroll_restoration_tests.d.ts +1 -6
- package/dist/types/tests/functional/stream_tests.d.ts +1 -6
- package/dist/types/tests/functional/visit_tests.d.ts +1 -15
- package/dist/types/tests/helpers/page.d.ts +52 -0
- package/dist/types/tests/unit/deprecated_adapter_support_test.d.ts +10 -10
- package/dist/types/tests/unit/export_tests.d.ts +5 -0
- package/dist/types/tests/unit/index.d.ts +1 -0
- package/dist/types/util.d.ts +13 -3
- package/package.json +24 -10
- package/CHANGELOG.md +0 -3
- package/dist/types/core/frames/form_interceptor.d.ts +0 -12
- package/dist/types/core/frames/link_interceptor.d.ts +0 -16
- package/dist/types/tests/functional/index.d.ts +0 -17
- package/dist/types/tests/helpers/functional_test_case.d.ts +0 -44
- package/dist/types/tests/helpers/remote_channel.d.ts +0 -10
- package/dist/types/tests/helpers/turbo_drive_test_case.d.ts +0 -21
|
@@ -1,25 +1,59 @@
|
|
|
1
1
|
import { Adapter } from "./native/adapter";
|
|
2
|
+
import { ReloadReason } from "./native/browser_adapter";
|
|
2
3
|
import { CacheObserver } from "../observers/cache_observer";
|
|
3
4
|
import { FormSubmitObserver, FormSubmitObserverDelegate } from "../observers/form_submit_observer";
|
|
4
5
|
import { FrameRedirector } from "./frames/frame_redirector";
|
|
5
6
|
import { History, HistoryDelegate } from "./drive/history";
|
|
6
7
|
import { LinkClickObserver, LinkClickObserverDelegate } from "../observers/link_click_observer";
|
|
8
|
+
import { FormLinkClickObserver, FormLinkClickObserverDelegate } from "../observers/form_link_click_observer";
|
|
7
9
|
import { Locatable } from "./url";
|
|
8
10
|
import { Navigator, NavigatorDelegate } from "./drive/navigator";
|
|
9
11
|
import { PageObserver, PageObserverDelegate } from "../observers/page_observer";
|
|
10
12
|
import { ScrollObserver } from "../observers/scroll_observer";
|
|
11
13
|
import { StreamMessage } from "./streams/stream_message";
|
|
14
|
+
import { StreamMessageRenderer } from "./streams/stream_message_renderer";
|
|
12
15
|
import { StreamObserver } from "../observers/stream_observer";
|
|
13
16
|
import { Action, Position, StreamSource } from "./types";
|
|
14
|
-
import { PageView, PageViewDelegate } from "./drive/page_view";
|
|
17
|
+
import { PageView, PageViewDelegate, PageViewRenderOptions } from "./drive/page_view";
|
|
15
18
|
import { Visit, VisitOptions } from "./drive/visit";
|
|
16
19
|
import { PageSnapshot } from "./drive/page_snapshot";
|
|
17
20
|
import { FrameElement } from "../elements/frame_element";
|
|
21
|
+
import { FrameViewRenderOptions } from "./frames/frame_view";
|
|
18
22
|
import { FetchResponse } from "../http/fetch_response";
|
|
19
|
-
|
|
20
|
-
export declare
|
|
23
|
+
import { Preloader, PreloaderDelegate } from "./drive/preloader";
|
|
24
|
+
export declare type FormMode = "on" | "off" | "optin";
|
|
25
|
+
export declare type TimingData = unknown;
|
|
26
|
+
export declare type TurboBeforeCacheEvent = CustomEvent;
|
|
27
|
+
export declare type TurboBeforeRenderEvent = CustomEvent<{
|
|
28
|
+
newBody: HTMLBodyElement;
|
|
29
|
+
} & PageViewRenderOptions>;
|
|
30
|
+
export declare type TurboBeforeVisitEvent = CustomEvent<{
|
|
31
|
+
url: string;
|
|
32
|
+
}>;
|
|
33
|
+
export declare type TurboClickEvent = CustomEvent<{
|
|
34
|
+
url: string;
|
|
35
|
+
originalEvent: MouseEvent;
|
|
36
|
+
}>;
|
|
37
|
+
export declare type TurboFrameLoadEvent = CustomEvent;
|
|
38
|
+
export declare type TurboBeforeFrameRenderEvent = CustomEvent<{
|
|
39
|
+
newFrame: FrameElement;
|
|
40
|
+
} & FrameViewRenderOptions>;
|
|
41
|
+
export declare type TurboFrameRenderEvent = CustomEvent<{
|
|
42
|
+
fetchResponse: FetchResponse;
|
|
43
|
+
}>;
|
|
44
|
+
export declare type TurboLoadEvent = CustomEvent<{
|
|
45
|
+
url: string;
|
|
46
|
+
timing: TimingData;
|
|
47
|
+
}>;
|
|
48
|
+
export declare type TurboRenderEvent = CustomEvent;
|
|
49
|
+
export declare type TurboVisitEvent = CustomEvent<{
|
|
50
|
+
url: string;
|
|
51
|
+
action: Action;
|
|
52
|
+
}>;
|
|
53
|
+
export declare class Session implements FormSubmitObserverDelegate, HistoryDelegate, FormLinkClickObserverDelegate, LinkClickObserverDelegate, NavigatorDelegate, PageObserverDelegate, PageViewDelegate, PreloaderDelegate {
|
|
21
54
|
readonly navigator: Navigator;
|
|
22
55
|
readonly history: History;
|
|
56
|
+
readonly preloader: Preloader;
|
|
23
57
|
readonly view: PageView;
|
|
24
58
|
adapter: Adapter;
|
|
25
59
|
readonly pageObserver: PageObserver;
|
|
@@ -28,11 +62,14 @@ export declare class Session implements FormSubmitObserverDelegate, HistoryDeleg
|
|
|
28
62
|
readonly formSubmitObserver: FormSubmitObserver;
|
|
29
63
|
readonly scrollObserver: ScrollObserver;
|
|
30
64
|
readonly streamObserver: StreamObserver;
|
|
65
|
+
readonly formLinkClickObserver: FormLinkClickObserver;
|
|
31
66
|
readonly frameRedirector: FrameRedirector;
|
|
67
|
+
readonly streamMessageRenderer: StreamMessageRenderer;
|
|
32
68
|
drive: boolean;
|
|
33
69
|
enabled: boolean;
|
|
34
70
|
progressBarDelay: number;
|
|
35
71
|
started: boolean;
|
|
72
|
+
formMode: FormMode;
|
|
36
73
|
start(): void;
|
|
37
74
|
disable(): void;
|
|
38
75
|
stop(): void;
|
|
@@ -43,13 +80,15 @@ export declare class Session implements FormSubmitObserverDelegate, HistoryDeleg
|
|
|
43
80
|
renderStreamMessage(message: StreamMessage | string): void;
|
|
44
81
|
clearCache(): void;
|
|
45
82
|
setProgressBarDelay(delay: number): void;
|
|
83
|
+
setFormMode(mode: FormMode): void;
|
|
46
84
|
get location(): URL;
|
|
47
85
|
get restorationIdentifier(): string;
|
|
48
86
|
historyPoppedToLocationWithRestorationIdentifier(location: URL, restorationIdentifier: string): void;
|
|
49
87
|
scrollPositionChanged(position: Position): void;
|
|
50
|
-
|
|
88
|
+
willSubmitFormLinkToLocation(link: Element, location: URL): boolean;
|
|
89
|
+
submittedFormLinkToLocation(): void;
|
|
90
|
+
willFollowLinkToLocation(link: Element, location: URL, event: MouseEvent): boolean;
|
|
51
91
|
followedLinkToLocation(link: Element, location: URL): void;
|
|
52
|
-
convertLinkWithMethodClickToFormSubmission(link: Element): false | CustomEvent<any>;
|
|
53
92
|
allowsVisitingLocationWithAction(location: URL, action?: Action): boolean;
|
|
54
93
|
visitProposedToLocation(location: URL, options: Partial<VisitOptions>): void;
|
|
55
94
|
visitStarted(visit: Visit): void;
|
|
@@ -63,25 +102,41 @@ export declare class Session implements FormSubmitObserverDelegate, HistoryDeleg
|
|
|
63
102
|
pageWillUnload(): void;
|
|
64
103
|
receivedMessageFromStream(message: StreamMessage): void;
|
|
65
104
|
viewWillCacheSnapshot(): void;
|
|
66
|
-
allowsImmediateRender({ element }: PageSnapshot,
|
|
67
|
-
viewRenderedSnapshot(
|
|
68
|
-
|
|
105
|
+
allowsImmediateRender({ element }: PageSnapshot, options: PageViewRenderOptions): boolean;
|
|
106
|
+
viewRenderedSnapshot(_snapshot: PageSnapshot, _isPreview: boolean): void;
|
|
107
|
+
preloadOnLoadLinksForView(element: Element): void;
|
|
108
|
+
viewInvalidated(reason: ReloadReason): void;
|
|
69
109
|
frameLoaded(frame: FrameElement): void;
|
|
70
110
|
frameRendered(fetchResponse: FetchResponse, frame: FrameElement): void;
|
|
71
|
-
applicationAllowsFollowingLinkToLocation(link: Element, location: URL): boolean;
|
|
111
|
+
applicationAllowsFollowingLinkToLocation(link: Element, location: URL, ev: MouseEvent): boolean;
|
|
72
112
|
applicationAllowsVisitingLocation(location: URL): boolean;
|
|
73
|
-
notifyApplicationAfterClickingLinkToLocation(link: Element, location: URL): CustomEvent<
|
|
74
|
-
|
|
75
|
-
|
|
113
|
+
notifyApplicationAfterClickingLinkToLocation(link: Element, location: URL, event: MouseEvent): CustomEvent<{
|
|
114
|
+
url: string;
|
|
115
|
+
originalEvent: MouseEvent;
|
|
116
|
+
}>;
|
|
117
|
+
notifyApplicationBeforeVisitingLocation(location: URL): CustomEvent<{
|
|
118
|
+
url: string;
|
|
119
|
+
}>;
|
|
120
|
+
notifyApplicationAfterVisitingLocation(location: URL, action: Action): CustomEvent<{
|
|
121
|
+
url: string;
|
|
122
|
+
action: Action;
|
|
123
|
+
}>;
|
|
76
124
|
notifyApplicationBeforeCachingSnapshot(): CustomEvent<any>;
|
|
77
|
-
notifyApplicationBeforeRender(newBody: HTMLBodyElement,
|
|
125
|
+
notifyApplicationBeforeRender(newBody: HTMLBodyElement, options: PageViewRenderOptions): CustomEvent<{
|
|
126
|
+
newBody: HTMLBodyElement;
|
|
127
|
+
} & PageViewRenderOptions>;
|
|
78
128
|
notifyApplicationAfterRender(): CustomEvent<any>;
|
|
79
|
-
notifyApplicationAfterPageLoad(timing?: TimingData): CustomEvent<
|
|
129
|
+
notifyApplicationAfterPageLoad(timing?: TimingData): CustomEvent<{
|
|
130
|
+
url: string;
|
|
131
|
+
timing: unknown;
|
|
132
|
+
}>;
|
|
80
133
|
notifyApplicationAfterVisitingSamePageLocation(oldURL: URL, newURL: URL): void;
|
|
81
134
|
notifyApplicationAfterFrameLoad(frame: FrameElement): CustomEvent<any>;
|
|
82
|
-
notifyApplicationAfterFrameRender(fetchResponse: FetchResponse, frame: FrameElement): CustomEvent<
|
|
83
|
-
|
|
135
|
+
notifyApplicationAfterFrameRender(fetchResponse: FetchResponse, frame: FrameElement): CustomEvent<{
|
|
136
|
+
fetchResponse: FetchResponse;
|
|
137
|
+
}>;
|
|
138
|
+
submissionIsNavigatable(form: HTMLFormElement, submitter?: HTMLElement): boolean;
|
|
139
|
+
elementIsNavigatable(element: Element): boolean;
|
|
84
140
|
getActionForLink(link: Element): Action;
|
|
85
|
-
getTargetFrameForLink(link: Element): string | undefined;
|
|
86
141
|
get snapshot(): PageSnapshot;
|
|
87
142
|
}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
export declare class Snapshot<E extends Element = Element> {
|
|
2
2
|
readonly element: E;
|
|
3
3
|
constructor(element: E);
|
|
4
|
+
get activeElement(): Element | null;
|
|
4
5
|
get children(): Element[];
|
|
5
6
|
hasAnchor(anchor: string | undefined): boolean;
|
|
6
7
|
getElementForAnchor(anchor: string | undefined): Element | null;
|
|
7
8
|
get isConnected(): boolean;
|
|
8
9
|
get firstAutofocusableElement(): Element | null;
|
|
9
|
-
get permanentElements(): Element
|
|
10
|
+
get permanentElements(): NodeListOf<Element>;
|
|
10
11
|
getPermanentElementById(id: string): Element | null;
|
|
11
|
-
getPermanentElementMapForSnapshot(snapshot: Snapshot):
|
|
12
|
+
getPermanentElementMapForSnapshot(snapshot: Snapshot): PermanentElementMap;
|
|
12
13
|
}
|
|
14
|
+
export declare function getPermanentElementById(node: ParentNode, id: string): Element | null;
|
|
15
|
+
export declare function queryPermanentElementsAll(node: ParentNode): NodeListOf<Element>;
|
|
13
16
|
export declare type PermanentElementMap = Record<string, [Element, Element]>;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { StreamElement } from "../../elements/stream_element";
|
|
2
|
-
export declare
|
|
3
|
-
|
|
2
|
+
export declare type TurboStreamAction = (this: StreamElement) => void;
|
|
3
|
+
export declare type TurboStreamActions = {
|
|
4
|
+
[action: string]: TurboStreamAction;
|
|
4
5
|
};
|
|
6
|
+
export declare const StreamActions: TurboStreamActions;
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { StreamElement } from "../../elements/stream_element";
|
|
2
1
|
export declare class StreamMessage {
|
|
3
2
|
static readonly contentType = "text/vnd.turbo-stream.html";
|
|
4
|
-
readonly
|
|
3
|
+
readonly fragment: DocumentFragment;
|
|
5
4
|
static wrap(message: StreamMessage | string): StreamMessage;
|
|
6
|
-
constructor(
|
|
7
|
-
get fragment(): DocumentFragment;
|
|
8
|
-
get foreignElements(): StreamElement[];
|
|
9
|
-
get templateChildren(): Element[];
|
|
5
|
+
constructor(fragment: DocumentFragment);
|
|
10
6
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StreamMessage } from "./stream_message";
|
|
2
|
+
import { BardoDelegate } from "../bardo";
|
|
3
|
+
export declare class StreamMessageRenderer implements BardoDelegate {
|
|
4
|
+
render({ fragment }: StreamMessage): void;
|
|
5
|
+
enteringBardo(currentPermanentElement: Element, newPermanentElement: Element): void;
|
|
6
|
+
leavingBardo(): void;
|
|
7
|
+
}
|
|
@@ -1,12 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ReloadReason } from "./native/browser_adapter";
|
|
2
|
+
import { Renderer, Render } from "./renderer";
|
|
2
3
|
import { Snapshot } from "./snapshot";
|
|
3
4
|
import { Position } from "./types";
|
|
4
|
-
export interface
|
|
5
|
-
|
|
5
|
+
export interface ViewRenderOptions<E> {
|
|
6
|
+
resume: (value: any) => void;
|
|
7
|
+
render: Render<E>;
|
|
8
|
+
}
|
|
9
|
+
export interface ViewDelegate<E extends Element, S extends Snapshot<E>> {
|
|
10
|
+
allowsImmediateRender(snapshot: S, options: ViewRenderOptions<E>): boolean;
|
|
11
|
+
preloadOnLoadLinksForView(element: Element): void;
|
|
6
12
|
viewRenderedSnapshot(snapshot: S, isPreview: boolean): void;
|
|
7
|
-
viewInvalidated(): void;
|
|
13
|
+
viewInvalidated(reason: ReloadReason): void;
|
|
8
14
|
}
|
|
9
|
-
export declare abstract class View<E extends Element, S extends Snapshot<E> = Snapshot<E>, R extends Renderer<E, S> = Renderer<E, S>, D extends ViewDelegate<S> = ViewDelegate<S>> {
|
|
15
|
+
export declare abstract class View<E extends Element, S extends Snapshot<E> = Snapshot<E>, R extends Renderer<E, S> = Renderer<E, S>, D extends ViewDelegate<E, S> = ViewDelegate<E, S>> {
|
|
10
16
|
readonly delegate: D;
|
|
11
17
|
readonly element: E;
|
|
12
18
|
renderer?: R;
|
|
@@ -25,8 +31,8 @@ export declare abstract class View<E extends Element, S extends Snapshot<E> = Sn
|
|
|
25
31
|
scrollTo(x: number, y: number): void;
|
|
26
32
|
};
|
|
27
33
|
render(renderer: R): Promise<void>;
|
|
28
|
-
invalidate(): void;
|
|
29
|
-
prepareToRenderSnapshot(renderer: R): void
|
|
34
|
+
invalidate(reason: ReloadReason): void;
|
|
35
|
+
prepareToRenderSnapshot(renderer: R): Promise<void>;
|
|
30
36
|
markAsPreview(isPreview: boolean): void;
|
|
31
37
|
renderSnapshot(renderer: R): Promise<void>;
|
|
32
38
|
finishRenderingSnapshot(renderer: R): void;
|
|
@@ -1,29 +1,33 @@
|
|
|
1
1
|
import { FetchResponse } from "../http/fetch_response";
|
|
2
|
+
import { Snapshot } from "../core/snapshot";
|
|
3
|
+
import { LinkClickObserverDelegate } from "../observers/link_click_observer";
|
|
4
|
+
import { FormSubmitObserverDelegate } from "../observers/form_submit_observer";
|
|
2
5
|
export declare enum FrameLoadingStyle {
|
|
3
6
|
eager = "eager",
|
|
4
7
|
lazy = "lazy"
|
|
5
8
|
}
|
|
6
|
-
export
|
|
9
|
+
export declare type FrameElementObservedAttribute = keyof FrameElement & ("disabled" | "complete" | "loading" | "src");
|
|
10
|
+
export interface FrameElementDelegate extends LinkClickObserverDelegate, FormSubmitObserverDelegate {
|
|
7
11
|
connect(): void;
|
|
8
12
|
disconnect(): void;
|
|
13
|
+
completeChanged(): void;
|
|
9
14
|
loadingStyleChanged(): void;
|
|
10
15
|
sourceURLChanged(): void;
|
|
11
16
|
disabledChanged(): void;
|
|
12
|
-
formSubmissionIntercepted(element: HTMLFormElement, submitter?: HTMLElement): void;
|
|
13
|
-
linkClickIntercepted(element: Element, url: string): void;
|
|
14
17
|
loadResponse(response: FetchResponse): void;
|
|
15
18
|
fetchResponseLoaded: (fetchResponse: FetchResponse) => void;
|
|
19
|
+
visitCachedSnapshot: (snapshot: Snapshot) => void;
|
|
16
20
|
isLoading: boolean;
|
|
17
21
|
}
|
|
18
22
|
export declare class FrameElement extends HTMLElement {
|
|
19
23
|
static delegateConstructor: new (element: FrameElement) => FrameElementDelegate;
|
|
20
|
-
loaded: Promise<
|
|
24
|
+
loaded: Promise<void>;
|
|
21
25
|
readonly delegate: FrameElementDelegate;
|
|
22
|
-
static get observedAttributes():
|
|
26
|
+
static get observedAttributes(): FrameElementObservedAttribute[];
|
|
23
27
|
constructor();
|
|
24
28
|
connectedCallback(): void;
|
|
25
29
|
disconnectedCallback(): void;
|
|
26
|
-
reload(): void
|
|
30
|
+
reload(): Promise<void>;
|
|
27
31
|
attributeChangedCallback(name: string): void;
|
|
28
32
|
get src(): string | null;
|
|
29
33
|
set src(value: string | null);
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
+
declare type Render = (currentElement: StreamElement) => Promise<void>;
|
|
2
|
+
export declare type TurboBeforeStreamRenderEvent = CustomEvent<{
|
|
3
|
+
newStream: StreamElement;
|
|
4
|
+
render: Render;
|
|
5
|
+
}>;
|
|
1
6
|
export declare class StreamElement extends HTMLElement {
|
|
7
|
+
static renderElement(newElement: StreamElement): Promise<void>;
|
|
2
8
|
connectedCallback(): Promise<void>;
|
|
3
9
|
private renderPromise?;
|
|
4
10
|
render(): Promise<void>;
|
|
5
11
|
disconnect(): void;
|
|
6
12
|
removeDuplicateTargetChildren(): void;
|
|
7
13
|
get duplicateChildren(): any[];
|
|
8
|
-
get performAction(): (
|
|
14
|
+
get performAction(): import("../core/streams/stream_actions").TurboStreamAction;
|
|
9
15
|
get targetElements(): any[];
|
|
10
16
|
get templateContent(): DocumentFragment;
|
|
11
17
|
get templateElement(): HTMLTemplateElement;
|
|
@@ -18,3 +24,4 @@ export declare class StreamElement extends HTMLElement {
|
|
|
18
24
|
private get targetElementsById();
|
|
19
25
|
private get targetElementsByQuery();
|
|
20
26
|
}
|
|
27
|
+
export {};
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { FetchResponse } from "./fetch_response";
|
|
2
2
|
import { FrameElement } from "../elements/frame_element";
|
|
3
|
+
export declare type TurboBeforeFetchRequestEvent = CustomEvent<{
|
|
4
|
+
fetchOptions: RequestInit;
|
|
5
|
+
url: URL;
|
|
6
|
+
resume: (value: any) => void;
|
|
7
|
+
}>;
|
|
8
|
+
export declare type TurboBeforeFetchResponseEvent = CustomEvent<{
|
|
9
|
+
fetchResponse: FetchResponse;
|
|
10
|
+
}>;
|
|
11
|
+
export declare type TurboFetchRequestErrorEvent = CustomEvent<{
|
|
12
|
+
request: FetchRequest;
|
|
13
|
+
error: Error;
|
|
14
|
+
}>;
|
|
3
15
|
export interface FetchRequestDelegate {
|
|
4
16
|
referrer?: URL;
|
|
5
17
|
prepareHeadersForRequest?(headers: FetchRequestHeaders, request: FetchRequest): void;
|
|
@@ -49,5 +61,7 @@ export declare class FetchRequest {
|
|
|
49
61
|
};
|
|
50
62
|
get isIdempotent(): boolean;
|
|
51
63
|
get abortSignal(): AbortSignal;
|
|
64
|
+
acceptResponseType(mimeType: string): void;
|
|
52
65
|
private allowRequestToBeIntercepted;
|
|
66
|
+
private willDelegateErrorHandling;
|
|
53
67
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TurboBeforeFetchRequestEvent, TurboBeforeFetchResponseEvent, TurboFetchRequestErrorEvent, } from "./fetch_request";
|
package/dist/types/index.d.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LinkClickObserver, LinkClickObserverDelegate } from "./link_click_observer";
|
|
2
|
+
export declare type FormLinkClickObserverDelegate = {
|
|
3
|
+
willSubmitFormLinkToLocation(link: Element, location: URL, event: MouseEvent): boolean;
|
|
4
|
+
submittedFormLinkToLocation(link: Element, location: URL, form: HTMLFormElement): void;
|
|
5
|
+
};
|
|
6
|
+
export declare class FormLinkClickObserver implements LinkClickObserverDelegate {
|
|
7
|
+
readonly linkClickObserver: LinkClickObserver;
|
|
8
|
+
readonly delegate: FormLinkClickObserverDelegate;
|
|
9
|
+
constructor(delegate: FormLinkClickObserverDelegate, element: HTMLElement);
|
|
10
|
+
start(): void;
|
|
11
|
+
stop(): void;
|
|
12
|
+
willFollowLinkToLocation(link: Element, location: URL, originalEvent: MouseEvent): boolean;
|
|
13
|
+
followedLinkToLocation(link: Element, location: URL): void;
|
|
14
|
+
}
|
|
@@ -4,8 +4,9 @@ export interface FormSubmitObserverDelegate {
|
|
|
4
4
|
}
|
|
5
5
|
export declare class FormSubmitObserver {
|
|
6
6
|
readonly delegate: FormSubmitObserverDelegate;
|
|
7
|
+
readonly eventTarget: EventTarget;
|
|
7
8
|
started: boolean;
|
|
8
|
-
constructor(delegate: FormSubmitObserverDelegate);
|
|
9
|
+
constructor(delegate: FormSubmitObserverDelegate, eventTarget: EventTarget);
|
|
9
10
|
start(): void;
|
|
10
11
|
stop(): void;
|
|
11
12
|
submitCaptured: () => void;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
export interface LinkClickObserverDelegate {
|
|
2
|
-
willFollowLinkToLocation(link: Element, location: URL): boolean;
|
|
2
|
+
willFollowLinkToLocation(link: Element, location: URL, event: MouseEvent): boolean;
|
|
3
3
|
followedLinkToLocation(link: Element, location: URL): void;
|
|
4
4
|
}
|
|
5
5
|
export declare class LinkClickObserver {
|
|
6
6
|
readonly delegate: LinkClickObserverDelegate;
|
|
7
|
+
readonly eventTarget: EventTarget;
|
|
7
8
|
started: boolean;
|
|
8
|
-
constructor(delegate: LinkClickObserverDelegate);
|
|
9
|
+
constructor(delegate: LinkClickObserverDelegate, eventTarget: EventTarget);
|
|
9
10
|
start(): void;
|
|
10
11
|
stop(): void;
|
|
11
12
|
clickCaptured: () => void;
|
|
12
|
-
clickBubbled: (event:
|
|
13
|
+
clickBubbled: (event: Event) => void;
|
|
13
14
|
clickEventIsSignificant(event: MouseEvent): boolean;
|
|
14
|
-
findLinkFromClickTarget(target: EventTarget | null):
|
|
15
|
+
findLinkFromClickTarget(target: EventTarget | null): HTMLAnchorElement | null | undefined;
|
|
15
16
|
getLocationForLink(link: Element): URL;
|
|
16
17
|
}
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
|
|
2
|
-
form?: HTMLFormElement;
|
|
3
|
-
type?: string;
|
|
4
|
-
};
|
|
5
|
-
declare const submittersByForm: WeakMap<HTMLFormElement, HTMLElement>;
|
|
6
|
-
declare function findSubmitterFromClickTarget(target: EventTarget | null): FormSubmitter | null;
|
|
7
|
-
declare function clickCaptured(event: Event): void;
|
|
1
|
+
export {};
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare class AsyncScriptTests extends TurboDriveTestCase {
|
|
3
|
-
setup(): Promise<void>;
|
|
4
|
-
"test does not emit turbo:load when loaded asynchronously after DOMContentLoaded"(): Promise<void>;
|
|
5
|
-
"test following a link when loaded asynchronously after DOMContentLoaded"(): Promise<void>;
|
|
6
|
-
}
|
|
1
|
+
export {};
|
|
@@ -1,9 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare class AutofocusTests extends TurboDriveTestCase {
|
|
3
|
-
setup(): Promise<void>;
|
|
4
|
-
"test autofocus first autofocus element on load"(): Promise<void>;
|
|
5
|
-
"test autofocus first [autofocus] element on visit"(): Promise<void>;
|
|
6
|
-
"test navigating a frame with a descendant link autofocuses [autofocus]:first-of-type"(): Promise<void>;
|
|
7
|
-
"test navigating a frame with a link targeting the frame autofocuses [autofocus]:first-of-type"(): Promise<void>;
|
|
8
|
-
"test navigating a frame with a turbo-frame targeting the frame autofocuses [autofocus]:first-of-type"(): Promise<void>;
|
|
9
|
-
}
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,9 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare class DriveDisabledTests extends TurboDriveTestCase {
|
|
3
|
-
path: string;
|
|
4
|
-
setup(): Promise<void>;
|
|
5
|
-
"test drive disabled by default; click normal link"(): Promise<void>;
|
|
6
|
-
"test drive disabled by default; click link inside data-turbo='true'"(): Promise<void>;
|
|
7
|
-
"test drive disabled by default; submit form inside data-turbo='true'"(): Promise<void>;
|
|
8
|
-
get formSubmitted(): Promise<boolean>;
|
|
9
|
-
}
|
|
1
|
+
export {};
|
|
@@ -1,8 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare class DriveTests extends TurboDriveTestCase {
|
|
3
|
-
path: string;
|
|
4
|
-
setup(): Promise<void>;
|
|
5
|
-
"test drive enabled by default; click normal link"(): Promise<void>;
|
|
6
|
-
"test drive to external link"(): Promise<void>;
|
|
7
|
-
"test drive enabled by default; click link inside data-turbo='false'"(): Promise<void>;
|
|
8
|
-
}
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,84 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare class FormSubmissionTests extends TurboDriveTestCase {
|
|
3
|
-
setup(): Promise<void>;
|
|
4
|
-
"test standard form submission renders a progress bar"(): Promise<void>;
|
|
5
|
-
"test form submission with confirmation confirmed"(): Promise<void>;
|
|
6
|
-
"test form submission with confirmation cancelled"(): Promise<void>;
|
|
7
|
-
"test from submission with confirmation overriden"(): Promise<void>;
|
|
8
|
-
"test standard form submission does not render a progress bar before expiring the delay"(): Promise<void>;
|
|
9
|
-
"test standard form submission with redirect response"(): Promise<void>;
|
|
10
|
-
"test standard POST form submission events"(): Promise<void>;
|
|
11
|
-
"test standard POST form submission merges values from both searchParams and body"(): Promise<void>;
|
|
12
|
-
"test standard POST form submission toggles submitter [disabled] attribute"(): Promise<void>;
|
|
13
|
-
"test standard GET form submission"(): Promise<void>;
|
|
14
|
-
"test standard GET form submission events"(): Promise<void>;
|
|
15
|
-
"test standard GET form submission does not incorporate the current page's URLSearchParams values into the submission"(): Promise<void>;
|
|
16
|
-
"test standard GET form submission does not merge values into the [action] attribute"(): Promise<void>;
|
|
17
|
-
"test standard GET form submission omits the [action] value's URLSearchParams from the submission"(): Promise<void>;
|
|
18
|
-
"test standard GET form submission toggles submitter [disabled] attribute"(): Promise<void>;
|
|
19
|
-
"test standard GET form submission appending keys"(): Promise<void>;
|
|
20
|
-
"test standard form submission with empty created response"(): Promise<void>;
|
|
21
|
-
"test standard form submission with empty no-content response"(): Promise<void>;
|
|
22
|
-
"test standard POST form submission with multipart/form-data enctype"(): Promise<void>;
|
|
23
|
-
"test standard GET form submission ignores enctype"(): Promise<void>;
|
|
24
|
-
"test standard POST form submission without an enctype"(): Promise<void>;
|
|
25
|
-
"test no-action form submission with single parameter"(): Promise<void>;
|
|
26
|
-
"test no-action form submission with multiple parameters"(): Promise<void>;
|
|
27
|
-
"test no-action form submission submitter parameters"(): Promise<void>;
|
|
28
|
-
"test input named action with no action attribute"(): Promise<void>;
|
|
29
|
-
"test input named action with action attribute"(): Promise<void>;
|
|
30
|
-
"test invalid form submission with unprocessable entity status"(): Promise<void>;
|
|
31
|
-
"test invalid form submission with long form"(): Promise<void>;
|
|
32
|
-
"test invalid form submission with server error status"(): Promise<void>;
|
|
33
|
-
"test submitter form submission reads button attributes"(): Promise<void>;
|
|
34
|
-
"test submitter POST form submission with multipart/form-data formenctype"(): Promise<void>;
|
|
35
|
-
"test submitter GET submission from submitter with data-turbo-frame"(): Promise<void>;
|
|
36
|
-
"test submitter POST submission from submitter with data-turbo-frame"(): Promise<void>;
|
|
37
|
-
"test frame form GET submission from submitter with data-turbo-frame=_top"(): Promise<void>;
|
|
38
|
-
"test frame form POST submission from submitter with data-turbo-frame=_top"(): Promise<void>;
|
|
39
|
-
"test frame POST form targetting frame submission"(): Promise<void>;
|
|
40
|
-
"test frame POST form targetting frame toggles submitter's [disabled] attribute"(): Promise<void>;
|
|
41
|
-
"test frame GET form targetting frame submission"(): Promise<void>;
|
|
42
|
-
"test frame GET form targetting frame toggles submitter's [disabled] attribute"(): Promise<void>;
|
|
43
|
-
"test frame form GET submission from submitter referencing another frame"(): Promise<void>;
|
|
44
|
-
"test frame form POST submission from submitter referencing another frame"(): Promise<void>;
|
|
45
|
-
"test frame form submission with redirect response"(): Promise<void>;
|
|
46
|
-
"test frame form submission toggles the ancestor frame's [aria-busy] attribute"(): Promise<void>;
|
|
47
|
-
"test frame form submission toggles the target frame's [aria-busy] attribute"(): Promise<void>;
|
|
48
|
-
"test frame form submission with empty created response"(): Promise<void>;
|
|
49
|
-
"test frame form submission with empty no-content response"(): Promise<void>;
|
|
50
|
-
"test frame form submission within a frame submits the Turbo-Frame header"(): Promise<void>;
|
|
51
|
-
"test invalid frame form submission with unprocessable entity status"(): Promise<void>;
|
|
52
|
-
"test invalid frame form submission with internal server errror status"(): Promise<void>;
|
|
53
|
-
"test frame form submission with stream response"(): Promise<void>;
|
|
54
|
-
"test frame form submission with HTTP verb other than GET or POST"(): Promise<void>;
|
|
55
|
-
"test frame form submission with [data-turbo=false] on the form"(): Promise<void>;
|
|
56
|
-
"test frame form submission with [data-turbo=false] on the submitter"(): Promise<void>;
|
|
57
|
-
"test frame form submission ignores submissions with their defaultPrevented"(): Promise<void>;
|
|
58
|
-
"test form submission with [data-turbo=false] on the form"(): Promise<void>;
|
|
59
|
-
"test form submission with [data-turbo=false] on the submitter"(): Promise<void>;
|
|
60
|
-
"test form submission skipped within method=dialog"(): Promise<void>;
|
|
61
|
-
"test form submission skipped with submitter formmethod=dialog"(): Promise<void>;
|
|
62
|
-
"test form submission targetting frame skipped within method=dialog"(): Promise<void>;
|
|
63
|
-
"test form submission targetting frame skipped with submitter formmethod=dialog"(): Promise<void>;
|
|
64
|
-
"test form submission targets disabled frame"(): Promise<void>;
|
|
65
|
-
"test form submission targeting a frame submits the Turbo-Frame header"(): Promise<void>;
|
|
66
|
-
"test link method form submission inside frame"(): Promise<void>;
|
|
67
|
-
"test link method form submission inside frame with data-turbo-frame=_top"(): Promise<void>;
|
|
68
|
-
"test link method form submission inside frame with data-turbo-frame target"(): Promise<void>;
|
|
69
|
-
"test stream link method form submission inside frame"(): Promise<void>;
|
|
70
|
-
"test link method form submission within form inside frame"(): Promise<void>;
|
|
71
|
-
"test link method form submission inside frame with confirmation confirmed"(): Promise<void>;
|
|
72
|
-
"test link method form submission inside frame with confirmation cancelled"(): Promise<void>;
|
|
73
|
-
"test link method form submission outside frame"(): Promise<void>;
|
|
74
|
-
"test stream link method form submission outside frame"(): Promise<void>;
|
|
75
|
-
"test link method form submission within form outside frame"(): Promise<void>;
|
|
76
|
-
"test stream link method form submission within form outside frame"(): Promise<void>;
|
|
77
|
-
"test turbo:before-fetch-request fires on the form element"(): Promise<void>;
|
|
78
|
-
"test turbo:before-fetch-response fires on the form element"(): Promise<void>;
|
|
79
|
-
"test POST to external action ignored"(): Promise<void>;
|
|
80
|
-
"test POST to external action within frame ignored"(): Promise<void>;
|
|
81
|
-
"test POST to external action targetting frame ignored"(): Promise<void>;
|
|
82
|
-
get formSubmitStarted(): Promise<boolean>;
|
|
83
|
-
get formSubmitEnded(): Promise<boolean>;
|
|
84
|
-
}
|
|
1
|
+
export {};
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare class FrameNavigationTests extends TurboDriveTestCase {
|
|
3
|
-
setup(): Promise<void>;
|
|
4
|
-
"test frame navigation with descendant link"(): Promise<void>;
|
|
5
|
-
"test frame navigation with self link"(): Promise<void>;
|
|
6
|
-
"test frame navigation with exterior link"(): Promise<void>;
|
|
7
|
-
}
|
|
1
|
+
export {};
|