jky-component-lib 0.0.55 → 0.0.60
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/es/add-input/AddInput.vue.d.ts +27 -0
- package/dist/es/add-input/AddInput.vue.js +151 -0
- package/dist/es/add-input/AddInput.vue3.js +5 -0
- package/dist/es/add-input/index.d.ts +4 -0
- package/dist/es/add-input/index.js +8 -0
- package/dist/es/add-input/style.css +35 -0
- package/dist/es/button-nav/ButtonNav.vue.d.ts +4 -4
- package/dist/es/code-mirror-editor/CodeMirrorEditor.vue.d.ts +5 -5
- package/dist/es/code-mirror-editor/CodeMirrorEditor.vue.js +9 -0
- package/dist/es/code-mirror-editor/style.css +6 -6
- package/dist/es/components.d.ts +3 -0
- package/dist/es/components.js +10 -1
- package/dist/es/form/Form.vue.d.ts +2 -2
- package/dist/es/form/FormItem.vue.js +18 -0
- package/dist/es/index.js +6 -0
- package/dist/es/node_modules/@element-plus/icons-vue/dist/index.js +32 -0
- package/dist/es/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/ScriptLoader.js +52 -0
- package/dist/es/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/TinyMCE.js +10 -0
- package/dist/es/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/Utils.js +145 -0
- package/dist/es/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/Editor.js +160 -0
- package/dist/es/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/EditorPropTypes.js +26 -0
- package/dist/es/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/index.js +4 -0
- package/dist/es/package.json.js +1 -1
- package/dist/es/page-header/PopoverMenu.vue.d.ts +1 -1
- package/dist/es/page-table/PageTable.vue.d.ts +6087 -0
- package/dist/es/page-table/PageTable.vue.js +378 -0
- package/dist/es/page-table/PageTable.vue3.js +5 -0
- package/dist/es/page-table/Toolbar.vue.d.ts +32 -0
- package/dist/es/page-table/Toolbar.vue.js +271 -0
- package/dist/es/page-table/Toolbar.vue3.js +5 -0
- package/dist/es/page-table/index.d.ts +4 -0
- package/dist/es/page-table/index.js +8 -0
- package/dist/es/page-table/style.css +4 -0
- package/dist/es/rich-editor/RichEditor.vue.d.ts +78 -0
- package/dist/es/rich-editor/RichEditor.vue.js +105 -0
- package/dist/es/rich-editor/RichEditor.vue3.js +5 -0
- package/dist/es/rich-editor/index.d.ts +4 -0
- package/dist/es/rich-editor/index.js +8 -0
- package/dist/es/rich-editor/style.css +34 -0
- package/dist/es/style.css +28 -0
- package/dist/es/styles.css +1 -1
- package/dist/es/utils/index.d.ts +1 -0
- package/dist/es/utils/responsive-toolbar.d.ts +78 -0
- package/dist/es/utils/responsive-toolbar.js +64 -0
- package/dist/lib/add-input/AddInput.vue.d.ts +27 -0
- package/dist/lib/add-input/AddInput.vue.js +151 -0
- package/dist/lib/add-input/AddInput.vue3.js +5 -0
- package/dist/lib/add-input/index.d.ts +4 -0
- package/dist/lib/add-input/index.js +8 -0
- package/dist/lib/add-input/style.css +35 -0
- package/dist/lib/button-nav/ButtonNav.vue.d.ts +4 -4
- package/dist/lib/code-mirror-editor/CodeMirrorEditor.vue.d.ts +5 -5
- package/dist/lib/code-mirror-editor/CodeMirrorEditor.vue.js +9 -0
- package/dist/lib/code-mirror-editor/style.css +6 -6
- package/dist/lib/components.d.ts +3 -0
- package/dist/lib/components.js +30 -21
- package/dist/lib/form/Form.vue.d.ts +2 -2
- package/dist/lib/form/FormItem.vue.js +24 -6
- package/dist/lib/index.js +20 -14
- package/dist/lib/node_modules/@element-plus/icons-vue/dist/index.js +32 -0
- package/dist/lib/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/ScriptLoader.js +52 -0
- package/dist/lib/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/TinyMCE.js +10 -0
- package/dist/lib/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/Utils.js +145 -0
- package/dist/lib/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/Editor.js +160 -0
- package/dist/lib/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/EditorPropTypes.js +26 -0
- package/dist/lib/node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/index.js +4 -0
- package/dist/lib/package.json.js +1 -1
- package/dist/lib/page-header/PopoverMenu.vue.d.ts +1 -1
- package/dist/lib/page-table/PageTable.vue.d.ts +6087 -0
- package/dist/lib/page-table/PageTable.vue.js +378 -0
- package/dist/lib/page-table/PageTable.vue3.js +5 -0
- package/dist/lib/page-table/Toolbar.vue.d.ts +32 -0
- package/dist/lib/page-table/Toolbar.vue.js +271 -0
- package/dist/lib/page-table/Toolbar.vue3.js +5 -0
- package/dist/lib/page-table/index.d.ts +4 -0
- package/dist/lib/page-table/index.js +8 -0
- package/dist/lib/page-table/style.css +4 -0
- package/dist/lib/rich-editor/RichEditor.vue.d.ts +78 -0
- package/dist/lib/rich-editor/RichEditor.vue.js +105 -0
- package/dist/lib/rich-editor/RichEditor.vue3.js +5 -0
- package/dist/lib/rich-editor/index.d.ts +4 -0
- package/dist/lib/rich-editor/index.js +8 -0
- package/dist/lib/rich-editor/style.css +34 -0
- package/dist/lib/style.css +28 -0
- package/dist/lib/styles.css +1 -1
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/responsive-toolbar.d.ts +78 -0
- package/dist/lib/utils/responsive-toolbar.js +64 -0
- package/package.json +10 -1
- package/dist/es/code-mirror-editor/CodeMirrorEditor.test.d.ts +0 -1
- package/dist/lib/code-mirror-editor/CodeMirrorEditor.test.d.ts +0 -1
- package/dist/umd/index.js +0 -3955
- package/dist/umd/styles.css +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const withInstall = require("../utils/with-install.js");
|
|
4
|
+
const PageTable_vue_vue_type_script_setup_true_lang = require("./PageTable.vue.js");
|
|
5
|
+
;/* empty css */
|
|
6
|
+
const JkyPageTable = withInstall.installWithSFC(PageTable_vue_vue_type_script_setup_true_lang.default);
|
|
7
|
+
exports.JkyPageTable = JkyPageTable;
|
|
8
|
+
exports.default = JkyPageTable;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { RichEditorProps } from './types';
|
|
2
|
+
type __VLS_Props = RichEditorProps;
|
|
3
|
+
type __VLS_PublicProps = {
|
|
4
|
+
modelValue?: string;
|
|
5
|
+
} & __VLS_Props;
|
|
6
|
+
declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {
|
|
7
|
+
editor: globalThis.Ref<any, any>;
|
|
8
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
9
|
+
"update:modelValue": (value: string) => any;
|
|
10
|
+
} & {
|
|
11
|
+
"update:modelValue": (value: string) => any;
|
|
12
|
+
change: (value: string) => any;
|
|
13
|
+
blur: (event: Event) => any;
|
|
14
|
+
focus: (event: Event) => any;
|
|
15
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
16
|
+
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
17
|
+
onChange?: ((value: string) => any) | undefined;
|
|
18
|
+
onBlur?: ((event: Event) => any) | undefined;
|
|
19
|
+
onFocus?: ((event: Event) => any) | undefined;
|
|
20
|
+
}>, {
|
|
21
|
+
height: string;
|
|
22
|
+
modelValue: string;
|
|
23
|
+
disabled: boolean;
|
|
24
|
+
readonly: boolean;
|
|
25
|
+
placeholder: string;
|
|
26
|
+
language: string;
|
|
27
|
+
plugins: string;
|
|
28
|
+
toolbar: string | string[];
|
|
29
|
+
menubar: boolean | string;
|
|
30
|
+
branding: boolean;
|
|
31
|
+
statusbar: boolean;
|
|
32
|
+
apiKey: string;
|
|
33
|
+
init: Record<string, any>;
|
|
34
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
35
|
+
editorRef: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<globalThis.ExtractPropTypes<import('@tinymce/tinymce-vue/lib/cjs/main/ts/components/EditorPropTypes').CopyProps<import('@tinymce/tinymce-vue/lib/cjs/main/ts/components/EditorPropTypes').IPropTypes>>>, () => any, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
|
|
36
|
+
init: any;
|
|
37
|
+
apiKey: any;
|
|
38
|
+
licenseKey: any;
|
|
39
|
+
cloudChannel: any;
|
|
40
|
+
id: any;
|
|
41
|
+
initialValue: any;
|
|
42
|
+
outputFormat: any;
|
|
43
|
+
inline: any;
|
|
44
|
+
modelEvents: any;
|
|
45
|
+
plugins: any;
|
|
46
|
+
tagName: any;
|
|
47
|
+
toolbar: any;
|
|
48
|
+
modelValue: any;
|
|
49
|
+
disabled: any;
|
|
50
|
+
readonly: any;
|
|
51
|
+
tinymceScriptSrc: any;
|
|
52
|
+
}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
|
|
53
|
+
P: {};
|
|
54
|
+
B: {};
|
|
55
|
+
D: {};
|
|
56
|
+
C: {};
|
|
57
|
+
M: {};
|
|
58
|
+
Defaults: {};
|
|
59
|
+
}, Readonly<globalThis.ExtractPropTypes<import('@tinymce/tinymce-vue/lib/cjs/main/ts/components/EditorPropTypes').CopyProps<import('@tinymce/tinymce-vue/lib/cjs/main/ts/components/EditorPropTypes').IPropTypes>>>, () => any, {}, {}, {}, {
|
|
60
|
+
init: any;
|
|
61
|
+
apiKey: any;
|
|
62
|
+
licenseKey: any;
|
|
63
|
+
cloudChannel: any;
|
|
64
|
+
id: any;
|
|
65
|
+
initialValue: any;
|
|
66
|
+
outputFormat: any;
|
|
67
|
+
inline: any;
|
|
68
|
+
modelEvents: any;
|
|
69
|
+
plugins: any;
|
|
70
|
+
tagName: any;
|
|
71
|
+
toolbar: any;
|
|
72
|
+
modelValue: any;
|
|
73
|
+
disabled: any;
|
|
74
|
+
readonly: any;
|
|
75
|
+
tinymceScriptSrc: any;
|
|
76
|
+
}> | null;
|
|
77
|
+
}, HTMLDivElement>;
|
|
78
|
+
export default _default;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defProps = Object.defineProperties;
|
|
4
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
5
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __spreadValues = (a, b) => {
|
|
10
|
+
for (var prop in b || (b = {}))
|
|
11
|
+
if (__hasOwnProp.call(b, prop))
|
|
12
|
+
__defNormalProp(a, prop, b[prop]);
|
|
13
|
+
if (__getOwnPropSymbols)
|
|
14
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
15
|
+
if (__propIsEnum.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
}
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
20
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
22
|
+
const vue = require("vue");
|
|
23
|
+
const Editor = require("../node_modules/@tinymce/tinymce-vue/lib/es2015/main/ts/components/Editor.js");
|
|
24
|
+
const _hoisted_1 = { class: "jky-rich-editor" };
|
|
25
|
+
const _sfc_main = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
|
|
26
|
+
name: "JkyRichEditor"
|
|
27
|
+
}), {
|
|
28
|
+
__name: "RichEditor",
|
|
29
|
+
props: /* @__PURE__ */ vue.mergeModels({
|
|
30
|
+
modelValue: { default: "" },
|
|
31
|
+
disabled: { type: Boolean, default: false },
|
|
32
|
+
placeholder: { default: "" },
|
|
33
|
+
height: { default: "400px" },
|
|
34
|
+
language: { default: "zh-CN" },
|
|
35
|
+
plugins: { default: "preview importcss searchreplace autolink autosave save directionality code visualblocks visualchars fullscreen image link media codesample table charmap pagebreak nonbreaking anchor insertdatetime advlist lists wordcount help charmap quickbars emoticons" },
|
|
36
|
+
toolbar: { default: "undo redo | blocks fontfamily fontsize | bold italic underline strikethrough | link image media table mergetags | addcomment showcomments | spellcheckdialog a11ycheck typography | alignleft aligncenter alignright alignjustify | outdent indent | checklist numlist bullist indent outdent | emoticons charmap | removeformat | codesample | code" },
|
|
37
|
+
menubar: { type: [Boolean, String], default: true },
|
|
38
|
+
branding: { type: Boolean, default: false },
|
|
39
|
+
statusbar: { type: Boolean, default: true },
|
|
40
|
+
readonly: { type: Boolean, default: false },
|
|
41
|
+
apiKey: { default: "0hp1syn1u5hzcdgv20yow1bcp4mvba8xtqi6pcgpnuz61dul" },
|
|
42
|
+
init: { default: () => ({}) }
|
|
43
|
+
}, {
|
|
44
|
+
"modelValue": {
|
|
45
|
+
default: ""
|
|
46
|
+
},
|
|
47
|
+
"modelModifiers": {}
|
|
48
|
+
}),
|
|
49
|
+
emits: /* @__PURE__ */ vue.mergeModels(["update:modelValue", "change", "focus", "blur"], ["update:modelValue"]),
|
|
50
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
51
|
+
const props = __props;
|
|
52
|
+
const emit = __emit;
|
|
53
|
+
const modelValue = vue.useModel(__props, "modelValue");
|
|
54
|
+
const editorRef = vue.ref(null);
|
|
55
|
+
function handleEditorChange(content) {
|
|
56
|
+
modelValue.value = content;
|
|
57
|
+
emit("change", content);
|
|
58
|
+
}
|
|
59
|
+
function handleFocus(event) {
|
|
60
|
+
emit("focus", event);
|
|
61
|
+
}
|
|
62
|
+
function handleBlur(event) {
|
|
63
|
+
emit("blur", event);
|
|
64
|
+
}
|
|
65
|
+
const initConfig = __spreadValues({
|
|
66
|
+
language: props.language,
|
|
67
|
+
height: Number.parseInt(props.height.replace("px", ""), 10),
|
|
68
|
+
placeholder: props.placeholder,
|
|
69
|
+
plugins: props.plugins,
|
|
70
|
+
toolbar: props.toolbar,
|
|
71
|
+
menubar: props.menubar,
|
|
72
|
+
branding: props.branding,
|
|
73
|
+
statusbar: props.statusbar,
|
|
74
|
+
readonly: props.readonly || props.disabled,
|
|
75
|
+
content_style: `
|
|
76
|
+
body {
|
|
77
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
78
|
+
font-size: 14px;
|
|
79
|
+
line-height: 1.6;
|
|
80
|
+
}
|
|
81
|
+
`
|
|
82
|
+
}, props.init);
|
|
83
|
+
__expose({
|
|
84
|
+
editor: editorRef
|
|
85
|
+
});
|
|
86
|
+
return (_ctx, _cache) => {
|
|
87
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
88
|
+
vue.createVNode(vue.unref(Editor.Editor), {
|
|
89
|
+
ref_key: "editorRef",
|
|
90
|
+
ref: editorRef,
|
|
91
|
+
modelValue: modelValue.value,
|
|
92
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
|
|
93
|
+
"api-key": __props.apiKey,
|
|
94
|
+
init: initConfig,
|
|
95
|
+
disabled: __props.disabled,
|
|
96
|
+
readonly: __props.readonly,
|
|
97
|
+
onOnChange: handleEditorChange,
|
|
98
|
+
onOnFocus: handleFocus,
|
|
99
|
+
onOnBlur: handleBlur
|
|
100
|
+
}, null, 8, ["modelValue", "api-key", "disabled", "readonly"])
|
|
101
|
+
]);
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}));
|
|
105
|
+
exports.default = _sfc_main;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const RichEditor_vue_vue_type_script_setup_true_lang = require("./RichEditor.vue.js");
|
|
4
|
+
;/* empty css */
|
|
5
|
+
exports.default = RichEditor_vue_vue_type_script_setup_true_lang.default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const RichEditor_vue_vue_type_script_setup_true_lang = require("./RichEditor.vue.js");
|
|
4
|
+
;/* empty css */
|
|
5
|
+
const withInstall = require("../utils/with-install.js");
|
|
6
|
+
const JkyRichEditor = withInstall.installWithSFC(RichEditor_vue_vue_type_script_setup_true_lang.default);
|
|
7
|
+
exports.JkyRichEditor = JkyRichEditor;
|
|
8
|
+
exports.default = JkyRichEditor;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
/* 禁止使用 @apply,所有 TailwindCSS 工具类直接写在 class 中 */
|
|
3
|
+
/* 样式文件仅用于定义组件特定的自定义纯 CSS 样式 */
|
|
4
|
+
/* RichEditor 组件样式变量 */
|
|
5
|
+
:root {
|
|
6
|
+
--jky-rich-editor-border: #d9d9d9;
|
|
7
|
+
--jky-rich-editor-border-hover: #409eff;
|
|
8
|
+
--jky-rich-editor-border-radius: 4px;
|
|
9
|
+
--jky-rich-editor-box-shadow: 0 0 0 1px #409eff;
|
|
10
|
+
}
|
|
11
|
+
.jky-rich-editor {
|
|
12
|
+
width: 100%;
|
|
13
|
+
}
|
|
14
|
+
.jky-rich-editor .tox-tinymce {
|
|
15
|
+
border: 1px solid var(--jky-rich-editor-border);
|
|
16
|
+
border-radius: var(--jky-rich-editor-border-radius);
|
|
17
|
+
transition: border-color 0.2s;
|
|
18
|
+
}
|
|
19
|
+
.jky-rich-editor .tox-tinymce:hover {
|
|
20
|
+
border-color: var(--jky-rich-editor-border-hover);
|
|
21
|
+
}
|
|
22
|
+
.jky-rich-editor .tox-tinymce:focus-within {
|
|
23
|
+
border-color: var(--jky-rich-editor-border-hover);
|
|
24
|
+
box-shadow: var(--jky-rich-editor-box-shadow);
|
|
25
|
+
}
|
|
26
|
+
/* 禁用状态 */
|
|
27
|
+
.jky-rich-editor.is-disabled .tox-tinymce {
|
|
28
|
+
background-color: #f5f7fa;
|
|
29
|
+
cursor: not-allowed;
|
|
30
|
+
}
|
|
31
|
+
/* 只读状态 */
|
|
32
|
+
.jky-rich-editor.is-readonly .tox-tinymce {
|
|
33
|
+
background-color: #fafafa;
|
|
34
|
+
}
|
package/dist/lib/style.css
CHANGED
|
@@ -505,6 +505,10 @@
|
|
|
505
505
|
margin-left: calc(var(--spacing) * 2);
|
|
506
506
|
}
|
|
507
507
|
|
|
508
|
+
.ml-3 {
|
|
509
|
+
margin-left: calc(var(--spacing) * 3);
|
|
510
|
+
}
|
|
511
|
+
|
|
508
512
|
.icon-\[ant-design--menu-fold-outlined\] {
|
|
509
513
|
width: 1em;
|
|
510
514
|
height: 1em;
|
|
@@ -1005,6 +1009,10 @@
|
|
|
1005
1009
|
display: inline;
|
|
1006
1010
|
}
|
|
1007
1011
|
|
|
1012
|
+
.table {
|
|
1013
|
+
display: table;
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1008
1016
|
.h-4 {
|
|
1009
1017
|
height: calc(var(--spacing) * 4);
|
|
1010
1018
|
}
|
|
@@ -1110,6 +1118,10 @@
|
|
|
1110
1118
|
justify-content: space-around;
|
|
1111
1119
|
}
|
|
1112
1120
|
|
|
1121
|
+
.justify-between {
|
|
1122
|
+
justify-content: space-between;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1113
1125
|
.justify-end {
|
|
1114
1126
|
justify-content: flex-end;
|
|
1115
1127
|
}
|
|
@@ -1267,6 +1279,10 @@
|
|
|
1267
1279
|
background-color: var(--color-red-500) !important;
|
|
1268
1280
|
}
|
|
1269
1281
|
|
|
1282
|
+
.bg-transparent {
|
|
1283
|
+
background-color: #0000;
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1270
1286
|
.bg-white {
|
|
1271
1287
|
background-color: var(--color-white);
|
|
1272
1288
|
}
|
|
@@ -1456,6 +1472,14 @@
|
|
|
1456
1472
|
text-transform: lowercase;
|
|
1457
1473
|
}
|
|
1458
1474
|
|
|
1475
|
+
.italic {
|
|
1476
|
+
font-style: italic;
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1479
|
+
.underline {
|
|
1480
|
+
text-decoration-line: underline;
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1459
1483
|
.outline {
|
|
1460
1484
|
outline-style: var(--tw-outline-style);
|
|
1461
1485
|
outline-width: 1px;
|
|
@@ -1466,6 +1490,10 @@
|
|
|
1466
1490
|
filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
|
|
1467
1491
|
}
|
|
1468
1492
|
|
|
1493
|
+
.filter {
|
|
1494
|
+
filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
|
|
1495
|
+
}
|
|
1496
|
+
|
|
1469
1497
|
.transition {
|
|
1470
1498
|
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
|
|
1471
1499
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
package/dist/lib/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--jky-button-primary-bg:#007bff;--jky-button-primary-text:#fff;--jky-button-primary-hover-bg:#0056b3;--jky-button-success-bg:#28a745;--jky-button-success-text:#fff;--jky-button-success-hover-bg:#1e7e34;--jky-button-warning-bg:#ffc107;--jky-button-warning-text:#fff;--jky-button-warning-hover-bg:#e0a800;--jky-button-danger-bg:#dc3545;--jky-button-danger-text:#fff;--jky-button-danger-hover-bg:#c82333;--jky-button-info-bg:#6c757d;--jky-button-info-text:#fff;--jky-button-info-hover-bg:#5a6268;--jky-button-default-bg:#fff;--jky-button-default-text:#606266;--jky-button-default-border:#dcdfe6;--jky-button-default-hover-bg:#f5f7fa;--jky-button-font-size:14px;--jky-button-font-size-small:12px;--jky-button-font-size-large:16px;--jky-button-padding:0 16px;--jky-button-padding-small:0 12px;--jky-button-padding-large:0 20px;--jky-button-height:40px;--jky-button-height-small:32px;--jky-button-height-large:48px;--jky-button-border-radius:0.375rem;--jky-button-disabled-opacity:0.5;--jky-button-disabled-bg:#f5f7fa;--jky-button-disabled-text:#c0c4cc;--jky-button-loading-opacity:0.7;--jky-button-icon-size:1.25rem;--jky-button-icon-margin:0.5rem}.jky-button{align-items:center;background-color:var(--jky-button-default-bg);border:1px solid var(--jky-button-default-border);border-radius:var(--jky-button-border-radius);color:var(--jky-button-default-text);cursor:pointer;display:inline-flex;font-size:var(--jky-button-font-size);font-weight:500;height:var(--jky-button-height);justify-content:center;padding:var(--jky-button-padding);transition:color .2s,background-color .2s}.jky-button--primary{background-color:var(--jky-button-primary-bg);border:none;color:var(--jky-button-primary-text)}.jky-button--primary:hover{background-color:var(--jky-button-primary-hover-bg)}.jky-button--success{background-color:var(--jky-button-success-bg);border:none;color:var(--jky-button-success-text)}.jky-button--success:hover{background-color:var(--jky-button-success-hover-bg)}.jky-button--warning{background-color:var(--jky-button-warning-bg);border:none;color:var(--jky-button-warning-text)}.jky-button--warning:hover{background-color:var(--jky-button-warning-hover-bg)}.jky-button--danger{background-color:var(--jky-button-danger-bg);border:none;color:var(--jky-button-danger-text)}.jky-button--danger:hover{background-color:var(--jky-button-danger-hover-bg)}.jky-button--info{background-color:var(--jky-button-info-bg);border:none;color:var(--jky-button-info-text)}.jky-button--info:hover{background-color:var(--jky-button-info-hover-bg)}.jky-button--small{font-size:var(--jky-button-font-size-small);height:var(--jky-button-height-small);padding:var(--jky-button-padding-small)}.jky-button--large{font-size:var(--jky-button-font-size-large);height:var(--jky-button-height-large);padding:var(--jky-button-padding-large)}.jky-button.is-disabled{background-color:var(--jky-button-disabled-bg);color:var(--jky-button-disabled-text);cursor:not-allowed;opacity:var(--jky-button-disabled-opacity);pointer-events:none}.jky-button.is-loading{opacity:var(--jky-button-loading-opacity);pointer-events:none;position:relative}.jky-button__loading{display:flex;inset:0;position:absolute}.jky-button__icon,.jky-button__loading{align-items:center;justify-content:center}.jky-button__icon{display:inline-flex;font-size:1em;margin-right:var(--jky-button-icon-margin)}.jky-button__icon:only-child{margin-right:0}.jky-button--suffix .jky-button__icon{margin-left:var(--jky-button-icon-margin);margin-right:0}.jky-button:focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 4px #000;outline:2px solid transparent;outline-offset:2px}.loading-spinner{animation:spin 1s linear infinite;height:var(--jky-button-icon-size);width:var(--jky-button-icon-size)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}:root{--jky-button-nav-active-bg:var(--el-color-primary);--jky-button-nav-active-text:#fff;--jky-button-nav-inactive-bg:var(--el-fill-color-light);--jky-button-nav-inactive-text:var(--el-text-color-regular);--el-dropdown-menu-margin-left:12px}.jky-button-nav{align-items:center;display:flex;flex-wrap:wrap;.el-dropdown{margin-left:var(--el-dropdown-menu-margin-left)}}.jky-button-nav-item{background-color:var(--jky-button-nav-inactive-bg);color:var(--jky-button-nav-inactive-text);&.is-active,&[aria-pressed=true]{background-color:var(--jky-button-nav-active-bg);color:var(--jky-button-nav-active-text)}}:root{--j-code-mirror-border-color:#dcdfe6;--j-code-mirror-border-radius:4px;--j-code-mirror-height:400px}.j-code-mirror-editor{border:1px solid var(--j-code-mirror-border-color);border-radius:var(--j-code-mirror-border-radius);height:var(--j-code-mirror-height);overflow:hidden;width:100%}.code-mirror-container{height:100%;overflow:auto;width:100%}.code-mirror-container .cm-editor{height:100%}.code-mirror-container .cm-scroller{font-family:Consolas,Monaco,Courier New,monospace;font-size:14px;line-height:1.5;overflow:auto}.code-mirror-container .cm-gutters{background-color:#f5f7fa;border-right:1px solid #e4e7ed;color:#909399}html.dark .j-code-mirror-editor{border-color:#4c4d4f}html.dark .code-mirror-container .cm-gutters{background-color:#2c2d2d;border-color:#4c4d4f;color:#909399}:root{--jky-form-item-border-width:4px;--jky-form-item-border-color:var(--el-color-primary);--jky-form-item-bg-color:rgba(var(--el-color-primary-rgb),0.5)}:root{--jky-menu-bg-color:#fff;--jky-menu-text-color:#303133;--jky-menu-active-color:#409eff;--jky-menu-hover-bg-color:#f5f7fa;--jky-menu-hover-text-color:#606266;--jky-menu-item-height:56px;--jky-menu-item-padding:0 20px;--jky-menu-item-font-size:14px;--jky-menu-icon-size:18px;--jky-menu-icon-margin:8px;--jky-menu-border-color:#e4e7ed;--jky-menu-disabled-opacity:0.5;--jky-menu-disabled-text-color:#c0c4cc}.jky-menu{li+li{margin-top:0}}.jky-menu-item__icon{align-items:center;display:inline-flex;flex-shrink:0;font-size:var(--jky-menu-icon-size);height:var(--jky-menu-icon-size);justify-content:center;margin-right:var(--jky-menu-icon-margin);width:var(--jky-menu-icon-size)}:root{--jky-page-header-bg-color:#1890ff;--jky-page-header-bg-size:cover;--jky-page-header-bg-position:center;--jky-page-header-box-shadow:0 2px 8px rgba(0,0,0,.15);--jky-page-header-padding-x:24px;--jky-page-header-padding-x-mobile:16px;--jky-page-header-gap:16px;--jky-page-header-gap-mobile:12px;--jky-page-header-gap-left:12px;--jky-page-header-gap-status:12px;--jky-page-header-gap-center:24px;--jky-page-header-gap-center-mobile:12px;--jky-page-header-title-color:#fff;--jky-page-header-title-size:20px;--jky-page-header-title-size-mobile:16px;--jky-page-header-title-weight:600;--jky-page-header-text-color:hsla(0,0%,100%,.85);--jky-page-header-text-size:16px;--jky-page-header-icon-color:#fff;--jky-page-header-icon-size:20px;--jky-page-header-icon-hover-opacity:0.8;--jky-page-header-logo-height:40px;--jky-page-header-avatar-size:32px}.jky-page-header{background-color:var(--jky-page-header-bg-color);background-position:var(--jky-page-header-bg-position);background-size:var(--jky-page-header-bg-size);box-shadow:var(--jky-page-header-box-shadow);width:100%}.jky-page-header__container{align-items:center;display:flex;height:100%;justify-content:space-between;margin:0 auto;max-width:100%;padding:0 var(--jky-page-header-padding-x)}.jky-page-header__left{align-items:center;display:flex;flex-shrink:0;gap:var(--jky-page-header-gap-left)}.jky-page-header__logo{height:var(--jky-page-header-logo-height);object-fit:contain;width:auto}.jky-page-header__title{color:var(--jky-page-header-title-color);font-size:var(--jky-page-header-title-size);font-weight:var(--jky-page-header-title-weight);white-space:nowrap}.jky-page-header__center{align-items:center;display:flex;flex:1;justify-content:center;margin:0 var(--jky-page-header-gap-center);min-width:0}.jky-page-header__right{align-items:center;display:flex;flex-shrink:0;gap:var(--jky-page-header-gap)}.jky-page-header__status-icons{align-items:center;display:flex;gap:var(--jky-page-header-gap-status)}.jky-page-header__status-icon{color:var(--jky-page-header-icon-color);cursor:pointer;transition:opacity .2s;&:hover{opacity:var(--jky-page-header-icon-hover-opacity)}}.jky-page-header__time{color:var(--jky-page-header-text-color);font-size:var(--jky-page-header-text-size);white-space:nowrap}.jky-page-header__user{align-items:center;color:var(--jky-page-header-text-color);cursor:pointer;display:flex;gap:8px}.jky-page-header__avatar{color:var(--jky-page-header-icon-color);img{height:100%;object-fit:cover;width:100%}}.jky-page-header__username{white-space:nowrap}.jky-page-header__logout,.jky-page-header__username{color:var(--jky-page-header-text-color);font-size:var(--jky-page-header-text-size)}@media (max-width:768px){.jky-page-header__container{padding:0 var(--jky-page-header-padding-x-mobile)}.jky-page-header__title{font-size:var(--jky-page-header-title-size-mobile)}.jky-page-header__center{margin:0 var(--jky-page-header-gap-center-mobile)}.jky-page-header__right{gap:var(--jky-page-header-gap-mobile)}}:root{--jky-say-hello-bg:#42b883;--jky-say-hello-text:#fff;--jky-say-hello-hover-bg:#3aa876;--jky-say-hello-font-size:16px;--jky-say-hello-padding:8px 20px;--jky-say-hello-margin:4px 2px;--jky-say-hello-border-radius:6px}.jky-say-hello{background-color:var(--jky-say-hello-bg);border-radius:var(--jky-say-hello-border-radius);color:var(--jky-say-hello-text);cursor:pointer;display:inline-block;font-size:var(--jky-say-hello-font-size);margin:var(--jky-say-hello-margin);padding:var(--jky-say-hello-padding);text-align:center;text-decoration:none;transition:background-color .2s ease}.jky-say-hello:hover{background-color:var(--jky-say-hello-hover-bg)}@import "tailwindcss";@plugin "@iconify/tailwind4";@source "../node_modules/jky-component-lib/dist/es/";@source "../docs/**/*.md";@source "./**/*.md";@source "./**/*.vue";@source "./**/*.css";@custom-variant dark (&:is(.dark *))
|
|
1
|
+
:root{--jky-add-input-gap:12px;--jky-add-input-row-gap:8px;--jky-add-input-min-width:100px;--jky-add-input-action-width:80px}.jky-add-input{display:flex;flex-direction:column;gap:var(--jky-add-input-row-gap);min-width:var(--jky-add-input-min-width)}.jky-add-input__row{align-items:center;display:flex;gap:var(--jky-add-input-gap)}.jky-add-input__key,.jky-add-input__value{flex:1;min-width:0}.jky-add-input__actions{display:flex;flex-shrink:0;gap:var(--jky-add-input-gap);width:var(--jky-add-input-action-width)}:root{--jky-button-primary-bg:#007bff;--jky-button-primary-text:#fff;--jky-button-primary-hover-bg:#0056b3;--jky-button-success-bg:#28a745;--jky-button-success-text:#fff;--jky-button-success-hover-bg:#1e7e34;--jky-button-warning-bg:#ffc107;--jky-button-warning-text:#fff;--jky-button-warning-hover-bg:#e0a800;--jky-button-danger-bg:#dc3545;--jky-button-danger-text:#fff;--jky-button-danger-hover-bg:#c82333;--jky-button-info-bg:#6c757d;--jky-button-info-text:#fff;--jky-button-info-hover-bg:#5a6268;--jky-button-default-bg:#fff;--jky-button-default-text:#606266;--jky-button-default-border:#dcdfe6;--jky-button-default-hover-bg:#f5f7fa;--jky-button-font-size:14px;--jky-button-font-size-small:12px;--jky-button-font-size-large:16px;--jky-button-padding:0 16px;--jky-button-padding-small:0 12px;--jky-button-padding-large:0 20px;--jky-button-height:40px;--jky-button-height-small:32px;--jky-button-height-large:48px;--jky-button-border-radius:0.375rem;--jky-button-disabled-opacity:0.5;--jky-button-disabled-bg:#f5f7fa;--jky-button-disabled-text:#c0c4cc;--jky-button-loading-opacity:0.7;--jky-button-icon-size:1.25rem;--jky-button-icon-margin:0.5rem}.jky-button{align-items:center;background-color:var(--jky-button-default-bg);border:1px solid var(--jky-button-default-border);border-radius:var(--jky-button-border-radius);color:var(--jky-button-default-text);cursor:pointer;display:inline-flex;font-size:var(--jky-button-font-size);font-weight:500;height:var(--jky-button-height);justify-content:center;padding:var(--jky-button-padding);transition:color .2s,background-color .2s}.jky-button--primary{background-color:var(--jky-button-primary-bg);border:none;color:var(--jky-button-primary-text)}.jky-button--primary:hover{background-color:var(--jky-button-primary-hover-bg)}.jky-button--success{background-color:var(--jky-button-success-bg);border:none;color:var(--jky-button-success-text)}.jky-button--success:hover{background-color:var(--jky-button-success-hover-bg)}.jky-button--warning{background-color:var(--jky-button-warning-bg);border:none;color:var(--jky-button-warning-text)}.jky-button--warning:hover{background-color:var(--jky-button-warning-hover-bg)}.jky-button--danger{background-color:var(--jky-button-danger-bg);border:none;color:var(--jky-button-danger-text)}.jky-button--danger:hover{background-color:var(--jky-button-danger-hover-bg)}.jky-button--info{background-color:var(--jky-button-info-bg);border:none;color:var(--jky-button-info-text)}.jky-button--info:hover{background-color:var(--jky-button-info-hover-bg)}.jky-button--small{font-size:var(--jky-button-font-size-small);height:var(--jky-button-height-small);padding:var(--jky-button-padding-small)}.jky-button--large{font-size:var(--jky-button-font-size-large);height:var(--jky-button-height-large);padding:var(--jky-button-padding-large)}.jky-button.is-disabled{background-color:var(--jky-button-disabled-bg);color:var(--jky-button-disabled-text);cursor:not-allowed;opacity:var(--jky-button-disabled-opacity);pointer-events:none}.jky-button.is-loading{opacity:var(--jky-button-loading-opacity);pointer-events:none;position:relative}.jky-button__loading{display:flex;inset:0;position:absolute}.jky-button__icon,.jky-button__loading{align-items:center;justify-content:center}.jky-button__icon{display:inline-flex;font-size:1em;margin-right:var(--jky-button-icon-margin)}.jky-button__icon:only-child{margin-right:0}.jky-button--suffix .jky-button__icon{margin-left:var(--jky-button-icon-margin);margin-right:0}.jky-button:focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 4px #000;outline:2px solid transparent;outline-offset:2px}.loading-spinner{animation:spin 1s linear infinite;height:var(--jky-button-icon-size);width:var(--jky-button-icon-size)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}:root{--jky-button-nav-active-bg:var(--el-color-primary);--jky-button-nav-active-text:#fff;--jky-button-nav-inactive-bg:var(--el-fill-color-light);--jky-button-nav-inactive-text:var(--el-text-color-regular);--el-dropdown-menu-margin-left:12px}.jky-button-nav{align-items:center;display:flex;flex-wrap:wrap;.el-dropdown{margin-left:var(--el-dropdown-menu-margin-left)}}.jky-button-nav-item{background-color:var(--jky-button-nav-inactive-bg);color:var(--jky-button-nav-inactive-text);&.is-active,&[aria-pressed=true]{background-color:var(--jky-button-nav-active-bg);color:var(--jky-button-nav-active-text)}}:root{--j-code-mirror-border-color:#dcdfe6;--j-code-mirror-border-radius:4px;--j-code-mirror-height:400px}.j-code-mirror-editor{border-radius:var(--j-code-mirror-border-radius);height:var(--j-code-mirror-height);overflow:hidden;width:100%}.code-mirror-container{height:100%;overflow:auto;width:100%}.code-mirror-container .cm-editor{height:100%}.code-mirror-container .cm-scroller{font-family:Consolas,Monaco,Courier New,monospace;font-size:14px;line-height:1.5;overflow:auto}.code-mirror-container .cm-gutters{background-color:#2c2d2d;border-color:#4c4d4f;color:#909399}:root{--jky-form-item-border-width:4px;--jky-form-item-border-color:var(--el-color-primary);--jky-form-item-bg-color:rgba(var(--el-color-primary-rgb),0.5)}:root{--jky-menu-bg-color:#fff;--jky-menu-text-color:#303133;--jky-menu-active-color:#409eff;--jky-menu-hover-bg-color:#f5f7fa;--jky-menu-hover-text-color:#606266;--jky-menu-item-height:56px;--jky-menu-item-padding:0 20px;--jky-menu-item-font-size:14px;--jky-menu-icon-size:18px;--jky-menu-icon-margin:8px;--jky-menu-border-color:#e4e7ed;--jky-menu-disabled-opacity:0.5;--jky-menu-disabled-text-color:#c0c4cc}.jky-menu{li+li{margin-top:0}}.jky-menu-item__icon{align-items:center;display:inline-flex;flex-shrink:0;font-size:var(--jky-menu-icon-size);height:var(--jky-menu-icon-size);justify-content:center;margin-right:var(--jky-menu-icon-margin);width:var(--jky-menu-icon-size)}:root{--jky-page-header-bg-color:#1890ff;--jky-page-header-bg-size:cover;--jky-page-header-bg-position:center;--jky-page-header-box-shadow:0 2px 8px rgba(0,0,0,.15);--jky-page-header-padding-x:24px;--jky-page-header-padding-x-mobile:16px;--jky-page-header-gap:16px;--jky-page-header-gap-mobile:12px;--jky-page-header-gap-left:12px;--jky-page-header-gap-status:12px;--jky-page-header-gap-center:24px;--jky-page-header-gap-center-mobile:12px;--jky-page-header-title-color:#fff;--jky-page-header-title-size:20px;--jky-page-header-title-size-mobile:16px;--jky-page-header-title-weight:600;--jky-page-header-text-color:hsla(0,0%,100%,.85);--jky-page-header-text-size:16px;--jky-page-header-icon-color:#fff;--jky-page-header-icon-size:20px;--jky-page-header-icon-hover-opacity:0.8;--jky-page-header-logo-height:40px;--jky-page-header-avatar-size:32px}.jky-page-header{background-color:var(--jky-page-header-bg-color);background-position:var(--jky-page-header-bg-position);background-size:var(--jky-page-header-bg-size);box-shadow:var(--jky-page-header-box-shadow);width:100%}.jky-page-header__container{align-items:center;display:flex;height:100%;justify-content:space-between;margin:0 auto;max-width:100%;padding:0 var(--jky-page-header-padding-x)}.jky-page-header__left{align-items:center;display:flex;flex-shrink:0;gap:var(--jky-page-header-gap-left)}.jky-page-header__logo{height:var(--jky-page-header-logo-height);object-fit:contain;width:auto}.jky-page-header__title{color:var(--jky-page-header-title-color);font-size:var(--jky-page-header-title-size);font-weight:var(--jky-page-header-title-weight);white-space:nowrap}.jky-page-header__center{align-items:center;display:flex;flex:1;justify-content:center;margin:0 var(--jky-page-header-gap-center);min-width:0}.jky-page-header__right{align-items:center;display:flex;flex-shrink:0;gap:var(--jky-page-header-gap)}.jky-page-header__status-icons{align-items:center;display:flex;gap:var(--jky-page-header-gap-status)}.jky-page-header__status-icon{color:var(--jky-page-header-icon-color);cursor:pointer;transition:opacity .2s;&:hover{opacity:var(--jky-page-header-icon-hover-opacity)}}.jky-page-header__time{color:var(--jky-page-header-text-color);font-size:var(--jky-page-header-text-size);white-space:nowrap}.jky-page-header__user{align-items:center;color:var(--jky-page-header-text-color);cursor:pointer;display:flex;gap:8px}.jky-page-header__avatar{color:var(--jky-page-header-icon-color);img{height:100%;object-fit:cover;width:100%}}.jky-page-header__username{white-space:nowrap}.jky-page-header__logout,.jky-page-header__username{color:var(--jky-page-header-text-color);font-size:var(--jky-page-header-text-size)}@media (max-width:768px){.jky-page-header__container{padding:0 var(--jky-page-header-padding-x-mobile)}.jky-page-header__title{font-size:var(--jky-page-header-title-size-mobile)}.jky-page-header__center{margin:0 var(--jky-page-header-gap-center-mobile)}.jky-page-header__right{gap:var(--jky-page-header-gap-mobile)}}:root{--jky-rich-editor-border:#d9d9d9;--jky-rich-editor-border-hover:#409eff;--jky-rich-editor-border-radius:4px;--jky-rich-editor-box-shadow:0 0 0 1px #409eff}.jky-rich-editor{width:100%}.jky-rich-editor .tox-tinymce{border:1px solid var(--jky-rich-editor-border);border-radius:var(--jky-rich-editor-border-radius);transition:border-color .2s}.jky-rich-editor .tox-tinymce:hover{border-color:var(--jky-rich-editor-border-hover)}.jky-rich-editor .tox-tinymce:focus-within{border-color:var(--jky-rich-editor-border-hover);box-shadow:var(--jky-rich-editor-box-shadow)}.jky-rich-editor.is-disabled .tox-tinymce{background-color:#f5f7fa;cursor:not-allowed}.jky-rich-editor.is-readonly .tox-tinymce{background-color:#fafafa}:root{--jky-say-hello-bg:#42b883;--jky-say-hello-text:#fff;--jky-say-hello-hover-bg:#3aa876;--jky-say-hello-font-size:16px;--jky-say-hello-padding:8px 20px;--jky-say-hello-margin:4px 2px;--jky-say-hello-border-radius:6px}.jky-say-hello{background-color:var(--jky-say-hello-bg);border-radius:var(--jky-say-hello-border-radius);color:var(--jky-say-hello-text);cursor:pointer;display:inline-block;font-size:var(--jky-say-hello-font-size);margin:var(--jky-say-hello-margin);padding:var(--jky-say-hello-padding);text-align:center;text-decoration:none;transition:background-color .2s ease}.jky-say-hello:hover{background-color:var(--jky-say-hello-hover-bg)}@import "tailwindcss";@plugin "@iconify/tailwind4";@source "../node_modules/jky-component-lib/dist/es/";@source "../docs/**/*.md";@source "./**/*.md";@source "./**/*.vue";@source "./**/*.css";@custom-variant dark (&:is(.dark *))
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* 响应式工具栏配置
|
|
4
|
+
*/
|
|
5
|
+
export interface UseResponsiveToolbarOptions {
|
|
6
|
+
/** 工具栏容器引用 */
|
|
7
|
+
toolbarRef: Ref<HTMLElement | null>;
|
|
8
|
+
/** 按钮数量限制(可选),超出此数量则折叠 */
|
|
9
|
+
buttonLimit?: number;
|
|
10
|
+
/** 按钮之间的间距(像素) */
|
|
11
|
+
buttonGap?: number;
|
|
12
|
+
/** 最小可见按钮数量(即使空间不够也会显示) */
|
|
13
|
+
minVisibleButtons?: number;
|
|
14
|
+
/** 工具栏可用宽度百分比(默认 0.5,即 50%) */
|
|
15
|
+
widthPercentage?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 响应式工具栏返回值
|
|
19
|
+
*/
|
|
20
|
+
export interface UseResponsiveToolbarReturn {
|
|
21
|
+
/** 可见的按钮数量 */
|
|
22
|
+
visibleCount: Ref<number>;
|
|
23
|
+
/** 是否需要折叠 */
|
|
24
|
+
needCollapse: Ref<boolean>;
|
|
25
|
+
/** 窗口宽度 */
|
|
26
|
+
windowWidth: Ref<number>;
|
|
27
|
+
/** 窗口高度 */
|
|
28
|
+
windowHeight: Ref<number>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 响应式工具栏 Hook
|
|
32
|
+
* 用于监听窗口大小变化,自动计算工具栏按钮的折叠状态
|
|
33
|
+
*
|
|
34
|
+
* @param options 配置选项
|
|
35
|
+
* @returns 工具栏状态
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```vue
|
|
39
|
+
* <script setup lang="ts">
|
|
40
|
+
* import { useResponsiveToolbar } from '../utils'
|
|
41
|
+
*
|
|
42
|
+
* const toolbarRef = ref<HTMLElement | null>(null)
|
|
43
|
+
* const { visibleCount, needCollapse, windowWidth } = useResponsiveToolbar({
|
|
44
|
+
* toolbarRef,
|
|
45
|
+
* buttonLimit: 3, // 最多显示 3 个按钮
|
|
46
|
+
* buttonGap: 8, // 按钮间距 8px
|
|
47
|
+
* minVisibleButtons: 1, // 至少显示 1 个按钮
|
|
48
|
+
* })
|
|
49
|
+
* </script>
|
|
50
|
+
*
|
|
51
|
+
* <template>
|
|
52
|
+
* <div ref="toolbarRef" class="toolbar">
|
|
53
|
+
* <template v-for="(button, index) in buttons" :key="index">
|
|
54
|
+
* <ElButton
|
|
55
|
+
* v-if="index < visibleCount || !needCollapse"
|
|
56
|
+
* :type="index < visibleCount ? 'primary' : 'default'"
|
|
57
|
+
* >
|
|
58
|
+
* {{ button.label }}
|
|
59
|
+
* </ElButton>
|
|
60
|
+
* </template>
|
|
61
|
+
* <ElDropdown v-if="needCollapse">
|
|
62
|
+
* <ElButton>更多</ElButton>
|
|
63
|
+
* <template #dropdown>
|
|
64
|
+
* <ElDropdownMenu>
|
|
65
|
+
* <ElDropdownItem
|
|
66
|
+
* v-for="(button, index) in buttons.slice(visibleCount)"
|
|
67
|
+
* :key="index"
|
|
68
|
+
* >
|
|
69
|
+
* {{ button.label }}
|
|
70
|
+
* </ElDropdownItem>
|
|
71
|
+
* </ElDropdownMenu>
|
|
72
|
+
* </template>
|
|
73
|
+
* </ElDropdown>
|
|
74
|
+
* </div>
|
|
75
|
+
* </template>
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare function useResponsiveToolbar(options: UseResponsiveToolbarOptions): UseResponsiveToolbarReturn;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const core = require("@vueuse/core");
|
|
4
|
+
const vue = require("vue");
|
|
5
|
+
function useResponsiveToolbar(options) {
|
|
6
|
+
const {
|
|
7
|
+
toolbarRef,
|
|
8
|
+
buttonLimit,
|
|
9
|
+
buttonGap = 8,
|
|
10
|
+
minVisibleButtons = 1,
|
|
11
|
+
widthPercentage = 0.5
|
|
12
|
+
} = options;
|
|
13
|
+
const { width: windowWidth, height: windowHeight } = core.useWindowSize();
|
|
14
|
+
const visibleCount = vue.ref(buttonLimit || minVisibleButtons);
|
|
15
|
+
const needCollapse = vue.ref(false);
|
|
16
|
+
function calculateVisibleButtons() {
|
|
17
|
+
if (!toolbarRef.value)
|
|
18
|
+
return;
|
|
19
|
+
const toolbarWidth = toolbarRef.value.clientWidth;
|
|
20
|
+
const buttons = toolbarRef.value.querySelectorAll(".el-button");
|
|
21
|
+
const totalButtons = buttons.length;
|
|
22
|
+
if (totalButtons === 0)
|
|
23
|
+
return;
|
|
24
|
+
if (buttonLimit !== void 0 && buttonLimit > 0) {
|
|
25
|
+
visibleCount.value = Math.min(buttonLimit, totalButtons);
|
|
26
|
+
needCollapse.value = totalButtons > buttonLimit;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const availableWidth = toolbarWidth * widthPercentage;
|
|
30
|
+
let count = 0;
|
|
31
|
+
let usedWidth = 0;
|
|
32
|
+
for (let i = 0; i < totalButtons; i++) {
|
|
33
|
+
const button = buttons[i];
|
|
34
|
+
const buttonWidth = button.offsetWidth + buttonGap;
|
|
35
|
+
if (usedWidth + buttonWidth <= availableWidth) {
|
|
36
|
+
usedWidth += buttonWidth;
|
|
37
|
+
count++;
|
|
38
|
+
} else {
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
visibleCount.value = Math.max(count, minVisibleButtons);
|
|
43
|
+
needCollapse.value = count < totalButtons;
|
|
44
|
+
}
|
|
45
|
+
vue.watch(
|
|
46
|
+
[windowWidth, windowHeight, () => {
|
|
47
|
+
var _a;
|
|
48
|
+
return (_a = toolbarRef.value) == null ? void 0 : _a.children.length;
|
|
49
|
+
}],
|
|
50
|
+
() => {
|
|
51
|
+
vue.nextTick(() => {
|
|
52
|
+
calculateVisibleButtons();
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
{ immediate: true }
|
|
56
|
+
);
|
|
57
|
+
return {
|
|
58
|
+
visibleCount,
|
|
59
|
+
needCollapse,
|
|
60
|
+
windowWidth,
|
|
61
|
+
windowHeight
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
exports.useResponsiveToolbar = useResponsiveToolbar;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jky-component-lib",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.60",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -68,9 +68,14 @@
|
|
|
68
68
|
},
|
|
69
69
|
"peerDependencies": {
|
|
70
70
|
"@codemirror/lang-css": "^6.0.0",
|
|
71
|
+
"@codemirror/lang-html": "^6.0.0",
|
|
71
72
|
"@codemirror/lang-javascript": "^6.0.0",
|
|
72
73
|
"@codemirror/lang-json": "^6.0.0",
|
|
74
|
+
"@codemirror/lang-markdown": "^6.0.0",
|
|
75
|
+
"@codemirror/lang-vue": "^0.1.0",
|
|
73
76
|
"@codemirror/theme-one-dark": "^6.0.0",
|
|
77
|
+
"@tinymce/tinymce-vue": "^6.0.0",
|
|
78
|
+
"@vueuse/core": "^14.2.1",
|
|
74
79
|
"codemirror": "^6.0.0",
|
|
75
80
|
"element-plus": "^2.0.0",
|
|
76
81
|
"vue": "^3.2.0"
|
|
@@ -78,13 +83,17 @@
|
|
|
78
83
|
"devDependencies": {
|
|
79
84
|
"@antfu/eslint-config": "^4.13.0",
|
|
80
85
|
"@codemirror/lang-css": "^6.3.1",
|
|
86
|
+
"@codemirror/lang-html": "^6.4.11",
|
|
81
87
|
"@codemirror/lang-javascript": "^6.2.5",
|
|
82
88
|
"@codemirror/lang-json": "^6.0.2",
|
|
89
|
+
"@codemirror/lang-markdown": "^6.5.0",
|
|
90
|
+
"@codemirror/lang-vue": "^0.1.3",
|
|
83
91
|
"@codemirror/theme-one-dark": "^6.1.3",
|
|
84
92
|
"@iconify/json": "^2.2.454",
|
|
85
93
|
"@iconify/tailwind4": "^1.2.3",
|
|
86
94
|
"@tailwindcss/postcss": "^4.2.2",
|
|
87
95
|
"@tailwindcss/vite": "^4.2.2",
|
|
96
|
+
"@tinymce/tinymce-vue": "^6.3.0",
|
|
88
97
|
"@types/jsdom": "^21.1.7",
|
|
89
98
|
"@types/markdown-it": "^14.1.2",
|
|
90
99
|
"@types/node": "^22.15.14",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|