123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- <script>
- import { appWindow, WebviewWindow, LogicalSize, LogicalPosition } from "@tauri-apps/api/window";
- import { open as openDialog } from "@tauri-apps/api/dialog";
- import { open } from "@tauri-apps/api/shell";
- const {
- setResizable,
- setTitle,
- maximize,
- unmaximize,
- minimize,
- unminimize,
- show,
- hide,
- setDecorations,
- setAlwaysOnTop,
- setSize,
- setMinSize,
- setMaxSize,
- setPosition,
- setFullscreen,
- setIcon,
- } = appWindow;
- export let onMessage;
- let urlValue = "https://tauri.studio";
- let resizable = true;
- let maximized = false;
- let transparent = false;
- let decorations = true;
- let alwaysOnTop = false;
- let fullscreen = false;
- let width = 900;
- let height = 700;
- let minWidth = 600;
- let minHeight = 600;
- let maxWidth = null;
- let maxHeight = null;
- let x = 100;
- let y = 100;
- let windowTitle = "Awesome Tauri Example!";
- function openUrl() {
- open(urlValue);
- }
- function setTitle_() {
- setTitle(windowTitle);
- }
- function hide_() {
- hide();
- setTimeout(show, 2000);
- }
- function minimize_() {
- minimize();
- setTimeout(unminimize, 2000);
- }
- function getIcon() {
- openDialog({
- multiple: false,
- }).then(setIcon);
- }
- function createWindow() {
- const webview = new WebviewWindow(Math.random().toString());
- webview.once('tauri://error', function () {
- onMessage("Error creating new webview")
- })
- }
- $: setResizable(resizable);
- $: maximized ? maximize() : unmaximize();
- $: setDecorations(decorations);
- $: setAlwaysOnTop(alwaysOnTop);
- $: setFullscreen(fullscreen);
- $: setSize(new LogicalSize(width, height));
- $: minWidth && minHeight ? setMinSize(new LogicalSize(minWidth, minHeight)) : setMinSize(null);
- $: maxWidth && maxHeight ? setMaxSize(new LogicalSize(maxWidth, maxHeight)) : setMaxSize(null);
- $: setPosition(new LogicalPosition(x, y));
- </script>
- <div class="flex col">
- <div>
- <label>
- <input type="checkbox" bind:checked={resizable} />
- Resizable
- </label>
- <label>
- <input type="checkbox" bind:checked={maximized} />
- Maximize
- </label>
- <button title="Unminimizes after 2 seconds" on:click={minimize_}>
- Minimize
- </button>
- <button title="Visible again after 2 seconds" on:click={hide_}>
- Hide
- </button>
- <label>
- <input type="checkbox" bind:checked={transparent} />
- Transparent
- </label>
- <label>
- <input type="checkbox" bind:checked={decorations} />
- Has decorations
- </label>
- <label>
- <input type="checkbox" bind:checked={alwaysOnTop} />
- Always on top
- </label>
- <label>
- <input type="checkbox" bind:checked={fullscreen} />
- Fullscreen
- </label>
- <button on:click={getIcon}> Change icon </button>
- </div>
- <div>
- <div class="window-controls flex flex-row">
- <div class="flex col grow">
- <div>
- X
- <input type="number" bind:value={x} min="0" />
- </div>
- <div>
- Y
- <input type="number" bind:value={y} min="0" />
- </div>
- </div>
- <div class="flex col grow">
- <div>
- Width
- <input type="number" bind:value={width} min="400" />
- </div>
- <div>
- Height
- <input type="number" bind:value={height} min="400" />
- </div>
- </div>
- <div class="flex col grow">
- <div>
- Min width
- <input type="number" bind:value={minWidth} />
- </div>
- <div>
- Min height
- <input type="number" bind:value={minHeight} />
- </div>
- </div>
- <div class="flex col grow">
- <div>
- Max width
- <input type="number" bind:value={maxWidth} min="400" />
- </div>
- <div>
- Max height
- <input type="number" bind:value={maxHeight} min="400" />
- </div>
- </div>
- </div>
- </div>
- </div>
- <form style="margin-top: 24px" on:submit|preventDefault={setTitle_}>
- <input id="title" bind:value={windowTitle} />
- <button class="button" type="submit">Set title</button>
- </form>
- <form style="margin-top: 24px" on:submit|preventDefault={openUrl}>
- <input id="url" bind:value={urlValue} />
- <button class="button" id="open-url"> Open URL </button>
- </form>
- <button class="button" on:click={createWindow}>New window</button>
- <style>
- .flex-row {
- flex-direction: row;
- }
- .grow {
- flex-grow: 1;
- }
- .window-controls input {
- width: 50px;
- }
- </style>
|