This repository has been archived by the owner on Jul 9, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
lrn-aside.html
145 lines (142 loc) · 3.67 KB
/
lrn-aside.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="../lrndesign-panelcard/lrndesign-panelcard.html">
<link rel="import" href="../hax-body-behaviors/hax-body-behaviors.html">
<!--
`lrn-aside`
an aside as a panel
@demo demo/index.html
-->
<dom-module id="lrn-aside">
<template>
<style>
:host {
display: flex;
padding: 8px;
}
:host[sticky] {
top:0;
position: sticky;
}
:host[direction='left'] {
float: left;
max-width: 30em;
}
:host[direction='right'] {
float: right;
max-width: 30em;
}
</style>
<aside>
<lrndesign-panelcard title="[[title]]">
<slot></slot>
</lrndesign-panelcard>
</aside>
</template>
<script>
Polymer({
is: 'lrn-aside',
behaviors: [
HAXBehaviors.PropertiesBehaviors,
],
properties: {
/**
* Title for the aside.
*/
title: {
type: String,
value: 'Related content',
},
/**
* Apply CSS sticky styling
*/
sticky: {
type: Boolean,
value: false,
reflectToAttribute: true,
},
/**
* Direction to hang off UI if sticky, left or right.
*/
direction: {
type: String,
value: '',
reflectToAttribute: true,
}
},
/**
* Attached to the DOM, now fire.
*/
attached: function () {
// Establish hax property binding
let props = {
'canScale': true,
'canPosition': true,
'canEditSource': false,
'gizmo': {
'title': 'Sticky note',
'description': 'A sticky note to present some basic info offset on the page.',
'icon': 'av:note',
'color': 'yellow',
'groups': ['Content'],
'handles': [
{
'type': 'text',
'title': 'title',
}
],
'meta': {
'author': 'LRNWebComponents'
}
},
'settings': {
'quick': [
{
'property': 'title',
'title': 'Title',
'description': 'Enter title for sticky note',
'inputMethod': 'textfield',
'required': true,
},
],
'configure': [
{
'property': 'title',
'title': 'Title',
'description': 'Enter title for sticky note.',
'inputMethod': 'textfield',
'required': true,
},
{
'slot': '',
'title': 'Content',
'description': 'Content of the sticky note',
'inputMethod': 'code-editor',
'required': true,
},
{
'property': 'sticky',
'title': 'Stick to page on scroll',
'description': 'Appear sticky when the user scrolls past it',
'inputMethod': 'boolean',
},
{
'property': 'direction',
'title': 'Direction to hang',
'description': 'Location of the sticky note to hang',
'inputMethod': 'select',
'options': {
'': 'none',
'right': 'Right',
'left': 'Left',
},
},
],
'advanced': [
]
}
};
this.setHaxProperties(props);
},
});
</script>
</dom-module>