feat(P4): precompute移植+app.js sources双向回填+回归1003/1003+验收体积/文件/data.json
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Aurora Admin · ShortcutPanel</title>
|
||||
<link rel="stylesheet" href="../.design_library/aurora-admin/colors_and_type.css" />
|
||||
<link rel="stylesheet" href="./ShortcutPanel.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="aa-page">
|
||||
<h2 class="aa-h2">ShortcutPanel 快捷键面板</h2>
|
||||
<p class="aa-desc">展示全部快捷键,支持搜索过滤。</p>
|
||||
|
||||
<div class="aa-demo">
|
||||
<div class="aa-shortcut" role="region">
|
||||
<input class="aa-shortcut-search" role="region" id="search" placeholder="搜索快捷键…" />
|
||||
<div class="aa-shortcut-list" role="region" id="list"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var items = [
|
||||
{ name: '保存', key: 'Ctrl + S' },
|
||||
{ name: '搜索', key: 'Ctrl + K' },
|
||||
{ name: '新建', key: 'Ctrl + N' },
|
||||
{ name: '刷新', key: 'F5' },
|
||||
{ name: '关闭页签', key: 'Ctrl + W' },
|
||||
{ name: '全屏', key: 'F11' },
|
||||
{ name: '帮助', key: '?' },
|
||||
{ name: '命令面板', key: 'Ctrl + P' }
|
||||
];
|
||||
var list = document.getElementById('list');
|
||||
var search = document.getElementById('search');
|
||||
|
||||
function render() {
|
||||
var q = search.value.trim().toLowerCase();
|
||||
var filtered = items.filter(function (it) { return !q || it.name.toLowerCase().indexOf(q) >= 0 || it.key.toLowerCase().indexOf(q) >= 0; });
|
||||
if (!filtered.length) { list.innerHTML = '<div class="aa-shortcut-empty" role="region">无匹配快捷键</div>'; return; }
|
||||
list.innerHTML = filtered.map(function (it) {
|
||||
return '<div class="aa-shortcut-item" role="region"><span>' + it.name + '</span><span class="aa-shortcut-key" role="region">' + it.key + '</span></div>';
|
||||
}).join('');
|
||||
}
|
||||
search.addEventListener('input', render);
|
||||
render();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,37 @@
|
||||
import React, { useState, useMemo } from 'react';
|
||||
import './ShortcutPanel.css';
|
||||
|
||||
const DEFAULT_ITEMS = [
|
||||
{ name: '保存', key: 'Ctrl + S' },
|
||||
{ name: '搜索', key: 'Ctrl + K' },
|
||||
{ name: '新建', key: 'Ctrl + N' },
|
||||
{ name: '刷新', key: 'F5' },
|
||||
{ name: '关闭页签', key: 'Ctrl + W' },
|
||||
{ name: '全屏', key: 'F11' },
|
||||
{ name: '帮助', key: '?' },
|
||||
{ name: '命令面板', key: 'Ctrl + P' }
|
||||
];
|
||||
|
||||
export default function ShortcutPanel({ items = DEFAULT_ITEMS }) {
|
||||
const [q, setQ] = useState('');
|
||||
const filtered = useMemo(() => {
|
||||
const s = q.trim().toLowerCase();
|
||||
if (!s) return items;
|
||||
return items.filter((it) => it.name.toLowerCase().indexOf(s) >= 0 || it.key.toLowerCase().indexOf(s) >= 0);
|
||||
}, [q, items]);
|
||||
|
||||
return (
|
||||
<div className="aa-shortcut">
|
||||
<input className="aa-shortcut-search" value={q} placeholder="搜索快捷键…" onChange={(e) => setQ(e.target.value)} />
|
||||
<div className="aa-shortcut-list">
|
||||
{!filtered.length && <div className="aa-shortcut-empty">无匹配快捷键</div>}
|
||||
{filtered.map((it, i) => (
|
||||
<div key={i} className="aa-shortcut-item">
|
||||
<span>{it.name}</span>
|
||||
<span className="aa-shortcut-key">{it.key}</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<template>
|
||||
<div class="aa-shortcut">
|
||||
<input class="aa-shortcut-search" v-model="q" placeholder="搜索快捷键…" />
|
||||
<div class="aa-shortcut-list">
|
||||
<div v-if="!filtered.length" class="aa-shortcut-empty">无匹配快捷键</div>
|
||||
<div v-for="(it, i) in filtered" :key="i" class="aa-shortcut-item">
|
||||
<span>{{ it.name }}</span><span class="aa-shortcut-key">{{ it.key }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'AaShortcutPanel',
|
||||
props: {
|
||||
items: {
|
||||
type: Array,
|
||||
default: () => [
|
||||
{ name: '保存', key: 'Ctrl + S' },
|
||||
{ name: '搜索', key: 'Ctrl + K' },
|
||||
{ name: '新建', key: 'Ctrl + N' },
|
||||
{ name: '刷新', key: 'F5' },
|
||||
{ name: '关闭页签', key: 'Ctrl + W' },
|
||||
{ name: '全屏', key: 'F11' },
|
||||
{ name: '帮助', key: '?' },
|
||||
{ name: '命令面板', key: 'Ctrl + P' }
|
||||
]
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return { q: '' };
|
||||
},
|
||||
computed: {
|
||||
filtered() {
|
||||
var q = this.q.trim().toLowerCase();
|
||||
if (!q) return this.items;
|
||||
return this.items.filter(function (it) { return it.name.toLowerCase().indexOf(q) >= 0 || it.key.toLowerCase().indexOf(q) >= 0; });
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style src="./ShortcutPanel.css"></style>
|
||||
@@ -0,0 +1,39 @@
|
||||
<template>
|
||||
<div class="aa-shortcut">
|
||||
<input class="aa-shortcut-search" v-model="q" placeholder="搜索快捷键…" />
|
||||
<div class="aa-shortcut-list">
|
||||
<div v-if="!filtered.length" class="aa-shortcut-empty">无匹配快捷键</div>
|
||||
<div v-for="(it, i) in filtered" :key="i" class="aa-shortcut-item">
|
||||
<span>{{ it.name }}</span><span class="aa-shortcut-key">{{ it.key }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, computed } from 'vue';
|
||||
|
||||
const props = defineProps({
|
||||
items: {
|
||||
type: Array,
|
||||
default: () => [
|
||||
{ name: '保存', key: 'Ctrl + S' },
|
||||
{ name: '搜索', key: 'Ctrl + K' },
|
||||
{ name: '新建', key: 'Ctrl + N' },
|
||||
{ name: '刷新', key: 'F5' },
|
||||
{ name: '关闭页签', key: 'Ctrl + W' },
|
||||
{ name: '全屏', key: 'F11' },
|
||||
{ name: '帮助', key: '?' },
|
||||
{ name: '命令面板', key: 'Ctrl + P' }
|
||||
]
|
||||
}
|
||||
});
|
||||
const q = ref('');
|
||||
const filtered = computed(() => {
|
||||
const s = q.value.trim().toLowerCase();
|
||||
if (!s) return props.items;
|
||||
return props.items.filter((it) => it.name.toLowerCase().indexOf(s) >= 0 || it.key.toLowerCase().indexOf(s) >= 0);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style src="./ShortcutPanel.css"></style>
|
||||
Reference in New Issue
Block a user