@soleil-se/config-svelte 1.13.0 → 1.15.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.
- package/CHANGELOG.md +10 -0
- package/actions/resizer.js +6 -0
- package/components/Checkbox/Component.svelte +6 -5
- package/components/Checkbox/README.md +1 -0
- package/components/CheckboxGroup/Component.svelte +7 -5
- package/components/CheckboxGroup/README.md +2 -0
- package/components/CustomList/Component.svelte +7 -6
- package/components/CustomList/README.md +1 -0
- package/components/CustomList/internal/SortableItem.svelte +1 -0
- package/components/CustomSelector/Component.svelte +6 -4
- package/components/CustomSelector/README.md +2 -10
- package/components/DropdownSelector/Component.svelte +7 -6
- package/components/DropdownSelector/README.md +1 -0
- package/components/ImageSelector/Component.svelte +7 -5
- package/components/ImageSelector/README.md +13 -0
- package/components/InputField/Component.svelte +13 -9
- package/components/InputField/README.md +2 -0
- package/components/LinkSelector/Component.svelte +12 -10
- package/components/LinkSelector/README.md +2 -0
- package/components/ListSelector/Component.svelte +4 -3
- package/components/ListSelector/README.md +2 -0
- package/components/NodeSelector/Component.svelte +8 -5
- package/components/NodeSelector/README.md +1 -0
- package/components/NumberSpinner/Component.svelte +3 -2
- package/components/NumberSpinner/README.md +1 -0
- package/components/Panel/Component.svelte +4 -3
- package/components/Panel/README.md +2 -0
- package/components/RadioGroup/Component.svelte +4 -3
- package/components/RadioGroup/README.md +2 -0
- package/components/SelectField/Component.svelte +4 -3
- package/components/SelectField/README.md +1 -0
- package/components/TagSelector/Component.svelte +10 -8
- package/components/TagSelector/README.md +1 -0
- package/components/TextList/Component.svelte +4 -3
- package/components/TextList/README.md +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.15.0] - 2022-09-15
|
|
9
|
+
|
|
10
|
+
- Required was not re-evaluated properly in [InputField](./components/InputField), [NodeSelector](./components/NodeSelector) and [TagSelector](./components/TagSelector).
|
|
11
|
+
- Add `show` prop for all components to toggle visibility without re-rendering.
|
|
12
|
+
|
|
13
|
+
## [1.14.0] - 2022-07-07
|
|
14
|
+
|
|
15
|
+
- Add default slot for [ImageSelector](./components/ImageSelector).
|
|
16
|
+
- Margin fix for [RadioGroup](./components/RadioGroup).
|
|
17
|
+
|
|
8
18
|
## [1.13.0] - 2022-06-23
|
|
9
19
|
|
|
10
20
|
- Add `icon` prop to CustomList for setting an icon to the list items.
|
package/actions/resizer.js
CHANGED
|
@@ -45,6 +45,12 @@ const resizer = (element) => {
|
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
element.addEventListener('mousedown', startResize, false);
|
|
48
|
+
|
|
49
|
+
document.documentElement.addEventListener('initialized', () => {
|
|
50
|
+
if (targetElement.offsetHeight > targetMinHeight) {
|
|
51
|
+
targetElement.style.height = `${targetElement.scrollHeight + 30}px`;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
48
54
|
};
|
|
49
55
|
|
|
50
56
|
export default resizer;
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
export let name;
|
|
11
11
|
export let disabled = false;
|
|
12
12
|
export let checked = false;
|
|
13
|
+
export let show = true;
|
|
13
14
|
export let value;
|
|
14
15
|
value = name ? values[name] ?? value ?? checked : value;
|
|
15
16
|
|
|
@@ -24,12 +25,12 @@
|
|
|
24
25
|
|
|
25
26
|
<!--
|
|
26
27
|
@component
|
|
27
|
-
A checkbox component.
|
|
28
|
+
A checkbox component.
|
|
28
29
|
|
|
29
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/Checkbox/)
|
|
30
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/Checkbox/)
|
|
30
31
|
-->
|
|
31
32
|
|
|
32
|
-
<div class="form-group {className}">
|
|
33
|
+
<div class="form-group {className}" class:hidden={!show}>
|
|
33
34
|
<input
|
|
34
35
|
bind:checked={value}
|
|
35
36
|
{name}
|
|
@@ -55,13 +56,13 @@
|
|
|
55
56
|
width: 16px;
|
|
56
57
|
height: 16px;
|
|
57
58
|
margin-right: 5px;
|
|
59
|
+
content: '';
|
|
58
60
|
border: 1px solid #cacece;
|
|
59
61
|
border-radius: 3px;
|
|
60
|
-
content: '';
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
:global(.focus-visible) + &::before {
|
|
64
|
-
box-shadow: 0 0 0 0.2rem
|
|
65
|
+
box-shadow: 0 0 0 0.2rem rgb(66 139 202 / 40%);
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
input:checked + &::before {
|
|
@@ -10,9 +10,11 @@
|
|
|
10
10
|
export let options;
|
|
11
11
|
export let legend;
|
|
12
12
|
export let disabled = false;
|
|
13
|
+
export let show = true;
|
|
13
14
|
export let value = [];
|
|
14
15
|
value = name ? values[name] || value : value;
|
|
15
16
|
|
|
17
|
+
|
|
16
18
|
let className = '';
|
|
17
19
|
export { className as class };
|
|
18
20
|
|
|
@@ -33,10 +35,10 @@
|
|
|
33
35
|
@component
|
|
34
36
|
A checkbox group component.
|
|
35
37
|
|
|
36
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/CheckboxGroup/)
|
|
38
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/CheckboxGroup/)
|
|
37
39
|
-->
|
|
38
40
|
|
|
39
|
-
<fieldset class="form-group {className}">
|
|
41
|
+
<fieldset class="form-group {className}" class:hidden={!show}>
|
|
40
42
|
<legend>{legend}</legend>
|
|
41
43
|
{#each options as option, index}
|
|
42
44
|
<input
|
|
@@ -67,8 +69,8 @@
|
|
|
67
69
|
|
|
68
70
|
legend {
|
|
69
71
|
margin-bottom: 7px;
|
|
70
|
-
font-weight: bold;
|
|
71
72
|
font-size: 14px;
|
|
73
|
+
font-weight: bold;
|
|
72
74
|
border-bottom: 0;
|
|
73
75
|
}
|
|
74
76
|
|
|
@@ -84,13 +86,13 @@
|
|
|
84
86
|
width: 16px;
|
|
85
87
|
height: 16px;
|
|
86
88
|
margin-right: 5px;
|
|
89
|
+
content: '';
|
|
87
90
|
border: 1px solid #cacece;
|
|
88
91
|
border-radius: 3px;
|
|
89
|
-
content: '';
|
|
90
92
|
}
|
|
91
93
|
|
|
92
94
|
:global(.focus-visible) + &::before {
|
|
93
|
-
box-shadow: 0 0 0 0.2rem
|
|
95
|
+
box-shadow: 0 0 0 0.2rem rgb(66 139 202 / 40%);
|
|
94
96
|
}
|
|
95
97
|
|
|
96
98
|
input:checked + &::before {
|
|
@@ -15,6 +15,8 @@ export let options;
|
|
|
15
15
|
export let legend;
|
|
16
16
|
// Disable input, or provide an array of disabled options: ['value1'].
|
|
17
17
|
export let disabled = false;
|
|
18
|
+
// Show and hide compoment without re-rendering.
|
|
19
|
+
export let show = true;
|
|
18
20
|
// Used if bound to value.
|
|
19
21
|
export let value;
|
|
20
22
|
```
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
import { createEventDispatcher, onMount } from 'svelte';
|
|
4
4
|
import { generateId, addGeneratedIds } from '../../utils';
|
|
5
5
|
import { resizer } from '../../actions';
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
import Sortable from './internal/Sortable.svelte';
|
|
8
8
|
import SortableItem from './internal/SortableItem.svelte';
|
|
9
9
|
import DataHolder from './internal/DataHolder.svelte';
|
|
@@ -17,11 +17,12 @@
|
|
|
17
17
|
export let required = false;
|
|
18
18
|
export let name = undefined;
|
|
19
19
|
export let disabled = false;
|
|
20
|
+
export let show = true;
|
|
20
21
|
export let icon;
|
|
21
22
|
|
|
22
23
|
export let value = [];
|
|
23
24
|
value = name ? values[name] ?? value : value;
|
|
24
|
-
|
|
25
|
+
|
|
25
26
|
addGeneratedIds(value);
|
|
26
27
|
|
|
27
28
|
const domId = generateId();
|
|
@@ -84,10 +85,10 @@
|
|
|
84
85
|
|
|
85
86
|
<!--
|
|
86
87
|
@component
|
|
87
|
-
Custom list component for adding multiple modal windows containting configuration components and
|
|
88
|
+
Custom list component for adding multiple modal windows containting configuration components and
|
|
88
89
|
sorting them.
|
|
89
90
|
|
|
90
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/CustomList/)
|
|
91
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/CustomList/)
|
|
91
92
|
-->
|
|
92
93
|
|
|
93
94
|
{#each modals as id, index (id)}
|
|
@@ -96,7 +97,7 @@
|
|
|
96
97
|
</EditModal>
|
|
97
98
|
{/each}
|
|
98
99
|
|
|
99
|
-
<div class="form-group">
|
|
100
|
+
<div class="form-group" class:hidden={!show}>
|
|
100
101
|
<label for={domId} class="control-label {required ? 'control-label--required' : ''}">
|
|
101
102
|
{label}
|
|
102
103
|
</label>
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
export let required = false;
|
|
15
15
|
export let disabled = false;
|
|
16
16
|
export let multiple = false;
|
|
17
|
+
export let show = true;
|
|
18
|
+
|
|
17
19
|
export let value = multiple ? [] : '';
|
|
18
20
|
|
|
19
21
|
value = name ? values[name] ?? value : value;
|
|
@@ -29,19 +31,19 @@
|
|
|
29
31
|
dispatch('input', value);
|
|
30
32
|
dispatch('change', value);
|
|
31
33
|
});
|
|
32
|
-
|
|
34
|
+
|
|
33
35
|
jQuery(el).val(value).trigger('change');
|
|
34
36
|
});
|
|
35
37
|
</script>
|
|
36
38
|
|
|
37
39
|
<!--
|
|
38
40
|
@component
|
|
39
|
-
Wrapper component for Sitevision [Custom selector](https://developer.sitevision.se/docs/webapps/webapps-2/configuration/sitevision-components#h-Customselectorsince91).
|
|
41
|
+
Wrapper component for Sitevision [Custom selector](https://developer.sitevision.se/docs/webapps/webapps-2/configuration/sitevision-components#h-Customselectorsince91).
|
|
40
42
|
|
|
41
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/CustomSelector/)
|
|
43
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/CustomSelector/)
|
|
42
44
|
-->
|
|
43
45
|
|
|
44
|
-
<div class="form-group {className}">
|
|
46
|
+
<div class="form-group {className}" class:hidden={!show}>
|
|
45
47
|
<label for={id} class="control-label {required ? 'control-label--required' : ''}">{label}</label>
|
|
46
48
|
<select
|
|
47
49
|
{id}
|
|
@@ -3,16 +3,7 @@
|
|
|
3
3
|
Wrapper component for Sitevision [Custom selector](https://developer.sitevision.se/docs/webapps/webapps-2/configuration/sitevision-components#h-Customselectorsince91).
|
|
4
4
|
|
|
5
5
|

|
|
6
|
-
|
|
7
|
-
<!-- TOC -->
|
|
8
|
-
|
|
9
|
-
- [Props](#props)
|
|
10
|
-
- [Example](#example)
|
|
11
|
-
- [Standard](#standard)
|
|
12
|
-
- [Advanced](#advanced)
|
|
13
|
-
- [Slots](#slots)
|
|
14
|
-
|
|
15
|
-
<!-- /TOC -->
|
|
6
|
+

|
|
16
7
|
|
|
17
8
|
## Props
|
|
18
9
|
|
|
@@ -26,6 +17,7 @@ export let placeholder;
|
|
|
26
17
|
export let required = false;
|
|
27
18
|
export let disabled = false;
|
|
28
19
|
export let multiple = false;
|
|
20
|
+
export let show = true;
|
|
29
21
|
export let value = '';
|
|
30
22
|
```
|
|
31
23
|
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
export let selectable = [];
|
|
13
13
|
export let required = false;
|
|
14
14
|
export let disabled = false;
|
|
15
|
+
export let show = true;
|
|
15
16
|
export let value = '';
|
|
16
17
|
|
|
17
18
|
selectable = Array.isArray(selectable) ? selectable.join(',') : selectable;
|
|
@@ -39,7 +40,7 @@
|
|
|
39
40
|
.on('sv:loaded', ({ target }) => {
|
|
40
41
|
setValue(target);
|
|
41
42
|
});
|
|
42
|
-
|
|
43
|
+
|
|
43
44
|
/*
|
|
44
45
|
* The sv:loaded event is only triggered on initial load, if the component rerenders check if any
|
|
45
46
|
* children are present and set value of select element.
|
|
@@ -52,12 +53,12 @@
|
|
|
52
53
|
|
|
53
54
|
<!--
|
|
54
55
|
@component
|
|
55
|
-
Wrapper component for Sitevision [selects](https://developer.sitevision.se/docs/webapps/webapps-2/configuration/sitevision-components).
|
|
56
|
+
Wrapper component for Sitevision [selects](https://developer.sitevision.se/docs/webapps/webapps-2/configuration/sitevision-components).
|
|
56
57
|
|
|
57
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/DropdownSelector/)
|
|
58
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/DropdownSelector/)
|
|
58
59
|
-->
|
|
59
60
|
|
|
60
|
-
<div class="form-group {className}" {hidden}>
|
|
61
|
+
<div class="form-group {className}" {hidden} class:hidden={!show}>
|
|
61
62
|
<label for={id} class="control-label {required ? 'control-label--required' : ''}">{label}</label>
|
|
62
63
|
<select
|
|
63
64
|
{id}
|
|
@@ -89,11 +90,11 @@
|
|
|
89
90
|
}
|
|
90
91
|
|
|
91
92
|
.select2-container.select2-container-disabled .select2-choice {
|
|
93
|
+
cursor: not-allowed;
|
|
92
94
|
background-color: white;
|
|
93
95
|
background-image: none;
|
|
94
96
|
border: 1px solid #ccc;
|
|
95
|
-
|
|
96
|
-
opacity: 70%;
|
|
97
|
+
opacity: 0.7;
|
|
97
98
|
}
|
|
98
99
|
|
|
99
100
|
.select2-container.select2-container-disabed .select2-choice .select2-arrow {
|
|
@@ -19,8 +19,9 @@
|
|
|
19
19
|
alt = name ? values[`${name}Alt`] ?? alt : alt;
|
|
20
20
|
export let hideDecorative = false;
|
|
21
21
|
export let decorative = false;
|
|
22
|
+
export let show;
|
|
22
23
|
$: decorative = hideDecorative ? false : decorative;
|
|
23
|
-
|
|
24
|
+
|
|
24
25
|
let imageArchiveAlt = '';
|
|
25
26
|
let useCustomAlt = !!alt;
|
|
26
27
|
let customAlt = alt;
|
|
@@ -36,7 +37,7 @@
|
|
|
36
37
|
if (node) {
|
|
37
38
|
const response = await fetch(`/rest-api/1/0/${node}/properties`).then((res) => res.json());
|
|
38
39
|
imageArchiveAlt = response.alt || '';
|
|
39
|
-
|
|
40
|
+
|
|
40
41
|
setCustomValidity();
|
|
41
42
|
} else {
|
|
42
43
|
imageArchiveAlt = '';
|
|
@@ -64,10 +65,10 @@
|
|
|
64
65
|
@component
|
|
65
66
|
Custom panel component for selecting an image.
|
|
66
67
|
|
|
67
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/ImageSelector/)
|
|
68
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/ImageSelector/)
|
|
68
69
|
-->
|
|
69
70
|
|
|
70
|
-
<Panel {heading}>
|
|
71
|
+
<Panel {heading} {show}>
|
|
71
72
|
<NodeSelector
|
|
72
73
|
name="{name}Node"
|
|
73
74
|
label={i18n('selectImage')}
|
|
@@ -76,7 +77,7 @@
|
|
|
76
77
|
on:change={onChange}
|
|
77
78
|
{required}
|
|
78
79
|
/>
|
|
79
|
-
<div>
|
|
80
|
+
<div class="form-group">
|
|
80
81
|
{#if !hideDecorative}
|
|
81
82
|
<Checkbox
|
|
82
83
|
class="checkbox-group"
|
|
@@ -103,6 +104,7 @@
|
|
|
103
104
|
/>
|
|
104
105
|
{/if}
|
|
105
106
|
</div>
|
|
107
|
+
<slot />
|
|
106
108
|
</Panel>
|
|
107
109
|
|
|
108
110
|
<style>
|
|
@@ -10,6 +10,7 @@ Custom panel component for selecting an image.
|
|
|
10
10
|
- [Example](#example)
|
|
11
11
|
- [Standard](#standard)
|
|
12
12
|
- [Advanced](#advanced)
|
|
13
|
+
- [Slots](#slots)
|
|
13
14
|
|
|
14
15
|
<!-- /TOC -->
|
|
15
16
|
|
|
@@ -42,6 +43,8 @@ export let node;
|
|
|
42
43
|
export let alt;
|
|
43
44
|
// If image is decorative, since 1.11.0
|
|
44
45
|
export let decorative = false;
|
|
46
|
+
// Show and hide compoment without re-rendering.
|
|
47
|
+
export let show = true;
|
|
45
48
|
// If the checkbox for decorative image should be hidden, since 1.11.0
|
|
46
49
|
export let hideDecorative = false;
|
|
47
50
|
```
|
|
@@ -75,3 +78,13 @@ export let hideDecorative = false;
|
|
|
75
78
|
|
|
76
79
|
<ImageSelector bind:node={values.imageNode} bind:alt={values.imageAlt} />
|
|
77
80
|
```
|
|
81
|
+
|
|
82
|
+
## Slots
|
|
83
|
+
|
|
84
|
+
Default slot
|
|
85
|
+
|
|
86
|
+
```svelte
|
|
87
|
+
<ImageSelector name="image" heading="Bild" />
|
|
88
|
+
<p class="help-block">Some helpful text.</p>
|
|
89
|
+
</ImageSelector>
|
|
90
|
+
```
|
|
@@ -27,15 +27,17 @@
|
|
|
27
27
|
export let value = '';
|
|
28
28
|
/** @type {function} */
|
|
29
29
|
export let action = prefixHttps;
|
|
30
|
-
|
|
30
|
+
/** @type {boolean} */
|
|
31
|
+
export let show = true;
|
|
32
|
+
|
|
31
33
|
let className = '';
|
|
32
34
|
/** @type {string} */
|
|
33
35
|
export { className as class };
|
|
34
|
-
|
|
36
|
+
|
|
35
37
|
value = name ? values[name] ?? value : value;
|
|
36
38
|
|
|
37
39
|
$: isTextarea = type === 'textarea';
|
|
38
|
-
$:
|
|
40
|
+
$: isRequired = required && !disabled && !readonly;
|
|
39
41
|
|
|
40
42
|
const onInput = ({ target }) => {
|
|
41
43
|
value = type.match(/^(number|range)$/) ? +target.value : target.value;
|
|
@@ -46,19 +48,21 @@
|
|
|
46
48
|
|
|
47
49
|
<!--
|
|
48
50
|
@component
|
|
49
|
-
Component for input fields and textareas.
|
|
51
|
+
Component for input fields and textareas.
|
|
50
52
|
|
|
51
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/InputField/)
|
|
53
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/InputField/)
|
|
52
54
|
-->
|
|
53
55
|
|
|
54
|
-
<div class="form-group {className}">
|
|
55
|
-
<label for={id} class="control-label {
|
|
56
|
+
<div class="form-group {className}" class:hidden={!show}>
|
|
57
|
+
<label for={id} class="control-label {isRequired ? 'control-label--required' : ''}">
|
|
58
|
+
{label}
|
|
59
|
+
</label>
|
|
56
60
|
{#if isTextarea}
|
|
57
61
|
<textarea
|
|
58
62
|
class="form-control"
|
|
63
|
+
required={isRequired}
|
|
59
64
|
{id}
|
|
60
65
|
{name}
|
|
61
|
-
{required}
|
|
62
66
|
{disabled}
|
|
63
67
|
{readonly}
|
|
64
68
|
{value}
|
|
@@ -69,10 +73,10 @@
|
|
|
69
73
|
{:else}
|
|
70
74
|
<input
|
|
71
75
|
class="form-control"
|
|
76
|
+
required={isRequired}
|
|
72
77
|
{id}
|
|
73
78
|
{name}
|
|
74
79
|
{type}
|
|
75
|
-
{required}
|
|
76
80
|
{disabled}
|
|
77
81
|
{readonly}
|
|
78
82
|
{value}
|
|
@@ -32,6 +32,8 @@ export let required = false;
|
|
|
32
32
|
export let disabled = false;
|
|
33
33
|
// If field is readonly.
|
|
34
34
|
export let readonly = false;
|
|
35
|
+
// Show and hide compoment without re-rendering.
|
|
36
|
+
export let show = true;
|
|
35
37
|
// Max length of input.
|
|
36
38
|
export let maxlength = undefined;
|
|
37
39
|
// Validation pattern.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { createEventDispatcher } from 'svelte';
|
|
3
|
-
import { show, prefixMail, prefixTel } from '../../actions';
|
|
3
|
+
import { show as showAction, prefixMail, prefixTel } from '../../actions';
|
|
4
4
|
import i18n from './i18n';
|
|
5
5
|
|
|
6
6
|
import Panel from '../Panel';
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
export let disabled = false;
|
|
18
18
|
export let required = false;
|
|
19
19
|
export let types = ['internal', 'external', 'file'];
|
|
20
|
+
export let show;
|
|
20
21
|
export let value;
|
|
22
|
+
|
|
21
23
|
value = getSavedValue({ value, name, types });
|
|
22
24
|
|
|
23
25
|
let className = '';
|
|
@@ -56,10 +58,10 @@
|
|
|
56
58
|
@component
|
|
57
59
|
Custom panel component for selecting a link.
|
|
58
60
|
|
|
59
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/LinkSelector/)
|
|
61
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/LinkSelector/)
|
|
60
62
|
-->
|
|
61
63
|
|
|
62
|
-
<Panel {heading} class={className} {required}>
|
|
64
|
+
<Panel {heading} class={className} {required} {show}>
|
|
63
65
|
<slot name="top" />
|
|
64
66
|
{#if selectableTypes.length > 1}
|
|
65
67
|
<div class="sr-legend form-group">
|
|
@@ -74,7 +76,7 @@
|
|
|
74
76
|
</div>
|
|
75
77
|
{/if}
|
|
76
78
|
|
|
77
|
-
<div class="sr-label form-group form-group--internal" use:
|
|
79
|
+
<div class="sr-label form-group form-group--internal" use:showAction={isInternal}>
|
|
78
80
|
<NodeSelector
|
|
79
81
|
name={name && isInternal ? `${name}Value` : undefined}
|
|
80
82
|
bind:value={selected.internal}
|
|
@@ -85,7 +87,7 @@
|
|
|
85
87
|
required={required && isInternal}
|
|
86
88
|
/>
|
|
87
89
|
</div>
|
|
88
|
-
<div class="sr-label form-group form-group--external" use:
|
|
90
|
+
<div class="sr-label form-group form-group--external" use:showAction={isExternal}>
|
|
89
91
|
<InputField
|
|
90
92
|
name={name && isExternal ? `${name}Value` : undefined}
|
|
91
93
|
bind:value={selected.external}
|
|
@@ -96,7 +98,7 @@
|
|
|
96
98
|
required={required && isExternal}
|
|
97
99
|
/>
|
|
98
100
|
</div>
|
|
99
|
-
<div class="sr-label form-group form-group--file" use:
|
|
101
|
+
<div class="sr-label form-group form-group--file" use:showAction={isFile}>
|
|
100
102
|
<NodeSelector
|
|
101
103
|
name={name && isFile ? `${name}Value` : undefined}
|
|
102
104
|
bind:value={selected.file}
|
|
@@ -108,7 +110,7 @@
|
|
|
108
110
|
/>
|
|
109
111
|
</div>
|
|
110
112
|
|
|
111
|
-
<div class="sr-label form-group form-group--mail" use:
|
|
113
|
+
<div class="sr-label form-group form-group--mail" use:showAction={isMail}>
|
|
112
114
|
<InputField
|
|
113
115
|
name={name && isMail ? `${name}Value` : undefined}
|
|
114
116
|
bind:value={selected.mail}
|
|
@@ -119,7 +121,7 @@
|
|
|
119
121
|
required={required && isMail}
|
|
120
122
|
/>
|
|
121
123
|
</div>
|
|
122
|
-
<div class="sr-label form-group form-group--tel" use:
|
|
124
|
+
<div class="sr-label form-group form-group--tel" use:showAction={isTel}>
|
|
123
125
|
<InputField
|
|
124
126
|
name={name && isTel ? `${name}Value` : undefined}
|
|
125
127
|
bind:value={selected.tel}
|
|
@@ -148,11 +150,11 @@
|
|
|
148
150
|
position: absolute;
|
|
149
151
|
width: 1px;
|
|
150
152
|
height: 1px;
|
|
151
|
-
margin: -1px;
|
|
152
153
|
padding: 0;
|
|
154
|
+
margin: -1px;
|
|
153
155
|
overflow: hidden;
|
|
154
|
-
border: 0;
|
|
155
156
|
clip: rect(0, 0, 0, 0);
|
|
157
|
+
border: 0;
|
|
156
158
|
}
|
|
157
159
|
|
|
158
160
|
.form-group--external,
|
|
@@ -52,6 +52,8 @@ export let name;
|
|
|
52
52
|
export let disabled = false;
|
|
53
53
|
// If control is required.
|
|
54
54
|
export let required = false;
|
|
55
|
+
// Show and hide compoment without re-rendering.
|
|
56
|
+
export let show = true;
|
|
55
57
|
// What types of links to be selectable, must provide at least one.
|
|
56
58
|
export let types = ['internal', 'external', 'file', 'mail', 'tel'];
|
|
57
59
|
// Used if bound to value.
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
export let required = false;
|
|
13
13
|
export let disabled = false;
|
|
14
14
|
export let sortable = false;
|
|
15
|
+
export let show = true;
|
|
15
16
|
export let selectable = [];
|
|
16
17
|
export let value = [];
|
|
17
18
|
|
|
@@ -45,10 +46,10 @@
|
|
|
45
46
|
@component
|
|
46
47
|
Wrapper for Sitevision [list components](https://developer.sitevision.se/docs/webapps/webapps-2/configuration/sitevision-components#h-Listcomponents).
|
|
47
48
|
|
|
48
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/ListSelector/)
|
|
49
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/ListSelector/)
|
|
49
50
|
-->
|
|
50
51
|
|
|
51
|
-
<div class="form-group" class:disabled>
|
|
52
|
+
<div class="form-group" class:disabled class:hidden={!show}>
|
|
52
53
|
<label for={id} class="control-label {required ? 'control-label--required' : ''}">{label}</label>
|
|
53
54
|
<input
|
|
54
55
|
{id}
|
|
@@ -77,7 +78,7 @@
|
|
|
77
78
|
bottom: 0;
|
|
78
79
|
z-index: 90;
|
|
79
80
|
width: 100%;
|
|
80
|
-
background-color: rgb(255 255 255 / 30%);
|
|
81
81
|
cursor: not-allowed;
|
|
82
|
+
background-color: rgb(255 255 255 / 30%);
|
|
82
83
|
}
|
|
83
84
|
</style>
|
|
@@ -36,6 +36,8 @@ export let required = false;
|
|
|
36
36
|
export let disabled = false;
|
|
37
37
|
// If list is sortable, since Sitevision 9.1.
|
|
38
38
|
export let sortable = false;
|
|
39
|
+
// Show and hide compoment without re-rendering.
|
|
40
|
+
export let show = true;
|
|
39
41
|
// Selectable types
|
|
40
42
|
export let selectable = [];
|
|
41
43
|
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
export let removable = true;
|
|
17
17
|
export let selectable = [];
|
|
18
18
|
export let value = '';
|
|
19
|
+
export let show = true;
|
|
19
20
|
|
|
20
21
|
selectable = Array.isArray(selectable) ? selectable.join(',') : selectable;
|
|
21
22
|
value = name ? values[name] ?? value : value;
|
|
@@ -23,7 +24,7 @@
|
|
|
23
24
|
let className = '';
|
|
24
25
|
export { className as class };
|
|
25
26
|
|
|
26
|
-
$:
|
|
27
|
+
$: isRequired = required && !disabled && !readonly;
|
|
27
28
|
$: component = type.endsWith('-selector') ? type : `${type}-selector`;
|
|
28
29
|
|
|
29
30
|
let displayName = value ? value.displayName || value.path : '';
|
|
@@ -58,18 +59,20 @@
|
|
|
58
59
|
@component
|
|
59
60
|
Wrapper for Sitevision [input components](https://developer.sitevision.se/docs/webapps/webapps-2/configuration/sitevision-components) used for selecting nodes.
|
|
60
61
|
|
|
61
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/NodeSelector/)
|
|
62
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/NodeSelector/)
|
|
62
63
|
-->
|
|
63
64
|
|
|
64
|
-
<div class="form-group {className}">
|
|
65
|
-
<label for={id} class="control-label {
|
|
65
|
+
<div class="form-group {className}" class:hidden={!show}>
|
|
66
|
+
<label for={id} class="control-label {isRequired ? 'control-label--required' : ''}">
|
|
67
|
+
{label}
|
|
68
|
+
</label>
|
|
66
69
|
<input
|
|
67
70
|
class="form-control"
|
|
68
71
|
{id}
|
|
69
72
|
{name}
|
|
70
|
-
{required}
|
|
71
73
|
{disabled}
|
|
72
74
|
{readonly}
|
|
75
|
+
required={isRequired}
|
|
73
76
|
data-removable={removable ? '' : undefined}
|
|
74
77
|
data-component={component}
|
|
75
78
|
data-types={selectable}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
export let step = 1;
|
|
14
14
|
export let disabled = false;
|
|
15
15
|
export let readonly = false;
|
|
16
|
+
export let show = true;
|
|
16
17
|
export let suffix;
|
|
17
18
|
export let value = min || 1;
|
|
18
19
|
value = Number(name ? values[name] ?? value : value);
|
|
@@ -43,10 +44,10 @@
|
|
|
43
44
|
@component
|
|
44
45
|
Wrapper for Sitevision [number spinner](https://developer.sitevision.se/docs/webapps/webapps-2/configuration/sitevision-components).
|
|
45
46
|
|
|
46
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/NumberSpinner/)
|
|
47
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/NumberSpinner/)
|
|
47
48
|
-->
|
|
48
49
|
|
|
49
|
-
<div class="form-group {className}">
|
|
50
|
+
<div class="form-group {className}" class:hidden={!show}>
|
|
50
51
|
<label for={id} class="control-label">{label}</label>
|
|
51
52
|
<input
|
|
52
53
|
{id}
|
|
@@ -3,16 +3,17 @@
|
|
|
3
3
|
|
|
4
4
|
export let heading = i18n('settings');
|
|
5
5
|
export let required = false;
|
|
6
|
+
export let show = true;
|
|
6
7
|
</script>
|
|
7
8
|
|
|
8
9
|
<!--
|
|
9
10
|
@component
|
|
10
11
|
A panel component.
|
|
11
12
|
|
|
12
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/Panel/)
|
|
13
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/Panel/)
|
|
13
14
|
-->
|
|
14
15
|
|
|
15
|
-
<div class="panel panel-default">
|
|
16
|
+
<div class="panel panel-default" class:hidden={!show}>
|
|
16
17
|
<input class="sr-only" type="text" tabindex="-1" />
|
|
17
18
|
<div class="panel-heading">
|
|
18
19
|
<h1 class="panel-title {required && 'panel-title--required'}">{heading}</h1>
|
|
@@ -41,8 +42,8 @@
|
|
|
41
42
|
position: relative;
|
|
42
43
|
top: 1px;
|
|
43
44
|
margin-left: 5px;
|
|
44
|
-
color: #a94442;
|
|
45
45
|
font-size: 18px;
|
|
46
|
+
color: #a94442;
|
|
46
47
|
content: '*';
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
export let options = [];
|
|
11
11
|
export let legend;
|
|
12
12
|
export let disabled = false;
|
|
13
|
+
export let show = true;
|
|
13
14
|
export let value = options[0]?.value ?? options[0] ?? '';
|
|
14
15
|
value = name ? values[name] ?? value : value;
|
|
15
16
|
|
|
@@ -28,10 +29,10 @@
|
|
|
28
29
|
@component
|
|
29
30
|
A radio group component.
|
|
30
31
|
|
|
31
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/RadioGroup/)
|
|
32
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/RadioGroup/)
|
|
32
33
|
-->
|
|
33
34
|
|
|
34
|
-
<fieldset class="form-group">
|
|
35
|
+
<fieldset class="form-group" class:hidden={!show}>
|
|
35
36
|
<legend>{legend}</legend>
|
|
36
37
|
{#each options as option, index}
|
|
37
38
|
<input
|
|
@@ -48,8 +49,8 @@
|
|
|
48
49
|
{option.label || option}
|
|
49
50
|
</label>
|
|
50
51
|
{/each}
|
|
52
|
+
<input type="hidden" {value} {name} />
|
|
51
53
|
</fieldset>
|
|
52
|
-
<input type="hidden" {value} {name} />
|
|
53
54
|
|
|
54
55
|
<style lang="scss">
|
|
55
56
|
legend {
|
|
@@ -14,6 +14,8 @@ export let options;
|
|
|
14
14
|
export let legend;
|
|
15
15
|
// If field is disabled, can be boolean to disable all options, or an array of disabled option values; ['value1'].
|
|
16
16
|
export let disabled = false;
|
|
17
|
+
// Show and hide compoment without re-rendering.
|
|
18
|
+
export let show = true;
|
|
17
19
|
// Used if bound to value.
|
|
18
20
|
export let value = '';
|
|
19
21
|
```
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
export let name;
|
|
11
11
|
export let required = false;
|
|
12
12
|
export let disabled = false;
|
|
13
|
+
export let show = true;
|
|
13
14
|
export let options = [];
|
|
14
15
|
export let value = '';
|
|
15
16
|
value = name ? values[name] ?? value : value;
|
|
@@ -23,9 +24,9 @@
|
|
|
23
24
|
@component
|
|
24
25
|
A select field component.
|
|
25
26
|
|
|
26
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/SelectField/)
|
|
27
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/SelectField/)
|
|
27
28
|
-->
|
|
28
|
-
<div class="form-group">
|
|
29
|
+
<div class="form-group" class:hidden={!show}>
|
|
29
30
|
<label class="control-label {required ? 'control-label--required' : ''}" for={id}>{label}</label>
|
|
30
31
|
<!-- svelte-ignore a11y-no-onchange -->
|
|
31
32
|
<select class="form-control" bind:value {id} {disabled} {required} {name} on:change={onChange}>
|
|
@@ -41,6 +42,6 @@
|
|
|
41
42
|
<style>
|
|
42
43
|
.form-control[disabled] {
|
|
43
44
|
background-color: white;
|
|
44
|
-
opacity:
|
|
45
|
+
opacity: 0.7;
|
|
45
46
|
}
|
|
46
47
|
</style>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
export let name;
|
|
12
12
|
export let required = false;
|
|
13
13
|
export let disabled = false;
|
|
14
|
-
|
|
14
|
+
export let show = true;
|
|
15
15
|
export let selectable = [];
|
|
16
16
|
export let value = '';
|
|
17
17
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
let className = '';
|
|
22
22
|
export { className as class };
|
|
23
23
|
|
|
24
|
-
$:
|
|
24
|
+
$: isRequired = required && !disabled;
|
|
25
25
|
|
|
26
26
|
const onChange = () => {
|
|
27
27
|
dispatch('input', value);
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
onMount(async () => {
|
|
32
32
|
setupComponent(id).on('change', ({ target }) => {
|
|
33
33
|
value = target.value.split(',');
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
onChange();
|
|
36
36
|
});
|
|
37
37
|
|
|
@@ -48,18 +48,20 @@
|
|
|
48
48
|
@component
|
|
49
49
|
Wrapper for Sitevision [tag selector](https://developer.sitevision.se/docs/webapps/webapps-2/configuration/sitevision-components).
|
|
50
50
|
|
|
51
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/TagSelector/)
|
|
51
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/TagSelector/)
|
|
52
52
|
-->
|
|
53
53
|
|
|
54
|
-
<div class="form-group {className}">
|
|
55
|
-
<label for={id} class="control-label {
|
|
54
|
+
<div class="form-group {className}" class:hidden={!show}>
|
|
55
|
+
<label for={id} class="control-label {isRequired ? 'control-label--required' : ''}">
|
|
56
|
+
{label}
|
|
57
|
+
</label>
|
|
56
58
|
<input
|
|
57
59
|
class="form-control"
|
|
60
|
+
required={isRequired}
|
|
61
|
+
data-component="tags-selector"
|
|
58
62
|
{id}
|
|
59
63
|
{name}
|
|
60
|
-
{required}
|
|
61
64
|
{disabled}
|
|
62
|
-
data-component="tags-selector"
|
|
63
65
|
{value}
|
|
64
66
|
/>
|
|
65
67
|
{#if disabled}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
export let required = false;
|
|
17
17
|
export let name = undefined;
|
|
18
18
|
export let disabled = false;
|
|
19
|
+
export let show = true;
|
|
19
20
|
export let value = [];
|
|
20
21
|
value = name ? values[name] ?? value : value;
|
|
21
22
|
|
|
@@ -72,10 +73,10 @@
|
|
|
72
73
|
@component
|
|
73
74
|
Custom list component for adding multiple text values and sorting them.
|
|
74
75
|
|
|
75
|
-
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/TextList/)
|
|
76
|
+
[README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/TextList/)
|
|
76
77
|
-->
|
|
77
78
|
|
|
78
|
-
<div class="form-group">
|
|
79
|
+
<div class="form-group" class:hidden={!show}>
|
|
79
80
|
<label for={id} class="control-label {required ? 'control-label--required' : ''}">{label}</label>
|
|
80
81
|
<div class="list-component">
|
|
81
82
|
<div class="list-component__list-wrapper ui-resizable">
|
|
@@ -116,7 +117,7 @@
|
|
|
116
117
|
bottom: 0;
|
|
117
118
|
z-index: 90;
|
|
118
119
|
width: 100%;
|
|
119
|
-
background-color: rgba(255, 255, 255, 0.3);
|
|
120
120
|
cursor: not-allowed;
|
|
121
|
+
background-color: rgb(255 255 255 / 30%);
|
|
121
122
|
}
|
|
122
123
|
</style>
|