@qwik.dev/core 2.0.0-beta.4 → 2.0.0-beta.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backpatch/index.d.ts +2 -0
- package/dist/backpatch/index.mjs +5 -0
- package/dist/backpatch/package.json +8 -0
- package/dist/backpatch-executor.debug.js +59 -0
- package/dist/backpatch-executor.js +1 -0
- package/dist/build/package.json +1 -1
- package/dist/cli.mjs +12974 -0
- package/dist/core-internal.d.ts +1579 -818
- package/dist/core.min.mjs +9 -1
- package/dist/core.mjs +14777 -9194
- package/dist/core.mjs.map +1 -1
- package/dist/core.prod.mjs +10480 -5372
- package/dist/insights/index.qwik.mjs +82 -71
- package/dist/insights/vite/index.mjs +79 -81
- package/dist/loader/index.mjs +2 -2
- package/dist/loader/package.json +1 -1
- package/dist/optimizer.d.ts +78 -295
- package/dist/optimizer.mjs +2948 -4088
- package/dist/out-of-order-executor.debug.js +140 -0
- package/dist/out-of-order-executor.js +1 -0
- package/dist/preloader.mjs +172 -192
- package/dist/qwikloader.debug.js +403 -244
- package/dist/qwikloader.js +1 -1
- package/dist/server-modules.d.ts +1 -0
- package/dist/server.d.ts +54 -249
- package/dist/server.mjs +2332 -1407
- package/dist/server.prod.mjs +3844 -0
- package/dist/starters/adapters/aws-lambda/adapters/aws-lambda/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/aws-lambda/package.json +3 -2
- package/dist/starters/adapters/aws-lambda/src/entry_aws-lambda.tsx +2 -6
- package/dist/starters/adapters/azure-swa/adapters/azure-swa/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/azure-swa/package.json +3 -2
- package/dist/starters/adapters/azure-swa/src/entry.azure-swa.tsx +2 -3
- package/dist/starters/adapters/bun/adapters/bun/{vite.config.mts → vite.config.ts} +4 -4
- package/dist/starters/adapters/bun/package.json +3 -2
- package/dist/starters/adapters/bun/src/entry.bun.ts +37 -10
- package/dist/starters/adapters/cloud-run/adapters/cloud-run/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/cloud-run/package.json +3 -2
- package/dist/starters/adapters/cloud-run/src/entry.cloud-run.tsx +23 -7
- package/dist/starters/adapters/cloudflare-pages/adapters/cloudflare-pages/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/cloudflare-pages/package.json +3 -2
- package/dist/starters/adapters/cloudflare-pages/src/entry.cloudflare-pages.tsx +2 -3
- package/dist/starters/adapters/cloudflare-workers/README.md +52 -0
- package/dist/starters/adapters/cloudflare-workers/adapters/cloudflare-workers/vite.config.ts +15 -0
- package/dist/starters/adapters/cloudflare-workers/gitignore +3 -0
- package/dist/starters/adapters/cloudflare-workers/package.json +31 -0
- package/dist/starters/adapters/cloudflare-workers/public/.assetsignore +4 -0
- package/dist/starters/adapters/cloudflare-workers/public/_headers +11 -0
- package/dist/starters/adapters/cloudflare-workers/public/_redirects +1 -0
- package/dist/starters/adapters/cloudflare-workers/src/entry.cloudflare-pages.tsx +22 -0
- package/dist/starters/adapters/cloudflare-workers/worker-configuration.d.ts +5 -0
- package/dist/starters/adapters/cloudflare-workers/wrangler.jsonc +41 -0
- package/dist/starters/adapters/deno/adapters/deno/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/deno/package.json +3 -2
- package/dist/starters/adapters/deno/src/entry.deno.ts +43 -10
- package/dist/starters/adapters/express/adapters/express/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/express/package.json +4 -3
- package/dist/starters/adapters/express/src/entry.express.tsx +22 -7
- package/dist/starters/adapters/fastify/adapters/fastify/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/fastify/package.json +5 -4
- package/dist/starters/adapters/fastify/src/entry.fastify.tsx +21 -1
- package/dist/starters/adapters/fastify/src/plugins/fastify-qwik.ts +11 -4
- package/dist/starters/adapters/firebase/adapters/firebase/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/firebase/package.json +3 -2
- package/dist/starters/adapters/firebase/src/entry-firebase.tsx +2 -3
- package/dist/starters/adapters/netlify-edge/adapters/netlify-edge/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/netlify-edge/package.json +5 -4
- package/dist/starters/adapters/netlify-edge/src/entry.netlify-edge.tsx +2 -3
- package/dist/starters/adapters/node-server/adapters/node-server/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/node-server/package.json +3 -2
- package/dist/starters/adapters/node-server/src/entry.node-server.tsx +22 -6
- package/dist/starters/adapters/{static/adapters/static/vite.config.mts → ssg/adapters/ssg/vite.config.ts} +4 -4
- package/dist/starters/adapters/ssg/package.json +20 -0
- package/dist/starters/adapters/vercel-edge/README.md +2 -2
- package/dist/starters/adapters/vercel-edge/adapters/vercel-edge/{vite.config.mts → vite.config.ts} +3 -3
- package/dist/starters/adapters/vercel-edge/package.json +3 -2
- package/dist/starters/adapters/vercel-edge/src/entry.vercel-edge.tsx +2 -3
- package/dist/starters/adapters/vercel-edge/vercel.json +1 -1
- package/dist/starters/features/auth/package.json +1 -1
- package/dist/starters/features/compiled-i18n/package.json +37 -0
- package/dist/starters/features/compiled-i18n/src/components/locale-selector/locale-selector.tsx +30 -0
- package/dist/starters/features/compiled-i18n/src/entry.ssr.tsx +31 -0
- package/dist/starters/features/compiled-i18n/src/routes/plugin@compiled-i18n.ts +28 -0
- package/dist/starters/features/csr/index.html +27 -0
- package/dist/starters/features/csr/package.json +29 -0
- package/dist/starters/features/csr/src/root.tsx +15 -0
- package/dist/starters/features/csr/vite.config.ts +13 -0
- package/dist/starters/features/cypress/src/actions/example.action.ts +5 -0
- package/dist/starters/features/cypress/src/components/example/example.cy.tsx +50 -8
- package/dist/starters/features/cypress/src/components/example/example.tsx +13 -3
- package/dist/starters/features/cypress/src/loaders/example.loader.ts +5 -0
- package/dist/starters/features/drizzle/package.json +1 -1
- package/dist/starters/features/pandacss/package.json +1 -1
- package/dist/starters/features/postcss/postcss.config.js +1 -1
- package/dist/starters/features/storybook/.storybook/tsconfig.json +0 -1
- package/dist/starters/features/styled-vanilla-extract/package.json +2 -1
- package/dist/starters/features/tailwind/package.json +2 -2
- package/dist/starters/features/tailwind/prettier.config.js +10 -0
- package/dist/starters/features/tailwind-v3/package.json +1 -1
- package/dist/starters/features/tailwind-v3/prettier.config.js +10 -0
- package/dist/starters/features/vitest/package.json +1 -1
- package/dist/testing/index.d.ts +1000 -7
- package/dist/testing/index.mjs +16487 -11656
- package/dist/testing/package.json +1 -1
- package/dist/worker/index.d.mts +21 -0
- package/dist/worker/index.mjs +251 -0
- package/dist/worker/package.json +9 -0
- package/dist/worker/worker.js +13 -0
- package/dist/worker/worker.node.js +15 -0
- package/dist/worker/worker.shared.js +63 -0
- package/handlers.mjs +21 -1
- package/package.json +40 -56
- package/public.d.ts +12 -2
- package/{qwik-cli.cjs → qwik-cli.mjs} +1 -1
- package/server.d.ts +2 -0
- package/worker.d.ts +2 -0
- package/bindings/qwik.darwin-arm64.node +0 -0
- package/bindings/qwik.darwin-x64.node +0 -0
- package/bindings/qwik.linux-x64-gnu.node +0 -0
- package/bindings/qwik.wasm.cjs +0 -471
- package/bindings/qwik.wasm.mjs +0 -464
- package/bindings/qwik.win32-x64-msvc.node +0 -0
- package/bindings/qwik_wasm_bg.wasm +0 -0
- package/dist/build/index.cjs +0 -35
- package/dist/build/index.cjs.map +0 -7
- package/dist/build/index.dev.cjs +0 -37
- package/dist/build/index.dev.cjs.map +0 -7
- package/dist/build/index.prod.cjs +0 -37
- package/dist/build/index.prod.cjs.map +0 -7
- package/dist/cli.cjs +0 -5545
- package/dist/core.cjs +0 -11870
- package/dist/core.cjs.map +0 -1
- package/dist/core.prod.cjs +0 -5723
- package/dist/insights/index.qwik.cjs +0 -1
- package/dist/insights/vite/index.cjs +0 -1
- package/dist/loader/index.cjs +0 -4
- package/dist/optimizer.cjs +0 -4020
- package/dist/preloader.cjs +0 -269
- package/dist/server.cjs +0 -3040
- package/dist/starters/adapters/static/package.json +0 -19
- package/dist/starters/features/localize/package.json +0 -37
- package/dist/starters/features/localize/src/entry.ssr.tsx +0 -30
- package/dist/starters/features/localize/src/locales/message.en.json +0 -8
- package/dist/starters/features/localize/src/locales/message.it.json +0 -8
- package/dist/starters/features/localize/src/routes/[locale]/i18n-utils.ts +0 -94
- package/dist/starters/features/localize/src/routes/[locale]/index.tsx +0 -52
- package/dist/starters/features/localize/src/routes/[locale]/layout.tsx +0 -12
- package/dist/starters/features/playwright/playwright-report/index.html +0 -22026
- package/dist/starters/features/tailwind/.prettierrc.js +0 -3
- package/dist/testing/index.cjs +0 -33388
- /package/dist/starters/adapters/{static → ssg}/README.md +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Add compiled-i18n to your Qwik app",
|
|
3
|
+
"__qwik__": {
|
|
4
|
+
"displayName": "Integration: compiled-i18n (compile time translations)",
|
|
5
|
+
"priority": -10,
|
|
6
|
+
"viteConfig": {
|
|
7
|
+
"imports": [
|
|
8
|
+
{
|
|
9
|
+
"namedImports": [
|
|
10
|
+
"i18nPlugin"
|
|
11
|
+
],
|
|
12
|
+
"importPath": "compiled-i18n/vite"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"vitePlugins": [
|
|
16
|
+
"i18nPlugin({ locales: ['en'] })"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"docs": [
|
|
20
|
+
"https://qwik.dev/docs/integrations/i18n/#localize",
|
|
21
|
+
"https://github.com/wmertens/compiled-i18n/blob/main/Readme.md"
|
|
22
|
+
],
|
|
23
|
+
"nextSteps": {
|
|
24
|
+
"title": "Next Steps",
|
|
25
|
+
"lines": [
|
|
26
|
+
" - Change the `locales` array in the vite config to add more languages",
|
|
27
|
+
" - Use the `src/components/locale-selector/locale-selector.tsx` component to switch languages",
|
|
28
|
+
"",
|
|
29
|
+
" Check out the compiled-i18n docs:",
|
|
30
|
+
" - https://github.com/wmertens/compiled-i18n/blob/main/Readme.md"
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"compiled-i18n": "latest"
|
|
36
|
+
}
|
|
37
|
+
}
|
package/dist/starters/features/compiled-i18n/src/components/locale-selector/locale-selector.tsx
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { component$, getLocale } from "@qwik.dev/core";
|
|
2
|
+
import { _, locales } from "compiled-i18n";
|
|
3
|
+
|
|
4
|
+
export const LocaleSelector = component$(() => {
|
|
5
|
+
const currentLocale = getLocale();
|
|
6
|
+
return (
|
|
7
|
+
<>
|
|
8
|
+
{locales.map((locale) => {
|
|
9
|
+
const isCurrent = locale === currentLocale;
|
|
10
|
+
return (
|
|
11
|
+
// Note, you must use `<a>` and not `<Link>` so the page reloads
|
|
12
|
+
<a
|
|
13
|
+
key={locale}
|
|
14
|
+
// When using route-based locale selection, build the URL here
|
|
15
|
+
href={`?locale=${locale}`}
|
|
16
|
+
aria-disabled={isCurrent}
|
|
17
|
+
class={
|
|
18
|
+
"btn btn-ghost btn-sm" +
|
|
19
|
+
(isCurrent
|
|
20
|
+
? " bg-neutralContent text-neutral pointer-events-none"
|
|
21
|
+
: " bg-base-100 text-base-content")
|
|
22
|
+
}
|
|
23
|
+
>
|
|
24
|
+
{locale}
|
|
25
|
+
</a>
|
|
26
|
+
);
|
|
27
|
+
})}
|
|
28
|
+
</>
|
|
29
|
+
);
|
|
30
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WHAT IS THIS FILE?
|
|
3
|
+
*
|
|
4
|
+
* SSR renderer function, used by Qwik Router.
|
|
5
|
+
*
|
|
6
|
+
* Note that this is the only place the Qwik renderer is called.
|
|
7
|
+
* On the client, containers resume and do not call render.
|
|
8
|
+
*/
|
|
9
|
+
import { createRenderer } from "@qwik.dev/router";
|
|
10
|
+
import { extractBase, setSsrLocaleGetter } from "compiled-i18n/qwik";
|
|
11
|
+
import Root from "./root";
|
|
12
|
+
|
|
13
|
+
setSsrLocaleGetter();
|
|
14
|
+
|
|
15
|
+
export default createRenderer((opts) => {
|
|
16
|
+
return {
|
|
17
|
+
jsx: <Root />,
|
|
18
|
+
options: {
|
|
19
|
+
...opts,
|
|
20
|
+
|
|
21
|
+
// determine the base URL for the client code
|
|
22
|
+
base: extractBase,
|
|
23
|
+
|
|
24
|
+
// Use container attributes to set attributes on the html tag.
|
|
25
|
+
containerAttributes: {
|
|
26
|
+
lang: opts.serverData?.locale ?? "en-us",
|
|
27
|
+
...opts.containerAttributes,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// ... other imports
|
|
2
|
+
import { guessLocale } from "compiled-i18n";
|
|
3
|
+
import type { RequestHandler } from "@qwik.dev/router";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Handle incoming requests to determine and set the appropriate locale.
|
|
7
|
+
* This function checks for a 'locale' query parameter, then a `locale` cookie,
|
|
8
|
+
* and finally falls back to the 'Accept-Language' header.
|
|
9
|
+
*/
|
|
10
|
+
export const onRequest: RequestHandler = async ({
|
|
11
|
+
query,
|
|
12
|
+
cookie,
|
|
13
|
+
headers,
|
|
14
|
+
locale,
|
|
15
|
+
}) => {
|
|
16
|
+
// Allow overriding locale with query param `locale`
|
|
17
|
+
if (query.has("locale")) {
|
|
18
|
+
const newLocale = guessLocale(query.get("locale"));
|
|
19
|
+
cookie.delete("locale");
|
|
20
|
+
cookie.set("locale", newLocale, {});
|
|
21
|
+
locale(newLocale);
|
|
22
|
+
} else {
|
|
23
|
+
// Choose locale based on cookie or accept-language header
|
|
24
|
+
const maybeLocale =
|
|
25
|
+
cookie.get("locale")?.value || headers.get("accept-language");
|
|
26
|
+
locale(guessLocale(maybeLocale));
|
|
27
|
+
}
|
|
28
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Qwik browser-only starter</title>
|
|
7
|
+
|
|
8
|
+
<script async type="module" src="@qwik.dev/core/qwikloader.js">
|
|
9
|
+
// ^ This is the QwikLoader, it's required for Qwik to work
|
|
10
|
+
</script>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div id="root"></div>
|
|
14
|
+
|
|
15
|
+
<script type="module">
|
|
16
|
+
import { render, jsx } from "@qwik.dev/core";
|
|
17
|
+
import Root from "./src/root";
|
|
18
|
+
|
|
19
|
+
/** This renders your application */
|
|
20
|
+
render(document.querySelector("#root"), jsx(Root));
|
|
21
|
+
|
|
22
|
+
if (isDev) {
|
|
23
|
+
import("/@id/@qwik-hmr-bridge");
|
|
24
|
+
}
|
|
25
|
+
</script>
|
|
26
|
+
</body>
|
|
27
|
+
</html>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Use Qwik in browser-only mode",
|
|
3
|
+
"__qwik__": {
|
|
4
|
+
"displayName": "Integration: Qwik in browser-only mode",
|
|
5
|
+
"priority": -10,
|
|
6
|
+
"viteConfig": {},
|
|
7
|
+
"docs": [
|
|
8
|
+
"https://qwik.dev/docs/integrations/client-only/"
|
|
9
|
+
],
|
|
10
|
+
"nextSteps": {
|
|
11
|
+
"title": "Next Steps",
|
|
12
|
+
"lines": [
|
|
13
|
+
" - run `pnpm dev` to start the development server",
|
|
14
|
+
" - run `pnpm preview` to view a production build",
|
|
15
|
+
" - run `pnpm build` to build the application"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@qwik.dev/core": "workspace:*"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"vite": "8.2.1"
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"dev": "vite",
|
|
27
|
+
"build": "vite build"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is the base config for vite.
|
|
3
|
+
* When building, the adapter config is used which loads this file and extends it.
|
|
4
|
+
*/
|
|
5
|
+
import { qwikVite } from "@qwik.dev/core/optimizer";
|
|
6
|
+
import { defineConfig, type UserConfig } from "vite";
|
|
7
|
+
import tsconfigPaths from "vite-tsconfig-paths";
|
|
8
|
+
|
|
9
|
+
export default defineConfig((): UserConfig => {
|
|
10
|
+
return {
|
|
11
|
+
plugins: [qwikVite({ csr: true }), tsconfigPaths({ root: "." })],
|
|
12
|
+
};
|
|
13
|
+
});
|
|
@@ -1,18 +1,60 @@
|
|
|
1
|
+
import { $, component$ } from "@qwik.dev/core";
|
|
2
|
+
import { QwikRouterMockProvider } from "@qwik.dev/router";
|
|
3
|
+
|
|
1
4
|
import { ExampleTest } from "./example";
|
|
5
|
+
import { useExampleLoader } from "../../loaders/example.loader";
|
|
6
|
+
import { useExampleAction } from "../../actions/example.action";
|
|
7
|
+
|
|
8
|
+
const Template = component$((props: { flag: boolean }) => {
|
|
9
|
+
const loadersMock = [
|
|
10
|
+
{
|
|
11
|
+
loader: useExampleLoader,
|
|
12
|
+
data: "Loader Data",
|
|
13
|
+
},
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
const actionStub = $(() => cy.stub().as("actionStub"))();
|
|
17
|
+
const actionsMock = [
|
|
18
|
+
{
|
|
19
|
+
action: useExampleAction,
|
|
20
|
+
handler: $(async () => {
|
|
21
|
+
await actionStub.then((_) => _());
|
|
22
|
+
return { status: 200, result: "Action Data" };
|
|
23
|
+
}),
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<QwikRouterMockProvider loaders={loadersMock} actions={actionsMock}>
|
|
29
|
+
<ExampleTest flag={props.flag} />
|
|
30
|
+
</QwikRouterMockProvider>
|
|
31
|
+
);
|
|
32
|
+
});
|
|
2
33
|
|
|
3
34
|
it("should render ⭐", () => {
|
|
4
|
-
cy.mount(<
|
|
5
|
-
cy.get("
|
|
35
|
+
cy.mount(<Template flag={true} />);
|
|
36
|
+
cy.get("#icon").should("contain.text", "⭐");
|
|
6
37
|
});
|
|
7
38
|
|
|
8
39
|
it("should render 💣", () => {
|
|
9
|
-
cy.mount(<
|
|
10
|
-
cy.get("
|
|
40
|
+
cy.mount(<Template flag={false} />);
|
|
41
|
+
cy.get("#icon").should("contain.text", "💣");
|
|
11
42
|
});
|
|
12
43
|
|
|
13
44
|
it("should count clicks", () => {
|
|
14
|
-
cy.mount(<
|
|
15
|
-
cy.get("
|
|
16
|
-
cy.get("
|
|
17
|
-
cy.get("
|
|
45
|
+
cy.mount(<Template flag={true} />);
|
|
46
|
+
cy.get("#count").should("contain.text", "Count:0");
|
|
47
|
+
cy.get("#btn-counter").click();
|
|
48
|
+
cy.get("#count").should("contain.text", "Count:1");
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it("should render loader data", () => {
|
|
52
|
+
cy.mount(<Template flag={true} />);
|
|
53
|
+
cy.get("#loader-data").should("contain.text", "Loader Data");
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("should call action on button click", () => {
|
|
57
|
+
cy.mount(<Template flag={true} />);
|
|
58
|
+
cy.get("#btn-action").click();
|
|
59
|
+
cy.get("@actionStub").should("have.been.called");
|
|
18
60
|
});
|
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
import { component$, useStore } from "@qwik.dev/core";
|
|
2
2
|
|
|
3
|
+
import { useExampleLoader } from "../../loaders/example.loader";
|
|
4
|
+
import { useExampleAction } from "../../actions/example.action";
|
|
5
|
+
|
|
3
6
|
export const ExampleTest = component$((props: { flag: boolean }) => {
|
|
4
7
|
const state = useStore({
|
|
5
8
|
counter: 0,
|
|
6
9
|
});
|
|
7
10
|
|
|
11
|
+
const loaderState = useExampleLoader();
|
|
12
|
+
const action = useExampleAction();
|
|
13
|
+
|
|
8
14
|
return (
|
|
9
15
|
<>
|
|
10
|
-
<span>Count:{state.counter}</span>
|
|
11
|
-
<div
|
|
12
|
-
<button
|
|
16
|
+
<span id="count">Count:{state.counter}</span>
|
|
17
|
+
<div id="icon">Flag: {props.flag ? "⭐" : "💣"}</div>
|
|
18
|
+
<button id="btn-counter" onClick$={() => state.counter++}>
|
|
13
19
|
Increment counter
|
|
14
20
|
</button>
|
|
21
|
+
<span id="loader-data">{loaderState.value}</span>
|
|
22
|
+
<button id="btn-action" onClick$={() => action.submit()}>
|
|
23
|
+
Call action
|
|
24
|
+
</button>
|
|
15
25
|
</>
|
|
16
26
|
);
|
|
17
27
|
});
|