From 5850f72027c7f45ac1a05c3b0cb6767b9b3f6bdd Mon Sep 17 00:00:00 2001
From: Jerry_wu <409187100@qq.com>
Date: Tue, 24 Sep 2024 15:36:18 +0800
Subject: [PATCH] headless Switch
---
.../docs/headless/switch/examples/hero.tsx | 29 ++++---------------
.../src/components/switch/index.ts | 4 ++-
.../src/components/switch/switch-context.tsx | 12 ++++----
.../src/components/switch/switch-input.tsx | 14 +++++++++
.../src/components/switch/switch-lable.tsx | 10 +++++++
.../src/components/switch/switch-root.tsx | 5 ++--
6 files changed, 42 insertions(+), 32 deletions(-)
create mode 100644 packages/kit-headless/src/components/switch/switch-input.tsx
create mode 100644 packages/kit-headless/src/components/switch/switch-lable.tsx
diff --git a/apps/website/src/routes/docs/headless/switch/examples/hero.tsx b/apps/website/src/routes/docs/headless/switch/examples/hero.tsx
index e02b83356..f5d8cfe43 100644
--- a/apps/website/src/routes/docs/headless/switch/examples/hero.tsx
+++ b/apps/website/src/routes/docs/headless/switch/examples/hero.tsx
@@ -1,31 +1,14 @@
-import { component$, useStyles$ } from '@builder.io/qwik';
-import { Select } from '@qwik-ui/headless';
+import { component$ } from '@builder.io/qwik';
+import { Switch } from '@qwik-ui/headless';
export default component$(() => {
- useStyles$(styles);
- const users = ['Tim', 'Ryan', 'Jim', 'Jessie', 'Abby'];
return (
-
- Logged in users
-
-
-
-
- {users.map((user) => (
-
- {user}
-
-
-
-
- ))}
-
-
+
+ sdsds
+
+
);
});
-// internal
-import styles from '../snippets/select.css?inline';
-import { LuCheck } from '@qwikest/icons/lucide';
diff --git a/packages/kit-headless/src/components/switch/index.ts b/packages/kit-headless/src/components/switch/index.ts
index 336ce12bb..234a55a00 100644
--- a/packages/kit-headless/src/components/switch/index.ts
+++ b/packages/kit-headless/src/components/switch/index.ts
@@ -1 +1,3 @@
-export {}
+export { SwitchRoot as Root } from './switch-root'
+export { SwitchInput as Input } from './switch-input'
+export { SwitchLable as Label } from './switch-lable'
diff --git a/packages/kit-headless/src/components/switch/switch-context.tsx b/packages/kit-headless/src/components/switch/switch-context.tsx
index 17a7db5dd..f55d083a1 100644
--- a/packages/kit-headless/src/components/switch/switch-context.tsx
+++ b/packages/kit-headless/src/components/switch/switch-context.tsx
@@ -1,12 +1,12 @@
-import { createContextId, type Signal } from '@builder.io/qwik';
+import { createContextId, QRL, type Signal } from '@builder.io/qwik';
export interface SwitchState {
- 'bind:checked': Signal;
- defaultChecked: boolean;
- disabled: boolean;
- label: string;
+ 'bind:checked'?: Signal;
+ defaultChecked?: boolean;
+ disabled?: boolean;
+ onChange$?: QRL<() => void>
}
//
-export type SwitchContextState = Omit & { bindChecked: Signal }
+export type SwitchContextState = Omit & { bindChecked?: Signal }
export const SwitchContext = createContextId('SwitchContext');
diff --git a/packages/kit-headless/src/components/switch/switch-input.tsx b/packages/kit-headless/src/components/switch/switch-input.tsx
new file mode 100644
index 000000000..ae116452f
--- /dev/null
+++ b/packages/kit-headless/src/components/switch/switch-input.tsx
@@ -0,0 +1,14 @@
+
+import { component$, PropsOf, useContext } from '@builder.io/qwik';
+import { SwitchContext } from './switch-context';
+export const SwitchInput = component$>(() => {
+ const context = useContext(SwitchContext)
+ return (
+
+ );
+ },
+);
diff --git a/packages/kit-headless/src/components/switch/switch-lable.tsx b/packages/kit-headless/src/components/switch/switch-lable.tsx
new file mode 100644
index 000000000..b336b2266
--- /dev/null
+++ b/packages/kit-headless/src/components/switch/switch-lable.tsx
@@ -0,0 +1,10 @@
+
+import { component$, PropsOf, Slot } from '@builder.io/qwik';
+export const SwitchLable = component$>(() => {
+ return (
+
+ );
+ },
+);
diff --git a/packages/kit-headless/src/components/switch/switch-root.tsx b/packages/kit-headless/src/components/switch/switch-root.tsx
index 1788a05ed..92e6757ba 100644
--- a/packages/kit-headless/src/components/switch/switch-root.tsx
+++ b/packages/kit-headless/src/components/switch/switch-root.tsx
@@ -9,12 +9,13 @@ export type SwitchProps = PropsOf<'div'> & SwitchState;
-export const SwitchRoot = component$(({defaultChecked, disabled, label, ...rest}: SwitchProps) => {
+export const SwitchRoot = component$(({defaultChecked, disabled, label, onChange$, ...rest}: SwitchProps) => {
const context: SwitchContextState = {
defaultChecked,
disabled,
label,
- bindChecked: rest['bind:checked']
+ bindChecked: rest['bind:checked'],
+ onChange$: onChange$
}
useContextProvider(SwitchContext, context)