@sjsf/skeleton-theme 1.9.2 → 2.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +5 -4
  2. package/dist/components/button.svelte +19 -0
  3. package/dist/components/button.svelte.d.ts +8 -0
  4. package/dist/components/description.svelte +7 -0
  5. package/dist/components/description.svelte.d.ts +6 -0
  6. package/dist/components/errors-list.svelte +6 -6
  7. package/dist/components/errors-list.svelte.d.ts +4 -2
  8. package/dist/components/exports.d.ts +8 -0
  9. package/dist/components/exports.js +8 -0
  10. package/dist/components/form.svelte +17 -0
  11. package/dist/components/form.svelte.d.ts +8 -0
  12. package/dist/components/help.svelte +7 -0
  13. package/dist/components/help.svelte.d.ts +5 -0
  14. package/dist/components/{layout-component.svelte → layout.svelte} +15 -11
  15. package/dist/components/layout.svelte.d.ts +6 -0
  16. package/dist/components/submit-button.svelte +13 -0
  17. package/dist/components/submit-button.svelte.d.ts +6 -0
  18. package/dist/components/title.svelte +16 -0
  19. package/dist/components/title.svelte.d.ts +8 -0
  20. package/dist/definitions.d.ts +72 -0
  21. package/dist/definitions.js +9 -0
  22. package/dist/extra-widgets/date-picker-include.d.ts +1 -0
  23. package/dist/extra-widgets/date-picker-include.js +4 -0
  24. package/dist/extra-widgets/date-picker.svelte +12 -0
  25. package/dist/extra-widgets/date-picker.svelte.d.ts +4 -0
  26. package/dist/extra-widgets/multi-select-include.d.ts +1 -0
  27. package/dist/extra-widgets/multi-select-include.js +4 -0
  28. package/dist/extra-widgets/multi-select.svelte +34 -0
  29. package/dist/extra-widgets/multi-select.svelte.d.ts +4 -0
  30. package/dist/extra-widgets/radio-include.d.ts +1 -0
  31. package/dist/extra-widgets/radio-include.js +4 -0
  32. package/dist/{widgets/radio-widget.svelte → extra-widgets/radio.svelte} +9 -3
  33. package/dist/extra-widgets/radio.svelte.d.ts +4 -0
  34. package/dist/extra-widgets/range-include.d.ts +1 -0
  35. package/dist/extra-widgets/range-include.js +4 -0
  36. package/dist/extra-widgets/range.svelte +12 -0
  37. package/dist/extra-widgets/range.svelte.d.ts +4 -0
  38. package/dist/extra-widgets/textarea-include.d.ts +1 -0
  39. package/dist/extra-widgets/textarea-include.js +4 -0
  40. package/dist/extra-widgets/textarea.svelte +14 -0
  41. package/dist/extra-widgets/textarea.svelte.d.ts +4 -0
  42. package/dist/index.d.ts +107 -4
  43. package/dist/index.js +8 -6
  44. package/dist/preset.d.ts +5 -1
  45. package/dist/styles.css +1 -1
  46. package/dist/widgets/checkbox.svelte +16 -0
  47. package/dist/widgets/checkbox.svelte.d.ts +3 -0
  48. package/dist/widgets/{checkboxes-widget.svelte → checkboxes.svelte} +15 -3
  49. package/dist/widgets/checkboxes.svelte.d.ts +3 -0
  50. package/dist/widgets/exports.d.ts +6 -0
  51. package/dist/widgets/exports.js +6 -0
  52. package/dist/widgets/file.svelte +28 -0
  53. package/dist/widgets/file.svelte.d.ts +7 -0
  54. package/dist/widgets/number.svelte +17 -0
  55. package/dist/widgets/number.svelte.d.ts +3 -0
  56. package/dist/widgets/select.svelte +31 -0
  57. package/dist/widgets/select.svelte.d.ts +3 -0
  58. package/dist/widgets/text.svelte +12 -0
  59. package/dist/widgets/text.svelte.d.ts +3 -0
  60. package/package.json +37 -24
  61. package/dist/components/button-component.svelte +0 -19
  62. package/dist/components/button-component.svelte.d.ts +0 -3
  63. package/dist/components/description-component.svelte +0 -7
  64. package/dist/components/description-component.svelte.d.ts +0 -3
  65. package/dist/components/form-component.svelte +0 -9
  66. package/dist/components/form-component.svelte.d.ts +0 -3
  67. package/dist/components/help-component.svelte +0 -7
  68. package/dist/components/help-component.svelte.d.ts +0 -3
  69. package/dist/components/index.d.ts +0 -5
  70. package/dist/components/index.js +0 -17
  71. package/dist/components/layout-component.svelte.d.ts +0 -3
  72. package/dist/components/title-component.svelte +0 -16
  73. package/dist/components/title-component.svelte.d.ts +0 -3
  74. package/dist/widgets/checkbox-widget.svelte +0 -15
  75. package/dist/widgets/checkbox-widget.svelte.d.ts +0 -2
  76. package/dist/widgets/checkboxes-widget.svelte.d.ts +0 -2
  77. package/dist/widgets/file-widget.svelte +0 -21
  78. package/dist/widgets/file-widget.svelte.d.ts +0 -2
  79. package/dist/widgets/index.d.ts +0 -5
  80. package/dist/widgets/index.js +0 -20
  81. package/dist/widgets/number-widget.svelte +0 -14
  82. package/dist/widgets/number-widget.svelte.d.ts +0 -2
  83. package/dist/widgets/radio-widget.svelte.d.ts +0 -2
  84. package/dist/widgets/select-widget.svelte +0 -40
  85. package/dist/widgets/select-widget.svelte.d.ts +0 -2
  86. package/dist/widgets/text-widget.svelte +0 -12
  87. package/dist/widgets/text-widget.svelte.d.ts +0 -2
  88. package/dist/widgets/textarea-widget.svelte +0 -7
  89. package/dist/widgets/textarea-widget.svelte.d.ts +0 -2
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @sjsf/skeleton-theme
2
2
 
3
- The [skeleton](https://github.com/skeletonlabs/skeleton) based theme for [svelte-jsonschema-form](https://github.com/x0k/svelte-jsonschema-form).
3
+ The [skeleton](https://github.com/skeletonlabs/skeleton) v3 (tailwind v3) based theme for [svelte-jsonschema-form](https://github.com/x0k/svelte-jsonschema-form).
4
4
 
5
5
  - [Documentation](https://x0k.github.io/svelte-jsonschema-form/themes/skeleton/)
6
6
  - [Playground](https://x0k.github.io/svelte-jsonschema-form/playground/)
@@ -66,11 +66,12 @@ Bundled themes:
66
66
 
67
67
  ```svelte
68
68
  <script lang="ts">
69
- import { createForm3 } from '@sjsf/form';
69
+ import { createForm } from '@sjsf/form';
70
70
  import { theme } from '@sjsf/skeleton-theme';
71
71
 
72
- const form = createForm3({
73
- ...theme,
72
+ const form = createForm({
73
+ theme,
74
+ ...
74
75
  })
75
76
  </script>
76
77
  ```
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import { defineDisabled, getFormContext, type ComponentProps } from '@sjsf/form';
3
+
4
+ const { children, onclick, config, disabled, type }: ComponentProps['button'] = $props();
5
+
6
+ const ctx = getFormContext();
7
+
8
+ const attributes = $derived(
9
+ defineDisabled(ctx, {
10
+ disabled,
11
+ ...config.uiOptions?.button,
12
+ ...config.uiOptions?.buttons?.[type]
13
+ })
14
+ );
15
+ </script>
16
+
17
+ <button class="btn preset-filled" type="button" {onclick} {...attributes}>
18
+ {@render children()}
19
+ </button>
@@ -0,0 +1,8 @@
1
+ declare const Button: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
2
+ type: import("@sjsf/form/fields/components").ButtonType;
3
+ disabled: boolean;
4
+ children: import("svelte").Snippet;
5
+ onclick: () => void;
6
+ }, {}, "">;
7
+ type Button = ReturnType<typeof Button>;
8
+ export default Button;
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import type { ComponentProps } from '@sjsf/form';
3
+
4
+ const { description, config }: ComponentProps['description'] = $props();
5
+ </script>
6
+
7
+ <div class="opacity-60" {...config.uiOptions?.descriptionAttributes}>{description}</div>
@@ -0,0 +1,6 @@
1
+ declare const Description: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
2
+ type: import("@sjsf/form/templates/components").ParentTemplateType;
3
+ description: string;
4
+ }, {}, "">;
5
+ type Description = ReturnType<typeof Description>;
6
+ export default Description;
@@ -1,11 +1,11 @@
1
1
  <script lang="ts">
2
- import type { ComponentProps } from "@sjsf/form";
2
+ import type { ComponentProps } from '@sjsf/form';
3
3
 
4
- const { errors, forId }: ComponentProps<"errorsList"> = $props();
4
+ const { errors, forId, config }: ComponentProps['errorsList'] = $props();
5
5
  </script>
6
6
 
7
- <ui class="text-error-500" data-errors-for={forId}>
8
- {#each errors as err}
9
- <li>{err.message}</li>
10
- {/each}
7
+ <ui class="text-error-500" data-errors-for={forId} {...config.uiOptions?.errorsList}>
8
+ {#each errors as err}
9
+ <li>{err.message}</li>
10
+ {/each}
11
11
  </ui>
@@ -1,3 +1,5 @@
1
- import type { ComponentProps } from "@sjsf/form";
2
- declare const ErrorsList: import("svelte").Component<ComponentProps<"errorsList">, {}, "">;
1
+ declare const ErrorsList: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
2
+ forId: string;
3
+ }, {}, "">;
4
+ type ErrorsList = ReturnType<typeof ErrorsList>;
3
5
  export default ErrorsList;
@@ -0,0 +1,8 @@
1
+ export { default as form } from './form.svelte';
2
+ export { default as submitButton } from './submit-button.svelte';
3
+ export { default as button } from './button.svelte';
4
+ export { default as layout } from './layout.svelte';
5
+ export { default as title } from './title.svelte';
6
+ export { default as description } from './description.svelte';
7
+ export { default as help } from './help.svelte';
8
+ export { default as errorsList } from './errors-list.svelte';
@@ -0,0 +1,8 @@
1
+ export { default as form } from './form.svelte';
2
+ export { default as submitButton } from './submit-button.svelte';
3
+ export { default as button } from './button.svelte';
4
+ export { default as layout } from './layout.svelte';
5
+ export { default as title } from './title.svelte';
6
+ export { default as description } from './description.svelte';
7
+ export { default as help } from './help.svelte';
8
+ export { default as errorsList } from './errors-list.svelte';
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import { enhance, getFormContext, type ComponentProps } from '@sjsf/form';
3
+
4
+ let { config, children, ref = $bindable(), attributes }: ComponentProps['form'] = $props();
5
+
6
+ const ctx = getFormContext();
7
+ </script>
8
+
9
+ <form
10
+ bind:this={ref}
11
+ use:enhance={ctx}
12
+ class="flex flex-col gap-4"
13
+ {...config.uiOptions?.form}
14
+ {...attributes}
15
+ >
16
+ {@render children?.()}
17
+ </form>
@@ -0,0 +1,8 @@
1
+ declare const Form: import("svelte").Component<{
2
+ config: import("@sjsf/form").Config;
3
+ ref?: HTMLFormElement | undefined;
4
+ children: import("svelte").Snippet;
5
+ attributes?: import("svelte/elements").HTMLFormAttributes | undefined;
6
+ }, {}, "ref">;
7
+ type Form = ReturnType<typeof Form>;
8
+ export default Form;
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ import type { ComponentProps } from '@sjsf/form';
3
+
4
+ const { help, config }: ComponentProps['help'] = $props();
5
+ </script>
6
+
7
+ <div class="opacity-60" {...config.uiOptions?.helpAttributes}>{help}</div>
@@ -0,0 +1,5 @@
1
+ declare const Help: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
2
+ help: string;
3
+ }, {}, "">;
4
+ type Help = ReturnType<typeof Help>;
5
+ export default Help;
@@ -1,12 +1,14 @@
1
1
  <script lang="ts">
2
2
  import type { ComponentProps } from '@sjsf/form';
3
3
 
4
- const { type, children, attributes }: ComponentProps<'layout'> = $props();
4
+ const { type, children, config }: ComponentProps['layout'] = $props();
5
5
 
6
- const isItem = $derived(
7
- type === 'array-item' || type === 'object-property' || type === 'field-content'
6
+ const isItemOrControls = $derived(
7
+ type === 'array-item' ||
8
+ type === 'object-property' ||
9
+ type === 'field-content' ||
10
+ type === 'array-item-controls'
8
11
  );
9
- const isControls = $derived(type === 'array-item-controls');
10
12
  const isGrowable = $derived(
11
13
  type === 'array-item-content' ||
12
14
  type === 'object-property-key-input' ||
@@ -17,18 +19,20 @@
17
19
  type === 'array-field' ||
18
20
  type === 'object-field' ||
19
21
  type === 'array-items' ||
20
- type === 'object-properties' ||
21
- type === 'root-field'
22
+ type === 'object-properties'
22
23
  );
24
+
25
+ const attributes = $derived({
26
+ ...config.uiOptions?.layout,
27
+ ...config.uiOptions?.layouts?.[type]
28
+ });
23
29
  </script>
24
30
 
25
31
  <div
26
- class:flex={isItem || isControls || isField || isColumn}
27
- class:gap-2={isItem || isField}
32
+ class:flex={isItemOrControls || isField || isColumn}
33
+ class:gap-2={isItemOrControls || isField}
28
34
  class:gap-4={isColumn}
29
- class:items-start={isItem || isControls}
30
- class:btn-group={isControls}
31
- class:preset-outlined-surface-200-800={isControls}
35
+ class:items-start={isItemOrControls}
32
36
  class:grow={isGrowable}
33
37
  class:flex-col={isColumn || isField}
34
38
  data-layout={type}
@@ -0,0 +1,6 @@
1
+ declare const Layout: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
2
+ type: import("@sjsf/form/fields/components").LayoutType;
3
+ children: import("svelte").Snippet;
4
+ }, {}, "">;
5
+ type Layout = ReturnType<typeof Layout>;
6
+ export default Layout;
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+ import { defineDisabled, getFormContext, type ComponentProps } from '@sjsf/form';
3
+
4
+ const { children, config }: ComponentProps['submitButton'] = $props();
5
+
6
+ const ctx = getFormContext();
7
+
8
+ const attributes = $derived(defineDisabled(ctx, config.uiOptions?.submitButton ?? {}));
9
+ </script>
10
+
11
+ <button class="btn preset-filled preset-filled-primary-500 w-full" type="submit" {...attributes}>
12
+ {@render children()}
13
+ </button>
@@ -0,0 +1,6 @@
1
+ declare const SubmitButton: import("svelte").Component<{
2
+ config: import("@sjsf/form").Config;
3
+ children: import("svelte").Snippet;
4
+ }, {}, "">;
5
+ type SubmitButton = ReturnType<typeof SubmitButton>;
6
+ export default SubmitButton;
@@ -0,0 +1,16 @@
1
+ <script lang="ts">
2
+ import type { ComponentProps } from '@sjsf/form';
3
+
4
+ const { title, type, forId, required, config }: ComponentProps['title'] = $props();
5
+ </script>
6
+
7
+ {#if type === 'field'}
8
+ <label class="label-text" for={forId} {...config.uiOptions?.labelAttributes}>
9
+ {title}
10
+ {#if required}
11
+ <span>*</span>
12
+ {/if}
13
+ </label>
14
+ {:else}
15
+ <div class="font-bold text-2xl" {...config.uiOptions?.titleAttributes}>{title}</div>
16
+ {/if}
@@ -0,0 +1,8 @@
1
+ declare const Title: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
2
+ type: import("@sjsf/form/templates/components").ParentTemplateType;
3
+ title: string;
4
+ forId: string;
5
+ required: boolean;
6
+ }, {}, "">;
7
+ type Title = ReturnType<typeof Title>;
8
+ export default Title;
@@ -0,0 +1,72 @@
1
+ import type { ExtendableComponentDefinitionsWithoutFields } from '@sjsf/form/fields/resolver';
2
+ import * as templates from '@sjsf/form/templates/exports';
3
+ export declare const definitions: {
4
+ textWidget: import("svelte").Component<import("@sjsf/form/fields/widgets").WidgetCommonProps<string>, {}, "value">;
5
+ numberWidget: import("svelte").Component<import("@sjsf/form/fields/widgets").WidgetCommonProps<number>, {}, "value">;
6
+ selectWidget: import("svelte").Component<import("@sjsf/form/fields/widgets").WidgetCommonProps<import("@sjsf/form").SchemaValue> & import("@sjsf/form/fields/widgets").Options, {}, "value">;
7
+ checkboxWidget: import("svelte").Component<import("@sjsf/form/fields/widgets").WidgetCommonProps<boolean>, {}, "value">;
8
+ checkboxesWidget: import("svelte").Component<import("@sjsf/form/fields/widgets").WidgetCommonProps<import("@sjsf/form/core").SchemaArrayValue> & import("@sjsf/form/fields/widgets").Options, {}, "value">;
9
+ fileWidget: import("svelte").Component<import("@sjsf/form/fields/widgets").WidgetCommonProps<FileList> & {
10
+ multiple: boolean;
11
+ loading: boolean;
12
+ processing: boolean;
13
+ }, {}, "value">;
14
+ form: import("svelte").Component<{
15
+ config: import("@sjsf/form").Config;
16
+ ref?: HTMLFormElement | undefined;
17
+ children: import("svelte").Snippet;
18
+ attributes?: import("svelte/elements").HTMLFormAttributes | undefined;
19
+ }, {}, "ref">;
20
+ submitButton: import("svelte").Component<{
21
+ config: import("@sjsf/form").Config;
22
+ children: import("svelte").Snippet;
23
+ }, {}, "">;
24
+ button: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
25
+ type: import("@sjsf/form/fields/components").ButtonType;
26
+ disabled: boolean;
27
+ children: import("svelte").Snippet;
28
+ onclick: () => void;
29
+ }, {}, "">;
30
+ layout: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
31
+ type: import("@sjsf/form/fields/components").LayoutType;
32
+ children: import("svelte").Snippet;
33
+ }, {}, "">;
34
+ title: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
35
+ type: templates.ParentTemplateType;
36
+ title: string;
37
+ forId: string;
38
+ required: boolean;
39
+ }, {}, "">;
40
+ description: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
41
+ type: templates.ParentTemplateType;
42
+ description: string;
43
+ }, {}, "">;
44
+ help: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
45
+ help: string;
46
+ }, {}, "">;
47
+ errorsList: import("svelte").Component<import("@sjsf/form/fields/components").ComponentCommonProps & {
48
+ forId: string;
49
+ }, {}, "">;
50
+ fieldTemplate: import("svelte").Component<import("@sjsf/form/fields/templates").TemplateCommonProps<import("@sjsf/form").SchemaValue> & {
51
+ showTitle: boolean;
52
+ }, {}, "">;
53
+ objectTemplate: import("svelte").Component<import("@sjsf/form/fields/templates").TemplateCommonProps<import("@sjsf/form/core").SchemaObjectValue> & {
54
+ addButton?: import("svelte").Snippet;
55
+ }, {}, "">;
56
+ objectPropertyTemplate: import("svelte").Component<import("@sjsf/form/fields/templates").TemplateCommonProps<import("@sjsf/form").SchemaValue> & {
57
+ property: string;
58
+ keyInput?: import("svelte").Snippet;
59
+ removeButton?: import("svelte").Snippet;
60
+ }, {}, "">;
61
+ arrayTemplate: import("svelte").Component<import("@sjsf/form/fields/templates").TemplateCommonProps<import("@sjsf/form/core").SchemaArrayValue> & {
62
+ addButton?: import("svelte").Snippet;
63
+ }, {}, "">;
64
+ arrayItemTemplate: import("svelte").Component<import("@sjsf/form/fields/templates").TemplateCommonProps<import("@sjsf/form").SchemaValue> & {
65
+ index: number;
66
+ buttons?: import("svelte").Snippet;
67
+ }, {}, "">;
68
+ multiFieldTemplate: import("svelte").Component<import("@sjsf/form/fields/templates").TemplateCommonProps<import("@sjsf/form").SchemaValue> & {
69
+ optionSelector: import("svelte").Snippet;
70
+ }, {}, "">;
71
+ };
72
+ export declare const extendable: ExtendableComponentDefinitionsWithoutFields;
@@ -0,0 +1,9 @@
1
+ import * as templates from '@sjsf/form/templates/exports';
2
+ import * as components from './components/exports';
3
+ import * as widgets from './widgets/exports';
4
+ export const definitions = {
5
+ ...templates,
6
+ ...components,
7
+ ...widgets
8
+ };
9
+ export const extendable = definitions;
@@ -0,0 +1 @@
1
+ import './date-picker.svelte';
@@ -0,0 +1,4 @@
1
+ import { extendable } from '../definitions';
2
+ import DatePicker from './date-picker.svelte';
3
+ import './date-picker.svelte';
4
+ extendable.datePickerWidget = DatePicker;
@@ -0,0 +1,12 @@
1
+ <script lang="ts">
2
+ import { getFormContext, inputAttributes, type ComponentProps } from '@sjsf/form';
3
+ import '@sjsf/basic-theme/extra-widgets/date-picker.svelte';
4
+
5
+ let { value = $bindable(), config, handlers }: ComponentProps['datePickerWidget'] = $props();
6
+
7
+ const ctx = getFormContext();
8
+
9
+ const attributes = $derived(inputAttributes(ctx, config, handlers, config.uiOptions?.datePicker));
10
+ </script>
11
+
12
+ <input type="date" bind:value class="input" {...attributes} />
@@ -0,0 +1,4 @@
1
+ import '@sjsf/basic-theme/extra-widgets/date-picker.svelte';
2
+ declare const DatePicker: import("svelte").Component<import("@sjsf/form/fields/widgets").WidgetCommonProps<string>, {}, "value">;
3
+ type DatePicker = ReturnType<typeof DatePicker>;
4
+ export default DatePicker;
@@ -0,0 +1 @@
1
+ import './multi-select.svelte';
@@ -0,0 +1,4 @@
1
+ import { extendable } from '../definitions.js';
2
+ import MultiSelect from './multi-select.svelte';
3
+ import './multi-select.svelte';
4
+ extendable.multiSelectWidget = MultiSelect;
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ import { getFormContext, selectAttributes, type ComponentProps } from '@sjsf/form';
3
+ import { indexMapper, multipleOptions } from '@sjsf/form/options.svelte';
4
+ import '@sjsf/basic-theme/extra-widgets/multi-select.svelte';
5
+
6
+ let {
7
+ value = $bindable(),
8
+ options,
9
+ config,
10
+ handlers
11
+ }: ComponentProps['multiSelectWidget'] = $props();
12
+
13
+ const ctx = getFormContext();
14
+
15
+ const attributes = $derived(
16
+ selectAttributes(ctx, config, handlers, config.uiOptions?.multiSelect)
17
+ );
18
+
19
+ const mapped = $derived(
20
+ multipleOptions({
21
+ mapper: () => indexMapper(options),
22
+ value: () => value,
23
+ update: (v) => (value = v)
24
+ })
25
+ );
26
+ </script>
27
+
28
+ <select multiple bind:value={mapped.value} class="select" {...attributes}>
29
+ {#each options as option, index (option.id)}
30
+ <option value={index} disabled={option.disabled}>
31
+ {option.label}
32
+ </option>
33
+ {/each}
34
+ </select>
@@ -0,0 +1,4 @@
1
+ import '@sjsf/basic-theme/extra-widgets/multi-select.svelte';
2
+ declare const MultiSelect: import("svelte").Component<import("@sjsf/form/fields/widgets").WidgetCommonProps<import("@sjsf/form/core").SchemaArrayValue> & import("@sjsf/form/fields/widgets").Options, {}, "value">;
3
+ type MultiSelect = ReturnType<typeof MultiSelect>;
4
+ export default MultiSelect;
@@ -0,0 +1 @@
1
+ import "./radio.svelte";
@@ -0,0 +1,4 @@
1
+ import { extendable } from "../definitions.js";
2
+ import Radio from "./radio.svelte";
3
+ import "./radio.svelte";
4
+ extendable.radioWidget = Radio;
@@ -1,23 +1,29 @@
1
1
  <script lang="ts">
2
- import { type WidgetProps, indexMapper, singleOption } from '@sjsf/form';
2
+ import { getFormContext, inputAttributes, type ComponentProps } from '@sjsf/form';
3
+ import { indexMapper, singleOption } from '@sjsf/form/options.svelte';
4
+ import '@sjsf/basic-theme/extra-widgets/radio.svelte';
3
5
 
4
- let { attributes, value = $bindable(), options }: WidgetProps<'radio'> = $props();
6
+ let { config, handlers, value = $bindable(), options }: ComponentProps['radioWidget'] = $props();
5
7
 
6
8
  const mapped = singleOption({
7
9
  mapper: () => indexMapper(options),
8
10
  value: () => value,
9
11
  update: (v) => (value = v)
10
12
  });
13
+
14
+ const ctx = getFormContext();
15
+
16
+ const attributes = $derived(inputAttributes(ctx, config, handlers, config.uiOptions?.radio));
11
17
  </script>
12
18
 
13
19
  {#each options as option, index (option.id)}
14
20
  <label class="flex items-center space-x-2 cursor-pointer">
15
21
  <input
16
- type="radio"
17
22
  class="radio"
18
23
  bind:group={mapped.value}
19
24
  value={index}
20
25
  {...attributes}
26
+ type="radio"
21
27
  id={option.id}
22
28
  disabled={option.disabled || attributes.disabled}
23
29
  />
@@ -0,0 +1,4 @@
1
+ import '@sjsf/basic-theme/extra-widgets/radio.svelte';
2
+ declare const Radio: import("svelte").Component<import("@sjsf/form/fields/widgets").WidgetCommonProps<import("@sjsf/form").SchemaValue> & import("@sjsf/form/fields/widgets").Options, {}, "value">;
3
+ type Radio = ReturnType<typeof Radio>;
4
+ export default Radio;
@@ -0,0 +1 @@
1
+ import './range.svelte';
@@ -0,0 +1,4 @@
1
+ import { extendable } from '../definitions';
2
+ import Range from './range.svelte';
3
+ import './range.svelte';
4
+ extendable.rangeWidget = Range;
@@ -0,0 +1,12 @@
1
+ <script lang="ts">
2
+ import { getFormContext, inputAttributes, type ComponentProps } from '@sjsf/form';
3
+ import '@sjsf/basic-theme/extra-widgets/range.svelte';
4
+
5
+ let { value = $bindable(), config, handlers }: ComponentProps['rangeWidget'] = $props();
6
+
7
+ const ctx = getFormContext();
8
+
9
+ const attributes = $derived(inputAttributes(ctx, config, handlers, config.uiOptions?.range));
10
+ </script>
11
+
12
+ <input type="range" bind:value class="range grow w-0" {...attributes} />
@@ -0,0 +1,4 @@
1
+ import '@sjsf/basic-theme/extra-widgets/range.svelte';
2
+ declare const Range: import("svelte").Component<import("@sjsf/form/fields/widgets").WidgetCommonProps<number>, {}, "value">;
3
+ type Range = ReturnType<typeof Range>;
4
+ export default Range;
@@ -0,0 +1 @@
1
+ import "./textarea.svelte";
@@ -0,0 +1,4 @@
1
+ import { extendable } from "../definitions.js";
2
+ import Textarea from "./textarea.svelte";
3
+ import "./textarea.svelte";
4
+ extendable.textareaWidget = Textarea;
@@ -0,0 +1,14 @@
1
+ <script lang="ts">
2
+ import { getFormContext, textareaAttributes, type ComponentProps } from '@sjsf/form';
3
+ import '@sjsf/basic-theme/extra-widgets/textarea.svelte';
4
+
5
+ let { value = $bindable(), config, handlers }: ComponentProps['textareaWidget'] = $props();
6
+
7
+ const ctx = getFormContext();
8
+
9
+ const attributes = $derived(
10
+ textareaAttributes(ctx, config, handlers, config.uiOptions?.textarea)
11
+ );
12
+ </script>
13
+
14
+ <textarea bind:value class="textarea" {...attributes}></textarea>
@@ -0,0 +1,4 @@
1
+ import '@sjsf/basic-theme/extra-widgets/textarea.svelte';
2
+ declare const Textarea: import("svelte").Component<import("@sjsf/form/fields/widgets").WidgetCommonProps<string>, {}, "value">;
3
+ type Textarea = ReturnType<typeof Textarea>;
4
+ export default Textarea;