116 lines
9.6 KiB
JSON
116 lines
9.6 KiB
JSON
{
|
||
"slug": "drawer",
|
||
"mode": "scenarios",
|
||
"examples": [
|
||
{
|
||
"id": "drawer-ex-1",
|
||
"title": "默认与常用变体",
|
||
"titleSrc": "demo",
|
||
"desc": "",
|
||
"html": "<div class=\"demo-block\">\n <div class=\"row kole-drawer\">\n <button class=\"kole-drawer-button kole-drawer-primary\" type=\"button\" data-open>打开抽屉</button>\n <div class=\"kole-drawer-drawer-mask\" data-mask hidden></div>\n <aside class=\"kole-drawer-drawer\" role=\"dialog\" aria-labelledby=\"kole-drawer-title\" aria-modal=\"true\" hidden>\n <h3 class=\"kole-drawer-title\" id=\"kole-drawer-title\">编辑资料</h3>\n <p class=\"kole-drawer-desc\">在当前页面侧向编辑,不丢失列表上下文。</p>\n <div class=\"kole-drawer-drawer-footer\">\n <button class=\"kole-drawer-button\" type=\"button\" data-close>取消</button>\n <button class=\"kole-drawer-button kole-drawer-primary\" type=\"button\" data-confirm>确定</button>\n </div>\n </aside>\n </div>\n</div>",
|
||
"preview": {
|
||
"show": [
|
||
[
|
||
0,
|
||
2
|
||
]
|
||
],
|
||
"hide": [
|
||
[
|
||
1
|
||
],
|
||
[
|
||
0,
|
||
0
|
||
],
|
||
[
|
||
0,
|
||
1
|
||
],
|
||
[
|
||
0,
|
||
3
|
||
],
|
||
[
|
||
0,
|
||
2,
|
||
0
|
||
]
|
||
],
|
||
"mode": "scenarios"
|
||
},
|
||
"previewSafe": true,
|
||
"previewUnsafeReasons": [],
|
||
"source": "curated",
|
||
"code": {
|
||
"html": "<div class=\"kole-drawer\">\n <button class=\"kole-drawer-button kole-drawer-primary\" type=\"button\" data-open>打开抽屉</button>\n <div class=\"kole-drawer-drawer-mask\" hidden></div>\n <aside class=\"kole-drawer-drawer\" role=\"dialog\" aria-labelledby=\"kole-drawer-title\" aria-modal=\"true\" hidden>\n <h3 class=\"kole-drawer-title\" id=\"kole-drawer-title\">编辑资料</h3>\n <p class=\"kole-drawer-desc\">在当前页面侧向编辑,不丢失列表上下文。</p>\n <div class=\"kole-drawer-drawer-footer\">\n <button class=\"kole-drawer-button\" type=\"button\">取消</button>\n <button class=\"kole-drawer-button kole-drawer-primary\" type=\"button\">确定</button>\n </div>\n </aside>\n</div>",
|
||
"jsx": "import { useState } from 'react';\nimport { KoleDrawer } from 'kole-ui/react';\n\nexport default function Demo() {\n const [open, setOpen] = useState(false);\n\n // 组件自带「打开抽屉」触发器;取消/确定/遮罩点击都走 onClose\n return (\n <KoleDrawer\n open={open}\n title=\"编辑资料\"\n placement=\"right\"\n onClick={() => setOpen(true)}\n onClose={() => setOpen(false)}\n />\n );\n}",
|
||
"vue3": "<script setup>\nimport { ref } from 'vue';\nimport { KoleDrawer } from 'kole-ui/vue3';\n\nconst open = ref(false);\n</script>\n\n<template>\n <!-- 组件自带「打开抽屉」触发器:@open 展开,@close / @confirm 收起 -->\n <KoleDrawer\n :open=\"open\"\n title=\"编辑资料\"\n placement=\"right\"\n @open=\"open = true\"\n @close=\"open = false\"\n @confirm=\"open = false\"\n />\n</template>",
|
||
"vue2": "<template>\n <!-- 组件自带「打开抽屉」触发器:@open 展开,@close / @confirm 收起 -->\n <KoleDrawer\n :open=\"open\"\n title=\"编辑资料\"\n placement=\"right\"\n @open=\"open = true\"\n @close=\"open = false\"\n @confirm=\"open = false\"\n />\n</template>\n\n<script>\nimport { KoleDrawer } from 'kole-ui/vue2';\n\nexport default {\n name: 'DrawerDemo',\n components: { KoleDrawer },\n data() { return { open: false }; },\n};\n</script>",
|
||
"tsx": "import { useState } from 'react';\nimport { KoleDrawer } from 'kole-ui/react';\n\nexport default function Demo(): JSX.Element {\n const [open, setOpen] = useState<boolean>(false);\n\n // 组件自带「打开抽屉」触发器;取消/确定/遮罩点击都走 onClose\n return (\n <KoleDrawer\n open={open}\n title=\"编辑资料\"\n placement=\"right\"\n onClick={() => setOpen(true)}\n onClose={() => setOpen(false)}\n />\n );\n}",
|
||
"vue3ts": "<template>\n\n <!-- 组件自带「打开抽屉」触发器:@open 展开,@close / @confirm 收起 -->\n <KoleDrawer\n :open=\"open\"\n title=\"编辑资料\"\n placement=\"right\"\n @open=\"open = true\"\n @close=\"open = false\"\n @confirm=\"open = false\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { KoleDrawer } from 'kole-ui/vue3';\n\nconst open = ref<boolean>(false);\n</script>",
|
||
"vue2ts": "<template>\n\n <!-- 组件自带「打开抽屉」触发器:@open 展开,@close / @confirm 收起 -->\n <KoleDrawer\n :open=\"open\"\n title=\"编辑资料\"\n placement=\"right\"\n @open=\"open = true\"\n @close=\"open = false\"\n @confirm=\"open = false\"\n />\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue';\nimport { KoleDrawer } from 'kole-ui/vue2';\n\nexport default {\n name: 'DrawerDemo',\n components: { KoleDrawer },\n data(): Record<string, unknown> { return { open: false }; },\n};\n</script>"
|
||
},
|
||
"notes": [
|
||
"依据 frameworks/Drawer.html 首个 demo-block 的标记与脚本([data-open] 展开、[data-mask]/[data-close]/[data-confirm] 关闭)",
|
||
"title「编辑资料」/placement「right」取自该块标记与 site/details/drawer.json contract.dims placement;open/maskClosable 见 Drawer.vue3.vue defineProps"
|
||
]
|
||
},
|
||
{
|
||
"id": "drawer-ex-2",
|
||
"title": "状态与使用场景",
|
||
"titleSrc": "demo",
|
||
"desc": "",
|
||
"html": "<div class=\"demo-block\">\n <div class=\"row kole-drawer\">\n <div class=\"kole-drawer-surface\" style=\"padding:12px\">不离开列表页,侧向查看或编辑详情,默认从右侧滑出并带遮罩。</div>\n <span class=\"kole-drawer-desc\">支持键盘焦点、状态反馈和令牌化样式。</span>\n </div>\n <p class=\"demo-note\">零运行时依赖;数据请求、权限和国际化由宿主接入方决定。</p>\n</div>",
|
||
"preview": {
|
||
"show": [
|
||
[
|
||
0,
|
||
3
|
||
]
|
||
],
|
||
"hide": [
|
||
[
|
||
1
|
||
],
|
||
[
|
||
0,
|
||
0
|
||
],
|
||
[
|
||
0,
|
||
1
|
||
],
|
||
[
|
||
0,
|
||
2
|
||
],
|
||
[
|
||
0,
|
||
3,
|
||
0
|
||
]
|
||
],
|
||
"mode": "scenarios"
|
||
},
|
||
"previewSafe": true,
|
||
"previewUnsafeReasons": [],
|
||
"source": "curated",
|
||
"code": {
|
||
"html": "<div class=\"kole-drawer\">\n <div class=\"kole-drawer-surface\" style=\"padding:12px\">不离开列表页,侧向查看或编辑详情,默认从右侧滑出并带遮罩。</div>\n <span class=\"kole-drawer-desc\">支持键盘焦点、状态反馈和令牌化样式。</span>\n</div>\n<p>零运行时依赖;数据请求、权限和国际化由宿主接入方决定。</p>",
|
||
"jsx": "import { useState } from 'react';\nimport { KoleDrawer } from 'kole-ui/react';\n\n// 场景(frameworks/Drawer.html 第二个 demo-block):不离开列表页,侧向查看或编辑详情,默认从右侧滑出并带遮罩\nexport default function DetailDrawer() {\n const [open, setOpen] = useState(true);\n\n return (\n <KoleDrawer\n open={open}\n title=\"编辑资料\"\n placement=\"right\"\n maskClosable\n onClose={() => setOpen(false)}\n />\n );\n}",
|
||
"vue3": "<script setup>\nimport { ref } from 'vue';\nimport { KoleDrawer } from 'kole-ui/vue3';\n\n// 受控打开:默认从右侧滑出并带遮罩,mask-closable 允许点击遮罩关闭\nconst open = ref(true);\n</script>\n\n<template>\n <KoleDrawer\n :open=\"open\"\n title=\"编辑资料\"\n placement=\"right\"\n :mask-closable=\"true\"\n @close=\"open = false\"\n />\n</template>",
|
||
"vue2": "<template>\n <KoleDrawer\n :open=\"open\"\n title=\"编辑资料\"\n placement=\"right\"\n :mask-closable=\"true\"\n @close=\"open = false\"\n />\n</template>\n\n<script>\nimport { KoleDrawer } from 'kole-ui/vue2';\n\nexport default {\n name: 'DrawerDetailDemo',\n components: { KoleDrawer },\n data() { return { open: true }; },\n};\n</script>",
|
||
"tsx": "import { useState } from 'react';\nimport { KoleDrawer } from 'kole-ui/react';\n\n// 场景(frameworks/Drawer.html 第二个 demo-block):不离开列表页,侧向查看或编辑详情,默认从右侧滑出并带遮罩\nexport default function DetailDrawer(): JSX.Element {\n const [open, setOpen] = useState<boolean>(true);\n\n return (\n <KoleDrawer\n open={open}\n title=\"编辑资料\"\n placement=\"right\"\n maskClosable\n onClose={() => setOpen(false)}\n />\n );\n}",
|
||
"vue3ts": "<template>\n\n <KoleDrawer\n :open=\"open\"\n title=\"编辑资料\"\n placement=\"right\"\n :mask-closable=\"true\"\n @close=\"open = false\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { KoleDrawer } from 'kole-ui/vue3';\n\n// 受控打开:默认从右侧滑出并带遮罩,mask-closable 允许点击遮罩关闭\nconst open = ref<boolean>(true);\n</script>",
|
||
"vue2ts": "<template>\n\n <KoleDrawer\n :open=\"open\"\n title=\"编辑资料\"\n placement=\"right\"\n :mask-closable=\"true\"\n @close=\"open = false\"\n />\n</template>\n\n<script lang=\"ts\">\nimport Vue from 'vue';\nimport { KoleDrawer } from 'kole-ui/vue2';\n\nexport default {\n name: 'DrawerDetailDemo',\n components: { KoleDrawer },\n data(): Record<string, unknown> { return { open: true }; },\n};\n</script>"
|
||
},
|
||
"notes": [
|
||
"该示例块为场景说明块(frameworks/Drawer.html 第二个 demo-block 只有 kole-drawer-surface 文案「不离开列表页,侧向查看或编辑详情,默认从右侧滑出并带遮罩」),片段按该文案给出受控打开调用",
|
||
"maskClosable/placement 取自 Drawer.jsx 与 Drawer.vue3.vue 的 defineProps;placement=right 与文案「默认从右侧滑出」一致"
|
||
]
|
||
}
|
||
],
|
||
"curated": true
|
||
}
|