@budibase/bbui 1.58.13 → 2.0.1

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 (181) hide show
  1. package/LICENSE +375 -0
  2. package/dist/bbui.es.js +14 -0
  3. package/dist/bbui.es.js.map +1 -0
  4. package/package.json +68 -32
  5. package/src/ActionButton/ActionButton.svelte +102 -0
  6. package/src/ActionGroup/ActionGroup.svelte +26 -0
  7. package/src/ActionMenu/ActionMenu.svelte +44 -0
  8. package/src/Actions/autoresize_textarea.js +9 -9
  9. package/src/Actions/click_outside.js +5 -5
  10. package/src/Actions/position_dropdown.js +46 -37
  11. package/src/Avatar/Avatar.svelte +62 -0
  12. package/src/Badge/Badge.svelte +29 -0
  13. package/src/Banner/Banner.svelte +72 -0
  14. package/src/Banner/BannerDisplay.svelte +41 -0
  15. package/src/Button/Button.svelte +102 -200
  16. package/src/ButtonGroup/ButtonGroup.svelte +30 -0
  17. package/src/ClearButton/ClearButton.svelte +19 -0
  18. package/src/ColorPicker/ColorPicker.svelte +297 -0
  19. package/src/DetailSummary/DetailSummary.svelte +83 -0
  20. package/src/Divider/Divider.svelte +28 -0
  21. package/src/Drawer/Drawer.svelte +76 -51
  22. package/src/Drawer/DrawerContent.svelte +46 -0
  23. package/src/Form/Checkbox.svelte +21 -132
  24. package/src/Form/Combobox.svelte +45 -0
  25. package/src/Form/Core/Checkbox.svelte +69 -0
  26. package/src/Form/Core/CheckboxGroup.svelte +68 -0
  27. package/src/Form/Core/Combobox.svelte +142 -0
  28. package/src/Form/Core/DatePicker.svelte +257 -0
  29. package/src/Form/Core/Dropzone.svelte +453 -0
  30. package/src/Form/Core/InputDropdown.svelte +228 -0
  31. package/src/Form/Core/Multiselect.svelte +90 -0
  32. package/src/Form/Core/Picker.svelte +259 -0
  33. package/src/Form/Core/PickerDropdown.svelte +415 -0
  34. package/src/Form/Core/RadioGroup.svelte +48 -0
  35. package/src/Form/Core/RichTextField.svelte +42 -0
  36. package/src/Form/Core/Search.svelte +105 -0
  37. package/src/Form/Core/Select.svelte +75 -0
  38. package/src/Form/Core/Slider.svelte +86 -0
  39. package/src/Form/Core/Stepper.svelte +172 -0
  40. package/src/Form/Core/Switch.svelte +37 -0
  41. package/src/Form/Core/TextArea.svelte +78 -0
  42. package/src/Form/Core/TextField.svelte +119 -0
  43. package/src/Form/Core/index.js +15 -0
  44. package/src/Form/DatePicker.svelte +39 -0
  45. package/src/Form/Dropzone.svelte +42 -0
  46. package/src/Form/Field.svelte +42 -0
  47. package/src/Form/FieldLabel.svelte +32 -0
  48. package/src/Form/Input.svelte +41 -187
  49. package/src/Form/InputDropdown.svelte +55 -0
  50. package/src/Form/Multiselect.svelte +36 -320
  51. package/src/Form/PickerDropdown.svelte +132 -0
  52. package/src/Form/RadioGroup.svelte +42 -0
  53. package/src/Form/RichTextField.svelte +36 -0
  54. package/src/Form/Search.svelte +36 -0
  55. package/src/Form/Select.svelte +48 -88
  56. package/src/Form/Slider.svelte +16 -91
  57. package/src/Form/Stepper.svelte +45 -0
  58. package/src/Form/TextArea.svelte +30 -128
  59. package/src/Form/Toggle.svelte +20 -110
  60. package/src/Icon/Icon.svelte +91 -0
  61. package/src/Icon/IconAvatar.svelte +58 -0
  62. package/src/IconPicker/IconPicker.svelte +177 -0
  63. package/src/IconSideNav/IconSideNav.svelte +14 -0
  64. package/src/IconSideNav/IconSideNavItem.svelte +56 -0
  65. package/src/InlineAlert/InlineAlert.svelte +60 -0
  66. package/src/Label/Label.svelte +29 -0
  67. package/src/Layout/Layout.svelte +94 -0
  68. package/src/Layout/Page.svelte +32 -0
  69. package/src/Link/Link.svelte +24 -0
  70. package/src/List/List.svelte +28 -0
  71. package/src/List/ListItem.svelte +90 -0
  72. package/src/Markdown/MarkdownEditor.svelte +60 -0
  73. package/src/Markdown/MarkdownViewer.svelte +70 -0
  74. package/src/Markdown/SpectrumMDE.svelte +184 -0
  75. package/src/Menu/Item.svelte +96 -0
  76. package/src/Menu/Menu.svelte +7 -0
  77. package/src/Menu/Menu.svench +19 -0
  78. package/src/Menu/Section.svelte +10 -0
  79. package/src/Menu/Separator.svelte +1 -0
  80. package/src/Modal/Content.svelte +0 -11
  81. package/src/Modal/CustomContent.svelte +9 -6
  82. package/src/Modal/Modal.svelte +104 -51
  83. package/src/Modal/ModalContent.svelte +131 -73
  84. package/src/Modal/QuizModal.svelte +16 -17
  85. package/src/Notification/Notification.svelte +70 -0
  86. package/src/Notification/NotificationDisplay.svelte +43 -0
  87. package/src/Pagination/Pagination.svelte +57 -0
  88. package/src/Popover/Popover.svelte +43 -33
  89. package/src/ProgressBar/ProgressBar.svelte +67 -0
  90. package/src/ProgressCircle/ProgressCircle.svelte +62 -0
  91. package/src/SideNavigation/Item.svelte +61 -0
  92. package/src/SideNavigation/Navigation.svelte +12 -0
  93. package/src/StatusLight/StatusLight.svelte +80 -0
  94. package/src/Stores/Notifications.svench.svx +1 -1
  95. package/src/Stores/banner.js +65 -0
  96. package/src/Stores/notifications.js +75 -38
  97. package/src/Table/ArrayRenderer.svelte +17 -0
  98. package/src/Table/AttachmentRenderer.svelte +73 -0
  99. package/src/Table/BoldRenderer.svelte +15 -0
  100. package/src/Table/BooleanRenderer.svelte +42 -0
  101. package/src/Table/CellRenderer.svelte +69 -0
  102. package/src/Table/CodeRenderer.svelte +14 -0
  103. package/src/Table/DateTimeRenderer.svelte +29 -0
  104. package/src/Table/InternalRenderer.svelte +24 -0
  105. package/src/Table/RelationshipRenderer.svelte +40 -0
  106. package/src/Table/SelectEditRenderer.svelte +28 -0
  107. package/src/Table/StringRenderer.svelte +14 -0
  108. package/src/Table/Table.svelte +635 -0
  109. package/src/Table/index.js +1 -0
  110. package/src/Tabs/Tab.svelte +88 -0
  111. package/src/Tabs/Tabs.svelte +130 -0
  112. package/src/Tags/Tag.svelte +43 -0
  113. package/src/Tags/Tags.svelte +7 -0
  114. package/src/Tooltip/Tooltip.svelte +34 -0
  115. package/src/Tooltip/TooltipWrapper.svelte +60 -0
  116. package/src/TreeView/Item.svelte +41 -0
  117. package/src/TreeView/Tree.svelte +16 -0
  118. package/src/Typography/Body.svelte +21 -0
  119. package/src/Typography/Code.svelte +10 -0
  120. package/src/Typography/Detail.svelte +19 -0
  121. package/src/Typography/Heading.svelte +17 -0
  122. package/{dist → src}/bbui.css +2 -99
  123. package/src/context.js +1 -1
  124. package/src/helpers.js +134 -0
  125. package/src/index.js +95 -40
  126. package/src/spectrum-icons-rollup.js +31 -0
  127. package/src/spectrum-icons-vite.js +31 -0
  128. package/dist/dist/bundle.css +0 -42
  129. package/dist/dist/bundle.css.map +0 -64
  130. package/dist/index.js +0 -36193
  131. package/dist/index.mjs +0 -36147
  132. package/src/Button/Close.svelte +0 -59
  133. package/src/Button/Close.svench +0 -36
  134. package/src/Button/TextButton.svelte +0 -128
  135. package/src/Button/TextButton.svench +0 -69
  136. package/src/DatePicker/DatePicker.svelte +0 -45
  137. package/src/DatePicker/DatePicker.svench +0 -17
  138. package/src/DropdownMenu/DropdownMenu.svelte +0 -77
  139. package/src/DropdownMenu/DropdownMenu.svench +0 -161
  140. package/src/Dropzone/Dropzone.svelte +0 -294
  141. package/src/Dropzone/Dropzone.svench +0 -17
  142. package/src/Dropzone/fileTypes.js +0 -5
  143. package/src/Form/Checkbox.svench.svx +0 -67
  144. package/src/Form/DataList.svelte +0 -158
  145. package/src/Form/DataList.svench +0 -57
  146. package/src/Form/Input.svench +0 -62
  147. package/src/Form/Multiselect.svench +0 -63
  148. package/src/Form/Radio.svelte +0 -133
  149. package/src/Form/Radio.svench.svx +0 -64
  150. package/src/Form/RichText.svelte +0 -61
  151. package/src/Form/RichText.svench.svx +0 -40
  152. package/src/Form/Select.svench +0 -62
  153. package/src/Form/Slider.svench +0 -26
  154. package/src/Form/TextArea.svench +0 -30
  155. package/src/Form/Toggle.svench +0 -21
  156. package/src/Icons/Contribution.svelte +0 -14
  157. package/src/Icons/Icon.svelte +0 -36
  158. package/src/Icons/Icon.svench +0 -109
  159. package/src/Icons/icon-paths.js +0 -136
  160. package/src/Links/Home.svelte +0 -51
  161. package/src/Links/Home.svench +0 -19
  162. package/src/List/Items/DetailSummary.svelte +0 -85
  163. package/src/List/Items/DetailSummary.svench +0 -53
  164. package/src/List/Search.svelte +0 -34
  165. package/src/List/Search.svench +0 -8
  166. package/src/Spacer/Spacer.svelte +0 -50
  167. package/src/Spacer/Spacer.svench +0 -51
  168. package/src/Styleguide/Body.svelte +0 -72
  169. package/src/Styleguide/Borders.svench +0 -175
  170. package/src/Styleguide/Budibase-logo.svelte +0 -68
  171. package/src/Styleguide/Color.svench +0 -201
  172. package/src/Styleguide/Heading.svelte +0 -74
  173. package/src/Styleguide/Label.svelte +0 -70
  174. package/src/Styleguide/Logo.svelte +0 -16
  175. package/src/Styleguide/Logo.svench +0 -8
  176. package/src/Styleguide/Spacing.svench +0 -191
  177. package/src/Styleguide/Typography.svench +0 -227
  178. package/src/Switcher/Switcher.svelte +0 -47
  179. package/src/Switcher/Switcher.svench +0 -27
  180. package/src/index.svench.svx +0 -35
  181. package/src/utils/buildStyle.js +0 -14
@@ -1,294 +0,0 @@
1
- <script>
2
- import { Heading, Body, Button } from "../"
3
- import { FILE_TYPES } from "./fileTypes"
4
-
5
- const BYTES_IN_KB = 1000
6
- const BYTES_IN_MB = 1000000
7
-
8
- export let icons = {
9
- image: "fas fa-file-image",
10
- code: "fas fa-file-code",
11
- file: "fas fa-file",
12
- fileUpload: "fas fa-upload",
13
- }
14
-
15
- export let files = []
16
- export let fileSizeLimit = BYTES_IN_MB * 20
17
- export let processFiles
18
- export let handleFileTooLarge
19
-
20
- let selectedImageIdx = 0
21
- let fileDragged = false
22
- // Generate a random ID so that multiple dropzones on the page don't conflict
23
- let id = Math.random().toString(36).substring(7)
24
-
25
- $: selectedImage = files ? files[selectedImageIdx] : null
26
-
27
- function determineFileIcon(extension) {
28
- const ext = extension.toLowerCase()
29
-
30
- if (FILE_TYPES.IMAGE.includes(ext)) return icons.image
31
- if (FILE_TYPES.CODE.includes(ext)) return icons.code
32
-
33
- return icons.file
34
- }
35
-
36
- async function processFileList(fileList) {
37
- if (Array.from(fileList).some(file => file.size >= fileSizeLimit)) {
38
- handleFileTooLarge(fileSizeLimit, file);
39
- return
40
- }
41
-
42
- const processedFiles = await processFiles(fileList);
43
-
44
- files = [...processedFiles, ...files]
45
- selectedImageIdx = 0
46
- }
47
-
48
- async function removeFile() {
49
- files.splice(selectedImageIdx, 1)
50
- files = files
51
- selectedImageIdx = 0
52
- }
53
-
54
- function navigateLeft() {
55
- selectedImageIdx -= 1
56
- }
57
-
58
- function navigateRight() {
59
- selectedImageIdx += 1
60
- }
61
-
62
- function handleFile(evt) {
63
- processFileList(evt.target.files)
64
- }
65
-
66
- function handleDragOver(evt) {
67
- evt.preventDefault()
68
- fileDragged = true
69
- }
70
-
71
- function handleDragLeave(evt) {
72
- evt.preventDefault()
73
- fileDragged = false
74
- }
75
-
76
- function handleDrop(evt) {
77
- evt.preventDefault()
78
- processFileList(evt.dataTransfer.files)
79
- fileDragged = false
80
- }
81
- </script>
82
-
83
- <div
84
- class="dropzone"
85
- on:dragover={handleDragOver}
86
- on:dragleave={handleDragLeave}
87
- on:dragenter={handleDragOver}
88
- on:drop={handleDrop}
89
- class:fileDragged>
90
- {#if selectedImage}
91
- <ul>
92
- <li>
93
- <header>
94
- <div>
95
- <i class={determineFileIcon(selectedImage.extension)} />
96
- <span class="filename">{selectedImage.name}</span>
97
- </div>
98
- <p>
99
- {#if selectedImage.size <= BYTES_IN_MB}
100
- {selectedImage.size / BYTES_IN_KB}KB
101
- {:else}{selectedImage.size / BYTES_IN_MB}MB{/if}
102
- </p>
103
- </header>
104
- <div class="delete-button" on:click={removeFile}>
105
- <i class="ri-close-circle-fill"></i>
106
- </div>
107
- {#if selectedImageIdx !== 0}
108
- <div class="nav left" on:click={navigateLeft}>
109
- <i class="ri-arrow-left-circle-fill"></i>
110
- </div>
111
- {/if}
112
- <img src={selectedImage.url} />
113
- {#if selectedImageIdx !== files.length - 1}
114
- <div class="nav right" on:click={navigateRight}>
115
- <i class="ri-arrow-right-circle-fill"></i>
116
- </div>
117
- {/if}
118
- </li>
119
- </ul>
120
- {/if}
121
- <i class={icons.fileUpload} />
122
- <input {id} type="file" multiple on:change={handleFile} {...$$restProps} />
123
- <i class="ri-upload-cloud-line"></i>
124
- <p class="drop">Drop your files here</p>
125
- <label for={id}>Select a file from your computer</label>
126
- </div>
127
-
128
- <style>
129
- .dropzone {
130
- padding: var(--spacing-l);
131
- border: 2px dashed var(--grey-4);
132
- text-align: center;
133
- display: flex;
134
- align-items: center;
135
- flex-direction: column;
136
- border-radius: 10px;
137
- transition: all 0.3s;
138
- }
139
-
140
- .fileDragged {
141
- border: 2px dashed var(--grey-7);
142
- background: var(--blue-light);
143
- }
144
-
145
- input[type="file"] {
146
- display: none;
147
- }
148
-
149
- label {
150
- font-family: var(--font-sans);
151
- font-size: var(--font-size-s);
152
- cursor: pointer;
153
- overflow: hidden;
154
- color: var(--grey-7);
155
- text-rendering: optimizeLegibility;
156
- min-width: auto;
157
- outline: none;
158
- font-feature-settings: "case" 1, "rlig" 1, "calt" 0;
159
- -webkit-box-align: center;
160
- flex-shrink: 0;
161
- align-items: center;
162
- justify-content: center;
163
- width: 100%;
164
- text-decoration: underline;
165
- }
166
-
167
-
168
- .drop {
169
- font-family: var(--font-sans);
170
- font-size: var(--font-size-s);
171
- margin: 12px 0;
172
- }
173
-
174
- div.nav {
175
- padding: var(--spacing-xs);
176
- position: absolute;
177
- display: flex;
178
- align-items: center;
179
- bottom: var(--spacing-s);
180
- border-radius: 5px;
181
- transition: 0.2s transform;
182
- }
183
-
184
- .nav:hover {
185
- cursor: pointer;
186
- color: var(--blue);
187
- }
188
-
189
- .left {
190
- left: var(--spacing-s);
191
- }
192
-
193
- .right {
194
- right: var(--spacing-s);
195
- }
196
-
197
- li {
198
- position: relative;
199
- height: 300px;
200
- background: var(--grey-7);
201
- display: flex;
202
- justify-content: center;
203
- border-radius: 10px;
204
- }
205
-
206
- img {
207
- border-radius: 10px;
208
- width: 100%;
209
- box-shadow: 0 var(--spacing-s) 12px rgba(0, 0, 0, 0.15);
210
- object-fit: contain;
211
- }
212
-
213
- i {
214
- font-size: 2rem;
215
- color: var(--ink);
216
- }
217
-
218
- i:hover{
219
- cursor: pointer;
220
- color: var(--background);
221
- }
222
-
223
- .file-icon {
224
- color: var(--background);
225
- font-size: 2em;
226
- margin-right: var(--spacing-s);
227
- }
228
-
229
- ul {
230
- padding: 0;
231
- display: grid;
232
- grid-gap: var(--spacing-s);
233
- list-style-type: none;
234
- width: 100%;
235
- }
236
-
237
- header {
238
- display: flex;
239
- align-items: center;
240
- justify-content: space-between;
241
- position: absolute;
242
- background: linear-gradient(
243
- 180deg,
244
- rgb(255, 255, 255),
245
- rgba(255, 255, 255, 0)
246
- );
247
- width: 100%;
248
- border-top-left-radius: 10px;
249
- border-top-right-radius: 10px;
250
- height: 60px;
251
- }
252
-
253
- header > div {
254
- color: var(--ink);
255
- display: flex;
256
- align-items: center;
257
- font-size: 12px;
258
- margin-left: var(--spacing-m);
259
- width: 60%;
260
- overflow: hidden;
261
- white-space: nowrap;
262
- text-overflow: ellipsis;
263
- }
264
-
265
- .filename {
266
- overflow: hidden;
267
- margin-left: 5px;
268
- text-overflow: ellipsis;
269
- }
270
-
271
- header > p {
272
- color: var(--grey-5);
273
- margin-right: var(--spacing-m);
274
- }
275
-
276
- .delete-button {
277
- position: absolute;
278
- top: var(--spacing-s);
279
- right: var(--spacing-s);
280
- padding: var(--spacing-s);
281
- border-radius: 10px;
282
- transition: all 0.3s;
283
- }
284
-
285
- .delete-button i {
286
- font-size: 2em;
287
- color: var(--ink);
288
- }
289
-
290
- .delete-button:hover {
291
- cursor: pointer;
292
- color: var(--red);
293
- }
294
- </style>
@@ -1,17 +0,0 @@
1
- <script>
2
- import { View } from "svench";
3
- import Dropzone from "./Dropzone.svelte";
4
-
5
- async function processFiles(files) {
6
- console.log("Processing", files);
7
- return files;
8
- }
9
-
10
- function handleFileTooLarge() {
11
- alert("File too large.");
12
- }
13
- </script>
14
-
15
- <View name="dropzone">
16
- <Dropzone {processFiles} {handleFileTooLarge} />
17
- </View>
@@ -1,5 +0,0 @@
1
- export const FILE_TYPES = {
2
- IMAGE: ["png", "tiff", "gif", "raw", "jpg", "jpeg", "svg"],
3
- CODE: ["js", "rs", "py", "java", "rb", "hs", "yml"],
4
- DOCUMENT: ["odf", "docx", "doc", "pdf", "csv"],
5
- };
@@ -1,67 +0,0 @@
1
- <script>
2
- import { View } from "svench";
3
- import Checkbox from "./Checkbox.svelte";
4
-
5
- let checked = false
6
-
7
- let menu = [
8
- {text: 'Cookies and cream', checked: false},
9
- {text: 'Mint choc chip', checked: false},
10
- {text: 'Raspberry ripple', checked: true}
11
- ];
12
- </script>
13
-
14
- <View name="Single checkbox">
15
- <Checkbox bind:checked value="value">
16
- <label for="value">One single checkbox with text</label>
17
- </Checkbox>
18
- </View>
19
-
20
- <View name="Single disabled checkbox">
21
- <Checkbox disabled checked value="value">
22
- <label for="someOtherValue">A disabled checkbox</label>
23
- </Checkbox>
24
- </View>
25
-
26
- <View name="No text">
27
- <Checkbox bind:checked value="somevalue" />
28
- </View>
29
-
30
- ## Multiple checkboxes
31
- Use an array and an each block to use multiple checkboxes
32
- ```svelte
33
- <script>
34
- let menu = [
35
- {text: 'Cookies and cream', checked: false},
36
- {text: 'Mint choc chip', checked: false},
37
- {text: 'Raspberry ripple', checked: true}
38
- ];
39
- </script>
40
-
41
- {#each menu as {text, checked}}
42
- <Checkbox value={text} bind:checked>
43
- <label for={text}>{text}</label>
44
- </Checkbox>
45
- {/each}
46
- ```
47
-
48
- <View name="Multiple checkboxes">
49
- <div class="container">
50
- {#each menu as {text, checked}}
51
- <Checkbox value={text} bind:checked>
52
- <label for={text}>{text}</label>
53
- </Checkbox>
54
- {/each}
55
- </div>
56
- </View>
57
-
58
- <style>
59
- label {
60
- display: grid;
61
- place-items: center;
62
- }
63
- .container {
64
- display: grid;
65
- grid-gap: 10px;
66
- }
67
- </style>
@@ -1,158 +0,0 @@
1
- <script>
2
- import Icon from "../Icons/Icon.svelte";
3
- import Label from "../Styleguide/Label.svelte";
4
- import { createEventDispatcher } from "svelte";
5
-
6
- export let label = undefined;
7
- export let value = "";
8
- export let name = undefined;
9
- export let thin = false;
10
- export let extraThin = false;
11
- export let secondary = false;
12
- export let outline = false;
13
- export let disabled = false;
14
-
15
- const dispatch = createEventDispatcher();
16
- let focus = false
17
-
18
- const updateValue = e => {
19
- value = e.target.value;
20
- };
21
-
22
- function handleFocus(e) {
23
- focus = true;
24
- dispatch("focus", e);
25
- }
26
-
27
- function handleBlur(e) {
28
- focus = false;
29
- dispatch("blur", e);
30
- }
31
- </script>
32
-
33
- <style>
34
- .container {
35
- position: relative !important;
36
- display: block;
37
- border-radius: var(--border-radius-s);
38
- border: var(--border-transparent);
39
- background-color: var(--background);
40
- }
41
- .container.outline {
42
- border: var(--border-dark);
43
- }
44
- .container.focus {
45
- border: var(--border-blue);
46
- }
47
-
48
- input,
49
- select {
50
- border-radius: var(--border-radius-s);
51
- font-size: var(--font-size-m);
52
- outline: none;
53
- border: none;
54
- color: var(--ink);
55
- text-align: left;
56
- background-color: transparent;
57
- }
58
- select {
59
- display: block !important;
60
- width: 100% !important;
61
- padding: var(--spacing-m) 2rem var(--spacing-m) var(--spacing-m);
62
- appearance: none !important;
63
- -webkit-appearance: none !important;
64
- -moz-appearance: none !important;
65
- align-items: center;
66
- white-space: pre;
67
- opacity: 0;
68
- }
69
- input {
70
- position: absolute;
71
- top: 0;
72
- left: 0;
73
- width: calc(100% - 30px);
74
- height: 100%;
75
- border: none;
76
- box-sizing: border-box;
77
- padding: var(--spacing-m) 0 var(--spacing-m) var(--spacing-m);
78
- }
79
-
80
- select.thin,
81
- input.thin {
82
- font-size: var(--font-size-xs);
83
- }
84
- select.extraThin,
85
- input.extraThin {
86
- font-size: var(--font-size-xs);
87
- padding: var(--spacing-s) 0 var(--spacing-s) var(--spacing-m);
88
- }
89
- .secondary {
90
- background: var(--grey-2);
91
- }
92
-
93
- select:disabled,
94
- input:disabled,
95
- .disabled {
96
- background: var(--grey-4);
97
- color: var(--grey-6);
98
- }
99
-
100
- .pointer {
101
- right: 0 !important;
102
- top: 0 !important;
103
- bottom: 0 !important;
104
- position: absolute !important;
105
- pointer-events: none !important;
106
- align-items: center !important;
107
- display: flex !important;
108
- box-sizing: border-box;
109
- }
110
-
111
- .editable-pointer {
112
- border-style: solid;
113
- border-width: 0 0 0 1px;
114
- border-color: var(--grey-4);
115
- padding-left: var(--spacing-xs);
116
- }
117
- .editable-pointer :global(svg) {
118
- margin-right: var(--spacing-xs);
119
- fill: var(--ink)
120
- }
121
- </style>
122
-
123
- {#if label}
124
- <Label extraSmall grey forAttr={name}>{label}</Label>
125
- {/if}
126
- <div class="container" class:disabled class:secondary class:outline class:focus>
127
- <select
128
- {name}
129
- class:thin
130
- class:extraThin
131
- class:secondary
132
- {disabled}
133
- on:change
134
- on:focus={handleFocus}
135
- on:blur={handleBlur}
136
- bind:value>
137
- <slot />
138
- </select>
139
- <slot name="custom-input" />
140
- <input
141
- class:thin
142
- class:extraThin
143
- class:secondary
144
- class:disabled
145
- {disabled}
146
- on:change={updateValue}
147
- on:input={updateValue}
148
- on:focus={handleFocus}
149
- on:blur={e => {
150
- updateValue(e);
151
- handleBlur(e);
152
- }}
153
- value={value || ""}
154
- type="text" />
155
- <div class="pointer editable-pointer">
156
- <Icon name="arrowdown" />
157
- </div>
158
- </div>
@@ -1,57 +0,0 @@
1
- <script>
2
- import { View } from "svench";
3
- import Select from "./Select.svelte";
4
- import DataList from "./DataList.svelte";
5
- import Spacer from "../Spacer/Spacer.svelte"
6
-
7
- const options = ["Chocolate", "Vanilla", "Strawberry Cheesecake"];
8
- </script>
9
-
10
- <View name="default">
11
- <DataList name="Test" label="Flavour">
12
- {#each options as option}
13
- <option value={option}>{option}</option>
14
- {/each}
15
- </DataList>
16
- </View>
17
-
18
- <View name="secondary">
19
- <DataList secondary name="Test" label="Flavour">
20
- {#each options as option}
21
- <option value={option}>{option}</option>
22
- {/each}
23
- </DataList>
24
- </View>
25
-
26
- <View name="outline">
27
- <DataList outline name="Test" label="Flavour">
28
- {#each options as option}
29
- <option value={option}>{option}</option>
30
- {/each}
31
- </DataList>
32
- </View>
33
-
34
- <View name="disabled">
35
- <DataList disabled name="Test" label="Flavour">
36
- {#each options as option}
37
- <option value={option}>{option}</option>
38
- {/each}
39
- </DataList>
40
- </View>
41
-
42
- <View name="thin">
43
- <DataList thin name="Test" label="Flavour">
44
- {#each options as option}
45
- <option value={option}>{option}</option>
46
- {/each}
47
- </DataList>
48
- </View>
49
-
50
- <View name="extraThin">
51
- <DataList extraThin name="Test" label="Flavour">
52
- {#each options as option}
53
- <option value={option}>{option}</option>
54
- {/each}
55
- </DataList>
56
- </View>
57
-
@@ -1,62 +0,0 @@
1
- <script>
2
- import { View } from "svench";
3
- import Input from "./Input.svelte";
4
- import Button from "../Button/Button.svelte";
5
- </script>
6
-
7
- <View name="default">
8
- <Input placeholder="Enter your name" label="Name" />
9
- </View>
10
-
11
- <View name="presentation">
12
- <Input presentation placeholder="Enter your name" label="Name" />
13
- </View>
14
-
15
- <View name="outline">
16
- <Input outline placeholder="Enter your name" label="Name" />
17
- </View>
18
-
19
- <View name="disabled">
20
- <Input disabled placeholder="Enter your name" label="Name" />
21
- </View>
22
-
23
- <View name="disabled with value">
24
- <Input value="Some text" disabled placeholder="Enter your name" label="Name" />
25
- </View>
26
-
27
- <View name="thin">
28
- <Input thin placeholder="Enter your name" label="Name" />
29
- </View>
30
-
31
- <View name="extraThin">
32
- <Input extraThin placeholder="Enter your name" label="Name" />
33
- </View>
34
-
35
- <View name="large">
36
- <Input large placeholder="Enter your name" label="Name" />
37
- </View>
38
-
39
- <View name="border">
40
- <Input border presentation placeholder="Enter your name" label="Name" />
41
- </View>
42
-
43
-
44
- <View name="number">
45
- <Input type="number" placeholder="Enter your age" label="Age" />
46
- </View>
47
-
48
- <View name="with edit buttons">
49
- <Input
50
- thin
51
- edit
52
- placeholder="Enter your name"
53
- label="Name"
54
- on:save={console.log} />
55
- </View>
56
- <View name="with error message">
57
- <Input
58
- placeholder="Enter your name"
59
- label="Name"
60
- error="This is an error message!"
61
- on:save={console.log} />
62
- </View>