@opendesign-plus-test/components 0.0.1-rc.85 → 0.0.1-rc.86

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.
@@ -1,12 +1,12 @@
1
- .hover-icon-rotate .o-icon[data-v-0eb750e5] {
1
+ .hover-icon-rotate .o-icon {
2
2
  transition: all var(--o-duration-m1) var(--o-easing-standard-in);
3
3
  }
4
4
  @media (hover: hover) {
5
- .hover-icon-rotate:hover .o-icon[data-v-0eb750e5] {
5
+ .hover-icon-rotate:hover .o-icon {
6
6
  transform: rotate(-180deg);
7
7
  }
8
8
  }
9
- .more-text-wrapper .more-text-content[data-v-0eb750e5] {
9
+ .more-text-wrapper .more-text-content {
10
10
  line-height: 1.5em;
11
11
  overflow: hidden;
12
12
  text-overflow: ellipsis;
@@ -16,24 +16,24 @@
16
16
  word-break: break-all;
17
17
  transition: height 0.1s;
18
18
  }
19
- .more-text-wrapper .more-text-content.is-link[data-v-0eb750e5] {
19
+ .more-text-wrapper .more-text-content.is-link {
20
20
  color: var(--o-color-primary1);
21
21
  cursor: pointer;
22
22
  }
23
23
  @media (hover: hover) {
24
- .more-text-wrapper .more-text-content.is-link[data-v-0eb750e5]:hover {
24
+ .more-text-wrapper .more-text-content.is-link:hover {
25
25
  color: var(--o-color-primary2);
26
26
  }
27
27
  }
28
- .more-text-wrapper .more-text-btn[data-v-0eb750e5] {
28
+ .more-text-wrapper .more-text-btn {
29
29
  color: var(--o-color-primary1);
30
30
  }
31
31
  @media (hover: hover) {
32
- .more-text-wrapper .more-text-btn[data-v-0eb750e5]:hover {
32
+ .more-text-wrapper .more-text-btn:hover {
33
33
  color: var(--o-color-primary2);
34
34
  }
35
35
  }
36
- .more-text-wrapper .more-text-btn > div[data-v-0eb750e5] {
36
+ .more-text-wrapper .more-text-btn > div {
37
37
  height: 1.5em;
38
38
  cursor: pointer;
39
39
  display: flex;
@@ -44,25 +44,25 @@
44
44
  line-height: 22px;
45
45
  }
46
46
  @media (min-width: 1201px) and (max-width: 1680px) {
47
- .more-text-wrapper .more-text-btn > div[data-v-0eb750e5] {
47
+ .more-text-wrapper .more-text-btn > div {
48
48
  font-size: 12px;
49
49
  line-height: 18px;
50
50
  }
51
51
  }
52
52
  @media (min-width: 841px) and (max-width: 1200px) {
53
- .more-text-wrapper .more-text-btn > div[data-v-0eb750e5] {
53
+ .more-text-wrapper .more-text-btn > div {
54
54
  font-size: 12px;
55
55
  line-height: 18px;
56
56
  }
57
57
  }
58
58
  @media (min-width: 601px) and (max-width: 840px) {
59
- .more-text-wrapper .more-text-btn > div[data-v-0eb750e5] {
59
+ .more-text-wrapper .more-text-btn > div {
60
60
  font-size: 12px;
61
61
  line-height: 18px;
62
62
  }
63
63
  }
64
64
  @media (max-width: 600px) {
65
- .more-text-wrapper .more-text-btn > div[data-v-0eb750e5] {
65
+ .more-text-wrapper .more-text-btn > div {
66
66
  font-size: 12px;
67
67
  line-height: 18px;
68
68
  }
@@ -1,7 +1,88 @@
1
- import _sfc_main from "./MoreText.vue2.mjs";
2
- import './MoreText.css';
3
- import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const MoreText = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-0eb750e5"]]);
1
+ import { defineComponent, ref, onMounted, watch, nextTick, openBlock, createElementBlock, createElementVNode, normalizeStyle, normalizeClass, toDisplayString, unref, createVNode, withCtx, createCommentVNode } from "vue";
2
+ import { OIcon, OIconChevronDown, OIconChevronUp } from "@opensig/opendesign";
3
+ import { useI18n } from "../../i18n/index.mjs";
4
+ const _hoisted_1 = { class: "more-text-wrapper" };
5
+ const _hoisted_2 = { key: 0 };
6
+ const _hoisted_3 = { key: 1 };
7
+ const _sfc_main = /* @__PURE__ */ defineComponent({
8
+ __name: "MoreText",
9
+ props: {
10
+ text: { default: "" },
11
+ link: { type: Boolean, default: false },
12
+ lines: { default: 3 },
13
+ show: { type: Boolean, default: false }
14
+ },
15
+ setup(__props) {
16
+ const props = __props;
17
+ const { t } = useI18n();
18
+ const expanded = ref(false);
19
+ const showBtn = ref(false);
20
+ const offsetHeight = ref(0);
21
+ const contentRef = ref(null);
22
+ onMounted(() => {
23
+ determineHeight();
24
+ });
25
+ watch([() => props.text, () => props.show], () => {
26
+ determineHeight();
27
+ });
28
+ const determineHeight = () => {
29
+ nextTick(() => {
30
+ const ele = contentRef.value;
31
+ if (ele) {
32
+ const range = document.createRange();
33
+ range.setStart(ele, 0);
34
+ range.setEnd(ele, ele.childNodes.length);
35
+ showBtn.value = range.getBoundingClientRect().height > ele.offsetHeight + 10 || ele.scrollHeight > ele.offsetHeight + 10;
36
+ offsetHeight.value = range.getBoundingClientRect().height || ele.scrollHeight;
37
+ } else {
38
+ showBtn.value = false;
39
+ }
40
+ });
41
+ };
42
+ const clickText = () => {
43
+ if (props.link) {
44
+ window.open(props.text);
45
+ }
46
+ };
47
+ return (_ctx, _cache) => {
48
+ return openBlock(), createElementBlock("div", _hoisted_1, [
49
+ createElementVNode("div", {
50
+ class: normalizeClass(["more-text-content", __props.link && "is-link"]),
51
+ ref_key: "contentRef",
52
+ ref: contentRef,
53
+ style: normalizeStyle({
54
+ "max-height": expanded.value ? offsetHeight.value + "px" : "4.5em",
55
+ "-webkit-line-clamp": expanded.value ? "initial" : __props.lines
56
+ }),
57
+ onClick: clickText
58
+ }, toDisplayString(__props.text), 7),
59
+ showBtn.value ? (openBlock(), createElementBlock("div", {
60
+ key: 0,
61
+ class: "more-text-btn",
62
+ onClick: _cache[0] || (_cache[0] = ($event) => expanded.value = !expanded.value)
63
+ }, [
64
+ !expanded.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
65
+ createElementVNode("span", null, toDisplayString(unref(t)("common.expand")), 1),
66
+ createVNode(unref(OIcon), null, {
67
+ default: withCtx(() => [
68
+ createVNode(unref(OIconChevronDown))
69
+ ]),
70
+ _: 1
71
+ })
72
+ ])) : (openBlock(), createElementBlock("div", _hoisted_3, [
73
+ createElementVNode("span", null, toDisplayString(unref(t)("common.collapse")), 1),
74
+ createVNode(unref(OIcon), null, {
75
+ default: withCtx(() => [
76
+ createVNode(unref(OIconChevronUp))
77
+ ]),
78
+ _: 1
79
+ })
80
+ ]))
81
+ ])) : createCommentVNode("", true)
82
+ ]);
83
+ };
84
+ }
85
+ });
5
86
  export {
6
- MoreText as default
87
+ _sfc_main as default
7
88
  };
@@ -0,0 +1,5 @@
1
+ import _sfc_main from "./MoreText.vue.mjs";
2
+ import './MoreText.css';
3
+ export {
4
+ _sfc_main as default
5
+ };
@@ -15,50 +15,50 @@
15
15
  .th-filter-wrapper > span:first-child {
16
16
  word-break: keep-all;
17
17
  }
18
- .filter-wrapper {
18
+ .th-filter-wrapper .filter-wrapper {
19
19
  display: flex;
20
20
  align-items: center;
21
21
  justify-content: center;
22
22
  cursor: pointer;
23
23
  }
24
- .filter-wrapper > * {
24
+ .th-filter-wrapper .filter-wrapper > * {
25
25
  flex-shrink: 0;
26
26
  }
27
- .filter-wrapper .filter-hover-icon {
27
+ .th-filter-wrapper .filter-wrapper .filter-hover-icon {
28
28
  display: none;
29
29
  }
30
- .filter-wrapper .filter-icon {
30
+ .th-filter-wrapper .filter-wrapper .filter-icon {
31
31
  font-size: 24px;
32
32
  line-height: 32px;
33
33
  }
34
34
  @media (min-width: 1201px) and (max-width: 1680px) {
35
- .filter-wrapper .filter-icon {
35
+ .th-filter-wrapper .filter-wrapper .filter-icon {
36
36
  font-size: 20px;
37
37
  line-height: 28px;
38
38
  }
39
39
  }
40
40
  @media (min-width: 841px) and (max-width: 1200px) {
41
- .filter-wrapper .filter-icon {
41
+ .th-filter-wrapper .filter-wrapper .filter-icon {
42
42
  font-size: 18px;
43
43
  line-height: 26px;
44
44
  }
45
45
  }
46
46
  @media (min-width: 601px) and (max-width: 840px) {
47
- .filter-wrapper .filter-icon {
47
+ .th-filter-wrapper .filter-wrapper .filter-icon {
48
48
  font-size: 18px;
49
49
  line-height: 26px;
50
50
  }
51
51
  }
52
52
  @media (max-width: 600px) {
53
- .filter-wrapper .filter-icon {
53
+ .th-filter-wrapper .filter-wrapper .filter-icon {
54
54
  font-size: 16px;
55
55
  line-height: 24px;
56
56
  }
57
57
  }
58
- .filter-wrapper:hover .filter-icon, .filter-wrapper.has-checked .filter-icon {
58
+ .th-filter-wrapper .filter-wrapper:hover .filter-icon, .th-filter-wrapper .filter-wrapper.has-checked .filter-icon {
59
59
  color: var(--o-color-primary1);
60
60
  }
61
- .filter-wrapper:hover .o-icon path, .filter-wrapper.has-checked .o-icon path {
61
+ .th-filter-wrapper .filter-wrapper:hover .o-icon path, .th-filter-wrapper .filter-wrapper.has-checked .o-icon path {
62
62
  fill: currentColor;
63
63
  }
64
64
  .th-filter-dropdown .o-dropdown-item {
@@ -1,27 +1,34 @@
1
- .hover-icon-rotate .o-icon[data-v-51e2ce78] {
1
+ .hover-icon-rotate .o-icon {
2
2
  transition: all var(--o-duration-m1) var(--o-easing-standard-in);
3
3
  }
4
4
  @media (hover: hover) {
5
- .hover-icon-rotate:hover .o-icon[data-v-51e2ce78] {
5
+ .hover-icon-rotate:hover .o-icon {
6
6
  transform: rotate(-180deg);
7
7
  }
8
8
  }
9
- .tooltip-text-wrapper .tooltip-text[data-v-51e2ce78] {
9
+ .tooltip-text-wrapper .tooltip-text {
10
10
  overflow: hidden;
11
11
  word-break: keep-all;
12
12
  }
13
- .tooltip-text-wrapper .tooltip-text.ellipsis[data-v-51e2ce78] {
13
+ .tooltip-text-wrapper .tooltip-text.ellipsis {
14
14
  white-space: nowrap;
15
15
  text-overflow: ellipsis;
16
16
  }
17
- .tooltip-text-wrapper .tooltip-text.multi-lines[data-v-51e2ce78] {
17
+ .tooltip-text-wrapper .tooltip-text.multi-lines {
18
18
  white-space: normal;
19
19
  text-overflow: ellipsis;
20
20
  display: -webkit-box;
21
21
  -webkit-box-orient: vertical;
22
22
  -webkit-line-clamp: var(--lines);
23
23
  }
24
- .tooltip-text-wrapper .button[data-v-51e2ce78] {
24
+ .tooltip-text-wrapper .button {
25
25
  color: var(--o-color-primary1);
26
26
  cursor: pointer;
27
+ }
28
+ .tooltip-text-wrapper .popup-box2 {
29
+ color: var(--o-color-info2);
30
+ }
31
+ .tooltip-text-wrapper .popup-box2.fz-14 {
32
+ font-size: 14px;
33
+ line-height: 22px;
27
34
  }
@@ -1,8 +1,85 @@
1
- import _sfc_main from "./TooltipText.vue2.mjs";
2
- import './TooltipText.css';
3
- import './TooltipText2.css';
4
- import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
5
- const TooltipText = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-51e2ce78"]]);
1
+ import { defineComponent, ref, useSlots, onMounted, onUnmounted, watch, computed, openBlock, createElementBlock, normalizeStyle, createVNode, unref, withCtx, createElementVNode, normalizeClass, toDisplayString, renderSlot } from "vue";
2
+ import { isClient, OPopover } from "@opensig/opendesign";
3
+ const _sfc_main = /* @__PURE__ */ defineComponent({
4
+ __name: "TooltipText",
5
+ props: {
6
+ lines: {},
7
+ width: {},
8
+ type: { default: "" },
9
+ size: { default: 14 }
10
+ },
11
+ setup(__props) {
12
+ const contentRef = ref(null);
13
+ const ellipsis = ref(true);
14
+ const props = __props;
15
+ const slots = useSlots();
16
+ let resizeObserver = null;
17
+ const checkOverflow = () => {
18
+ if (!isClient) return;
19
+ const ele = contentRef.value;
20
+ if (!ele) return;
21
+ ellipsis.value = ele.scrollWidth > ele.offsetWidth + 1 || ele.scrollHeight > ele.offsetHeight + 1;
22
+ };
23
+ onMounted(() => {
24
+ checkOverflow();
25
+ if (!isClient || !contentRef.value) return;
26
+ resizeObserver = new ResizeObserver(() => checkOverflow());
27
+ resizeObserver.observe(contentRef.value);
28
+ });
29
+ onUnmounted(() => {
30
+ resizeObserver == null ? void 0 : resizeObserver.disconnect();
31
+ });
32
+ watch(() => [props.lines, props.width], () => {
33
+ if (isClient) requestAnimationFrame(checkOverflow);
34
+ });
35
+ const getTextFromNode = (node) => {
36
+ const children = node.children ?? "";
37
+ if (Array.isArray(children)) {
38
+ return children.map((v) => getTextFromNode(v)).join("");
39
+ }
40
+ return String(children);
41
+ };
42
+ const contentText = computed(() => {
43
+ var _a;
44
+ const nodes = ((_a = slots.default) == null ? void 0 : _a.call(slots)) || [];
45
+ return nodes.map((node) => getTextFromNode(node)).join("\n");
46
+ });
47
+ const wrapperStyle = computed(() => {
48
+ const calcWidth = Number.isNaN(Number(props.width)) ? props.width : `${props.width}px`;
49
+ return { width: calcWidth };
50
+ });
51
+ return (_ctx, _cache) => {
52
+ return openBlock(), createElementBlock("div", {
53
+ class: "tooltip-text-wrapper",
54
+ style: normalizeStyle(wrapperStyle.value)
55
+ }, [
56
+ createVNode(unref(OPopover), {
57
+ anchor: "",
58
+ disabled: !ellipsis.value,
59
+ adjustMinWidth: false,
60
+ adjustWidth: true
61
+ }, {
62
+ target: withCtx(() => [
63
+ createElementVNode("div", {
64
+ class: normalizeClass(["tooltip-text", __props.type, ellipsis.value && "ellipsis", __props.lines > 1 && "multi-lines"]),
65
+ ref_key: "contentRef",
66
+ ref: contentRef,
67
+ style: normalizeStyle(`--lines: ${__props.lines};`)
68
+ }, [
69
+ renderSlot(_ctx.$slots, "default")
70
+ ], 6)
71
+ ]),
72
+ default: withCtx(() => [
73
+ createElementVNode("div", {
74
+ class: normalizeClass(["popup-box2", `fz-${__props.size}`])
75
+ }, toDisplayString(contentText.value), 3)
76
+ ]),
77
+ _: 3
78
+ }, 8, ["disabled"])
79
+ ], 4);
80
+ };
81
+ }
82
+ });
6
83
  export {
7
- TooltipText as default
84
+ _sfc_main as default
8
85
  };
@@ -0,0 +1,5 @@
1
+ import _sfc_main from "./TooltipText.vue.mjs";
2
+ import './TooltipText.css';
3
+ export {
4
+ _sfc_main as default
5
+ };
@@ -13,7 +13,8 @@ import { useDebounceFn } from "@vueuse/core";
13
13
  import { useScreen } from "@opendesign-plus/composables";
14
14
  import { Locales } from "../../i18n/index.mjs";
15
15
  import IconCopy from "../../_virtual/icon-copy.mjs";
16
- import TooltipText from "../common/TooltipText.vue.mjs";
16
+ import _sfc_main$2 from "../common/TooltipText.vue.mjs";
17
+ import '../common/TooltipText.css';
17
18
  const _hoisted_1 = { class: "o-my-meeting-calendar" };
18
19
  const _hoisted_2 = { class: "meeting-list" };
19
20
  const _hoisted_3 = { class: "list-calendar-mb" };
@@ -680,7 +681,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
680
681
  row.is_delete ? (openBlock(), createElementBlock("div", _hoisted_13, toDisplayString(unref(t)("meeting.meetingCancelled")), 1)) : createCommentVNode("", true),
681
682
  createElementVNode("div", _hoisted_14, [
682
683
  createElementVNode("div", _hoisted_15, [
683
- createVNode(TooltipText, null, {
684
+ createVNode(_sfc_main$2, null, {
684
685
  default: withCtx(() => [
685
686
  createTextVNode(toDisplayString(row.topic), 1)
686
687
  ]),
@@ -9,7 +9,8 @@ import { INTERVAL_DAY, INTERVAL_WEEK, INTERVAL_MONTH } from "../config.mjs";
9
9
  import { formatDate } from "../utils.mjs";
10
10
  import { useMeetingConfig } from "../composables/useMeetingConfig.mjs";
11
11
  import { useActivityConfig } from "../../activity/composables/useActivityConfig.mjs";
12
- import TooltipText from "../../common/TooltipText.vue.mjs";
12
+ import _sfc_main$2 from "../../common/TooltipText.vue.mjs";
13
+ import '../../common/TooltipText.css';
13
14
  const _hoisted_1 = { class: "meet-title-left" };
14
15
  const _hoisted_2 = ["title"];
15
16
  const _hoisted_3 = { class: "text" };
@@ -245,7 +246,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
245
246
  _: 2
246
247
  }, 1032, ["style"]),
247
248
  createElementVNode("div", _hoisted_3, [
248
- createVNode(TooltipText, null, {
249
+ createVNode(_sfc_main$2, null, {
249
250
  default: withCtx(() => [
250
251
  createTextVNode(toDisplayString((item.topic || item.name || item.title).repeat(3)), 1)
251
252
  ]),
@@ -1,7 +1,8 @@
1
1
  import { defineComponent, computed, ref, openBlock, createElementBlock, Fragment, renderList, normalizeClass, createElementVNode, toDisplayString, createBlock, unref, withCtx, createTextVNode, createCommentVNode } from "vue";
2
2
  import { OLink } from "@opensig/opendesign";
3
3
  import { CalendarDataType } from "../types.mjs";
4
- import MoreText from "../../common/MoreText.vue.mjs";
4
+ import _sfc_main$1 from "../../common/MoreText.vue.mjs";
5
+ import '../../common/MoreText.css';
5
6
  import { formatDate } from "../utils.mjs";
6
7
  import { useMeetingConfig } from "../composables/useMeetingConfig.mjs";
7
8
  import { useI18n } from "../../../i18n/index.mjs";
@@ -146,7 +147,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
146
147
  getField(info.key) && !info.isRecord ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
147
148
  createElementVNode("span", _hoisted_2, toDisplayString(info.label), 1),
148
149
  createElementVNode("span", { class: "split-mark" }, toDisplayString(SPLIT_MARK)),
149
- info.ellipsis ? (openBlock(), createBlock(MoreText, {
150
+ info.ellipsis ? (openBlock(), createBlock(_sfc_main$1, {
150
151
  key: 0,
151
152
  show: __props.show,
152
153
  text: getField(info.key) || "-"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendesign-plus-test/components",
3
- "version": "0.0.1-rc.85",
3
+ "version": "0.0.1-rc.86",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -44,8 +44,8 @@
44
44
  "vue-dompurify-html": "^3.1.2",
45
45
  "vue": "^3.5.13",
46
46
  "element-plus": "2.13.1",
47
- "@opendesign-plus/styles": "0.0.1-rc.2",
48
- "@opendesign-plus/composables": "0.0.1-rc.10"
47
+ "@opendesign-plus/composables": "0.0.1-rc.10",
48
+ "@opendesign-plus/styles": "0.0.1-rc.2"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@vitejs/plugin-vue": "^5.2.1",
@@ -1,88 +0,0 @@
1
- import { defineComponent, ref, onMounted, watch, nextTick, openBlock, createElementBlock, createElementVNode, normalizeStyle, normalizeClass, toDisplayString, unref, createVNode, withCtx, createCommentVNode } from "vue";
2
- import { OIcon, OIconChevronDown, OIconChevronUp } from "@opensig/opendesign";
3
- import { useI18n } from "../../i18n/index.mjs";
4
- const _hoisted_1 = { class: "more-text-wrapper" };
5
- const _hoisted_2 = { key: 0 };
6
- const _hoisted_3 = { key: 1 };
7
- const _sfc_main = /* @__PURE__ */ defineComponent({
8
- __name: "MoreText",
9
- props: {
10
- text: { default: "" },
11
- link: { type: Boolean, default: false },
12
- lines: { default: 3 },
13
- show: { type: Boolean, default: false }
14
- },
15
- setup(__props) {
16
- const props = __props;
17
- const { t } = useI18n();
18
- const expanded = ref(false);
19
- const showBtn = ref(false);
20
- const offsetHeight = ref(0);
21
- const contentRef = ref(null);
22
- onMounted(() => {
23
- determineHeight();
24
- });
25
- watch([() => props.text, () => props.show], () => {
26
- determineHeight();
27
- });
28
- const determineHeight = () => {
29
- nextTick(() => {
30
- const ele = contentRef.value;
31
- if (ele) {
32
- const range = document.createRange();
33
- range.setStart(ele, 0);
34
- range.setEnd(ele, ele.childNodes.length);
35
- showBtn.value = range.getBoundingClientRect().height > ele.offsetHeight + 10 || ele.scrollHeight > ele.offsetHeight + 10;
36
- offsetHeight.value = range.getBoundingClientRect().height || ele.scrollHeight;
37
- } else {
38
- showBtn.value = false;
39
- }
40
- });
41
- };
42
- const clickText = () => {
43
- if (props.link) {
44
- window.open(props.text);
45
- }
46
- };
47
- return (_ctx, _cache) => {
48
- return openBlock(), createElementBlock("div", _hoisted_1, [
49
- createElementVNode("div", {
50
- class: normalizeClass(["more-text-content", __props.link && "is-link"]),
51
- ref_key: "contentRef",
52
- ref: contentRef,
53
- style: normalizeStyle({
54
- "max-height": expanded.value ? offsetHeight.value + "px" : "4.5em",
55
- "-webkit-line-clamp": expanded.value ? "initial" : __props.lines
56
- }),
57
- onClick: clickText
58
- }, toDisplayString(__props.text), 7),
59
- showBtn.value ? (openBlock(), createElementBlock("div", {
60
- key: 0,
61
- class: "more-text-btn",
62
- onClick: _cache[0] || (_cache[0] = ($event) => expanded.value = !expanded.value)
63
- }, [
64
- !expanded.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
65
- createElementVNode("span", null, toDisplayString(unref(t)("common.expand")), 1),
66
- createVNode(unref(OIcon), null, {
67
- default: withCtx(() => [
68
- createVNode(unref(OIconChevronDown))
69
- ]),
70
- _: 1
71
- })
72
- ])) : (openBlock(), createElementBlock("div", _hoisted_3, [
73
- createElementVNode("span", null, toDisplayString(unref(t)("common.collapse")), 1),
74
- createVNode(unref(OIcon), null, {
75
- default: withCtx(() => [
76
- createVNode(unref(OIconChevronUp))
77
- ]),
78
- _: 1
79
- })
80
- ]))
81
- ])) : createCommentVNode("", true)
82
- ]);
83
- };
84
- }
85
- });
86
- export {
87
- _sfc_main as default
88
- };
@@ -1,85 +0,0 @@
1
- import { defineComponent, ref, useSlots, onMounted, onUnmounted, watch, computed, openBlock, createElementBlock, normalizeStyle, createVNode, unref, withCtx, createElementVNode, normalizeClass, toDisplayString, renderSlot } from "vue";
2
- import { isClient, OPopover } from "@opensig/opendesign";
3
- const _sfc_main = /* @__PURE__ */ defineComponent({
4
- __name: "TooltipText",
5
- props: {
6
- lines: {},
7
- width: {},
8
- type: { default: "" },
9
- size: { default: 14 }
10
- },
11
- setup(__props) {
12
- const contentRef = ref(null);
13
- const ellipsis = ref(true);
14
- const props = __props;
15
- const slots = useSlots();
16
- let resizeObserver = null;
17
- const checkOverflow = () => {
18
- if (!isClient) return;
19
- const ele = contentRef.value;
20
- if (!ele) return;
21
- ellipsis.value = ele.scrollWidth > ele.offsetWidth + 1 || ele.scrollHeight > ele.offsetHeight + 1;
22
- };
23
- onMounted(() => {
24
- checkOverflow();
25
- if (!isClient || !contentRef.value) return;
26
- resizeObserver = new ResizeObserver(() => checkOverflow());
27
- resizeObserver.observe(contentRef.value);
28
- });
29
- onUnmounted(() => {
30
- resizeObserver == null ? void 0 : resizeObserver.disconnect();
31
- });
32
- watch(() => [props.lines, props.width], () => {
33
- if (isClient) requestAnimationFrame(checkOverflow);
34
- });
35
- const getTextFromNode = (node) => {
36
- const children = node.children ?? "";
37
- if (Array.isArray(children)) {
38
- return children.map((v) => getTextFromNode(v)).join("");
39
- }
40
- return String(children);
41
- };
42
- const contentText = computed(() => {
43
- var _a;
44
- const nodes = ((_a = slots.default) == null ? void 0 : _a.call(slots)) || [];
45
- return nodes.map((node) => getTextFromNode(node)).join("\n");
46
- });
47
- const wrapperStyle = computed(() => {
48
- const calcWidth = Number.isNaN(Number(props.width)) ? props.width : `${props.width}px`;
49
- return { width: calcWidth };
50
- });
51
- return (_ctx, _cache) => {
52
- return openBlock(), createElementBlock("div", {
53
- class: "tooltip-text-wrapper",
54
- style: normalizeStyle(wrapperStyle.value)
55
- }, [
56
- createVNode(unref(OPopover), {
57
- anchor: "",
58
- disabled: !ellipsis.value,
59
- adjustMinWidth: false,
60
- adjustWidth: true
61
- }, {
62
- target: withCtx(() => [
63
- createElementVNode("div", {
64
- class: normalizeClass(["tooltip-text", __props.type, ellipsis.value && "ellipsis", __props.lines > 1 && "multi-lines"]),
65
- ref_key: "contentRef",
66
- ref: contentRef,
67
- style: normalizeStyle(`--lines: ${__props.lines};`)
68
- }, [
69
- renderSlot(_ctx.$slots, "default", {}, void 0, true)
70
- ], 6)
71
- ]),
72
- default: withCtx(() => [
73
- createElementVNode("div", {
74
- class: normalizeClass(["popup-box2", `fz-${__props.size}`])
75
- }, toDisplayString(contentText.value), 3)
76
- ]),
77
- _: 3
78
- }, 8, ["disabled"])
79
- ], 4);
80
- };
81
- }
82
- });
83
- export {
84
- _sfc_main as default
85
- };
@@ -1,15 +0,0 @@
1
- .hover-icon-rotate .o-icon {
2
- transition: all var(--o-duration-m1) var(--o-easing-standard-in);
3
- }
4
- @media (hover: hover) {
5
- .hover-icon-rotate:hover .o-icon {
6
- transform: rotate(-180deg);
7
- }
8
- }
9
- .tooltip-text-wrapper .popup-box2 {
10
- color: var(--o-color-info2);
11
- }
12
- .tooltip-text-wrapper .popup-box2.fz-14 {
13
- font-size: 14px;
14
- line-height: 22px;
15
- }