@quaffui/quaff 0.1.0-prealpha14 → 0.1.0-prealpha15

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.
Files changed (68) hide show
  1. package/dist/components/avatar/QAvatar.svelte +36 -28
  2. package/dist/components/avatar/QAvatar.svelte.d.ts +0 -1
  3. package/dist/components/avatar/docs.props.js +2 -0
  4. package/dist/components/breadcrumbs/QBreadcrumbs.svelte +2 -7
  5. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte +9 -17
  6. package/dist/components/breadcrumbs/docs.props.js +2 -0
  7. package/dist/components/button/QBtn.svelte +12 -20
  8. package/dist/components/button/docs.props.js +2 -0
  9. package/dist/components/card/QCard.svelte +8 -9
  10. package/dist/components/card/QCardActions.svelte +6 -10
  11. package/dist/components/card/QCardSection.svelte +7 -9
  12. package/dist/components/card/docs.props.js +2 -0
  13. package/dist/components/checkbox/QCheckbox.svelte +6 -8
  14. package/dist/components/checkbox/docs.props.js +2 -0
  15. package/dist/components/chip/QChip.svelte +17 -24
  16. package/dist/components/chip/docs.props.js +2 -0
  17. package/dist/components/codeBlock/docs.props.js +2 -0
  18. package/dist/components/dialog/QDialog.svelte +38 -47
  19. package/dist/components/dialog/QDialog.svelte.d.ts +6 -5
  20. package/dist/components/dialog/docs.props.js +6 -4
  21. package/dist/components/dialog/index.scss +5 -4
  22. package/dist/components/dialog/props.d.ts +4 -4
  23. package/dist/components/drawer/docs.props.js +2 -0
  24. package/dist/components/footer/docs.props.js +2 -0
  25. package/dist/components/header/docs.props.js +2 -0
  26. package/dist/components/icon/QIcon.svelte +9 -16
  27. package/dist/components/icon/QIcon.svelte.d.ts +0 -1
  28. package/dist/components/icon/docs.props.js +2 -0
  29. package/dist/components/input/docs.props.js +2 -0
  30. package/dist/components/layout/docs.props.js +2 -0
  31. package/dist/components/list/QItem.svelte +25 -25
  32. package/dist/components/list/QItemSection.svelte +6 -9
  33. package/dist/components/list/QList.svelte +12 -13
  34. package/dist/components/list/docs.props.js +2 -0
  35. package/dist/components/private/QDocsSection.svelte +1 -1
  36. package/dist/components/progress/QCircularProgress.svelte +13 -9
  37. package/dist/components/progress/QLinearProgress.svelte +17 -23
  38. package/dist/components/progress/QLinearProgress.svelte.d.ts +0 -1
  39. package/dist/components/progress/docs.props.js +2 -0
  40. package/dist/components/progress/index.scss +20 -3
  41. package/dist/components/radio/QRadio.svelte +2 -8
  42. package/dist/components/radio/docs.props.js +2 -0
  43. package/dist/components/railbar/docs.props.js +2 -0
  44. package/dist/components/select/docs.props.js +2 -0
  45. package/dist/components/separator/QSeparator.svelte +38 -44
  46. package/dist/components/separator/docs.props.js +2 -0
  47. package/dist/components/table/QTable.svelte +8 -15
  48. package/dist/components/table/docs.props.js +2 -0
  49. package/dist/components/tabs/docs.props.js +3 -1
  50. package/dist/components/toggle/QToggle.svelte +7 -15
  51. package/dist/components/toggle/docs.props.js +2 -0
  52. package/dist/components/toolbar/QToolbar.svelte +12 -16
  53. package/dist/components/toolbar/QToolbar.svelte.d.ts +0 -1
  54. package/dist/components/toolbar/docs.props.js +2 -0
  55. package/dist/components/tooltip/QTooltip.svelte +10 -8
  56. package/dist/components/tooltip/docs.props.js +2 -0
  57. package/dist/components/tooltip/index.scss +1 -0
  58. package/dist/css/index.css +1 -1
  59. package/dist/css/mixins/field-mixins.scss +9 -8
  60. package/dist/css/mixins.scss +3 -1
  61. package/dist/css/ripple.scss +8 -1
  62. package/dist/css/shared/q-field.scss +62 -49
  63. package/dist/css/theme/colors.module.scss +12 -12
  64. package/dist/helpers/ripple.js +12 -10
  65. package/dist/helpers/version.d.ts +1 -1
  66. package/dist/helpers/version.js +1 -1
  67. package/dist/utils/types.json +24 -1
  68. package/package.json +2 -2
@@ -1,44 +1,52 @@
1
1
  <script>import { useSize } from "../../composables";
2
- import { createClasses, createStyles } from "../../utils";
3
- export let shape = "circle", size = "md", src = void 0, video = false, userClasses = void 0, userStyles = void 0;
2
+ export let shape = "circle", size = "md", src = void 0, video = false, userClasses = "";
4
3
  export { userClasses as class };
5
- export { userStyles as style };
6
4
  $:
7
5
  sizeObj = useSize(size);
8
- $:
9
- shapeClass = createClasses([
10
- shape === "circle" && "circle",
11
- shape === "rounded" && "round",
12
- shape.includes("top") && "top-round",
13
- shape.includes("bottom") && "bottom-round",
14
- shape.includes("left") && "left-round",
15
- shape.includes("right") && "right-round"
16
- ]);
17
- $:
18
- classes = createClasses([shapeClass, sizeObj.class], {
19
- component: "q-avatar",
20
- userClasses
21
- });
22
- $:
23
- style = createStyles(
24
- {
25
- width: sizeObj.style,
26
- height: sizeObj.style
27
- },
28
- userStyles
29
- );
30
6
  </script>
31
7
 
32
8
  {#if video === true}
33
9
  <!-- svelte-ignore a11y-media-has-caption -->
34
- <video class={classes} {style} autoplay loop playsinline {...$$restProps} on:click>
10
+ <video
11
+ class="q-avatar {sizeObj.class ? `q-avatar--${sizeObj.class}` : ''} {userClasses}"
12
+ class:q-avatar--circle={shape === "circle"}
13
+ class:q-avatar--round={shape === "rounded"}
14
+ class:q-avatar--top-round={shape?.includes("top")}
15
+ class:q-avatar--bottom-round={shape?.includes("bottom")}
16
+ class:q-avatar--left-round={shape?.includes("left")}
17
+ class:q-avatar--right-round={shape?.includes("right")}
18
+ style:width={sizeObj.style}
19
+ style:height={sizeObj.style}
20
+ autoplay loop playsinline {...$$restProps} on:click>
35
21
  <source {src} type="video/mp4" />
36
22
  </video>
37
23
  {:else if src !== undefined}
38
24
  <!-- svelte-ignore a11y-missing-attribute -->
39
- <img class={classes} {style} {src} {...$$restProps} on:click />
25
+ <!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
26
+ <img
27
+ class="q-avatar {sizeObj.class ? `q-avatar--${sizeObj.class}` : ''} {userClasses}"
28
+ class:q-avatar--circle={shape === "circle"}
29
+ class:q-avatar--round={shape === "rounded"}
30
+ class:q-avatar--top-round={shape?.includes("top")}
31
+ class:q-avatar--bottom-round={shape?.includes("bottom")}
32
+ class:q-avatar--left-round={shape?.includes("left")}
33
+ class:q-avatar--right-round={shape?.includes("right")}
34
+ style:width={sizeObj.style}
35
+ style:height={sizeObj.style}
36
+ {src} {...$$restProps} on:click />
40
37
  {:else}
41
- <div class={classes} {style} {...$$restProps} on:click>
38
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
39
+ <div
40
+ class="q-avatar {sizeObj.class ? `q-avatar--${sizeObj.class}` : ''} {userClasses}"
41
+ class:q-avatar--circle={shape === "circle"}
42
+ class:q-avatar--round={shape === "rounded"}
43
+ class:q-avatar--top-round={shape?.includes("top")}
44
+ class:q-avatar--bottom-round={shape?.includes("bottom")}
45
+ class:q-avatar--left-round={shape?.includes("left")}
46
+ class:q-avatar--right-round={shape?.includes("right")}
47
+ style:width={sizeObj.style}
48
+ style:height={sizeObj.style}
49
+ {...$$restProps} on:click>
42
50
  <slot />
43
51
  </div>
44
52
  {/if}
@@ -8,7 +8,6 @@ declare const __propDef: {
8
8
  src?: QAvatarProps["src"];
9
9
  video?: QAvatarProps["video"];
10
10
  class?: string | null | undefined;
11
- style?: string | null | undefined;
12
11
  };
13
12
  events: {
14
13
  click: MouseEvent;
@@ -1,3 +1,5 @@
1
+ // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
+ // @quaffHash 24254a62ac601e8b6e85a3b74a7b3297
1
3
  export const QAvatarDocsProps = [
2
4
  {
3
5
  name: "shape",
@@ -1,18 +1,13 @@
1
1
  <script>import { createClasses } from "../../utils";
2
2
  import { onMount, setContext } from "svelte";
3
- export let separator = "/", gutter = "sm", activeColor = "primary", separatorColor = "outline", userClasses = void 0;
3
+ export let separator = "/", gutter = "sm", activeColor = "primary", separatorColor = "outline", userClasses = "";
4
4
  export { userClasses as class };
5
5
  let breadcrumbElement;
6
6
  onMount(() => breadcrumbElement.firstChild?.remove());
7
7
  setContext("activeColor", activeColor);
8
8
  setContext("separator", { type: separator, color: separatorColor, gutter });
9
- $:
10
- classes = createClasses([], {
11
- component: "q-breadcrumbs",
12
- userClasses
13
- });
14
9
  </script>
15
10
 
16
- <div class={classes} bind:this={breadcrumbElement}>
11
+ <div class="q-breadcrumbs {userClasses}" bind:this={breadcrumbElement}>
17
12
  <slot />
18
13
  </div>
@@ -1,30 +1,18 @@
1
1
  <script>import { isRouteActive } from "../../composables";
2
2
  import { Quaff } from "../../stores/Quaff";
3
- import { createClasses } from "../../utils";
4
3
  import { getContext } from "svelte";
5
4
  import { QIcon } from "../..";
6
- export let label = "", icon = void 0, tag = "div", to = void 0, href = void 0, activeClass = "active", userClasses = void 0;
5
+ export let label = "", icon = void 0, tag = "div", to = void 0, href = void 0, activeClass = "q-breadcrumbs__el--active", userClasses = "";
7
6
  export { userClasses as class };
8
7
  const activeColor = getContext("activeColor");
9
8
  const separator = getContext("separator");
10
9
  $:
11
10
  isActive = isRouteActive($Quaff.router, href || to);
12
11
  $:
13
- classes = createClasses([isActive && activeClass], {
14
- component: "q-breadcrumbs",
15
- element: "el",
16
- quaffClasses: [isActive && `text-${activeColor}`],
17
- userClasses
18
- });
19
- $:
20
- separatorClasses = createClasses([], {
21
- component: "q-breadcrumbs",
22
- element: "separator",
23
- quaffClasses: [`q-px-${separator.gutter}`]
24
- });
12
+ activeClasses = isActive ? `${activeClass} text-${activeColor}` : "";
25
13
  </script>
26
14
 
27
- <div class={separatorClasses}>
15
+ <div class="q-breadcrumbs__separator q-px-{separator.gutter}">
28
16
  {#if separator.type.startsWith("icon:")}
29
17
  <QIcon name={separator.type.replace("icon:", "")} size="1rem" />
30
18
  {:else}
@@ -33,7 +21,9 @@ $:
33
21
  </div>
34
22
 
35
23
  {#if href !== undefined || to !== undefined}
36
- <a href={href || to} class={classes}>
24
+ <a href={href || to}
25
+ class="q-breadcrumb__el {activeClasses} {userClasses}"
26
+ >
37
27
  {#if icon !== undefined}
38
28
  <QIcon name={icon} size="1rem" />
39
29
  {:else if $$slots.icon}
@@ -45,7 +35,9 @@ $:
45
35
  </slot>
46
36
  </a>
47
37
  {:else}
48
- <svelte:element this={tag} class={classes}>
38
+ <svelte:element this={tag}
39
+ class="q-breadcrumb__el {activeClasses} {userClasses}"
40
+ >
49
41
  {#if icon !== undefined}
50
42
  <QIcon name={icon} size="1rem" />
51
43
  {:else if $$slots.icon}
@@ -1,3 +1,5 @@
1
+ // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
+ // @quaffHash 0e657b47b135caa98d094a90819b9c4e
1
3
  export const QBreadcrumbsDocsProps = [
2
4
  {
3
5
  name: "separator",
@@ -1,8 +1,8 @@
1
1
  <script>import { useSize } from "../../composables";
2
2
  import { ripple } from "../../helpers";
3
- import { createClasses, isActivationKey } from "../../utils";
3
+ import { isActivationKey } from "../../utils";
4
4
  import { QIcon, QCircularProgress } from "../..";
5
- export let icon = void 0, label = void 0, disable = false, loading = false, unelevated = false, outline = false, round = false, rectangle = false, noRipple = false, flat = false, to = void 0, size = void 0, userClasses = void 0;
5
+ export let icon = void 0, label = void 0, disable = false, loading = false, unelevated = false, outline = false, round = false, rectangle = false, noRipple = false, flat = false, to = void 0, size = void 0, userClasses = "";
6
6
  export { userClasses as class };
7
7
  let qBtn;
8
8
  let tag;
@@ -11,20 +11,7 @@ $:
11
11
  $:
12
12
  sizeObj = useSize(size);
13
13
  $:
14
- classes = createClasses(
15
- [
16
- unelevated && "unelevated",
17
- rectangle && "rectangle",
18
- outline && "outlined",
19
- flat && "flat",
20
- (!$$slots.default && !label || round) && "round",
21
- size !== "md" && sizeObj.class
22
- ],
23
- {
24
- component: "q-btn",
25
- userClasses
26
- }
27
- );
14
+ sizeClass = sizeObj.class && sizeObj.class !== "md" ? `q-btn--${sizeObj.class}` : "";
28
15
  function stopIfDisabled(e) {
29
16
  if (disable) {
30
17
  e.preventDefault();
@@ -42,12 +29,17 @@ function onKeyDown(e) {
42
29
 
43
30
  <svelte:element
44
31
  this={tag}
45
- bind:this={qBtn}
46
32
  use:ripple={{ disable: noRipple || disable }}
47
- role={tag === "a" ? "button" : undefined}
48
- href={to}
49
- class={classes}
33
+ bind:this={qBtn}
50
34
  aria-disabled={disable || undefined}
35
+ class="q-btn {sizeClass} {userClasses}"
36
+ class:q-btn--unelevated={unelevated}
37
+ class:q-btn--outlined={outline}
38
+ class:q-btn--flat={flat}
39
+ class:q-btn--rectangle={rectangle}
40
+ class:q-btn--round={(!$$slots.default && !label) || round}
41
+ href={to}
42
+ role={tag === "a" ? "button" : undefined}
51
43
  tabindex={disable ? -1 : 0}
52
44
  on:keydown={onKeyDown}
53
45
  on:click={stopIfDisabled}
@@ -1,3 +1,5 @@
1
+ // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
+ // @quaffHash 721c97430442b5c05c756e2473f45aeb
1
3
  export const QBtnDocsProps = [
2
4
  {
3
5
  name: "disable",
@@ -1,18 +1,17 @@
1
- <script>import { createClasses } from "../../utils";
2
- export let bordered = false, fill = void 0, flat = false, round = false, title = void 0, userClasses = void 0;
1
+ <script>export let bordered = false, fill = void 0, flat = false, round = false, title = void 0, userClasses = "";
3
2
  export { userClasses as class };
4
3
  const colorOptions = ["primary", "secondary", "tertiary"];
5
4
  $:
6
5
  color = !fill ? "surface" : colorOptions.includes(fill) ? `${fill}-container` : "surface-variant";
7
- $:
8
- classes = createClasses([bordered && "bordered", flat && "flat", round && "rounded"], {
9
- component: "q-card",
10
- quaffClasses: [color],
11
- userClasses
12
- });
13
6
  </script>
14
7
 
15
- <article class={classes} {...$$restProps}>
8
+ <article
9
+ class="q-card {color} {userClasses}"
10
+ class:q-card--bordered={bordered}
11
+ class:q-card--flat={flat}
12
+ class:q-card--rounded={round}
13
+ {...$$restProps}
14
+ >
16
15
  {#if $$slots.title}
17
16
  <slot name="title" />
18
17
  {:else if title !== undefined}
@@ -1,18 +1,14 @@
1
1
  <script>import { useAlign } from "../../composables";
2
- import { createClasses } from "../../utils";
3
- export let align = void 0, vertical = false, userClasses = void 0;
2
+ export let align = void 0, vertical = false, userClasses = "";
4
3
  export { userClasses as class };
5
4
  $:
6
5
  alignClass = useAlign(align);
7
- $:
8
- classes = createClasses([vertical && "vertical"], {
9
- component: "q-card",
10
- element: "actions",
11
- quaffClasses: [alignClass],
12
- userClasses
13
- });
14
6
  </script>
15
7
 
16
- <nav class={classes} {...$$restProps}>
8
+ <nav
9
+ class="q-card__actions {alignClass} {userClasses}"
10
+ class:q-card__actions--vertical={vertical}
11
+ {...$$restProps}
12
+ >
17
13
  <slot />
18
14
  </nav>
@@ -1,14 +1,12 @@
1
- <script>import { createClasses } from "../../utils";
2
- export let horizontal = false, userClasses = void 0;
1
+ <script>export let horizontal = false, userClasses = "";
3
2
  export { userClasses as class };
4
- $:
5
- classes = createClasses([horizontal && "horizontal"], {
6
- component: "q-card",
7
- element: "section",
8
- userClasses
9
- });
10
3
  </script>
11
4
 
12
- <div class={classes} {...$$restProps} on:scroll>
5
+ <div
6
+ class="q-card__section {userClasses}"
7
+ class:q-card__section--horizontal={horizontal}
8
+ {...$$restProps}
9
+ on:scroll
10
+ >
13
11
  <slot />
14
12
  </div>
@@ -1,3 +1,5 @@
1
+ // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
+ // @quaffHash 2ef1416c81c3c5c723220c0c102649eb
1
3
  export const QCardDocsProps = [
2
4
  {
3
5
  name: "bordered",
@@ -1,14 +1,12 @@
1
- <script>import { createClasses } from "../../utils";
2
- export let value = false, label = "", disable = false, userClasses = void 0;
1
+ <script>export let value = false, label = "", disable = false, userClasses = "";
3
2
  export { userClasses as class };
4
- $:
5
- classes = createClasses([disable && "disabled"], {
6
- component: "q-checkbox",
7
- userClasses
8
- });
9
3
  </script>
10
4
 
11
- <label class={classes} {...$$restProps}>
5
+ <label
6
+ class="q-checkbox {userClasses}"
7
+ class:q-checkbox--disabled={disable}
8
+ {...$$restProps}
9
+ >
12
10
  <input type="checkbox" bind:checked={value} disabled={disable} />
13
11
  <span>{label}</span>
14
12
  </label>
@@ -1,3 +1,5 @@
1
+ // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
+ // @quaffHash 9a5ee048cd1eb382844ca517e4e3e645
1
3
  export const QCheckboxDocsProps = [
2
4
  {
3
5
  name: "value",
@@ -1,8 +1,8 @@
1
1
  <script>import { useSize } from "../../composables";
2
2
  import { ripple } from "../../helpers";
3
- import { createClasses, isActivationKey } from "../../utils";
3
+ import { isActivationKey } from "../../utils";
4
4
  import { QIcon } from "../..";
5
- export let content = void 0, icon = void 0, iconRight = void 0, disable = false, responsive = false, vertical = false, round = false, outlined = false, noRipple = false, size = "md", tabindex = void 0, href = void 0, userClasses = void 0;
5
+ export let content = void 0, icon = void 0, iconRight = void 0, disable = false, responsive = false, vertical = false, round = false, outlined = false, noRipple = false, size = "md", tabindex = void 0, href = void 0, userClasses = "";
6
6
  export { userClasses as class };
7
7
  let qChip;
8
8
  $:
@@ -11,24 +11,6 @@ $:
11
11
  imgRight = iconRight?.startsWith("img:") ? iconRight.slice(4) : void 0;
12
12
  $:
13
13
  sizeObj = useSize(size);
14
- $:
15
- classes = createClasses(
16
- [
17
- vertical && "vertical",
18
- round && "rounded",
19
- (outlined || disable) && "bordered",
20
- size !== "md" && sizeObj.class
21
- ],
22
- {
23
- component: "q-chip",
24
- userClasses
25
- }
26
- );
27
- $:
28
- imgClass = createClasses([responsive && "responsive"], {
29
- component: "q-chip",
30
- element: "img"
31
- });
32
14
  $:
33
15
  tab = disable ? -1 : tabindex ?? 0;
34
16
  function stopIfDisabled(e) {
@@ -48,9 +30,14 @@ function onKeyDown(e) {
48
30
 
49
31
  <a
50
32
  bind:this={qChip}
51
- use:ripple={{disable: noRipple || disable}}
33
+ use:ripple={{ disable: noRipple || disable }}
52
34
  aria-disabled={disable || undefined}
53
- class={classes}
35
+ class="q-chip {sizeObj.class && sizeObj.class !== 'md'
36
+ ? `q-chip--${sizeObj.class}`
37
+ : ''} {userClasses}"
38
+ class:q-chip--vertical={vertical}
39
+ class:q-chip--rounded={round}
40
+ class:q-chip--bordered={outlined || disable}
54
41
  {href}
55
42
  tabindex={tab}
56
43
  on:keydown={onKeyDown}
@@ -61,7 +48,12 @@ function onKeyDown(e) {
61
48
  {#if $$slots.leading}
62
49
  <slot name="leading" />
63
50
  {:else if img}
64
- <img class={imgClass} src={img} alt="{content || 'Slotted'} chip" />
51
+ <img
52
+ class="q-chip__img"
53
+ class:q-chip__img--responsive={responsive}
54
+ src={img}
55
+ alt="{content || 'Slotted'} chip"
56
+ />
65
57
  {:else if icon}
66
58
  <QIcon name={icon} class="q-chip__icon" />
67
59
  {/if}
@@ -74,7 +66,8 @@ function onKeyDown(e) {
74
66
  <slot name="trailing" />
75
67
  {:else if imgRight}
76
68
  <img
77
- class="{imgClass} q-chip__img--trailing"
69
+ class="q-chip__img q-chip__img--trailing"
70
+ class:q-chip__img--responsive={responsive}
78
71
  src={imgRight}
79
72
  alt="{content || 'Slotted'} chip"
80
73
  />
@@ -1,3 +1,5 @@
1
+ // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
+ // @quaffHash 64a4b0e1fd969d51711b5f49c74fd317
1
3
  export const QChipDocsProps = [
2
4
  {
3
5
  name: "content",
@@ -1,3 +1,5 @@
1
+ // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
+ // @quaffHash c12fedd812ba1e4b4a732b44d9624532
1
3
  export const QCodeBlockDocsProps = [
2
4
  {
3
5
  name: "language",
@@ -1,61 +1,41 @@
1
1
  <script>import { clickOutsideDialog } from "../../helpers";
2
- import { createClasses } from "../../utils";
3
- import { createEventDispatcher, onMount } from "svelte";
2
+ import { createEventDispatcher } from "svelte";
4
3
  import { QBtn } from "../..";
5
- export let noBtn = false, btnContent = void 0, btnAttrs = {}, position = "default", modal = false, fullscreen = false, persistent = false, userClasses = void 0;
4
+ export let button = false, buttonLabel = void 0, buttonProps = {}, position = "default", modal = false, fullscreen = false, persistent = false, userClasses = "", value = false;
6
5
  export { userClasses as class };
7
6
  const emit = createEventDispatcher();
8
7
  let dialogElement;
9
- let opened = false;
10
- onMount(() => {
11
- opened = dialogElement.open;
12
- dialogElement.style.display = opened ? "block" : "none";
13
- });
8
+ const ANIMATION_DURATION = 300;
14
9
  $:
15
- canHideOnClickOutside = opened && persistent !== true;
16
- $:
17
- positionClass = ["top", "right", "bottom", "left"].includes(position) ? position : void 0;
18
- $:
19
- classes = createClasses(
20
- [opened && "active", positionClass, modal && "modal", fullscreen && "max"],
21
- {
22
- component: "q-dialog",
23
- userClasses
10
+ if (dialogElement) {
11
+ if (value) {
12
+ dialogElement.style.visibility = "visible";
13
+ modal ? dialogElement.showModal() : dialogElement.show();
14
+ } else {
15
+ dialogElement.close();
16
+ setTimeout(() => {
17
+ dialogElement.style.visibility = "hidden";
18
+ }, ANIMATION_DURATION);
24
19
  }
25
- );
26
- export function hide() {
27
- if (dialogElement && dialogElement.open) {
28
- dialogElement.close();
29
- opened = false;
30
- setTimeout(() => {
31
- dialogElement.style.display = "none";
32
- }, 250);
33
20
  }
21
+ $:
22
+ canHideOnClickOutside = value && !persistent;
23
+ export function hide() {
24
+ value = false;
34
25
  }
35
26
  export function show() {
36
- if (dialogElement && !dialogElement.open) {
37
- modal ? dialogElement.showModal() : dialogElement.show();
38
- opened = true;
39
- dialogElement.style.display = "block";
40
- }
27
+ value = true;
41
28
  }
42
29
  export function toggle(e) {
43
- if (dialogElement) {
44
- opened = !opened;
45
- if (dialogElement.open) {
46
- hide();
47
- } else {
48
- show();
49
- }
50
- }
51
- e.stopPropagation();
30
+ value = !value;
31
+ e?.stopPropagation();
52
32
  }
53
33
  function addAnimation() {
54
- if (persistent && opened) {
34
+ if (persistent && value) {
55
35
  dialogElement?.classList.add("animating");
56
36
  setTimeout(() => {
57
37
  dialogElement?.classList.remove("animating");
58
- }, 150);
38
+ }, ANIMATION_DURATION);
59
39
  }
60
40
  }
61
41
  function handleKeyboardHide(e) {
@@ -75,17 +55,28 @@ function handleClickHide() {
75
55
  }
76
56
  </script>
77
57
 
78
- {#if noBtn === false}
79
- <QBtn {...btnAttrs} on:click={toggle} on:click={(event) => emit("btnClick", event)}>
80
- <slot name="button">
81
- {btnContent || ""}
82
- </slot>
58
+ {#if button}
59
+ <QBtn
60
+ {...buttonProps}
61
+ label={buttonLabel}
62
+ on:click={toggle}
63
+ on:click={(event) => emit("buttonClick", event)}
64
+ >
65
+ <slot name="button" />
83
66
  </QBtn>
84
67
  {/if}
85
68
 
86
69
  <dialog
87
70
  use:clickOutsideDialog={handleClickHide}
88
- class={classes}
71
+ class="q-dialog {userClasses}"
72
+ class:q-dialog--active={value}
73
+ class:q-dialog--top={position === "top"}
74
+ class:q-dialog--right={position === "right"}
75
+ class:q-dialog--bottom={position === "bottom"}
76
+ class:q-dialog--left={position === "left"}
77
+ class:q-dialog--modal={modal}
78
+ class:q-dialog--fullscreen={fullscreen}
79
+ class:q-dialog--persistent={persistent}
89
80
  {...$$restProps}
90
81
  bind:this={dialogElement}
91
82
  on:cancel={handleKeyboardHide}
@@ -3,20 +3,21 @@ import type { QDialogProps } from "./props";
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  [x: string]: any;
6
- noBtn?: QDialogProps["noBtn"];
7
- btnContent?: QDialogProps["btnContent"];
8
- btnAttrs?: QDialogProps["btnAttrs"];
6
+ button?: QDialogProps["button"];
7
+ buttonLabel?: QDialogProps["buttonLabel"];
8
+ buttonProps?: QDialogProps["buttonProps"];
9
9
  position?: QDialogProps["position"];
10
10
  modal?: QDialogProps["modal"];
11
11
  fullscreen?: QDialogProps["fullscreen"];
12
12
  persistent?: QDialogProps["persistent"];
13
13
  class?: string | null | undefined;
14
+ value?: boolean | undefined;
14
15
  hide?: (() => void) | undefined;
15
16
  show?: (() => void) | undefined;
16
- toggle?: ((e: MouseEvent) => void) | undefined;
17
+ toggle?: ((e?: MouseEvent) => void) | undefined;
17
18
  };
18
19
  events: {
19
- btnClick: CustomEvent<any>;
20
+ buttonClick: CustomEvent<any>;
20
21
  } & {
21
22
  [evt: string]: CustomEvent<any>;
22
23
  };
@@ -1,3 +1,5 @@
1
+ // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
+ // @quaffHash 4086c9cbacac3999316434c5d965375c
1
3
  export const QBtnDocsProps = [
2
4
  {
3
5
  name: "disable",
@@ -114,7 +116,7 @@ export const QDialogDocsProps = [
114
116
  default: "true",
115
117
  },
116
118
  {
117
- name: "noBtn",
119
+ name: "button",
118
120
  type: "boolean",
119
121
  optional: true,
120
122
  clickableType: false,
@@ -122,15 +124,15 @@ export const QDialogDocsProps = [
122
124
  default: "false",
123
125
  },
124
126
  {
125
- name: "btnContent",
127
+ name: "buttonLabel",
126
128
  type: "string",
127
129
  optional: true,
128
130
  clickableType: false,
129
- description: "The content to be displayed on the dialog button.",
131
+ description: 'The label of the trigger button. Requires "button" to be set.',
130
132
  default: "undefined",
131
133
  },
132
134
  {
133
- name: "btnAttrs",
135
+ name: "buttonProps",
134
136
  type: "QBtnProps",
135
137
  optional: true,
136
138
  clickableType: false,
@@ -21,6 +21,7 @@
21
21
  0s background-color;
22
22
  transform: translate(-50%, -4rem);
23
23
  animation-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1);
24
+ transform-origin: top left;
24
25
 
25
26
  &:is(&--active, [open]) {
26
27
  opacity: 1;
@@ -29,7 +30,7 @@
29
30
  }
30
31
 
31
32
  &::backdrop {
32
- display: none;
33
+ visibility: hidden;
33
34
  }
34
35
 
35
36
  &:not(&--left, &--right, &--top, &--bottom) {
@@ -57,7 +58,7 @@
57
58
  transform: translate(-50%, 0);
58
59
  }
59
60
 
60
- &:is(&--active, [open]):is(&--left, &--right, &--top, &--bottom, &--max) {
61
+ &:is(&--active, [open]):is(&--left, &--right, &--top, &--bottom, &--fullscreen) {
61
62
  transform: translate(0, 0);
62
63
  }
63
64
 
@@ -111,7 +112,7 @@
111
112
  transform: translateY(100%);
112
113
  }
113
114
 
114
- &--max {
115
+ &--fullscreen {
115
116
  top: 0;
116
117
  left: 0;
117
118
  right: auto;
@@ -152,7 +153,7 @@
152
153
  }
153
154
 
154
155
  &--modal::backdrop {
155
- display: block;
156
+ visibility: visible;
156
157
  background-color: rgba(0, 0, 0, 0.5);
157
158
  }
158
159