Skip to content

Commit 1793237

Browse files
authored
Merge branch 'master' into victorenator-root-node
2 parents 7c83b28 + fac7fda commit 1793237

File tree

6 files changed

+92
-10
lines changed

6 files changed

+92
-10
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import '@github/markdown-toolbar-element'
2222
<md-quote>quote</md-quote>
2323
<md-code>code</md-code>
2424
<md-link>link</md-link>
25+
<md-image>image</md-image>
2526
<md-unordered-list>unordered-list</md-unordered-list>
2627
<md-ordered-list>ordered-list</md-ordered-list>
2728
<md-task-list>task-list</md-task-list>

examples/index.html

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<md-quote class="btn btn-sm">quote</md-quote>
1414
<md-code class="btn btn-sm">code</md-code>
1515
<md-link class="btn btn-sm">link</md-link>
16+
<md-image class="btn btn-sm">image</md-image>
1617
<md-unordered-list class="btn btn-sm">unordered-list</md-unordered-list>
1718
<md-ordered-list class="btn btn-sm">ordered-list</md-ordered-list>
1819
<md-task-list class="btn btn-sm">task-list</md-task-list>
@@ -21,7 +22,14 @@
2122
</markdown-toolbar>
2223
<textarea rows="6" class="mt-3 d-block width-full" id="textarea"></textarea>
2324
</div>
24-
<!-- script src="../dist/index.umd.js"></script -->
25-
<script src="https://unpkg.com/@github/markdown-toolbar-element@latest/dist/index.umd.js"></script>
25+
<script>
26+
const script = document.createElement('script')
27+
if (window.location.hostname.endsWith('github.io') || window.location.hostname.endsWith('github.com')) {
28+
script.src = "https://unpkg.com/@github/markdown-toolbar-element@latest/dist/index.umd.js"
29+
} else {
30+
script.src = "../dist/index.umd.js"
31+
}
32+
document.body.appendChild(script)
33+
</script>
2634
</body>
2735
</html>

index.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,16 @@ class MarkdownButtonElement extends HTMLElement {
4343
class MarkdownHeaderButtonElement extends MarkdownButtonElement {
4444
constructor() {
4545
super()
46-
styles.set(this, {prefix: '### '})
46+
47+
const level = parseInt(this.getAttribute('level') || 3, 10)
48+
if (level < 1 || level > 6) {
49+
return
50+
}
51+
52+
const prefix = `${'#'.repeat(level)} `
53+
styles.set(this, {
54+
prefix
55+
})
4756
}
4857
}
4958

@@ -127,6 +136,18 @@ if (!window.customElements.get('md-link')) {
127136
window.customElements.define('md-link', MarkdownLinkButtonElement)
128137
}
129138

139+
class MarkdownImageButtonElement extends MarkdownButtonElement {
140+
constructor() {
141+
super()
142+
styles.set(this, {prefix: '![', suffix: '](url)', replaceNext: 'url', scanFor: 'https?://'})
143+
}
144+
}
145+
146+
if (!window.customElements.get('md-image')) {
147+
window.MarkdownImageButtonElement = MarkdownImageButtonElement
148+
window.customElements.define('md-image', MarkdownImageButtonElement)
149+
}
150+
130151
class MarkdownUnorderedListButtonElement extends MarkdownButtonElement {
131152
constructor() {
132153
super()

package-lock.json

Lines changed: 8 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@github/markdown-toolbar-element",
3-
"version": "1.0.7",
3+
"version": "1.1.0",
44
"description": "Markdown formatting buttons for text inputs.",
55
"repository": "github/markdown-toolbar-element",
66
"main": "dist/index.umd.js",

test/test.js

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
describe('markdown-toolbbar-element', function() {
1+
describe('markdown-toolbar-element', function() {
22
describe('element creation', function() {
33
it('creates from document.createElement', function() {
44
const el = document.createElement('markdown-toolbar')
@@ -70,10 +70,13 @@ describe('markdown-toolbbar-element', function() {
7070
<markdown-toolbar for="textarea_id">
7171
<md-bold>bold</md-bold>
7272
<md-header>header</md-header>
73+
<md-header level="1">h1</md-header>
74+
<md-header level="10">h1</md-header>
7375
<md-italic>italic</md-italic>
7476
<md-quote>quote</md-quote>
7577
<md-code>code</md-code>
7678
<md-link>link</md-link>
79+
<md-image>image</md-image>
7780
<md-unordered-list>unordered-list</md-unordered-list>
7881
<md-ordered-list>ordered-list</md-ordered-list>
7982
<md-task-list>task-list</md-task-list>
@@ -489,5 +492,51 @@ describe('markdown-toolbbar-element', function() {
489492
assert.equal("GitHub's [homepage](|url|)", visualValue())
490493
})
491494
})
495+
496+
describe('images', function() {
497+
it('inserts image syntax with cursor in description', function() {
498+
setVisualValue('|')
499+
clickToolbar('md-image')
500+
assert.equal('![|](url)', visualValue())
501+
})
502+
503+
it('selected url is wrapped in image syntax with cursor in description', function() {
504+
setVisualValue('Octocat is |https://octodex.github.com/images/original.png|')
505+
clickToolbar('md-image')
506+
assert.equal('Octocat is ![|](https://octodex.github.com/images/original.png)', visualValue())
507+
})
508+
509+
it('cursor on url is wrapped in image syntax with cursor in description', function() {
510+
setVisualValue('Octocat is https://octodex.git|hub.com/images/original.png')
511+
clickToolbar('md-image')
512+
assert.equal('Octocat is ![|](https://octodex.github.com/images/original.png)', visualValue())
513+
})
514+
515+
it('selected plan text is wrapped in image syntax with cursor in url', function() {
516+
setVisualValue("GitHub's |logo|")
517+
clickToolbar('md-image')
518+
assert.equal("GitHub's ![logo](|url|)", visualValue())
519+
})
520+
})
521+
522+
describe('header', function() {
523+
it('inserts header syntax with cursor in description', function() {
524+
setVisualValue('|title|')
525+
clickToolbar('md-header')
526+
assert.equal('### |title|', visualValue())
527+
})
528+
529+
it('inserts header 1 syntax with cursor in description', function() {
530+
setVisualValue('|title|')
531+
clickToolbar('md-header[level="1"]')
532+
assert.equal('# |title|', visualValue())
533+
})
534+
535+
it('does not insert header for invalid level', function() {
536+
setVisualValue('|title|')
537+
clickToolbar('md-header[level="10"]')
538+
assert.equal('|title|', visualValue())
539+
})
540+
})
492541
})
493542
})

0 commit comments

Comments
 (0)