svelte-common 4.19.20 → 4.21.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/README.md +14 -0
- package/package.json +6 -6
- package/src/components/Tab.svelte +1 -2
- package/src/components/Tabs.svelte +6 -4
- package/src/filter.mjs +4 -2
- package/src/sorting.mjs +5 -4
- package/src/util.mjs +60 -0
package/README.md
CHANGED
|
@@ -38,6 +38,8 @@ or the [live example](https://arlac77.github.io/components/svelte-common/example
|
|
|
38
38
|
* [Parameters](#parameters-4)
|
|
39
39
|
* [keyPrefixStore](#keyprefixstore)
|
|
40
40
|
* [Parameters](#parameters-5)
|
|
41
|
+
* [getAttribute](#getattribute)
|
|
42
|
+
* [Parameters](#parameters-6)
|
|
41
43
|
|
|
42
44
|
## filter
|
|
43
45
|
|
|
@@ -108,6 +110,18 @@ Create a derived store where all the object keys are prefixed.
|
|
|
108
110
|
|
|
109
111
|
Returns **WriteableStore** 
|
|
110
112
|
|
|
113
|
+
## getAttribute
|
|
114
|
+
|
|
115
|
+
Deliver attribute value.
|
|
116
|
+
The name may be a property path like 'a.b.c'.
|
|
117
|
+
|
|
118
|
+
### Parameters
|
|
119
|
+
|
|
120
|
+
* `object` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
|
|
121
|
+
* `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
|
|
122
|
+
|
|
123
|
+
Returns **any** value associated with the given property name
|
|
124
|
+
|
|
111
125
|
# install
|
|
112
126
|
|
|
113
127
|
With [npm](http://npmjs.org) do:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svelte-common",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.21.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -39,17 +39,17 @@
|
|
|
39
39
|
"@semantic-release/commit-analyzer": "^9.0.2",
|
|
40
40
|
"@semantic-release/exec": "^6.0.3",
|
|
41
41
|
"@semantic-release/release-notes-generator": "^10.0.3",
|
|
42
|
-
"@sveltejs/vite-plugin-svelte": "^1.
|
|
42
|
+
"@sveltejs/vite-plugin-svelte": "^1.4.0",
|
|
43
43
|
"ava": "^5.1.0",
|
|
44
44
|
"documentation": "^14.0.0",
|
|
45
45
|
"mf-styling": "^1.7.27",
|
|
46
|
-
"npm-pkgbuild": "^10.15.
|
|
46
|
+
"npm-pkgbuild": "^10.15.18",
|
|
47
47
|
"semantic-release": "^19.0.5",
|
|
48
|
-
"stylelint": "^14.
|
|
48
|
+
"stylelint": "^14.16.0",
|
|
49
49
|
"stylelint-config-standard": "^29.0.0",
|
|
50
|
-
"svelte": "^3.
|
|
50
|
+
"svelte": "^3.54.0",
|
|
51
51
|
"testcafe": "^2.1.0",
|
|
52
|
-
"vite": "^3.2.
|
|
52
|
+
"vite": "^3.2.5"
|
|
53
53
|
},
|
|
54
54
|
"optionalDependencies": {
|
|
55
55
|
"mf-hosting": "^1.7.9"
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { setContext } from "svelte";
|
|
3
3
|
|
|
4
|
-
const tabs = { tab: {} };
|
|
4
|
+
const tabs = { current: "t5", tab: {} };
|
|
5
5
|
|
|
6
6
|
setContext("TABS", tabs);
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
9
|
<slot />
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
<!---
|
|
12
|
+
{#each Object.entries(tabs.tab) as tab}
|
|
13
|
+
{JSON.stringify(tab)}
|
|
14
|
+
<svelte:component this={tab[1].header} />
|
|
14
15
|
{/each}
|
|
16
|
+
-->
|
package/src/filter.mjs
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { getAttribute } from "./util.mjs";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Generate filter function
|
|
3
5
|
* @param {Object} filterBy
|
|
@@ -7,9 +9,9 @@
|
|
|
7
9
|
export function filter(filterBy, getters = {}) {
|
|
8
10
|
if (filterBy) {
|
|
9
11
|
const filters = Object.entries(filterBy).map(([key, value]) => {
|
|
10
|
-
const getter = getters[key] ||
|
|
12
|
+
const getter = getters[key] || getAttribute;
|
|
11
13
|
return a => {
|
|
12
|
-
const av = getter(a);
|
|
14
|
+
const av = getter(a, key);
|
|
13
15
|
|
|
14
16
|
if (value instanceof RegExp) {
|
|
15
17
|
return value.test(av);
|
package/src/sorting.mjs
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { getAttribute } from "./util.mjs";
|
|
2
|
+
|
|
1
3
|
export const SORT_NONE = "none";
|
|
2
4
|
export const SORT_ASCENDING = "ascending";
|
|
3
5
|
export const SORT_DESCENDING = "descending";
|
|
@@ -81,7 +83,7 @@ export function sortable(th, store) {
|
|
|
81
83
|
export function sorter(sortBy, getters = {}) {
|
|
82
84
|
if (sortBy) {
|
|
83
85
|
for (const [key, value] of Object.entries(sortBy)) {
|
|
84
|
-
const getter = getters[key] ||
|
|
86
|
+
const getter = getters[key] || getAttribute;
|
|
85
87
|
|
|
86
88
|
let rev = 1;
|
|
87
89
|
|
|
@@ -90,10 +92,9 @@ export function sorter(sortBy, getters = {}) {
|
|
|
90
92
|
rev = -1;
|
|
91
93
|
|
|
92
94
|
case SORT_ASCENDING:
|
|
93
|
-
|
|
94
95
|
return (a, b) => {
|
|
95
|
-
let av = getter(a);
|
|
96
|
-
let bv = getter(b);
|
|
96
|
+
let av = getter(a, key);
|
|
97
|
+
let bv = getter(b, key);
|
|
97
98
|
|
|
98
99
|
if (av === undefined) {
|
|
99
100
|
return bv === undefined ? 0 : -rev;
|
package/src/util.mjs
CHANGED
|
@@ -164,3 +164,63 @@ export function keyPrefixStore(store, prefix) {
|
|
|
164
164
|
}
|
|
165
165
|
};
|
|
166
166
|
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Split property path into tokens
|
|
170
|
+
* @param {string} string
|
|
171
|
+
* @return {Iterator<string>}
|
|
172
|
+
*/
|
|
173
|
+
function* tokens(string) {
|
|
174
|
+
let identifier = "";
|
|
175
|
+
|
|
176
|
+
for (const c of string) {
|
|
177
|
+
switch (c) {
|
|
178
|
+
case ".":
|
|
179
|
+
case "[":
|
|
180
|
+
case "]":
|
|
181
|
+
if (identifier.length) {
|
|
182
|
+
yield identifier;
|
|
183
|
+
identifier = "";
|
|
184
|
+
}
|
|
185
|
+
yield c;
|
|
186
|
+
break;
|
|
187
|
+
default:
|
|
188
|
+
identifier += c;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
if (identifier.length) {
|
|
193
|
+
yield identifier;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Deliver attribute value.
|
|
199
|
+
* The name may be a property path like 'a.b.c'.
|
|
200
|
+
* @param {Object} object
|
|
201
|
+
* @param {string} name
|
|
202
|
+
* @returns {any} value associated with the given property name
|
|
203
|
+
*/
|
|
204
|
+
export function getAttribute(object, name) {
|
|
205
|
+
if (object && object[name] !== undefined) {
|
|
206
|
+
return object[name];
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
for (const token of tokens(name)) {
|
|
210
|
+
switch (token) {
|
|
211
|
+
case ".":
|
|
212
|
+
case "[":
|
|
213
|
+
case "]":
|
|
214
|
+
break;
|
|
215
|
+
|
|
216
|
+
default:
|
|
217
|
+
if (object === undefined) {
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
object = object[token];
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return object;
|
|
226
|
+
}
|