mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-16 17:02:51 +08:00
Generalized Search
Generalized the search to work with any table with some basic classes and some updated JavaScript, we can now search colors and emojis.
This commit is contained in:
parent
b1db8a9403
commit
e0947708c9
@ -13,4 +13,19 @@ in markup text such as `AnsiConsole.Markup("[maroon on blue]Hello[/]")`.
|
|||||||
|
|
||||||
# Standard colors
|
# Standard colors
|
||||||
|
|
||||||
|
<div class="input-group mb-3">
|
||||||
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text" id="basic-addon1">
|
||||||
|
<i class="fas fa-search" aria-hidden="true"></i>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<input
|
||||||
|
class="form-control w-100 filter"
|
||||||
|
data-table="color-results"
|
||||||
|
type="text" placeholder="Search Colors..." autocomplete="off"
|
||||||
|
aria-label="Search Colors">
|
||||||
|
</div>
|
||||||
|
|
||||||
<?# ColorTable /?>
|
<?# ColorTable /?>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="../assets/js/table-search.js"></script>
|
@ -35,16 +35,19 @@ var rendered = Emoji.Replace(phrase);
|
|||||||
_The images in the table below might not render correctly in your
|
_The images in the table below might not render correctly in your
|
||||||
browser for the same reasons mentioned in the `Compatibility` section._
|
browser for the same reasons mentioned in the `Compatibility` section._
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="input-group mb-3">
|
||||||
<div class="form-inline d-flex">
|
<div class="input-group-prepend">
|
||||||
|
<span class="input-group-text" id="basic-addon1">
|
||||||
<i class="fas fa-search" aria-hidden="true"></i>
|
<i class="fas fa-search" aria-hidden="true"></i>
|
||||||
<input id="emoji-search"
|
</span>
|
||||||
class="form-control form-control-sm ml-3 w-75"
|
</div>
|
||||||
|
<input
|
||||||
|
class="form-control w-100 filter"
|
||||||
|
data-table="emoji-results"
|
||||||
type="text" placeholder="Search Emojis..." autocomplete="off"
|
type="text" placeholder="Search Emojis..." autocomplete="off"
|
||||||
aria-label="Search Emojis">
|
aria-label="Search Emojis">
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?# EmojiTable /?>
|
<?# EmojiTable /?>
|
||||||
|
|
||||||
<script type="text/javascript" src="../assets/js/emoji-search.js"></script>
|
<script type="text/javascript" src="../assets/js/table-search.js"></script>
|
@ -1,30 +0,0 @@
|
|||||||
$(document).ready(function () {
|
|
||||||
let input = document.getElementById('emoji-search');
|
|
||||||
let table = document.getElementById('emoji-results');
|
|
||||||
|
|
||||||
input.onkeyup = function (event) {
|
|
||||||
|
|
||||||
if (event.key === "Enter") {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
let value = input.value.toUpperCase();
|
|
||||||
let rows = table.getElementsByClassName('emoji-row');
|
|
||||||
|
|
||||||
for (let i = 0; i < rows.length; i++) {
|
|
||||||
let row = rows[i];
|
|
||||||
|
|
||||||
let match =
|
|
||||||
new RegExp(value, "i").test(row.textContent) ||
|
|
||||||
value === '';
|
|
||||||
|
|
||||||
if (match) {
|
|
||||||
row.style.display = 'table-row';
|
|
||||||
} else {
|
|
||||||
row.style.display = 'none';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}; // keyup
|
|
||||||
}); // ready
|
|
35
docs/input/assets/js/table-search.js
Normal file
35
docs/input/assets/js/table-search.js
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
$(document).ready(function () {
|
||||||
|
|
||||||
|
$('.filter').each(function () {
|
||||||
|
let input = this;
|
||||||
|
let table = document.getElementById(input.dataset.table);
|
||||||
|
|
||||||
|
input.onkeyup = function (event) {
|
||||||
|
|
||||||
|
if (event.key === "Enter") {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let value = input.value.toUpperCase();
|
||||||
|
let rows = table.getElementsByClassName('search-row');
|
||||||
|
|
||||||
|
for (let i = 0; i < rows.length; i++) {
|
||||||
|
let row = rows[i];
|
||||||
|
|
||||||
|
let match =
|
||||||
|
new RegExp(value, "i").test(row.textContent) ||
|
||||||
|
value === '';
|
||||||
|
|
||||||
|
if (match) {
|
||||||
|
row.style.display = 'table-row';
|
||||||
|
} else {
|
||||||
|
row.style.display = 'none';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}; // keyup
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
}); // ready
|
@ -21,7 +21,7 @@ namespace Docs.Shortcodes
|
|||||||
.First().Object;
|
.First().Object;
|
||||||
|
|
||||||
// Headers
|
// Headers
|
||||||
var table = new XElement("table", new XAttribute("class", "table"));
|
var table = new XElement("table", new XAttribute("class", "table"), new XAttribute("id", "color-results"));
|
||||||
var header = new XElement("tr", new XAttribute("class", "color-row"));
|
var header = new XElement("tr", new XAttribute("class", "color-row"));
|
||||||
header.Add(new XElement("th", ""));
|
header.Add(new XElement("th", ""));
|
||||||
header.Add(new XElement("th", "#"));
|
header.Add(new XElement("th", "#"));
|
||||||
@ -44,7 +44,7 @@ namespace Docs.Shortcodes
|
|||||||
var clr = new XElement("td", new XElement("code", color.ClrName));
|
var clr = new XElement("td", new XElement("code", color.ClrName));
|
||||||
|
|
||||||
// Create row
|
// Create row
|
||||||
var row = new XElement("tr");
|
var row = new XElement("tr", new XAttribute("class", "search-row"));
|
||||||
row.Add(rep);
|
row.Add(rep);
|
||||||
row.Add(name);
|
row.Add(name);
|
||||||
row.Add(number);
|
row.Add(number);
|
||||||
|
@ -30,7 +30,7 @@ namespace Docs.Shortcodes
|
|||||||
var code = emoji.Code.Replace("U+0000", "U+").Replace("U+000", "U+");
|
var code = emoji.Code.Replace("U+0000", "U+").Replace("U+000", "U+");
|
||||||
var icon = $"&#x{emoji.Code.Replace("U+", string.Empty)};";
|
var icon = $"&#x{emoji.Code.Replace("U+", string.Empty)};";
|
||||||
|
|
||||||
var row = new XElement("tr", new XAttribute("class", "emoji-row"));
|
var row = new XElement("tr", new XAttribute("class", "search-row"));
|
||||||
row.Add(new XElement("td", icon));
|
row.Add(new XElement("td", icon));
|
||||||
row.Add(new XElement("td", new XElement("code", $":{emoji.Id}:")));
|
row.Add(new XElement("td", new XElement("code", $":{emoji.Id}:")));
|
||||||
row.Add(new XElement("td", new XElement("code", emoji.Name)));
|
row.Add(new XElement("td", new XElement("code", emoji.Name)));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user