@soleil-se/config-svelte 1.5.2 → 1.7.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 (36) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/components/Checkbox/Component.svelte +7 -0
  3. package/components/Checkbox/README.md +5 -0
  4. package/components/CheckboxGroup/Component.svelte +7 -1
  5. package/components/CheckboxGroup/README.md +7 -0
  6. package/components/DropdownSelector/Component.svelte +7 -0
  7. package/components/DropdownSelector/README.md +21 -2
  8. package/components/ImageSelector/Component.svelte +13 -14
  9. package/components/ImageSelector/README.md +3 -1
  10. package/components/ImageSelector/i18n.js +25 -0
  11. package/components/InputField/Component.svelte +23 -7
  12. package/components/InputField/README.md +18 -11
  13. package/components/LinkSelector/Component.svelte +20 -12
  14. package/components/LinkSelector/README.md +42 -13
  15. package/components/LinkSelector/i18n.js +31 -0
  16. package/components/ListSelector/Component.svelte +11 -3
  17. package/components/ListSelector/README.md +14 -11
  18. package/components/NodeSelector/Component.svelte +7 -0
  19. package/components/NodeSelector/README.md +12 -11
  20. package/components/NumberSpinner/Component.svelte +7 -0
  21. package/components/NumberSpinner/README.md +16 -9
  22. package/components/Panel/Component.svelte +10 -1
  23. package/components/Panel/README.md +6 -3
  24. package/components/Panel/i18n.js +13 -0
  25. package/components/RadioGroup/Component.svelte +26 -21
  26. package/components/RadioGroup/README.md +6 -0
  27. package/components/SelectField/Component.svelte +7 -0
  28. package/components/SelectField/README.md +17 -9
  29. package/components/TagSelector/Component.svelte +7 -0
  30. package/components/TagSelector/README.md +11 -10
  31. package/components/TextList/Component.svelte +10 -2
  32. package/components/TextList/README.md +9 -0
  33. package/components/TextList/i18n.js +13 -0
  34. package/package.json +1 -1
  35. package/utils/createI18n.js +29 -0
  36. package/utils/index.js +1 -0
@@ -11,6 +11,7 @@
11
11
  export let type = 'page-list';
12
12
  export let required = false;
13
13
  export let disabled = false;
14
+ export let sortable = false;
14
15
  export let selectable = [];
15
16
  export let value = [];
16
17
 
@@ -40,7 +41,14 @@
40
41
  });
41
42
  </script>
42
43
 
43
- <div class="form-group">
44
+ <!--
45
+ @component
46
+ Wrapper for Sitevision [list components](https://developer.sitevision.se/docs/webapps/configuration#h-Listcomponents).
47
+
48
+ [README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/ListSelector/)
49
+ -->
50
+
51
+ <div class="form-group" class:disabled>
44
52
  <label for={id} class="control-label {required ? 'control-label--required' : ''}">{label}</label>
45
53
  <input
46
54
  {id}
@@ -48,6 +56,7 @@
48
56
  type="hidden"
49
57
  data-component={component}
50
58
  {required}
59
+ data-sortable={sortable || undefined}
51
60
  data-types={selectable}
52
61
  value={value.join(',')}
53
62
  />
@@ -58,7 +67,7 @@
58
67
  </div>
59
68
 
60
69
  <style>
61
- .form-group {
70
+ .form-group.disabled {
62
71
  position: relative;
63
72
  }
64
73
 
@@ -71,5 +80,4 @@
71
80
  background-color: rgba(255, 255, 255, 0.3);
72
81
  cursor: not-allowed;
73
82
  }
74
-
75
83
  </style>
@@ -1,7 +1,8 @@
1
1
  # ListSelector
2
2
 
3
- Wrapper for list components
4
- <https://developer.sitevision.se/docs/webapps/configuration#h-Listcomponents>
3
+ Wrapper for Sitevision [list components](https://developer.sitevision.se/docs/webapps/configuration#h-Listcomponents)
4
+
5
+ ![ListSelector](../../images/ListSelector.png)
5
6
 
6
7
  <!-- TOC -->
7
8
 
@@ -30,8 +31,10 @@ export let type = 'page';
30
31
  export let value = [];
31
32
  // If list is required.
32
33
  export let required = false;
33
- // If list is diable.
34
+ // If list is disabled.
34
35
  export let disabled = false;
36
+ // If list is sortable, since Sitevision 9.1.
37
+ export let sortable = false;
35
38
  // Selectable types
36
39
  export let selectable = [];
37
40
 
@@ -55,15 +58,15 @@ import { Panel, ListSelector } from '@soleil-se/svelte-config';
55
58
 
56
59
  ```svelte
57
60
  <script>
58
- import { Panel, ListSelector } from '@soleil-se/svelte-config';
59
- import { onSave } from '@soleil-se/svelte-config/utils';
61
+ import { Panel, ListSelector } from '@soleil-se/svelte-config';
62
+ import { onSave } from '@soleil-se/svelte-config/utils';
60
63
 
61
- const values = {
62
- pages: '',
63
- ...window.CONFIG_VALUES
64
- };
64
+ const values = {
65
+ pages: '',
66
+ ...window.CONFIG_VALUES
67
+ };
65
68
 
66
- onSave(() => values);
69
+ onSave(() => values);
67
70
 
68
71
  </script>
69
72
 
@@ -92,7 +95,7 @@ You can omnit the `-list` suffix for the type prop.
92
95
 
93
96
  ## Selectable types
94
97
 
95
- > :exclamation: Since SiteVision 7.0 :exclamation:
98
+ > :exclamation: Since Sitevision 7.0 :exclamation:
96
99
 
97
100
  Filter what types should be selectable. See available types here:
98
101
  <https://developer.sitevision.se/docs/webapps/configuration#h-Types-0>
@@ -54,6 +54,13 @@
54
54
  });
55
55
  </script>
56
56
 
57
+ <!--
58
+ @component
59
+ Wrapper for Sitevision [node selectors](https://developer.sitevision.se/docs/webapps/configuration#h-SiteVisioncomponents).
60
+
61
+ [README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/NodeSelector/)
62
+ -->
63
+
57
64
  <div class="form-group {className}">
58
65
  <label for={id} class="control-label {required ? 'control-label--required' : ''}">{label}</label>
59
66
  <input
@@ -1,7 +1,8 @@
1
1
  # NodeSelector
2
2
 
3
- Wrapper for node selectors.
4
- <https://developer.sitevision.se/docs/webapps/configuration#h-SiteVisioncomponents>
3
+ Wrapper for Sitevision [node selectors](https://developer.sitevision.se/docs/webapps/configuration#h-SiteVisioncomponents).
4
+
5
+ ![NodeSelector](../../images/NodeSelector.png)
5
6
 
6
7
  <!-- TOC -->
7
8
 
@@ -35,9 +36,8 @@ export let value = '';
35
36
 
36
37
  ```svelte
37
38
  <script>
38
- import { Panel, NodeSelector } from '@soleil-se/svelte-config';
39
+ import { Panel, NodeSelector } from '@soleil-se/svelte-config';
39
40
  </script>
40
- ```
41
41
 
42
42
  <Panel heading="Inställningar">
43
43
  <NodeSelector
@@ -46,20 +46,21 @@ import { Panel, NodeSelector } from '@soleil-se/svelte-config';
46
46
  label="Sida"
47
47
  />
48
48
  </Panel>
49
+ ```
49
50
 
50
51
  ### Advanced
51
52
 
52
53
  ```svelte
53
54
  <script>
54
- import { Panel, NodeSelector } from '@soleil-se/svelte-config';
55
- import { onSave } from '@soleil-se/svelte-config/utils';
55
+ import { Panel, NodeSelector } from '@soleil-se/svelte-config';
56
+ import { onSave } from '@soleil-se/svelte-config/utils';
56
57
 
57
- const values = {
58
- page: '',
59
- ...window.CONFIG_VALUES
60
- };
58
+ const values = {
59
+ page: '',
60
+ ...window.CONFIG_VALUES
61
+ };
61
62
 
62
- onSave(() => values);
63
+ onSave(() => values);
63
64
 
64
65
  </script>
65
66
 
@@ -32,6 +32,13 @@
32
32
  });
33
33
  </script>
34
34
 
35
+ <!--
36
+ @component
37
+ Wrapper for Sitevision [number spinner](https://developer.sitevision.se/docs/webapps/configuration#h-SiteVisioncomponents).
38
+
39
+ [README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/NumberSpinner/)
40
+ -->
41
+
35
42
  <div class="form-group">
36
43
  <label for={id} class="control-label">{label}</label>
37
44
  <input
@@ -1,8 +1,11 @@
1
1
  # NumberSpinner
2
- Wrapper for number spinner.
3
- https://developer.sitevision.se/docs/webapps/configuration#h-SiteVisioncomponents
2
+
3
+ Wrapper for Sitevision [number spinner](https://developer.sitevision.se/docs/webapps/configuration#h-SiteVisioncomponents).
4
+
5
+ ![NumberSpinner](../../images/NumberSpinner.png)
4
6
 
5
7
  ## Props
8
+
6
9
  ```javascript
7
10
  export let id = generateId();
8
11
  export let name;
@@ -19,10 +22,12 @@ export let value = min || 1;
19
22
  ## Example
20
23
 
21
24
  ### Standard
25
+
22
26
  ```svelte
23
27
  <script>
24
28
  import { Panel, NumberSpinner } from '@soleil-se/svelte-config';
25
29
  </script>
30
+
26
31
  <Panel heading="Inställningar">
27
32
  <NumberSpinner name="spinner" label="Number spinner" min="5" max="10" suffix="px" />
28
33
  </Panel>
@@ -32,15 +37,15 @@ export let value = min || 1;
32
37
 
33
38
  ```svelte
34
39
  <script>
35
- import { Panel, NumberSpinner } from '@soleil-se/svelte-config';
36
- import { onSave } from '@soleil-se/svelte-config/utils';
40
+ import { Panel, NumberSpinner } from '@soleil-se/svelte-config';
41
+ import { onSave } from '@soleil-se/svelte-config/utils';
37
42
 
38
- const values = {
39
- spinner: '',
40
- ...window.CONFIG_VALUES
41
- };
43
+ const values = {
44
+ spinner: '',
45
+ ...window.CONFIG_VALUES
46
+ };
42
47
 
43
- onSave(() => values);
48
+ onSave(() => values);
44
49
 
45
50
  </script>
46
51
 
@@ -50,7 +55,9 @@ onSave(() => values);
50
55
  ```
51
56
 
52
57
  ## Slots
58
+
53
59
  Default slot after selector.
60
+
54
61
  ```svelte
55
62
  <NumberSpinner name="spinner" label="Number spinner" min="5" max="10" />
56
63
  <p class="help-block">Some helpful text.</p>
@@ -1,8 +1,17 @@
1
1
  <script>
2
- export let heading = 'Inställningar';
2
+ import i18n from './i18n';
3
+
4
+ export let heading = i18n('settings');
3
5
  export let required = false;
4
6
  </script>
5
7
 
8
+ <!--
9
+ @component
10
+ A panel component.
11
+
12
+ [README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/Panel/)
13
+ -->
14
+
6
15
  <div class="panel panel-default">
7
16
  <input class="sr-only" type="text" tabindex="-1" />
8
17
  <div class="panel-heading">
@@ -1,6 +1,9 @@
1
1
  # Panel
2
2
 
3
+ ![Panel](../../images/Panel.png)
4
+
3
5
  ## Props
6
+
4
7
  ```javascript
5
8
  // Panel heading
6
9
  export let heading = 'Inställningar';
@@ -9,17 +12,17 @@ export let required = false;
9
12
  ```
10
13
 
11
14
  ## Slots
15
+
12
16
  Default slot for panel body.
13
17
 
14
18
  ## Example
19
+
15
20
  ```svelte
16
21
  <script>
17
- import { Panel } from '@soleil-se/svelte-config';
22
+ import { Panel } from '@soleil-se/svelte-config';
18
23
  </script>
19
24
 
20
25
  <Panel heading="Inställningar">
21
26
  <!-- Panel content -->
22
27
  </Panel>
23
28
  ```
24
-
25
-
@@ -0,0 +1,13 @@
1
+ import createI18n from '../../utils/createI18n';
2
+
3
+ export default createI18n({
4
+ sv: {
5
+ settings: 'Inställningar',
6
+ },
7
+ no: {
8
+ settings: 'Innstillinger',
9
+ },
10
+ en: {
11
+ settings: 'Settings',
12
+ },
13
+ });
@@ -24,27 +24,32 @@
24
24
  };
25
25
  </script>
26
26
 
27
- <template>
28
- <fieldset class="form-group">
29
- <legend>{legend}</legend>
30
- {#each options as option, index}
31
- <input
32
- id={`${id}_${index}`}
33
- bind:group={value}
34
- value={option.value || option}
35
- checked={option.value || option}
36
- disabled={isDisabled(option)}
37
- type="radio"
38
- class="sr-only"
39
- on:change={onChange}
40
- />
41
- <label for={`${id}_${index}`} class="radio-inline" class:disabled={isDisabled(option)}>
42
- {option.label || option}
43
- </label>
44
- {/each}
45
- </fieldset>
46
- <input type="hidden" {value} {name} />
47
- </template>
27
+ <!--
28
+ @component
29
+ A radio group component.
30
+
31
+ [README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/RadioGroup/)
32
+ -->
33
+
34
+ <fieldset class="form-group">
35
+ <legend>{legend}</legend>
36
+ {#each options as option, index}
37
+ <input
38
+ id={`${id}_${index}`}
39
+ bind:group={value}
40
+ value={option.value || option}
41
+ checked={option.value || option}
42
+ disabled={isDisabled(option)}
43
+ type="radio"
44
+ class="sr-only"
45
+ on:change={onChange}
46
+ />
47
+ <label for={`${id}_${index}`} class="radio-inline" class:disabled={isDisabled(option)}>
48
+ {option.label || option}
49
+ </label>
50
+ {/each}
51
+ </fieldset>
52
+ <input type="hidden" {value} {name} />
48
53
 
49
54
  <style lang="scss">
50
55
  legend {
@@ -1,6 +1,9 @@
1
1
  # RadioGroup
2
2
 
3
+ ![RadioGroup](../../images/RadioGroup.png)
4
+
3
5
  ## Props
6
+
4
7
  ```javascript
5
8
  export let id = generateId();
6
9
  // If SiteVision default functions for getting and setting config is used name must be set
@@ -18,6 +21,7 @@ export let value = '';
18
21
  ## Example
19
22
 
20
23
  ### Standard
24
+
21
25
  ```svelte
22
26
  <script>
23
27
  import { Panel, RadioGroup } from '@soleil-se/svelte-config';
@@ -63,7 +67,9 @@ onSave(() => values);
63
67
  ```
64
68
 
65
69
  ## Default value
70
+
66
71
  Use the value attribute to set a default value:
72
+
67
73
  ```svelte
68
74
  <RadioGroup
69
75
  name="radioGroup"
@@ -19,6 +19,13 @@
19
19
  };
20
20
  </script>
21
21
 
22
+ <!--
23
+ @component
24
+ A select field component.
25
+
26
+ [README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/SelectField/)
27
+ -->
28
+
22
29
  <div class="form-group">
23
30
  <label class="control-label {required ? 'control-label--required' : ''}" for={id}>{label}</label>
24
31
  <!-- svelte-ignore a11y-no-onchange -->
@@ -1,6 +1,9 @@
1
1
  # SelectField
2
2
 
3
+ ![SelectField](../../images/SelectField.png)
4
+
3
5
  ## Props
6
+
4
7
  ```javascript
5
8
  export let id = generateId();
6
9
  export let label;
@@ -14,9 +17,10 @@ export let value = '';
14
17
  ## Example
15
18
 
16
19
  ### Standard
20
+
17
21
  ```svelte
18
22
  <script>
19
- import { Panel, SelectField } from '@soleil-se/svelte-config';
23
+ import { Panel, SelectField } from '@soleil-se/svelte-config';
20
24
  </script>
21
25
 
22
26
  <Panel heading="Inställningar">
@@ -33,17 +37,17 @@ import { Panel, SelectField } from '@soleil-se/svelte-config';
33
37
 
34
38
  ```svelte
35
39
  <script>
36
- import { Panel, SelectField } from '@soleil-se/svelte-config';
37
- import { onSave } from '@soleil-se/svelte-config/utils';
40
+ import { Panel, SelectField } from '@soleil-se/svelte-config';
41
+ import { onSave } from '@soleil-se/svelte-config/utils';
38
42
 
39
- const values = {
40
- select: '',
41
- ...window.CONFIG_VALUES
42
- };
43
+ const values = {
44
+ select: '',
45
+ ...window.CONFIG_VALUES
46
+ };
43
47
 
44
- const options = ['Värde 1', 'Värde 2', 'Värde 3'];
48
+ const options = ['Värde 1', 'Värde 2', 'Värde 3'];
45
49
 
46
- onSave(() => values);
50
+ onSave(() => values);
47
51
 
48
52
  </script>
49
53
 
@@ -53,7 +57,9 @@ onSave(() => values);
53
57
  ```
54
58
 
55
59
  ## Slots
60
+
56
61
  Default slot after select field.
62
+
57
63
  ```svelte
58
64
  <SelectField name="select1" label="Select 1" options={['Värde 1', 'Värde 2', 'Värde 3']} >
59
65
  <p class="help-block">Some helpful text</p>
@@ -61,7 +67,9 @@ Default slot after select field.
61
67
  ```
62
68
 
63
69
  ## Default value
70
+
64
71
  Use the value attribute to set a default value:
72
+
65
73
  ```svelte
66
74
  <SelectField name="select1" label="Select 1" options={['Värde 1', 'Värde 2', 'Värde 3']} value="Värde 1" />
67
75
  ```
@@ -44,6 +44,13 @@
44
44
  });
45
45
  </script>
46
46
 
47
+ <!--
48
+ @component
49
+ Wrapper for Sitevision [tag selector](https://developer.sitevision.se/docs/webapps/configuration#h-SiteVisioncomponents).
50
+
51
+ [README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/TagSelector/)
52
+ -->
53
+
47
54
  <div class="form-group {className}">
48
55
  <label for={id} class="control-label {required ? 'control-label--required' : ''}">{label}</label>
49
56
  <input
@@ -1,7 +1,8 @@
1
1
  # TagSelector
2
2
 
3
- Wrapper for tag selector.
4
- <https://developer.sitevision.se/docs/webapps/configuration#h-SiteVisioncomponents>
3
+ Wrapper for Sitevision [tag selector](https://developer.sitevision.se/docs/webapps/configuration#h-SiteVisioncomponents).
4
+
5
+ ![TagSelector](../../images/TagSelector.png)
5
6
 
6
7
  <!-- TOC -->
7
8
 
@@ -29,7 +30,7 @@ export let value = [];
29
30
 
30
31
  ```svelte
31
32
  <script>
32
- import { Panel, TagSelector } from '@soleil-se/svelte-config';
33
+ import { Panel, TagSelector } from '@soleil-se/svelte-config';
33
34
  </script>
34
35
 
35
36
  <Panel heading="Inställningar">
@@ -43,15 +44,15 @@ Name prop is required here as well since Sitevision uses this to initialize the
43
44
 
44
45
  ```svelte
45
46
  <script>
46
- import { Panel, TagSelector } from '@soleil-se/svelte-config';
47
- import { onSave } from '@soleil-se/svelte-config/utils';
47
+ import { Panel, TagSelector } from '@soleil-se/svelte-config';
48
+ import { onSave } from '@soleil-se/svelte-config/utils';
48
49
 
49
- const values = {
50
- tags: [],
51
- ...window.CONFIG_VALUES
52
- };
50
+ const values = {
51
+ tags: [],
52
+ ...window.CONFIG_VALUES
53
+ };
53
54
 
54
- onSave(() => values);
55
+ onSave(() => values);
55
56
 
56
57
  </script>
57
58
 
@@ -2,6 +2,8 @@
2
2
  import { createEventDispatcher } from 'svelte';
3
3
  import { generateId } from '../../utils';
4
4
  import { resizer } from '../../actions';
5
+ import i18n from './i18n';
6
+
5
7
  import Sortable from './internal/Sortable.svelte';
6
8
  import Item from './internal/Item.svelte';
7
9
  import DataHolder from './internal/DataHolder.svelte';
@@ -66,6 +68,13 @@
66
68
  };
67
69
  </script>
68
70
 
71
+ <!--
72
+ @component
73
+ Custom list component for adding multiple text values and sorting them.
74
+
75
+ [README](https://docs.soleilit.se/03.packages/@soleil&svelte-config/components/TextList/)
76
+ -->
77
+
69
78
  <div class="form-group">
70
79
  <label for={id} class="control-label {required ? 'control-label--required' : ''}">{label}</label>
71
80
  <div class="list-component">
@@ -87,7 +96,7 @@
87
96
  on:click={addItem}
88
97
  >
89
98
  <i class="glyphicons plus" aria-hidden="true" />
90
- Lägg till...
99
+ {i18n('add')}
91
100
  </button>
92
101
  </div>
93
102
  {#if disabled}
@@ -110,5 +119,4 @@
110
119
  background-color: rgba(255, 255, 255, 0.3);
111
120
  cursor: not-allowed;
112
121
  }
113
-
114
122
  </style>
@@ -1,6 +1,11 @@
1
1
  # TextList
2
2
 
3
+ Custom list component for adding multiple text values and sorting them.
4
+
5
+ ![TextList](../../images/TextList.png)
6
+
3
7
  ## Props
8
+
4
9
  ```javascript
5
10
  export let id = generateId();
6
11
  export let label;
@@ -11,7 +16,9 @@ export let value = [];
11
16
  ```
12
17
 
13
18
  ## Default value
19
+
14
20
  Use the value attribute to set a default value:
21
+
15
22
  ```svelte
16
23
  <TextList
17
24
  name="textList"
@@ -23,6 +30,7 @@ Use the value attribute to set a default value:
23
30
  ## Example
24
31
 
25
32
  ### Standard
33
+
26
34
  ```svelte
27
35
  <script>
28
36
  import { Panel, TextList } from '@soleil-se/svelte-config';
@@ -35,6 +43,7 @@ import { Panel, TextList } from '@soleil-se/svelte-config';
35
43
  />
36
44
  </Panel>
37
45
  ```
46
+
38
47
  ### Advanced
39
48
 
40
49
  ```svelte
@@ -0,0 +1,13 @@
1
+ import createI18n from '../../utils/createI18n';
2
+
3
+ export default createI18n({
4
+ sv: {
5
+ add: 'Lägg till...',
6
+ },
7
+ no: {
8
+ add: 'Legg till...',
9
+ },
10
+ en: {
11
+ add: 'Add...',
12
+ },
13
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soleil-se/config-svelte",
3
- "version": "1.5.2",
3
+ "version": "1.7.0",
4
4
  "main": "./index.js",
5
5
  "module": "./index.js",
6
6
  "svelte": "./index.js",
@@ -0,0 +1,29 @@
1
+ const locale = document.documentElement.lang || 'en';
2
+
3
+ /* https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_get */
4
+ const get = (obj, path, defaultValue = undefined) => {
5
+ const travel = (regexp) => String.prototype.split
6
+ .call(path, regexp)
7
+ .filter(Boolean)
8
+ .reduce((res, key) => (res !== null && res !== undefined ? res[key] : res), obj);
9
+ const result = travel(/[,[\]]+?/) || travel(/[,[\].]+?/);
10
+ return result === undefined || result === obj ? defaultValue : result;
11
+ };
12
+
13
+ export default function createI18n(messages) {
14
+ return (path, values = {}) => {
15
+ let message = get(messages[locale], path);
16
+ if (message == null) {
17
+ console.warn(`[@soleil-se/svelte-config/utils/i18n] No translation avaliable for ${path}`);
18
+ return path;
19
+ }
20
+
21
+ Object.keys(values).forEach((key) => {
22
+ const value = values[key];
23
+ const regex = new RegExp(`{${key}}`, 'g');
24
+ message = message.replace(regex, value);
25
+ });
26
+
27
+ return message;
28
+ };
29
+ }
package/utils/index.js CHANGED
@@ -4,3 +4,4 @@ export { default as setupComponent } from './setupComponent';
4
4
  export { default as addPrefix } from './addPrefix';
5
5
  export { default as pluckPrefix } from './pluckPrefix';
6
6
  export { default as triggerInput } from './triggerInput';
7
+ export { default as createI18n } from './createI18n';