@ibiz-template/vue3-components 0.7.26-alpha.3 → 0.7.26
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/index-28jZm-aB.js +4 -0
- package/dist/{index-8tGeBxpc.js → index-RwYoggQd.js} +1 -1
- package/dist/{index-CDgQJyai.js → index-s7g1-ymW.js} +1 -1
- package/dist/index.min.css +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/{xlsx-util-8_6qMs6z.js → xlsx-util-Rf5FMxyR.js} +1 -1
- package/es/common/emoji-select/components/categories/categories.css +1 -0
- package/es/common/emoji-select/components/categories/categories.d.ts +30 -0
- package/es/common/emoji-select/components/categories/categories.mjs +48 -0
- package/es/common/emoji-select/components/categories/index.d.ts +1 -0
- package/es/common/emoji-select/components/categories/index.mjs +3 -0
- package/es/common/emoji-select/components/category-label/category-label.css +1 -0
- package/es/common/emoji-select/components/category-label/category-label.d.ts +18 -0
- package/es/common/emoji-select/components/category-label/category-label.mjs +28 -0
- package/es/common/emoji-select/components/category-label/index.d.ts +1 -0
- package/es/common/emoji-select/components/category-label/index.mjs +3 -0
- package/es/common/emoji-select/components/emoji-item/emoji-item.css +1 -0
- package/es/common/emoji-select/components/emoji-item/emoji-item.d.ts +44 -0
- package/es/common/emoji-select/components/emoji-item/emoji-item.mjs +56 -0
- package/es/common/emoji-select/components/emoji-item/index.d.ts +1 -0
- package/es/common/emoji-select/components/emoji-item/index.mjs +3 -0
- package/es/common/emoji-select/components/emoji-list/emoji-list.css +1 -0
- package/es/common/emoji-select/components/emoji-list/emoji-list.d.ts +92 -0
- package/es/common/emoji-select/components/emoji-list/emoji-list.mjs +165 -0
- package/es/common/emoji-select/components/emoji-list/index.d.ts +1 -0
- package/es/common/emoji-select/components/emoji-list/index.mjs +3 -0
- package/es/common/emoji-select/components/index.d.ts +5 -0
- package/es/common/emoji-select/components/index.mjs +12 -0
- package/es/common/emoji-select/components/input-search/index.d.ts +1 -0
- package/es/common/emoji-select/components/input-search/index.mjs +3 -0
- package/es/common/emoji-select/components/input-search/input-search.css +1 -0
- package/es/common/emoji-select/components/input-search/input-search.d.ts +9 -0
- package/es/common/emoji-select/components/input-search/input-search.mjs +49 -0
- package/es/common/emoji-select/emoji-select.css +1 -0
- package/es/common/emoji-select/emoji-select.d.ts +142 -0
- package/es/common/emoji-select/emoji-select.mjs +234 -0
- package/es/common/emoji-select/icons/categories.d.ts +2 -0
- package/es/common/emoji-select/icons/categories.mjs +64 -0
- package/es/common/emoji-select/icons/emoji.d.ts +2 -0
- package/es/common/emoji-select/icons/emoji.mjs +1444 -0
- package/es/common/emoji-select/icons/index.d.ts +3 -0
- package/es/common/emoji-select/icons/index.mjs +5 -0
- package/es/common/emoji-select/icons/search.d.ts +1 -0
- package/es/common/emoji-select/icons/search.mjs +16 -0
- package/es/common/emoji-select/interface/category.d.ts +44 -0
- package/es/common/emoji-select/interface/category.mjs +22 -0
- package/es/common/emoji-select/interface/emoji.d.ts +37 -0
- package/es/common/emoji-select/interface/emoji.mjs +19 -0
- package/es/common/emoji-select/interface/index.d.ts +3 -0
- package/es/common/emoji-select/interface/index.mjs +5 -0
- package/es/common/emoji-select/interface/map-emojis.d.ts +17 -0
- package/es/common/emoji-select/interface/map-emojis.mjs +1 -0
- package/es/common/index.mjs +2 -0
- package/es/common/view-message/view-message.d.ts +1 -0
- package/es/control/calendar/calendar.css +1 -1
- package/es/control/calendar/calendar.d.ts +3 -2
- package/es/control/calendar/calendar.mjs +203 -86
- package/es/control/calendar/components/calendar-daily/calendar-daily.d.ts +1 -1
- package/es/control/calendar/components/calendar-daily/index.d.ts +1 -1
- package/es/control/calendar/components/calendar-week/calendar-week.d.ts +1 -1
- package/es/control/calendar/components/calendar-week/calendar-week.mjs +15 -12
- package/es/control/calendar/components/calendar-week/index.d.ts +1 -1
- package/es/control/calendar/components/calendar-week/use-calendar-week.mjs +1 -0
- package/es/control/calendar/components/custom-calendar/custom-calendar.mjs +4 -114
- package/es/control/calendar/components/interface/calendar-daily.mjs +0 -3
- package/es/control/calendar/components/interface/calendar-week.mjs +3 -2
- package/es/control/calendar/components/interface/custom-calendar.mjs +8 -3
- package/es/control/calendar/components/interface/index.d.ts +0 -1
- package/es/control/calendar/components/interface/index.mjs +0 -1
- package/es/control/calendar/index.d.ts +2 -1
- package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.d.ts +36 -2
- package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.mjs +17 -7
- package/es/control/dashboard/dashboard-design/dashboard-design.d.ts +10 -32
- package/es/control/dashboard/dashboard-design/dashboard-design.mjs +93 -56
- package/es/control/drtab/drtab-control.util.mjs +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.d.ts +25 -0
- package/es/control/grid/grid/grid-control.util.d.ts +8 -0
- package/es/control/grid/grid/grid-control.util.mjs +151 -1
- package/es/control/grid/grid/grid.css +1 -1
- package/es/control/grid/grid/grid.d.ts +8 -0
- package/es/control/grid/grid/grid.mjs +12 -2
- package/es/control/grid/grid/index.d.ts +8 -0
- package/es/control/grid/grid-column/grid-field-column/grid-field-column.d.ts +1 -0
- package/es/control/grid/grid-column/grid-field-column/grid-field-column.mjs +21 -1
- package/es/control/grid/grid-column/grid-field-column/index.d.ts +1 -0
- package/es/control/tree/tree.css +1 -1
- package/es/editor/dropdown-list/dropdown-list-editor.provider.d.ts +1 -0
- package/es/editor/dropdown-list/dropdown-list-editor.provider.mjs +10 -1
- package/es/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.css +1 -0
- package/es/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.d.ts +72 -0
- package/es/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.mjs +123 -0
- package/es/editor/dropdown-list/index.d.ts +1 -0
- package/es/editor/dropdown-list/index.mjs +1 -0
- package/es/editor/index.mjs +6 -0
- package/es/editor/text-box/input/input.d.ts +1 -1
- package/es/locale/en/index.d.ts +14 -0
- package/es/locale/en/index.mjs +14 -0
- package/es/locale/zh-CN/index.d.ts +14 -0
- package/es/locale/zh-CN/index.mjs +14 -0
- package/es/panel-component/nav-tabs/nav-tabs.controller.d.ts +7 -0
- package/es/panel-component/nav-tabs/nav-tabs.controller.mjs +19 -0
- package/lib/common/emoji-select/components/categories/categories.cjs +50 -0
- package/lib/common/emoji-select/components/categories/categories.css +1 -0
- package/lib/common/emoji-select/components/categories/index.cjs +7 -0
- package/lib/common/emoji-select/components/category-label/category-label.cjs +30 -0
- package/lib/common/emoji-select/components/category-label/category-label.css +1 -0
- package/lib/common/emoji-select/components/category-label/index.cjs +7 -0
- package/lib/common/emoji-select/components/emoji-item/emoji-item.cjs +58 -0
- package/lib/common/emoji-select/components/emoji-item/emoji-item.css +1 -0
- package/lib/common/emoji-select/components/emoji-item/index.cjs +7 -0
- package/lib/common/emoji-select/components/emoji-list/emoji-list.cjs +167 -0
- package/lib/common/emoji-select/components/emoji-list/emoji-list.css +1 -0
- package/lib/common/emoji-select/components/emoji-list/index.cjs +7 -0
- package/lib/common/emoji-select/components/index.cjs +20 -0
- package/lib/common/emoji-select/components/input-search/index.cjs +7 -0
- package/lib/common/emoji-select/components/input-search/input-search.cjs +51 -0
- package/lib/common/emoji-select/components/input-search/input-search.css +1 -0
- package/lib/common/emoji-select/emoji-select.cjs +236 -0
- package/lib/common/emoji-select/emoji-select.css +1 -0
- package/lib/common/emoji-select/icons/categories.cjs +66 -0
- package/lib/common/emoji-select/icons/emoji.cjs +1446 -0
- package/lib/common/emoji-select/icons/index.cjs +11 -0
- package/lib/common/emoji-select/icons/search.cjs +18 -0
- package/lib/common/emoji-select/interface/category.cjs +24 -0
- package/lib/common/emoji-select/interface/emoji.cjs +21 -0
- package/lib/common/emoji-select/interface/index.cjs +10 -0
- package/lib/common/emoji-select/interface/map-emojis.cjs +3 -0
- package/lib/common/index.cjs +2 -0
- package/lib/control/calendar/calendar.cjs +203 -86
- package/lib/control/calendar/calendar.css +1 -1
- package/lib/control/calendar/components/calendar-week/calendar-week.cjs +15 -12
- package/lib/control/calendar/components/calendar-week/use-calendar-week.cjs +1 -0
- package/lib/control/calendar/components/custom-calendar/custom-calendar.cjs +7 -117
- package/lib/control/calendar/components/interface/calendar-daily.cjs +0 -3
- package/lib/control/calendar/components/interface/calendar-week.cjs +3 -2
- package/lib/control/calendar/components/interface/custom-calendar.cjs +8 -3
- package/lib/control/calendar/components/interface/index.cjs +0 -3
- package/lib/control/dashboard/custom-dashboard-container/custom-dashboard-container.cjs +17 -7
- package/lib/control/dashboard/dashboard-design/dashboard-design.cjs +93 -56
- package/lib/control/drtab/drtab-control.util.cjs +1 -1
- package/lib/control/grid/grid/grid-control.util.cjs +151 -1
- package/lib/control/grid/grid/grid.cjs +12 -2
- package/lib/control/grid/grid/grid.css +1 -1
- package/lib/control/grid/grid-column/grid-field-column/grid-field-column.cjs +21 -1
- package/lib/control/tree/tree.css +1 -1
- package/lib/editor/dropdown-list/dropdown-list-editor.provider.cjs +10 -1
- package/lib/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.cjs +125 -0
- package/lib/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.css +1 -0
- package/lib/editor/dropdown-list/index.cjs +2 -0
- package/lib/editor/index.cjs +6 -0
- package/lib/locale/en/index.cjs +14 -0
- package/lib/locale/zh-CN/index.cjs +14 -0
- package/lib/panel-component/nav-tabs/nav-tabs.controller.cjs +19 -0
- package/package.json +8 -8
- package/dist/index-oBteffLj.js +0 -4
- package/es/_virtual/localeData.mjs +0 -3
- package/es/control/calendar/components/calendar-month/calendar-month.css +0 -1
- package/es/control/calendar/components/calendar-month/calendar-month.d.ts +0 -18
- package/es/control/calendar/components/calendar-month/calendar-month.mjs +0 -242
- package/es/control/calendar/components/calendar-month/index.d.ts +0 -18
- package/es/control/calendar/components/calendar-month/index.mjs +0 -9
- package/es/control/calendar/components/calendar-month/use-calendar-month.d.ts +0 -3
- package/es/control/calendar/components/calendar-month/use-calendar-month.mjs +0 -384
- package/es/control/calendar/components/interface/calendar-month.d.ts +0 -20
- package/es/control/calendar/components/interface/calendar-month.mjs +0 -43
- package/es/node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/localeData.mjs +0 -13
- package/lib/_virtual/localeData.cjs +0 -5
- package/lib/control/calendar/components/calendar-month/calendar-month.cjs +0 -244
- package/lib/control/calendar/components/calendar-month/calendar-month.css +0 -1
- package/lib/control/calendar/components/calendar-month/index.cjs +0 -14
- package/lib/control/calendar/components/calendar-month/use-calendar-month.cjs +0 -386
- package/lib/control/calendar/components/interface/calendar-month.cjs +0 -46
- package/lib/node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/localeData.cjs +0 -17
- /package/es/node_modules/.pnpm/{@ibiz-template_core@0.7.25_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.26_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs +0 -0
- /package/lib/node_modules/.pnpm/{@ibiz-template_core@0.7.25_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.26_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-emoji-categories{display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;height:var(--ibiz-height-control-default);padding:0 var(--ibiz-spacing-base-loose);overflow-x:auto;background-color:var(--ibiz-color-bg-0)}.ibiz-emoji-categories__category{display:flex;align-items:center;min-width:var(--ibiz-font-size-header-6);height:100%;font-size:var(--ibiz-font-size-header-6);cursor:pointer}.ibiz-emoji-categories__category--svg{line-height:var(--ibiz-font-size-header-6)}.ibiz-emoji-categories__category--svg svg{fill:var(--ibiz-color-text-3)}.ibiz-emoji-categories__category.is-active,.ibiz-emoji-categories__category:hover{position:relative}.ibiz-emoji-categories__category.is-active::after,.ibiz-emoji-categories__category:hover::after{position:absolute;bottom:0;display:block;width:100%;content:"";border-top:.125rem solid var(--ibiz-color-primary)}.ibiz-emoji-categories__category:hover{color:var(--ibiz-color-primary)}.ibiz-emoji-categories__category:hover svg{fill:var(--ibiz-color-primary)}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import './categories.scss';
|
|
3
|
+
export declare const Categories: import("vue").DefineComponent<{
|
|
4
|
+
categories: {
|
|
5
|
+
type: PropType<IData[]>;
|
|
6
|
+
required: true;
|
|
7
|
+
default: () => never[];
|
|
8
|
+
};
|
|
9
|
+
current: {
|
|
10
|
+
type: StringConstructor;
|
|
11
|
+
required: true;
|
|
12
|
+
};
|
|
13
|
+
}, {
|
|
14
|
+
ns: import("@ibiz-template/core").Namespace;
|
|
15
|
+
onSelect: (category: IData) => void;
|
|
16
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "select"[], "select", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
17
|
+
categories: {
|
|
18
|
+
type: PropType<IData[]>;
|
|
19
|
+
required: true;
|
|
20
|
+
default: () => never[];
|
|
21
|
+
};
|
|
22
|
+
current: {
|
|
23
|
+
type: StringConstructor;
|
|
24
|
+
required: true;
|
|
25
|
+
};
|
|
26
|
+
}>> & {
|
|
27
|
+
onSelect?: ((...args: any[]) => any) | undefined;
|
|
28
|
+
}, {
|
|
29
|
+
categories: IData[];
|
|
30
|
+
}, {}>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { createVNode, defineComponent } from 'vue';
|
|
2
|
+
import { useNamespace } from '@ibiz-template/vue3-util';
|
|
3
|
+
import './categories.css';
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
const Categories = /* @__PURE__ */ defineComponent({
|
|
7
|
+
name: "IBizCategories",
|
|
8
|
+
props: {
|
|
9
|
+
categories: {
|
|
10
|
+
type: Array,
|
|
11
|
+
required: true,
|
|
12
|
+
default: () => []
|
|
13
|
+
},
|
|
14
|
+
current: {
|
|
15
|
+
type: String,
|
|
16
|
+
required: true
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
emits: ["select"],
|
|
20
|
+
setup(props, {
|
|
21
|
+
emit
|
|
22
|
+
}) {
|
|
23
|
+
const ns = useNamespace("emoji-categories");
|
|
24
|
+
const onSelect = (category) => {
|
|
25
|
+
emit("select", category);
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
ns,
|
|
29
|
+
onSelect
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
render() {
|
|
33
|
+
return createVNode("div", {
|
|
34
|
+
"class": this.ns.b()
|
|
35
|
+
}, [this.categories.map((category) => {
|
|
36
|
+
return createVNode("div", {
|
|
37
|
+
"class": [this.ns.e("category"), this.ns.is("active", category.name === this.current)],
|
|
38
|
+
"onClick": () => this.onSelect(category)
|
|
39
|
+
}, [createVNode("span", {
|
|
40
|
+
"class": this.ns.em("category", "svg"),
|
|
41
|
+
"title": category.label,
|
|
42
|
+
"innerHTML": category.icon
|
|
43
|
+
}, null)]);
|
|
44
|
+
})]);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
export { Categories };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './categories';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-emoji-category-label{padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-text-3);text-transform:uppercase}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import './category-label.scss';
|
|
2
|
+
export declare const CategoryLabel: import("vue").DefineComponent<{
|
|
3
|
+
name: {
|
|
4
|
+
type: StringConstructor;
|
|
5
|
+
default: string;
|
|
6
|
+
};
|
|
7
|
+
}, {
|
|
8
|
+
ns: import("@ibiz-template/core").Namespace;
|
|
9
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "select"[], "select", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
10
|
+
name: {
|
|
11
|
+
type: StringConstructor;
|
|
12
|
+
default: string;
|
|
13
|
+
};
|
|
14
|
+
}>> & {
|
|
15
|
+
onSelect?: ((...args: any[]) => any) | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
name: string;
|
|
18
|
+
}, {}>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createVNode, defineComponent } from 'vue';
|
|
2
|
+
import { useNamespace } from '@ibiz-template/vue3-util';
|
|
3
|
+
import './category-label.css';
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
const CategoryLabel = /* @__PURE__ */ defineComponent({
|
|
7
|
+
name: "IBizCategoryLabel",
|
|
8
|
+
props: {
|
|
9
|
+
name: {
|
|
10
|
+
type: String,
|
|
11
|
+
default: ""
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
emits: ["select"],
|
|
15
|
+
setup() {
|
|
16
|
+
const ns = useNamespace("emoji-category-label");
|
|
17
|
+
return {
|
|
18
|
+
ns
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
render() {
|
|
22
|
+
return createVNode("div", {
|
|
23
|
+
"class": this.ns.b()
|
|
24
|
+
}, [this.name]);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
export { CategoryLabel };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './category-label';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-emoji-item{box-sizing:content-box;display:flex;align-items:center;justify-self:center;padding:var(--ibiz-spacing-tight);overflow:hidden;cursor:pointer}.ibiz-emoji-item.is-border:hover{background:var(--ibiz-color-bg-0);border-radius:var(--ibiz-border-radius-small)}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import './emoji-item.scss';
|
|
3
|
+
export declare const EmojiItem: import("vue").DefineComponent<{
|
|
4
|
+
emoji: {
|
|
5
|
+
type: PropType<IData>;
|
|
6
|
+
required: true;
|
|
7
|
+
default: () => void;
|
|
8
|
+
};
|
|
9
|
+
size: {
|
|
10
|
+
type: NumberConstructor;
|
|
11
|
+
required: true;
|
|
12
|
+
};
|
|
13
|
+
withBorder: {
|
|
14
|
+
type: BooleanConstructor;
|
|
15
|
+
required: true;
|
|
16
|
+
};
|
|
17
|
+
}, {
|
|
18
|
+
ns: import("@ibiz-template/core").Namespace;
|
|
19
|
+
styleSize: import("vue").ComputedRef<{
|
|
20
|
+
fontSize: string;
|
|
21
|
+
lineHeight: string;
|
|
22
|
+
height: string;
|
|
23
|
+
width: string;
|
|
24
|
+
}>;
|
|
25
|
+
onClick: () => void;
|
|
26
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "click"[], "click", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
27
|
+
emoji: {
|
|
28
|
+
type: PropType<IData>;
|
|
29
|
+
required: true;
|
|
30
|
+
default: () => void;
|
|
31
|
+
};
|
|
32
|
+
size: {
|
|
33
|
+
type: NumberConstructor;
|
|
34
|
+
required: true;
|
|
35
|
+
};
|
|
36
|
+
withBorder: {
|
|
37
|
+
type: BooleanConstructor;
|
|
38
|
+
required: true;
|
|
39
|
+
};
|
|
40
|
+
}>> & {
|
|
41
|
+
onClick?: ((...args: any[]) => any) | undefined;
|
|
42
|
+
}, {
|
|
43
|
+
emoji: IData;
|
|
44
|
+
}, {}>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { computed, createVNode, defineComponent } from 'vue';
|
|
2
|
+
import { useNamespace } from '@ibiz-template/vue3-util';
|
|
3
|
+
import './emoji-item.css';
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
const EmojiItem = /* @__PURE__ */ defineComponent({
|
|
7
|
+
name: "IBizEmojiItem",
|
|
8
|
+
props: {
|
|
9
|
+
emoji: {
|
|
10
|
+
type: Object,
|
|
11
|
+
required: true,
|
|
12
|
+
default: () => {
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
size: {
|
|
16
|
+
type: Number,
|
|
17
|
+
required: true
|
|
18
|
+
},
|
|
19
|
+
withBorder: {
|
|
20
|
+
type: Boolean,
|
|
21
|
+
required: true
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
emits: ["click"],
|
|
25
|
+
setup(props, {
|
|
26
|
+
emit
|
|
27
|
+
}) {
|
|
28
|
+
const ns = useNamespace("emoji-item");
|
|
29
|
+
const styleSize = computed(() => {
|
|
30
|
+
return {
|
|
31
|
+
fontSize: "".concat(props.size - 5, "px"),
|
|
32
|
+
lineHeight: "".concat(props.size, "px"),
|
|
33
|
+
height: "".concat(props.size, "px"),
|
|
34
|
+
width: "".concat(props.size, "px")
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
const onClick = () => {
|
|
38
|
+
emit("click", props.emoji);
|
|
39
|
+
};
|
|
40
|
+
return {
|
|
41
|
+
ns,
|
|
42
|
+
styleSize,
|
|
43
|
+
onClick
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
render() {
|
|
47
|
+
return createVNode("span", {
|
|
48
|
+
"class": [this.ns.b(), this.ns.is("border", this.withBorder)],
|
|
49
|
+
"style": this.styleSize,
|
|
50
|
+
"onClick": this.onClick,
|
|
51
|
+
"innerHTML": this.emoji.data
|
|
52
|
+
}, null);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
export { EmojiItem };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './emoji-item';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-emoji-list{display:block;width:100%;max-width:100%;padding:0 var(--ibiz-spacing-tight);padding-bottom:var(--ibiz-spacing-tight)}.ibiz-emoji-list ::-webkit-scrollbar{width:.25rem;margin-right:-4px;overflow:hidden;border-radius:.25rem}.ibiz-emoji-list__container{height:100%;max-height:24vh;padding:0 var(--ibiz-spacing-extra-tight);overflow-y:scroll}.ibiz-emoji-list--grid-emojis{display:grid;justify-items:center}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import './emoji-list.scss';
|
|
3
|
+
export declare const EmojiList: import("vue").DefineComponent<{
|
|
4
|
+
data: {
|
|
5
|
+
type: PropType<IData>;
|
|
6
|
+
required: true;
|
|
7
|
+
};
|
|
8
|
+
emojisByRow: {
|
|
9
|
+
type: NumberConstructor;
|
|
10
|
+
required: true;
|
|
11
|
+
};
|
|
12
|
+
emojiWithBorder: {
|
|
13
|
+
type: BooleanConstructor;
|
|
14
|
+
};
|
|
15
|
+
emojiSize: {
|
|
16
|
+
type: NumberConstructor;
|
|
17
|
+
};
|
|
18
|
+
filter: {
|
|
19
|
+
type: StringConstructor;
|
|
20
|
+
default: string;
|
|
21
|
+
};
|
|
22
|
+
continuousList: {
|
|
23
|
+
type: BooleanConstructor;
|
|
24
|
+
};
|
|
25
|
+
category: {
|
|
26
|
+
type: StringConstructor;
|
|
27
|
+
default: string;
|
|
28
|
+
};
|
|
29
|
+
categories: {
|
|
30
|
+
type: PropType<IData>;
|
|
31
|
+
required: true;
|
|
32
|
+
default: () => void;
|
|
33
|
+
};
|
|
34
|
+
hasSearch: {
|
|
35
|
+
type: BooleanConstructor;
|
|
36
|
+
};
|
|
37
|
+
}, {
|
|
38
|
+
ns: import("@ibiz-template/core").Namespace;
|
|
39
|
+
emojisRef: import("vue").Ref<IData>;
|
|
40
|
+
gridDynamic: import("vue").ComputedRef<{
|
|
41
|
+
gridTemplateColumns: string;
|
|
42
|
+
}>;
|
|
43
|
+
dataFiltered: import("vue").ComputedRef<any>;
|
|
44
|
+
dataFilteredByCategory: import("vue").ComputedRef<IData>;
|
|
45
|
+
onSelect: (emoji: IData) => void;
|
|
46
|
+
setCategoryRef: (categoryName: string, el: Element) => void;
|
|
47
|
+
renderGridEmojis: (params: IData) => JSX.Element | "";
|
|
48
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("data" | "select")[], "data" | "select", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
49
|
+
data: {
|
|
50
|
+
type: PropType<IData>;
|
|
51
|
+
required: true;
|
|
52
|
+
};
|
|
53
|
+
emojisByRow: {
|
|
54
|
+
type: NumberConstructor;
|
|
55
|
+
required: true;
|
|
56
|
+
};
|
|
57
|
+
emojiWithBorder: {
|
|
58
|
+
type: BooleanConstructor;
|
|
59
|
+
};
|
|
60
|
+
emojiSize: {
|
|
61
|
+
type: NumberConstructor;
|
|
62
|
+
};
|
|
63
|
+
filter: {
|
|
64
|
+
type: StringConstructor;
|
|
65
|
+
default: string;
|
|
66
|
+
};
|
|
67
|
+
continuousList: {
|
|
68
|
+
type: BooleanConstructor;
|
|
69
|
+
};
|
|
70
|
+
category: {
|
|
71
|
+
type: StringConstructor;
|
|
72
|
+
default: string;
|
|
73
|
+
};
|
|
74
|
+
categories: {
|
|
75
|
+
type: PropType<IData>;
|
|
76
|
+
required: true;
|
|
77
|
+
default: () => void;
|
|
78
|
+
};
|
|
79
|
+
hasSearch: {
|
|
80
|
+
type: BooleanConstructor;
|
|
81
|
+
};
|
|
82
|
+
}>> & {
|
|
83
|
+
onSelect?: ((...args: any[]) => any) | undefined;
|
|
84
|
+
onData?: ((...args: any[]) => any) | undefined;
|
|
85
|
+
}, {
|
|
86
|
+
filter: string;
|
|
87
|
+
categories: IData;
|
|
88
|
+
category: string;
|
|
89
|
+
emojiWithBorder: boolean;
|
|
90
|
+
continuousList: boolean;
|
|
91
|
+
hasSearch: boolean;
|
|
92
|
+
}, {}>;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { ref, computed, watch, createVNode, defineComponent } from 'vue';
|
|
2
|
+
import { useNamespace } from '@ibiz-template/vue3-util';
|
|
3
|
+
import '../category-label/index.mjs';
|
|
4
|
+
import '../emoji-item/index.mjs';
|
|
5
|
+
import './emoji-list.css';
|
|
6
|
+
import { EmojiItem } from '../emoji-item/emoji-item.mjs';
|
|
7
|
+
import { CategoryLabel } from '../category-label/category-label.mjs';
|
|
8
|
+
|
|
9
|
+
"use strict";
|
|
10
|
+
const searchByAlias = (term, emoji) => {
|
|
11
|
+
const isRelevant = (alias) => alias.toLowerCase().includes(term);
|
|
12
|
+
return emoji.aliases.some((alias) => isRelevant(alias));
|
|
13
|
+
};
|
|
14
|
+
const EmojiList = /* @__PURE__ */ defineComponent({
|
|
15
|
+
name: "IBizEmojiList",
|
|
16
|
+
props: {
|
|
17
|
+
data: {
|
|
18
|
+
type: Object,
|
|
19
|
+
required: true
|
|
20
|
+
},
|
|
21
|
+
emojisByRow: {
|
|
22
|
+
type: Number,
|
|
23
|
+
required: true
|
|
24
|
+
},
|
|
25
|
+
emojiWithBorder: {
|
|
26
|
+
type: Boolean
|
|
27
|
+
},
|
|
28
|
+
emojiSize: {
|
|
29
|
+
type: Number
|
|
30
|
+
},
|
|
31
|
+
filter: {
|
|
32
|
+
type: String,
|
|
33
|
+
default: ""
|
|
34
|
+
},
|
|
35
|
+
continuousList: {
|
|
36
|
+
type: Boolean
|
|
37
|
+
},
|
|
38
|
+
category: {
|
|
39
|
+
type: String,
|
|
40
|
+
default: ""
|
|
41
|
+
},
|
|
42
|
+
categories: {
|
|
43
|
+
type: Object,
|
|
44
|
+
required: true,
|
|
45
|
+
default: () => {
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
hasSearch: {
|
|
49
|
+
type: Boolean
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
emits: ["select", "data"],
|
|
53
|
+
setup(props, {
|
|
54
|
+
emit
|
|
55
|
+
}) {
|
|
56
|
+
const ns = useNamespace("emoji-list");
|
|
57
|
+
const emojisRef = ref({});
|
|
58
|
+
const categoryRefs = ref({});
|
|
59
|
+
const dataFiltered = computed(() => {
|
|
60
|
+
let data = props.data[props.category];
|
|
61
|
+
const searchValue = props.filter.trim().toLowerCase();
|
|
62
|
+
if (searchValue) {
|
|
63
|
+
data = data.filter((emoji) => searchByAlias(searchValue, emoji));
|
|
64
|
+
}
|
|
65
|
+
return data;
|
|
66
|
+
});
|
|
67
|
+
const categories = computed(() => {
|
|
68
|
+
return Object.keys(props.data);
|
|
69
|
+
});
|
|
70
|
+
const setCategoryRef = (categoryName, el) => {
|
|
71
|
+
if (el) {
|
|
72
|
+
categoryRefs.value[categoryName] = el;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const calcScrollTop = () => {
|
|
76
|
+
return props.hasSearch ? 88 : 44;
|
|
77
|
+
};
|
|
78
|
+
const gridDynamic = computed(() => {
|
|
79
|
+
const percent = 100 / props.emojisByRow;
|
|
80
|
+
return {
|
|
81
|
+
gridTemplateColumns: "repeat(".concat(props.emojisByRow, ", ").concat(percent, "%)")
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
const dataFilteredByCategory = computed(() => {
|
|
85
|
+
const _data = {};
|
|
86
|
+
Object.assign(_data, props.data);
|
|
87
|
+
const searchValue = props.filter.trim().toLowerCase();
|
|
88
|
+
if (searchValue) {
|
|
89
|
+
categories.value.forEach((category) => {
|
|
90
|
+
_data[category] = props.data[category].filter((item) => searchByAlias(searchValue, item));
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return _data;
|
|
94
|
+
});
|
|
95
|
+
const onSelect = (emoji) => {
|
|
96
|
+
emit("select", emoji);
|
|
97
|
+
};
|
|
98
|
+
watch(() => props.data, () => {
|
|
99
|
+
emojisRef.value.$el.scrollTop = 0;
|
|
100
|
+
});
|
|
101
|
+
watch(() => props.category, (newValue) => {
|
|
102
|
+
if (props.continuousList) {
|
|
103
|
+
const categoryEl = categoryRefs.value[newValue].$el;
|
|
104
|
+
emojisRef.value.scrollTop = categoryEl.offsetTop - calcScrollTop();
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
const renderGridEmojis = (params) => {
|
|
108
|
+
const {
|
|
109
|
+
emojis,
|
|
110
|
+
style,
|
|
111
|
+
size,
|
|
112
|
+
withBorder
|
|
113
|
+
} = params;
|
|
114
|
+
return emojis && emojis.length > 0 ? createVNode("div", {
|
|
115
|
+
"class": [ns.m("grid-emojis")],
|
|
116
|
+
"style": style
|
|
117
|
+
}, [emojis.map((emoji) => {
|
|
118
|
+
return createVNode(EmojiItem, {
|
|
119
|
+
"emoji": emoji,
|
|
120
|
+
"size": size,
|
|
121
|
+
"withBorder": withBorder,
|
|
122
|
+
"onClick": () => onSelect(emoji)
|
|
123
|
+
}, null);
|
|
124
|
+
})]) : "";
|
|
125
|
+
};
|
|
126
|
+
return {
|
|
127
|
+
ns,
|
|
128
|
+
emojisRef,
|
|
129
|
+
gridDynamic,
|
|
130
|
+
dataFiltered,
|
|
131
|
+
dataFilteredByCategory,
|
|
132
|
+
onSelect,
|
|
133
|
+
setCategoryRef,
|
|
134
|
+
renderGridEmojis
|
|
135
|
+
};
|
|
136
|
+
},
|
|
137
|
+
render() {
|
|
138
|
+
return createVNode("div", {
|
|
139
|
+
"class": [this.ns.b()]
|
|
140
|
+
}, [createVNode("div", {
|
|
141
|
+
"ref": "emojisRef",
|
|
142
|
+
"class": [this.ns.e("container")]
|
|
143
|
+
}, [this.continuousList ? Object.keys(this.dataFilteredByCategory).map((categoryName) => {
|
|
144
|
+
const category = this.dataFilteredByCategory[categoryName];
|
|
145
|
+
const categoriesItem = this.categories[categoryName];
|
|
146
|
+
const labelName = categoriesItem ? categoriesItem.text : categoryName;
|
|
147
|
+
return createVNode("div", null, [category.length ? createVNode(CategoryLabel, {
|
|
148
|
+
"name": labelName,
|
|
149
|
+
"ref": (el) => this.setCategoryRef(categoryName, el)
|
|
150
|
+
}, null) : "", this.renderGridEmojis({
|
|
151
|
+
emojis: category,
|
|
152
|
+
style: this.gridDynamic,
|
|
153
|
+
size: this.emojiSize,
|
|
154
|
+
withBorder: this.emojiWithBorder
|
|
155
|
+
})]);
|
|
156
|
+
}) : this.renderGridEmojis({
|
|
157
|
+
emojis: this.dataFiltered || [],
|
|
158
|
+
style: this.gridDynamic,
|
|
159
|
+
size: this.emojiSize,
|
|
160
|
+
withBorder: this.emojiWithBorder
|
|
161
|
+
})])]);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
export { EmojiList };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './emoji-list';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import './categories/index.mjs';
|
|
2
|
+
import './category-label/index.mjs';
|
|
3
|
+
import './emoji-item/index.mjs';
|
|
4
|
+
import './emoji-list/index.mjs';
|
|
5
|
+
import './input-search/index.mjs';
|
|
6
|
+
export { Categories } from './categories/categories.mjs';
|
|
7
|
+
export { CategoryLabel } from './category-label/category-label.mjs';
|
|
8
|
+
export { EmojiItem } from './emoji-item/emoji-item.mjs';
|
|
9
|
+
export { EmojiList } from './emoji-list/emoji-list.mjs';
|
|
10
|
+
export { InputSearch } from './input-search/input-search.mjs';
|
|
11
|
+
|
|
12
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './input-search';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-emoji-input-search{display:block;width:100%;max-width:100%}.ibiz-emoji-input-search__container{position:relative;box-sizing:border-box;display:flex;justify-content:center;width:100%;padding:0 var(--ibiz-spacing-base-loose);margin:var(--ibiz-spacing-base) 0 var(--ibiz-spacing-tight) 0}.ibiz-emoji-input-search__container--input{box-sizing:border-box;width:100%;height:var(--ibiz-height-control-default);padding:0 var(--ibiz-spacing-tight);padding-right:calc(var(--ibiz-spacing-tight) * 2 + var(--ibiz-font-size-regular));border:none;border-radius:var(--ibiz-border-radius-small);box-shadow:0 0 0 1px var(--ibiz-color-border) inset}.ibiz-emoji-input-search__container--input:focus{outline:0;box-shadow:0 0 0 1px var(--ibiz-color-primary) inset}.ibiz-emoji-input-search__container--search{position:absolute;top:50%;right:var(--ibiz-spacing-base-loose);padding:0 var(--ibiz-spacing-tight);cursor:pointer;transform:translate(0,-50%)}.ibiz-emoji-input-search__container--search::after{position:absolute;top:50%;right:calc(var(--ibiz-spacing-tight) * 2 + var(--ibiz-font-size-regular));display:block;width:1px;height:var(--ibiz-font-size-regular);content:"";border-left:1px solid var(--ibiz-color-border);transform:translate(0,-50%)}.ibiz-emoji-input-search__container--search svg{fill:var(--ibiz-color-text-3)}.ibiz-emoji-input-search__container:hover input{box-shadow:0 0 0 1px var(--ibiz-color-primary) inset}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import './input-search.scss';
|
|
2
|
+
export declare const InputSearch: import("vue").DefineComponent<{}, {
|
|
3
|
+
ns: import("@ibiz-template/core").Namespace;
|
|
4
|
+
inputSearch: import("vue").Ref<string>;
|
|
5
|
+
onSearch: () => void;
|
|
6
|
+
handleKeyUp: (e: KeyboardEvent) => void;
|
|
7
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update"[], "update", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>> & {
|
|
8
|
+
onUpdate?: ((...args: any[]) => any) | undefined;
|
|
9
|
+
}, {}, {}>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ref, createVNode, vModelText, withDirectives, defineComponent } from 'vue';
|
|
2
|
+
import { useNamespace } from '@ibiz-template/vue3-util';
|
|
3
|
+
import '../../icons/index.mjs';
|
|
4
|
+
import './input-search.css';
|
|
5
|
+
import { SearchSvg } from '../../icons/search.mjs';
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
const InputSearch = /* @__PURE__ */ defineComponent({
|
|
9
|
+
name: "IBizInputSearch",
|
|
10
|
+
emits: ["update"],
|
|
11
|
+
setup(props, {
|
|
12
|
+
emit
|
|
13
|
+
}) {
|
|
14
|
+
const ns = useNamespace("emoji-input-search");
|
|
15
|
+
const inputSearch = ref("");
|
|
16
|
+
const onSearch = () => {
|
|
17
|
+
emit("update", inputSearch.value);
|
|
18
|
+
};
|
|
19
|
+
const handleKeyUp = (e) => {
|
|
20
|
+
if (e && e.code === "Enter") {
|
|
21
|
+
onSearch();
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
ns,
|
|
26
|
+
inputSearch,
|
|
27
|
+
onSearch,
|
|
28
|
+
handleKeyUp
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
render() {
|
|
32
|
+
return createVNode("div", {
|
|
33
|
+
"class": [this.ns.b()]
|
|
34
|
+
}, [createVNode("div", {
|
|
35
|
+
"class": this.ns.e("container"),
|
|
36
|
+
"onKeyup": this.handleKeyUp
|
|
37
|
+
}, [createVNode("div", {
|
|
38
|
+
"class": this.ns.em("container", "search"),
|
|
39
|
+
"onClick": this.onSearch
|
|
40
|
+
}, [SearchSvg()]), withDirectives(createVNode("input", {
|
|
41
|
+
"class": this.ns.em("container", "input"),
|
|
42
|
+
"type": "text",
|
|
43
|
+
"onUpdate:modelValue": ($event) => this.inputSearch = $event,
|
|
44
|
+
"placeholder": ibiz.i18n.t("app.search")
|
|
45
|
+
}, null), [[vModelText, this.inputSearch]])])]);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export { InputSearch };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-emoji-select{display:inline-flex;flex-direction:column;align-items:center;width:22.375rem;padding-bottom:var(--ibiz-spacing-tight);overflow:hidden;font-size:var(--ibiz-font-size-regular);-webkit-user-select:none;-moz-user-select:none;user-select:none}@media screen and (width <= 22.375rem){.ibiz-emoji-select{width:100%}}
|