Golden Layout is a Javascript layout manager which enables you to layout components in a web page and re-arrange them with drag and drop.
Important Note: This is the main Golden Layout website. Another Golden Layout website is https://golden-layout.com. This other website describes Version 1 of Golden Layout. The information at https://golden-layout.com may be useful to gain an initial understanding of Golden Layout however please note that it is now out of date.
Golden Layout is shipped via NPM. Use the following commands to install it into an application package:
npm i golden-layout
The source can be installed by cloning the repository at:
https://github.com/golden-layout/golden-layout
To build the distribution locally, open a shell at the golden-layout directory/folder and run the following commands:
npm install or npm ci (recommended) to install required dependenciesnpm run build to generate the distribution (dist subfolder). This script will:
lib and dist foldersindex.d.ts and golden-layout-untrimmed.d.ts)dist folderNote that the lib subfolder only holds the TypeScript declaration files generated by the compiler. Generally this subfolder can be ignored. It is used during the build process to generate the rolled up TypeScript definition files.
After installing the source and building the distribution, you can build and start the apitest (demo) app to view the library in action. Use the following commands:
npm run apitest:build to just build itnpm run apitest:serve to both build and start the development server.We provide different types of single file bundles for easier consumption without toolchain in-place. To do this, run npm run build:bundles, afterwards find your bundled files in dist/bundle/.
Bundles are not built by default and are not included in the NPM package, we recommend everyone to consume the library through NPM and webpack.
The apitest app can be used to debug the Golden Layout library. Its webpack configuration will import the Golden Layout library source map, allowing debuggers to step through the library source code and place break points.
If you wish to test the library with other applications, you can link to the Golden Layout repository without having to install it into the application from NPM. This is done with the npm link command. Use the following steps:
npm link from a shell in the golden-layout source repository top level folder.npm link golden-layout from a shell in your application’s top level folder.Your application will then use the distribution in the Golden Layout repository dist subfolder. If you wish to make changes to the Golden Layout library, you will need to run the build:api to regenerate the dist folder.
Run npm install to remove the npm link.
The following information sources are available which can be used to learn how to use Golden Layout:
The structure of a Golden Layout object consists of its LayoutManager object and ContentItem objects which define the layout itself. See Structure for more details.
Golden Layout binds to components and then controls their position, size and visibility (positioning) so that they fit within a layout. There are several different ways in which Golden Layout can bind to components. The easiest method is to register a component type and then specify that component type in a component’s configuration.
See Binding Components for a full description of how Golden Layout component binding works.
Golden Layout has been designed to work with JavaScript application frameworks such as Angular and Vue. Typically these types of frameworks wrap HTML elements with their own components. Instead of an application being a tree of HTML elements, it is a tree of framework components, each of which wrap an HTML element.
To support these frameworks, Golden Layout implements ‘Virtual Components’. This allows framework components to be embedded within Golden Layout without having to use advanced framework techniques to allow the relevant framework component HTML elements to be displayed in a layout.
See Frameworks for a description and examples covering how to use Golden Layout with JavaScript application frameworks.
Within a layout structure, it is necessary to specify the size of RowOrColumn content items and their children. More.
A layout should normally resize to always fit within Golden Layout’s container element. This resizing can be configured to occur automatically or can be manually managed. More
Components can have focus. This is analagous to HTML elements having focus. Only one component can have focus at any time. More
LocationSelectors specify the location of a component in terms of a parent and a index. They can be used when adding components programatically. More
A component in a layout can be ‘popped’ out into a separate browser window. It can be then be viewed separately from the main layout. More
With version 2, Golden Layout was ported to TypeScript. Substantial changes to its feature set and API were made as part of this conversion. These changes are summarised here.