comand-component-library 3.3.75 → 3.3.76
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/dist/comand-component-library.js +4234 -3816
- package/dist/comand-component-library.umd.cjs +4 -4
- package/dist/style.css +1 -1
- package/package.json +2 -2
- package/src/App.vue +269 -211
- package/src/assets/data/image.json +1 -5
- package/src/assets/styles/global-styles.scss +198 -188
- package/src/components/CmdBackToTopButton.vue +1 -1
- package/src/components/CmdBox.vue +0 -2
- package/src/components/CmdFormElement.vue +3 -4
- package/src/components/CmdHeadline.vue +68 -35
- package/src/components/CmdImage.vue +355 -21
- package/src/components/CmdImageGallery.vue +132 -32
- package/src/components/CmdMainNavigation.vue +1 -2
- package/src/components/CmdPager.vue +8 -1
- package/src/components/CmdSlideButton.vue +1 -7
- package/src/components/CmdSocialNetworks.vue +1 -0
- package/src/components/CmdSystemMessage.vue +1 -10
- package/src/components/CmdTable.vue +3 -3
- package/src/components/CmdTextBlock.vue +36 -24
- package/src/editmode/editModeContext.js +50 -0
- package/src/main.js +8 -19
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<div :class="['cmd-headline', {'has-pre-headline-text': preHeadlineText, 'has-icon': headlineIcon?.iconClass}, getTextAlign]">
|
2
|
+
<div v-if="!editModeContext?.editing" :class="['cmd-headline', {'has-pre-headline-text': preHeadlineText, 'has-icon': headlineIcon?.iconClass}, getTextAlign]">
|
3
3
|
<!-- begin CmdIcon -->
|
4
4
|
<CmdIcon v-if="headlineIcon" :iconClass="headlineIcon?.iconClass" :type="headlineIcon?.iconType" />
|
5
5
|
<!-- end CmdIcon -->
|
@@ -18,11 +18,24 @@
|
|
18
18
|
<!-- end slot -->
|
19
19
|
</component>
|
20
20
|
</div>
|
21
|
+
<!-- begin edit-mode -->
|
22
|
+
<input v-else type="text" :class="['edit-mode', 'headline', 'h'+ headlineLevel]" v-model="editableHeadlineText" />
|
23
|
+
<!-- end edit-mode -->
|
21
24
|
</template>
|
22
25
|
|
23
26
|
<script>
|
24
27
|
export default {
|
25
28
|
name: "CmdHeadline",
|
29
|
+
inject: {
|
30
|
+
editModeContext: {
|
31
|
+
default: null
|
32
|
+
}
|
33
|
+
},
|
34
|
+
data() {
|
35
|
+
return {
|
36
|
+
editableHeadlineText: this.headlineText
|
37
|
+
}
|
38
|
+
},
|
26
39
|
props: {
|
27
40
|
/**
|
28
41
|
* text for headline
|
@@ -60,8 +73,14 @@ export default {
|
|
60
73
|
textAlign: {
|
61
74
|
type: String,
|
62
75
|
default: null
|
76
|
+
},
|
77
|
+
editModeContextData: {
|
78
|
+
type: Object
|
63
79
|
}
|
64
80
|
},
|
81
|
+
mounted() {
|
82
|
+
this.editModeContext?.addSaveHandler(this.onSave)
|
83
|
+
},
|
65
84
|
computed: {
|
66
85
|
getHeadlineTag() {
|
67
86
|
if(this.headlineLevel) {
|
@@ -75,59 +94,73 @@ export default {
|
|
75
94
|
}
|
76
95
|
return ""
|
77
96
|
}
|
97
|
+
},
|
98
|
+
methods: {
|
99
|
+
onSave() {
|
100
|
+
const headlineText = this.editableHeadlineText
|
101
|
+
return {
|
102
|
+
editModeContextData: {
|
103
|
+
...(this.editModeContextData || {})
|
104
|
+
},
|
105
|
+
headlineText,
|
106
|
+
update(props) {
|
107
|
+
props.headlineText = headlineText
|
108
|
+
}
|
109
|
+
}
|
110
|
+
}
|
78
111
|
}
|
79
112
|
}
|
80
113
|
</script>
|
81
114
|
|
82
115
|
<style lang="scss">
|
83
116
|
/* begin cmd-headline ------------------------------------------------------------------------------------------ */
|
84
|
-
|
117
|
+
//@import '../assets/styles/variables';
|
85
118
|
|
86
119
|
.cmd-headline {
|
87
|
-
|
88
|
-
|
120
|
+
margin-bottom: var(--default-margin);
|
121
|
+
gap: calc(var(--default-gap) / 2);
|
89
122
|
|
90
|
-
|
91
|
-
|
92
|
-
|
123
|
+
&.text-center > * {
|
124
|
+
text-align: center;
|
125
|
+
}
|
93
126
|
|
94
|
-
|
95
|
-
|
96
|
-
|
127
|
+
&.text-right > * {
|
128
|
+
text-align: right;
|
129
|
+
}
|
97
130
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
131
|
+
&.has-icon {
|
132
|
+
display: flex;
|
133
|
+
align-items: center;
|
134
|
+
}
|
102
135
|
|
103
|
-
|
104
|
-
|
136
|
+
&.has-pre-headline-text {
|
137
|
+
text-align: inherit;
|
105
138
|
|
106
|
-
|
107
|
-
|
108
|
-
}
|
139
|
+
[class*="icon-"] {
|
140
|
+
font-size: 5rem;
|
109
141
|
}
|
142
|
+
}
|
110
143
|
|
111
|
-
|
112
|
-
|
113
|
-
|
144
|
+
p {
|
145
|
+
margin-bottom: 0;
|
146
|
+
}
|
114
147
|
|
115
|
-
|
116
|
-
|
148
|
+
h1, h2, h3, h4, h5, h6 {
|
149
|
+
margin: 0;
|
117
150
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
}
|
151
|
+
&:only-child {
|
152
|
+
flex: none;
|
153
|
+
width: 100%;
|
122
154
|
}
|
155
|
+
}
|
123
156
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
157
|
+
//@media only screen and (max-width: $small-max-width) {
|
158
|
+
// flex-direction: column;
|
159
|
+
//
|
160
|
+
// h1 {
|
161
|
+
// margin-bottom: calc(var(--default-margin) * 2);
|
162
|
+
// }
|
163
|
+
//}
|
131
164
|
}
|
132
165
|
/* end cmd-headline ------------------------------------------------------------------------------------------ */
|
133
166
|
</style>
|
@@ -1,24 +1,142 @@
|
|
1
1
|
<template>
|
2
|
-
|
3
|
-
|
4
|
-
<
|
5
|
-
|
2
|
+
<!-- begin edit-mode -->
|
3
|
+
<figure v-if="editModeContext?.editing" :class="['cmd-image flex-container vertical', getTextAlign]">
|
4
|
+
<CmdFormElement
|
5
|
+
element="input"
|
6
|
+
type="checkbox"
|
7
|
+
:toggleSwitch="true"
|
8
|
+
labelText="Show figcaption"
|
9
|
+
v-model="editableShowFigcaption"
|
10
|
+
/>
|
11
|
+
<CmdFormElement
|
12
|
+
element="select"
|
13
|
+
labelText="Figcaption Position"
|
14
|
+
:selectOptions="positionOptions"
|
15
|
+
:disabled="!showFigcaption"
|
16
|
+
v-model="editableFigcaptionPosition"
|
17
|
+
/>
|
18
|
+
<CmdFormElement
|
19
|
+
element="select"
|
20
|
+
labelText="Figcaption text alignment"
|
21
|
+
:selectOptions="textAlignOptions"
|
22
|
+
:disabled="!showFigcaption"
|
23
|
+
v-model="editableFigcaptionTextAlign"
|
24
|
+
/>
|
25
|
+
<CmdFormElement element="input" type="text" :required="true" labelText="Alternative Text"
|
26
|
+
v-model="editableAlternativeText"/>
|
27
|
+
<CmdFormElement element="input" type="text" :required="false" labelText="Tooltip" v-model="editableTooltip"/>
|
28
|
+
|
29
|
+
<template v-if="figcaption?.position === 'top'">
|
30
|
+
<CmdFormElement element="input" type="text" :required="true" labelText="Text figcaption"
|
31
|
+
v-model="editableFigcaptionText"/>
|
32
|
+
</template>
|
33
|
+
<div :class="['box drop-area flex-container vertical', { 'allow-drop': allowDrop }]" v-on="dragAndDropHandler" title="Drag new image to this area to replace old one!">
|
34
|
+
<span class="icon-image"></span>
|
35
|
+
<img ref="contentImage" :src="image.src" :alt="image.alt" :title="image.tooltip"/>
|
36
|
+
</div>
|
37
|
+
<button
|
38
|
+
type="button"
|
39
|
+
:class="['button upload primary', { disabled: uploadInitiated }]"
|
40
|
+
:disabled="uploadInitiated"
|
41
|
+
@click="selectFiles()"
|
42
|
+
>
|
43
|
+
<!-- begin CmdIcon -->
|
44
|
+
<CmdIcon iconClass="icon-loop"/>
|
45
|
+
<!-- end CmdIcon -->
|
46
|
+
<span>Select image</span>
|
47
|
+
</button>
|
48
|
+
<template v-if="figcaption?.position !== 'top'">
|
49
|
+
<CmdFormElement
|
50
|
+
element="input"
|
51
|
+
type="text"
|
52
|
+
:class="getTextAlign"
|
53
|
+
:required="true"
|
54
|
+
labelText="Text figcaption"
|
55
|
+
v-model="editableFigcaptionText"
|
56
|
+
/>
|
57
|
+
</template>
|
58
|
+
</figure>
|
59
|
+
|
60
|
+
<!-- begin CmdFormElement -->
|
61
|
+
<CmdFormElement
|
62
|
+
v-if="editModeContext?.editing"
|
63
|
+
class="hidden"
|
64
|
+
element="input"
|
65
|
+
type="file"
|
66
|
+
labelText="Select file"
|
67
|
+
:disabled="uploadInitiated"
|
68
|
+
@change="fileSelected"
|
69
|
+
ref="formElement"
|
70
|
+
/>
|
71
|
+
<!-- end CmdFormElement -->
|
72
|
+
<!-- end edit-mode -->
|
73
|
+
|
74
|
+
<figure v-else :class="['cmd-image', getTextAlign]">
|
75
|
+
<figcaption v-if="figcaption?.show && figcaption?.position === 'top'">{{ figcaption?.text }}</figcaption>
|
76
|
+
<img :src="imageSource" :alt="image.alt" :title="image.tooltip"/>
|
77
|
+
<figcaption v-if="figcaption?.show && figcaption?.position !== 'top'">{{ figcaption?.text }}</figcaption>
|
6
78
|
</figure>
|
7
79
|
</template>
|
8
80
|
|
9
81
|
<script>
|
82
|
+
import {getFileExtension} from "../utils/getFileExtension"
|
83
|
+
|
10
84
|
export default {
|
85
|
+
name: "CmdImage",
|
86
|
+
inject: {
|
87
|
+
editModeContext: {
|
88
|
+
default: null
|
89
|
+
}
|
90
|
+
},
|
11
91
|
data() {
|
12
92
|
return {
|
13
93
|
mediumMaxWidth: 1023,
|
14
94
|
smallMaxWidth: 600,
|
15
|
-
currentWindowWidth: window.innerWidth
|
95
|
+
currentWindowWidth: window.innerWidth,
|
96
|
+
allowedFileExtensions: ["jpg", "jpeg", "png"],
|
97
|
+
uploadInitiated: false,
|
98
|
+
allowDrop: false,
|
99
|
+
showFigcaption: true,
|
100
|
+
figcaptionPosition: null,
|
101
|
+
figcaptionTextAlign: null,
|
102
|
+
tooltip: null,
|
103
|
+
alternativeText: null,
|
104
|
+
positionOptions: [
|
105
|
+
{
|
106
|
+
text: "Above image",
|
107
|
+
value: "top"
|
108
|
+
},
|
109
|
+
{
|
110
|
+
text: "Below image",
|
111
|
+
value: "bottom"
|
112
|
+
}
|
113
|
+
],
|
114
|
+
textAlignOptions: [
|
115
|
+
{
|
116
|
+
text: "Left",
|
117
|
+
value: "left"
|
118
|
+
},
|
119
|
+
{
|
120
|
+
text: "Center",
|
121
|
+
value: "center"
|
122
|
+
},
|
123
|
+
{
|
124
|
+
text: "Right",
|
125
|
+
value: "right"
|
126
|
+
}
|
127
|
+
],
|
128
|
+
figcaptionText: null
|
16
129
|
}
|
17
130
|
},
|
18
|
-
|
131
|
+
mounted() {
|
132
|
+
this.editModeContext?.addSaveHandler(this.onSave)
|
133
|
+
},
|
19
134
|
props: {
|
135
|
+
editModeContextData: {
|
136
|
+
type: Object
|
137
|
+
},
|
20
138
|
/**
|
21
|
-
* image-object including source
|
139
|
+
* image-object including source, alternative text, tooltip (not required)
|
22
140
|
*/
|
23
141
|
image: {
|
24
142
|
type: Object,
|
@@ -30,6 +148,17 @@ export default {
|
|
30
148
|
figcaption: {
|
31
149
|
type: Object,
|
32
150
|
required: false
|
151
|
+
},
|
152
|
+
/**
|
153
|
+
* max file size (in bytes) for file to upload
|
154
|
+
*/
|
155
|
+
maxFileUploadSize: {
|
156
|
+
type: Number,
|
157
|
+
default: 500000
|
158
|
+
},
|
159
|
+
minImageWidth: {
|
160
|
+
type: Number,
|
161
|
+
default: 1025
|
33
162
|
}
|
34
163
|
},
|
35
164
|
created() {
|
@@ -45,12 +174,6 @@ export default {
|
|
45
174
|
window.removeEventListener("resize", this.updateWindowWidth)
|
46
175
|
},
|
47
176
|
computed: {
|
48
|
-
getTextAlign() {
|
49
|
-
if(this.figcaption?.textAlign) {
|
50
|
-
return "text-" + this.figcaption.textAlign
|
51
|
-
}
|
52
|
-
return ''
|
53
|
-
},
|
54
177
|
imageSource() {
|
55
178
|
// if only one src exists
|
56
179
|
const imgSrc = this.image.src
|
@@ -70,11 +193,193 @@ export default {
|
|
70
193
|
}
|
71
194
|
// else return large (will be used if images for small-and -medium-devices do not exist or if screen resolution is larger than mediumMaxWidth)
|
72
195
|
return imgSrc.large
|
196
|
+
},
|
197
|
+
dragAndDropHandler() {
|
198
|
+
// register handlers only if drag-and-drop is enabled
|
199
|
+
return {
|
200
|
+
dragenter: this.dragEnter,
|
201
|
+
dragover: this.dragOver,
|
202
|
+
dragleave: this.dragLeave,
|
203
|
+
drop: this.drop
|
204
|
+
}
|
205
|
+
},
|
206
|
+
getTextAlign() {
|
207
|
+
if (this.figcaption?.textAlign) {
|
208
|
+
return "text-" + this.figcaption.textAlign
|
209
|
+
}
|
210
|
+
return ''
|
211
|
+
},
|
212
|
+
editableAlternativeText: {
|
213
|
+
get() {
|
214
|
+
return this.alternativeText == null ? this.image.alt : this.alternativeText
|
215
|
+
},
|
216
|
+
set(value) {
|
217
|
+
this.alternativeText = value
|
218
|
+
}
|
219
|
+
},
|
220
|
+
editableTooltip: {
|
221
|
+
get() {
|
222
|
+
return this.tooltip == null ? this.image.tooltip : this.tooltip
|
223
|
+
},
|
224
|
+
set(value) {
|
225
|
+
this.tooltip = value
|
226
|
+
}
|
227
|
+
},
|
228
|
+
editableShowFigcaption: {
|
229
|
+
get() {
|
230
|
+
return this.showFigcaption == null ? this.figcaption.show : this.showFigcaption
|
231
|
+
},
|
232
|
+
set(value) {
|
233
|
+
this.showFigcaption = value
|
234
|
+
}
|
235
|
+
},
|
236
|
+
editableFigcaptionPosition: {
|
237
|
+
get() {
|
238
|
+
return this.figcaptionPosition == null ? this.figcaption.position : this.figcaptionPosition
|
239
|
+
},
|
240
|
+
set(value) {
|
241
|
+
this.figcaptionPosition = value
|
242
|
+
}
|
243
|
+
},
|
244
|
+
editableFigcaptionTextAlign: {
|
245
|
+
get() {
|
246
|
+
return this.figcaptionTextAlign || this.figcaption.textAlign
|
247
|
+
},
|
248
|
+
set(value) {
|
249
|
+
this.figcaptionTextAlign = value
|
250
|
+
}
|
251
|
+
},
|
252
|
+
editableFigcaptionText: {
|
253
|
+
get() {
|
254
|
+
return this.figcaptionText || this.figcaption.text
|
255
|
+
},
|
256
|
+
set(value) {
|
257
|
+
this.figcaptionText = value
|
258
|
+
}
|
73
259
|
}
|
74
260
|
},
|
75
261
|
methods: {
|
76
262
|
updateWindowWidth() {
|
77
263
|
this.currentWindowWidth = window.innerWidth
|
264
|
+
},
|
265
|
+
getImage() {
|
266
|
+
return {
|
267
|
+
image: {...this.image},
|
268
|
+
figcaption: {
|
269
|
+
show: this.editableShowFigcaption,
|
270
|
+
position: this.editableFigcaptionPosition,
|
271
|
+
textAlign: this.editableFigcaptionTextAlign,
|
272
|
+
text: this.editableFigcaptionText
|
273
|
+
}
|
274
|
+
}
|
275
|
+
},
|
276
|
+
fileSelected(event) {
|
277
|
+
if (event.target.files.length > 0) {
|
278
|
+
this.checkAndUploadFile(event.target.files[0])
|
279
|
+
}
|
280
|
+
},
|
281
|
+
selectFiles() {
|
282
|
+
let inputFile = this.$refs.formElement.getDomElement().querySelector("input[type='file']")
|
283
|
+
inputFile.click()
|
284
|
+
},
|
285
|
+
dragEnter(event) {
|
286
|
+
this.dragOver(event)
|
287
|
+
},
|
288
|
+
dragOver(event) {
|
289
|
+
if (event.dataTransfer && event.dataTransfer.items && event.dataTransfer.items.length > 0) {
|
290
|
+
event.dataTransfer.dropEffect = "none"
|
291
|
+
|
292
|
+
let item = event.dataTransfer.items[0]
|
293
|
+
|
294
|
+
if (item.kind === "file") {
|
295
|
+
event.preventDefault()
|
296
|
+
event.dataTransfer.dropEffect = "copy"
|
297
|
+
this.allowDrop = true
|
298
|
+
// this._handle_dragover(event)
|
299
|
+
}
|
300
|
+
}
|
301
|
+
},
|
302
|
+
dragLeave() {
|
303
|
+
this.allowDrop = false
|
304
|
+
},
|
305
|
+
drop(event) {
|
306
|
+
this.allowDrop = false
|
307
|
+
if (event.dataTransfer && event.dataTransfer.files && event.dataTransfer.files.length > 0) {
|
308
|
+
event.preventDefault()
|
309
|
+
this.checkAndUploadFile(event.dataTransfer.files[0])
|
310
|
+
}
|
311
|
+
},
|
312
|
+
onSave() {
|
313
|
+
const data = {
|
314
|
+
image: {
|
315
|
+
alt: this.editableAlternativeText,
|
316
|
+
tooltip: this.editableTooltip
|
317
|
+
},
|
318
|
+
figcaption: {
|
319
|
+
position: this.editableFigcaptionPosition,
|
320
|
+
textAlign: this.editableFigcaptionTextAlign,
|
321
|
+
text: this.editableFigcaptionText,
|
322
|
+
show: this.editableShowFigcaption
|
323
|
+
}
|
324
|
+
}
|
325
|
+
return {
|
326
|
+
editModeContextData: this.editModeContextData,
|
327
|
+
...data,
|
328
|
+
update(props) {
|
329
|
+
console.log("CmdImage.update", props)
|
330
|
+
if (!props.image) {
|
331
|
+
props.image = {}
|
332
|
+
}
|
333
|
+
props.image.alt = data.image.alt
|
334
|
+
props.image.tooltip = data.image.tooltip
|
335
|
+
if (!props.figcaption) {
|
336
|
+
props.figcaption = {}
|
337
|
+
}
|
338
|
+
props.figcaption.position = data.figcaption.position
|
339
|
+
props.figcaption.textAlign = data.figcaption.textAlign
|
340
|
+
props.figcaption.text = data.figcaption.text
|
341
|
+
props.figcaption.show = data.figcaption.show
|
342
|
+
}
|
343
|
+
}
|
344
|
+
},
|
345
|
+
checkAndUploadFile(file) {
|
346
|
+
const errorMessages = []
|
347
|
+
|
348
|
+
// check size for current file
|
349
|
+
if (file.size > this.maxFileUploadSize) {
|
350
|
+
errorMessages.push("file too large")
|
351
|
+
}
|
352
|
+
|
353
|
+
// check if current file has allowed file-type
|
354
|
+
if (!this.allowedFileExtensions.includes(getFileExtension(file.name))) {
|
355
|
+
errorMessages.push("disallowed file extension")
|
356
|
+
}
|
357
|
+
|
358
|
+
if (errorMessages.length) {
|
359
|
+
alert(errorMessages)
|
360
|
+
return
|
361
|
+
}
|
362
|
+
|
363
|
+
// check for min dimensions
|
364
|
+
const image = new Image()
|
365
|
+
|
366
|
+
image.onload = () => {
|
367
|
+
if (image.width < this.minImageWidth) {
|
368
|
+
// errorMessages.push("width (" + image.width + " px) too small - at least " + this.minImageWidth + " px required!")
|
369
|
+
const confirmUpload = confirm("width (" + image.width + " px) too small - at least " + this.minImageWidth + " px required! Use trotzdem!")
|
370
|
+
if (!confirmUpload) {
|
371
|
+
alert("Abbruch")
|
372
|
+
return
|
373
|
+
}
|
374
|
+
}
|
375
|
+
// revoke URL to clean memory
|
376
|
+
URL.revokeObjectURL(image.src)
|
377
|
+
|
378
|
+
// show preview-image by assigning image.src (containing image date (not its path) to do existing contentImage source
|
379
|
+
this.$refs.contentImage.src = image.src
|
380
|
+
}
|
381
|
+
// create data-url (contains content of a file (not its path))
|
382
|
+
image.src = URL.createObjectURL(file)
|
78
383
|
}
|
79
384
|
}
|
80
385
|
}
|
@@ -83,17 +388,46 @@ export default {
|
|
83
388
|
<style lang="scss">
|
84
389
|
/* begin cmd-image ------------------------------------------------------------------------------------------ */
|
85
390
|
.cmd-image {
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
}
|
391
|
+
&.text-center {
|
392
|
+
figcaption {
|
393
|
+
text-align: center;
|
90
394
|
}
|
395
|
+
}
|
91
396
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
397
|
+
&.text-right {
|
398
|
+
figcaption {
|
399
|
+
text-align: right;
|
400
|
+
}
|
401
|
+
}
|
402
|
+
|
403
|
+
.drop-area {
|
404
|
+
border: 0;
|
405
|
+
align-items: center;
|
406
|
+
justify-content: center;
|
407
|
+
padding: 0;
|
408
|
+
|
409
|
+
> [class*="icon"] {
|
410
|
+
position: absolute;
|
411
|
+
top: 50%;
|
412
|
+
left: 50%;
|
413
|
+
transform: translateX(-50%) translateY(-50%);
|
414
|
+
font-size: 10rem;
|
415
|
+
color: var(--pure-white);
|
416
|
+
text-shadow: var(--text-shadow);
|
417
|
+
z-index: 10;
|
96
418
|
}
|
419
|
+
|
420
|
+
img {
|
421
|
+
opacity: .7;
|
422
|
+
transition: var(--default-transition);
|
423
|
+
|
424
|
+
&:hover, :active, :focus {
|
425
|
+
opacity: 1;
|
426
|
+
transition: var(--default-transition);
|
427
|
+
}
|
428
|
+
}
|
429
|
+
}
|
97
430
|
}
|
431
|
+
|
98
432
|
/* end cmd-image ------------------------------------------------------------------------------------------ */
|
99
433
|
</style>
|