Skip to content

Commit daca0ac

Browse files
committed
feat: add array syntax
resolve #9
1 parent d72b79d commit daca0ac

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

example/src/App.svelte

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
<script lang="ts">
22
import style from 'svelte-inline-css';
3+
4+
const fontSize = 30;
5+
const styleObject = {
6+
color: 'red',
7+
fontSize: '13px',
8+
};
9+
const baseStyles = styleObject;
10+
const overridingStyles = {
11+
color: 'blue',
12+
};
313
</script>
414

5-
<div use:style={{ color: 'red', backgroundColor: 'pink' }}>example</div>
15+
<!-- https://v3.vuejs.org/guide/class-and-style.html#object-syntax-2 -->
16+
<div use:style={{ color: 'red', fontSize: fontSize + 'px' }}>Object Syntax</div>
17+
18+
<div use:style={styleObject}>Object directly</div>
19+
20+
<!-- https://v3.vuejs.org/guide/class-and-style.html#array-syntax-2 -->
21+
<div use:style={[baseStyles, overridingStyles]}>Array Syntax</div>

src/index.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
import type { Properties } from 'csstype';
22

3-
type Parameters = Properties<string | number>;
3+
type properties = Properties<string | number>;
4+
type Parameters = properties | properties[];
45

56
const style = (node: HTMLElement, parameters: Parameters) => {
67
const setStyle = (parameters: Parameters) => {
7-
Object.entries(parameters).forEach(([key, value]) => {
8+
let properties: properties = {};
9+
if (Array.isArray(parameters)) {
10+
parameters.forEach((value) => {
11+
properties = { ...properties, ...value };
12+
});
13+
} else {
14+
properties = parameters;
15+
}
16+
17+
Object.entries(properties).forEach(([key, value]) => {
818
key = key.replace(/[A-Z]/, (substring) => '-' + substring.toLowerCase());
919

1020
node.style.setProperty(key, value);

0 commit comments

Comments
 (0)