@quaffui/quaff 0.1.0-prealpha16 → 0.1.0-prealpha19

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 (269) hide show
  1. package/README.md +6 -6
  2. package/dist/classes/QContext.svelte.d.ts +42 -0
  3. package/dist/classes/QContext.svelte.js +63 -0
  4. package/dist/classes/QScrollObserver.svelte.d.ts +44 -0
  5. package/dist/classes/QScrollObserver.svelte.js +95 -0
  6. package/dist/classes/QTheme.svelte.d.ts +11 -0
  7. package/dist/classes/QTheme.svelte.js +49 -0
  8. package/dist/classes/Quaff.svelte.d.ts +14 -0
  9. package/dist/classes/Quaff.svelte.js +35 -0
  10. package/dist/components/avatar/QAvatar.scss +97 -0
  11. package/dist/components/avatar/QAvatar.svelte +35 -60
  12. package/dist/components/avatar/QAvatar.svelte.d.ts +2 -25
  13. package/dist/components/avatar/docs.props.js +21 -5
  14. package/dist/components/avatar/index.scss +5 -3
  15. package/dist/components/avatar/props.d.ts +24 -7
  16. package/dist/components/breadcrumbs/QBreadcrumbs.scss +10 -0
  17. package/dist/components/breadcrumbs/QBreadcrumbs.svelte +24 -9
  18. package/dist/components/breadcrumbs/QBreadcrumbs.svelte.d.ts +2 -22
  19. package/dist/components/breadcrumbs/QBreadcrumbsEl.scss +10 -0
  20. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte +64 -38
  21. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte.d.ts +2 -25
  22. package/dist/components/breadcrumbs/docs.props.js +27 -27
  23. package/dist/components/breadcrumbs/props.d.ts +25 -24
  24. package/dist/components/button/QBtn.scss +133 -0
  25. package/dist/components/button/QBtn.svelte +88 -48
  26. package/dist/components/button/QBtn.svelte.d.ts +2 -33
  27. package/dist/components/button/docs.props.js +26 -18
  28. package/dist/components/button/props.d.ts +21 -15
  29. package/dist/components/card/QCard.scss +25 -0
  30. package/dist/components/card/QCard.svelte +25 -16
  31. package/dist/components/card/QCard.svelte.d.ts +2 -25
  32. package/dist/components/card/QCardActions.scss +10 -0
  33. package/dist/components/card/QCardActions.svelte +11 -8
  34. package/dist/components/card/QCardActions.svelte.d.ts +2 -21
  35. package/dist/components/card/QCardSection.scss +10 -0
  36. package/dist/components/card/QCardSection.svelte +8 -6
  37. package/dist/components/card/QCardSection.svelte.d.ts +2 -22
  38. package/dist/components/card/docs.props.js +6 -14
  39. package/dist/components/card/props.d.ts +9 -15
  40. package/dist/components/checkbox/QCheckbox.svelte +8 -3
  41. package/dist/components/checkbox/QCheckbox.svelte.d.ts +2 -20
  42. package/dist/components/checkbox/docs.props.js +1 -1
  43. package/dist/components/checkbox/index.scss +3 -1
  44. package/dist/components/checkbox/props.d.ts +1 -2
  45. package/dist/components/chip/QChip.scss +179 -0
  46. package/dist/components/chip/QChip.svelte +95 -70
  47. package/dist/components/chip/QChip.svelte.d.ts +2 -35
  48. package/dist/components/chip/docs.props.js +23 -47
  49. package/dist/components/chip/props.d.ts +21 -34
  50. package/dist/components/codeBlock/QCodeBlock.svelte +64 -42
  51. package/dist/components/codeBlock/QCodeBlock.svelte.d.ts +2 -20
  52. package/dist/components/codeBlock/docs.props.js +10 -2
  53. package/dist/components/codeBlock/props.d.ts +6 -1
  54. package/dist/components/dialog/{index.scss → QDialog.scss} +9 -7
  55. package/dist/components/dialog/QDialog.svelte +72 -70
  56. package/dist/components/dialog/QDialog.svelte.d.ts +6 -36
  57. package/dist/components/dialog/docs.props.d.ts +0 -8
  58. package/dist/components/dialog/docs.props.js +1 -131
  59. package/dist/components/dialog/props.d.ts +0 -16
  60. package/dist/components/drawer/QDrawer.scss +45 -0
  61. package/dist/components/drawer/QDrawer.svelte +87 -91
  62. package/dist/components/drawer/QDrawer.svelte.d.ts +6 -32
  63. package/dist/components/drawer/docs.props.js +3 -3
  64. package/dist/components/drawer/props.d.ts +2 -2
  65. package/dist/components/footer/QFooter.scss +42 -0
  66. package/dist/components/footer/QFooter.svelte +62 -23
  67. package/dist/components/footer/QFooter.svelte.d.ts +2 -23
  68. package/dist/components/footer/docs.props.js +14 -6
  69. package/dist/components/footer/props.d.ts +8 -5
  70. package/dist/components/header/QHeader.scss +54 -0
  71. package/dist/components/header/QHeader.svelte +52 -24
  72. package/dist/components/header/QHeader.svelte.d.ts +2 -23
  73. package/dist/components/header/docs.props.js +23 -7
  74. package/dist/components/header/props.d.ts +11 -3
  75. package/dist/components/icon/{index.scss → QIcon.scss} +2 -4
  76. package/dist/components/icon/QIcon.svelte +29 -16
  77. package/dist/components/icon/QIcon.svelte.d.ts +2 -27
  78. package/dist/components/icon/docs.props.js +3 -3
  79. package/dist/components/icon/props.d.ts +4 -4
  80. package/dist/components/index.d.ts +2 -2
  81. package/dist/components/index.js +2 -2
  82. package/dist/components/input/QInput.svelte +52 -25
  83. package/dist/components/input/QInput.svelte.d.ts +2 -32
  84. package/dist/components/input/docs.props.js +33 -1
  85. package/dist/components/input/props.d.ts +5 -12
  86. package/dist/components/input/props.js +1 -12
  87. package/dist/components/layout/QLayout.scss +178 -0
  88. package/dist/components/layout/QLayout.svelte +100 -80
  89. package/dist/components/layout/QLayout.svelte.d.ts +16 -43
  90. package/dist/components/layout/docs.props.js +57 -1
  91. package/dist/components/layout/props.d.ts +8 -0
  92. package/dist/components/list/QItem.scss +61 -0
  93. package/dist/components/list/QItem.svelte +65 -46
  94. package/dist/components/list/QItem.svelte.d.ts +2 -30
  95. package/dist/components/list/QItemSection.scss +45 -0
  96. package/dist/components/list/QItemSection.svelte +48 -33
  97. package/dist/components/list/QItemSection.svelte.d.ts +2 -24
  98. package/dist/components/list/QList.scss +30 -0
  99. package/dist/components/list/QList.svelte +25 -14
  100. package/dist/components/list/QList.svelte.d.ts +2 -28
  101. package/dist/components/list/docs.props.js +36 -4
  102. package/dist/components/list/props.d.ts +9 -8
  103. package/dist/components/list/props.js +1 -25
  104. package/dist/components/private/ContextReseter.svelte +6 -11
  105. package/dist/components/private/ContextReseter.svelte.d.ts +6 -18
  106. package/dist/components/private/QApi.svelte +117 -103
  107. package/dist/components/private/QApi.svelte.d.ts +4 -16
  108. package/dist/components/private/QDocs.svelte +67 -48
  109. package/dist/components/private/QDocs.svelte.d.ts +9 -20
  110. package/dist/components/private/QDocsSection.svelte +15 -14
  111. package/dist/components/private/QDocsSection.svelte.d.ts +7 -19
  112. package/dist/components/private/QIconSnippet.svelte +12 -0
  113. package/dist/components/private/QIconSnippet.svelte.d.ts +8 -0
  114. package/dist/components/progress/QCircularProgress.scss +63 -0
  115. package/dist/components/progress/QCircularProgress.svelte +104 -28
  116. package/dist/components/progress/QCircularProgress.svelte.d.ts +2 -22
  117. package/dist/components/progress/QLinearProgress.scss +75 -0
  118. package/dist/components/progress/QLinearProgress.svelte +55 -13
  119. package/dist/components/progress/QLinearProgress.svelte.d.ts +2 -20
  120. package/dist/components/progress/docs.props.js +138 -10
  121. package/dist/components/progress/props.d.ts +75 -12
  122. package/dist/components/radio/QRadio.svelte +14 -3
  123. package/dist/components/radio/QRadio.svelte.d.ts +2 -21
  124. package/dist/components/radio/docs.props.js +1 -1
  125. package/dist/components/radio/index.scss +3 -1
  126. package/dist/components/radio/props.d.ts +1 -3
  127. package/dist/components/radio/props.js +1 -8
  128. package/dist/components/railbar/QRailbar.scss +54 -0
  129. package/dist/components/railbar/QRailbar.svelte +43 -66
  130. package/dist/components/railbar/QRailbar.svelte.d.ts +2 -22
  131. package/dist/components/railbar/docs.props.js +4 -4
  132. package/dist/components/railbar/props.d.ts +3 -3
  133. package/dist/components/select/QSelect.svelte +121 -88
  134. package/dist/components/select/QSelect.svelte.d.ts +2 -34
  135. package/dist/components/select/docs.js +7 -0
  136. package/dist/components/select/docs.props.js +41 -1
  137. package/dist/components/select/index.scss +8 -6
  138. package/dist/components/select/props.d.ts +6 -12
  139. package/dist/components/select/props.js +1 -12
  140. package/dist/components/separator/QSeparator.scss +54 -0
  141. package/dist/components/separator/QSeparator.svelte +38 -45
  142. package/dist/components/separator/QSeparator.svelte.d.ts +2 -24
  143. package/dist/components/separator/docs.props.js +4 -4
  144. package/dist/components/separator/props.d.ts +5 -7
  145. package/dist/components/separator/props.js +1 -9
  146. package/dist/components/switch/QSwitch.scss +305 -0
  147. package/dist/components/switch/QSwitch.svelte +96 -0
  148. package/dist/components/switch/QSwitch.svelte.d.ts +3 -0
  149. package/dist/components/{toggle → switch}/docs.d.ts +1 -1
  150. package/dist/components/{toggle → switch}/docs.js +3 -3
  151. package/dist/components/{toggle → switch}/docs.props.d.ts +1 -1
  152. package/dist/components/{toggle → switch}/docs.props.js +30 -6
  153. package/dist/components/switch/props.d.ts +13 -0
  154. package/dist/components/switch/props.js +1 -0
  155. package/dist/components/table/QTable.svelte +99 -85
  156. package/dist/components/table/QTable.svelte.d.ts +3 -29
  157. package/dist/components/table/docs.props.js +9 -1
  158. package/dist/components/table/index.scss +3 -1
  159. package/dist/components/table/props.d.ts +10 -0
  160. package/dist/components/tabs/QTab.scss +71 -0
  161. package/dist/components/tabs/QTab.svelte +74 -90
  162. package/dist/components/tabs/QTab.svelte.d.ts +2 -25
  163. package/dist/components/tabs/QTabs.scss +40 -0
  164. package/dist/components/tabs/QTabs.svelte +110 -58
  165. package/dist/components/tabs/QTabs.svelte.d.ts +6 -31
  166. package/dist/components/tabs/docs.props.js +3 -3
  167. package/dist/components/tabs/index.scss +4 -2
  168. package/dist/components/tabs/props.d.ts +5 -4
  169. package/dist/components/toolbar/QToolbar.svelte +15 -12
  170. package/dist/components/toolbar/QToolbar.svelte.d.ts +2 -23
  171. package/dist/components/toolbar/QToolbarTitle.svelte +8 -7
  172. package/dist/components/toolbar/QToolbarTitle.svelte.d.ts +2 -21
  173. package/dist/components/toolbar/docs.props.js +4 -4
  174. package/dist/components/toolbar/index.scss +12 -14
  175. package/dist/components/toolbar/props.d.ts +4 -5
  176. package/dist/components/tooltip/QTooltip.svelte +5 -9
  177. package/dist/components/tooltip/QTooltip.svelte.d.ts +2 -21
  178. package/dist/components/tooltip/docs.props.js +1 -1
  179. package/dist/components/tooltip/index.scss +3 -1
  180. package/dist/components/tooltip/props.d.ts +1 -1
  181. package/dist/composables/index.d.ts +1 -1
  182. package/dist/composables/index.js +1 -1
  183. package/dist/composables/useSize.d.ts +10 -9
  184. package/dist/composables/useSize.js +32 -20
  185. package/dist/composables/useSizeLegacy.d.ts +9 -0
  186. package/dist/composables/useSizeLegacy.js +25 -0
  187. package/dist/css/_components.scss +31 -0
  188. package/dist/css/_disabled.scss +18 -0
  189. package/dist/css/{ripple.scss → _ripple.scss} +1 -1
  190. package/dist/css/_variables.scss +73 -0
  191. package/dist/css/classes/_design.scss +57 -0
  192. package/dist/css/classes/_flex.scss +62 -0
  193. package/dist/css/classes/_grid.scss +35 -0
  194. package/dist/css/classes/_index.scss +7 -0
  195. package/dist/css/classes/_overflow.scss +7 -0
  196. package/dist/css/classes/_position.scss +7 -0
  197. package/dist/css/classes/_select.scss +6 -0
  198. package/dist/css/classes/_spaces.scss +23 -0
  199. package/dist/css/index.css +1 -1
  200. package/dist/css/index.scss +15 -94
  201. package/dist/css/mixins/_design.scss +63 -0
  202. package/dist/css/mixins/{field-mixins.scss → _field.scss} +16 -5
  203. package/dist/css/mixins/_image.scss +63 -0
  204. package/dist/css/mixins/_index.scss +9 -0
  205. package/dist/css/mixins/_layout.scss +20 -0
  206. package/dist/css/mixins/{menu.scss → _menu.scss} +4 -2
  207. package/dist/css/mixins/{selection.scss → _selection.scss} +7 -67
  208. package/dist/css/mixins/_spaces.scss +36 -0
  209. package/dist/css/mixins/_typography.scss +7 -0
  210. package/dist/css/shared/q-field.scss +62 -32
  211. package/dist/css/theme/_colors.scss +173 -0
  212. package/dist/css/theme/css-variables.scss +5 -0
  213. package/dist/css/theme/page.scss +3 -3
  214. package/dist/css/theme/reset.scss +17 -1
  215. package/dist/css/theme/theme.scss +2 -3
  216. package/dist/css/theme/tokens.scss +0 -159
  217. package/dist/helpers/clickOutside.js +2 -1
  218. package/dist/helpers/ripple.d.ts +1 -1
  219. package/dist/helpers/ripple.js +13 -4
  220. package/dist/helpers/version.d.ts +1 -1
  221. package/dist/helpers/version.js +1 -1
  222. package/dist/index.d.ts +2 -1
  223. package/dist/index.js +2 -1
  224. package/dist/stores/index.d.ts +0 -2
  225. package/dist/stores/index.js +1 -2
  226. package/dist/utils/colors.d.ts +71 -0
  227. package/dist/utils/colors.js +101 -14
  228. package/dist/utils/dom.d.ts +2 -0
  229. package/dist/utils/dom.js +6 -0
  230. package/dist/utils/number.d.ts +2 -0
  231. package/dist/utils/number.js +9 -0
  232. package/dist/utils/props.js +3 -1
  233. package/dist/utils/router.d.ts +17 -0
  234. package/dist/utils/router.js +23 -0
  235. package/dist/utils/string.d.ts +1 -0
  236. package/dist/utils/string.js +3 -0
  237. package/dist/utils/types.d.ts +6 -1
  238. package/dist/utils/types.js +0 -3
  239. package/dist/utils/types.json +8 -5
  240. package/dist/utils/watchable.d.ts +0 -1
  241. package/package.json +40 -37
  242. package/dist/components/breadcrumbs/index.scss +0 -20
  243. package/dist/components/button/index.scss +0 -103
  244. package/dist/components/card/index.scss +0 -56
  245. package/dist/components/chip/index.scss +0 -103
  246. package/dist/components/drawer/index.scss +0 -59
  247. package/dist/components/footer/index.scss +0 -28
  248. package/dist/components/layout/index.scss +0 -387
  249. package/dist/components/list/index.scss +0 -144
  250. package/dist/components/progress/index.scss +0 -82
  251. package/dist/components/railbar/index.scss +0 -39
  252. package/dist/components/separator/index.scss +0 -52
  253. package/dist/components/toggle/QToggle.svelte +0 -34
  254. package/dist/components/toggle/QToggle.svelte.d.ts +0 -23
  255. package/dist/components/toggle/index.scss +0 -31
  256. package/dist/components/toggle/props.d.ts +0 -9
  257. package/dist/components/toggle/props.js +0 -9
  258. package/dist/css/grid.scss +0 -50
  259. package/dist/css/mixins.scss +0 -137
  260. package/dist/css/states.scss +0 -75
  261. package/dist/css/theme/bridge.scss +0 -15
  262. package/dist/css/theme/theme.dark.scss +0 -39
  263. package/dist/css/theme/theme.light.scss +0 -39
  264. package/dist/css/variables-sass.scss +0 -16
  265. package/dist/stores/QTheme.d.ts +0 -42
  266. package/dist/stores/QTheme.js +0 -59
  267. package/dist/stores/Quaff.d.ts +0 -32
  268. package/dist/stores/Quaff.js +0 -58
  269. /package/dist/css/mixins/{table.scss → _table.scss} +0 -0
@@ -1,22 +1,3 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { QRadioProps } from "./props";
3
- declare const __propDef: {
4
- props: {
5
- [x: string]: any;
6
- value?: string | undefined;
7
- label?: QRadioProps["label"];
8
- selected?: QRadioProps["selected"];
9
- disable?: QRadioProps["disable"];
10
- class?: string | null | undefined;
11
- };
12
- events: {
13
- [evt: string]: CustomEvent<any>;
14
- };
15
- slots: {};
16
- };
17
- type QRadioProps_ = typeof __propDef.props;
18
- export { QRadioProps_ as QRadioProps };
19
- export type QRadioEvents = typeof __propDef.events;
20
- export type QRadioSlots = typeof __propDef.slots;
21
- export default class QRadio extends SvelteComponent<QRadioProps, QRadioEvents, QRadioSlots> {
22
- }
2
+ declare const QRadio: import("svelte").Component<QRadioProps, {}, "selected">;
3
+ export default QRadio;
@@ -1,5 +1,5 @@
1
1
  // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
- // @quaffHash 023f166466a04ae52838fa2fcbf5b5f9
2
+ // @quaffHash 65a74e3713e2fac1b7ba6c32735203a7
3
3
  export const QRadioDocsProps = [
4
4
  {
5
5
  name: "value",
@@ -1,3 +1,5 @@
1
+ @use "$css/mixins";
2
+
1
3
  .q-radio {
2
- @include selection(radio);
4
+ @include mixins.selection(radio);
3
5
  }
@@ -1,9 +1,7 @@
1
1
  import type { HTMLAttributes } from "svelte/elements";
2
- import type { NativeProps } from "../../utils";
3
- export interface QRadioProps extends NativeProps, HTMLAttributes<HTMLLabelElement> {
2
+ export interface QRadioProps extends HTMLAttributes<HTMLLabelElement> {
4
3
  value: string;
5
4
  label?: string;
6
5
  selected?: unknown;
7
6
  disable?: boolean;
8
7
  }
9
- export declare const QRadioPropsDefaults: QRadioProps;
@@ -1,8 +1 @@
1
- import { NativePropsDefaults } from "../../utils";
2
- export const QRadioPropsDefaults = {
3
- value: "",
4
- label: "",
5
- selected: undefined,
6
- disable: false,
7
- ...NativePropsDefaults,
8
- };
1
+ export {};
@@ -0,0 +1,54 @@
1
+ @use "$css/mixins";
2
+
3
+ .q-railbar {
4
+ z-index: 5;
5
+ position: fixed;
6
+ top: 0;
7
+ right: auto;
8
+ bottom: 0;
9
+ left: auto;
10
+
11
+ display: flex;
12
+ flex-direction: column;
13
+ align-items: center;
14
+ justify-content: flex-start;
15
+ text-align: center;
16
+ vertical-align: middle;
17
+
18
+ height: auto;
19
+ margin: 0;
20
+ @include mixins.padding("a-sm");
21
+ @include mixins.gap("md");
22
+
23
+ background-color: var(--surface);
24
+ color: var(--on-surface);
25
+
26
+ border: 0;
27
+ border-radius: 0;
28
+
29
+ transform: none;
30
+ white-space: nowrap;
31
+ box-sizing: border-box;
32
+ overflow: auto;
33
+
34
+ // Hide the scrollbar
35
+ // Internet Explorer 10+
36
+ -ms-overflow-style: none;
37
+ // Firefox
38
+ scrollbar-width: none;
39
+ // Other
40
+ &::-webkit-scrollbar {
41
+ display: none;
42
+ }
43
+
44
+ @each $side in ("left", "right") {
45
+ &.q-railbar--#{$side} {
46
+ #{$side}: 0;
47
+ width: var(--#{$side}-railbar-width);
48
+ }
49
+
50
+ &:not(.q-railbar--#{$side}).q-railbar--bordered {
51
+ @include mixins.border(var(--outline), $side);
52
+ }
53
+ }
54
+ }
@@ -1,71 +1,48 @@
1
- <script>import { useSize } from "../../composables";
2
- import { createClasses, createStyles } from "../../utils";
3
- import { getContext } from "svelte";
4
- import { derived } from "svelte/store";
5
- export let width = 88, side = "left", bordered = false, userClasses = void 0, userStyles = void 0;
6
- export { userClasses as class, userStyles as style };
7
- let ctx = getContext("layout");
8
- let drawerType;
9
- $:
10
- drawerType = side === "left" ? "drawerLeft" : "drawerRight";
11
- $:
12
- classes = createClasses(
13
- [
14
- side,
15
- bordered && "bordered",
16
- $ctx && $ctx[drawerType].offset.top && "offset-top",
17
- $ctx && $ctx[drawerType].offset.bottom && "offset-bottom",
18
- $ctx && $ctx[drawerType].fixed && "fixed",
19
- $borderRadiusClasses,
20
- $zIndexClass
21
- ],
22
- {
23
- component: "q-railbar",
24
- userClasses
25
- }
26
- );
27
- $:
28
- widthStyle = !$ctx && useSize(width).style;
29
- $:
30
- style = createStyles(
31
- {
32
- [`--${side}-railbar-width`]: widthStyle
33
- },
34
- userStyles
35
- );
36
- $:
37
- borderRadiusClasses = ctx && // No border radius if this isn't a layout railbar
38
- derived(ctx, (context) => {
39
- const borderSide = side === "left" ? "right" : "left";
40
- const shouldHaveRadius = (pos) => {
41
- let appBarEl = pos === "top" ? context["header"] : context["footer"];
42
- if (context[drawerType].drawer) {
43
- return false;
44
- }
45
- return !appBarEl?.display || context[drawerType].offset[pos];
46
- };
47
- return createClasses(
48
- [
49
- shouldHaveRadius("top") && `top-${borderSide}-radius`,
50
- shouldHaveRadius("bottom") && `bottom-${borderSide}-radius`
51
- ],
52
- {
53
- component: "q-railbar"
54
- }
55
- );
1
+ <script lang="ts">
2
+ import { getContext, onDestroy, untrack } from "svelte";
3
+ import QContext from "../../classes/QContext.svelte";
4
+ let {
5
+ width = 88,
6
+ side = "left",
7
+ bordered = false,
8
+ children,
9
+ ...props
10
+ } = $props();
11
+ const railbarCtx = QContext.get(`QRailbar-${side}`);
12
+ const layoutView = getContext("view");
13
+ let railbarEl = $state();
14
+ onDestroy(() => {
15
+ untrack(() => railbarCtx)?.updateEntries({
16
+ width: 0,
17
+ takesSpace: false,
18
+ });
56
19
  });
57
- $:
58
- zIndexClass = ctx && derived(ctx, (context) => {
59
- let drawer = side === "left" ? context.drawerLeft : context.drawerRight;
60
- let pos;
61
- for (pos of ["top", "bottom"]) {
62
- if (!drawer.offset[pos] && drawer.overlay) {
63
- return "above";
64
- }
65
- }
20
+ $effect.pre(() => {
21
+ untrack(() => railbarCtx)?.updateEntries({
22
+ width,
23
+ takesSpace: railbarEl?.style.display !== "none" || false,
24
+ });
66
25
  });
26
+ const offsetTop = $derived.by(() => {
27
+ const charPos = side === "left" ? 0 : 2;
28
+ return layoutView?.value.charAt(charPos) === "h";
29
+ });
30
+ const offsetBottom = $derived.by(() => {
31
+ const charPos = side === "left" ? 8 : 10;
32
+ return layoutView?.value.charAt(charPos) === "f";
33
+ });
34
+ const railbarWidthStyle = $derived(`--${side}-railbar-width: ${width}px`);
35
+ const style = $derived(`${railbarWidthStyle};${props.style ?? ""}`);
67
36
  </script>
68
37
 
69
- <nav class={classes} {style}>
70
- <slot />
38
+ <nav
39
+ bind:this={railbarEl}
40
+ {...props}
41
+ class="q-railbar{props.class ? ` ${props.class}` : ''} q-railbar--{side}"
42
+ class:q-railbar--bordered={bordered}
43
+ class:q-railbar--offset-top={offsetTop}
44
+ class:q-railbar--offset-bottom={offsetBottom}
45
+ {style}
46
+ >
47
+ {@render children?.()}
71
48
  </nav>
@@ -1,23 +1,3 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { QRailbarProps } from "./props";
3
- declare const __propDef: {
4
- props: {
5
- width?: QRailbarProps["width"];
6
- side?: QRailbarProps["side"];
7
- bordered?: QRailbarProps["bordered"];
8
- class?: string | null | undefined;
9
- style?: string | null | undefined;
10
- };
11
- events: {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {
15
- default: {};
16
- };
17
- };
18
- type QRailbarProps_ = typeof __propDef.props;
19
- export { QRailbarProps_ as QRailbarProps };
20
- export type QRailbarEvents = typeof __propDef.events;
21
- export type QRailbarSlots = typeof __propDef.slots;
22
- export default class QRailbar extends SvelteComponent<QRailbarProps, QRailbarEvents, QRailbarSlots> {
23
- }
2
+ declare const QRailbar: import("svelte").Component<QRailbarProps, {}, "">;
3
+ export default QRailbar;
@@ -1,13 +1,13 @@
1
1
  // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
- // @quaffHash 59d32044c3aee07fb108f91f740e8e1a
2
+ // @quaffHash 3226afb5e510d1c50908cbef451b54ac
3
3
  export const QRailbarDocsProps = [
4
4
  {
5
5
  name: "width",
6
- type: "CssValue | number",
6
+ type: "number",
7
7
  optional: true,
8
- clickableType: true,
8
+ clickableType: false,
9
9
  description: "",
10
- default: "88px",
10
+ default: "88",
11
11
  },
12
12
  {
13
13
  name: "side",
@@ -1,10 +1,10 @@
1
- import type { NativeProps, CssValue } from "../../utils";
1
+ import type { NativeProps } from "../../utils";
2
2
  import type { HTMLAttributes } from "svelte/elements";
3
3
  export interface QRailbarProps extends NativeProps, HTMLAttributes<HTMLElement> {
4
4
  /**
5
- * @default 88px
5
+ * @default 88
6
6
  */
7
- width?: CssValue | number;
7
+ width?: number;
8
8
  /**
9
9
  * @default left
10
10
  */
@@ -1,78 +1,107 @@
1
- <script>import { browser } from "$app/environment";
2
- import { onMount, onDestroy } from "svelte";
3
- import { QIcon } from "../..";
4
- export let options, multiple = false, dense = false, disable = false, error = false, errorMessage = void 0, filled = false, hint = void 0, label = void 0, outlined = false, rounded = false, value, userClasses = void 0;
5
- export { userClasses as class };
6
- let focus = false;
7
- let active = false;
8
- $:
9
- active = typeof value === "number" || value?.length > 0 || focus;
10
- let wrapper = null;
11
- let isMenuOpen = false;
12
- let wasClicked = false;
13
- let preventClose = false;
14
- function handleMousedown() {
15
- isMenuOpen = !isMenuOpen;
16
- wasClicked = true;
17
- }
18
- function handleFocus() {
19
- focus = true;
20
- if (!wasClicked) {
21
- isMenuOpen = true;
1
+ <script lang="ts">
2
+ import { onMount, onDestroy } from "svelte";
3
+ import { browser } from "$app/environment";
4
+ import { QIcon } from "../..";
5
+ let {
6
+ options,
7
+ multiple = false,
8
+ dense = false,
9
+ disable = false,
10
+ error = false,
11
+ errorMessage = void 0,
12
+ filled = false,
13
+ hint = void 0,
14
+ label = void 0,
15
+ outlined = false,
16
+ rounded = false,
17
+ displayValue,
18
+ before = void 0,
19
+ prepend = void 0,
20
+ append = void 0,
21
+ after = void 0,
22
+ value = $bindable(),
23
+ ...props
24
+ } = $props();
25
+ let focus = $state(false);
26
+ const currentDisplayValue = $derived.by(() => {
27
+ if (displayValue !== void 0) {
28
+ return displayValue;
29
+ }
30
+ if (!multiple) {
31
+ return value;
32
+ }
33
+ return value.join(", ");
34
+ });
35
+ const active = $derived(currentDisplayValue || focus);
36
+ let wrapper = $state(null);
37
+ let isMenuOpen = $state(false);
38
+ let wasClicked = $state(false);
39
+ let preventClose = $state(false);
40
+ function handleMousedown(e) {
41
+ isMenuOpen = !isMenuOpen;
42
+ wasClicked = true;
43
+ props.onmousedown?.(e);
22
44
  }
23
- wasClicked = false;
24
- }
25
- function handleBlur() {
26
- focus = false;
27
- if (!multiple && !preventClose) {
28
- isMenuOpen = false;
45
+ function handleFocus(e) {
46
+ focus = true;
47
+ if (!wasClicked) {
48
+ isMenuOpen = true;
49
+ }
50
+ wasClicked = false;
51
+ props.onfocus?.(e);
29
52
  }
30
- preventClose = false;
31
- }
32
- let selectedOptions = [];
33
- $:
34
- selectedOptions = options.map((option) => isSelected(option), value);
35
- let slotPrependWidth = 0;
36
- function isSelected(option) {
37
- const optionValue = typeof option === "string" ? option : option.value;
38
- return multiple ? value.includes(optionValue) : value === optionValue;
39
- }
40
- function select(evt, option) {
41
- evt.preventDefault();
42
- const optionValue = typeof option === "string" ? option : option.value;
43
- if (multiple) {
44
- const hasItem = value.some((entry) => entry === optionValue);
45
- if (hasItem) {
46
- value = value.filter(
47
- (val) => val !== optionValue
48
- );
49
- } else {
50
- value = [...value, optionValue];
53
+ function handleBlur(e) {
54
+ focus = false;
55
+ if (!multiple && !preventClose) {
56
+ isMenuOpen = false;
51
57
  }
52
- return;
58
+ preventClose = false;
59
+ props.onblur?.(e);
53
60
  }
54
- value = optionValue;
55
- isMenuOpen = false;
56
- }
57
- function handleClickOutside(event) {
58
- if (wrapper && !wrapper.contains(event.target)) {
59
- isMenuOpen = false;
61
+ const selectedOptions = $derived(
62
+ options.map((option) => isSelected(option), value),
63
+ );
64
+ let snippetPrependWidth = $state(0);
65
+ function isSelected(option) {
66
+ const optionValue = typeof option === "string" ? option : option.value;
67
+ return multiple ? value.includes(optionValue) : value === optionValue;
60
68
  }
61
- }
62
- onMount(() => {
63
- if (browser) {
64
- window.document.addEventListener("click", handleClickOutside);
69
+ function select(evt, option) {
70
+ evt.preventDefault();
71
+ const optionValue = typeof option === "string" ? option : option.value;
72
+ if (multiple) {
73
+ const hasItem = value.some((entry) => entry === optionValue);
74
+ if (hasItem) {
75
+ value = value.filter((val) => val !== optionValue);
76
+ } else {
77
+ value = [...value, optionValue];
78
+ }
79
+ return;
80
+ }
81
+ value = optionValue;
82
+ isMenuOpen = false;
65
83
  }
66
- });
67
- onDestroy(() => {
68
- if (browser) {
69
- document.removeEventListener("click", handleClickOutside);
84
+ function handleClickOutside(event) {
85
+ if (wrapper && !wrapper.contains(event.target)) {
86
+ isMenuOpen = false;
87
+ }
70
88
  }
71
- });
89
+ onMount(() => {
90
+ if (browser) {
91
+ window.document.addEventListener("click", handleClickOutside);
92
+ }
93
+ });
94
+ onDestroy(() => {
95
+ if (browser) {
96
+ document.removeEventListener("click", handleClickOutside);
97
+ }
98
+ });
72
99
  </script>
73
100
 
74
101
  <div
75
- class="q-select q-field {userClasses}"
102
+ bind:this={wrapper}
103
+ {...props}
104
+ class="q-field{props.class ? ` ${props.class}` : ''} q-select"
76
105
  class:q-field--default={!outlined && !rounded && !filled}
77
106
  class:q-field--outlined={outlined}
78
107
  class:q-field--rounded={rounded}
@@ -82,35 +111,37 @@ onDestroy(() => {
82
111
  class:q-field--active={active}
83
112
  class:q-field--focus={focus}
84
113
  class:q-field--label={label}
85
- class:q-field--slot-append={$$slots.append}
86
- class:q-field--slot-prepend={$$slots.prepend}
114
+ class:q-field--snippet-append={!!append}
115
+ class:q-field--snippet-prepend={!!prepend}
87
116
  class:q-field--disable={disable}
88
117
  class:q-field--error={error}
89
118
  class:q-field--bottom-space={hint || (error && errorMessage)}
90
- style:--slot-prepend-width="{slotPrependWidth}px"
91
- {...$$restProps}
119
+ style:--snippet-prepend-width="{snippetPrependWidth}px"
92
120
  >
93
- {#if $$slots.before}
94
- <div class="q-field__slot-before">
95
- <slot name="before" />
121
+ {#if before}
122
+ <div class="q-field__snippet-before">
123
+ {@render before()}
96
124
  </div>
97
125
  {/if}
98
126
 
99
127
  <div class="q-field__inner">
100
128
  <label class="q-field__wrapper">
101
- {#if $$slots.prepend}
102
- <div class="q-field__slot-prepend" bind:clientWidth={slotPrependWidth}>
103
- <slot name="prepend" />
129
+ {#if prepend}
130
+ <div
131
+ class="q-field__snippet-prepend"
132
+ bind:clientWidth={snippetPrependWidth}
133
+ >
134
+ {@render prepend()}
104
135
  </div>
105
136
  {/if}
106
137
 
107
138
  <input
108
139
  class="q-field__input"
109
- bind:value
140
+ value={currentDisplayValue}
110
141
  placeholder=""
111
- on:focus={handleFocus}
112
- on:blur={handleBlur}
113
- on:mousedown={handleMousedown}
142
+ onfocus={handleFocus}
143
+ onblur={handleBlur}
144
+ onmousedown={handleMousedown}
114
145
  disabled={disable}
115
146
  tabindex={disable === true ? -1 : 0}
116
147
  readonly
@@ -118,11 +149,11 @@ onDestroy(() => {
118
149
 
119
150
  <span class="q-field__label">{label}</span>
120
151
 
121
- <div class="q-field__slot-append">
122
- <slot name="append" />
152
+ <div class="q-field__snippet-append">
153
+ {@render append?.()}
123
154
 
124
155
  <QIcon
125
- class="q-select__arrow-toggle {$$slots.append
156
+ class="q-select__arrow-toggle {append
126
157
  ? 'q-select__arrow-toggle--has-append'
127
158
  : ''}"
128
159
  name={`arrow_drop_${isMenuOpen ? "up" : "down"}`}
@@ -134,9 +165,11 @@ onDestroy(() => {
134
165
  {#each options as option, idx}
135
166
  <a
136
167
  href={multiple ? "javascript:void(0)" : undefined}
137
- class="q-select__option {selectedOptions[idx] ? 'q-select__option--selected' : ''}"
138
- on:mousedown={() => (preventClose = true)}
139
- on:click={(e) => select(e, option)}
168
+ class="q-select__option {selectedOptions[idx]
169
+ ? 'q-select__option--selected'
170
+ : ''}"
171
+ onmousedown={() => (preventClose = true)}
172
+ onclick={(e) => select(e, option)}
140
173
  >{typeof option === "string" ? option : option.value}</a
141
174
  >
142
175
  {/each}
@@ -149,9 +182,9 @@ onDestroy(() => {
149
182
  {/if}
150
183
  </div>
151
184
 
152
- {#if $$slots.after}
153
- <div class="q-field__slot-after">
154
- <slot name="after" />
185
+ {#if after}
186
+ <div class="q-field__snippet-after">
187
+ {@render after()}
155
188
  </div>
156
189
  {/if}
157
190
  </div>
@@ -1,35 +1,3 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { QSelectProps } from "./props";
3
- declare const __propDef: {
4
- props: {
5
- [x: string]: any;
6
- options: QSelectProps["options"];
7
- multiple?: QSelectProps["multiple"];
8
- dense?: QSelectProps["dense"];
9
- disable?: QSelectProps["disable"];
10
- error?: QSelectProps["error"];
11
- errorMessage?: QSelectProps["errorMessage"];
12
- filled?: QSelectProps["filled"];
13
- hint?: QSelectProps["hint"];
14
- label?: QSelectProps["label"];
15
- outlined?: QSelectProps["outlined"];
16
- rounded?: QSelectProps["rounded"];
17
- value: QSelectProps["value"];
18
- class?: string | null | undefined;
19
- };
20
- events: {
21
- [evt: string]: CustomEvent<any>;
22
- };
23
- slots: {
24
- before: {};
25
- prepend: {};
26
- append: {};
27
- after: {};
28
- };
29
- };
30
- type QSelectProps_ = typeof __propDef.props;
31
- export { QSelectProps_ as QSelectProps };
32
- export type QSelectEvents = typeof __propDef.events;
33
- export type QSelectSlots = typeof __propDef.slots;
34
- export default class QSelect extends SvelteComponent<QSelectProps, QSelectEvents, QSelectSlots> {
35
- }
2
+ declare const QSelect: import("svelte").Component<QSelectProps, {}, "value">;
3
+ export default QSelect;
@@ -27,6 +27,13 @@ export const QSelectDocs = {
27
27
  default: false,
28
28
  description: "Whether the select component is disabled.",
29
29
  },
30
+ {
31
+ name: "displayValue",
32
+ type: "string",
33
+ default: undefined,
34
+ optional: true,
35
+ description: "Custom display value to show instead of the plain option(s).",
36
+ },
30
37
  {
31
38
  name: "error",
32
39
  type: "boolean",
@@ -1,5 +1,5 @@
1
1
  // AUTO GENERATED FILE - DO NOT MODIFY OR DELETE
2
- // @quaffHash 672deee79cbdb08b347a495e2f956037
2
+ // @quaffHash 052485ca1338f87a8ffcdfe3b6718e97
3
3
  export const QSelectDocsProps = [
4
4
  {
5
5
  name: "value",
@@ -97,4 +97,44 @@ export const QSelectDocsProps = [
97
97
  description: "",
98
98
  default: "",
99
99
  },
100
+ {
101
+ name: "displayValue",
102
+ type: "string",
103
+ optional: true,
104
+ clickableType: false,
105
+ description: "",
106
+ default: "",
107
+ },
108
+ {
109
+ name: "before",
110
+ type: "Snippet",
111
+ optional: true,
112
+ clickableType: true,
113
+ description: "",
114
+ default: "",
115
+ },
116
+ {
117
+ name: "prepend",
118
+ type: "Snippet",
119
+ optional: true,
120
+ clickableType: true,
121
+ description: "",
122
+ default: "",
123
+ },
124
+ {
125
+ name: "append",
126
+ type: "Snippet",
127
+ optional: true,
128
+ clickableType: true,
129
+ description: "",
130
+ default: "",
131
+ },
132
+ {
133
+ name: "after",
134
+ type: "Snippet",
135
+ optional: true,
136
+ clickableType: true,
137
+ description: "",
138
+ default: "",
139
+ },
100
140
  ];