Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(new): Adds TSDoc to FileChooser #6092

Merged
merged 1 commit into from Jun 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
21 changes: 0 additions & 21 deletions new-docs/puppeteer.filechooser._constructor_.md

This file was deleted.

4 changes: 3 additions & 1 deletion new-docs/puppeteer.filechooser.accept.md
Expand Up @@ -4,6 +4,8 @@

## FileChooser.accept() method

Accept the file chooser request with given paths.

<b>Signature:</b>

```typescript
Expand All @@ -14,7 +16,7 @@ accept(filePaths: string[]): Promise<void>;

| Parameter | Type | Description |
| --- | --- | --- |
| filePaths | string\[\] | |
| filePaths | string\[\] | If some of the <code>filePaths</code> are relative paths, then they are resolved relative to the [current working directory](https://nodejs.org/api/process.html#process_process_cwd)<!-- -->. |

<b>Returns:</b>

Expand Down
2 changes: 2 additions & 0 deletions new-docs/puppeteer.filechooser.cancel.md
Expand Up @@ -4,6 +4,8 @@

## FileChooser.cancel() method

Closes the file chooser without selecting any files.

<b>Signature:</b>

```typescript
Expand Down
2 changes: 2 additions & 0 deletions new-docs/puppeteer.filechooser.ismultiple.md
Expand Up @@ -4,6 +4,8 @@

## FileChooser.isMultiple() method

Whether file chooser allow for [multiple](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#attr-multiple) file selection.

<b>Signature:</b>

```typescript
Expand Down
30 changes: 23 additions & 7 deletions new-docs/puppeteer.filechooser.md
Expand Up @@ -4,23 +4,39 @@

## FileChooser class

File choosers let you react to the page requesting for a file.

<b>Signature:</b>

```typescript
export declare class FileChooser
```

## Constructors
## Remarks

| Constructor | Modifiers | Description |
| --- | --- | --- |
| [(constructor)(element, event)](./puppeteer.filechooser._constructor_.md) | | Constructs a new instance of the <code>FileChooser</code> class |
`FileChooser` objects are returned via the `page.waitForFileChooser` method.

The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `FileChooser` class.

## Example

An example of using `FileChooser`<!-- -->:

```js
const [fileChooser] = await Promise.all([
page.waitForFileChooser(),
page.click('#upload-file-button'), // some button that triggers file selection
]);
await fileChooser.accept(['/tmp/myfile.pdf']);

```
\*\*NOTE\*\* In browsers, only one file chooser can be opened at a time. All file choosers must be accepted or canceled. Not doing so will prevent subsequent file choosers from appearing.

## Methods

| Method | Modifiers | Description |
| --- | --- | --- |
| [accept(filePaths)](./puppeteer.filechooser.accept.md) | | |
| [cancel()](./puppeteer.filechooser.cancel.md) | | |
| [isMultiple()](./puppeteer.filechooser.ismultiple.md) | | |
| [accept(filePaths)](./puppeteer.filechooser.accept.md) | | Accept the file chooser request with given paths. |
| [cancel()](./puppeteer.filechooser.cancel.md) | | Closes the file chooser without selecting any files. |
| [isMultiple()](./puppeteer.filechooser.ismultiple.md) | | Whether file chooser allow for [multiple](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#attr-multiple) file selection. |

2 changes: 1 addition & 1 deletion new-docs/puppeteer.md
Expand Up @@ -20,7 +20,7 @@
| [ElementHandle](./puppeteer.elementhandle.md) | ElementHandle represents an in-page DOM element. |
| [EventEmitter](./puppeteer.eventemitter.md) | The EventEmitter class that many Puppeteer classes extend. |
| [ExecutionContext](./puppeteer.executioncontext.md) | |
| [FileChooser](./puppeteer.filechooser.md) | |
| [FileChooser](./puppeteer.filechooser.md) | File choosers let you react to the page requesting for a file. |
| [Frame](./puppeteer.frame.md) | |
| [FrameManager](./puppeteer.framemanager.md) | |
| [HTTPRequest](./puppeteer.httprequest.md) | |
Expand Down
31 changes: 31 additions & 0 deletions src/common/FileChooser.ts
Expand Up @@ -18,11 +18,31 @@ import { ElementHandle } from './JSHandle';
import Protocol from '../protocol';
import { assert } from './assert';

/**
* File choosers let you react to the page requesting for a file.
* @remarks
* `FileChooser` objects are returned via the `page.waitForFileChooser` method.
* @example
* An example of using `FileChooser`:
* ```js
* const [fileChooser] = await Promise.all([
* page.waitForFileChooser(),
* page.click('#upload-file-button'), // some button that triggers file selection
* ]);
* await fileChooser.accept(['/tmp/myfile.pdf']);
* ```
* **NOTE** In browsers, only one file chooser can be opened at a time.
* All file choosers must be accepted or canceled. Not doing so will prevent
* subsequent file choosers from appearing.
*/
export class FileChooser {
private _element: ElementHandle;
private _multiple: boolean;
private _handled = false;

/**
* @internal
*/
constructor(
element: ElementHandle,
event: Protocol.Page.fileChooserOpenedPayload
Expand All @@ -31,10 +51,18 @@ export class FileChooser {
this._multiple = event.mode !== 'selectSingle';
}

/**
* Whether file chooser allow for {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#attr-multiple | multiple} file selection.
*/
isMultiple(): boolean {
return this._multiple;
}

/**
* Accept the file chooser request with given paths.
* @param filePaths - If some of the `filePaths` are relative paths,
* then they are resolved relative to the {@link https://nodejs.org/api/process.html#process_process_cwd | current working directory}.
*/
async accept(filePaths: string[]): Promise<void> {
assert(
!this._handled,
Expand All @@ -44,6 +72,9 @@ export class FileChooser {
await this._element.uploadFile(...filePaths);
}

/**
* Closes the file chooser without selecting any files.
*/
async cancel(): Promise<void> {
assert(
!this._handled,
Expand Down