@hyvor/design 0.0.35 → 0.0.36

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.
@@ -1,4 +1,5 @@
1
- <script>import DarkProvider from "./../Dark/DarkProvider.svelte";
1
+ <script>import ConfirmModalProvider from "./../Modal/ConfirmModalProvider.svelte";
2
+ import DarkProvider from "./../Dark/DarkProvider.svelte";
2
3
  import "../../index.js";
3
4
  import ToastProvider from "../Toast/ToastProvider.svelte";
4
5
  </script>
@@ -6,6 +7,8 @@ import ToastProvider from "../Toast/ToastProvider.svelte";
6
7
  <DarkProvider />
7
8
  <ToastProvider />
8
9
 
10
+ <ConfirmModalProvider />
11
+
9
12
  <div id="base">
10
13
  <slot />
11
14
  </div>
@@ -6,7 +6,7 @@ declare const __propDef: {
6
6
  size?: "small" | "medium" | "large" | "x-small" | undefined;
7
7
  color?: "input" | "accent" | "gray" | "green" | "red" | "blue" | "orange" | undefined;
8
8
  block?: boolean | undefined;
9
- variant?: "fill" | "fill-light" | "outline" | "invisible" | "outline-fill" | undefined;
9
+ variant?: "fill" | "outline" | "outline-fill" | "invisible" | "fill-light" | undefined;
10
10
  align?: "start" | "center" | undefined;
11
11
  button?: HTMLButtonElement | HTMLAnchorElement | undefined;
12
12
  };
@@ -4,7 +4,7 @@ declare const __propDef: {
4
4
  [x: string]: any;
5
5
  size?: number | "small" | "medium" | "large" | undefined;
6
6
  color?: "accent" | "gray" | "green" | "red" | "blue" | "orange" | undefined;
7
- variant?: "fill" | "outline" | "invisible" | "outline-fill" | undefined;
7
+ variant?: "fill" | "outline" | "outline-fill" | "invisible" | undefined;
8
8
  as?: "button" | "a" | undefined;
9
9
  };
10
10
  events: {
@@ -0,0 +1,52 @@
1
+ <script>import Modal from "./Modal.svelte";
2
+ import { confirmStore } from "./confirm.js";
3
+ import Button from "./../Button/Button.svelte";
4
+ import ButtonGroup from "./../Button/ButtonGroup.svelte";
5
+ let show = true;
6
+ function handleCancel() {
7
+ $confirmStore.onCancel();
8
+ }
9
+ function handleConfirm() {
10
+ $confirmStore.onConfirm();
11
+ }
12
+ $: {
13
+ if (!show) {
14
+ handleCancel();
15
+ }
16
+ }
17
+ </script>
18
+
19
+ {#if $confirmStore}
20
+
21
+ <Modal
22
+ title={$confirmStore.title}
23
+ show={true}
24
+ size="small"
25
+ >
26
+
27
+ {#if typeof $confirmStore.content === "string"}
28
+ {$confirmStore.content}
29
+ {:else}
30
+ <svelte:component this={$confirmStore.content} />
31
+ {/if}
32
+
33
+ <svelte:fragment slot="footer">
34
+ <ButtonGroup>
35
+ <Button
36
+ variant="invisible"
37
+ on:click={handleCancel}
38
+ >
39
+ {$confirmStore.cancelText || "Cancel"}
40
+ </Button>
41
+ <Button
42
+ color={$confirmStore.danger ? "red" : "accent"}
43
+ on:click={handleConfirm}
44
+ >
45
+ {$confirmStore.confirmText || "Confirm"}
46
+ </Button>
47
+ </ButtonGroup>
48
+ </svelte:fragment>
49
+
50
+ </Modal>
51
+
52
+ {/if}
@@ -0,0 +1,14 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: Record<string, never>;
4
+ events: {
5
+ [evt: string]: CustomEvent<any>;
6
+ };
7
+ slots: {};
8
+ };
9
+ export type ConfirmModalProviderProps = typeof __propDef.props;
10
+ export type ConfirmModalProviderEvents = typeof __propDef.events;
11
+ export type ConfirmModalProviderSlots = typeof __propDef.slots;
12
+ export default class ConfirmModalProvider extends SvelteComponent<ConfirmModalProviderProps, ConfirmModalProviderEvents, ConfirmModalProviderSlots> {
13
+ }
14
+ export {};
@@ -0,0 +1,15 @@
1
+ import { type ComponentType } from "svelte";
2
+ interface ConfirmConfig {
3
+ title: string;
4
+ content: string | ComponentType;
5
+ confirmText?: string;
6
+ cancelText?: string;
7
+ danger?: boolean;
8
+ }
9
+ interface ConfirmStore extends ConfirmConfig {
10
+ onConfirm: () => void;
11
+ onCancel: () => void;
12
+ }
13
+ export declare const confirmStore: import("svelte/store").Writable<ConfirmStore | null>;
14
+ export declare function confirm(config: ConfirmConfig): Promise<boolean>;
15
+ export {};
@@ -0,0 +1,18 @@
1
+ import {} from "svelte";
2
+ import { writable } from "svelte/store";
3
+ export const confirmStore = writable(null);
4
+ export function confirm(config) {
5
+ return new Promise((resolve, reject) => {
6
+ confirmStore.set({
7
+ ...config,
8
+ onConfirm: () => {
9
+ resolve(true);
10
+ confirmStore.set(null);
11
+ },
12
+ onCancel: () => {
13
+ resolve(false);
14
+ confirmStore.set(null);
15
+ }
16
+ });
17
+ });
18
+ }
@@ -23,6 +23,7 @@ export { default as IconButton } from './IconButton/IconButton.svelte';
23
23
  export { default as Link } from './Link/Link.svelte';
24
24
  export { default as Loader } from './Loader/Loader.svelte';
25
25
  export { default as Modal } from './Modal/Modal.svelte';
26
+ export { confirm } from './Modal/confirm.js';
26
27
  export { default as NavLink } from './NavLink/NavLink.svelte';
27
28
  export { default as Radio } from './Radio/Radio.svelte';
28
29
  export { default as SplitControl } from './SplitControl/SplitControl.svelte';
@@ -23,6 +23,7 @@ export { default as IconButton } from './IconButton/IconButton.svelte';
23
23
  export { default as Link } from './Link/Link.svelte';
24
24
  export { default as Loader } from './Loader/Loader.svelte';
25
25
  export { default as Modal } from './Modal/Modal.svelte';
26
+ export { confirm } from './Modal/confirm.js';
26
27
  export { default as NavLink } from './NavLink/NavLink.svelte';
27
28
  export { default as Radio } from './Radio/Radio.svelte';
28
29
  export { default as SplitControl } from './SplitControl/SplitControl.svelte';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyvor/design",
3
- "version": "0.0.35",
3
+ "version": "0.0.36",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "scripts": {