@quaffui/quaff 0.1.0-prealpha11 → 0.1.0-prealpha14

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 (204) hide show
  1. package/dist/components/avatar/QAvatar.svelte +2 -2
  2. package/dist/components/avatar/QAvatar.svelte.d.ts +2 -2
  3. package/dist/components/avatar/docs.d.ts +1 -1
  4. package/dist/components/avatar/props.d.ts +3 -2
  5. package/dist/components/breadcrumbs/QBreadcrumbs.svelte +1 -1
  6. package/dist/components/breadcrumbs/QBreadcrumbs.svelte.d.ts +1 -1
  7. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte +5 -5
  8. package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte.d.ts +1 -1
  9. package/dist/components/breadcrumbs/docs.d.ts +1 -1
  10. package/dist/components/breadcrumbs/props.d.ts +4 -3
  11. package/dist/components/button/QBtn.svelte +14 -10
  12. package/dist/components/button/QBtn.svelte.d.ts +2 -1
  13. package/dist/components/button/docs.d.ts +1 -1
  14. package/dist/components/button/docs.props.js +16 -0
  15. package/dist/components/button/props.d.ts +13 -2
  16. package/dist/components/card/QCard.svelte +2 -2
  17. package/dist/components/card/QCard.svelte.d.ts +1 -1
  18. package/dist/components/card/QCardActions.svelte +2 -2
  19. package/dist/components/card/QCardActions.svelte.d.ts +1 -1
  20. package/dist/components/card/QCardSection.svelte +1 -1
  21. package/dist/components/card/QCardSection.svelte.d.ts +1 -1
  22. package/dist/components/card/docs.d.ts +1 -1
  23. package/dist/components/card/docs.props.js +1 -1
  24. package/dist/components/card/props.d.ts +6 -5
  25. package/dist/components/checkbox/QCheckbox.svelte +1 -1
  26. package/dist/components/checkbox/QCheckbox.svelte.d.ts +1 -1
  27. package/dist/components/checkbox/docs.d.ts +1 -1
  28. package/dist/components/checkbox/props.d.ts +3 -2
  29. package/dist/components/chip/QChip.svelte +26 -10
  30. package/dist/components/chip/QChip.svelte.d.ts +3 -2
  31. package/dist/components/chip/docs.d.ts +1 -1
  32. package/dist/components/chip/docs.props.js +8 -0
  33. package/dist/components/chip/index.scss +18 -1
  34. package/dist/components/chip/props.d.ts +8 -2
  35. package/dist/components/codeBlock/QCodeBlock.svelte +24 -22
  36. package/dist/components/codeBlock/QCodeBlock.svelte.d.ts +0 -1
  37. package/dist/components/codeBlock/props.d.ts +2 -1
  38. package/dist/components/dialog/QDialog.svelte +3 -3
  39. package/dist/components/dialog/QDialog.svelte.d.ts +1 -1
  40. package/dist/components/dialog/docs.d.ts +1 -1
  41. package/dist/components/dialog/docs.props.js +16 -0
  42. package/dist/components/dialog/props.d.ts +3 -2
  43. package/dist/components/drawer/QDrawer.svelte +3 -3
  44. package/dist/components/drawer/QDrawer.svelte.d.ts +2 -2
  45. package/dist/components/drawer/docs.d.ts +1 -1
  46. package/dist/components/drawer/docs.props.js +1 -1
  47. package/dist/components/drawer/props.d.ts +3 -2
  48. package/dist/components/footer/QFooter.svelte +3 -3
  49. package/dist/components/footer/QFooter.svelte.d.ts +2 -2
  50. package/dist/components/footer/docs.d.ts +1 -1
  51. package/dist/components/footer/docs.props.js +4 -4
  52. package/dist/components/footer/props.d.ts +3 -2
  53. package/dist/components/header/QHeader.svelte +2 -2
  54. package/dist/components/header/QHeader.svelte.d.ts +2 -2
  55. package/dist/components/header/docs.props.d.ts +24 -0
  56. package/dist/components/header/docs.props.js +70 -0
  57. package/dist/components/header/props.d.ts +2 -2
  58. package/dist/components/icon/QIcon.svelte +3 -5
  59. package/dist/components/icon/QIcon.svelte.d.ts +3 -2
  60. package/dist/components/icon/docs.d.ts +1 -1
  61. package/dist/components/icon/docs.props.js +4 -4
  62. package/dist/components/icon/props.d.ts +3 -2
  63. package/dist/components/index.d.ts +2 -1
  64. package/dist/components/index.js +2 -1
  65. package/dist/components/input/QInput.svelte +62 -73
  66. package/dist/components/input/QInput.svelte.d.ts +4 -3
  67. package/dist/components/input/docs.d.ts +1 -1
  68. package/dist/components/input/docs.js +1 -7
  69. package/dist/components/input/docs.props.js +5 -13
  70. package/dist/components/input/index.scss +1 -3
  71. package/dist/components/input/props.d.ts +3 -4
  72. package/dist/components/input/props.js +0 -1
  73. package/dist/components/layout/QLayout.svelte +7 -7
  74. package/dist/components/layout/QLayout.svelte.d.ts +5 -4
  75. package/dist/components/layout/docs.d.ts +1 -1
  76. package/dist/components/layout/docs.props.js +7 -7
  77. package/dist/components/layout/index.scss +10 -10
  78. package/dist/components/layout/props.d.ts +3 -2
  79. package/dist/components/list/QItem.svelte +26 -23
  80. package/dist/components/list/QItem.svelte.d.ts +4 -7
  81. package/dist/components/list/QItemSection.svelte +26 -22
  82. package/dist/components/list/QItemSection.svelte.d.ts +1 -1
  83. package/dist/components/list/QList.svelte +9 -10
  84. package/dist/components/list/QList.svelte.d.ts +1 -1
  85. package/dist/components/list/docs.d.ts +1 -1
  86. package/dist/components/list/docs.props.js +43 -27
  87. package/dist/components/list/index.scss +28 -5
  88. package/dist/components/list/props.d.ts +9 -6
  89. package/dist/components/list/props.js +2 -2
  90. package/dist/components/private/QApi.svelte +2 -2
  91. package/dist/components/private/QApi.svelte.d.ts +1 -1
  92. package/dist/components/private/QDocs.svelte +2 -2
  93. package/dist/components/private/QDocs.svelte.d.ts +1 -1
  94. package/dist/components/private/QDocsSection.svelte +1 -2
  95. package/dist/components/progress/QCircularProgress.svelte +10 -5
  96. package/dist/components/progress/QCircularProgress.svelte.d.ts +2 -1
  97. package/dist/components/progress/QLinearProgress.svelte +1 -1
  98. package/dist/components/progress/QLinearProgress.svelte.d.ts +2 -2
  99. package/dist/components/progress/docs.d.ts +1 -1
  100. package/dist/components/progress/docs.props.js +15 -15
  101. package/dist/components/progress/props.d.ts +4 -3
  102. package/dist/components/radio/QRadio.svelte +1 -1
  103. package/dist/components/radio/QRadio.svelte.d.ts +1 -1
  104. package/dist/components/radio/docs.d.ts +1 -1
  105. package/dist/components/radio/docs.props.js +3 -3
  106. package/dist/components/radio/props.d.ts +3 -2
  107. package/dist/components/radio/props.js +1 -1
  108. package/dist/components/railbar/QRailbar.svelte +3 -3
  109. package/dist/components/railbar/QRailbar.svelte.d.ts +2 -2
  110. package/dist/components/railbar/docs.d.ts +1 -1
  111. package/dist/components/railbar/docs.props.js +7 -7
  112. package/dist/components/railbar/props.d.ts +3 -2
  113. package/dist/components/select/QSelect.svelte +90 -94
  114. package/dist/components/select/QSelect.svelte.d.ts +3 -2
  115. package/dist/components/select/docs.d.ts +1 -1
  116. package/dist/components/select/docs.js +1 -7
  117. package/dist/components/select/docs.props.js +4 -12
  118. package/dist/components/select/index.scss +17 -4
  119. package/dist/components/select/props.d.ts +7 -5
  120. package/dist/components/select/props.js +0 -1
  121. package/dist/components/separator/QSeparator.svelte +50 -55
  122. package/dist/components/separator/QSeparator.svelte.d.ts +2 -2
  123. package/dist/components/separator/docs.d.ts +1 -1
  124. package/dist/components/separator/docs.props.js +13 -13
  125. package/dist/components/separator/index.scss +52 -0
  126. package/dist/components/separator/props.d.ts +5 -4
  127. package/dist/components/table/QTable.svelte +3 -5
  128. package/dist/components/table/QTable.svelte.d.ts +3 -3
  129. package/dist/components/table/docs.d.ts +1 -1
  130. package/dist/components/table/docs.props.js +1 -1
  131. package/dist/components/table/props.d.ts +3 -2
  132. package/dist/components/tabs/QTab.svelte +50 -43
  133. package/dist/components/tabs/QTab.svelte.d.ts +2 -2
  134. package/dist/components/tabs/QTabs.svelte +61 -42
  135. package/dist/components/tabs/QTabs.svelte.d.ts +12 -2
  136. package/dist/components/tabs/docs.d.ts +1 -1
  137. package/dist/components/tabs/docs.props.js +2 -2
  138. package/dist/components/tabs/index.scss +33 -23
  139. package/dist/components/tabs/props.d.ts +5 -6
  140. package/dist/components/tabs/props.js +1 -13
  141. package/dist/components/toggle/QToggle.svelte +10 -3
  142. package/dist/components/toggle/QToggle.svelte.d.ts +1 -1
  143. package/dist/components/toggle/docs.d.ts +1 -1
  144. package/dist/components/toggle/props.d.ts +1 -1
  145. package/dist/components/toggle/props.js +1 -1
  146. package/dist/components/toolbar/QToolbar.svelte +2 -2
  147. package/dist/components/toolbar/QToolbar.svelte.d.ts +2 -2
  148. package/dist/components/toolbar/QToolbarTitle.svelte +1 -1
  149. package/dist/components/toolbar/QToolbarTitle.svelte.d.ts +2 -2
  150. package/dist/components/toolbar/docs.d.ts +1 -1
  151. package/dist/components/toolbar/docs.props.js +24 -8
  152. package/dist/components/toolbar/props.d.ts +4 -3
  153. package/dist/components/tooltip/QTooltip.svelte +1 -1
  154. package/dist/components/tooltip/QTooltip.svelte.d.ts +1 -1
  155. package/dist/components/tooltip/docs.d.ts +1 -1
  156. package/dist/components/tooltip/docs.props.js +1 -1
  157. package/dist/components/tooltip/props.d.ts +3 -2
  158. package/dist/components/tooltip/props.js +1 -1
  159. package/dist/composables/index.d.ts +3 -0
  160. package/dist/composables/index.js +3 -1
  161. package/dist/composables/use-align.d.ts +1 -1
  162. package/dist/composables/use-align.js +1 -1
  163. package/dist/composables/use-router-link.d.ts +3 -3
  164. package/dist/composables/use-router-link.js +4 -4
  165. package/dist/composables/use-size.d.ts +1 -1
  166. package/dist/composables/use-size.js +2 -2
  167. package/dist/css/index.css +1 -1
  168. package/dist/css/index.scss +1 -0
  169. package/dist/css/mixins/field-mixins.scss +52 -0
  170. package/dist/css/mixins.scss +3 -4
  171. package/dist/css/ripple.scss +1 -1
  172. package/dist/css/shared/q-field.scss +305 -0
  173. package/dist/css/theme/colors.module.scss +261 -109
  174. package/dist/css/theme/palette.scss +8 -2
  175. package/dist/css/theme/theme.dark.scss +3 -1
  176. package/dist/css/theme/theme.light.scss +3 -1
  177. package/dist/helpers/index.d.ts +1 -1
  178. package/dist/helpers/index.js +1 -1
  179. package/dist/helpers/ripple.d.ts +1 -0
  180. package/dist/helpers/ripple.js +1 -1
  181. package/dist/helpers/version.d.ts +1 -1
  182. package/dist/helpers/version.js +1 -1
  183. package/dist/stores/QTheme.d.ts +8 -7
  184. package/dist/stores/QTheme.js +3 -3
  185. package/dist/stores/Quaff.js +19 -14
  186. package/dist/stores/index.d.ts +2 -0
  187. package/dist/stores/index.js +2 -0
  188. package/dist/utils/clipboard.d.ts +1 -1
  189. package/dist/utils/clipboard.js +1 -2
  190. package/dist/utils/dom.d.ts +1 -0
  191. package/dist/utils/dom.js +4 -0
  192. package/dist/utils/index.d.ts +8 -0
  193. package/dist/utils/index.js +8 -1
  194. package/dist/utils/props.d.ts +2 -2
  195. package/dist/utils/types.d.ts +3 -3
  196. package/dist/utils/types.json +1 -1
  197. package/package.json +22 -23
  198. package/dist/composables/use-index.d.ts +0 -2
  199. package/dist/composables/use-index.js +0 -17
  200. package/dist/css/mixins/field.scss +0 -432
  201. package/dist/helpers/activationHandler.d.ts +0 -9
  202. package/dist/helpers/activationHandler.js +0 -23
  203. package/dist/utils/fields.d.ts +0 -1
  204. package/dist/utils/fields.js +0 -14
@@ -1,5 +1,6 @@
1
- import type { NativeProps, CssValue } from "../../utils/types";
2
- export interface QRailbarProps extends NativeProps {
1
+ import type { NativeProps, CssValue } from "../../utils";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ export interface QRailbarProps extends NativeProps, HTMLAttributes<HTMLElement> {
3
4
  /**
4
5
  * @default 88px
5
6
  */
@@ -1,84 +1,38 @@
1
- <script>import QIcon from "../icon/QIcon.svelte";
2
- import { onDestroy, onMount } from "svelte";
3
- import { createClasses } from "../../utils/props";
4
- import { textWidth } from "../../utils/fields";
5
- import { browser } from "$app/environment";
6
- export let options, multiple = false, bordered = 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;
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;
7
5
  export { userClasses as class };
6
+ let focus = false;
8
7
  let active = false;
9
8
  $:
10
- active = value?.length > 0;
11
- $:
12
- hasBorder = bordered || rounded || outlined;
13
- $:
14
- classes = createClasses(
15
- [
16
- "q-select",
17
- label && "label",
18
- active && "active",
19
- dense && "dense",
20
- $$slots.prepend && "prepend",
21
- $$slots.append && "append",
22
- hasBorder && "has-border",
23
- rounded && "rounded",
24
- filled && "filled",
25
- error && "error",
26
- disable && "disabled"
27
- ],
28
- {
29
- component: "q-select",
30
- userClasses
31
- }
32
- );
9
+ active = typeof value === "number" || value?.length > 0 || focus;
33
10
  let wrapper = null;
34
- let inputElement = null;
35
11
  let isMenuOpen = false;
36
12
  let wasClicked = false;
37
13
  let preventClose = false;
38
- $:
39
- value && updateInput(inputElement);
40
- function updateInput(target) {
41
- const input = target;
42
- if (!wrapper || !input) {
43
- return;
44
- }
45
- const label2 = wrapper.querySelector("label");
46
- const isBorder = hasBorder && !filled;
47
- if (active) {
48
- if (isBorder && label2) {
49
- const labelWidth = textWidth(label2, "0.75rem Arial");
50
- let width = active ? labelWidth : Math.round(labelWidth / 1.33);
51
- width = width / 16;
52
- const start = rounded ? 1.25 : 0.75;
53
- const end = width + start + 0.5;
54
- input.style.clipPath = `polygon(0% 0%, ${start}rem 0%, ${start}rem 0.5rem, ${end}rem 0.5rem, ${end}rem 0%, 100% 0%, 100% 100%, 0% 100%)`;
55
- } else
56
- input.style.clipPath = "";
57
- } else {
58
- input.style.clipPath = "";
59
- }
60
- }
61
14
  function handleMousedown() {
62
15
  isMenuOpen = !isMenuOpen;
63
16
  wasClicked = true;
64
17
  }
65
- function handleFocus(target) {
18
+ function handleFocus() {
19
+ focus = true;
66
20
  if (!wasClicked) {
67
21
  isMenuOpen = true;
68
22
  }
69
23
  wasClicked = false;
70
- updateInput(target);
71
24
  }
72
- function handleBlur(target) {
25
+ function handleBlur() {
26
+ focus = false;
73
27
  if (!multiple && !preventClose) {
74
28
  isMenuOpen = false;
75
29
  }
76
30
  preventClose = false;
77
- updateInput(target);
78
31
  }
79
32
  let selectedOptions = [];
80
33
  $:
81
34
  selectedOptions = options.map((option) => isSelected(option), value);
35
+ let slotPrependWidth = 0;
82
36
  function isSelected(option) {
83
37
  const optionValue = typeof option === "string" ? option : option.value;
84
38
  return multiple ? value.includes(optionValue) : value === optionValue;
@@ -89,7 +43,9 @@ function select(evt, option) {
89
43
  if (multiple) {
90
44
  const hasItem = value.some((entry) => entry === optionValue);
91
45
  if (hasItem) {
92
- value = value.filter((val) => val !== optionValue);
46
+ value = value.filter(
47
+ (val) => val !== optionValue
48
+ );
93
49
  } else {
94
50
  value = [...value, optionValue];
95
51
  }
@@ -115,47 +71,87 @@ onDestroy(() => {
115
71
  });
116
72
  </script>
117
73
 
118
- <div bind:this={wrapper} class={classes} {...$$restProps}>
119
- <slot name="prepend" />
74
+ <div
75
+ class="q-select q-field {userClasses}"
76
+ class:q-field--default={!outlined && !rounded && !filled}
77
+ class:q-field--outlined={outlined}
78
+ class:q-field--rounded={rounded}
79
+ class:q-field--filled={filled}
80
+ class:q-field--has-border={outlined || rounded}
81
+ class:q-field--dense={dense}
82
+ class:q-field--active={active}
83
+ class:q-field--focus={focus}
84
+ class:q-field--label={label}
85
+ class:q-field--slot-append={$$slots.append}
86
+ class:q-field--slot-prepend={$$slots.prepend}
87
+ class:q-field--disable={disable}
88
+ class:q-field--error={error}
89
+ class:q-field--bottom-space={hint || (error && errorMessage)}
90
+ style:--slot-prepend-width="{slotPrependWidth}px"
91
+ {...$$restProps}
92
+ >
93
+ {#if $$slots.before}
94
+ <div class="q-field__slot-before">
95
+ <slot name="before" />
96
+ </div>
97
+ {/if}
120
98
 
121
- <input
122
- type="text"
123
- on:focus={(e) => handleFocus(e.currentTarget)}
124
- on:blur={(e) => handleBlur(e.currentTarget)}
125
- on:mousedown={() => handleMousedown()}
126
- bind:value
127
- bind:this={inputElement}
128
- tabindex={disable === true ? -1 : 0}
129
- readonly
130
- disabled={disable}
131
- />
99
+ <div class="q-field__inner">
100
+ <label class="q-field__wrapper">
101
+ {#if $$slots.prepend}
102
+ <div class="q-field__slot-prepend" bind:clientWidth={slotPrependWidth}>
103
+ <slot name="prepend" />
104
+ </div>
105
+ {/if}
132
106
 
133
- <QIcon
134
- class="q-select__arrow-toggle {$$slots.append ? 'q-select__arrow-toggle--has-append' : ''}"
135
- name={`arrow_drop_${isMenuOpen ? "up" : "down"}`}
136
- />
107
+ <input
108
+ class="q-field__input"
109
+ bind:value
110
+ placeholder=""
111
+ on:focus={handleFocus}
112
+ on:blur={handleBlur}
113
+ on:mousedown={handleMousedown}
114
+ disabled={disable}
115
+ tabindex={disable === true ? -1 : 0}
116
+ readonly
117
+ />
137
118
 
138
- <slot name="append" />
119
+ <span class="q-field__label">{label}</span>
139
120
 
140
- <div class="q-select__menu {isMenuOpen ? 'q-select__menu--active' : ''}">
141
- {#each options as option, idx}
142
- <a
143
- href={multiple ? "javascript:void(0)" : undefined}
144
- class="q-select__option {selectedOptions[idx] ? 'q-select__option--selected' : ''}"
145
- on:mousedown={() => (preventClose = true)}
146
- on:click={(e) => select(e, option)}>{typeof option === "string" ? option : option.value}</a
147
- >
148
- {/each}
149
- </div>
121
+ <div class="q-field__slot-append">
122
+ <slot name="append" />
150
123
 
151
- {#if label}
152
- <!-- svelte-ignore a11y-label-has-associated-control -->
153
- <label class="q-select__label {active ? 'q-select__label--active' : ''}">{label}</label>
154
- {/if}
124
+ <QIcon
125
+ class="q-select__arrow-toggle {$$slots.append
126
+ ? 'q-select__arrow-toggle--has-append'
127
+ : ''}"
128
+ name={`arrow_drop_${isMenuOpen ? "up" : "down"}`}
129
+ />
130
+ </div>
131
+ </label>
132
+
133
+ <div class="q-select__menu {isMenuOpen ? 'q-select__menu--active' : ''}">
134
+ {#each options as option, idx}
135
+ <a
136
+ 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)}
140
+ >{typeof option === "string" ? option : option.value}</a
141
+ >
142
+ {/each}
143
+ </div>
144
+
145
+ {#if error && errorMessage}
146
+ <div class="q-field__error">{errorMessage}</div>
147
+ {:else if hint}
148
+ <div class="q-field__hint">{hint}</div>
149
+ {/if}
150
+ </div>
155
151
 
156
- {#if hint}
157
- <span class="q-select__helper">{hint}</span>
158
- {:else if error && errorMessage}
159
- <span class="q-select__error">{errorMessage}</span>
152
+ {#if $$slots.after}
153
+ <div class="q-field__slot-after">
154
+ <slot name="after" />
155
+ </div>
160
156
  {/if}
161
157
  </div>
@@ -5,7 +5,6 @@ declare const __propDef: {
5
5
  [x: string]: any;
6
6
  options: QSelectProps["options"];
7
7
  multiple?: QSelectProps["multiple"];
8
- bordered?: QSelectProps["bordered"];
9
8
  dense?: QSelectProps["dense"];
10
9
  disable?: QSelectProps["disable"];
11
10
  error?: QSelectProps["error"];
@@ -16,14 +15,16 @@ declare const __propDef: {
16
15
  outlined?: QSelectProps["outlined"];
17
16
  rounded?: QSelectProps["rounded"];
18
17
  value: QSelectProps["value"];
19
- class?: string | undefined;
18
+ class?: string | null | undefined;
20
19
  };
21
20
  events: {
22
21
  [evt: string]: CustomEvent<any>;
23
22
  };
24
23
  slots: {
24
+ before: {};
25
25
  prepend: {};
26
26
  append: {};
27
+ after: {};
27
28
  };
28
29
  };
29
30
  type QSelectProps_ = typeof __propDef.props;
@@ -1,2 +1,2 @@
1
- import type { QComponentDocs } from "../../utils/types";
1
+ import type { QComponentDocs } from "../../utils";
2
2
  export declare let QSelectDocs: QComponentDocs;
@@ -1,6 +1,6 @@
1
1
  export let QSelectDocs = {
2
2
  name: "QSelect",
3
- description: "QSelect is a form component that allows users to choose from multiple options in a dropdown list. It supports single and multiple selection, as well as different visual styles such as bordered, filled, outlined, and rounded.",
3
+ description: "QSelect is a form component that allows users to choose from multiple options in a dropdown list. It supports single and multiple selection, as well as different visual styles such as filled, outlined, and rounded.",
4
4
  docs: {
5
5
  props: [
6
6
  {
@@ -21,12 +21,6 @@ export let QSelectDocs = {
21
21
  description: "Options available for selection.",
22
22
  clickableType: true,
23
23
  },
24
- {
25
- name: "bordered",
26
- type: "boolean",
27
- default: false,
28
- description: "Whether the select component has a border.",
29
- },
30
24
  {
31
25
  name: "disable",
32
26
  type: "boolean",
@@ -1,7 +1,7 @@
1
1
  export const QSelectDocsProps = [
2
2
  {
3
3
  name: "value",
4
- type: "string | string[] | number | number[]",
4
+ type: "QSelectValue",
5
5
  optional: false,
6
6
  clickableType: true,
7
7
  description: "",
@@ -23,14 +23,6 @@ export const QSelectDocsProps = [
23
23
  description: "",
24
24
  default: "",
25
25
  },
26
- {
27
- name: "bordered",
28
- type: "boolean",
29
- optional: true,
30
- clickableType: false,
31
- description: "",
32
- default: "",
33
- },
34
26
  {
35
27
  name: "dense",
36
28
  type: "boolean",
@@ -42,7 +34,7 @@ export const QSelectDocsProps = [
42
34
  {
43
35
  name: "disable",
44
36
  type: "boolean",
45
- optional: false,
37
+ optional: true,
46
38
  clickableType: false,
47
39
  description: "",
48
40
  default: "",
@@ -50,7 +42,7 @@ export const QSelectDocsProps = [
50
42
  {
51
43
  name: "error",
52
44
  type: "boolean",
53
- optional: false,
45
+ optional: true,
54
46
  clickableType: false,
55
47
  description: "",
56
48
  default: "",
@@ -66,7 +58,7 @@ export const QSelectDocsProps = [
66
58
  {
67
59
  name: "filled",
68
60
  type: "boolean",
69
- optional: false,
61
+ optional: true,
70
62
  clickableType: false,
71
63
  description: "",
72
64
  default: "",
@@ -1,11 +1,12 @@
1
- .q-select {
2
- @include field;
1
+ @import "$css/shared/q-field.scss";
3
2
 
3
+ .q-select {
4
4
  &__option--selected {
5
5
  color: var(--primary);
6
6
  }
7
7
 
8
- input:read-only {
8
+ .q-field__wrapper,
9
+ .q-field__input {
9
10
  cursor: pointer;
10
11
  }
11
12
 
@@ -30,11 +31,23 @@
30
31
  }
31
32
  }
32
33
 
34
+ &.q-field--bottom-space &__menu {
35
+ bottom: 1.0625rem;
36
+ }
37
+
33
38
  & &__arrow-toggle {
34
39
  cursor: pointer;
35
40
 
36
41
  &--has-append {
37
- right: 3rem;
42
+ margin-left: 0.5rem;
43
+ }
44
+ }
45
+
46
+ &.q-field--disable {
47
+ opacity: 0.5;
48
+ &,
49
+ * {
50
+ cursor: not-allowed;
38
51
  }
39
52
  }
40
53
  }
@@ -1,13 +1,16 @@
1
- import type { NativeProps } from "../../utils/types";
1
+ import type { NativeProps } from "../../utils";
2
+ import type { HTMLAttributes } from "svelte/elements";
2
3
  export type QSelectOption = string | {
3
4
  label: string;
4
5
  value: string;
5
6
  };
6
- export interface QSelectProps extends NativeProps {
7
- value: string | string[] | number | number[];
7
+ export type QSelectValue = QSelectSingleValue | QSelectMultipleValue;
8
+ export type QSelectSingleValue = string | number;
9
+ export type QSelectMultipleValue = QSelectSingleValue[];
10
+ export interface QSelectProps extends NativeProps, HTMLAttributes<HTMLDivElement> {
11
+ value: QSelectValue;
8
12
  multiple?: boolean;
9
13
  options: QSelectOption[];
10
- bordered?: boolean;
11
14
  dense?: boolean;
12
15
  disable?: boolean;
13
16
  error?: boolean;
@@ -19,7 +22,6 @@ export interface QSelectProps extends NativeProps {
19
22
  rounded?: boolean;
20
23
  }
21
24
  export declare const QSelectPropsDefaults: {
22
- bordered: boolean;
23
25
  dense: boolean;
24
26
  disable: boolean;
25
27
  error: boolean;
@@ -1,5 +1,4 @@
1
1
  export const QSelectPropsDefaults = {
2
- bordered: false,
3
2
  dense: false,
4
3
  disable: false,
5
4
  error: false,
@@ -1,63 +1,58 @@
1
- <script>import { createClasses, createStyles } from "../../utils/props";
2
- export let spacing = "none", inset = false, vertical = false, color = void 0, size = "1px", text = void 0, textAlign = vertical === true ? "middle" : "center", userClasses = void 0, userStyles = void 0;
1
+ <script>import { useSize } from "../../composables";
2
+ import { createStyles, createClasses } from "../../utils";
3
+ export let spacing = "none", inset = false, vertical = false, color = void 0, size = void 0, text = void 0, textAlign = vertical === true ? "middle" : "center", userClasses = void 0;
3
4
  export { userClasses as class };
4
- export { userStyles as style };
5
+ let orientation;
5
6
  $:
6
- spacingClass = (spacing === "sm" ? "small-" : spacing === "md" ? "medium-" : spacing === "lg" ? "large-" : "") + "divider";
7
- let orientationClass;
7
+ orientation = vertical ? "vertical" : "horizontal";
8
8
  $:
9
- orientationClass = vertical === true ? "vertical" : "horizontal";
10
- $:
11
- orientationStyle = vertical === true ? {
12
- width: size
13
- } : {
14
- height: size
15
- };
16
- $:
17
- insetStyle = inset === true ? vertical === true ? { paddingBlock: "16px" } : { paddingInline: "16px" } : void 0;
18
- $:
19
- containerStyle = createStyles({
20
- ...insetStyle,
21
- display: "flex",
22
- alignItems: "center",
23
- flexDirection: vertical === true ? "column" : void 0,
24
- [vertical === true ? "height" : "width"]: "100%"
25
- });
9
+ spacingClass = useSize(spacing).class;
26
10
  $:
27
11
  classes = createClasses([
28
- "q-separator",
29
- "q-separator--" + orientationClass,
30
- spacingClass,
31
- color,
32
- userClasses
33
- ]);
34
- $:
35
- style = createStyles(
36
- {
37
- ...orientationStyle
38
- },
39
- userStyles
40
- );
12
+ vertical && "vertical",
13
+ `spacing-${spacingClass}`
14
+ ], {
15
+ component: "q-separator",
16
+ quaffClasses: [
17
+ color && `bg-${color}`
18
+ ]
19
+ });
41
20
  </script>
42
21
 
43
- {#if text !== undefined}
44
- <div class="q-separator__wrapper" style={containerStyle}>
45
- {#if (vertical === true && textAlign !== "top") || (vertical === false && textAlign !== "left")}
46
- <hr class={classes} {style} aria-orientation={orientationClass} />
47
- {/if}
48
- <div class={vertical ? "q-py-sm" : "q-px-sm"}>{text}</div>
49
- {#if (vertical === true && textAlign !== "bottom") || (vertical === false && textAlign !== "right")}
50
- <hr class={classes} {style} aria-orientation={orientationClass} />
51
- {/if}
52
- </div>
22
+ {#if text}
23
+ <div
24
+ class="q-separator__wrapper {userClasses || ''}"
25
+ class:q-separator--vertical__wrapper={vertical}
26
+ class:q-separator--inset__wrapper={inset}
27
+ {...$$restProps}
28
+ >
29
+ {#if (vertical === true && textAlign !== "top") || (vertical === false && textAlign !== "left")}
30
+ <hr
31
+ class={classes}
32
+ style:--q-separator--size={size}
33
+ aria-orientation={orientation}
34
+ />
35
+ {/if}
36
+ <div class={vertical ? "q-py-sm" : "q-px-sm"}>{text}</div>
37
+ {#if (vertical === true && textAlign !== "bottom") || (vertical === false && textAlign !== "right")}
38
+ <hr
39
+ class={classes}
40
+ style:--q-separator--size={size}
41
+ aria-orientation={orientation}
42
+ />
43
+ {/if}
44
+ </div>
53
45
  {:else}
54
- <div class="q-separator__wrapper" style={containerStyle}>
55
- <hr class={classes} {style} aria-orientation={orientationClass} />
56
- </div>
57
- {/if}
58
-
59
- <style>.q-separator {
60
- background-color: var(--outline);
61
- border: none;
62
- flex: 1 1 auto;
63
- }</style>
46
+ <div
47
+ class="q-separator__wrapper {userClasses || ''}"
48
+ class:q-separator--vertical__wrapper={vertical}
49
+ class:q-separator--inset__wrapper={inset}
50
+ {...$$restProps}
51
+ >
52
+ <hr
53
+ class={classes}
54
+ style:--q-separator--size={size}
55
+ aria-orientation={orientation}
56
+ />
57
+ </div>
58
+ {/if}
@@ -2,6 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  import type { QSeparatorProps } from "./props";
3
3
  declare const __propDef: {
4
4
  props: {
5
+ [x: string]: any;
5
6
  spacing?: QSeparatorProps["spacing"];
6
7
  inset?: QSeparatorProps["inset"];
7
8
  vertical?: QSeparatorProps["vertical"];
@@ -9,8 +10,7 @@ declare const __propDef: {
9
10
  size?: QSeparatorProps["size"];
10
11
  text?: QSeparatorProps["text"];
11
12
  textAlign?: QSeparatorProps["textAlign"];
12
- class?: string | undefined;
13
- style?: string | undefined;
13
+ class?: string | null | undefined;
14
14
  };
15
15
  events: {
16
16
  [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 QSeparatorDocs: QComponentDocs;
@@ -1,16 +1,16 @@
1
1
  export const QSeparatorPropsVertical = [
2
2
  {
3
3
  name: "spacing",
4
- type: '"none" | "sm" | "md" | "lg"',
5
- optional: false,
6
- clickableType: false,
4
+ type: "QuaffSizes",
5
+ optional: true,
6
+ clickableType: true,
7
7
  description: "",
8
8
  default: "",
9
9
  },
10
10
  {
11
11
  name: "inset",
12
12
  type: "boolean",
13
- optional: false,
13
+ optional: true,
14
14
  clickableType: false,
15
15
  description: "",
16
16
  default: "",
@@ -18,7 +18,7 @@ export const QSeparatorPropsVertical = [
18
18
  {
19
19
  name: "vertical",
20
20
  type: "true",
21
- optional: false,
21
+ optional: true,
22
22
  clickableType: false,
23
23
  description: "",
24
24
  default: "",
@@ -50,7 +50,7 @@ export const QSeparatorPropsVertical = [
50
50
  {
51
51
  name: "textAlign",
52
52
  type: '"top" | "middle" | "bottom"',
53
- optional: false,
53
+ optional: true,
54
54
  clickableType: false,
55
55
  description: "",
56
56
  default: "",
@@ -59,16 +59,16 @@ export const QSeparatorPropsVertical = [
59
59
  export const QSeparatorPropsHorizontal = [
60
60
  {
61
61
  name: "spacing",
62
- type: '"none" | "sm" | "md" | "lg"',
63
- optional: false,
64
- clickableType: false,
62
+ type: "QuaffSizes",
63
+ optional: true,
64
+ clickableType: true,
65
65
  description: "",
66
66
  default: "",
67
67
  },
68
68
  {
69
69
  name: "inset",
70
70
  type: "boolean",
71
- optional: false,
71
+ optional: true,
72
72
  clickableType: false,
73
73
  description: "",
74
74
  default: "",
@@ -76,7 +76,7 @@ export const QSeparatorPropsHorizontal = [
76
76
  {
77
77
  name: "vertical",
78
78
  type: "false",
79
- optional: false,
79
+ optional: true,
80
80
  clickableType: false,
81
81
  description: "",
82
82
  default: "",
@@ -92,7 +92,7 @@ export const QSeparatorPropsHorizontal = [
92
92
  {
93
93
  name: "size",
94
94
  type: "string",
95
- optional: false,
95
+ optional: true,
96
96
  clickableType: false,
97
97
  description: "",
98
98
  default: "",
@@ -108,7 +108,7 @@ export const QSeparatorPropsHorizontal = [
108
108
  {
109
109
  name: "textAlign",
110
110
  type: '"left" | "center" | "right"',
111
- optional: false,
111
+ optional: true,
112
112
  clickableType: false,
113
113
  description: "",
114
114
  default: "",