@budibase/bbui 1.58.13 → 2.0.0

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
@@ -0,0 +1,86 @@
1
+ <script>
2
+ import "@spectrum-css/slider/dist/index-vars.css"
3
+ import { createEventDispatcher } from "svelte"
4
+
5
+ export let value = false
6
+ export let id = null
7
+ export let disabled = false
8
+ export let min = 0
9
+ export let max = 100
10
+ export let step = 1
11
+
12
+ const dispatch = createEventDispatcher()
13
+ const onChange = event => {
14
+ dispatch("change", event.target.value)
15
+ }
16
+ </script>
17
+
18
+ <div>
19
+ <input
20
+ type="range"
21
+ {min}
22
+ {max}
23
+ {step}
24
+ {value}
25
+ {disabled}
26
+ {id}
27
+ on:change={onChange}
28
+ />
29
+ </div>
30
+
31
+ <style>
32
+ div {
33
+ display: grid;
34
+ place-items: center;
35
+ }
36
+
37
+ input {
38
+ width: 100%;
39
+ padding: 0;
40
+ margin: 0;
41
+ -webkit-appearance: none;
42
+ background: transparent;
43
+ }
44
+ input::-webkit-slider-thumb {
45
+ -webkit-appearance: none;
46
+ }
47
+ input:focus {
48
+ outline: none;
49
+ }
50
+
51
+ input[type="range"]::-webkit-slider-thumb {
52
+ -webkit-appearance: none;
53
+ border: 2px solid var(--spectrum-global-color-gray-700);
54
+ height: 16px;
55
+ width: 16px;
56
+ border-radius: 50%;
57
+ background: var(--background);
58
+ cursor: pointer;
59
+ transition: background 130ms ease-out;
60
+ margin-top: -7px;
61
+ }
62
+ input[type="range"]::-moz-range-thumb {
63
+ border: 2px solid var(--spectrum-global-color-gray-700);
64
+ height: 12px;
65
+ width: 12px;
66
+ border-radius: 50%;
67
+ background: var(--background);
68
+ cursor: pointer;
69
+ transition: background 130ms ease-out;
70
+ }
71
+
72
+ input[type="range"]::-webkit-slider-runnable-track {
73
+ width: 100%;
74
+ height: 2px;
75
+ cursor: pointer;
76
+ background: var(--spectrum-global-color-gray-300);
77
+ border-radius: 2px;
78
+ }
79
+ input[type="range"]::-moz-range-track {
80
+ width: 100%;
81
+ height: 2px;
82
+ cursor: pointer;
83
+ background: var(--spectrum-global-color-gray-300);
84
+ border-radius: 2px;
85
+ }
86
+ </style>
@@ -0,0 +1,172 @@
1
+ <script>
2
+ import "@spectrum-css/textfield/dist/index-vars.css"
3
+ import "@spectrum-css/actionbutton/dist/index-vars.css"
4
+ import "@spectrum-css/stepper/dist/index-vars.css"
5
+ import { createEventDispatcher } from "svelte"
6
+
7
+ export let value = null
8
+ export let placeholder = null
9
+ export let disabled = false
10
+ export let error = null
11
+ export let id = null
12
+ export let readonly = false
13
+ export let updateOnChange = true
14
+ export let quiet = false
15
+ export let min
16
+ export let max
17
+ export let step
18
+
19
+ const dispatch = createEventDispatcher()
20
+ let focus = false
21
+
22
+ // We need to keep the field value bound to a different variable in order
23
+ // to properly handle erroneous values. If we don't do this then it is
24
+ // possible for the field to show stale text which does not represent the
25
+ // real value. The reactive statement is to ensure that external changes to
26
+ // the value prop are reflected.
27
+ let fieldValue = value
28
+ $: fieldValue = value
29
+
30
+ // Ensure step is always a numeric value defaulting to 1
31
+ $: step = step == null || isNaN(step) ? 1 : step
32
+
33
+ const updateValue = value => {
34
+ if (readonly) {
35
+ return
36
+ }
37
+ const float = parseFloat(value)
38
+ value = isNaN(float) ? null : float
39
+ if (value != null) {
40
+ if (min != null && value < min) {
41
+ value = min
42
+ } else if (max != null && value > max) {
43
+ value = max
44
+ }
45
+ }
46
+ dispatch("change", value)
47
+ fieldValue = value
48
+ }
49
+
50
+ const onFocus = () => {
51
+ if (readonly) {
52
+ return
53
+ }
54
+ focus = true
55
+ }
56
+
57
+ const onBlur = event => {
58
+ if (readonly) {
59
+ return
60
+ }
61
+ focus = false
62
+ updateValue(event.target.value)
63
+ }
64
+
65
+ const onInput = event => {
66
+ if (readonly || !updateOnChange) {
67
+ return
68
+ }
69
+ updateValue(event.target.value)
70
+ }
71
+
72
+ const updateValueOnEnter = event => {
73
+ if (readonly) {
74
+ return
75
+ }
76
+ if (event.key === "Enter") {
77
+ updateValue(event.target.value)
78
+ }
79
+ }
80
+
81
+ const stepUp = () => {
82
+ if (value == null || isNaN(value)) {
83
+ updateValue(step)
84
+ } else {
85
+ updateValue(value + step)
86
+ }
87
+ }
88
+
89
+ const stepDown = () => {
90
+ if (value == null || isNaN(value)) {
91
+ updateValue(step)
92
+ } else {
93
+ updateValue(value - step)
94
+ }
95
+ }
96
+ </script>
97
+
98
+ <div
99
+ class="spectrum-Stepper"
100
+ class:spectrum-Stepper--quiet={quiet}
101
+ class:is-invalid={!!error}
102
+ class:is-disabled={disabled}
103
+ class:is-focused={focus}
104
+ >
105
+ {#if error}
106
+ <svg
107
+ class="spectrum-Icon spectrum-Icon--sizeM spectrum-Textfield-validationIcon"
108
+ focusable="false"
109
+ aria-hidden="true"
110
+ >
111
+ <use xlink:href="#spectrum-icon-18-Alert" />
112
+ </svg>
113
+ {/if}
114
+
115
+ <div class="spectrum-Textfield spectrum-Stepper-textfield">
116
+ <input
117
+ {disabled}
118
+ {readonly}
119
+ {id}
120
+ bind:value={fieldValue}
121
+ placeholder={placeholder || ""}
122
+ type="number"
123
+ class="spectrum-Textfield-input spectrum-Stepper-input"
124
+ on:click
125
+ on:blur
126
+ on:focus
127
+ on:input
128
+ on:keyup
129
+ on:blur={onBlur}
130
+ on:focus={onFocus}
131
+ on:input={onInput}
132
+ on:keyup={updateValueOnEnter}
133
+ />
134
+ </div>
135
+ <span class="spectrum-Stepper-buttons">
136
+ <button
137
+ class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-Stepper-stepUp"
138
+ tabindex="-1"
139
+ on:click={stepUp}
140
+ >
141
+ <svg
142
+ class="spectrum-Icon spectrum-UIIcon-ChevronUp75"
143
+ focusable="false"
144
+ aria-hidden="true"
145
+ >
146
+ <use xlink:href="#spectrum-css-icon-Chevron75" />
147
+ </svg>
148
+ </button>
149
+ <button
150
+ class="spectrum-ActionButton spectrum-ActionButton--sizeM spectrum-Stepper-stepDown"
151
+ tabindex="-1"
152
+ on:click={stepDown}
153
+ >
154
+ <svg
155
+ class="spectrum-Icon spectrum-UIIcon-ChevronDown75"
156
+ focusable="false"
157
+ aria-hidden="true"
158
+ >
159
+ <use xlink:href="#spectrum-css-icon-Chevron75" />
160
+ </svg>
161
+ </button>
162
+ </span>
163
+ </div>
164
+
165
+ <style>
166
+ .spectrum-Stepper {
167
+ width: 100%;
168
+ }
169
+ .spectrum-Stepper::before {
170
+ display: none;
171
+ }
172
+ </style>
@@ -0,0 +1,37 @@
1
+ <script>
2
+ import "@spectrum-css/switch/dist/index-vars.css"
3
+ import { createEventDispatcher } from "svelte"
4
+
5
+ export let value = false
6
+ export let id = null
7
+ export let text = null
8
+ export let disabled = false
9
+ export let dataCy = null
10
+
11
+ const dispatch = createEventDispatcher()
12
+ const onChange = event => {
13
+ dispatch("change", event.target.checked)
14
+ }
15
+ </script>
16
+
17
+ <div class="spectrum-Switch spectrum-Switch--emphasized">
18
+ <input
19
+ data-cy={dataCy}
20
+ checked={value}
21
+ {disabled}
22
+ on:change={onChange}
23
+ {id}
24
+ type="checkbox"
25
+ class="spectrum-Switch-input"
26
+ />
27
+ <span class="spectrum-Switch-switch" />
28
+ {#if text}
29
+ <label class="spectrum-Switch-label" for={id}>{text}</label>
30
+ {/if}
31
+ </div>
32
+
33
+ <style>
34
+ .spectrum-Switch-input {
35
+ opacity: 0;
36
+ }
37
+ </style>
@@ -0,0 +1,78 @@
1
+ <script>
2
+ import "@spectrum-css/textfield/dist/index-vars.css"
3
+ import { createEventDispatcher } from "svelte"
4
+
5
+ export let value = ""
6
+ export let placeholder = null
7
+ export let disabled = false
8
+ export let error = null
9
+ export let id = null
10
+ export let height = null
11
+ export let minHeight = null
12
+ export const getCaretPosition = () => ({
13
+ start: textarea.selectionStart,
14
+ end: textarea.selectionEnd,
15
+ })
16
+ export let align = null
17
+
18
+ let focus = false
19
+ let textarea
20
+ const dispatch = createEventDispatcher()
21
+ const onChange = event => {
22
+ dispatch("change", event.target.value)
23
+ focus = false
24
+ }
25
+
26
+ const getStyleString = (attribute, value) => {
27
+ if (!attribute || value == null) {
28
+ return ""
29
+ }
30
+ if (isNaN(value)) {
31
+ return `${attribute}:${value};`
32
+ }
33
+ return `${attribute}:${value}px;`
34
+ }
35
+
36
+ $: heightString = getStyleString("height", height)
37
+ $: minHeightString = getStyleString("min-height", minHeight)
38
+ </script>
39
+
40
+ <div
41
+ style={`${heightString}${minHeightString}`}
42
+ class="spectrum-Textfield spectrum-Textfield--multiline"
43
+ class:is-invalid={!!error}
44
+ class:is-disabled={disabled}
45
+ class:is-focused={focus}
46
+ >
47
+ {#if error}
48
+ <svg
49
+ class="spectrum-Icon spectrum-Icon--sizeM
50
+ spectrum-Textfield-validationIcon"
51
+ focusable="false"
52
+ aria-hidden="true"
53
+ >
54
+ <use xlink:href="#spectrum-icon-18-Alert" />
55
+ </svg>
56
+ {/if}
57
+ <!-- prettier-ignore -->
58
+ <textarea
59
+ bind:this={textarea}
60
+ placeholder={placeholder || ""}
61
+ class="spectrum-Textfield-input"
62
+ style={align ? `text-align: ${align}` : ""}
63
+ {disabled}
64
+ {id}
65
+ on:focus={() => (focus = true)}
66
+ on:blur={onChange}
67
+ >{value || ""}</textarea>
68
+ </div>
69
+
70
+ <style>
71
+ .spectrum-Textfield {
72
+ width: 100%;
73
+ }
74
+ textarea {
75
+ resize: vertical;
76
+ min-height: 80px !important;
77
+ }
78
+ </style>
@@ -0,0 +1,119 @@
1
+ <script>
2
+ import "@spectrum-css/textfield/dist/index-vars.css"
3
+ import { createEventDispatcher, onMount } from "svelte"
4
+
5
+ export let value = null
6
+ export let placeholder = null
7
+ export let type = "text"
8
+ export let disabled = false
9
+ export let error = null
10
+ export let id = null
11
+ export let readonly = false
12
+ export let updateOnChange = true
13
+ export let quiet = false
14
+ export let dataCy
15
+ export let align
16
+ export let autofocus = false
17
+
18
+ const dispatch = createEventDispatcher()
19
+
20
+ let field
21
+ let focus = false
22
+
23
+ const updateValue = newValue => {
24
+ if (readonly) {
25
+ return
26
+ }
27
+ if (type === "number") {
28
+ const float = parseFloat(newValue)
29
+ newValue = isNaN(float) ? null : float
30
+ }
31
+ dispatch("change", newValue)
32
+ }
33
+
34
+ const onFocus = () => {
35
+ if (readonly) {
36
+ return
37
+ }
38
+ focus = true
39
+ }
40
+
41
+ const onBlur = event => {
42
+ if (readonly) {
43
+ return
44
+ }
45
+ focus = false
46
+ updateValue(event.target.value)
47
+ }
48
+
49
+ const onInput = event => {
50
+ if (readonly || !updateOnChange) {
51
+ return
52
+ }
53
+ updateValue(event.target.value)
54
+ }
55
+
56
+ const updateValueOnEnter = event => {
57
+ if (readonly) {
58
+ return
59
+ }
60
+ if (event.key === "Enter") {
61
+ updateValue(event.target.value)
62
+ }
63
+ }
64
+
65
+ onMount(() => {
66
+ focus = autofocus
67
+ if (focus) field.focus()
68
+ })
69
+ </script>
70
+
71
+ <div
72
+ class="spectrum-Textfield"
73
+ class:spectrum-Textfield--quiet={quiet}
74
+ class:is-invalid={!!error}
75
+ class:is-disabled={disabled}
76
+ class:is-focused={focus}
77
+ >
78
+ {#if error}
79
+ <svg
80
+ class="spectrum-Icon spectrum-Icon--sizeM spectrum-Textfield-validationIcon"
81
+ focusable="false"
82
+ aria-hidden="true"
83
+ >
84
+ <use xlink:href="#spectrum-icon-18-Alert" />
85
+ </svg>
86
+ {/if}
87
+ <input
88
+ bind:this={field}
89
+ {disabled}
90
+ {readonly}
91
+ {id}
92
+ data-cy={dataCy}
93
+ value={value || ""}
94
+ placeholder={placeholder || ""}
95
+ on:click
96
+ on:blur
97
+ on:focus
98
+ on:input
99
+ on:keyup
100
+ on:blur={onBlur}
101
+ on:focus={onFocus}
102
+ on:input={onInput}
103
+ on:keyup={updateValueOnEnter}
104
+ {type}
105
+ class="spectrum-Textfield-input"
106
+ style={align ? `text-align: ${align};` : ""}
107
+ inputmode={type === "number" ? "decimal" : "text"}
108
+ />
109
+ </div>
110
+
111
+ <style>
112
+ .spectrum-Textfield {
113
+ width: 100%;
114
+ }
115
+ input:disabled {
116
+ color: var(--spectrum-global-color-gray-600) !important;
117
+ -webkit-text-fill-color: var(--spectrum-global-color-gray-600) !important;
118
+ }
119
+ </style>
@@ -0,0 +1,15 @@
1
+ export { default as CoreTextField } from "./TextField.svelte"
2
+ export { default as CoreSelect } from "./Select.svelte"
3
+ export { default as CoreMultiselect } from "./Multiselect.svelte"
4
+ export { default as CoreCheckbox } from "./Checkbox.svelte"
5
+ export { default as CoreRadioGroup } from "./RadioGroup.svelte"
6
+ export { default as CoreCheckboxGroup } from "./CheckboxGroup.svelte"
7
+ export { default as CoreTextArea } from "./TextArea.svelte"
8
+ export { default as CoreCombobox } from "./Combobox.svelte"
9
+ export { default as CoreSwitch } from "./Switch.svelte"
10
+ export { default as CoreSearch } from "./Search.svelte"
11
+ export { default as CoreDatePicker } from "./DatePicker.svelte"
12
+ export { default as CoreDropzone } from "./Dropzone.svelte"
13
+ export { default as CoreStepper } from "./Stepper.svelte"
14
+ export { default as CoreRichTextField } from "./RichTextField.svelte"
15
+ export { default as CoreSlider } from "./Slider.svelte"
@@ -0,0 +1,39 @@
1
+ <script>
2
+ import Field from "./Field.svelte"
3
+ import DatePicker from "./Core/DatePicker.svelte"
4
+ import { createEventDispatcher } from "svelte"
5
+
6
+ export let value = null
7
+ export let label = null
8
+ export let labelPosition = "above"
9
+ export let disabled = false
10
+ export let error = null
11
+ export let enableTime = true
12
+ export let timeOnly = false
13
+ export let time24hr = false
14
+ export let placeholder = null
15
+ export let appendTo = undefined
16
+ export let ignoreTimezones = false
17
+
18
+ const dispatch = createEventDispatcher()
19
+
20
+ const onChange = e => {
21
+ value = e.detail
22
+ dispatch("change", e.detail)
23
+ }
24
+ </script>
25
+
26
+ <Field {label} {labelPosition} {error}>
27
+ <DatePicker
28
+ {error}
29
+ {disabled}
30
+ {value}
31
+ {placeholder}
32
+ {enableTime}
33
+ {timeOnly}
34
+ {time24hr}
35
+ {appendTo}
36
+ {ignoreTimezones}
37
+ on:change={onChange}
38
+ />
39
+ </Field>
@@ -0,0 +1,42 @@
1
+ <script>
2
+ import Field from "./Field.svelte"
3
+ import CoreDropzone from "./Core/Dropzone.svelte"
4
+ import { createEventDispatcher } from "svelte"
5
+
6
+ export let value = []
7
+ export let label = null
8
+ export let labelPosition = "above"
9
+ export let disabled = false
10
+ export let error = null
11
+ export let fileSizeLimit = undefined
12
+ export let processFiles = undefined
13
+ export let deleteAttachments = undefined
14
+ export let handleFileTooLarge = undefined
15
+ export let handleTooManyFiles = undefined
16
+ export let gallery = true
17
+ export let fileTags = []
18
+ export let maximum = undefined
19
+
20
+ const dispatch = createEventDispatcher()
21
+ const onChange = e => {
22
+ value = e.detail
23
+ dispatch("change", e.detail)
24
+ }
25
+ </script>
26
+
27
+ <Field {label} {labelPosition} {error}>
28
+ <CoreDropzone
29
+ {error}
30
+ {disabled}
31
+ {value}
32
+ {fileSizeLimit}
33
+ {processFiles}
34
+ {deleteAttachments}
35
+ {handleFileTooLarge}
36
+ {handleTooManyFiles}
37
+ {gallery}
38
+ {fileTags}
39
+ {maximum}
40
+ on:change={onChange}
41
+ />
42
+ </Field>
@@ -0,0 +1,42 @@
1
+ <script>
2
+ import "@spectrum-css/fieldlabel/dist/index-vars.css"
3
+ import FieldLabel from "./FieldLabel.svelte"
4
+
5
+ export let id = null
6
+ export let label = null
7
+ export let labelPosition = "above"
8
+ export let error = null
9
+ export let tooltip = ""
10
+ </script>
11
+
12
+ <div class="spectrum-Form-item" class:above={labelPosition === "above"}>
13
+ {#if label}
14
+ <FieldLabel forId={id} {label} position={labelPosition} {tooltip} />
15
+ {/if}
16
+ <div class="spectrum-Form-itemField">
17
+ <slot />
18
+ {#if error}
19
+ <div class="error">{error}</div>
20
+ {/if}
21
+ </div>
22
+ </div>
23
+
24
+ <style>
25
+ .spectrum-Form-item.above {
26
+ display: flex;
27
+ flex-direction: column;
28
+ }
29
+ .spectrum-Form-itemField {
30
+ position: relative;
31
+ width: 100%;
32
+ }
33
+
34
+ .error {
35
+ color: var(
36
+ --spectrum-semantic-negative-color-default,
37
+ var(--spectrum-global-color-red-500)
38
+ );
39
+ font-size: var(--spectrum-global-dimension-font-size-75);
40
+ margin-top: var(--spectrum-global-dimension-size-75);
41
+ }
42
+ </style>
@@ -0,0 +1,32 @@
1
+ <script>
2
+ import TooltipWrapper from "../Tooltip/TooltipWrapper.svelte"
3
+
4
+ import "@spectrum-css/fieldlabel/dist/index-vars.css"
5
+
6
+ export let forId
7
+ export let label
8
+ export let position = "above"
9
+ export let tooltip = ""
10
+
11
+ $: className = position === "above" ? "" : `spectrum-FieldLabel--${position}`
12
+ </script>
13
+
14
+ <TooltipWrapper {tooltip} size="S">
15
+ <label
16
+ for={forId}
17
+ class={`spectrum-FieldLabel spectrum-FieldLabel--sizeM spectrum-Form-itemLabel ${className}`}
18
+ >
19
+ {label || ""}
20
+ </label>
21
+ </TooltipWrapper>
22
+
23
+ <style>
24
+ label {
25
+ white-space: nowrap;
26
+ }
27
+
28
+ .spectrum-FieldLabel--right,
29
+ .spectrum-FieldLabel--left {
30
+ padding-right: var(--spectrum-global-dimension-size-200);
31
+ }
32
+ </style>