@communitiesuk/svelte-component-library 0.1.17
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/README.md +188 -0
- package/dist/assets/css/govuk-frontend.min.css +2 -0
- package/dist/assets/css/govuk-frontend.min.css.map +1 -0
- package/dist/assets/fonts/bold-affa96571d-v2.woff +0 -0
- package/dist/assets/fonts/bold-b542beb274-v2.woff2 +0 -0
- package/dist/assets/fonts/light-94a07e06a1-v2.woff2 +0 -0
- package/dist/assets/fonts/light-f591b13f7d-v2.woff +0 -0
- package/dist/assets/govuk_publishing_components/images/icon-autocomplete-search-suggestion.svg +4 -0
- package/dist/assets/govuk_publishing_components/images/icon-close.svg +1 -0
- package/dist/assets/images/favicon.ico +0 -0
- package/dist/assets/images/favicon.svg +1 -0
- package/dist/assets/images/govuk-crest-2x.png +0 -0
- package/dist/assets/images/govuk-crest.png +0 -0
- package/dist/assets/images/govuk-crest.svg +1 -0
- package/dist/assets/images/govuk-icon-180.png +0 -0
- package/dist/assets/images/govuk-icon-192.png +0 -0
- package/dist/assets/images/govuk-icon-512.png +0 -0
- package/dist/assets/images/govuk-icon-mask.svg +1 -0
- package/dist/assets/images/govuk-opengraph-image.png +0 -0
- package/dist/assets/images/homepage-illustration.svg +1 -0
- package/dist/assets/images/homepage.svg +44 -0
- package/dist/assets/images/masthead-illustration.svg +123 -0
- package/dist/assets/images/oflog_crest_black.png +0 -0
- package/dist/assets/images/oflog_crest_white.png +0 -0
- package/dist/assets/images/undraw_approved-wireframe_odf4.svg +1 -0
- package/dist/assets/images/undraw_collaborators_rgw4.svg +1 -0
- package/dist/assets/images/undraw_content-creator_vuqg.svg +1 -0
- package/dist/assets/images/undraw_online-media_opxh.svg +1 -0
- package/dist/assets/images/undraw_pull-request_zlsu.svg +1 -0
- package/dist/assets/images/undraw_reviewed-docs_g0cg.svg +1 -0
- package/dist/components/FilterPanel/codeBlocks.d.ts +3 -0
- package/dist/components/FilterPanel/codeBlocks.js +418 -0
- package/dist/components/content/InsetText.svelte +21 -0
- package/dist/components/content/InsetText.svelte.d.ts +7 -0
- package/dist/components/content/WarningText.svelte +27 -0
- package/dist/components/content/WarningText.svelte.d.ts +8 -0
- package/dist/components/data-vis/axis/Axis.svelte +51 -0
- package/dist/components/data-vis/axis/Axis.svelte.d.ts +33 -0
- package/dist/components/data-vis/axis/Ticks.svelte +113 -0
- package/dist/components/data-vis/axis/Ticks.svelte.d.ts +33 -0
- package/dist/components/data-vis/line-chart/Line.svelte +150 -0
- package/dist/components/data-vis/line-chart/Line.svelte.d.ts +85 -0
- package/dist/components/data-vis/line-chart/LineChart.svelte +249 -0
- package/dist/components/data-vis/line-chart/LineChart.svelte.d.ts +73 -0
- package/dist/components/data-vis/line-chart/Lines.svelte +138 -0
- package/dist/components/data-vis/line-chart/Lines.svelte.d.ts +57 -0
- package/dist/components/data-vis/line-chart/Marker.svelte +61 -0
- package/dist/components/data-vis/line-chart/Marker.svelte.d.ts +37 -0
- package/dist/components/data-vis/line-chart/SeriesLabel.svelte +67 -0
- package/dist/components/data-vis/line-chart/SeriesLabel.svelte.d.ts +43 -0
- package/dist/components/data-vis/line-chart/ValueLabel.svelte +50 -0
- package/dist/components/data-vis/line-chart/ValueLabel.svelte.d.ts +25 -0
- package/dist/components/data-vis/map/Map.svelte +392 -0
- package/dist/components/data-vis/map/Map.svelte.d.ts +47 -0
- package/dist/components/data-vis/map/MapLegend.svelte +41 -0
- package/dist/components/data-vis/map/MapLegend.svelte.d.ts +15 -0
- package/dist/components/data-vis/map/NonStandardControls.svelte +42 -0
- package/dist/components/data-vis/map/NonStandardControls.svelte.d.ts +13 -0
- package/dist/components/data-vis/map/Tooltip.svelte +41 -0
- package/dist/components/data-vis/map/Tooltip.svelte.d.ts +19 -0
- package/dist/components/data-vis/map/colorbrewer.d.ts +337 -0
- package/dist/components/data-vis/map/colorbrewer.js +1523 -0
- package/dist/components/data-vis/map/colors.d.ts +13 -0
- package/dist/components/data-vis/map/colors.js +65 -0
- package/dist/components/data-vis/map/dataJoin.d.ts +2 -0
- package/dist/components/data-vis/map/dataJoin.js +27 -0
- package/dist/components/data-vis/map/fullTopo.json +1 -0
- package/dist/components/data-vis/map/jenks.d.ts +1 -0
- package/dist/components/data-vis/map/jenks.js +51 -0
- package/dist/components/data-vis/map/lad2023.json +1 -0
- package/dist/components/data-vis/map/mapUtils.d.ts +5 -0
- package/dist/components/data-vis/map/mapUtils.js +86 -0
- package/dist/components/data-vis/map/topo.json +1 -0
- package/dist/components/data-vis/table/Table.svelte +247 -0
- package/dist/components/data-vis/table/Table.svelte.d.ts +19 -0
- package/dist/components/layout/Breadcrumbs.svelte +191 -0
- package/dist/components/layout/Breadcrumbs.svelte.d.ts +24 -0
- package/dist/components/layout/Footer.svelte +171 -0
- package/dist/components/layout/Footer.svelte.d.ts +30 -0
- package/dist/components/layout/Header.svelte +43 -0
- package/dist/components/layout/Header.svelte.d.ts +7 -0
- package/dist/components/layout/InternalHeader.svelte +628 -0
- package/dist/components/layout/InternalHeader.svelte.d.ts +15 -0
- package/dist/components/layout/PhaseBanner.svelte +28 -0
- package/dist/components/layout/PhaseBanner.svelte.d.ts +9 -0
- package/dist/components/layout/ServiceNavigation.svelte +143 -0
- package/dist/components/layout/ServiceNavigation.svelte.d.ts +13 -0
- package/dist/components/layout/SideNavigation.svelte +345 -0
- package/dist/components/layout/SideNavigation.svelte.d.ts +25 -0
- package/dist/components/layout/service-navigation-nested-mobile/HeaderNav.svelte +91 -0
- package/dist/components/layout/service-navigation-nested-mobile/HeaderNav.svelte.d.ts +15 -0
- package/dist/components/layout/service-navigation-nested-mobile/MobileNav.svelte +233 -0
- package/dist/components/layout/service-navigation-nested-mobile/MobileNav.svelte.d.ts +27 -0
- package/dist/components/layout/service-navigation-nested-mobile/ServiceNavigationNestedMobile.svelte +70 -0
- package/dist/components/layout/service-navigation-nested-mobile/ServiceNavigationNestedMobile.svelte.d.ts +11 -0
- package/dist/components/layout/service-navigation-nested-mobile/SideNav.svelte +276 -0
- package/dist/components/layout/service-navigation-nested-mobile/SideNav.svelte.d.ts +22 -0
- package/dist/components/ui/Accordion.svelte +244 -0
- package/dist/components/ui/Accordion.svelte.d.ts +23 -0
- package/dist/components/ui/Breadcrumbs.svelte +198 -0
- package/dist/components/ui/Breadcrumbs.svelte.d.ts +24 -0
- package/dist/components/ui/Button.svelte +96 -0
- package/dist/components/ui/Button.svelte.d.ts +17 -0
- package/dist/components/ui/CheckBox.svelte +198 -0
- package/dist/components/ui/CheckBox.svelte.d.ts +27 -0
- package/dist/components/ui/ContentsList.svelte +1117 -0
- package/dist/components/ui/ContentsList.svelte.d.ts +25 -0
- package/dist/components/ui/DateInput.svelte +255 -0
- package/dist/components/ui/DateInput.svelte.d.ts +59 -0
- package/dist/components/ui/Details.svelte +12 -0
- package/dist/components/ui/Details.svelte.d.ts +13 -0
- package/dist/components/ui/FilterPanel.svelte +588 -0
- package/dist/components/ui/FilterPanel.svelte.d.ts +74 -0
- package/dist/components/ui/Footer.svelte +171 -0
- package/dist/components/ui/Footer.svelte.d.ts +30 -0
- package/dist/components/ui/Header.svelte +43 -0
- package/dist/components/ui/Header.svelte.d.ts +7 -0
- package/dist/components/ui/Masthead.svelte +267 -0
- package/dist/components/ui/Masthead.svelte.d.ts +12 -0
- package/dist/components/ui/NavigationExample.svelte +117 -0
- package/dist/components/ui/NavigationExample.svelte.d.ts +3 -0
- package/dist/components/ui/NotificationBanner.svelte +93 -0
- package/dist/components/ui/NotificationBanner.svelte.d.ts +15 -0
- package/dist/components/ui/Radios.svelte +176 -0
- package/dist/components/ui/Radios.svelte.d.ts +28 -0
- package/dist/components/ui/RelatedContent.svelte +596 -0
- package/dist/components/ui/RelatedContent.svelte.d.ts +29 -0
- package/dist/components/ui/Search.svelte +499 -0
- package/dist/components/ui/Search.svelte.d.ts +32 -0
- package/dist/components/ui/SearchAutocomplete.svelte +655 -0
- package/dist/components/ui/SearchAutocomplete.svelte.d.ts +37 -0
- package/dist/components/ui/Select.svelte +116 -0
- package/dist/components/ui/Select.svelte.d.ts +22 -0
- package/dist/components/ui/ServiceNavigation.svelte +143 -0
- package/dist/components/ui/ServiceNavigation.svelte.d.ts +13 -0
- package/dist/components/ui/SideNavigation.svelte +346 -0
- package/dist/components/ui/SideNavigation.svelte.d.ts +25 -0
- package/dist/components/ui/Tabs.svelte +306 -0
- package/dist/components/ui/Tabs.svelte.d.ts +18 -0
- package/dist/components/ui/WhatsNew.svelte +155 -0
- package/dist/components/ui/WhatsNew.svelte.d.ts +29 -0
- package/dist/config.d.ts +51 -0
- package/dist/config.js +44 -0
- package/dist/icons/DoubleChevronButton.svelte +62 -0
- package/dist/icons/DoubleChevronButton.svelte.d.ts +13 -0
- package/dist/icons/IconSearch.svelte +42 -0
- package/dist/icons/IconSearch.svelte.d.ts +6 -0
- package/dist/icons/SingleChevronButtonWithLabel.svelte +132 -0
- package/dist/icons/SingleChevronButtonWithLabel.svelte.d.ts +19 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.js +45 -0
- package/dist/main.css +1 -0
- package/dist/package-wrapping/BaseInformation.svelte +82 -0
- package/dist/package-wrapping/BaseInformation.svelte.d.ts +15 -0
- package/dist/package-wrapping/BaseNameAndStatus.svelte +108 -0
- package/dist/package-wrapping/BaseNameAndStatus.svelte.d.ts +10 -0
- package/dist/package-wrapping/CodeBlock.svelte +62 -0
- package/dist/package-wrapping/CodeBlock.svelte.d.ts +12 -0
- package/dist/package-wrapping/ComponentDemo.svelte +114 -0
- package/dist/package-wrapping/ComponentDemo.svelte.d.ts +25 -0
- package/dist/package-wrapping/ComponentDemoTEMP.svelte +305 -0
- package/dist/package-wrapping/ComponentDemoTEMP.svelte.d.ts +21 -0
- package/dist/package-wrapping/ComponentDetails.svelte +123 -0
- package/dist/package-wrapping/ComponentDetails.svelte.d.ts +13 -0
- package/dist/package-wrapping/DividerLine.svelte +21 -0
- package/dist/package-wrapping/DividerLine.svelte.d.ts +17 -0
- package/dist/package-wrapping/InputForParameter.svelte +205 -0
- package/dist/package-wrapping/InputForParameter.svelte.d.ts +13 -0
- package/dist/package-wrapping/InputForParameterUpdated.svelte +222 -0
- package/dist/package-wrapping/InputForParameterUpdated.svelte.d.ts +17 -0
- package/dist/package-wrapping/InputForParameterUpdatedTEMP.svelte +203 -0
- package/dist/package-wrapping/InputForParameterUpdatedTEMP.svelte.d.ts +17 -0
- package/dist/package-wrapping/ListOfComponentStatuses.svelte +19 -0
- package/dist/package-wrapping/ListOfComponentStatuses.svelte.d.ts +11 -0
- package/dist/package-wrapping/OverlayAndComponentContainer.svelte +426 -0
- package/dist/package-wrapping/OverlayAndComponentContainer.svelte.d.ts +33 -0
- package/dist/package-wrapping/ParametersSection.svelte +235 -0
- package/dist/package-wrapping/ParametersSection.svelte.d.ts +19 -0
- package/dist/package-wrapping/ParsingErrorToastsContainer.svelte +50 -0
- package/dist/package-wrapping/ParsingErrorToastsContainer.svelte.d.ts +15 -0
- package/dist/package-wrapping/Pill.svelte +54 -0
- package/dist/package-wrapping/Pill.svelte.d.ts +25 -0
- package/dist/package-wrapping/PlaygroundDetails.svelte +106 -0
- package/dist/package-wrapping/PlaygroundDetails.svelte.d.ts +13 -0
- package/dist/package-wrapping/ScreenSizeRadio.svelte +24 -0
- package/dist/package-wrapping/ScreenSizeRadio.svelte.d.ts +11 -0
- package/dist/package-wrapping/ScreenSizeRadioUpdated.svelte +23 -0
- package/dist/package-wrapping/ScreenSizeRadioUpdated.svelte.d.ts +11 -0
- package/dist/package-wrapping/SidebarContainer.svelte +103 -0
- package/dist/package-wrapping/SidebarContainer.svelte.d.ts +23 -0
- package/dist/package-wrapping/WrapperDetailsUpdate.svelte +40 -0
- package/dist/package-wrapping/WrapperDetailsUpdate.svelte.d.ts +15 -0
- package/dist/package-wrapping/templates/Template.svelte +100 -0
- package/dist/package-wrapping/templates/Template.svelte.d.ts +25 -0
- package/dist/templates/ComponentPageTemplate.svelte +1 -0
- package/dist/templates/ComponentPageTemplate.svelte.d.ts +26 -0
- package/dist/utils/data-transformations/convertCSV.d.ts +2 -0
- package/dist/utils/data-transformations/convertCSV.js +22 -0
- package/dist/utils/data-transformations/getValueFromParametersArray.d.ts +1 -0
- package/dist/utils/data-transformations/getValueFromParametersArray.js +9 -0
- package/dist/utils/layoutNavHelpers.d.ts +70 -0
- package/dist/utils/layoutNavHelpers.js +129 -0
- package/dist/utils/package-wrapping-specific/addIndexAndInitialValue.d.ts +1 -0
- package/dist/utils/package-wrapping-specific/addIndexAndInitialValue.js +21 -0
- package/dist/utils/package-wrapping-specific/createBindableParametersValuesArray.d.ts +1 -0
- package/dist/utils/package-wrapping-specific/createBindableParametersValuesArray.js +12 -0
- package/dist/utils/package-wrapping-specific/createParametersObject.d.ts +1 -0
- package/dist/utils/package-wrapping-specific/createParametersObject.js +29 -0
- package/dist/utils/package-wrapping-specific/defineDefaultEventHandler.d.ts +1 -0
- package/dist/utils/package-wrapping-specific/defineDefaultEventHandler.js +14 -0
- package/dist/utils/package-wrapping-specific/trackVisibleParameters.d.ts +1 -0
- package/dist/utils/package-wrapping-specific/trackVisibleParameters.js +29 -0
- package/dist/utils/syntax-highlighting/shikiHighlight.d.ts +7 -0
- package/dist/utils/syntax-highlighting/shikiHighlight.js +76 -0
- package/dist/utils/text-string-conversion/textStringConversion.d.ts +9 -0
- package/dist/utils/text-string-conversion/textStringConversion.js +86 -0
- package/package.json +113 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import loader from "@monaco-editor/loader";
|
|
3
|
+
import Pill from "./Pill.svelte";
|
|
4
|
+
import CodeBlock from "./CodeBlock.svelte";
|
|
5
|
+
import { propPillLookup } from "../config.js";
|
|
6
|
+
import {
|
|
7
|
+
Checkbox,
|
|
8
|
+
Input,
|
|
9
|
+
Modal,
|
|
10
|
+
Radio,
|
|
11
|
+
Select,
|
|
12
|
+
Textarea,
|
|
13
|
+
Button,
|
|
14
|
+
} from "flowbite-svelte";
|
|
15
|
+
|
|
16
|
+
let { source, value = $bindable() } = $props();
|
|
17
|
+
|
|
18
|
+
let propPillObject =
|
|
19
|
+
propPillLookup[source.isBindable ? "bindable" : source.isProp];
|
|
20
|
+
|
|
21
|
+
// Reference to the div element that will contain the editor
|
|
22
|
+
// Using $state() because Monaco will dynamically modify this element's contents
|
|
23
|
+
// and we want Svelte to track these DOM mutations
|
|
24
|
+
let editorContainer = $state();
|
|
25
|
+
|
|
26
|
+
// The actual Monaco editor instance that provides editing functionality
|
|
27
|
+
// This is separate from the container - Monaco will inject its UI into the container
|
|
28
|
+
// when initialized
|
|
29
|
+
let monacoEditor;
|
|
30
|
+
|
|
31
|
+
let defaultModal = $state(false);
|
|
32
|
+
|
|
33
|
+
async function createModal() {
|
|
34
|
+
defaultModal = true;
|
|
35
|
+
|
|
36
|
+
if (source.inputType === "function" || source.inputType === "javascript") {
|
|
37
|
+
// Load the Monaco editor library
|
|
38
|
+
const monaco = await loader.init();
|
|
39
|
+
|
|
40
|
+
monacoEditor = monaco.editor.create(editorContainer, {
|
|
41
|
+
value, // Initial editor content bound to the component's value prop
|
|
42
|
+
language: source.inputType === "javascript" ? "json" : "javascript",
|
|
43
|
+
theme: "vs-light",
|
|
44
|
+
minimap: { enabled: false },
|
|
45
|
+
scrollbar: {
|
|
46
|
+
verticalScrollbarSize: 8,
|
|
47
|
+
},
|
|
48
|
+
lineNumbers: "off",
|
|
49
|
+
folding: false,
|
|
50
|
+
scrollBeyondLastLine: false,
|
|
51
|
+
automaticLayout: true,
|
|
52
|
+
fontSize: 14,
|
|
53
|
+
formatOnPaste: true,
|
|
54
|
+
formatOnType: true,
|
|
55
|
+
wordWrap: "on",
|
|
56
|
+
overviewRulerLanes: 0, // Disables the overview ruler
|
|
57
|
+
overviewRulerBorder: false,
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Establish two-way data binding between editor content and component's value prop
|
|
61
|
+
monacoEditor.onDidChangeModelContent(() => {
|
|
62
|
+
value = monacoEditor.getValue();
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// Cleanup: Dispose Monaco editor instance on component destruction
|
|
66
|
+
return () => {
|
|
67
|
+
monacoEditor?.dispose();
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
</script>
|
|
72
|
+
|
|
73
|
+
{#snippet parameterName(name, propPillObject, inline = false, modal = false)}
|
|
74
|
+
<div class="flex flex-row flex-wrap justify-between items=center">
|
|
75
|
+
<div class="flex flex-row flex-wrap gap-1 mb-{inline ? 0 : 1} items-center">
|
|
76
|
+
<p class="m-0 p-0 text-lg text-black italic" style="font-weight: 500;">
|
|
77
|
+
{source.name}
|
|
78
|
+
</p>
|
|
79
|
+
<Pill
|
|
80
|
+
size={propPillObject.size}
|
|
81
|
+
textContent={propPillObject.text}
|
|
82
|
+
bgColor={propPillObject.bgColor}
|
|
83
|
+
textColor={propPillObject.textColor}
|
|
84
|
+
borderRadius="15px"
|
|
85
|
+
padding={propPillObject.padding}
|
|
86
|
+
></Pill>
|
|
87
|
+
</div>
|
|
88
|
+
{#if modal}
|
|
89
|
+
<div class="flex flex-col justify-center text-xs">
|
|
90
|
+
<Button
|
|
91
|
+
class="p-0 pl-1 m-0 h-[22px] bg-gray-700"
|
|
92
|
+
on:click={createModal}
|
|
93
|
+
>
|
|
94
|
+
<span class="text-xs">Edit</span>
|
|
95
|
+
<svg width="22" height="22">
|
|
96
|
+
<g transform="translate(2,2)scale(0.25)">
|
|
97
|
+
<path
|
|
98
|
+
stroke="none"
|
|
99
|
+
fill="white"
|
|
100
|
+
d="M38.406 22.234l11.36 11.36L28.784 54.576l-12.876 4.307c-1.725.577-3.367-1.065-2.791-2.79l4.307-12.876L38.406 22.234zM41.234 19.406l5.234-5.234c1.562-1.562 4.095-1.562 5.657 0l5.703 5.703c1.562 1.562 1.562 4.095 0 5.657l-5.234 5.234L41.234 19.406z"
|
|
101
|
+
></path>
|
|
102
|
+
</g>
|
|
103
|
+
</svg>
|
|
104
|
+
</Button>
|
|
105
|
+
</div>
|
|
106
|
+
{/if}
|
|
107
|
+
</div>
|
|
108
|
+
{/snippet}
|
|
109
|
+
|
|
110
|
+
{#if source.inputType === "checkbox"}
|
|
111
|
+
<Checkbox bind:checked={value} color="orange">
|
|
112
|
+
{@render parameterName(source.name, propPillObject, true)}
|
|
113
|
+
</Checkbox>
|
|
114
|
+
{/if}
|
|
115
|
+
|
|
116
|
+
{#if source.inputType === "function" || source.inputType === "javascript"}
|
|
117
|
+
{@render parameterName(source.name, propPillObject, false, true)}
|
|
118
|
+
<!-- Container div for the Monaco editor:
|
|
119
|
+
- bind:this connects this element to our editorContainer variable state
|
|
120
|
+
- The height/border/rounded styles create the visual box for the editor
|
|
121
|
+
-->
|
|
122
|
+
<CodeBlock code={value} language="svelte" size="xs" includeHeader={false} />
|
|
123
|
+
|
|
124
|
+
<Modal
|
|
125
|
+
title={source.name}
|
|
126
|
+
bind:open={defaultModal}
|
|
127
|
+
size="lg"
|
|
128
|
+
classHeader="m-0 p-0 text-xl italic"
|
|
129
|
+
outsideclose
|
|
130
|
+
>
|
|
131
|
+
<div bind:this={editorContainer} class="h-[480px] w-full p-2"></div>
|
|
132
|
+
<svelte:fragment slot="footer"></svelte:fragment>
|
|
133
|
+
</Modal>
|
|
134
|
+
{:else if source.inputType === "dropdown"}
|
|
135
|
+
{@render parameterName(source.name, propPillObject)}
|
|
136
|
+
<Select
|
|
137
|
+
class="text-base"
|
|
138
|
+
items={source.options.map((el) => ({ name: el, value: el }))}
|
|
139
|
+
bind:value
|
|
140
|
+
/>
|
|
141
|
+
{:else if source.inputType === "radio"}
|
|
142
|
+
{@render parameterName(source.name, propPillObject)}
|
|
143
|
+
{#each source.options as option, i}
|
|
144
|
+
<Radio value={option} bind:group={value}>
|
|
145
|
+
<span class="text-base font-normal">
|
|
146
|
+
{option}
|
|
147
|
+
</span>
|
|
148
|
+
</Radio>
|
|
149
|
+
{/each}
|
|
150
|
+
{:else if source.inputType === "textArea"}
|
|
151
|
+
<div>
|
|
152
|
+
{@render parameterName(source.name, propPillObject)}
|
|
153
|
+
<Textarea id="textarea-id" bind:value rows={9} />
|
|
154
|
+
</div>
|
|
155
|
+
{:else if source.inputType === "input"}
|
|
156
|
+
{@render parameterName(source.name, propPillObject)}
|
|
157
|
+
<Input size="lg" bind:value />
|
|
158
|
+
{:else if source.inputType === "numberInput"}
|
|
159
|
+
{@render parameterName(source.name, propPillObject)}
|
|
160
|
+
<Input let:props>
|
|
161
|
+
<input
|
|
162
|
+
type="number"
|
|
163
|
+
{...props}
|
|
164
|
+
step={source?.step}
|
|
165
|
+
min={source?.min}
|
|
166
|
+
max={source?.max}
|
|
167
|
+
bind:value
|
|
168
|
+
/>
|
|
169
|
+
</Input>
|
|
170
|
+
{:else if source.inputType === "event"}
|
|
171
|
+
{@render parameterName(source.name, propPillObject)}
|
|
172
|
+
<p class="my-2 mx-0 p-0 text-sm text-black">
|
|
173
|
+
The {source.name} event handler has been called {value[0]} time{value[0] ===
|
|
174
|
+
1
|
|
175
|
+
? ""
|
|
176
|
+
: "s"}{value[1] ? " (" + value[1] + ")" : ""}.
|
|
177
|
+
</p>
|
|
178
|
+
{:else if "label" in source}
|
|
179
|
+
{@render parameterName(source.name, propPillObject)}
|
|
180
|
+
{/if}
|
|
181
|
+
|
|
182
|
+
{#if source.label}
|
|
183
|
+
<div
|
|
184
|
+
class="my-2 mx-0 p-2 text-sm text-slate-600 rounded-lg bg-white border border-solid border-slate-600"
|
|
185
|
+
>
|
|
186
|
+
<p class="underline underline-offset-4 p-0 m-0">Desc:</p>
|
|
187
|
+
<p class="p-0 m-0">
|
|
188
|
+
{source.label}
|
|
189
|
+
</p>
|
|
190
|
+
</div>
|
|
191
|
+
{/if}
|
|
192
|
+
|
|
193
|
+
{#if source.exampleCode}
|
|
194
|
+
<p
|
|
195
|
+
class="mt-4 mb-0 mx-0 p-0 break-words text-sm rounded-md"
|
|
196
|
+
style="color: #ba029b"
|
|
197
|
+
>
|
|
198
|
+
<CodeBlock
|
|
199
|
+
code={source.exampleCode}
|
|
200
|
+
language="svelte"
|
|
201
|
+
size="xs"
|
|
202
|
+
includeHeader={false}
|
|
203
|
+
/>
|
|
204
|
+
</p>
|
|
205
|
+
{/if}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export default InputForParameter;
|
|
2
|
+
type InputForParameter = {
|
|
3
|
+
$on?(type: string, callback: (e: any) => void): () => void;
|
|
4
|
+
$set?(props: Partial<$$ComponentProps>): void;
|
|
5
|
+
};
|
|
6
|
+
declare const InputForParameter: import("svelte").Component<{
|
|
7
|
+
source: any;
|
|
8
|
+
value?: any;
|
|
9
|
+
}, {}, "value">;
|
|
10
|
+
type $$ComponentProps = {
|
|
11
|
+
source: any;
|
|
12
|
+
value?: any;
|
|
13
|
+
};
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { Checkbox, Select, Radio, Textarea, Input } from "flowbite-svelte";
|
|
3
|
+
import CodeBlock from "./CodeBlock.svelte";
|
|
4
|
+
import loader from "@monaco-editor/loader";
|
|
5
|
+
import { onMount } from "svelte";
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
demoScreenWidth,
|
|
9
|
+
statedValue = $bindable(),
|
|
10
|
+
derivedValue,
|
|
11
|
+
parameter,
|
|
12
|
+
} = $props();
|
|
13
|
+
|
|
14
|
+
let useStatedValue = $derived(derivedValue == null);
|
|
15
|
+
let useRadio = $derived(
|
|
16
|
+
parameter.isEditable && parameter.propType === "radio",
|
|
17
|
+
);
|
|
18
|
+
let useDropdown = $derived(
|
|
19
|
+
(parameter.isEditable && parameter.inputType === "dropdown") ||
|
|
20
|
+
"options" in parameter,
|
|
21
|
+
);
|
|
22
|
+
let useTextarea = $derived(
|
|
23
|
+
parameter.isEditable &&
|
|
24
|
+
typeof (useStatedValue ? statedValue : derivedValue) === "string" &&
|
|
25
|
+
typeof parameter.value === "string",
|
|
26
|
+
);
|
|
27
|
+
let useNumberInput = $derived(
|
|
28
|
+
(parameter.isEditable && typeof statedValue === "number") ||
|
|
29
|
+
(statedValue === null && typeof parameter.value === "number"),
|
|
30
|
+
);
|
|
31
|
+
let useCheckbox = $derived(
|
|
32
|
+
parameter.isEditable && typeof statedValue === "boolean",
|
|
33
|
+
);
|
|
34
|
+
let useMonacoEditor = $derived(
|
|
35
|
+
parameter.isEditable &&
|
|
36
|
+
useStatedValue &&
|
|
37
|
+
!useRadio &&
|
|
38
|
+
!useDropdown &&
|
|
39
|
+
!useTextarea &&
|
|
40
|
+
!useNumberInput &&
|
|
41
|
+
!useCheckbox,
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
let monacoEditorContainerWidth = $derived(
|
|
45
|
+
useMonacoEditor
|
|
46
|
+
? demoScreenWidth < 1024
|
|
47
|
+
? 350
|
|
48
|
+
: demoScreenWidth < 1280
|
|
49
|
+
? 450
|
|
50
|
+
: 550
|
|
51
|
+
: null,
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
let monacoEditorContainerHeight = $derived(
|
|
55
|
+
useMonacoEditor && monacoEditorContainerWidth
|
|
56
|
+
? 40 +
|
|
57
|
+
20 *
|
|
58
|
+
JSON.stringify(parameter.value, null, 2)
|
|
59
|
+
.split("\n")
|
|
60
|
+
.reduce(
|
|
61
|
+
(acc, str) =>
|
|
62
|
+
acc +
|
|
63
|
+
Math.ceil(
|
|
64
|
+
str.length / ((monacoEditorContainerWidth - 15) / 7.5),
|
|
65
|
+
),
|
|
66
|
+
0,
|
|
67
|
+
)
|
|
68
|
+
: null,
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
let editorContainer = $state();
|
|
72
|
+
let monacoEditor;
|
|
73
|
+
|
|
74
|
+
onMount(async () => {
|
|
75
|
+
if (useMonacoEditor) {
|
|
76
|
+
// Load the Monaco editor library
|
|
77
|
+
const monaco = await loader.init();
|
|
78
|
+
|
|
79
|
+
monacoEditor = monaco.editor.create(editorContainer, {
|
|
80
|
+
value: statedValue, // Initial editor content bound to the component's value prop
|
|
81
|
+
language: "javascript",
|
|
82
|
+
theme: "vs-light",
|
|
83
|
+
minimap: { enabled: false },
|
|
84
|
+
scrollbar: {
|
|
85
|
+
verticalScrollbarSize: 8,
|
|
86
|
+
},
|
|
87
|
+
lineNumbers: "off",
|
|
88
|
+
folding: false,
|
|
89
|
+
scrollBeyondLastLine: false,
|
|
90
|
+
automaticLayout: true,
|
|
91
|
+
fontSize: 13,
|
|
92
|
+
formatOnPaste: true,
|
|
93
|
+
formatOnType: true,
|
|
94
|
+
wordWrap: "on",
|
|
95
|
+
overviewRulerLanes: 0, // Disables the overview ruler
|
|
96
|
+
overviewRulerBorder: false,
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// Establish two-way data binding between editor content and component's value prop
|
|
100
|
+
monacoEditor.onDidChangeModelContent(() => {
|
|
101
|
+
statedValue = monacoEditor.getValue();
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
// Cleanup: Dispose Monaco editor instance on component destruction
|
|
105
|
+
return () => {
|
|
106
|
+
monacoEditor?.dispose();
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// $inspect(derivedValue, parameter.name);
|
|
112
|
+
</script>
|
|
113
|
+
|
|
114
|
+
{#if useStatedValue}
|
|
115
|
+
{#if useRadio}
|
|
116
|
+
<div class="flex flex-col gap-2">
|
|
117
|
+
{#each parameter.options as option, i}
|
|
118
|
+
<Radio value={option} bind:group={statedValue}>
|
|
119
|
+
<span class="text-sm">
|
|
120
|
+
{option}
|
|
121
|
+
</span>
|
|
122
|
+
</Radio>
|
|
123
|
+
{/each}
|
|
124
|
+
</div>
|
|
125
|
+
{:else if useDropdown}
|
|
126
|
+
<Select
|
|
127
|
+
size="sm"
|
|
128
|
+
class="text-base m-0 py-1 pr-8"
|
|
129
|
+
items={parameter.options.map((el) => ({ name: el, value: el }))}
|
|
130
|
+
bind:value={statedValue}
|
|
131
|
+
/>
|
|
132
|
+
{:else if useTextarea}
|
|
133
|
+
<Textarea
|
|
134
|
+
unWrappedClass="m-0 px-2 py-1 focus:ring-orange-500 focus:border-orange-500"
|
|
135
|
+
id="textarea-id"
|
|
136
|
+
bind:value={statedValue}
|
|
137
|
+
rows={parameter.rows ?? 1}
|
|
138
|
+
/>
|
|
139
|
+
{:else if useNumberInput}
|
|
140
|
+
<Input let:props>
|
|
141
|
+
<input
|
|
142
|
+
type="number"
|
|
143
|
+
{...props}
|
|
144
|
+
step={parameter.step}
|
|
145
|
+
min={parameter.min}
|
|
146
|
+
max={parameter.max}
|
|
147
|
+
bind:value={statedValue}
|
|
148
|
+
/>
|
|
149
|
+
</Input>
|
|
150
|
+
{:else if useCheckbox}
|
|
151
|
+
<div class="p-2 h-full">
|
|
152
|
+
<Checkbox bind:checked={statedValue} color="orange"></Checkbox>
|
|
153
|
+
</div>
|
|
154
|
+
{:else if useMonacoEditor}
|
|
155
|
+
<div
|
|
156
|
+
bind:this={editorContainer}
|
|
157
|
+
class="py-2 px-1 m-0 border-solid border-[2px] rounded-md focus-within:ring-orange-500 focus-within:border-orange-500"
|
|
158
|
+
style="height: {monacoEditorContainerHeight}px; width: {monacoEditorContainerWidth}px;"
|
|
159
|
+
></div>
|
|
160
|
+
{/if}
|
|
161
|
+
{:else}
|
|
162
|
+
<div class="flex flex-col gap-4">
|
|
163
|
+
{#if parameter.hasOwnProperty("functionElements") && parameter.functionElements != null && (parameter.functionElements.hasOwnProperty("counter") || (parameter.functionElements.hasOwnProperty("dataset") && parameter.functionElements.hasOwnProperty("dataset") != null))}
|
|
164
|
+
<div
|
|
165
|
+
data-role="function-counter-and-data-container"
|
|
166
|
+
class="py-1 px-3 bg-slate-100 rounded"
|
|
167
|
+
>
|
|
168
|
+
{#if parameter.functionElements.hasOwnProperty("counter")}
|
|
169
|
+
<p>
|
|
170
|
+
This function has been called <span class="font-bold"
|
|
171
|
+
>{parameter.functionElements.counter}
|
|
172
|
+
time{parameter.functionElements.counter === 1 ? "" : "s"}.</span
|
|
173
|
+
>
|
|
174
|
+
</p>
|
|
175
|
+
{#if parameter.functionElements.hasOwnProperty("dataset")}
|
|
176
|
+
{#each Object.keys(parameter.functionElements.dataset) as key}
|
|
177
|
+
{#if parameter.functionElements.dataset[key] != null}
|
|
178
|
+
<p>
|
|
179
|
+
When it was last called, its target's data-{key} was
|
|
180
|
+
<span class="font-bold"
|
|
181
|
+
>{parameter.functionElements.dataset[key]}</span
|
|
182
|
+
>.
|
|
183
|
+
</p>
|
|
184
|
+
{/if}
|
|
185
|
+
{/each}
|
|
186
|
+
{/if}
|
|
187
|
+
{/if}
|
|
188
|
+
</div>
|
|
189
|
+
{/if}
|
|
190
|
+
{#if (parameter.hasOwnProperty("functionElements") && parameter.functionElements != null && parameter.functionElements.hasOwnProperty("functionAsString") && parameter.functionElements.functionAsString != null) || (parameter?.propType === "fixed" && !parameter.hasOwnProperty("functionElements")) || (!parameter?.isEditable && !parameter.hasOwnProperty("functionElements"))}
|
|
191
|
+
<div class="overflow-scroll" style="max-height: 768px;">
|
|
192
|
+
{#key derivedValue}
|
|
193
|
+
<CodeBlock
|
|
194
|
+
code={typeof derivedValue === "function"
|
|
195
|
+
? parameter.functionElements?.functionAsString.replace(
|
|
196
|
+
/getValue\("([^"]+)"\)/g,
|
|
197
|
+
"$1",
|
|
198
|
+
)
|
|
199
|
+
: typeof derivedValue === "object"
|
|
200
|
+
? derivedValue
|
|
201
|
+
: derivedValue.toString()}
|
|
202
|
+
language="javascript"
|
|
203
|
+
size="sm"
|
|
204
|
+
includeHeader={false}
|
|
205
|
+
></CodeBlock>
|
|
206
|
+
{/key}
|
|
207
|
+
</div>
|
|
208
|
+
{/if}
|
|
209
|
+
</div>
|
|
210
|
+
{/if}
|
|
211
|
+
|
|
212
|
+
<style>
|
|
213
|
+
[data-role="function-counter-and-data-container"] p:first-of-type {
|
|
214
|
+
padding-top: 0px;
|
|
215
|
+
margin-top: 0px;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
[data-role="function-counter-and-data-container"] p:last-of-type {
|
|
219
|
+
padding-bottom: 0px;
|
|
220
|
+
margin-bottom: 0px;
|
|
221
|
+
}
|
|
222
|
+
</style>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export default InputForParameterUpdated;
|
|
2
|
+
type InputForParameterUpdated = {
|
|
3
|
+
$on?(type: string, callback: (e: any) => void): () => void;
|
|
4
|
+
$set?(props: Partial<$$ComponentProps>): void;
|
|
5
|
+
};
|
|
6
|
+
declare const InputForParameterUpdated: import("svelte").Component<{
|
|
7
|
+
demoScreenWidth: any;
|
|
8
|
+
statedValue?: any;
|
|
9
|
+
derivedValue: any;
|
|
10
|
+
parameter: any;
|
|
11
|
+
}, {}, "statedValue">;
|
|
12
|
+
type $$ComponentProps = {
|
|
13
|
+
demoScreenWidth: any;
|
|
14
|
+
statedValue?: any;
|
|
15
|
+
derivedValue: any;
|
|
16
|
+
parameter: any;
|
|
17
|
+
};
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { Checkbox, Select, Radio, Textarea, Input } from "flowbite-svelte";
|
|
3
|
+
import CodeBlock from "./CodeBlock.svelte";
|
|
4
|
+
import loader from "@monaco-editor/loader";
|
|
5
|
+
import { onMount } from "svelte";
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
parameter,
|
|
9
|
+
value = $bindable(),
|
|
10
|
+
boundedValue,
|
|
11
|
+
demoScreenWidth,
|
|
12
|
+
} = $props();
|
|
13
|
+
|
|
14
|
+
let editorContainer = $state();
|
|
15
|
+
|
|
16
|
+
let monacoEditor;
|
|
17
|
+
|
|
18
|
+
let showMonacoEditor = $derived(
|
|
19
|
+
typeof parameter.value === "object" && parameter.isEditable,
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
let monacoEditorContainerWidth = $derived(
|
|
23
|
+
showMonacoEditor
|
|
24
|
+
? demoScreenWidth < 1024
|
|
25
|
+
? 350
|
|
26
|
+
: demoScreenWidth < 1280
|
|
27
|
+
? 450
|
|
28
|
+
: 550
|
|
29
|
+
: null,
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
let monacoEditorContainerHeight = $derived(
|
|
33
|
+
showMonacoEditor && monacoEditorContainerWidth
|
|
34
|
+
? 40 +
|
|
35
|
+
20 *
|
|
36
|
+
JSON.stringify(parameter.value, null, 2)
|
|
37
|
+
.split("\n")
|
|
38
|
+
.reduce(
|
|
39
|
+
(acc, str) =>
|
|
40
|
+
acc +
|
|
41
|
+
Math.ceil(
|
|
42
|
+
str.length / ((monacoEditorContainerWidth - 15) / 7.5),
|
|
43
|
+
),
|
|
44
|
+
0,
|
|
45
|
+
)
|
|
46
|
+
: null,
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
onMount(async () => {
|
|
50
|
+
if (showMonacoEditor) {
|
|
51
|
+
// Load the Monaco editor library
|
|
52
|
+
const monaco = await loader.init();
|
|
53
|
+
|
|
54
|
+
monacoEditor = monaco.editor.create(editorContainer, {
|
|
55
|
+
value: value, // Initial editor content bound to the component's value prop
|
|
56
|
+
language: "javascript",
|
|
57
|
+
theme: "vs-light",
|
|
58
|
+
minimap: { enabled: false },
|
|
59
|
+
scrollbar: {
|
|
60
|
+
verticalScrollbarSize: 8,
|
|
61
|
+
},
|
|
62
|
+
lineNumbers: "off",
|
|
63
|
+
folding: false,
|
|
64
|
+
scrollBeyondLastLine: false,
|
|
65
|
+
automaticLayout: true,
|
|
66
|
+
fontSize: 13,
|
|
67
|
+
formatOnPaste: true,
|
|
68
|
+
formatOnType: true,
|
|
69
|
+
wordWrap: "on",
|
|
70
|
+
overviewRulerLanes: 0, // Disables the overview ruler
|
|
71
|
+
overviewRulerBorder: false,
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// Establish two-way data binding between editor content and component's value prop
|
|
75
|
+
monacoEditor.onDidChangeModelContent(() => {
|
|
76
|
+
value = monacoEditor.getValue();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
// Cleanup: Dispose Monaco editor instance on component destruction
|
|
80
|
+
return () => {
|
|
81
|
+
monacoEditor?.dispose();
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
$inspect(parameter.name, value, boundedValue);
|
|
87
|
+
</script>
|
|
88
|
+
|
|
89
|
+
{#if parameter.isEditable}
|
|
90
|
+
{#if showMonacoEditor}
|
|
91
|
+
<div
|
|
92
|
+
bind:this={editorContainer}
|
|
93
|
+
class="py-2 px-1 m-0 border-solid border-[2px] rounded-md focus-within:ring-orange-500 focus-within:border-orange-500"
|
|
94
|
+
style="height: {monacoEditorContainerHeight}px; width: {monacoEditorContainerWidth}px;"
|
|
95
|
+
></div>
|
|
96
|
+
{:else if parameter.inputType === "checkbox"}
|
|
97
|
+
<div class="p-2 h-full">
|
|
98
|
+
<Checkbox bind:checked={value} color="orange"></Checkbox>
|
|
99
|
+
</div>
|
|
100
|
+
{:else if parameter.inputType === "dropdown"}
|
|
101
|
+
<Select
|
|
102
|
+
size="sm"
|
|
103
|
+
class="text-base m-0 px-2 py-1"
|
|
104
|
+
items={parameter.options.map((el) => ({ name: el, value: el }))}
|
|
105
|
+
bind:value
|
|
106
|
+
/>
|
|
107
|
+
{:else if parameter.inputType === "radio"}
|
|
108
|
+
<div class="flex flex-col gap-2">
|
|
109
|
+
{#each parameter.options as option, i}
|
|
110
|
+
<Radio value={option} bind:group={value}>
|
|
111
|
+
<span class="text-sm">
|
|
112
|
+
{option}
|
|
113
|
+
</span>
|
|
114
|
+
</Radio>
|
|
115
|
+
{/each}
|
|
116
|
+
</div>
|
|
117
|
+
{:else if parameter.inputType === "input"}
|
|
118
|
+
<Textarea
|
|
119
|
+
unWrappedClass="m-0 px-2 py-1 focus:ring-orange-500 focus:border-orange-500"
|
|
120
|
+
id="textarea-id"
|
|
121
|
+
bind:value
|
|
122
|
+
rows={parameter.rows ?? 1}
|
|
123
|
+
/>
|
|
124
|
+
{:else if parameter.inputType === "numberInput"}
|
|
125
|
+
<Input let:props>
|
|
126
|
+
<input
|
|
127
|
+
type="number"
|
|
128
|
+
{...props}
|
|
129
|
+
step={parameter?.step}
|
|
130
|
+
min={parameter?.min}
|
|
131
|
+
max={parameter?.max}
|
|
132
|
+
bind:value
|
|
133
|
+
/>
|
|
134
|
+
</Input>
|
|
135
|
+
{/if}
|
|
136
|
+
{:else}
|
|
137
|
+
{#key boundedValue}
|
|
138
|
+
<CodeBlock
|
|
139
|
+
code={boundedValue}
|
|
140
|
+
language="javascript"
|
|
141
|
+
size="sm"
|
|
142
|
+
includeHeader={false}
|
|
143
|
+
></CodeBlock>
|
|
144
|
+
{/key}
|
|
145
|
+
{/if}
|
|
146
|
+
|
|
147
|
+
<!-- {#if showMonacoEditor}
|
|
148
|
+
<div
|
|
149
|
+
bind:this={editorContainer}
|
|
150
|
+
class="py-2 px-1 m-0 border-solid border-[2px] rounded-md focus-within:ring-orange-500 focus-within:border-orange-500"
|
|
151
|
+
style="height: {monacoEditorContainerHeight}px; width: {monacoEditorContainerWidth}px;"
|
|
152
|
+
></div>
|
|
153
|
+
{:else if parameter.inputType === "code"}
|
|
154
|
+
<div bind:clientHeight={codeBlockHeight} bind:clientWidth={codeBlockWidth}>
|
|
155
|
+
<CodeBlock
|
|
156
|
+
code={codeBlockType === "function"
|
|
157
|
+
? "function " + codeBlockValue.toString().slice(5)
|
|
158
|
+
: codeBlockValue}
|
|
159
|
+
language="javascript"
|
|
160
|
+
size="sm"
|
|
161
|
+
includeHeader={false}
|
|
162
|
+
></CodeBlock>
|
|
163
|
+
</div>
|
|
164
|
+
{:else if parameter.inputType === "checkbox"}
|
|
165
|
+
<div class="p-2 h-full">
|
|
166
|
+
<Checkbox bind:checked={value} color="orange"></Checkbox>
|
|
167
|
+
</div>
|
|
168
|
+
{:else if parameter.inputType === "dropdown"}
|
|
169
|
+
<Select
|
|
170
|
+
size="sm"
|
|
171
|
+
class="text-base m-0 px-2 py-1"
|
|
172
|
+
items={parameter.options.map((el) => ({ name: el, value: el }))}
|
|
173
|
+
bind:value
|
|
174
|
+
/>
|
|
175
|
+
{:else if parameter.inputType === "radio"}
|
|
176
|
+
<div class="flex flex-col gap-2">
|
|
177
|
+
{#each parameter.options as option, i}
|
|
178
|
+
<Radio value={option} bind:group={value}>
|
|
179
|
+
<span class="text-sm">
|
|
180
|
+
{option}
|
|
181
|
+
</span>
|
|
182
|
+
</Radio>
|
|
183
|
+
{/each}
|
|
184
|
+
</div>
|
|
185
|
+
{:else if parameter.inputType === "input"}
|
|
186
|
+
<Textarea
|
|
187
|
+
unWrappedClass="m-0 px-2 py-1 focus:ring-orange-500 focus:border-orange-500"
|
|
188
|
+
id="textarea-id"
|
|
189
|
+
bind:value
|
|
190
|
+
rows={parameter.rows ?? 1}
|
|
191
|
+
/>
|
|
192
|
+
{:else if parameter.inputType === "numberInput"}
|
|
193
|
+
<Input let:props>
|
|
194
|
+
<input
|
|
195
|
+
type="number"
|
|
196
|
+
{...props}
|
|
197
|
+
step={parameter?.step}
|
|
198
|
+
min={parameter?.min}
|
|
199
|
+
max={parameter?.max}
|
|
200
|
+
bind:value
|
|
201
|
+
/>
|
|
202
|
+
</Input>
|
|
203
|
+
{/if} -->
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export default InputForParameterUpdatedTemp;
|
|
2
|
+
type InputForParameterUpdatedTemp = {
|
|
3
|
+
$on?(type: string, callback: (e: any) => void): () => void;
|
|
4
|
+
$set?(props: Partial<$$ComponentProps>): void;
|
|
5
|
+
};
|
|
6
|
+
declare const InputForParameterUpdatedTemp: import("svelte").Component<{
|
|
7
|
+
parameter: any;
|
|
8
|
+
value?: any;
|
|
9
|
+
boundedValue: any;
|
|
10
|
+
demoScreenWidth: any;
|
|
11
|
+
}, {}, "value">;
|
|
12
|
+
type $$ComponentProps = {
|
|
13
|
+
parameter: any;
|
|
14
|
+
value?: any;
|
|
15
|
+
boundedValue: any;
|
|
16
|
+
demoScreenWidth: any;
|
|
17
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import Pill from "./Pill.svelte";
|
|
3
|
+
|
|
4
|
+
let { statusObject } = $props();
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<div data-role="status-container" class="flex flex-row flex-wrap gap-2">
|
|
8
|
+
{#each Object.keys(statusObject) as category, index}
|
|
9
|
+
{@const labels = Object.keys(statusObject[category]).filter(
|
|
10
|
+
(el) => statusObject[category][el],
|
|
11
|
+
)}
|
|
12
|
+
<div data-role="category-container" class="flex flex-row gap-2">
|
|
13
|
+
{#each labels as label}
|
|
14
|
+
<Pill textContent={label} bgColor="black" textColor="white" size="small"
|
|
15
|
+
></Pill>
|
|
16
|
+
{/each}
|
|
17
|
+
</div>
|
|
18
|
+
{/each}
|
|
19
|
+
</div>
|