@scalable.software/pin 0.2.0 → 0.2.1
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/LICENSE +144 -144
- package/README.md +365 -365
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/{Pin.d.ts → pin.d.ts} +8 -13
- package/dist/{Pin.js → pin.js} +16 -23
- package/dist/{Pin.meta.d.ts → pin.meta.d.ts} +8 -13
- package/dist/{Pin.meta.js → pin.meta.js} +2 -2
- package/{src/Pin.style.css → dist/pin.style.css} +126 -122
- package/dist/{Pin.template.html → pin.template.html} +26 -12
- package/package.json +55 -56
- package/report/{Pin.report.json → pin.report.json} +668 -644
- package/src/index.ts +14 -0
- package/src/{Pin.meta.ts → pin.meta.ts} +108 -114
- package/{dist/Pin.style.css → src/pin.style.css} +126 -122
- package/src/{Pin.template.html → pin.template.html} +26 -12
- package/src/{Pin.ts → pin.ts} +318 -329
- package/dist/Index.d.ts +0 -4
- package/dist/Index.js +0 -2
- package/src/Index.ts +0 -25
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* @module Component
|
|
3
3
|
*/
|
|
4
4
|
import { Component, Template } from "@scalable.software/component";
|
|
5
|
-
import { type Configuration } from "@scalable.software/component";
|
|
6
|
-
import {
|
|
5
|
+
import { type Configuration, type Handler } from "@scalable.software/component";
|
|
6
|
+
import { Attributes, Visible, Status } from "./pin.meta.js";
|
|
7
7
|
/**
|
|
8
8
|
* Configuration required for components with custom layout and style
|
|
9
9
|
* @category Configuration
|
|
@@ -26,14 +26,9 @@ export declare class Pin extends Component {
|
|
|
26
26
|
* @category Configuration
|
|
27
27
|
*/
|
|
28
28
|
static get Attributes(): Attributes;
|
|
29
|
-
/**
|
|
30
|
-
* Wait for the component to be defined before returning a collection of the component in the DOM
|
|
31
|
-
* @category Utilities
|
|
32
|
-
*/
|
|
33
|
-
static get: () => Promise<Pin[]>;
|
|
34
29
|
/**
|
|
35
30
|
* Helper function to load the component template into DOM
|
|
36
|
-
* @category
|
|
31
|
+
* @category Utility
|
|
37
32
|
*/
|
|
38
33
|
static Template: Template;
|
|
39
34
|
/**
|
|
@@ -93,14 +88,14 @@ export declare class Pin extends Component {
|
|
|
93
88
|
* Get and Sets the visibility of the pin button
|
|
94
89
|
* @category State
|
|
95
90
|
*/
|
|
96
|
-
get visible():
|
|
97
|
-
set visible(visible:
|
|
91
|
+
get visible(): Visible;
|
|
92
|
+
set visible(visible: Visible);
|
|
98
93
|
/**
|
|
99
94
|
* Get and Sets the status of the pin button
|
|
100
95
|
* @category State
|
|
101
96
|
*/
|
|
102
|
-
get status():
|
|
103
|
-
set status(status:
|
|
97
|
+
get status(): Status;
|
|
98
|
+
set status(status: Status);
|
|
104
99
|
/**
|
|
105
100
|
* Triggered on any event
|
|
106
101
|
* @event
|
|
@@ -176,7 +171,7 @@ export declare class Pin extends Component {
|
|
|
176
171
|
* @category Configuration
|
|
177
172
|
* @hidden
|
|
178
173
|
*/
|
|
179
|
-
protected
|
|
174
|
+
protected _cache: () => HTMLDivElement;
|
|
180
175
|
/**
|
|
181
176
|
* Called by the connectedCallback prototypical method
|
|
182
177
|
* @category Configuration
|
package/dist/{Pin.js → pin.js}
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module Component
|
|
3
3
|
*/
|
|
4
4
|
import { Component, Template } from "@scalable.software/component";
|
|
5
|
-
import { Tag,
|
|
5
|
+
import { Tag, Attributes, Visible, Status, Event, Gesture, } from "./pin.meta.js";
|
|
6
6
|
/**
|
|
7
7
|
* Configuration required for components with custom layout and style
|
|
8
8
|
* @category Configuration
|
|
@@ -13,7 +13,7 @@ export const configuration = {
|
|
|
13
13
|
id: Tag,
|
|
14
14
|
},
|
|
15
15
|
css: {
|
|
16
|
-
name: "
|
|
16
|
+
name: "pin.style.css",
|
|
17
17
|
},
|
|
18
18
|
};
|
|
19
19
|
/**
|
|
@@ -35,17 +35,11 @@ export class Pin extends Component {
|
|
|
35
35
|
* @category Configuration
|
|
36
36
|
*/
|
|
37
37
|
static get Attributes() {
|
|
38
|
-
return
|
|
38
|
+
return Attributes;
|
|
39
39
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Wait for the component to be defined before returning a collection of the component in the DOM
|
|
42
|
-
* @category Utilities
|
|
43
|
-
*/
|
|
44
|
-
static get = async () => (await customElements.whenDefined(Pin.Tag)) &&
|
|
45
|
-
Array.from(document.querySelectorAll(Pin.Tag));
|
|
46
40
|
/**
|
|
47
41
|
* Helper function to load the component template into DOM
|
|
48
|
-
* @category
|
|
42
|
+
* @category Utility
|
|
49
43
|
*/
|
|
50
44
|
static Template = new Template(import.meta.url);
|
|
51
45
|
/**
|
|
@@ -106,16 +100,16 @@ export class Pin extends Component {
|
|
|
106
100
|
* @category State
|
|
107
101
|
*/
|
|
108
102
|
get visible() {
|
|
109
|
-
return this.hasAttribute(
|
|
110
|
-
? this.getAttribute(
|
|
103
|
+
return this.hasAttribute(Attributes.VISIBLE)
|
|
104
|
+
? this.getAttribute(Attributes.VISIBLE)
|
|
111
105
|
: this._visible;
|
|
112
106
|
}
|
|
113
107
|
set visible(visible) {
|
|
114
108
|
visible = visible || Visible.YES;
|
|
115
109
|
if (this._visible !== visible) {
|
|
116
110
|
this._visible = visible;
|
|
117
|
-
visible == Visible.YES && this.removeAttribute(
|
|
118
|
-
visible == Visible.NO && this.setAttribute(
|
|
111
|
+
visible == Visible.YES && this.removeAttribute(Attributes.VISIBLE);
|
|
112
|
+
visible == Visible.NO && this.setAttribute(Attributes.VISIBLE, visible);
|
|
119
113
|
visible == Visible.NO &&
|
|
120
114
|
this._dispatchEvent(Event.ON_HIDE, { detail: { visible } });
|
|
121
115
|
visible == Visible.YES &&
|
|
@@ -127,14 +121,14 @@ export class Pin extends Component {
|
|
|
127
121
|
* @category State
|
|
128
122
|
*/
|
|
129
123
|
get status() {
|
|
130
|
-
return this.hasAttribute(
|
|
131
|
-
? this.getAttribute(
|
|
124
|
+
return this.hasAttribute(Attributes.STATUS)
|
|
125
|
+
? this.getAttribute(Attributes.STATUS)
|
|
132
126
|
: this._status;
|
|
133
127
|
}
|
|
134
128
|
set status(status) {
|
|
135
129
|
if (this._status !== status) {
|
|
136
130
|
this._status = status;
|
|
137
|
-
this.setAttribute(
|
|
131
|
+
this.setAttribute(Attributes.STATUS, status);
|
|
138
132
|
status == Status.PINNED &&
|
|
139
133
|
this._dispatchEvent(Event.ON_PIN, { detail: { status } });
|
|
140
134
|
status == Status.UNPINNED &&
|
|
@@ -147,8 +141,7 @@ export class Pin extends Component {
|
|
|
147
141
|
* @category Events
|
|
148
142
|
*/
|
|
149
143
|
set on(handler) {
|
|
150
|
-
Object
|
|
151
|
-
.values(Event)
|
|
144
|
+
Object.values(Event)
|
|
152
145
|
.filter((event) => event !== Event.ON)
|
|
153
146
|
.forEach((event) => {
|
|
154
147
|
this._on && this.removeEventListener(event, this._on);
|
|
@@ -228,8 +221,8 @@ export class Pin extends Component {
|
|
|
228
221
|
* @hidden
|
|
229
222
|
*/
|
|
230
223
|
_attributeHandlers = {
|
|
231
|
-
[
|
|
232
|
-
[
|
|
224
|
+
[Attributes.VISIBLE]: (value) => (this.visible = value),
|
|
225
|
+
[Attributes.STATUS]: (value) => (this.status = value),
|
|
233
226
|
};
|
|
234
227
|
/**
|
|
235
228
|
* Initialize component attributes with default values
|
|
@@ -242,7 +235,7 @@ export class Pin extends Component {
|
|
|
242
235
|
* @category Configuration
|
|
243
236
|
* @hidden
|
|
244
237
|
*/
|
|
245
|
-
|
|
238
|
+
_cache = () => this._cacheIcon();
|
|
246
239
|
/**
|
|
247
240
|
* Called by the connectedCallback prototypical method
|
|
248
241
|
* @category Configuration
|
|
@@ -260,7 +253,7 @@ export class Pin extends Component {
|
|
|
260
253
|
* @category State
|
|
261
254
|
* @hidden
|
|
262
255
|
*/
|
|
263
|
-
_initializeState = () => this.setAttribute(
|
|
256
|
+
_initializeState = () => this.setAttribute(Attributes.STATUS, this._status);
|
|
264
257
|
/**
|
|
265
258
|
* Cache icon element reference to improve performance
|
|
266
259
|
* @category State
|
|
@@ -7,7 +7,7 @@ export declare const Tag: "pin-button";
|
|
|
7
7
|
* @category Metadata: State
|
|
8
8
|
* @enum
|
|
9
9
|
*/
|
|
10
|
-
export declare const
|
|
10
|
+
export declare const Attributes: {
|
|
11
11
|
readonly VISIBLE: "visible";
|
|
12
12
|
readonly STATUS: "status";
|
|
13
13
|
};
|
|
@@ -15,7 +15,7 @@ export declare const Attribute: {
|
|
|
15
15
|
* HTML Attributes available to set
|
|
16
16
|
* @category Metadata: State
|
|
17
17
|
*/
|
|
18
|
-
export type Attributes = typeof
|
|
18
|
+
export type Attributes = typeof Attributes;
|
|
19
19
|
/**
|
|
20
20
|
* HTML Attributes available to set
|
|
21
21
|
* @category Metadata: State
|
|
@@ -29,7 +29,7 @@ export declare const State: {
|
|
|
29
29
|
* HTML Attributes available to set
|
|
30
30
|
* @category Metadata: State
|
|
31
31
|
*/
|
|
32
|
-
export type
|
|
32
|
+
export type State = (typeof State)[keyof typeof State];
|
|
33
33
|
/**
|
|
34
34
|
* Visible state used to show or hide the component
|
|
35
35
|
* @category Metadata: State
|
|
@@ -43,7 +43,7 @@ export declare const Visible: {
|
|
|
43
43
|
* Visible state used to show or hide the component
|
|
44
44
|
* @category Metadata: State
|
|
45
45
|
*/
|
|
46
|
-
export type
|
|
46
|
+
export type Visible = (typeof Visible)[keyof typeof Visible];
|
|
47
47
|
/**
|
|
48
48
|
* @category Metadata: State
|
|
49
49
|
* @enum
|
|
@@ -55,7 +55,7 @@ export declare const Status: {
|
|
|
55
55
|
/**
|
|
56
56
|
* @category Metadata: State
|
|
57
57
|
*/
|
|
58
|
-
export type
|
|
58
|
+
export type Status = (typeof Status)[keyof typeof Status];
|
|
59
59
|
/**
|
|
60
60
|
* @category Metadata: Operations
|
|
61
61
|
* @enum
|
|
@@ -70,7 +70,7 @@ export declare const Operation: {
|
|
|
70
70
|
/**
|
|
71
71
|
* @category Metadata: Operations
|
|
72
72
|
*/
|
|
73
|
-
export type
|
|
73
|
+
export type Operation = (typeof Operation)[keyof typeof Operation];
|
|
74
74
|
/**
|
|
75
75
|
* @category Metadata: Events
|
|
76
76
|
* @enum
|
|
@@ -85,7 +85,7 @@ export declare const Event: {
|
|
|
85
85
|
/**
|
|
86
86
|
* @category Metadata: Events
|
|
87
87
|
*/
|
|
88
|
-
export type
|
|
88
|
+
export type Event = (typeof Event)[keyof typeof Event];
|
|
89
89
|
/**
|
|
90
90
|
* @category Metadata: Gesture
|
|
91
91
|
* @enum
|
|
@@ -96,9 +96,4 @@ export declare const Gesture: {
|
|
|
96
96
|
/**
|
|
97
97
|
* @category Metadata: Gesture
|
|
98
98
|
*/
|
|
99
|
-
export type
|
|
100
|
-
/**
|
|
101
|
-
* Event handler signature
|
|
102
|
-
* @hidden
|
|
103
|
-
*/
|
|
104
|
-
export type Handler = (...args: any[]) => void;
|
|
99
|
+
export type Gesture = (typeof Gesture)[keyof typeof Gesture];
|
|
@@ -7,7 +7,7 @@ export const Tag = "pin-button";
|
|
|
7
7
|
* @category Metadata: State
|
|
8
8
|
* @enum
|
|
9
9
|
*/
|
|
10
|
-
export const
|
|
10
|
+
export const Attributes = {
|
|
11
11
|
VISIBLE: "visible",
|
|
12
12
|
STATUS: "status",
|
|
13
13
|
};
|
|
@@ -17,7 +17,7 @@ export const Attribute = {
|
|
|
17
17
|
* @enum
|
|
18
18
|
*/
|
|
19
19
|
export const State = {
|
|
20
|
-
...
|
|
20
|
+
...Attributes,
|
|
21
21
|
};
|
|
22
22
|
/**
|
|
23
23
|
* Visible state used to show or hide the component
|
|
@@ -1,122 +1,126 @@
|
|
|
1
|
-
/* =======================
|
|
2
|
-
Host Element Styles
|
|
3
|
-
======================= */
|
|
4
|
-
:host {
|
|
5
|
-
/* Light mode color variables */
|
|
6
|
-
--button-background-color: #ffffff;
|
|
7
|
-
--button-hover-background-color: #f3f3f3;
|
|
8
|
-
--button-active-background-color: #e1e1e1;
|
|
9
|
-
--button-border-color: #d1d1d1;
|
|
10
|
-
--button-border-hover-color: #a1a1a1;
|
|
11
|
-
--
|
|
12
|
-
--svg-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
--button-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
--icon-
|
|
19
|
-
--
|
|
20
|
-
--svg-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
--button-
|
|
29
|
-
--button-
|
|
30
|
-
--button-
|
|
31
|
-
--button-border-
|
|
32
|
-
--
|
|
33
|
-
--
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
background-color
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
:host([status="pinned"]) .
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
1
|
+
/* =======================
|
|
2
|
+
Host Element Styles
|
|
3
|
+
======================= */
|
|
4
|
+
:host {
|
|
5
|
+
/* Light mode color variables */
|
|
6
|
+
--button-background-color: #ffffff;
|
|
7
|
+
--button-hover-background-color: #f3f3f3;
|
|
8
|
+
--button-active-background-color: #e1e1e1;
|
|
9
|
+
--button-border-color: #d1d1d1;
|
|
10
|
+
--button-border-hover-color: #a1a1a1;
|
|
11
|
+
--button-shadow-hover: 0 2px 6px rgba(0, 0, 0, 0.15);
|
|
12
|
+
--svg-fill-color: #5a5a5a;
|
|
13
|
+
--svg-hover-fill-color: #404040;
|
|
14
|
+
/* Shadow and radius */
|
|
15
|
+
--button-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
|
|
16
|
+
--button-radius: 8px;
|
|
17
|
+
/* Sizes and margins */
|
|
18
|
+
--icon-size: 40px;
|
|
19
|
+
--icon-margin: 4px;
|
|
20
|
+
--svg-size: 24px;
|
|
21
|
+
--svg-margin: 8px;
|
|
22
|
+
display: inline-block;
|
|
23
|
+
}
|
|
24
|
+
/* Dark Mode Variables */
|
|
25
|
+
@media (prefers-color-scheme: dark) {
|
|
26
|
+
:host {
|
|
27
|
+
/* Dark mode color variables */
|
|
28
|
+
--button-background-color: #1e1e1e;
|
|
29
|
+
--button-hover-background-color: #2a2a2a;
|
|
30
|
+
--button-active-background-color: #333333;
|
|
31
|
+
--button-border-color: #3c3c3c;
|
|
32
|
+
--button-border-hover-color: #4a4a4a;
|
|
33
|
+
--button-shadow: 0 1px 3px rgba(255, 255, 255, 0.12),
|
|
34
|
+
0 3px 8px rgba(0, 0, 0, 0.6);
|
|
35
|
+
--button-shadow-hover: 0 2px 6px rgba(255, 255, 255, 0.16),
|
|
36
|
+
0 6px 12px rgba(0, 0, 0, 0.6);
|
|
37
|
+
--svg-fill-color: #cfcfcf;
|
|
38
|
+
--svg-hover-fill-color: #ffffff;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/* =======================
|
|
42
|
+
Icon Styles
|
|
43
|
+
======================= */
|
|
44
|
+
.icon {
|
|
45
|
+
position: relative;
|
|
46
|
+
margin: var(--icon-margin);
|
|
47
|
+
display: inline-flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
justify-content: center;
|
|
50
|
+
width: var(--icon-size);
|
|
51
|
+
height: var(--icon-size);
|
|
52
|
+
background-color: var(--button-background-color);
|
|
53
|
+
border: 1px solid var(--button-border-color);
|
|
54
|
+
border-radius: var(--button-radius);
|
|
55
|
+
box-shadow: var(--button-shadow);
|
|
56
|
+
cursor: pointer;
|
|
57
|
+
transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s;
|
|
58
|
+
}
|
|
59
|
+
/* Active state styles for the icon (when clicked or tapped) */
|
|
60
|
+
.icon:active {
|
|
61
|
+
background-color: var(--button-active-background-color);
|
|
62
|
+
border-color: var(--button-border-hover-color);
|
|
63
|
+
box-shadow: none;
|
|
64
|
+
}
|
|
65
|
+
/* =======================
|
|
66
|
+
Icon Hover Styles
|
|
67
|
+
======================= */
|
|
68
|
+
@media (hover: hover) {
|
|
69
|
+
.icon:hover {
|
|
70
|
+
background-color: var(--button-hover-background-color);
|
|
71
|
+
border-color: var(--button-border-hover-color);
|
|
72
|
+
box-shadow: var(--button-shadow-hover);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/* =======================
|
|
76
|
+
SVG Icon Styles
|
|
77
|
+
======================= */
|
|
78
|
+
svg {
|
|
79
|
+
margin: var(--svg-margin);
|
|
80
|
+
width: var(--svg-size);
|
|
81
|
+
height: var(--svg-size);
|
|
82
|
+
fill: var(--svg-fill-color);
|
|
83
|
+
transition: fill 0.2s, opacity 0.2s;
|
|
84
|
+
}
|
|
85
|
+
/* Hover effect for the SVG icons */
|
|
86
|
+
@media (hover: hover) {
|
|
87
|
+
.icon:hover svg {
|
|
88
|
+
fill: var(--svg-hover-fill-color);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* =======================
|
|
93
|
+
State Visibility
|
|
94
|
+
======================= */
|
|
95
|
+
.pinned {
|
|
96
|
+
display: none;
|
|
97
|
+
}
|
|
98
|
+
.unpinned {
|
|
99
|
+
display: inline-block;
|
|
100
|
+
}
|
|
101
|
+
:host([visible="no"]) {
|
|
102
|
+
display: none;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* =======================
|
|
106
|
+
State: Pinned
|
|
107
|
+
======================= */
|
|
108
|
+
:host([status="pinned"]) .icon {
|
|
109
|
+
background-color: var(--button-active-background-color);
|
|
110
|
+
border-color: var(--button-border-hover-color);
|
|
111
|
+
}
|
|
112
|
+
:host([status="pinned"]) .pinned {
|
|
113
|
+
display: inline-block;
|
|
114
|
+
}
|
|
115
|
+
:host([status="pinned"]) .unpinned {
|
|
116
|
+
display: none;
|
|
117
|
+
}
|
|
118
|
+
/* =======================
|
|
119
|
+
State: Unpinned
|
|
120
|
+
======================= */
|
|
121
|
+
:host([status="unpinned"]) .pinned {
|
|
122
|
+
display: none;
|
|
123
|
+
}
|
|
124
|
+
:host([status="unpinned"]) .unpinned {
|
|
125
|
+
display: inline-block;
|
|
126
|
+
}
|
|
@@ -1,12 +1,26 @@
|
|
|
1
|
-
<template id="pin-button">
|
|
2
|
-
<div class="icon">
|
|
3
|
-
<svg
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
<template id="pin-button">
|
|
2
|
+
<div class="icon">
|
|
3
|
+
<svg
|
|
4
|
+
class="pinned"
|
|
5
|
+
height="24px"
|
|
6
|
+
width="24px"
|
|
7
|
+
viewBox="0 0 20 20"
|
|
8
|
+
fill="#212121"
|
|
9
|
+
>
|
|
10
|
+
<path
|
|
11
|
+
d="M2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.896 7.60309L4.01834 8.75415C3.35177 9.02078 3.17498 9.88209 3.68262 10.3897L6.29289 13L3 16.2929V17H3.70711L7 13.7071L9.61027 16.3174C10.1179 16.825 10.9792 16.6482 11.2459 15.9817L12.3969 13.104L17.1464 17.8536C17.3417 18.0488 17.6583 18.0488 17.8536 17.8536C18.0488 17.6583 18.0488 17.3417 17.8536 17.1464L2.85355 2.14645ZM11.6276 12.3347L10.3174 15.6103L4.38973 9.68263L7.66531 8.3724L11.6276 12.3347ZM12.9565 10.7127C12.9294 10.7263 12.9026 10.7403 12.8761 10.7548L13.6202 11.4989L16.8622 9.87793C18.0832 9.26743 18.3473 7.64015 17.382 6.67486L13.3251 2.61804C12.3599 1.65275 10.7326 1.91683 10.1221 3.13783L8.5011 6.37977L9.24523 7.1239C9.25971 7.09739 9.27373 7.07059 9.28728 7.04349L11.0165 3.58504C11.3218 2.97454 12.1354 2.8425 12.618 3.32514L16.6749 7.38197C17.1575 7.86461 17.0255 8.67826 16.415 8.98351L12.9565 10.7127Z"
|
|
12
|
+
/>
|
|
13
|
+
</svg>
|
|
14
|
+
<svg
|
|
15
|
+
class="unpinned"
|
|
16
|
+
height="24px"
|
|
17
|
+
width="24px"
|
|
18
|
+
viewBox="0 0 20 20"
|
|
19
|
+
fill="#212121"
|
|
20
|
+
>
|
|
21
|
+
<path
|
|
22
|
+
d="M10.1221 3.13782C10.7326 1.91683 12.3599 1.65275 13.3251 2.61804L17.382 6.67486C18.3472 7.64015 18.0832 9.26743 16.8622 9.87793L13.4037 11.6072C13.0751 11.7715 12.8183 12.0506 12.6818 12.3917L11.2459 15.9817C10.9792 16.6482 10.1179 16.825 9.61027 16.3174L7 13.7071L3.70711 17H3V16.2929L6.29289 13L3.68262 10.3897C3.17498 9.88209 3.35177 9.02078 4.01834 8.75415L7.60829 7.31817C7.94939 7.18173 8.22855 6.92486 8.39285 6.59628L10.1221 3.13782ZM12.618 3.32514C12.1354 2.8425 11.3217 2.97454 11.0165 3.58504L9.28727 7.04349C9.01345 7.59113 8.54818 8.01925 7.97968 8.24665L4.38973 9.68263L10.3174 15.6103L11.7534 12.0203C11.9808 11.4518 12.4089 10.9866 12.9565 10.7127L16.415 8.9835C17.0255 8.67826 17.1575 7.86461 16.6749 7.38197L12.618 3.32514Z"
|
|
23
|
+
/>
|
|
24
|
+
</svg>
|
|
25
|
+
</div>
|
|
26
|
+
</template>
|