## class: `WyFilesList`, `wy-files-list`

Container that renders files either in a grid or a table (list) view and proxies file events.

**Used sub components:**

*   [`<wy-file-grid>`](./wy-file-grid)
*   [`<wy-file-table>`](./wy-file-table)
*   [`<wy-preview>`](./wy-preview)
*   [`<wy-empty>`](./wy-empty)
*   [`<wy-icon>`](./ui/wy-icon)
*   [`<wy-progress-circular>`](./ui/wy-progress-circular)

### Fields

| Name          | Type                       | Default                             | Description                                                     | Inherited From        |
| ------------- | -------------------------- | ----------------------------------- | --------------------------------------------------------------- | --------------------- |
| `order`       | `FileOrderType`            | `{ by: "name", descending: false }` | File order in the list. Order by combined with direction.       |                       |
| `view`        | `FileViewType`             | `"list"`                            | The view for showing the file list.                             |                       |
| `showTrashed` | `boolean`                  | `false`                             | Enable showing trashed files.                                   |                       |
| `app`         | `AppType \| undefined`     |                                     | The app data.                                                   | WeavySubAppComponent  |
| `apps`        | `AppListType \| undefined` |                                     | Multiple apps data.                                             | WeavySubAppComponent  |
| `link`        | `LinkType \| undefined`    |                                     | Any provided link that should be loaded, shown and highlighted. | WeavySubTypeComponent |

### Methods

| Name               | Description                                                          | Parameters                                      | Return                       | Inherited From        |
| ------------------ | -------------------------------------------------------------------- | ----------------------------------------------- | ---------------------------- | --------------------- |
| `dispatchFileOpen` | Emit a \`file-open\` event requesting preview for the supplied file. | `fileId: number, tab: "comments" \| "versions"` | `boolean`                    |                       |
| `dispatchOrder`    | Emit an \`order\` event with the provided sort order.                | `order: FileOrderType`                          | `boolean`                    |                       |
| `whenApp`          | Resolves when app data is available.                                 |                                                 | `Promise<AppType>`           | WeavySubAppComponent  |
| `whenApps`         | Resolves when multiple app data is available.                        |                                                 | `Promise<AppListType>`       | WeavySubAppComponent  |
| `whenLink`         | Resolves when a provided link is available.                          |                                                 | `Promise<LinkType>`          | WeavySubTypeComponent |
| `whenReady`        | Resolves when the component has rendered first time.                 |                                                 | `Promise<WeavySubComponent>` | WeavySubComponent     |

### Events

| Name               | Type                            | Description                                       | Inherited From    |
| ------------------ | ------------------------------- | ------------------------------------------------- | ----------------- |
| `file-open`        | `FileOpenEventType`             | Emitted when a file should be opened in preview.  |                   |
| `order`            | `OrderEventType<FileOrderType>` | Emitted when the user changes sort order.         |                   |
| `edit-name`        | `FileEditNameEventType`         | Emitted when rename mode is activated.            |                   |
| `rename`           | `FileRenameEventType`           | Emitted when a file is renamed.                   |                   |
| `trash`            | `FileTrashEventType`            | Emitted when a file is trashed.                   |                   |
| `restore`          | `FileRestoreEventType`          | Emitted when a file is restored.                  |                   |
| `delete-forever`   | `FileDeleteForeverEventType`    | Emitted when a file is permanently deleted.       |                   |
| `subscribe`        | `FileSubscribeEventType`        | Emitted when subscribe state is toggled.          |                   |
| `wy-action`        | `WyActionEventType`             | Emitted when an embed action button is triggered. |                   |
| `wy-preview-open`  | `WyPreviewOpenEventType`        | Fired when a preview overlay is about to open.    |                   |
| `wy-preview-close` | `WyPreviewCloseEventType`       | Fired when a preview overlay is closed.           |                   |
| `ready`            | `CustomEvent`                   | When the component has rendered.                  | WeavySubComponent |

### Attributes

| Name          | Field       | Inherited From |
| ------------- | ----------- | -------------- |
| `order`       | order       |                |
| `view`        | view        |                |
| `showTrashed` | showTrashed |                |

### CSS Parts

| Name              | Description                                              |
| ----------------- | -------------------------------------------------------- |
| `wy-files-list`   | Root wrapper (applies host styles from hostContentsCss). |
| `wy-pager`        | Pager anchor for infinite scrolling detection.           |
| `wy-pager-bottom` | Modifier for pager placed in the bottom.                 |

<details><summary>Private API</summary>

### Fields

| Name                        | Privacy   | Type                                                               | Default                                                                               | Description                               | Inherited From        |
| --------------------------- | --------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------- | ----------------------------------------- | --------------------- |
| `handleRealtimeFileCreated` | protected |                                                                    |                                                                                       | Handler for realtime file creation events |                       |
| `#resolveApp`               | private   | `(app: AppType) => void \| undefined`                              |                                                                                       |                                           | WeavySubAppComponent  |
| `#whenApp`                  | private   |                                                                    | `new Promise<AppType>((r) => { this.#resolveApp = r; })`                              |                                           | WeavySubAppComponent  |
| `#resolveApps`              | private   | `(apps: AppListType) => void \| undefined`                         |                                                                                       |                                           | WeavySubAppComponent  |
| `#whenApps`                 | private   |                                                                    | `new Promise<AppListType>((r) => { this.#resolveApps = r; })`                         |                                           | WeavySubAppComponent  |
| `#resolveContextDataBlobs`  | private   | `(blobs: ContextDataBlobsType) => void \| undefined`               |                                                                                       |                                           | WeavySubTypeComponent |
| `#whenContextDataBlobs`     | private   |                                                                    | `new Promise<ContextDataBlobsType>((r) => { this.#resolveContextDataBlobs = r; })`    |                                           | WeavySubTypeComponent |
| `#resolveComponentFeatures` | private   | `(componentFeatures: ComponentFeaturePolicy) => void \| undefined` |                                                                                       |                                           | WeavySubTypeComponent |
| `#whenComponentFeatures`    | private   |                                                                    | `new Promise<ComponentFeaturePolicy>((r) => { this.#resolveComponentFeatures = r; })` |                                           | WeavySubTypeComponent |
| `#resolveLink`              | private   | `(link: LinkType) => void \| undefined`                            |                                                                                       |                                           | WeavySubTypeComponent |
| `#whenLink`                 | private   |                                                                    | `new Promise<LinkType>((r) => { this.#resolveLink = r; })`                            |                                           | WeavySubTypeComponent |
| `#resolveSettings`          | private   | `(settings: WeavyComponentSettingsType) => void \| undefined`      |                                                                                       |                                           | WeavySubTypeComponent |
| `#whenSettings`             | private   |                                                                    | `new Promise<WeavyComponentSettingsType>((r) => { this.#resolveSettings = r; })`      |                                           | WeavySubTypeComponent |
| `#resolveContextId`         | private   | `(contextId: ContextIdType) => void \| undefined`                  |                                                                                       |                                           | WeavySubComponent     |
| `#whenContextId`            | private   |                                                                    | `new Promise<ContextIdType>((r) => { this.#resolveContextId = r; })`                  |                                           | WeavySubComponent     |
| `#resolveUser`              | private   | `(user: UserType) => void \| undefined`                            |                                                                                       |                                           | WeavySubComponent     |
| `#whenUser`                 | private   |                                                                    | `new Promise<UserType>((r) => { this.#resolveUser = r; })`                            |                                           | WeavySubComponent     |
| `#resolveWeavy`             | private   | `(weavy: WeavyType) => void \| undefined`                          |                                                                                       |                                           | WeavySubComponent     |
| `#whenWeavy`                | private   |                                                                    | `new Promise<WeavyType>((r) => { this.#resolveWeavy = r; })`                          |                                           | WeavySubComponent     |
| `#resolveReady`             | private   | `(component: WeavySubComponent) => void \| undefined`              |                                                                                       |                                           | WeavySubComponent     |
| `#whenReady`                | private   |                                                                    | `new Promise<WeavySubComponent>((r) => { this.#resolveReady = r; })`                  |                                           | WeavySubComponent     |

</details>

<hr/>

## Exports

| Kind                        | Name            | Declaration | Module                          | Package |
| --------------------------- | --------------- | ----------- | ------------------------------- | ------- |
| `js`                        | `WyFilesList`   | WyFilesList | lib/components/wy-files-list.ts |         |
| `custom-element-definition` | `wy-files-list` | WyFilesList | lib/components/wy-files-list.ts |         |
