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

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.
Files changed (29) hide show
  1. package/dist/components/header/OHeader.vue.d.ts +6 -2
  2. package/dist/components/header/index.d.ts +3 -1
  3. package/dist/components.cjs.js +40 -40
  4. package/dist/components.css +1 -1
  5. package/dist/components.es.js +6417 -6370
  6. package/dist/treeshaking/components/header/OHeader.css +13 -18
  7. package/dist/treeshaking/components/header/OHeader.vue.d.ts +6 -2
  8. package/dist/treeshaking/components/header/OHeader.vue.mjs +1 -1
  9. package/dist/treeshaking/components/header/OHeader.vue2.mjs +80 -9
  10. package/dist/treeshaking/components/header/OHeaderMobile.css +20 -20
  11. package/dist/treeshaking/components/header/OHeaderMobile.vue.mjs +1 -1
  12. package/dist/treeshaking/components/header/components/HeaderContent.css +253 -263
  13. package/dist/treeshaking/components/header/components/HeaderContent.vue.mjs +1 -1
  14. package/dist/treeshaking/components/header/components/HeaderContent.vue2.mjs +15 -12
  15. package/dist/treeshaking/components/header/components/HeaderNav.css +26 -26
  16. package/dist/treeshaking/components/header/components/HeaderNav.vue.mjs +1 -1
  17. package/dist/treeshaking/components/header/components/HeaderNav.vue2.mjs +1 -3
  18. package/dist/treeshaking/components/header/index.d.ts +3 -1
  19. package/dist/treeshaking/components/header-language-switcher/OHeaderLanguageSwitcher.css +43 -29
  20. package/dist/treeshaking/components/header-language-switcher/OHeaderLanguageSwitcher.vue.mjs +1 -1
  21. package/dist/treeshaking/components/header-language-switcher/OHeaderLanguageSwitcher.vue2.mjs +1 -1
  22. package/dist/treeshaking/components/header-source-code/OHeaderSourceCode.css +25 -26
  23. package/dist/treeshaking/components/header-source-code/OHeaderSourceCode.vue.mjs +1 -1
  24. package/dist/treeshaking/components/header-source-code/OHeaderSourceCode.vue2.mjs +1 -0
  25. package/dist/treeshaking/components/header-user/OHeaderUser.css +26 -26
  26. package/dist/treeshaking/components/header-user/OHeaderUser.vue.mjs +1 -1
  27. package/dist/treeshaking/components/header-user/OHeaderUser2.css +5 -0
  28. package/dist/treeshaking/components/meeting/OMeetingCalendar.vue.mjs +20 -10
  29. package/package.json +1 -1
@@ -1,31 +1,32 @@
1
- .hover-icon-rotate .o-icon[data-v-b3349981] {
1
+ .hover-icon-rotate .o-icon[data-v-bfc2a089] {
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-b3349981] {
5
+ .hover-icon-rotate:hover .o-icon[data-v-bfc2a089] {
6
6
  transform: rotate(-180deg);
7
7
  }
8
8
  }
9
- .header[data-v-b3349981] {
9
+ .header[data-v-bfc2a089] {
10
10
  --o-header-height: 72px;
11
11
  }
12
- .header-wrap[data-v-b3349981] {
12
+ .header-wrap[data-v-bfc2a089] {
13
13
  background-color: var(--o-color-fill2);
14
14
  position: fixed;
15
15
  left: 0;
16
16
  right: 0;
17
17
  top: 0;
18
18
  z-index: 999;
19
- box-shadow: 0 3px 9px 0 rgba(0, 18, 85, 0.08);
19
+ box-shadow: var(--o-shadow-1);
20
20
  backdrop-filter: blur(5px);
21
21
  height: var(--o-header-height);
22
22
  }
23
- .header-content[data-v-b3349981] {
23
+ .header-content[data-v-bfc2a089] {
24
24
  display: flex;
25
25
  align-items: center;
26
26
  height: 100%;
27
+ --layout-content-padding: 28px;
27
28
  }
28
- .header-logo[data-v-b3349981] {
29
+ .header-logo[data-v-bfc2a089] {
29
30
  height: 100%;
30
31
  display: flex;
31
32
  align-items: center;
@@ -33,33 +34,27 @@
33
34
  margin-right: 24px;
34
35
  flex-shrink: 0;
35
36
  }
36
- .logo[data-v-b3349981] {
37
+ .logo[data-v-bfc2a089] {
37
38
  height: 32px;
38
39
  }
39
- .header-nav[data-v-b3349981] {
40
+ .header-nav[data-v-bfc2a089] {
40
41
  flex: 1;
41
42
  height: 100%;
42
43
  min-width: 0;
43
44
  overflow: hidden;
44
45
  position: relative;
45
46
  }
46
- .header-toolbar[data-v-b3349981] {
47
+ .header-toolbar[data-v-bfc2a089] {
47
48
  height: 100%;
48
49
  position: relative;
49
50
  }
50
- .header-nav-content[data-v-b3349981] {
51
+ .header-nav-content[data-v-bfc2a089] {
51
52
  position: fixed;
52
53
  top: var(--o-header-height);
53
54
  left: 0;
54
55
  right: 0;
55
56
  background: var(--o-color-fill2);
56
57
  z-index: 998;
57
- box-shadow: 0 3px 9px 0 rgba(0, 18, 85, 0.08);
58
+ box-shadow: var(--o-shadow-1);
58
59
  overflow: hidden;
59
- }
60
- .header-wrap-dark[data-v-b3349981] {
61
- box-shadow: 0 3px 9px 0 rgba(var(--o-grey-4), 0.08);
62
- }
63
- .header-wrap-dark .header-nav-content[data-v-b3349981] {
64
- box-shadow: 0 3px 9px 0 rgba(var(--o-grey-4), 0.08);
65
60
  }
@@ -10,7 +10,9 @@ declare function __VLS_template(): {
10
10
  nav?(_: {}): any;
11
11
  toolbar?(_: {}): any;
12
12
  };
13
- refs: {};
13
+ refs: {
14
+ contentRef: HTMLDivElement;
15
+ };
14
16
  rootEl: HTMLDivElement;
15
17
  };
16
18
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
@@ -20,7 +22,9 @@ declare const __VLS_component: import('vue').DefineComponent<NavT, {}, {}, {}, {
20
22
  }, string, import('vue').PublicProps, Readonly<NavT> & Readonly<{
21
23
  "onHandle-click"?: ((val: any) => any) | undefined;
22
24
  "onGo-home"?: (() => any) | undefined;
23
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
25
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
26
+ contentRef: HTMLDivElement;
27
+ }, HTMLDivElement>;
24
28
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
25
29
  export default _default;
26
30
  type __VLS_WithTemplateSlots<T, S> = T & {
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./OHeader.vue2.mjs";
2
2
  import './OHeader.css';
3
3
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const _OHeader = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-b3349981"]]);
4
+ const _OHeader = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-bfc2a089"]]);
5
5
  export {
6
6
  _OHeader as default
7
7
  };
@@ -1,8 +1,7 @@
1
- import { defineComponent, ref, openBlock, createElementBlock, createElementVNode, normalizeClass, unref, createVNode, withCtx, renderSlot, createCommentVNode, createBlock } from "vue";
1
+ import { defineComponent, ref, onUnmounted, openBlock, createElementBlock, createElementVNode, createVNode, withCtx, renderSlot, createCommentVNode, createBlock } from "vue";
2
2
  import ContentWrapper from "../common/ContentWrapper.vue.mjs";
3
3
  import HeaderNav from "./components/HeaderNav.vue.mjs";
4
4
  import HeaderContent from "./components/HeaderContent.vue.mjs";
5
- import { useTheme } from "../../shared/theme.mjs";
6
5
  const _hoisted_1 = { class: "header" };
7
6
  const _hoisted_2 = ["src"];
8
7
  const _hoisted_3 = { class: "header-nav" };
@@ -10,7 +9,6 @@ const _hoisted_4 = {
10
9
  key: 0,
11
10
  class: "header-toolbar"
12
11
  };
13
- const _hoisted_5 = { class: "header-nav-content" };
14
12
  const _sfc_main = /* @__PURE__ */ defineComponent({
15
13
  __name: "OHeader",
16
14
  props: {
@@ -27,18 +25,80 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
27
25
  },
28
26
  emits: ["go-home", "handle-click"],
29
27
  setup(__props, { emit: __emit }) {
30
- const { isDark } = useTheme();
31
28
  const emit = __emit;
32
29
  const props = __props;
33
30
  const hoverIndex = ref();
34
31
  const hoverId = ref();
35
32
  const itemData = ref();
36
33
  const itemVisible = ref(false);
34
+ const closeTimer = ref(null);
35
+ const contentRef = ref();
36
+ const lastMousePos = ref({ x: 0, y: 0 });
37
+ let safetyTracker = null;
38
+ const cancelClose = () => {
39
+ if (closeTimer.value !== null) {
40
+ clearTimeout(closeTimer.value);
41
+ closeTimer.value = null;
42
+ }
43
+ removeSafetyTracker();
44
+ };
45
+ const removeSafetyTracker = () => {
46
+ if (safetyTracker) {
47
+ document.removeEventListener("mousemove", safetyTracker);
48
+ safetyTracker = null;
49
+ }
50
+ };
51
+ const isInTriangle = (px, py, ax, ay, bx, by, cx, cy) => {
52
+ const d1 = (px - bx) * (ay - by) - (ax - bx) * (py - by);
53
+ const d2 = (px - cx) * (by - cy) - (bx - cx) * (py - cy);
54
+ const d3 = (px - ax) * (cy - ay) - (cx - ax) * (py - ay);
55
+ const hasNeg = d1 < 0 || d2 < 0 || d3 < 0;
56
+ const hasPos = d1 > 0 || d2 > 0 || d3 > 0;
57
+ return !(hasNeg && hasPos);
58
+ };
59
+ const scheduleClose = (useTriangle = true) => {
60
+ cancelClose();
61
+ const exitPos = { ...lastMousePos.value };
62
+ const startTimer = () => {
63
+ closeTimer.value = window.setTimeout(() => {
64
+ removeSafetyTracker();
65
+ itemVisible.value = false;
66
+ closeTimer.value = null;
67
+ }, 100);
68
+ };
69
+ if (useTriangle && contentRef.value && itemVisible.value) {
70
+ const rect = contentRef.value.getBoundingClientRect();
71
+ safetyTracker = (e) => {
72
+ const mx = e.clientX;
73
+ const my = e.clientY;
74
+ if (mx >= rect.left && mx <= rect.right && my >= rect.top && my <= rect.bottom) {
75
+ cancelClose();
76
+ return;
77
+ }
78
+ const inTriangle = isInTriangle(mx, my, exitPos.x, exitPos.y, rect.left, rect.top, rect.right, rect.top);
79
+ if (!inTriangle) {
80
+ cancelClose();
81
+ itemVisible.value = false;
82
+ } else {
83
+ if (closeTimer.value !== null) {
84
+ clearTimeout(closeTimer.value);
85
+ }
86
+ startTimer();
87
+ }
88
+ };
89
+ document.addEventListener("mousemove", safetyTracker);
90
+ }
91
+ startTimer();
92
+ };
93
+ const onMousemoveHeader = (e) => {
94
+ lastMousePos.value = { x: e.clientX, y: e.clientY };
95
+ };
37
96
  const goHome = () => {
38
97
  emit("go-home");
39
98
  };
40
99
  const handleMouseenter = (val) => {
41
100
  var _a;
101
+ cancelClose();
42
102
  itemData.value = val;
43
103
  hoverIndex.value = val.id;
44
104
  if ((_a = val == null ? void 0 : val.children) == null ? void 0 : _a.length) {
@@ -46,21 +106,27 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
46
106
  }
47
107
  };
48
108
  const handleMouseleave = () => {
49
- itemVisible.value = false;
109
+ scheduleClose(true);
50
110
  };
51
111
  const handleClick = (val) => {
52
112
  emit("handle-click", val);
53
113
  };
54
114
  const handleMouseenterSub = (val) => {
115
+ cancelClose();
55
116
  hoverId.value = val;
56
117
  };
57
118
  const handleMouseleaveSub = (val) => {
58
119
  hoverId.value = val;
120
+ scheduleClose(false);
59
121
  };
122
+ onUnmounted(() => {
123
+ cancelClose();
124
+ });
60
125
  return (_ctx, _cache) => {
61
126
  return openBlock(), createElementBlock("div", _hoisted_1, [
62
127
  createElementVNode("div", {
63
- class: normalizeClass(["header-wrap", { "header-wrap-dark": unref(isDark) }])
128
+ class: "header-wrap",
129
+ onMousemove: onMousemoveHeader
64
130
  }, [
65
131
  createVNode(ContentWrapper, { class: "header-content" }, {
66
132
  default: withCtx(() => [
@@ -96,8 +162,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
96
162
  ]),
97
163
  _: 3
98
164
  })
99
- ], 2),
100
- createElementVNode("div", _hoisted_5, [
165
+ ], 32),
166
+ createElementVNode("div", {
167
+ ref_key: "contentRef",
168
+ ref: contentRef,
169
+ class: "header-nav-content",
170
+ onMousemove: onMousemoveHeader
171
+ }, [
101
172
  createVNode(HeaderContent, {
102
173
  itemData: itemData.value,
103
174
  "item-visible": itemVisible.value,
@@ -108,7 +179,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
108
179
  onHandleMouseenterSub: handleMouseenterSub,
109
180
  onHandleMouseleaveSub: handleMouseleaveSub
110
181
  }, null, 8, ["itemData", "item-visible", "bg-left", "bg-right", "community", "hover-index"])
111
- ])
182
+ ], 544)
112
183
  ]);
113
184
  };
114
185
  }
@@ -1,48 +1,48 @@
1
- .hover-icon-rotate .o-icon[data-v-1d6060f9] {
1
+ .hover-icon-rotate .o-icon[data-v-9c0f44cf] {
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-1d6060f9] {
5
+ .hover-icon-rotate:hover .o-icon[data-v-9c0f44cf] {
6
6
  transform: rotate(-180deg);
7
7
  }
8
8
  }
9
- .header[data-v-1d6060f9] {
9
+ .header[data-v-9c0f44cf] {
10
10
  --o-header-height: 56px;
11
11
  }
12
- .header-box[data-v-1d6060f9] {
12
+ .header-box[data-v-9c0f44cf] {
13
13
  background-color: var(--o-color-fill2);
14
14
  position: fixed;
15
15
  left: 0;
16
16
  right: 0;
17
17
  top: 0;
18
18
  z-index: 999;
19
- box-shadow: 0 3px 9px 0 rgba(0, 18, 85, 0.08);
19
+ box-shadow: var(--o-shadow-1);
20
20
  backdrop-filter: blur(5px);
21
21
  }
22
- .header-wrap[data-v-1d6060f9] {
22
+ .header-wrap[data-v-9c0f44cf] {
23
23
  display: flex;
24
24
  align-items: center;
25
25
  height: var(--o-header-height);
26
26
  justify-content: space-between;
27
27
  position: relative;
28
28
  }
29
- .header-simple[data-v-1d6060f9] {
29
+ .header-simple[data-v-9c0f44cf] {
30
30
  width: 100%;
31
31
  display: flex;
32
32
  align-items: center;
33
33
  justify-content: space-between;
34
34
  }
35
- .header-simple .o-icon[data-v-1d6060f9] {
35
+ .header-simple .o-icon[data-v-9c0f44cf] {
36
36
  font-size: 24px;
37
37
  }
38
- .header-simple .simple-header-left[data-v-1d6060f9] {
38
+ .header-simple .simple-header-left[data-v-9c0f44cf] {
39
39
  display: flex;
40
40
  gap: 16px;
41
41
  color: var(--o-color-info1);
42
42
  overflow: hidden;
43
43
  flex-grow: 1;
44
44
  }
45
- .header-simple .simple-header-left .header-title[data-v-1d6060f9] {
45
+ .header-simple .simple-header-left .header-title[data-v-9c0f44cf] {
46
46
  color: var(--o-color-info1);
47
47
  font-weight: 500;
48
48
  overflow: hidden;
@@ -52,55 +52,55 @@
52
52
  line-height: 26px;
53
53
  }
54
54
  @media (min-width: 1201px) and (max-width: 1680px) {
55
- .header-simple .simple-header-left .header-title[data-v-1d6060f9] {
55
+ .header-simple .simple-header-left .header-title[data-v-9c0f44cf] {
56
56
  font-size: 16px;
57
57
  line-height: 24px;
58
58
  }
59
59
  }
60
60
  @media (min-width: 841px) and (max-width: 1200px) {
61
- .header-simple .simple-header-left .header-title[data-v-1d6060f9] {
61
+ .header-simple .simple-header-left .header-title[data-v-9c0f44cf] {
62
62
  font-size: 14px;
63
63
  line-height: 22px;
64
64
  }
65
65
  }
66
66
  @media (min-width: 601px) and (max-width: 840px) {
67
- .header-simple .simple-header-left .header-title[data-v-1d6060f9] {
67
+ .header-simple .simple-header-left .header-title[data-v-9c0f44cf] {
68
68
  font-size: 14px;
69
69
  line-height: 22px;
70
70
  }
71
71
  }
72
72
  @media (max-width: 600px) {
73
- .header-simple .simple-header-left .header-title[data-v-1d6060f9] {
73
+ .header-simple .simple-header-left .header-title[data-v-9c0f44cf] {
74
74
  font-size: 14px;
75
75
  line-height: 22px;
76
76
  }
77
77
  }
78
- .header-simple .simple-header-right[data-v-1d6060f9] {
78
+ .header-simple .simple-header-right[data-v-9c0f44cf] {
79
79
  flex-shrink: 0;
80
80
  color: var(--o-color-info1);
81
81
  font-weight: 500;
82
82
  font-size: 16px;
83
83
  line-height: 24px;
84
84
  }
85
- .header-left[data-v-1d6060f9] {
85
+ .header-left[data-v-9c0f44cf] {
86
86
  display: flex;
87
87
  align-items: center;
88
88
  }
89
- .header-left .o-icon[data-v-1d6060f9] {
89
+ .header-left .o-icon[data-v-9c0f44cf] {
90
90
  --icon-size: 24px;
91
91
  }
92
- .logo[data-v-1d6060f9] {
92
+ .logo[data-v-9c0f44cf] {
93
93
  height: 24px;
94
94
  width: auto;
95
95
  }
96
- .header-content-mb[data-v-1d6060f9] {
96
+ .header-content-mb[data-v-9c0f44cf] {
97
97
  position: fixed;
98
98
  top: var(--o-header-height);
99
99
  left: 0;
100
100
  height: 0;
101
101
  z-index: 998;
102
102
  }
103
- .header-content-active[data-v-1d6060f9] {
103
+ .header-content-active[data-v-9c0f44cf] {
104
104
  width: 100%;
105
105
  height: calc(100vh - var(--o-header-height));
106
106
  }
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./OHeaderMobile.vue2.mjs";
2
2
  import './OHeaderMobile.css';
3
3
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.mjs";
4
- const _OHeaderMobile = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1d6060f9"]]);
4
+ const _OHeaderMobile = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-9c0f44cf"]]);
5
5
  export {
6
6
  _OHeaderMobile as default
7
7
  };