@budibase/bbui 0.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.
- package/LICENSE +375 -0
- package/README.md +42 -0
- package/dist/bbui.es.js +8 -0
- package/dist/bbui.es.js.map +1 -0
- package/package.json +94 -0
- package/src/Accordion/Accordion.svelte +58 -0
- package/src/ActionButton/ActionButton.svelte +132 -0
- package/src/ActionGroup/ActionGroup.svelte +26 -0
- package/src/ActionMenu/ActionMenu.svelte +43 -0
- package/src/Actions/ClickOutside.svench.svx +30 -0
- package/src/Actions/PositionDropdown.svench.svx +81 -0
- package/src/Actions/autoresize_textarea.js +14 -0
- package/src/Actions/click_outside.js +76 -0
- package/src/Actions/position_dropdown.js +116 -0
- package/src/Avatar/Avatar.svelte +63 -0
- package/src/Badge/Badge.svelte +42 -0
- package/src/Banner/Banner.svelte +72 -0
- package/src/Banner/BannerDisplay.svelte +41 -0
- package/src/Button/Button.svelte +118 -0
- package/src/Button/Button.svench +138 -0
- package/src/ButtonGroup/ButtonGroup.svelte +30 -0
- package/src/ClearButton/ClearButton.svelte +19 -0
- package/src/ColorPicker/ColorPicker.svelte +304 -0
- package/src/DetailSummary/DetailSummary.svelte +92 -0
- package/src/Divider/Divider.svelte +28 -0
- package/src/Drawer/Drawer.svelte +113 -0
- package/src/Drawer/Drawer.svench +42 -0
- package/src/Drawer/DrawerContent.svelte +45 -0
- package/src/FancyForm/FancyButton.svelte +30 -0
- package/src/FancyForm/FancyButtonRadio.svelte +70 -0
- package/src/FancyForm/FancyCheckbox.svelte +53 -0
- package/src/FancyForm/FancyField.svelte +126 -0
- package/src/FancyForm/FancyFieldLabel.svelte +25 -0
- package/src/FancyForm/FancyForm.svelte +40 -0
- package/src/FancyForm/FancyInput.svelte +109 -0
- package/src/FancyForm/FancySelect.svelte +147 -0
- package/src/FancyForm/index.js +6 -0
- package/src/Form/Checkbox.svelte +23 -0
- package/src/Form/Combobox.svelte +45 -0
- package/src/Form/Core/Checkbox.svelte +69 -0
- package/src/Form/Core/CheckboxGroup.svelte +68 -0
- package/src/Form/Core/Combobox.svelte +142 -0
- package/src/Form/Core/DatePicker.svelte +265 -0
- package/src/Form/Core/Dropzone.svelte +482 -0
- package/src/Form/Core/EnvDropdown.svelte +276 -0
- package/src/Form/Core/File.svelte +115 -0
- package/src/Form/Core/InputDropdown.svelte +235 -0
- package/src/Form/Core/Multiselect.svelte +99 -0
- package/src/Form/Core/Picker.svelte +314 -0
- package/src/Form/Core/PickerDropdown.svelte +431 -0
- package/src/Form/Core/RadioGroup.svelte +65 -0
- package/src/Form/Core/RichTextField.svelte +42 -0
- package/src/Form/Core/Search.svelte +105 -0
- package/src/Form/Core/Select.svelte +90 -0
- package/src/Form/Core/Slider.svelte +86 -0
- package/src/Form/Core/Stepper.svelte +172 -0
- package/src/Form/Core/Switch.svelte +35 -0
- package/src/Form/Core/TextArea.svelte +78 -0
- package/src/Form/Core/TextField.svelte +115 -0
- package/src/Form/Core/index.js +16 -0
- package/src/Form/DatePicker.svelte +46 -0
- package/src/Form/Dropzone.svelte +44 -0
- package/src/Form/EnvDropdown.svelte +50 -0
- package/src/Form/Field.svelte +42 -0
- package/src/Form/FieldLabel.svelte +32 -0
- package/src/Form/File.svelte +37 -0
- package/src/Form/Input.svelte +45 -0
- package/src/Form/InputDropdown.svelte +53 -0
- package/src/Form/Multiselect.svelte +49 -0
- package/src/Form/PickerDropdown.svelte +131 -0
- package/src/Form/RadioGroup.svelte +42 -0
- package/src/Form/RichTextField.svelte +36 -0
- package/src/Form/Search.svelte +36 -0
- package/src/Form/Select.svelte +67 -0
- package/src/Form/Slider.svelte +24 -0
- package/src/Form/Stepper.svelte +45 -0
- package/src/Form/TextArea.svelte +34 -0
- package/src/Form/Toggle.svelte +22 -0
- package/src/Icon/Icon.svelte +94 -0
- package/src/Icon/IconAvatar.svelte +61 -0
- package/src/IconPicker/IconPicker.svelte +184 -0
- package/src/IconSideNav/IconSideNav.svelte +14 -0
- package/src/IconSideNav/IconSideNavItem.svelte +56 -0
- package/src/InlineAlert/InlineAlert.svelte +63 -0
- package/src/Input/CopyInput.svelte +59 -0
- package/src/Label/Label.svelte +31 -0
- package/src/Layout/Layout.svelte +94 -0
- package/src/Layout/Page.svelte +101 -0
- package/src/Link/Link.svelte +27 -0
- package/src/List/List.svelte +28 -0
- package/src/List/ListItem.svelte +93 -0
- package/src/Markdown/MarkdownEditor.svelte +60 -0
- package/src/Markdown/MarkdownViewer.svelte +70 -0
- package/src/Markdown/SpectrumMDE.svelte +184 -0
- package/src/Menu/Item.svelte +94 -0
- package/src/Menu/Menu.svelte +7 -0
- package/src/Menu/Menu.svench +19 -0
- package/src/Menu/Section.svelte +10 -0
- package/src/Menu/Separator.svelte +1 -0
- package/src/Modal/Content.svelte +6 -0
- package/src/Modal/CustomContent.svelte +37 -0
- package/src/Modal/Modal.svelte +178 -0
- package/src/Modal/Modal.svench +116 -0
- package/src/Modal/ModalContent.svelte +190 -0
- package/src/Modal/QuizModal.svelte +53 -0
- package/src/Notification/Notification.svelte +74 -0
- package/src/Notification/NotificationDisplay.svelte +43 -0
- package/src/Pagination/Pagination.svelte +57 -0
- package/src/Popover/Popover.svelte +95 -0
- package/src/Popover/Popover.svench +120 -0
- package/src/ProgressBar/ProgressBar.svelte +67 -0
- package/src/ProgressCircle/ProgressCircle.svelte +62 -0
- package/src/SideNavigation/Item.svelte +59 -0
- package/src/SideNavigation/Navigation.svelte +12 -0
- package/src/StatusLight/StatusLight.svelte +80 -0
- package/src/Stores/Notifications.svench.svx +78 -0
- package/src/Stores/banner.js +65 -0
- package/src/Stores/notifications.js +84 -0
- package/src/Table/ArrayRenderer.svelte +18 -0
- package/src/Table/AttachmentRenderer.svelte +73 -0
- package/src/Table/BoldRenderer.svelte +15 -0
- package/src/Table/BooleanRenderer.svelte +42 -0
- package/src/Table/CellRenderer.svelte +70 -0
- package/src/Table/CodeRenderer.svelte +14 -0
- package/src/Table/DateTimeRenderer.svelte +29 -0
- package/src/Table/InternalRenderer.svelte +24 -0
- package/src/Table/RelationshipRenderer.svelte +35 -0
- package/src/Table/SelectEditRenderer.svelte +28 -0
- package/src/Table/StringRenderer.svelte +22 -0
- package/src/Table/Table.svelte +657 -0
- package/src/Table/index.js +1 -0
- package/src/Tabs/Tab.svelte +88 -0
- package/src/Tabs/Tabs.svelte +130 -0
- package/src/Tags/Tag.svelte +43 -0
- package/src/Tags/Tags.svelte +17 -0
- package/src/Tooltip/Tooltip.svelte +34 -0
- package/src/Tooltip/TooltipWrapper.svelte +60 -0
- package/src/TreeView/Item.svelte +41 -0
- package/src/TreeView/Tree.svelte +16 -0
- package/src/Typography/Body.svelte +22 -0
- package/src/Typography/Code.svelte +10 -0
- package/src/Typography/Detail.svelte +19 -0
- package/src/Typography/Heading.svelte +24 -0
- package/src/bbui.css +118 -0
- package/src/context.js +4 -0
- package/src/helpers.js +116 -0
- package/src/index.js +109 -0
- package/src/spectrum-icons-rollup.js +31 -0
- package/src/spectrum-icons-vite.js +31 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import Field from "./Field.svelte"
|
|
3
|
+
import EnvDropdown from "./Core/EnvDropdown.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 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 autofocus
|
|
17
|
+
export let variables
|
|
18
|
+
export let showModal
|
|
19
|
+
export let environmentVariablesEnabled
|
|
20
|
+
export let handleUpgradePanel
|
|
21
|
+
const dispatch = createEventDispatcher()
|
|
22
|
+
const onChange = e => {
|
|
23
|
+
value = e.detail
|
|
24
|
+
dispatch("change", e.detail)
|
|
25
|
+
}
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<Field {label} {labelPosition} {error}>
|
|
29
|
+
<EnvDropdown
|
|
30
|
+
{updateOnChange}
|
|
31
|
+
{error}
|
|
32
|
+
{disabled}
|
|
33
|
+
{readonly}
|
|
34
|
+
{value}
|
|
35
|
+
{placeholder}
|
|
36
|
+
{type}
|
|
37
|
+
{quiet}
|
|
38
|
+
{autofocus}
|
|
39
|
+
{variables}
|
|
40
|
+
{showModal}
|
|
41
|
+
{environmentVariablesEnabled}
|
|
42
|
+
{handleUpgradePanel}
|
|
43
|
+
on:change={onChange}
|
|
44
|
+
on:click
|
|
45
|
+
on:input
|
|
46
|
+
on:blur
|
|
47
|
+
on:focus
|
|
48
|
+
on:keyup
|
|
49
|
+
/>
|
|
50
|
+
</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>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import Field from "./Field.svelte"
|
|
3
|
+
import { CoreFile } from "./Core"
|
|
4
|
+
import { createEventDispatcher } from "svelte"
|
|
5
|
+
|
|
6
|
+
export let label = null
|
|
7
|
+
export let labelPosition = "above"
|
|
8
|
+
export let disabled = false
|
|
9
|
+
export let allowClear = null
|
|
10
|
+
export let handleFileTooLarge = () => {}
|
|
11
|
+
export let previewUrl = null
|
|
12
|
+
export let extensions = null
|
|
13
|
+
export let error = null
|
|
14
|
+
export let title = null
|
|
15
|
+
export let value = null
|
|
16
|
+
export let tooltip = null
|
|
17
|
+
|
|
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} {tooltip}>
|
|
26
|
+
<CoreFile
|
|
27
|
+
{error}
|
|
28
|
+
{disabled}
|
|
29
|
+
{allowClear}
|
|
30
|
+
{title}
|
|
31
|
+
{value}
|
|
32
|
+
{previewUrl}
|
|
33
|
+
{handleFileTooLarge}
|
|
34
|
+
{extensions}
|
|
35
|
+
on:change={onChange}
|
|
36
|
+
/>
|
|
37
|
+
</Field>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import Field from "./Field.svelte"
|
|
3
|
+
import TextField from "./Core/TextField.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 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 autofocus
|
|
17
|
+
export let autocomplete
|
|
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
|
+
<TextField
|
|
28
|
+
{updateOnChange}
|
|
29
|
+
{error}
|
|
30
|
+
{disabled}
|
|
31
|
+
{readonly}
|
|
32
|
+
{value}
|
|
33
|
+
{placeholder}
|
|
34
|
+
{type}
|
|
35
|
+
{quiet}
|
|
36
|
+
{autofocus}
|
|
37
|
+
{autocomplete}
|
|
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,53 @@
|
|
|
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 autofocus
|
|
18
|
+
export let options = []
|
|
19
|
+
|
|
20
|
+
const dispatch = createEventDispatcher()
|
|
21
|
+
|
|
22
|
+
const onPick = e => {
|
|
23
|
+
dropdownValue = e.detail
|
|
24
|
+
dispatch("pick", e.detail)
|
|
25
|
+
}
|
|
26
|
+
const onChange = e => {
|
|
27
|
+
inputValue = e.detail
|
|
28
|
+
dispatch("change", e.detail)
|
|
29
|
+
}
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<Field {label} {labelPosition} {error}>
|
|
33
|
+
<InputDropdown
|
|
34
|
+
{updateOnChange}
|
|
35
|
+
{error}
|
|
36
|
+
{disabled}
|
|
37
|
+
{readonly}
|
|
38
|
+
{inputValue}
|
|
39
|
+
{dropdownValue}
|
|
40
|
+
{placeholder}
|
|
41
|
+
{inputType}
|
|
42
|
+
{quiet}
|
|
43
|
+
{autofocus}
|
|
44
|
+
{options}
|
|
45
|
+
on:change={onChange}
|
|
46
|
+
on:pick={onPick}
|
|
47
|
+
on:click
|
|
48
|
+
on:input
|
|
49
|
+
on:blur
|
|
50
|
+
on:focus
|
|
51
|
+
on:keyup
|
|
52
|
+
/>
|
|
53
|
+
</Field>
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
export let autocomplete = false
|
|
19
|
+
export let fetchTerm = null
|
|
20
|
+
export let useFetch = false
|
|
21
|
+
export let customPopoverHeight
|
|
22
|
+
|
|
23
|
+
const dispatch = createEventDispatcher()
|
|
24
|
+
const onChange = e => {
|
|
25
|
+
value = e.detail
|
|
26
|
+
dispatch("change", e.detail)
|
|
27
|
+
}
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<Field {label} {labelPosition} {error}>
|
|
31
|
+
<Multiselect
|
|
32
|
+
{error}
|
|
33
|
+
{disabled}
|
|
34
|
+
{readonly}
|
|
35
|
+
{value}
|
|
36
|
+
{options}
|
|
37
|
+
{placeholder}
|
|
38
|
+
{sort}
|
|
39
|
+
{getOptionLabel}
|
|
40
|
+
{getOptionValue}
|
|
41
|
+
{autoWidth}
|
|
42
|
+
{autocomplete}
|
|
43
|
+
{customPopoverHeight}
|
|
44
|
+
bind:fetchTerm
|
|
45
|
+
{useFetch}
|
|
46
|
+
on:change={onChange}
|
|
47
|
+
on:click
|
|
48
|
+
/>
|
|
49
|
+
</Field>
|
|
@@ -0,0 +1,131 @@
|
|
|
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 getSecondaryOptionLabel = option =>
|
|
18
|
+
extractProperty(option, "label")
|
|
19
|
+
export let getSecondaryOptionValue = option =>
|
|
20
|
+
extractProperty(option, "value")
|
|
21
|
+
export let getSecondaryOptionColour = () => {}
|
|
22
|
+
export let getSecondaryOptionIcon = () => {}
|
|
23
|
+
export let quiet = false
|
|
24
|
+
export let autofocus
|
|
25
|
+
export let primaryOptions = []
|
|
26
|
+
export let secondaryOptions = []
|
|
27
|
+
export let searchTerm
|
|
28
|
+
export let showClearIcon = true
|
|
29
|
+
|
|
30
|
+
let primaryLabel
|
|
31
|
+
let secondaryLabel
|
|
32
|
+
const dispatch = createEventDispatcher()
|
|
33
|
+
|
|
34
|
+
$: secondaryFieldText = getSecondaryFieldText(
|
|
35
|
+
secondaryValue,
|
|
36
|
+
secondaryOptions,
|
|
37
|
+
secondaryPlaceholder
|
|
38
|
+
)
|
|
39
|
+
$: secondaryFieldIcon = getSecondaryFieldAttribute(
|
|
40
|
+
getSecondaryOptionIcon,
|
|
41
|
+
secondaryValue,
|
|
42
|
+
secondaryOptions
|
|
43
|
+
)
|
|
44
|
+
$: secondaryFieldColour = getSecondaryFieldAttribute(
|
|
45
|
+
getSecondaryOptionColour,
|
|
46
|
+
secondaryValue,
|
|
47
|
+
secondaryOptions
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
const getSecondaryFieldAttribute = (getAttribute, value, options) => {
|
|
51
|
+
// Wait for options to load if there is a value but no options
|
|
52
|
+
|
|
53
|
+
if (!options?.length) {
|
|
54
|
+
return ""
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const index = options.findIndex(
|
|
58
|
+
(option, idx) => getSecondaryOptionValue(option, idx) === value
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
return index !== -1 ? getAttribute(options[index], index) : null
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const getSecondaryFieldText = (value, options, placeholder) => {
|
|
65
|
+
// Always use placeholder if no value
|
|
66
|
+
if (value == null || value === "") {
|
|
67
|
+
return placeholder || "Choose an option"
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return getSecondaryFieldAttribute(getSecondaryOptionLabel, value, options)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const onPickPrimary = e => {
|
|
74
|
+
primaryLabel = e?.detail?.label || null
|
|
75
|
+
primaryValue = e?.detail?.value || null
|
|
76
|
+
dispatch("pickprimary", e?.detail?.value || {})
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const onPickSecondary = e => {
|
|
80
|
+
secondaryValue = e.detail
|
|
81
|
+
dispatch("picksecondary", e.detail)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const extractProperty = (value, property) => {
|
|
85
|
+
if (value && typeof value === "object") {
|
|
86
|
+
return value[property]
|
|
87
|
+
}
|
|
88
|
+
return value
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const updateSearchTerm = e => {
|
|
92
|
+
searchTerm = e.detail
|
|
93
|
+
}
|
|
94
|
+
</script>
|
|
95
|
+
|
|
96
|
+
<Field {label} {labelPosition} {error}>
|
|
97
|
+
<PickerDropdown
|
|
98
|
+
{searchTerm}
|
|
99
|
+
{autocomplete}
|
|
100
|
+
{error}
|
|
101
|
+
{disabled}
|
|
102
|
+
{readonly}
|
|
103
|
+
{placeholder}
|
|
104
|
+
{inputType}
|
|
105
|
+
{quiet}
|
|
106
|
+
{autofocus}
|
|
107
|
+
{primaryOptions}
|
|
108
|
+
{secondaryOptions}
|
|
109
|
+
{getSecondaryOptionLabel}
|
|
110
|
+
{getSecondaryOptionValue}
|
|
111
|
+
{getSecondaryOptionIcon}
|
|
112
|
+
{getSecondaryOptionColour}
|
|
113
|
+
{secondaryFieldText}
|
|
114
|
+
{secondaryFieldIcon}
|
|
115
|
+
{secondaryFieldColour}
|
|
116
|
+
{primaryValue}
|
|
117
|
+
{secondaryValue}
|
|
118
|
+
{primaryLabel}
|
|
119
|
+
{secondaryLabel}
|
|
120
|
+
{showClearIcon}
|
|
121
|
+
on:pickprimary={onPickPrimary}
|
|
122
|
+
on:picksecondary={onPickSecondary}
|
|
123
|
+
on:search={updateSearchTerm}
|
|
124
|
+
on:click
|
|
125
|
+
on:input
|
|
126
|
+
on:blur
|
|
127
|
+
on:focus
|
|
128
|
+
on:keyup
|
|
129
|
+
on:closed
|
|
130
|
+
/>
|
|
131
|
+
</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>
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import Field from "./Field.svelte"
|
|
3
|
+
import Select from "./Core/Select.svelte"
|
|
4
|
+
import { createEventDispatcher } from "svelte"
|
|
5
|
+
|
|
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 useOptionIconImage = false
|
|
18
|
+
export let getOptionColour = option => option?.colour
|
|
19
|
+
export let isOptionEnabled
|
|
20
|
+
export let quiet = false
|
|
21
|
+
export let autoWidth = false
|
|
22
|
+
export let sort = false
|
|
23
|
+
export let tooltip = ""
|
|
24
|
+
export let autocomplete = false
|
|
25
|
+
export let customPopoverHeight
|
|
26
|
+
export let align
|
|
27
|
+
export let footer = null
|
|
28
|
+
|
|
29
|
+
const dispatch = createEventDispatcher()
|
|
30
|
+
const onChange = e => {
|
|
31
|
+
value = e.detail
|
|
32
|
+
dispatch("change", e.detail)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const extractProperty = (value, property) => {
|
|
36
|
+
if (value && typeof value === "object") {
|
|
37
|
+
return value[property]
|
|
38
|
+
}
|
|
39
|
+
return value
|
|
40
|
+
}
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
<Field {label} {labelPosition} {error} {tooltip}>
|
|
44
|
+
<Select
|
|
45
|
+
{quiet}
|
|
46
|
+
{error}
|
|
47
|
+
{disabled}
|
|
48
|
+
{readonly}
|
|
49
|
+
{value}
|
|
50
|
+
{options}
|
|
51
|
+
{placeholder}
|
|
52
|
+
{autoWidth}
|
|
53
|
+
{sort}
|
|
54
|
+
{align}
|
|
55
|
+
{footer}
|
|
56
|
+
{getOptionLabel}
|
|
57
|
+
{getOptionValue}
|
|
58
|
+
{getOptionIcon}
|
|
59
|
+
{getOptionColour}
|
|
60
|
+
{useOptionIconImage}
|
|
61
|
+
{isOptionEnabled}
|
|
62
|
+
{autocomplete}
|
|
63
|
+
{customPopoverHeight}
|
|
64
|
+
on:change={onChange}
|
|
65
|
+
on:click
|
|
66
|
+
/>
|
|
67
|
+
</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>
|