@quaffui/quaff 0.1.0-prealpha12 → 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 (188) hide show
  1. package/dist/components/avatar/QAvatar.svelte +37 -29
  2. package/dist/components/avatar/QAvatar.svelte.d.ts +0 -1
  3. package/dist/components/avatar/docs.d.ts +1 -1
  4. package/dist/components/avatar/docs.props.js +2 -0
  5. package/dist/components/avatar/props.d.ts +1 -1
  6. package/dist/components/breadcrumbs/QBreadcrumbs.svelte +3 -8
  7. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte +12 -20
  8. package/dist/components/breadcrumbs/docs.d.ts +1 -1
  9. package/dist/components/breadcrumbs/docs.props.js +2 -0
  10. package/dist/components/breadcrumbs/props.d.ts +1 -1
  11. package/dist/components/button/QBtn.svelte +23 -27
  12. package/dist/components/button/docs.d.ts +1 -1
  13. package/dist/components/button/docs.props.js +18 -0
  14. package/dist/components/button/props.d.ts +1 -1
  15. package/dist/components/card/QCard.svelte +8 -9
  16. package/dist/components/card/QCardActions.svelte +7 -11
  17. package/dist/components/card/QCardSection.svelte +7 -9
  18. package/dist/components/card/docs.d.ts +1 -1
  19. package/dist/components/card/docs.props.js +3 -1
  20. package/dist/components/card/props.d.ts +2 -2
  21. package/dist/components/checkbox/QCheckbox.svelte +6 -8
  22. package/dist/components/checkbox/docs.d.ts +1 -1
  23. package/dist/components/checkbox/docs.props.js +2 -0
  24. package/dist/components/checkbox/props.d.ts +1 -1
  25. package/dist/components/chip/QChip.svelte +39 -30
  26. package/dist/components/chip/QChip.svelte.d.ts +2 -1
  27. package/dist/components/chip/docs.d.ts +1 -1
  28. package/dist/components/chip/docs.props.js +10 -0
  29. package/dist/components/chip/index.scss +18 -1
  30. package/dist/components/chip/props.d.ts +6 -1
  31. package/dist/components/codeBlock/QCodeBlock.svelte +24 -22
  32. package/dist/components/codeBlock/QCodeBlock.svelte.d.ts +0 -1
  33. package/dist/components/codeBlock/docs.props.js +2 -0
  34. package/dist/components/dialog/QDialog.svelte +40 -49
  35. package/dist/components/dialog/QDialog.svelte.d.ts +6 -5
  36. package/dist/components/dialog/docs.d.ts +1 -1
  37. package/dist/components/dialog/docs.props.js +22 -4
  38. package/dist/components/dialog/index.scss +5 -4
  39. package/dist/components/dialog/props.d.ts +5 -5
  40. package/dist/components/drawer/QDrawer.svelte +3 -3
  41. package/dist/components/drawer/docs.d.ts +1 -1
  42. package/dist/components/drawer/docs.props.js +3 -1
  43. package/dist/components/drawer/props.d.ts +1 -1
  44. package/dist/components/footer/QFooter.svelte +3 -3
  45. package/dist/components/footer/docs.d.ts +1 -1
  46. package/dist/components/footer/docs.props.js +6 -4
  47. package/dist/components/footer/props.d.ts +1 -1
  48. package/dist/components/header/QHeader.svelte +2 -2
  49. package/dist/components/header/docs.props.d.ts +24 -0
  50. package/dist/components/header/docs.props.js +72 -0
  51. package/dist/components/icon/QIcon.svelte +10 -19
  52. package/dist/components/icon/QIcon.svelte.d.ts +0 -1
  53. package/dist/components/icon/docs.d.ts +1 -1
  54. package/dist/components/icon/docs.props.js +6 -4
  55. package/dist/components/icon/props.d.ts +1 -1
  56. package/dist/components/index.d.ts +2 -1
  57. package/dist/components/index.js +2 -1
  58. package/dist/components/input/QInput.svelte +62 -73
  59. package/dist/components/input/QInput.svelte.d.ts +3 -2
  60. package/dist/components/input/docs.d.ts +1 -1
  61. package/dist/components/input/docs.js +1 -7
  62. package/dist/components/input/docs.props.js +7 -13
  63. package/dist/components/input/index.scss +1 -3
  64. package/dist/components/input/props.d.ts +1 -3
  65. package/dist/components/input/props.js +0 -1
  66. package/dist/components/layout/QLayout.svelte +6 -6
  67. package/dist/components/layout/QLayout.svelte.d.ts +2 -2
  68. package/dist/components/layout/docs.d.ts +1 -1
  69. package/dist/components/layout/docs.props.js +9 -7
  70. package/dist/components/layout/index.scss +2 -6
  71. package/dist/components/layout/props.d.ts +1 -1
  72. package/dist/components/list/QItem.svelte +29 -29
  73. package/dist/components/list/QItemSection.svelte +12 -15
  74. package/dist/components/list/QList.svelte +12 -13
  75. package/dist/components/list/docs.d.ts +1 -1
  76. package/dist/components/list/docs.props.js +45 -27
  77. package/dist/components/list/index.scss +1 -0
  78. package/dist/components/list/props.d.ts +1 -1
  79. package/dist/components/list/props.js +1 -1
  80. package/dist/components/private/QApi.svelte +2 -2
  81. package/dist/components/private/QApi.svelte.d.ts +1 -1
  82. package/dist/components/private/QDocs.svelte +2 -2
  83. package/dist/components/private/QDocs.svelte.d.ts +1 -1
  84. package/dist/components/private/QDocsSection.svelte +2 -3
  85. package/dist/components/progress/QCircularProgress.svelte +14 -11
  86. package/dist/components/progress/QLinearProgress.svelte +17 -23
  87. package/dist/components/progress/QLinearProgress.svelte.d.ts +0 -1
  88. package/dist/components/progress/docs.d.ts +1 -1
  89. package/dist/components/progress/docs.props.js +17 -15
  90. package/dist/components/progress/index.scss +20 -3
  91. package/dist/components/progress/props.d.ts +1 -1
  92. package/dist/components/radio/QRadio.svelte +2 -8
  93. package/dist/components/radio/docs.d.ts +1 -1
  94. package/dist/components/radio/docs.props.js +5 -3
  95. package/dist/components/radio/props.d.ts +1 -1
  96. package/dist/components/radio/props.js +1 -1
  97. package/dist/components/railbar/QRailbar.svelte +3 -3
  98. package/dist/components/railbar/docs.d.ts +1 -1
  99. package/dist/components/railbar/docs.props.js +9 -7
  100. package/dist/components/railbar/props.d.ts +1 -1
  101. package/dist/components/select/QSelect.svelte +87 -93
  102. package/dist/components/select/QSelect.svelte.d.ts +2 -1
  103. package/dist/components/select/docs.d.ts +1 -1
  104. package/dist/components/select/docs.js +1 -7
  105. package/dist/components/select/docs.props.js +6 -12
  106. package/dist/components/select/index.scss +17 -4
  107. package/dist/components/select/props.d.ts +1 -3
  108. package/dist/components/select/props.js +0 -1
  109. package/dist/components/separator/QSeparator.svelte +39 -50
  110. package/dist/components/separator/QSeparator.svelte.d.ts +0 -1
  111. package/dist/components/separator/docs.d.ts +1 -1
  112. package/dist/components/separator/docs.props.js +15 -13
  113. package/dist/components/separator/index.scss +52 -0
  114. package/dist/components/separator/props.d.ts +3 -3
  115. package/dist/components/table/QTable.svelte +8 -17
  116. package/dist/components/table/QTable.svelte.d.ts +1 -2
  117. package/dist/components/table/docs.d.ts +1 -1
  118. package/dist/components/table/docs.props.js +3 -1
  119. package/dist/components/table/props.d.ts +1 -1
  120. package/dist/components/tabs/QTab.svelte +50 -43
  121. package/dist/components/tabs/QTab.svelte.d.ts +1 -1
  122. package/dist/components/tabs/QTabs.svelte +61 -42
  123. package/dist/components/tabs/QTabs.svelte.d.ts +11 -1
  124. package/dist/components/tabs/docs.d.ts +1 -1
  125. package/dist/components/tabs/docs.props.js +5 -3
  126. package/dist/components/tabs/index.scss +30 -21
  127. package/dist/components/tabs/props.d.ts +2 -4
  128. package/dist/components/tabs/props.js +1 -13
  129. package/dist/components/toggle/QToggle.svelte +7 -16
  130. package/dist/components/toggle/docs.d.ts +1 -1
  131. package/dist/components/toggle/docs.props.js +2 -0
  132. package/dist/components/toggle/props.d.ts +1 -1
  133. package/dist/components/toggle/props.js +1 -1
  134. package/dist/components/toolbar/QToolbar.svelte +12 -16
  135. package/dist/components/toolbar/QToolbar.svelte.d.ts +0 -1
  136. package/dist/components/toolbar/QToolbarTitle.svelte +1 -1
  137. package/dist/components/toolbar/docs.d.ts +1 -1
  138. package/dist/components/toolbar/docs.props.js +26 -8
  139. package/dist/components/toolbar/props.d.ts +1 -1
  140. package/dist/components/tooltip/QTooltip.svelte +10 -8
  141. package/dist/components/tooltip/docs.d.ts +1 -1
  142. package/dist/components/tooltip/docs.props.js +3 -1
  143. package/dist/components/tooltip/index.scss +1 -0
  144. package/dist/components/tooltip/props.d.ts +1 -1
  145. package/dist/components/tooltip/props.js +1 -1
  146. package/dist/composables/index.d.ts +3 -0
  147. package/dist/composables/index.js +3 -1
  148. package/dist/composables/use-align.d.ts +1 -1
  149. package/dist/composables/use-align.js +1 -1
  150. package/dist/composables/use-router-link.d.ts +1 -1
  151. package/dist/composables/use-router-link.js +2 -2
  152. package/dist/composables/use-size.d.ts +1 -1
  153. package/dist/composables/use-size.js +2 -2
  154. package/dist/css/index.css +1 -1
  155. package/dist/css/index.scss +1 -0
  156. package/dist/css/mixins/field-mixins.scss +53 -0
  157. package/dist/css/mixins.scss +5 -4
  158. package/dist/css/ripple.scss +8 -1
  159. package/dist/css/shared/q-field.scss +318 -0
  160. package/dist/css/theme/colors.module.scss +261 -109
  161. package/dist/css/theme/palette.scss +8 -2
  162. package/dist/helpers/index.d.ts +1 -1
  163. package/dist/helpers/index.js +1 -1
  164. package/dist/helpers/ripple.js +12 -10
  165. package/dist/helpers/version.d.ts +1 -1
  166. package/dist/helpers/version.js +1 -1
  167. package/dist/stores/QTheme.d.ts +8 -7
  168. package/dist/stores/QTheme.js +3 -3
  169. package/dist/stores/Quaff.js +1 -1
  170. package/dist/stores/index.d.ts +2 -0
  171. package/dist/stores/index.js +2 -0
  172. package/dist/utils/clipboard.d.ts +1 -1
  173. package/dist/utils/clipboard.js +1 -2
  174. package/dist/utils/dom.d.ts +1 -0
  175. package/dist/utils/dom.js +4 -0
  176. package/dist/utils/index.d.ts +8 -0
  177. package/dist/utils/index.js +8 -1
  178. package/dist/utils/props.d.ts +1 -1
  179. package/dist/utils/types.d.ts +1 -1
  180. package/dist/utils/types.json +24 -1
  181. package/package.json +23 -24
  182. package/dist/composables/use-index.d.ts +0 -2
  183. package/dist/composables/use-index.js +0 -17
  184. package/dist/css/mixins/field.scss +0 -432
  185. package/dist/helpers/activationHandler.d.ts +0 -9
  186. package/dist/helpers/activationHandler.js +0 -23
  187. package/dist/utils/fields.d.ts +0 -1
  188. package/dist/utils/fields.js +0 -14
@@ -0,0 +1,52 @@
1
+ .q-separator__wrapper {
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+
6
+ &.q-separator--inset__wrapper {
7
+ padding: 0 1rem;
8
+ }
9
+
10
+ &.q-separator--vertical__wrapper {
11
+ height: 100%;
12
+ flex-direction: column;
13
+
14
+ &.q-separator--inset__wrapper {
15
+ padding: 1rem 0;
16
+ }
17
+ }
18
+
19
+ &:not(.q-separator--vertical__wrapper) {
20
+ width: 100%;
21
+ }
22
+
23
+ & > .q-separator {
24
+ background-color: var(--outline);
25
+ border: none;
26
+ flex: 1 1 auto;
27
+
28
+ &--vertical {
29
+ width: var(--q-separator--size, 0.0625rem);
30
+
31
+ @each $space, $val in $spaces {
32
+ @if $space != "none" and $space != "auto" {
33
+ &.q-separator--spacing-#{$space} {
34
+ margin-inline: $val;
35
+ }
36
+ }
37
+ }
38
+ }
39
+
40
+ &:not(&--vertical) {
41
+ height: var(--q-separator--size, 0.0625rem);
42
+
43
+ @each $space, $val in $spaces {
44
+ @if $space != "auto" {
45
+ &.q-separator--spacing-#{$space} {
46
+ margin-block: $val;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
@@ -1,7 +1,7 @@
1
- import type { NativeProps } from "../../utils/types";
1
+ import type { NativeProps, QuaffSizes } from "../../utils";
2
2
  import type { HTMLAttributes } from "svelte/elements";
3
3
  interface QSeparatorPropsVertical extends NativeProps {
4
- spacing?: "none" | "sm" | "md" | "lg";
4
+ spacing?: QuaffSizes;
5
5
  inset?: boolean;
6
6
  vertical?: true;
7
7
  color?: string;
@@ -10,7 +10,7 @@ interface QSeparatorPropsVertical extends NativeProps {
10
10
  textAlign?: "top" | "middle" | "bottom";
11
11
  }
12
12
  interface QSeparatorPropsHorizontal extends NativeProps, HTMLAttributes<HTMLDivElement> {
13
- spacing?: "none" | "sm" | "md" | "lg";
13
+ spacing?: QuaffSizes;
14
14
  inset?: boolean;
15
15
  vertical?: false;
16
16
  color?: string;
@@ -1,7 +1,4 @@
1
- <script>import { createClasses } from "../../utils/props";
2
- import QBtn from "../button/QBtn.svelte";
3
- import QIcon from "../icon/QIcon.svelte";
4
- import QSelect from "../select/QSelect.svelte";
1
+ <script>import { QIcon, QSelect, QBtn } from "../..";
5
2
  export let columns = [], rows = [], flat = void 0, bordered = void 0, dense = false, userClasses = "";
6
3
  export { userClasses as class };
7
4
  function getField(fieldRaw, row) {
@@ -13,17 +10,6 @@ let rowsPerPageOptions = [5, 10, 25, 50].map((e) => ({
13
10
  label: e.toString(),
14
11
  value: e.toString()
15
12
  }));
16
- $:
17
- classes = createClasses([], {
18
- component: "q-table",
19
- userClasses
20
- });
21
- $:
22
- classesTable = createClasses([flat && "flat", bordered && "bordered", dense && "dense"], {
23
- component: "q-table",
24
- element: "table",
25
- userClasses
26
- });
27
13
  let sort = null;
28
14
  let rowsSorted = rows;
29
15
  let rowsPaginated = [];
@@ -88,8 +74,13 @@ function setSort(column) {
88
74
  }
89
75
  </script>
90
76
 
91
- <div class={classes} {...$$restProps}>
92
- <table class={classesTable}>
77
+ <div class="q-table" {...$$restProps}>
78
+ <table
79
+ class="q-table__table {userClasses}"
80
+ class:q-table--flat={flat}
81
+ class:q-table--bordered={bordered}
82
+ class:q-table--dense={dense}
83
+ >
93
84
  <thead>
94
85
  <tr>
95
86
  {#each columns as column}
@@ -1,6 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { QTableProps } from "./props";
3
- import type { QTableColumn, QTableRow } from "./props";
2
+ import type { QTableProps, QTableColumn, QTableRow } from "./props";
4
3
  declare const __propDef: {
5
4
  props: {
6
5
  [x: string]: any;
@@ -1,2 +1,2 @@
1
- import type { QComponentDocs } from "../../utils/types";
1
+ import type { QComponentDocs } from "../../utils";
2
2
  export declare let QTableDocs: QComponentDocs;
@@ -1,3 +1,5 @@
1
+ // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
+ // @quaffHash 45c443accd2682faeefb3243e9ba5116
1
3
  export const QTableDocsProps = [
2
4
  {
3
5
  name: "columns",
@@ -34,7 +36,7 @@ export const QTableDocsProps = [
34
36
  {
35
37
  name: "dense",
36
38
  type: "boolean",
37
- optional: false,
39
+ optional: true,
38
40
  clickableType: false,
39
41
  description: "Shows the Table in dense mode (takes up less space).",
40
42
  default: "false",
@@ -1,4 +1,4 @@
1
- import type { NativeProps } from "../../utils/types";
1
+ import type { NativeProps } from "../../utils";
2
2
  import type { HTMLAttributes } from "svelte/elements";
3
3
  export type QTableColumn = {
4
4
  name: string;
@@ -1,59 +1,61 @@
1
- <script>import { Quaff } from "../../stores/Quaff";
2
- import { getContext, hasContext } from "svelte";
3
- import { createClasses } from "../../utils/props";
4
- import QIcon from "../icon/QIcon.svelte";
5
- import { isRouteActive } from "../../composables/use-router-link";
6
- import { getDirection, isActivationKey, isArrowKey, isTabKey } from "../../utils/events";
7
- import { ripple } from "../../helpers/ripple";
8
- import { getClosestFocusableBlock, getClosestFocusableSibling } from "../../utils/dom";
9
- export let name = void 0, to = void 0, icon = void 0, userClasses = void 0;
1
+ <script>import { QIcon } from "../..";
2
+ import { isRouteActive } from "../../composables";
3
+ import { ripple } from "../../helpers";
4
+ import { Quaff } from "../../stores";
5
+ import {
6
+ createClasses,
7
+ isActivationKey,
8
+ isArrowKey,
9
+ getDirection,
10
+ getClosestFocusableSibling,
11
+ isTabKey,
12
+ getClosestFocusableBlock
13
+ } from "../../utils";
14
+ import { hasContext, getContext, onMount } from "svelte";
15
+ import { get } from "svelte/store";
16
+ export let name, to = void 0, icon = void 0, userClasses = "";
10
17
  export { userClasses as class };
11
- let index = 1;
12
18
  let qTab;
13
- if (!hasContext("QTabCount")) {
19
+ const qTabStore = getContext("qTabStore");
20
+ if (!hasContext("qTabStore")) {
14
21
  console.warn("QTab should be used inside QTabs");
15
22
  }
16
- const variant = getContext("variant");
17
- let indexContext = getContext("QTabCount");
23
+ const isInitallyActive = to !== void 0 ? isRouteActive($Quaff.router, to) : name === $qTabStore.value;
18
24
  $:
19
- if (indexContext) {
20
- index = indexContext.index();
25
+ if (isInitallyActive && qTab) {
26
+ setActive(qTab);
21
27
  }
22
- let activeStore = getContext("activeTab");
23
28
  $:
24
- isActive = to !== void 0 ? isRouteActive($Quaff.router, to) : name === $activeStore.name;
29
+ isActive = name === $qTabStore.value;
25
30
  $:
26
- if (isActive && qTab) {
31
+ if (qTab && isActive && qTab !== $qTabStore.activeEl) {
27
32
  setActive(qTab);
28
33
  }
29
34
  let tag;
30
35
  $:
31
36
  tag = to === void 0 ? "button" : "a";
32
- $:
33
- classes = createClasses([isActive && "active"], {
34
- component: "q-tab",
35
- userClasses
36
- });
37
37
  function setActive(el) {
38
- let rect;
39
- if (variant === "primary") {
40
- rect = el.firstElementChild.getBoundingClientRect();
41
- } else {
42
- rect = el.getBoundingClientRect();
43
- }
44
- let indicatorWidth = variant === "vertical" ? rect.height : rect.width;
45
- let buttonWidth = el.offsetWidth;
46
- if (index !== $activeStore.index) {
47
- $activeStore = {
48
- name,
49
- index,
50
- position: variant === "vertical" ? `${el.offsetTop}px` : variant === "secondary" ? `${el.offsetLeft}px` : `calc(${el.offsetLeft}px + ${buttonWidth}px / 2)`,
51
- size: indicatorWidth
52
- };
53
- }
38
+ const store = get(qTabStore);
39
+ const previousEl = store.activeEl;
40
+ const variant = store.variant;
41
+ const child = variant === "primary" ? el.firstElementChild : { offsetLeft: 0, offsetWidth: 0 };
42
+ const position = variant === "vertical" ? el.offsetTop : el.offsetLeft + child.offsetLeft;
43
+ const size = variant === "vertical" ? el.offsetHeight : child.offsetWidth || el.offsetWidth;
44
+ $qTabStore = {
45
+ variant,
46
+ value: name,
47
+ previousEl,
48
+ activeEl: el,
49
+ utils: {
50
+ size,
51
+ position
52
+ }
53
+ };
54
54
  }
55
55
  function onClick(e) {
56
- setActive(e.target);
56
+ if (!isActive) {
57
+ setActive(e.target);
58
+ }
57
59
  }
58
60
  function onKeydown(e) {
59
61
  if (isActivationKey(e)) {
@@ -83,17 +85,22 @@ function onKeydown(e) {
83
85
  </script>
84
86
 
85
87
  <svelte:element
86
- this={tag}
87
88
  use:ripple
89
+ bind:this={qTab}
90
+ this={tag}
91
+
88
92
  href={to}
89
- class={classes}
90
93
  role={tag === "a" ? "button" : undefined}
91
94
  aria-current={isActive || undefined}
95
+
96
+ class="q-tab {userClasses}"
97
+ class:q-tab--active={isActive}
98
+
92
99
  on:click
93
100
  on:click={onClick}
94
101
  on:keydown={onKeydown}
102
+
95
103
  {...$$restProps}
96
- bind:this={qTab}
97
104
  >
98
105
  <div>
99
106
  {#if icon}
@@ -3,7 +3,7 @@ import type { QTabProps } from "./props";
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  [x: string]: any;
6
- name?: QTabProps["name"];
6
+ name: QTabProps["name"];
7
7
  to?: QTabProps["to"];
8
8
  icon?: QTabProps["icon"];
9
9
  class?: string | null | undefined;
@@ -1,51 +1,70 @@
1
- <script>import { onMount, setContext } from "svelte";
2
- import { createClasses, createStyles } from "../../utils/props";
3
- import { derived, writable } from "svelte/store";
4
- export let value = void 0, variant = "primary", round = false, userClasses = void 0, userStyles = void 0;
5
- export { userClasses as class, userStyles as style };
6
- let hidden = true;
7
- onMount(() => {
8
- setTimeout(() => {
9
- hidden = false;
10
- }, 200);
11
- });
12
- let QTabCount = 0;
13
- setContext("QTabCount", {
14
- index: () => {
15
- QTabCount += 1;
16
- return QTabCount;
17
- }
1
+ <script context="module"></script>
2
+
3
+ <script>import { movementDirection } from "../../utils";
4
+ import { setContext } from "svelte";
5
+ import { writable } from "svelte/store";
6
+ export let value = void 0, variant = "primary", round = false, userClasses = "";
7
+ export { userClasses as class };
8
+ const cssVars = {
9
+ indicatorPosition: "--indicator-position",
10
+ indicatorSize: "--indicator-size"
11
+ };
12
+ let qTabs;
13
+ const qTabStore = writable({
14
+ value,
15
+ variant,
16
+ previousEl: null,
17
+ activeEl: null,
18
+ utils: { size: 0, position: 0 }
18
19
  });
19
- let activeTabStore = writable({ name: value, index: 0, size: 0, position: 0 });
20
20
  $:
21
- activeTabStore.update(($active) => {
22
- $active.name = value;
23
- return $active;
21
+ qTabStore.update(($store) => {
22
+ $store.value = value;
23
+ return $store;
24
24
  });
25
- setContext("activeTab", activeTabStore);
26
- setContext("variant", variant);
27
25
  $:
28
- value = $activeTabStore.name;
26
+ value = $qTabStore.value;
27
+ setContext("qTabStore", qTabStore);
29
28
  $:
30
- classes = createClasses([variant, round && "rounded", hidden && "hidden-indicator"], {
31
- component: "q-tabs",
32
- userClasses
33
- });
34
- let indicatorWidth = derived(activeTabStore, ($activeTabStore2) => {
35
- return variant === "primary" ? `calc(${$activeTabStore2.size}px + 8px)` : `${$activeTabStore2.size}px`;
36
- });
37
- $:
38
- style = createStyles(
39
- {
40
- "--tab-count": QTabCount || 1,
41
- "--indicator-size": $indicatorWidth,
42
- "--active-tab-index": $activeTabStore.index - 1,
43
- "--indicator-position": $activeTabStore.position
44
- },
45
- userStyles
46
- );
29
+ if ($qTabStore.activeEl) {
30
+ const {
31
+ previousEl,
32
+ activeEl,
33
+ utils: { position, size },
34
+ variant: storeVariant
35
+ } = $qTabStore;
36
+ const tabsSize = storeVariant === "vertical" ? qTabs.offsetHeight : qTabs.offsetWidth;
37
+ const tabSize = size / tabsSize;
38
+ if (!previousEl) {
39
+ qTabs.style.setProperty(cssVars.indicatorSize, `${tabSize}`);
40
+ qTabs.style.setProperty(cssVars.indicatorPosition, `${position}px`);
41
+ } else {
42
+ const comparePositions = movementDirection(previousEl, activeEl);
43
+ let transitionSize;
44
+ if (comparePositions === "next") {
45
+ transitionSize = prepareTransitionSize(storeVariant, previousEl, activeEl);
46
+ } else {
47
+ transitionSize = prepareTransitionSize(storeVariant, activeEl, previousEl);
48
+ qTabs.style.setProperty(cssVars.indicatorPosition, `${position}px`);
49
+ }
50
+ qTabs.style.setProperty(cssVars.indicatorSize, `${transitionSize / tabsSize}`);
51
+ setTimeout(() => {
52
+ qTabs.style.setProperty(cssVars.indicatorPosition, `${position}px`);
53
+ qTabs.style.setProperty(cssVars.indicatorSize, `${tabSize}`);
54
+ }, 250);
55
+ }
56
+ }
57
+ function prepareTransitionSize(storeVariant, fromEl, toEl) {
58
+ const fromElChild = storeVariant === "primary" ? fromEl.firstElementChild : { offsetLeft: 0, offsetWidth: 0 };
59
+ const toElChild = storeVariant === "primary" ? toEl.firstElementChild : { offsetLeft: 0, offsetWidth: 0 };
60
+ return storeVariant === "vertical" ? toEl.offsetTop + toEl.offsetHeight - fromEl.offsetTop : toEl.offsetLeft + toElChild.offsetLeft + (toElChild.offsetWidth || toEl.offsetWidth) - (fromEl.offsetLeft + fromElChild.offsetLeft);
61
+ }
47
62
  </script>
48
63
 
49
- <nav class={classes} {style}>
64
+ <nav
65
+ bind:this={qTabs}
66
+ class="q-tabs q-tabs--{variant} {userClasses}"
67
+ class:q-tabs--rounded={round}
68
+ >
50
69
  <slot />
51
70
  </nav>
@@ -1,4 +1,15 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ export type QTab = HTMLAnchorElement | HTMLButtonElement;
3
+ export type QTabStore = {
4
+ value?: string;
5
+ variant: QTabsProps["variant"];
6
+ previousEl: QTab | null;
7
+ activeEl: QTab | null;
8
+ utils: {
9
+ position: number;
10
+ size: number;
11
+ };
12
+ };
2
13
  import type { QTabsProps } from "./props";
3
14
  declare const __propDef: {
4
15
  props: {
@@ -6,7 +17,6 @@ declare const __propDef: {
6
17
  variant?: QTabsProps["variant"];
7
18
  round?: QTabsProps["round"];
8
19
  class?: string | null | undefined;
9
- style?: string | null | undefined;
10
20
  };
11
21
  events: {
12
22
  [evt: string]: CustomEvent<any>;
@@ -1,2 +1,2 @@
1
- import type { QComponentDocs } from "../../utils/types";
1
+ import type { QComponentDocs } from "../../utils";
2
2
  export declare let QTabsDocs: QComponentDocs;
@@ -1,3 +1,5 @@
1
+ // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
+ // @quaffHash 448513ccbdd5582cec72c379c9659fc0
1
3
  export const QTabsDocsProps = [
2
4
  {
3
5
  name: "value",
@@ -10,7 +12,7 @@ export const QTabsDocsProps = [
10
12
  {
11
13
  name: "variant",
12
14
  type: "QTabsVariants",
13
- optional: false,
15
+ optional: true,
14
16
  clickableType: true,
15
17
  description: "",
16
18
  default: "",
@@ -18,7 +20,7 @@ export const QTabsDocsProps = [
18
20
  {
19
21
  name: "round",
20
22
  type: "boolean",
21
- optional: false,
23
+ optional: true,
22
24
  clickableType: false,
23
25
  description: "",
24
26
  default: "",
@@ -28,7 +30,7 @@ export const QTabDocsProps = [
28
30
  {
29
31
  name: "name",
30
32
  type: "string",
31
- optional: true,
33
+ optional: false,
32
34
  clickableType: false,
33
35
  description: "",
34
36
  default: "",
@@ -15,7 +15,7 @@
15
15
  & > .q-tab {
16
16
  position: relative;
17
17
  box-sizing: border-box;
18
- height: 48px;
18
+ min-height: 3rem;
19
19
  min-width: max-content;
20
20
  display: flex;
21
21
  align-items: center;
@@ -59,7 +59,6 @@
59
59
 
60
60
  &.q-tabs--vertical {
61
61
  flex-direction: column;
62
- min-height: calc(var(--tab-count) * 3rem);
63
62
  width: fit-content;
64
63
  align-items: stretch;
65
64
  border-bottom: unset;
@@ -70,38 +69,48 @@
70
69
  }
71
70
 
72
71
  &::after {
73
- top: var(--indicator-position);
74
- right: 0;
75
- bottom: auto;
76
72
  left: auto;
77
- width: 2px;
78
- height: var(--indicator-size);
73
+ right: 0;
74
+ top: 0;
75
+ bottom: 0;
76
+
77
+ width: 0.125rem;
78
+ height: 100%;
79
+
80
+ transform-origin: top;
81
+
82
+ scale: 1 var(--indicator-size, 0);
83
+ translate: 0 var(--indicator-position, 0);
79
84
  }
80
85
  }
81
86
 
82
87
  &::after {
83
88
  content: "";
84
89
  position: absolute;
85
- top: auto;
86
- right: auto;
90
+ left: 0;
91
+ right: 0;
87
92
  bottom: 0;
88
- left: var(--indicator-position);
89
- width: var(--indicator-size);
90
- height: 2px;
93
+
94
+ width: 100%;
95
+ height: 0.125rem;
96
+
91
97
  border-radius: 0;
92
98
  background: var(--primary);
93
- transition: all 0.3s cubic-bezier(0.77, 0, 0.18, 1);
94
- opacity: 0;
95
- }
96
99
 
97
- &:not(.q-tabs--hidden-indicator)::after {
98
- opacity: 1;
100
+ transform-origin: left;
101
+ transition:
102
+ scale 0.2s cubic-bezier(0.25, 0.92, 0.33, 1),
103
+ translate 0.2s cubic-bezier(0.25, 0.92, 0.33, 1);
104
+
105
+ scale: var(--indicator-size, 0) 1;
106
+ translate: var(--indicator-position, 0) 0;
99
107
  }
100
108
 
101
109
  &.q-tabs--primary::after {
102
- left: var(--indicator-position);
103
- transform: translateX(-50%);
104
- height: 3px;
105
- border-radius: 3px 3px 0px 0px;
110
+ translate: var(--indicator-position, 0) 0;
111
+ scale: var(--indicator-size, 0) 1;
112
+
113
+ height: 0.1875rem;
114
+ border-radius: 0.25rem 0.25rem 0px 0px;
106
115
  }
107
116
  }
@@ -1,15 +1,13 @@
1
- import { type NativeProps } from "../../utils/types";
2
1
  import type { HTMLAttributes } from "svelte/elements";
2
+ import type { NativeProps } from "../../utils";
3
3
  export type QTabsVariants = "primary" | "secondary" | "vertical";
4
4
  export interface QTabsProps extends NativeProps, HTMLAttributes<HTMLElement> {
5
5
  value?: string;
6
6
  variant?: QTabsVariants;
7
7
  round?: boolean;
8
8
  }
9
- export declare const QTabsPropsDefaults: QTabsProps;
10
9
  export interface QTabProps extends NativeProps, HTMLAttributes<HTMLElement> {
11
- name?: string;
10
+ name: string;
12
11
  to?: string;
13
12
  icon?: string;
14
13
  }
15
- export declare const QTabPropsDefaults: QTabProps;
@@ -1,13 +1 @@
1
- import { NativePropsDefaults } from "../../utils/types";
2
- export const QTabsPropsDefaults = {
3
- value: undefined,
4
- variant: "primary",
5
- round: false,
6
- ...NativePropsDefaults,
7
- };
8
- export const QTabPropsDefaults = {
9
- name: undefined,
10
- to: undefined,
11
- icon: undefined,
12
- ...NativePropsDefaults,
13
- };
1
+ import "$lib/utils";
@@ -1,16 +1,5 @@
1
- <script>import { createClasses } from "../../utils/props";
2
- import { onMount } from "svelte";
3
- export let value, icon = void 0, label = void 0, leftLabel = void 0, disable = void 0, userClasses = void 0;
1
+ <script>export let value, icon = void 0, label = void 0, leftLabel = void 0, disable = void 0, userClasses = "";
4
2
  export { userClasses as class };
5
- $:
6
- classes = createClasses([leftLabel && "reversed", disable && "disabled", userClasses], {
7
- component: "q-toggle",
8
- userClasses
9
- });
10
- $:
11
- classesInner = createClasses([icon && "icon"], {
12
- component: "q-toggle__inner"
13
- });
14
3
  function toggle() {
15
4
  if (disable !== true) {
16
5
  value = !value;
@@ -20,15 +9,17 @@ function toggle() {
20
9
 
21
10
  <div
22
11
  on:click={toggle}
23
- class={classes}
24
- aria-disabled={disable}
12
+ class="q-toggle {userClasses}"
13
+ class:q-toggle--reversed={leftLabel}
14
+ class:q-toggle--disabled={disable}
15
+ aria-disabled={disable || undefined}
25
16
  role="switch"
26
17
  aria-checked={value}
27
18
  tabindex="0"
28
19
  {...$$restProps}
29
20
  >
30
- <label class={classesInner}>
31
- <input bind:checked={value} type="checkbox" disabled={disable} />
21
+ <label class="q-toggle__inner" class:q-toggle__inner--icon={icon}>
22
+ <input bind:checked={value} type="checkbox" disabled={disable || undefined} />
32
23
  <span>
33
24
  {#if icon}
34
25
  <i>{icon}</i>
@@ -1,2 +1,2 @@
1
- import type { QComponentDocs } from "../../utils/types";
1
+ import type { QComponentDocs } from "../../utils";
2
2
  export declare let QToggleDocs: QComponentDocs;
@@ -1,3 +1,5 @@
1
+ // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
+ // @quaffHash ace8c9aeca6b2affbd44ebe6a8219105
1
3
  export const QToggleDocsProps = [
2
4
  {
3
5
  name: "value",
@@ -1,4 +1,4 @@
1
- import { type NativeProps } from "../../utils/types";
1
+ import type { NativeProps } from "../../utils";
2
2
  export interface QToggleProps extends NativeProps {
3
3
  value?: boolean;
4
4
  label?: string;
@@ -1,4 +1,4 @@
1
- import { NativePropsDefaults } from "../../utils/types";
1
+ import { NativePropsDefaults } from "../../utils";
2
2
  export const QTogglePropsDefaults = {
3
3
  value: false,
4
4
  label: undefined,