Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,32 @@ NX handles build ordering automatically via `dependsOn: ["^build"]`. The depende
- Code comments describe the current state of the code, not its history. Don't reference the fix, PR, or what changed unless that context is critical to understanding the code as it stands.
- Keep comments brief and concise.

### Public Documentation

- **Refrain from mentioning `dockview-core` in public-facing documentation.** It is
an internal module, not a supported install target. This covers the root README,
the docs site, blog posts, release notes, and the published package READMEs.
- Point consumers at `dockview` or a framework binding (`dockview-react`,
`dockview-vue`, `dockview-angular`) instead. Where a dependency graph or build
order would otherwise name it, describe the chain from `dockview` onwards.
- Only refer to `dockview-core` where its internal nature is itself the point (for
example, contributor-facing notes in this file), and say that it is internal when
you do.
- **The module system is an internal concept — don't mention it in public-facing
documentation.** Avoid "modules", "feature modules" and `registerModules` in the
surfaces listed above. Describe what the user gets and what they do ("importing
the package enables the enterprise features"), not how registration works
internally. Angular's `DockviewAngularModule` is an unrelated Angular NgModule
and is fine to name.
- **Don't enumerate the enterprise features** in READMEs or package docs. The
canonical list lives on <https://dockview.dev/enterprise>; link to it instead.
An inline list duplicates that page and drifts out of date as the feature set
changes.
- **Don't document the unlicensed behaviour.** Public docs should not say that
dockview keeps working without a valid licence key, or describe the watermark.
State that enterprise features are governed by a licence key and link to the
enterprise page; don't present the key as optional.

## Release Management

### Creating Release Notes
Expand Down
124 changes: 63 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,49 +1,54 @@
<div align="center">
<h1>dockview</h1>

<picture>
<source media="(prefers-color-scheme: dark)" srcset="packages/docs/static/img/dockview-lockup-dark.svg">
<img src="packages/docs/static/img/dockview-lockup-light.svg" alt="Dockview" width="480">
</picture>

<h1>docking engine for the web</h1>

<p>Zero dependency layout manager supporting tabs, groups, grids and splitviews. Supports React, Vue, Angular and JavaScript</p>

[![npm version](https://img.shields.io/npm/v/dockview)](https://www.npmjs.com/package/dockview)
[![npm downloads](https://img.shields.io/npm/dm/dockview)](https://www.npmjs.com/package/dockview)
[![CI](https://img.shields.io/github/actions/workflow/status/mathuo/dockview/main.yml?branch=master&label=CI)](https://github.com/mathuo/dockview/actions?query=workflow%3ACI)
[![Coverage](https://img.shields.io/sonar/coverage/mathuo_dockview?server=https%3A%2F%2Fsonarcloud.io)](https://sonarcloud.io/summary/overall?id=mathuo_dockview)
[![Quality gate](https://img.shields.io/sonar/quality_gate/mathuo_dockview?server=https%3A%2F%2Fsonarcloud.io)](https://sonarcloud.io/summary/overall?id=mathuo_dockview)
[![Bundle size](https://img.shields.io/bundlephobia/minzip/dockview?label=size)](https://bundlephobia.com/result?p=dockview)

</div>

---

[![npm version](https://badge.fury.io/js/dockview.svg)](https://www.npmjs.com/package/dockview)
[![npm](https://img.shields.io/npm/dm/dockview)](https://www.npmjs.com/package/dockview)
[![CI Build](https://github.com/mathuo/dockview/workflows/CI/badge.svg)](https://github.com/mathuo/dockview/actions?query=workflow%3ACI)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=mathuo_dockview&metric=coverage)](https://sonarcloud.io/summary/overall?id=mathuo_dockview)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=mathuo_dockview&metric=alert_status)](https://sonarcloud.io/summary/overall?id=mathuo_dockview)
[![Bundle Phobia](https://badgen.net/bundlephobia/minzip/dockview)](https://bundlephobia.com/result?p=dockview)

##

![](packages/docs/static/img/splashscreenv2.png)
![A Dockview layout showing docked, tabbed and split panels in a trading workbench](packages/docs/static/img/demo-hero.webp)

Please see the website: https://dockview.dev

## Features

- Serialization / deserialization with full layout management
- Support for split-views, grid-views and 'dockable' views
- Themeable and customizable
- Tab and Group docking / Drag n' Drop
- Touch & mobile support
- Popout Windows
- Floating Groups
- Extensive API
- Supports Shadow DOMs
- High test coverage
- Documentation website with live examples
- Transparent builds and Code Analysis
- Security at mind - verified publishing and builds through GitHub Actions
- Serialization / deserialization with full layout management
- Support for split-views, grid-views and 'dockable' views
- Themeable and customizable
- Tab and Group docking / Drag n' Drop
- Touch & mobile support
- Popout Windows
- Floating Groups
- Extensive API
- Supports Shadow DOMs
- High test coverage
- Documentation website with live examples
- Transparent builds and Code Analysis
- Security in mind - verified publishing and builds through GitHub Actions

## Packages

| Package | Description | Version |
| --- | --- | --- |
| [`dockview`](https://www.npmjs.com/package/dockview) | JavaScript, zero dependencies, full feature set out of the box | [![npm version](https://badge.fury.io/js/dockview.svg)](https://www.npmjs.com/package/dockview) |
| [`dockview-react`](https://www.npmjs.com/package/dockview-react) | React bindings (peer: `react` ≥16.8) | [![npm version](https://badge.fury.io/js/dockview-react.svg)](https://www.npmjs.com/package/dockview-react) |
| [`dockview-vue`](https://www.npmjs.com/package/dockview-vue) | Vue 3 bindings (peer: `vue` ≥3.4) | [![npm version](https://badge.fury.io/js/dockview-vue.svg)](https://www.npmjs.com/package/dockview-vue) |
| [`dockview-angular`](https://www.npmjs.com/package/dockview-angular) | Angular bindings (peer: `@angular/core` ≥21) | [![npm version](https://badge.fury.io/js/dockview-angular.svg)](https://www.npmjs.com/package/dockview-angular) |
| Package | Description | Version |
|----------------------------------------------------------------------------|--------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| [`dockview`](https://www.npmjs.com/package/dockview) | JavaScript, zero dependencies, full feature set out of the box | [![npm version](https://img.shields.io/npm/v/dockview)](https://www.npmjs.com/package/dockview) |
| [`dockview-react`](https://www.npmjs.com/package/dockview-react) | React bindings (peer: `react` 16.8–19) | [![npm version](https://img.shields.io/npm/v/dockview-react)](https://www.npmjs.com/package/dockview-react) |
| [`dockview-vue`](https://www.npmjs.com/package/dockview-vue) | Vue 3 bindings (peer: `vue` ≥3.4) | [![npm version](https://img.shields.io/npm/v/dockview-vue)](https://www.npmjs.com/package/dockview-vue) |
| [`dockview-angular`](https://www.npmjs.com/package/dockview-angular) | Angular bindings (peer: `@angular/core` ≥21.0.6) | [![npm version](https://img.shields.io/npm/v/dockview-angular)](https://www.npmjs.com/package/dockview-angular) |
| [`dockview-enterprise`](https://www.npmjs.com/package/dockview-enterprise) | Enterprise features, drop-in superset of `dockview` (commercial licence) | [![npm version](https://img.shields.io/npm/v/dockview-enterprise)](https://www.npmjs.com/package/dockview-enterprise) |

## Installation

Expand All @@ -57,62 +62,59 @@ npm install dockview-angular # Angular
## Quick Start (React)

```tsx
import { DockviewReact } from 'dockview-react';
import { DockviewReact, themeDark } from 'dockview-react';
import 'dockview-react/dist/styles/dockview.css';

const components = {
default: (props) => <div>Hello {props.params.title}</div>,
default: (props) => <div>Hello {props.params.title}</div>,
};

function App() {
const onReady = (event) => {
event.api.addPanel({
id: 'panel_1',
component: 'default',
params: { title: 'World' },
});
};

return (
<DockviewReact
className="dockview-theme-dark"
onReady={onReady}
components={components}
/>
);
const onReady = (event) => {
event.api.addPanel({
id: 'panel_1',
component: 'default',
params: { title: 'World' },
});
};

return (
<DockviewReact
theme={themeDark}
onReady={onReady}
components={components}
/>
);
}
```

For Vue and Angular examples see the [documentation](https://dockview.dev).

## Development

This project is an [NX](https://nx.dev) monorepo using [Yarn v1](https://classic.yarnpkg.com) workspaces.
This project is a monorepo using [Yarn v1](https://classic.yarnpkg.com) workspaces.

```bash
yarn install # Install dependencies
yarn build # Build all packages
yarn test # Run tests
yarn lint # Run ESLint
yarn format # Run Prettier
```

Build order is managed automatically by NX:

```
dockview-core → dockview → dockview-react
dockview-core → dockview → dockview-vue
dockview-core → dockview → dockview-angular
yarn lint # Lint all packages
yarn format # Format all packages
```

## Contributing

Contributions are welcome! Please open an [issue](https://github.com/mathuo/dockview/issues) or submit a pull request.

## License
## Licence

This repository contains packages under more than one licence. Everything is MIT
except `dockview-enterprise`, which is proprietary and governed by a commercial
licence agreement.

MIT. See [LICENSE](./LICENSE) for details.
See [LICENCE.md](./LICENCE.md) for the breakdown. Each published package ships
its own `LICENCE.md`, which is the authoritative licence for that package.

---

Want to verify our builds? Go [here](https://www.npmjs.com/package/dockview-react#user-content-provenance).
Want to verify our builds? Go [here](https://www.npmjs.com/package/dockview-react#Provenance).
46 changes: 28 additions & 18 deletions packages/dockview-angular/README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,26 @@
<div align="center">

<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/mathuo/dockview/blob/HEAD/packages/docs/static/img/dockview-lockup-dark.svg?raw=true">
<img src="https://github.com/mathuo/dockview/blob/HEAD/packages/docs/static/img/dockview-lockup-light.svg?raw=true" alt="Dockview" width="480">
</picture>

<h1>dockview-angular</h1>

<p>Angular bindings for dockview, a zero dependency layout manager supporting tabs, groups, grids and splitviews</p>

[![npm version](https://img.shields.io/npm/v/dockview-angular)](https://www.npmjs.com/package/dockview-angular)
[![npm downloads](https://img.shields.io/npm/dm/dockview-angular)](https://www.npmjs.com/package/dockview-angular)
[![CI](https://img.shields.io/github/actions/workflow/status/mathuo/dockview/main.yml?branch=master&label=CI)](https://github.com/mathuo/dockview/actions?query=workflow%3ACI)
[![Coverage](https://img.shields.io/sonar/coverage/mathuo_dockview?server=https%3A%2F%2Fsonarcloud.io)](https://sonarcloud.io/summary/overall?id=mathuo_dockview)
[![Quality gate](https://img.shields.io/sonar/quality_gate/mathuo_dockview?server=https%3A%2F%2Fsonarcloud.io)](https://sonarcloud.io/summary/overall?id=mathuo_dockview)
[![Bundle size](https://img.shields.io/bundlephobia/minzip/dockview-angular?label=size)](https://bundlephobia.com/result?p=dockview-angular)

</div>

---

[![npm version](https://badge.fury.io/js/dockview-angular.svg)](https://www.npmjs.com/package/dockview-angular)
[![npm](https://img.shields.io/npm/dm/dockview-angular)](https://www.npmjs.com/package/dockview-angular)
[![CI Build](https://github.com/mathuo/dockview/workflows/CI/badge.svg)](https://github.com/mathuo/dockview/actions?query=workflow%3ACI)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=mathuo_dockview&metric=coverage)](https://sonarcloud.io/summary/overall?id=mathuo_dockview)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=mathuo_dockview&metric=alert_status)](https://sonarcloud.io/summary/overall?id=mathuo_dockview)
[![Bundle Phobia](https://badgen.net/bundlephobia/minzip/dockview-angular)](https://bundlephobia.com/result?p=dockview-angular)

##

![](https://github.com/mathuo/dockview/blob/HEAD/packages/docs/static/img/splashscreenv2.png?raw=true)
![A Dockview layout showing docked, tabbed and split panels in a trading workbench](https://github.com/mathuo/dockview/blob/HEAD/packages/docs/static/img/demo-hero.webp?raw=true)

Please see the website: https://dockview.dev

Expand All @@ -36,11 +40,11 @@ Please see the website: https://dockview.dev
- High test coverage
- Documentation website with live examples
- Transparent builds and Code Analysis
- Security at mind - verified publishing and builds through GitHub Actions
- Security in mind - verified publishing and builds through GitHub Actions

## Quick Start

Dockview-angular has a peer dependency on `@angular/core >= 21`. Install from [npm](https://www.npmjs.com/package/dockview-angular):
Dockview-angular has a peer dependency on `@angular/core >= 21.0.6`. Install from [npm](https://www.npmjs.com/package/dockview-angular):

```
npm install dockview-angular
Expand All @@ -56,23 +60,29 @@ Use the component in your Angular template:

```typescript
import { Component } from '@angular/core';
import { DockviewModule } from 'dockview-angular';
import { DockviewReadyEvent } from 'dockview-angular';
import {
DockviewAngularModule,
DockviewReadyEvent,
themeDark,
} from 'dockview-angular';

@Component({
selector: 'app-root',
standalone: true,
imports: [DockviewModule],
imports: [DockviewAngularModule],
template: `
<div class="dockview-theme-dark" style="height: 400px">
<dockview-angular
<div style="height: 400px">
<dv-dockview
[theme]="theme"
[components]="components"
(ready)="onReady($event)"
></dockview-angular>
></dv-dockview>
</div>
`,
})
export class AppComponent {
theme = themeDark;

components = {
myComponent: /* your panel component */,
};
Expand Down
Loading
Loading