@budibase/bbui 1.4.1 → 1.4.2

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 (154) hide show
  1. package/LICENSE +375 -0
  2. package/README.md +19 -17
  3. package/dist/bbui.es.js +14 -0
  4. package/dist/bbui.es.js.map +1 -0
  5. package/package.json +71 -26
  6. package/src/ActionButton/ActionButton.svelte +102 -0
  7. package/src/ActionGroup/ActionGroup.svelte +26 -0
  8. package/src/ActionMenu/ActionMenu.svelte +44 -0
  9. package/src/Actions/ClickOutside.svench.svx +30 -0
  10. package/src/Actions/PositionDropdown.svench.svx +81 -0
  11. package/src/Actions/autoresize_textarea.js +14 -0
  12. package/src/Actions/click_outside.js +18 -0
  13. package/src/Actions/position_dropdown.js +75 -0
  14. package/src/Avatar/Avatar.svelte +62 -0
  15. package/src/Badge/Badge.svelte +29 -0
  16. package/src/Banner/Banner.svelte +72 -0
  17. package/src/Banner/BannerDisplay.svelte +41 -0
  18. package/src/Button/Button.svelte +114 -0
  19. package/src/Button/Button.svench +138 -0
  20. package/src/ButtonGroup/ButtonGroup.svelte +30 -0
  21. package/src/ClearButton/ClearButton.svelte +19 -0
  22. package/src/ColorPicker/ColorPicker.svelte +297 -0
  23. package/src/DetailSummary/DetailSummary.svelte +83 -0
  24. package/src/Divider/Divider.svelte +28 -0
  25. package/src/Drawer/Drawer.svelte +113 -0
  26. package/src/Drawer/Drawer.svench +42 -0
  27. package/src/Drawer/DrawerContent.svelte +46 -0
  28. package/src/Form/Checkbox.svelte +23 -0
  29. package/src/Form/Combobox.svelte +45 -0
  30. package/src/Form/Core/Checkbox.svelte +69 -0
  31. package/src/Form/Core/CheckboxGroup.svelte +68 -0
  32. package/src/Form/Core/Combobox.svelte +142 -0
  33. package/src/Form/Core/DatePicker.svelte +257 -0
  34. package/src/Form/Core/Dropzone.svelte +450 -0
  35. package/src/Form/Core/InputDropdown.svelte +228 -0
  36. package/src/Form/Core/Multiselect.svelte +90 -0
  37. package/src/Form/Core/Picker.svelte +259 -0
  38. package/src/Form/Core/PickerDropdown.svelte +436 -0
  39. package/src/Form/Core/RadioGroup.svelte +48 -0
  40. package/src/Form/Core/RichTextField.svelte +42 -0
  41. package/src/Form/Core/Search.svelte +105 -0
  42. package/src/Form/Core/Select.svelte +75 -0
  43. package/src/Form/Core/Slider.svelte +86 -0
  44. package/src/Form/Core/Stepper.svelte +172 -0
  45. package/src/Form/Core/Switch.svelte +37 -0
  46. package/src/Form/Core/TextArea.svelte +78 -0
  47. package/src/Form/Core/TextField.svelte +119 -0
  48. package/src/Form/Core/index.js +15 -0
  49. package/src/Form/DatePicker.svelte +39 -0
  50. package/src/Form/Dropzone.svelte +42 -0
  51. package/src/Form/Field.svelte +42 -0
  52. package/src/Form/FieldLabel.svelte +32 -0
  53. package/src/Form/Input.svelte +40 -45
  54. package/src/Form/InputDropdown.svelte +55 -0
  55. package/src/Form/Multiselect.svelte +40 -0
  56. package/src/Form/PickerDropdown.svelte +134 -0
  57. package/src/Form/RadioGroup.svelte +42 -0
  58. package/src/Form/RichTextField.svelte +36 -0
  59. package/src/Form/Search.svelte +36 -0
  60. package/src/Form/Select.svelte +48 -43
  61. package/src/Form/Slider.svelte +24 -0
  62. package/src/Form/Stepper.svelte +45 -0
  63. package/src/Form/TextArea.svelte +29 -44
  64. package/src/Form/Toggle.svelte +23 -0
  65. package/src/Icon/Icon.svelte +91 -0
  66. package/src/IconPicker/IconPicker.svelte +177 -0
  67. package/src/IconSideNav/IconSideNav.svelte +14 -0
  68. package/src/IconSideNav/IconSideNavItem.svelte +56 -0
  69. package/src/InlineAlert/InlineAlert.svelte +60 -0
  70. package/src/Label/Label.svelte +29 -0
  71. package/src/Layout/Layout.svelte +94 -0
  72. package/src/Layout/Page.svelte +32 -0
  73. package/src/Link/Link.svelte +24 -0
  74. package/src/List/List.svelte +28 -0
  75. package/src/List/ListItem.svelte +98 -0
  76. package/src/Markdown/MarkdownEditor.svelte +60 -0
  77. package/src/Markdown/MarkdownViewer.svelte +70 -0
  78. package/src/Markdown/SpectrumMDE.svelte +184 -0
  79. package/src/Menu/Item.svelte +96 -0
  80. package/src/Menu/Menu.svelte +7 -0
  81. package/src/Menu/Menu.svench +19 -0
  82. package/src/Menu/Section.svelte +10 -0
  83. package/src/Menu/Separator.svelte +1 -0
  84. package/src/Modal/Content.svelte +6 -0
  85. package/src/Modal/CustomContent.svelte +38 -0
  86. package/src/Modal/Modal.svelte +165 -0
  87. package/src/Modal/Modal.svench +117 -0
  88. package/src/Modal/ModalContent.svelte +190 -0
  89. package/src/Modal/QuizModal.svelte +54 -0
  90. package/src/Notification/Notification.svelte +70 -0
  91. package/src/Notification/NotificationDisplay.svelte +43 -0
  92. package/src/Pagination/Pagination.svelte +57 -0
  93. package/src/Popover/Popover.svelte +78 -0
  94. package/src/Popover/Popover.svench +121 -0
  95. package/src/ProgressBar/ProgressBar.svelte +67 -0
  96. package/src/ProgressCircle/ProgressCircle.svelte +62 -0
  97. package/src/SideNavigation/Item.svelte +61 -0
  98. package/src/SideNavigation/Navigation.svelte +12 -0
  99. package/src/StatusLight/StatusLight.svelte +80 -0
  100. package/src/Stores/Notifications.svench.svx +78 -0
  101. package/src/Stores/banner.js +65 -0
  102. package/src/Stores/notifications.js +84 -0
  103. package/src/Table/ArrayRenderer.svelte +17 -0
  104. package/src/Table/AttachmentRenderer.svelte +67 -0
  105. package/src/Table/BoldRenderer.svelte +15 -0
  106. package/src/Table/BooleanRenderer.svelte +42 -0
  107. package/src/Table/CellRenderer.svelte +69 -0
  108. package/src/Table/CodeRenderer.svelte +14 -0
  109. package/src/Table/DateTimeRenderer.svelte +29 -0
  110. package/src/Table/InternalRenderer.svelte +24 -0
  111. package/src/Table/RelationshipRenderer.svelte +40 -0
  112. package/src/Table/SelectEditRenderer.svelte +28 -0
  113. package/src/Table/StringRenderer.svelte +14 -0
  114. package/src/Table/Table.svelte +635 -0
  115. package/src/Table/index.js +1 -0
  116. package/src/Tabs/Tab.svelte +88 -0
  117. package/src/Tabs/Tabs.svelte +130 -0
  118. package/src/Tags/Tag.svelte +43 -0
  119. package/src/Tags/Tags.svelte +7 -0
  120. package/src/Tooltip/Tooltip.svelte +34 -0
  121. package/src/Tooltip/TooltipWrapper.svelte +60 -0
  122. package/src/TreeView/Item.svelte +41 -0
  123. package/src/TreeView/Tree.svelte +16 -0
  124. package/src/Typography/Body.svelte +21 -0
  125. package/src/Typography/Code.svelte +10 -0
  126. package/src/Typography/Detail.svelte +19 -0
  127. package/src/Typography/Heading.svelte +17 -0
  128. package/src/bbui.css +96 -0
  129. package/src/context.js +3 -0
  130. package/src/helpers.js +134 -0
  131. package/src/index.js +98 -12
  132. package/src/spectrum-icons-rollup.js +31 -0
  133. package/src/spectrum-icons-vite.js +31 -0
  134. package/dist/bundle.css +0 -8
  135. package/dist/bundle.css.map +0 -22
  136. package/dist/index.js +0 -1275
  137. package/dist/index.mjs +0 -1260
  138. package/src/Branding/Budibase-logo.svelte +0 -68
  139. package/src/Branding/Logo.svelte +0 -16
  140. package/src/Branding/Logo.svench +0 -8
  141. package/src/Form/Button.svelte +0 -131
  142. package/src/Form/Button.svench +0 -49
  143. package/src/Form/Input.svench +0 -8
  144. package/src/Form/Select.svench +0 -8
  145. package/src/Form/TextArea.svench +0 -8
  146. package/src/Links/Home.svelte +0 -49
  147. package/src/Links/Home.svench +0 -19
  148. package/src/List/Items/DetailSummary.svelte +0 -66
  149. package/src/List/Items/DetailSummary.svench +0 -15
  150. package/src/Switcher/Switcher.svelte +0 -39
  151. package/src/Switcher/Switcher.svench +0 -25
  152. package/src/actions/autoresize_textarea.js +0 -14
  153. package/src/icons/Contribution.svelte +0 -14
  154. package/src/index.svench.svx +0 -35
@@ -1,50 +1,45 @@
1
1
  <script>
2
- export let name,
3
- label,
4
- type,
5
- placeholder,
6
- validator = () => {};
7
- </script>
8
-
9
- <style>
10
- .container {
11
- display: flex;
12
- flex-direction: column;
13
- font-size: 14px;
14
- font-weight: 500;
15
- line-height: 1.17;
16
- }
2
+ import Field from "./Field.svelte"
3
+ import TextField from "./Core/TextField.svelte"
4
+ import { createEventDispatcher } from "svelte"
17
5
 
18
- label {
19
- color: var(--font);
20
- margin-bottom: 12px;
21
- }
22
-
23
- input {
24
- box-sizing: border-box;
25
- color: var(--font);
26
- font-size: 18px;
27
- border-radius: 3px;
28
- border: solid 1px var(--grey-medium);
29
- padding: 20px;
30
- margin: 0;
31
- background-color: white;
32
- }
6
+ export let value = null
7
+ export let label = null
8
+ export let labelPosition = "above"
9
+ export let placeholder = null
10
+ export let type = "text"
11
+ export let disabled = false
12
+ export let readonly = false
13
+ export let error = null
14
+ export let updateOnChange = true
15
+ export let quiet = false
16
+ export let dataCy
17
+ export let autofocus
33
18
 
34
- input::placeholder {
35
- color: var(--grey-medium);
19
+ const dispatch = createEventDispatcher()
20
+ const onChange = e => {
21
+ value = e.detail
22
+ dispatch("change", e.detail)
36
23
  }
24
+ </script>
37
25
 
38
- input:focus {
39
- box-shadow: 0 4px 16px 0 rgba(57, 60, 68, 0.08);
40
- }
41
-
42
- input:disabled {
43
- background: var(--grey-medium);
44
- }
45
- </style>
46
-
47
- <div class="container">
48
- <label for={name}>{label}</label>
49
- <input on:change on:input use:validator {type} {name} {placeholder} />
50
- </div>
26
+ <Field {label} {labelPosition} {error}>
27
+ <TextField
28
+ {dataCy}
29
+ {updateOnChange}
30
+ {error}
31
+ {disabled}
32
+ {readonly}
33
+ {value}
34
+ {placeholder}
35
+ {type}
36
+ {quiet}
37
+ {autofocus}
38
+ on:change={onChange}
39
+ on:click
40
+ on:input
41
+ on:blur
42
+ on:focus
43
+ on:keyup
44
+ />
45
+ </Field>
@@ -0,0 +1,55 @@
1
+ <script>
2
+ import Field from "./Field.svelte"
3
+ import InputDropdown from "./Core/InputDropdown.svelte"
4
+ import { createEventDispatcher } from "svelte"
5
+
6
+ export let inputValue = null
7
+ export let dropdownValue = null
8
+ export let inputType = "text"
9
+ export let label = null
10
+ export let labelPosition = "above"
11
+ export let placeholder = null
12
+ export let disabled = false
13
+ export let readonly = false
14
+ export let error = null
15
+ export let updateOnChange = true
16
+ export let quiet = false
17
+ export let dataCy
18
+ export let autofocus
19
+ export let options = []
20
+
21
+ const dispatch = createEventDispatcher()
22
+
23
+ const onPick = e => {
24
+ dropdownValue = e.detail
25
+ dispatch("pick", e.detail)
26
+ }
27
+ const onChange = e => {
28
+ inputValue = e.detail
29
+ dispatch("change", e.detail)
30
+ }
31
+ </script>
32
+
33
+ <Field {label} {labelPosition} {error}>
34
+ <InputDropdown
35
+ {dataCy}
36
+ {updateOnChange}
37
+ {error}
38
+ {disabled}
39
+ {readonly}
40
+ {inputValue}
41
+ {dropdownValue}
42
+ {placeholder}
43
+ {inputType}
44
+ {quiet}
45
+ {autofocus}
46
+ {options}
47
+ on:change={onChange}
48
+ on:pick={onPick}
49
+ on:click
50
+ on:input
51
+ on:blur
52
+ on:focus
53
+ on:keyup
54
+ />
55
+ </Field>
@@ -0,0 +1,40 @@
1
+ <script>
2
+ import { createEventDispatcher } from "svelte"
3
+ import Multiselect from "./Core/Multiselect.svelte"
4
+ import Field from "./Field.svelte"
5
+
6
+ export let value = []
7
+ export let label = null
8
+ export let disabled = false
9
+ export let readonly = false
10
+ export let labelPosition = "above"
11
+ export let error = null
12
+ export let placeholder = null
13
+ export let options = []
14
+ export let getOptionLabel = option => option
15
+ export let getOptionValue = option => option
16
+ export let sort = false
17
+ export let autoWidth = false
18
+ const dispatch = createEventDispatcher()
19
+ const onChange = e => {
20
+ value = e.detail
21
+ dispatch("change", e.detail)
22
+ }
23
+ </script>
24
+
25
+ <Field {label} {labelPosition} {error}>
26
+ <Multiselect
27
+ {error}
28
+ {disabled}
29
+ {readonly}
30
+ {value}
31
+ {options}
32
+ {placeholder}
33
+ {sort}
34
+ {getOptionLabel}
35
+ {getOptionValue}
36
+ {autoWidth}
37
+ on:change={onChange}
38
+ on:click
39
+ />
40
+ </Field>
@@ -0,0 +1,134 @@
1
+ <script>
2
+ import Field from "./Field.svelte"
3
+ import PickerDropdown from "./Core/PickerDropdown.svelte"
4
+ import { createEventDispatcher } from "svelte"
5
+
6
+ export let primaryValue = null
7
+ export let secondaryValue = null
8
+ export let inputType = "text"
9
+ export let label = null
10
+ export let labelPosition = "above"
11
+ export let secondaryPlaceholder = null
12
+ export let autocomplete
13
+ export let placeholder = null
14
+ export let disabled = false
15
+ export let readonly = false
16
+ export let error = null
17
+ export let updateOnChange = true
18
+ export let getSecondaryOptionLabel = option =>
19
+ extractProperty(option, "label")
20
+ export let getSecondaryOptionValue = option =>
21
+ extractProperty(option, "value")
22
+ export let getSecondaryOptionColour = () => {}
23
+ export let getSecondaryOptionIcon = () => {}
24
+ export let quiet = false
25
+ export let dataCy
26
+ export let autofocus
27
+ export let primaryOptions = []
28
+ export let secondaryOptions = []
29
+ export let searchTerm
30
+ export let showClearIcon = true
31
+
32
+ let primaryLabel
33
+ let secondaryLabel
34
+ const dispatch = createEventDispatcher()
35
+
36
+ $: secondaryFieldText = getSecondaryFieldText(
37
+ secondaryValue,
38
+ secondaryOptions,
39
+ secondaryPlaceholder
40
+ )
41
+ $: secondaryFieldIcon = getSecondaryFieldAttribute(
42
+ getSecondaryOptionIcon,
43
+ secondaryValue,
44
+ secondaryOptions
45
+ )
46
+ $: secondaryFieldColour = getSecondaryFieldAttribute(
47
+ getSecondaryOptionColour,
48
+ secondaryValue,
49
+ secondaryOptions
50
+ )
51
+
52
+ const getSecondaryFieldAttribute = (getAttribute, value, options) => {
53
+ // Wait for options to load if there is a value but no options
54
+
55
+ if (!options?.length) {
56
+ return ""
57
+ }
58
+
59
+ const index = options.findIndex(
60
+ (option, idx) => getSecondaryOptionValue(option, idx) === value
61
+ )
62
+
63
+ return index !== -1 ? getAttribute(options[index], index) : null
64
+ }
65
+
66
+ const getSecondaryFieldText = (value, options, placeholder) => {
67
+ // Always use placeholder if no value
68
+ if (value == null || value === "") {
69
+ return placeholder || "Choose an option"
70
+ }
71
+
72
+ return getSecondaryFieldAttribute(getSecondaryOptionLabel, value, options)
73
+ }
74
+
75
+ const onPickPrimary = e => {
76
+ primaryLabel = e?.detail?.label || null
77
+ primaryValue = e?.detail?.value || null
78
+ dispatch("pickprimary", e?.detail?.value || {})
79
+ }
80
+
81
+ const onPickSecondary = e => {
82
+ secondaryValue = e.detail
83
+ dispatch("picksecondary", e.detail)
84
+ }
85
+
86
+ const extractProperty = (value, property) => {
87
+ if (value && typeof value === "object") {
88
+ return value[property]
89
+ }
90
+ return value
91
+ }
92
+
93
+ const updateSearchTerm = e => {
94
+ searchTerm = e.detail
95
+ }
96
+ </script>
97
+
98
+ <Field {label} {labelPosition} {error}>
99
+ <PickerDropdown
100
+ {searchTerm}
101
+ {autocomplete}
102
+ {dataCy}
103
+ {updateOnChange}
104
+ {error}
105
+ {disabled}
106
+ {readonly}
107
+ {placeholder}
108
+ {inputType}
109
+ {quiet}
110
+ {autofocus}
111
+ {primaryOptions}
112
+ {secondaryOptions}
113
+ {getSecondaryOptionLabel}
114
+ {getSecondaryOptionValue}
115
+ {getSecondaryOptionIcon}
116
+ {getSecondaryOptionColour}
117
+ {secondaryFieldText}
118
+ {secondaryFieldIcon}
119
+ {secondaryFieldColour}
120
+ {primaryValue}
121
+ {secondaryValue}
122
+ {primaryLabel}
123
+ {secondaryLabel}
124
+ {showClearIcon}
125
+ on:pickprimary={onPickPrimary}
126
+ on:picksecondary={onPickSecondary}
127
+ on:search={updateSearchTerm}
128
+ on:click
129
+ on:input
130
+ on:blur
131
+ on:focus
132
+ on:keyup
133
+ />
134
+ </Field>
@@ -0,0 +1,42 @@
1
+ <script>
2
+ import Field from "./Field.svelte"
3
+ import RadioGroup from "./Core/RadioGroup.svelte"
4
+ import { createEventDispatcher } from "svelte"
5
+
6
+ export let value = null
7
+ export let label = null
8
+ export let disabled = false
9
+ export let labelPosition = "above"
10
+ export let error = null
11
+ export let options = []
12
+ export let direction = "vertical"
13
+ export let getOptionLabel = option => extractProperty(option, "label")
14
+ export let getOptionValue = option => extractProperty(option, "value")
15
+ export let getOptionTitle = option => extractProperty(option, "label")
16
+
17
+ const dispatch = createEventDispatcher()
18
+ const onChange = e => {
19
+ value = e.detail
20
+ dispatch("change", e.detail)
21
+ }
22
+ const extractProperty = (value, property) => {
23
+ if (value && typeof value === "object") {
24
+ return value[property]
25
+ }
26
+ return value
27
+ }
28
+ </script>
29
+
30
+ <Field {label} {labelPosition} {error}>
31
+ <RadioGroup
32
+ {error}
33
+ {disabled}
34
+ {value}
35
+ {options}
36
+ {direction}
37
+ {getOptionLabel}
38
+ {getOptionValue}
39
+ {getOptionTitle}
40
+ on:change={onChange}
41
+ />
42
+ </Field>
@@ -0,0 +1,36 @@
1
+ <script>
2
+ import Field from "./Field.svelte"
3
+ import RichTextField from "./Core/RichTextField.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 placeholder = null
10
+ export let disabled = false
11
+ export let error = null
12
+ export let height = null
13
+ export let id = null
14
+ export let fullScreenOffset = null
15
+ export let easyMDEOptions = null
16
+
17
+ const dispatch = createEventDispatcher()
18
+ const onChange = e => {
19
+ value = e.detail
20
+ dispatch("change", e.detail)
21
+ }
22
+ </script>
23
+
24
+ <Field {label} {labelPosition} {error}>
25
+ <RichTextField
26
+ {error}
27
+ {disabled}
28
+ {value}
29
+ {placeholder}
30
+ {height}
31
+ {id}
32
+ {fullScreenOffset}
33
+ {easyMDEOptions}
34
+ on:change={onChange}
35
+ />
36
+ </Field>
@@ -0,0 +1,36 @@
1
+ <script>
2
+ import Field from "./Field.svelte"
3
+ import Search from "./Core/Search.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 placeholder = null
10
+ export let disabled = false
11
+ export let updateOnChange = true
12
+ export let quiet = false
13
+ export let inputRef
14
+
15
+ const dispatch = createEventDispatcher()
16
+ const onChange = e => {
17
+ value = e.detail
18
+ dispatch("change", e.detail)
19
+ }
20
+ </script>
21
+
22
+ <Field {label} {labelPosition}>
23
+ <Search
24
+ {updateOnChange}
25
+ {disabled}
26
+ {value}
27
+ {placeholder}
28
+ {quiet}
29
+ bind:inputRef
30
+ on:change={onChange}
31
+ on:click
32
+ on:input
33
+ on:focus
34
+ on:blur
35
+ />
36
+ </Field>
@@ -1,50 +1,55 @@
1
1
  <script>
2
- export let name,
3
- label,
4
- type,
5
- placeholder,
6
- validator = () => {};
7
- </script>
2
+ import Field from "./Field.svelte"
3
+ import Select from "./Core/Select.svelte"
4
+ import { createEventDispatcher } from "svelte"
8
5
 
9
- <style>
10
- .container {
11
- display: flex;
12
- flex-direction: column;
13
- font-size: 18px;
14
- font-weight: 500;
15
- line-height: 1.17;
16
- }
6
+ export let value = null
7
+ export let label = undefined
8
+ export let disabled = false
9
+ export let readonly = false
10
+ export let labelPosition = "above"
11
+ export let error = null
12
+ export let placeholder = "Choose an option"
13
+ export let options = []
14
+ export let getOptionLabel = option => extractProperty(option, "label")
15
+ export let getOptionValue = option => extractProperty(option, "value")
16
+ export let getOptionIcon = option => option?.icon
17
+ export let getOptionColour = option => option?.colour
18
+ export let quiet = false
19
+ export let autoWidth = false
20
+ export let sort = false
21
+ export let tooltip = ""
17
22
 
18
- label {
19
- color: var(--font);
20
- margin-bottom: 12px;
23
+ const dispatch = createEventDispatcher()
24
+ const onChange = e => {
25
+ value = e.detail
26
+ dispatch("change", e.detail)
21
27
  }
22
28
 
23
- input {
24
- box-sizing: border-box;
25
- color: var(--font);
26
- font-size: 18px;
27
- border-radius: 3px;
28
- border: solid 1px var(--grey-medium);
29
- padding: 20px;
30
- margin: 0;
31
- background-color: white;
29
+ const extractProperty = (value, property) => {
30
+ if (value && typeof value === "object") {
31
+ return value[property]
32
+ }
33
+ return value
32
34
  }
35
+ </script>
33
36
 
34
- input::placeholder {
35
- color: var(--grey-medium);
36
- }
37
-
38
- input:focus {
39
- box-shadow: 0 4px 16px 0 rgba(57, 60, 68, 0.08);
40
- }
41
-
42
- input:disabled {
43
- background: var(--grey-medium);
44
- }
45
- </style>
46
-
47
- <div class="container">
48
- <label for={name}>{label}</label>
49
- <input on:change on:input use:validator {type} {name} {placeholder} />
50
- </div>
37
+ <Field {label} {labelPosition} {error} {tooltip}>
38
+ <Select
39
+ {quiet}
40
+ {error}
41
+ {disabled}
42
+ {readonly}
43
+ {value}
44
+ {options}
45
+ {placeholder}
46
+ {autoWidth}
47
+ {sort}
48
+ {getOptionLabel}
49
+ {getOptionValue}
50
+ {getOptionIcon}
51
+ {getOptionColour}
52
+ on:change={onChange}
53
+ on:click
54
+ />
55
+ </Field>
@@ -0,0 +1,24 @@
1
+ <script>
2
+ import Field from "./Field.svelte"
3
+ import Slider from "./Core/Slider.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 min = 0
10
+ export let max = 100
11
+ export let step = 1
12
+ export let disabled = false
13
+ export let error = null
14
+
15
+ const dispatch = createEventDispatcher()
16
+ const onChange = e => {
17
+ value = e.detail
18
+ dispatch("change", e.detail)
19
+ }
20
+ </script>
21
+
22
+ <Field {label} {labelPosition} {error}>
23
+ <Slider {disabled} {value} {min} {max} {step} on:change={onChange} />
24
+ </Field>
@@ -0,0 +1,45 @@
1
+ <script>
2
+ import Field from "./Field.svelte"
3
+ import Stepper from "./Core/Stepper.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 placeholder = null
10
+ export let disabled = false
11
+ export let readonly = false
12
+ export let error = null
13
+ export let updateOnChange = true
14
+ export let quiet = false
15
+ export let min = null
16
+ export let max = null
17
+ export let step = 1
18
+
19
+ const dispatch = createEventDispatcher()
20
+ const onChange = e => {
21
+ value = e.detail
22
+ dispatch("change", e.detail)
23
+ }
24
+ </script>
25
+
26
+ <Field {label} {labelPosition} {error}>
27
+ <Stepper
28
+ {updateOnChange}
29
+ {error}
30
+ {disabled}
31
+ {readonly}
32
+ {value}
33
+ {placeholder}
34
+ {quiet}
35
+ {min}
36
+ {max}
37
+ {step}
38
+ on:change={onChange}
39
+ on:click
40
+ on:input
41
+ on:blur
42
+ on:focus
43
+ on:keyup
44
+ />
45
+ </Field>
@@ -1,49 +1,34 @@
1
1
  <script>
2
- import { text_area_resize } from "../actions/autoresize_textarea.js";
3
- export let name,
4
- label,
5
- value,
6
- placeholder,
7
- validator = () => {};
8
- </script>
9
-
10
- <style>
11
- .container {
12
- display: flex;
13
- flex-direction: column;
14
- font-size: 18px;
15
- font-weight: 500;
16
- line-height: 1.17;
17
- }
2
+ import Field from "./Field.svelte"
3
+ import TextArea from "./Core/TextArea.svelte"
4
+ import { createEventDispatcher } from "svelte"
18
5
 
19
- label {
20
- color: var(--font);
21
- margin-bottom: 12px;
22
- }
23
-
24
- textarea {
25
- color: var(--font);
26
- font-size: 18px;
27
- border-radius: 3px;
28
- border: solid 1px var(--grey-medium);
29
- padding: 20px;
30
- margin: 0;
31
- }
6
+ export let value = null
7
+ export let label = null
8
+ export let labelPosition = "above"
9
+ export let placeholder = null
10
+ export let disabled = false
11
+ export let error = null
12
+ export let getCaretPosition = null
13
+ export let height = null
14
+ export let minHeight = null
32
15
 
33
- textarea::placeholder {
34
- color: var(--grey-dark);
16
+ const dispatch = createEventDispatcher()
17
+ const onChange = e => {
18
+ value = e.detail
19
+ dispatch("change", e.detail)
35
20
  }
21
+ </script>
36
22
 
37
- textarea:focus {
38
- box-shadow: 0 4px 16px 0 rgba(57, 60, 68, 0.08);
39
- }
40
-
41
- textarea:disabled {
42
- background: var(--grey-medium);
43
- }
44
- </style>
45
-
46
- <div class="container">
47
- <label for={name}>{label}</label>
48
- <textarea bind:value {placeholder} {name} use:text_area_resize />
49
- </div>
23
+ <Field {label} {labelPosition} {error}>
24
+ <TextArea
25
+ bind:getCaretPosition
26
+ {error}
27
+ {disabled}
28
+ {value}
29
+ {placeholder}
30
+ {height}
31
+ {minHeight}
32
+ on:change={onChange}
33
+ />
34
+ </Field>