@opendesign-plus/components 0.0.1-rc.60 → 0.0.1-rc.62

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 (175) hide show
  1. package/dist/chunk-OElCookieNotice.cjs.js +1 -1
  2. package/dist/chunk-OElCookieNotice.es.js +312 -149
  3. package/dist/components/empty/OEmpty.vue.d.ts +24 -0
  4. package/dist/components/empty/index.d.ts +39 -0
  5. package/dist/components/feedback-doc/OFeedbackDoc.vue.d.ts +6 -1
  6. package/dist/components/feedback-doc/OFeedbackDocContent.vue.d.ts +2 -0
  7. package/dist/components/feedback-doc/OFeedbackDocDialog.vue.d.ts +6 -1
  8. package/dist/components/feedback-doc/OFeedbackDocPopup.vue.d.ts +4 -0
  9. package/dist/components/feedback-doc/index.d.ts +54 -6
  10. package/dist/components/footer/OFooter.vue.d.ts +4 -25
  11. package/dist/components/footer/components/FooterList.vue.d.ts +21 -0
  12. package/dist/components/footer/components/FooterSimple.vue.d.ts +23 -0
  13. package/dist/components/footer/index.d.ts +8 -64
  14. package/dist/components/footer/types.d.ts +48 -0
  15. package/dist/components/logo-swiper/OLogoSwiper.vue.d.ts +17 -0
  16. package/dist/components/logo-swiper/OLogoSwiperItems.vue.d.ts +17 -0
  17. package/dist/components/logo-swiper/index.d.ts +73 -0
  18. package/dist/components/logo-swiper/types.d.ts +18 -0
  19. package/dist/components/meeting/OMeetingCalendar.vue.d.ts +1 -0
  20. package/dist/components/meeting/OMeetingSigCalendar.vue.d.ts +8 -2
  21. package/dist/components/meeting/components/OMeetingCalendarList.vue.d.ts +1 -0
  22. package/dist/components/meeting/index.d.ts +25 -6
  23. package/dist/components/meeting/types.d.ts +1 -0
  24. package/dist/components/search/internal/SearchPanel.vue.d.ts +1 -1
  25. package/dist/components/sig/OSigDetail.vue.d.ts +30 -0
  26. package/dist/components/sig/OSigList.vue.d.ts +13 -0
  27. package/dist/components/sig/components/OSigDetailInfoCard.vue.d.ts +13 -0
  28. package/dist/components/sig/components/OSigItem.vue.d.ts +14 -0
  29. package/dist/components/sig/components/OSigMember.vue.d.ts +10 -0
  30. package/dist/components/sig/components/OSigRepo.vue.d.ts +8 -0
  31. package/dist/components/sig/components/OSigUserContribute.vue.d.ts +10 -0
  32. package/dist/components/sig/components/config-sig.d.ts +1 -0
  33. package/dist/components/sig/components/utils.d.ts +6 -0
  34. package/dist/components/sig/types.d.ts +171 -0
  35. package/dist/components.cjs.js +41 -41
  36. package/dist/components.css +1 -1
  37. package/dist/components.es.js +16420 -14657
  38. package/dist/index.d.ts +3 -0
  39. package/dist/treeshaking/_virtual/icon-atomgit.mjs +25 -0
  40. package/dist/treeshaking/_virtual/icon-forum.mjs +21 -0
  41. package/dist/treeshaking/_virtual/icon-gitee.mjs +20 -0
  42. package/dist/treeshaking/_virtual/icon-mail.mjs +17 -0
  43. package/dist/treeshaking/_virtual/icon-notice.mjs +20 -0
  44. package/dist/treeshaking/_virtual/icon-outlink.mjs +20 -0
  45. package/dist/treeshaking/_virtual/icon-search.mjs +5 -5
  46. package/dist/treeshaking/_virtual/icon-search2.mjs +17 -0
  47. package/dist/treeshaking/_virtual/icon-user.mjs +17 -0
  48. package/dist/treeshaking/_virtual/icon-working.mjs +17 -0
  49. package/dist/treeshaking/_virtual/sig-space.mjs +20 -0
  50. package/dist/treeshaking/components/activity/OActivityApproval.css +3 -6
  51. package/dist/treeshaking/components/activity/OActivityApproval2.css +3 -6
  52. package/dist/treeshaking/components/activity/OActivityForm.css +3 -6
  53. package/dist/treeshaking/components/activity/OActivityForm2.css +3 -6
  54. package/dist/treeshaking/components/activity/OActivityMyCalendar.css +3 -6
  55. package/dist/treeshaking/components/activity/OActivityMyCalendar2.css +3 -6
  56. package/dist/treeshaking/components/common/TooltipText.vue.mjs +3 -2
  57. package/dist/treeshaking/components/common/WordAvatar.css +18 -0
  58. package/dist/treeshaking/components/common/WordAvatar.vue.mjs +68 -0
  59. package/dist/treeshaking/components/common/WordAvatar.vue3.mjs +5 -0
  60. package/dist/treeshaking/components/element-plus/OElCookieNotice.css +3 -6
  61. package/dist/treeshaking/components/element-plus/OElCookieNotice2.css +3 -6
  62. package/dist/treeshaking/components/empty/404.png.mjs +4 -0
  63. package/dist/treeshaking/components/empty/404_dark.png.mjs +4 -0
  64. package/dist/treeshaking/components/empty/OEmpty.css +60 -0
  65. package/dist/treeshaking/components/empty/OEmpty.vue.d.ts +24 -0
  66. package/dist/treeshaking/components/empty/OEmpty.vue.mjs +7 -0
  67. package/dist/treeshaking/components/empty/OEmpty.vue2.mjs +40 -0
  68. package/dist/treeshaking/components/empty/index.d.ts +39 -0
  69. package/dist/treeshaking/components/empty/index.mjs +9 -0
  70. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.css +5 -5
  71. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.vue.d.ts +6 -1
  72. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.vue.mjs +1 -1
  73. package/dist/treeshaking/components/feedback-doc/OFeedbackDoc.vue2.mjs +10 -4
  74. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.css +27 -27
  75. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.vue.d.ts +2 -0
  76. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.vue.mjs +1 -1
  77. package/dist/treeshaking/components/feedback-doc/OFeedbackDocContent.vue2.mjs +8 -3
  78. package/dist/treeshaking/components/feedback-doc/OFeedbackDocDialog.vue.d.ts +6 -1
  79. package/dist/treeshaking/components/feedback-doc/OFeedbackDocDialog.vue.mjs +12 -5
  80. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.css +3 -3
  81. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.vue.d.ts +4 -0
  82. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.vue.mjs +1 -1
  83. package/dist/treeshaking/components/feedback-doc/OFeedbackDocPopup.vue2.mjs +7 -3
  84. package/dist/treeshaking/components/feedback-doc/index.d.ts +54 -6
  85. package/dist/treeshaking/components/footer/OFooter.css +33 -590
  86. package/dist/treeshaking/components/footer/OFooter.vue.d.ts +4 -25
  87. package/dist/treeshaking/components/footer/OFooter.vue.mjs +1 -1
  88. package/dist/treeshaking/components/footer/OFooter.vue2.mjs +76 -332
  89. package/dist/treeshaking/components/footer/components/FooterList.css +462 -0
  90. package/dist/treeshaking/components/footer/components/FooterList.vue.d.ts +21 -0
  91. package/dist/treeshaking/components/footer/components/FooterList.vue.mjs +7 -0
  92. package/dist/treeshaking/components/footer/components/FooterList.vue2.mjs +215 -0
  93. package/dist/treeshaking/components/footer/components/FooterSimple.css +123 -0
  94. package/dist/treeshaking/components/footer/components/FooterSimple.vue.d.ts +23 -0
  95. package/dist/treeshaking/components/footer/components/FooterSimple.vue.mjs +7 -0
  96. package/dist/treeshaking/components/footer/components/FooterSimple.vue2.mjs +109 -0
  97. package/dist/treeshaking/components/footer/index.d.ts +8 -64
  98. package/dist/treeshaking/components/footer/types.d.ts +48 -0
  99. package/dist/treeshaking/components/header/components/HeaderContent.css +184 -184
  100. package/dist/treeshaking/components/header/components/HeaderContent.vue.mjs +1 -1
  101. package/dist/treeshaking/components/header/components/HeaderContent.vue2.mjs +1 -1
  102. package/dist/treeshaking/components/header/components/HeaderFlatten.css +57 -57
  103. package/dist/treeshaking/components/header/components/HeaderFlatten.vue.mjs +1 -1
  104. package/dist/treeshaking/components/header/components/HeaderFlatten.vue2.mjs +5 -5
  105. package/dist/treeshaking/components/header/components/HeaderNavMobile.css +80 -80
  106. package/dist/treeshaking/components/header/components/HeaderNavMobile.vue.mjs +1 -1
  107. package/dist/treeshaking/components/header/components/HeaderNavMobile.vue2.mjs +7 -1
  108. package/dist/treeshaking/components/logo-swiper/OLogoSwiper.css +31 -0
  109. package/dist/treeshaking/components/logo-swiper/OLogoSwiper.vue.d.ts +17 -0
  110. package/dist/treeshaking/components/logo-swiper/OLogoSwiper.vue.mjs +14 -0
  111. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.css +88 -0
  112. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.vue.d.ts +17 -0
  113. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.vue.mjs +7 -0
  114. package/dist/treeshaking/components/logo-swiper/OLogoSwiperItems.vue2.mjs +158 -0
  115. package/dist/treeshaking/components/logo-swiper/index.d.ts +73 -0
  116. package/dist/treeshaking/components/logo-swiper/index.mjs +16 -0
  117. package/dist/treeshaking/components/logo-swiper/types.d.ts +18 -0
  118. package/dist/treeshaking/components/meeting/OMeetingCalendar.css +3 -6
  119. package/dist/treeshaking/components/meeting/OMeetingCalendar.vue.d.ts +1 -0
  120. package/dist/treeshaking/components/meeting/OMeetingCalendar.vue.mjs +5 -3
  121. package/dist/treeshaking/components/meeting/OMeetingForm.css +3 -6
  122. package/dist/treeshaking/components/meeting/OMeetingForm2.css +3 -6
  123. package/dist/treeshaking/components/meeting/OMeetingMyCalendar.css +3 -6
  124. package/dist/treeshaking/components/meeting/OMeetingMyCalendar2.css +3 -6
  125. package/dist/treeshaking/components/meeting/OMeetingSigCalendar.vue.d.ts +8 -2
  126. package/dist/treeshaking/components/meeting/OMeetingSigCalendar.vue.mjs +8 -4
  127. package/dist/treeshaking/components/meeting/components/OMeetingCalendarList.vue.d.ts +1 -0
  128. package/dist/treeshaking/components/meeting/components/OMeetingCalendarList.vue.mjs +5 -4
  129. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector.css +3 -6
  130. package/dist/treeshaking/components/meeting/components/OMeetingCalendarSelector2.css +3 -6
  131. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.css +3 -6
  132. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles.vue.mjs +1 -1
  133. package/dist/treeshaking/components/meeting/components/OMeetingPlaybackSubtitles2.css +3 -6
  134. package/dist/treeshaking/components/meeting/index.d.ts +25 -6
  135. package/dist/treeshaking/components/meeting/types.d.ts +1 -0
  136. package/dist/treeshaking/components/search/internal/SearchPanel.vue.d.ts +1 -1
  137. package/dist/treeshaking/components/sig/OSigDetail.css +179 -0
  138. package/dist/treeshaking/components/sig/OSigDetail.vue.d.ts +30 -0
  139. package/dist/treeshaking/components/sig/OSigDetail.vue.mjs +219 -0
  140. package/dist/treeshaking/components/sig/OSigDetail.vue3.mjs +5 -0
  141. package/dist/treeshaking/components/sig/OSigList.css +759 -0
  142. package/dist/treeshaking/components/sig/OSigList.vue.d.ts +13 -0
  143. package/dist/treeshaking/components/sig/OSigList.vue.mjs +507 -0
  144. package/dist/treeshaking/components/sig/OSigList.vue3.mjs +5 -0
  145. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.css +126 -0
  146. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.vue.d.ts +13 -0
  147. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.vue.mjs +61 -0
  148. package/dist/treeshaking/components/sig/components/OSigDetailInfoCard.vue3.mjs +5 -0
  149. package/dist/treeshaking/components/sig/components/OSigItem.css +380 -0
  150. package/dist/treeshaking/components/sig/components/OSigItem.vue.d.ts +14 -0
  151. package/dist/treeshaking/components/sig/components/OSigItem.vue.mjs +230 -0
  152. package/dist/treeshaking/components/sig/components/OSigItem.vue3.mjs +5 -0
  153. package/dist/treeshaking/components/sig/components/OSigMember.css +377 -0
  154. package/dist/treeshaking/components/sig/components/OSigMember.vue.d.ts +10 -0
  155. package/dist/treeshaking/components/sig/components/OSigMember.vue.mjs +274 -0
  156. package/dist/treeshaking/components/sig/components/OSigMember.vue3.mjs +5 -0
  157. package/dist/treeshaking/components/sig/components/OSigRepo.css +108 -0
  158. package/dist/treeshaking/components/sig/components/OSigRepo.vue.d.ts +8 -0
  159. package/dist/treeshaking/components/sig/components/OSigRepo.vue.mjs +181 -0
  160. package/dist/treeshaking/components/sig/components/OSigRepo.vue3.mjs +5 -0
  161. package/dist/treeshaking/components/sig/components/OSigUserContribute.css +242 -0
  162. package/dist/treeshaking/components/sig/components/OSigUserContribute.vue.d.ts +10 -0
  163. package/dist/treeshaking/components/sig/components/OSigUserContribute.vue.mjs +326 -0
  164. package/dist/treeshaking/components/sig/components/OSigUserContribute.vue3.mjs +5 -0
  165. package/dist/treeshaking/components/sig/components/config-sig.d.ts +1 -0
  166. package/dist/treeshaking/components/sig/components/config-sig.mjs +4 -0
  167. package/dist/treeshaking/components/sig/components/utils.d.ts +6 -0
  168. package/dist/treeshaking/components/sig/components/utils.mjs +10 -0
  169. package/dist/treeshaking/components/sig/index.mjs +18 -0
  170. package/dist/treeshaking/components/sig/types.d.ts +171 -0
  171. package/dist/treeshaking/i18n/en.mjs +76 -1
  172. package/dist/treeshaking/i18n/zh.mjs +90 -2
  173. package/dist/treeshaking/index.d.ts +3 -0
  174. package/dist/treeshaking/index.mjs +8 -0
  175. package/package.json +2 -2
@@ -0,0 +1,13 @@
1
+ import { GroupInfoT, SigListItemT, SigListPropsT } from './types';
2
+ declare const _default: import('vue').DefineComponent<SigListPropsT, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
3
+ "to-sig-detail": (sigName: string) => any;
4
+ }, string, import('vue').PublicProps, Readonly<SigListPropsT> & Readonly<{
5
+ "onTo-sig-detail"?: ((sigName: string) => any) | undefined;
6
+ }>, {
7
+ sigLandscape: GroupInfoT[];
8
+ sigList: SigListItemT[];
9
+ footerSelector: string;
10
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
11
+ panelRef: HTMLDivElement;
12
+ }, HTMLDivElement>;
13
+ export default _default;
@@ -0,0 +1,507 @@
1
+ import { defineComponent, computed, ref, watch, onMounted, onUnmounted, openBlock, createElementBlock, createElementVNode, normalizeClass, unref, toDisplayString, createVNode, withCtx, Fragment, renderList, createBlock, createTextVNode, createCommentVNode, withModifiers, withDirectives, nextTick } from "vue";
2
+ import { ElSelect, ElOption } from "element-plus";
3
+ import "element-plus/es/components/select/style/css";
4
+ import "element-plus/es/components/option/style/css";
5
+ import { useDebounceFn, onClickOutside, useThrottleFn } from "@vueuse/core";
6
+ import { useScreen } from "@opendesign-plus/composables";
7
+ import { useI18n } from "../../i18n/index.mjs";
8
+ import { ORadioGroup, ORadio, OToggle, ODivider, OSelect, OOption, OInput, OIcon, ORow, OCol, OPagination } from "@opensig/opendesign";
9
+ import OEmpty from "../empty/OEmpty.vue.mjs";
10
+ import _sfc_main$1 from "./components/OSigItem.vue.mjs";
11
+ import './components/OSigItem.css';
12
+ import IconSearch from "../../_virtual/icon-search.mjs";
13
+ import { buildVueDompurifyHTMLDirective } from "vue-dompurify-html";
14
+ const _hoisted_1 = { class: "o-sig-list" };
15
+ const _hoisted_2 = {
16
+ key: 0,
17
+ class: "o-sig-filter-type"
18
+ };
19
+ const _hoisted_3 = { class: "o-sig-filter-title" };
20
+ const _hoisted_4 = {
21
+ key: 1,
22
+ class: "o-sig-filter-input"
23
+ };
24
+ const _hoisted_5 = { class: "o-sig-filter-select-box" };
25
+ const _hoisted_6 = {
26
+ key: 0,
27
+ class: "o-sig-search-data"
28
+ };
29
+ const _hoisted_7 = {
30
+ key: 0,
31
+ class: "o-sig-search-label"
32
+ };
33
+ const _hoisted_8 = ["onClick"];
34
+ const _hoisted_9 = ["title"];
35
+ const _hoisted_10 = {
36
+ key: 2,
37
+ class: "o-sig-no-result"
38
+ };
39
+ const _hoisted_11 = {
40
+ key: 0,
41
+ class: "o-sig-filter-result-tip"
42
+ };
43
+ const _hoisted_12 = { key: 0 };
44
+ const _hoisted_13 = { class: "o-sig-num" };
45
+ const _hoisted_14 = {
46
+ key: 0,
47
+ class: "o-sig-num"
48
+ };
49
+ const _hoisted_15 = { key: 1 };
50
+ const _hoisted_16 = { class: "o-sig-num" };
51
+ const _hoisted_17 = {
52
+ key: 3,
53
+ class: "o-sig-loading"
54
+ };
55
+ const _hoisted_18 = {
56
+ key: 4,
57
+ class: "o-sig-pagination"
58
+ };
59
+ const PAGE_SIZE_DEFAULT = 10;
60
+ const _sfc_main = /* @__PURE__ */ defineComponent({
61
+ __name: "OSigList",
62
+ props: {
63
+ sigLandscape: { default: () => [] },
64
+ sigList: { default: () => [] },
65
+ searchFn: {},
66
+ footerSelector: { default: "#app > .footer" }
67
+ },
68
+ emits: ["to-sig-detail"],
69
+ setup(__props, { emit: __emit }) {
70
+ const vDompurifyHtml = buildVueDompurifyHTMLDirective();
71
+ const { locale: localeRef, t } = useI18n();
72
+ const locale = computed(() => localeRef.value);
73
+ const { isLaptop, isPadH, lePadV, isPhone } = useScreen();
74
+ const COUNT_PER_PAGE = [10, 20, 30];
75
+ const props = __props;
76
+ const emit = __emit;
77
+ const sigQuery = ref({ pageSize: PAGE_SIZE_DEFAULT, page: 1 });
78
+ const resetSigQuery = () => {
79
+ sigQuery.value.page = 1;
80
+ sigQuery.value.pageSize = PAGE_SIZE_DEFAULT;
81
+ };
82
+ const allSigInfo = ref([]);
83
+ const activeRepo = ref("");
84
+ const landscapeList = ref([]);
85
+ const featureArr = ref([]);
86
+ const mergedSigList = ref([]);
87
+ const constructLandscapeMap = () => {
88
+ landscapeList.value = props.sigLandscape.map(({ created_at: _created, ...rest }) => rest);
89
+ const seen = /* @__PURE__ */ new Set();
90
+ const features = [];
91
+ for (const item of landscapeList.value) {
92
+ if (item.feature_zh && !seen.has(item.feature_zh)) {
93
+ seen.add(item.feature_zh);
94
+ features.push({
95
+ value: item.feature_en ?? "",
96
+ label: { zh: item.feature_zh, en: item.feature_en }
97
+ });
98
+ }
99
+ }
100
+ features.push({ value: "other", label: { zh: "其他", en: "Other" } });
101
+ features.unshift({ value: "all", label: { zh: "全部", en: "All" } });
102
+ featureArr.value = features;
103
+ };
104
+ const mergeSigList = () => {
105
+ const map = new Map(landscapeList.value.map((m) => [m.sig_name, m]));
106
+ mergedSigList.value = allSigInfo.value.map((item) => ({
107
+ ...item,
108
+ ...map.get(item.name) ?? {}
109
+ }));
110
+ };
111
+ const initData = () => {
112
+ allSigInfo.value = [...props.sigList].sort((a, b) => a.name.localeCompare(b.name));
113
+ constructLandscapeMap();
114
+ mergeSigList();
115
+ };
116
+ watch(
117
+ () => [props.sigList, props.sigLandscape],
118
+ () => {
119
+ initData();
120
+ },
121
+ { immediate: true }
122
+ );
123
+ const searchType = ref("all");
124
+ const placeholderType = ref(t("sig.searchSig"));
125
+ const sigOptions = [
126
+ { label: t("sig.all"), value: "all", placeholder: t("sig.searchSig") },
127
+ { label: t("sig.sigGroup"), value: "sig", placeholder: t("sig.searchSigName") },
128
+ { label: t("sig.repo"), value: "repos", placeholder: t("sig.searchSigRepo") },
129
+ { label: t("sig.maintainerEn"), value: "maintainer", placeholder: t("sig.searchSigMaintainer") }
130
+ ];
131
+ const getSearchType = (val) => {
132
+ var _a;
133
+ const v = String(val);
134
+ placeholderType.value = ((_a = sigOptions.find((e) => e.value === v)) == null ? void 0 : _a.placeholder) ?? "";
135
+ enterSearchType.value = v;
136
+ sigSearch();
137
+ };
138
+ const uniqueArray = (array) => {
139
+ if (!array) return [];
140
+ const seen = /* @__PURE__ */ new Set();
141
+ return array.filter((item) => seen.has(item.name) ? false : (seen.add(item.name), true));
142
+ };
143
+ const sigInput = ref("");
144
+ const showPanel = ref(false);
145
+ const hasSearchData = ref([]);
146
+ const buildSearchGroups = (res, type) => {
147
+ const top3 = (arr) => uniqueArray(arr).sort((a, b) => b.socre - a.socre).slice(0, 3);
148
+ const all = [
149
+ { id: "sig", label: t("sig.sigGroup"), list: top3(res["name.keyword"]) },
150
+ { id: "repos", label: t("sig.repo"), list: top3(res.repos) },
151
+ { id: "maintainer", label: t("sig.maintainerEn"), list: top3(res.giteeIds) }
152
+ ];
153
+ return type === "all" ? all : all.filter((g) => g.id === type);
154
+ };
155
+ const sigSearch = () => {
156
+ if (!props.searchFn) return;
157
+ hasSearchData.value = [];
158
+ const params = {
159
+ keyword: sigInput.value,
160
+ keywordType: searchType.value
161
+ };
162
+ props.searchFn(params).then((res) => {
163
+ hasSearchData.value = buildSearchGroups(res, searchType.value);
164
+ const kw = sigInput.value;
165
+ if (kw) {
166
+ const escaped = kw.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
167
+ const regex = new RegExp(`(${escaped})`, "gi");
168
+ hasSearchData.value = hasSearchData.value.map((g) => ({
169
+ ...g,
170
+ list: g.list.map((item) => ({
171
+ ...item,
172
+ name: item.name.replace(/<[^>]+>/g, "").replace(regex, '<span class="highlight-text">$1</span>')
173
+ }))
174
+ }));
175
+ }
176
+ }).catch(() => {
177
+ hasSearchData.value = buildSearchGroups({}, searchType.value);
178
+ });
179
+ };
180
+ const updataSig = (val) => {
181
+ sigInput.value = val;
182
+ resetSigQuery();
183
+ sigSearch();
184
+ };
185
+ const debounceFn = useDebounceFn(updataSig, 300);
186
+ const debounceSig = computed({
187
+ get: () => sigInput.value.trim(),
188
+ set: (val) => debounceFn(val)
189
+ });
190
+ const enterSearchType = ref("all");
191
+ const enterSearchInput = ref("");
192
+ const changeSearchInput = () => {
193
+ if (!sigInput.value) return;
194
+ showPanel.value = false;
195
+ enterSearchType.value = searchType.value;
196
+ enterSearchInput.value = sigInput.value;
197
+ };
198
+ const stripHtml = (val) => (val == null ? void 0 : val.replace(/<[^>]+>/g, "")) ?? "";
199
+ const clickItem = (val) => {
200
+ sigInput.value = stripHtml(val);
201
+ showPanel.value = false;
202
+ enterSearchType.value = searchType.value;
203
+ enterSearchInput.value = sigInput.value;
204
+ };
205
+ const clearInput = () => {
206
+ sigInput.value = "";
207
+ enterSearchInput.value = "";
208
+ };
209
+ const panelRef = ref();
210
+ onClickOutside(panelRef, () => {
211
+ showPanel.value = false;
212
+ });
213
+ const toSigDetail = (sigName) => emit("to-sig-detail", sigName);
214
+ watch(
215
+ () => sigInput.value,
216
+ (val) => {
217
+ showPanel.value = !!val;
218
+ if (!val) enterSearchInput.value = val;
219
+ }
220
+ );
221
+ const filterSigData = ref([]);
222
+ const filterSearchData = ref([]);
223
+ const filterDataMb = ref([]);
224
+ const featureType = ref("all");
225
+ const matchKw = (text, kw) => !!text && text.toLowerCase().includes(kw);
226
+ watch(
227
+ () => [
228
+ featureType.value,
229
+ enterSearchType.value,
230
+ enterSearchInput.value,
231
+ sigQuery.value.page,
232
+ sigQuery.value.pageSize,
233
+ mergedSigList.value
234
+ ],
235
+ ([ftype, stype, sinput, page, pageSize, merged]) => {
236
+ if (!merged.length) return;
237
+ const kw = (sinput ?? "").toLowerCase();
238
+ const byFeature = ftype === "all" ? merged : merged.filter(
239
+ (item) => ftype === "other" ? !item.feature_en : item.feature_en === ftype
240
+ );
241
+ let searched = byFeature;
242
+ if (kw && stype) {
243
+ searched = byFeature.filter((item) => {
244
+ var _a, _b;
245
+ if (stype === "sig" || stype === "all") {
246
+ if (matchKw(item.name, kw) || matchKw(item.description, kw)) return true;
247
+ }
248
+ if (stype === "repos" || stype === "all") {
249
+ if ((_a = item.repositories) == null ? void 0 : _a.some((r) => r == null ? void 0 : r.toLowerCase().includes(kw))) return true;
250
+ }
251
+ if (stype === "maintainer" || stype === "all") {
252
+ if ((_b = item.maintainer_info) == null ? void 0 : _b.some((m) => matchKw(m.name, kw) || matchKw(m.gitee_id, kw))) return true;
253
+ }
254
+ return false;
255
+ });
256
+ }
257
+ if (kw) {
258
+ searched = [...searched].sort((a, b) => {
259
+ const aHit = a.name.toLowerCase().includes(kw);
260
+ const bHit = b.name.toLowerCase().includes(kw);
261
+ return aHit === bHit ? 0 : aHit ? -1 : 1;
262
+ });
263
+ }
264
+ filterSearchData.value = searched;
265
+ filterSigData.value = lePadV.value ? searched.slice(0, page * pageSize) : searched.slice((page - 1) * pageSize, page * pageSize);
266
+ },
267
+ { immediate: true }
268
+ );
269
+ const gap = computed(() => {
270
+ if (isLaptop.value) return "24px 24px";
271
+ if (isPadH.value) return "16px 16px";
272
+ if (lePadV.value) return "0 12px";
273
+ return "32px 32px";
274
+ });
275
+ const clearChecked = (val) => {
276
+ resetSigQuery();
277
+ if (val) {
278
+ nextTick(() => {
279
+ featureType.value = "all";
280
+ });
281
+ }
282
+ };
283
+ const getMoreDataMo = () => {
284
+ filterDataMb.value = filterSearchData.value.slice(
285
+ 0,
286
+ sigQuery.value.page * sigQuery.value.pageSize
287
+ );
288
+ sigQuery.value.page++;
289
+ };
290
+ const footer = ref(null);
291
+ const listenScroll = () => {
292
+ if (!lePadV.value) return;
293
+ nextTick(() => {
294
+ var _a;
295
+ const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
296
+ const scrollHeight = document.body.scrollHeight;
297
+ const clientHeight = document.documentElement.clientHeight || document.body.clientHeight;
298
+ const footerHeight = ((_a = footer.value) == null ? void 0 : _a.clientHeight) ?? 0;
299
+ if (scrollTop + clientHeight + footerHeight >= scrollHeight && filterDataMb.value.length < filterSearchData.value.length) {
300
+ getMoreDataMo();
301
+ }
302
+ });
303
+ };
304
+ const throttleEvent = useThrottleFn(listenScroll, 300);
305
+ onMounted(() => {
306
+ footer.value = document.querySelector(props.footerSelector);
307
+ window.addEventListener("scroll", throttleEvent);
308
+ });
309
+ onUnmounted(() => {
310
+ window.removeEventListener("scroll", throttleEvent);
311
+ });
312
+ return (_ctx, _cache) => {
313
+ return openBlock(), createElementBlock("div", _hoisted_1, [
314
+ createElementVNode("div", {
315
+ class: normalizeClass(["o-sig-filter-box", `o-sig-filter-box-${locale.value}`])
316
+ }, [
317
+ !unref(isPhone) ? (openBlock(), createElementBlock("div", _hoisted_2, [
318
+ createElementVNode("p", _hoisted_3, toDisplayString(unref(t)("sig.type")), 1),
319
+ createVNode(unref(ORadioGroup), {
320
+ modelValue: featureType.value,
321
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => featureType.value = $event)
322
+ }, {
323
+ default: withCtx(() => [
324
+ (openBlock(true), createElementBlock(Fragment, null, renderList(featureArr.value, (option) => {
325
+ return openBlock(), createBlock(unref(ORadio), {
326
+ key: option.value,
327
+ value: option.value
328
+ }, {
329
+ radio: withCtx(({ checked }) => [
330
+ createVNode(unref(OToggle), {
331
+ class: normalizeClass(["o-sig-tag-normal", { active: checked }]),
332
+ checked,
333
+ onClick: ($event) => clearChecked(checked)
334
+ }, {
335
+ default: withCtx(() => [
336
+ createTextVNode(toDisplayString(option.label[locale.value]), 1)
337
+ ]),
338
+ _: 2
339
+ }, 1032, ["class", "checked", "onClick"])
340
+ ]),
341
+ _: 2
342
+ }, 1032, ["value"]);
343
+ }), 128))
344
+ ]),
345
+ _: 1
346
+ }, 8, ["modelValue"])
347
+ ])) : createCommentVNode("", true),
348
+ unref(isPhone) ? (openBlock(), createElementBlock("div", _hoisted_4, [
349
+ createVNode(unref(ElSelect), {
350
+ modelValue: featureType.value,
351
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => featureType.value = $event),
352
+ filterable: "",
353
+ size: "large",
354
+ placeholder: unref(t)("sig.selectOrSearchCate")
355
+ }, {
356
+ default: withCtx(() => [
357
+ (openBlock(true), createElementBlock(Fragment, null, renderList(featureArr.value, (option) => {
358
+ return openBlock(), createBlock(unref(ElOption), {
359
+ key: option.value,
360
+ label: option.label[locale.value] ?? option.value,
361
+ value: option.value
362
+ }, null, 8, ["label", "value"]);
363
+ }), 128))
364
+ ]),
365
+ _: 1
366
+ }, 8, ["modelValue", "placeholder"])
367
+ ])) : createCommentVNode("", true),
368
+ createVNode(unref(ODivider), { direction: "h" }),
369
+ createElementVNode("div", _hoisted_5, [
370
+ createElementVNode("div", {
371
+ ref_key: "panelRef",
372
+ ref: panelRef,
373
+ class: normalizeClass(["o-sig-filter-select", { "o-sig-filter-select-focus": showPanel.value }])
374
+ }, [
375
+ createVNode(unref(OSelect), {
376
+ modelValue: searchType.value,
377
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => searchType.value = $event),
378
+ size: "large",
379
+ trigger: "click",
380
+ variant: "outline",
381
+ onChange: getSearchType
382
+ }, {
383
+ default: withCtx(() => [
384
+ (openBlock(), createElementBlock(Fragment, null, renderList(sigOptions, (item) => {
385
+ return createVNode(unref(OOption), {
386
+ key: item.value,
387
+ label: item.label,
388
+ value: item.value
389
+ }, null, 8, ["label", "value"]);
390
+ }), 64))
391
+ ]),
392
+ _: 1
393
+ }, 8, ["modelValue"]),
394
+ createVNode(unref(OInput), {
395
+ modelValue: debounceSig.value,
396
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => debounceSig.value = $event),
397
+ size: "large",
398
+ clearable: "",
399
+ placeholder: placeholderType.value,
400
+ onFocusCapture: _cache[4] || (_cache[4] = ($event) => showPanel.value = true),
401
+ onPressEnter: changeSearchInput,
402
+ onClear: clearInput
403
+ }, {
404
+ prefix: withCtx(() => [
405
+ createVNode(unref(OIcon), null, {
406
+ default: withCtx(() => [
407
+ createVNode(unref(IconSearch))
408
+ ]),
409
+ _: 1
410
+ })
411
+ ]),
412
+ _: 1
413
+ }, 8, ["modelValue", "placeholder"]),
414
+ showPanel.value && sigInput.value ? (openBlock(), createElementBlock("div", _hoisted_6, [
415
+ (openBlock(true), createElementBlock(Fragment, null, renderList(hasSearchData.value, (item) => {
416
+ return openBlock(), createElementBlock("div", {
417
+ key: item.id,
418
+ class: "o-sig-search-group"
419
+ }, [
420
+ searchType.value === "all" ? (openBlock(), createElementBlock("p", _hoisted_7, toDisplayString(item.label), 1)) : createCommentVNode("", true),
421
+ item.list.length ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(item.list, (it) => {
422
+ return openBlock(), createElementBlock("div", {
423
+ key: it.name,
424
+ class: "o-sig-search-item",
425
+ onClick: withModifiers(($event) => clickItem(it == null ? void 0 : it.name), ["stop"])
426
+ }, [
427
+ withDirectives(createElementVNode("span", {
428
+ title: stripHtml(it == null ? void 0 : it.name),
429
+ class: "o-sig-search-title"
430
+ }, null, 8, _hoisted_9), [
431
+ [unref(vDompurifyHtml), it == null ? void 0 : it.name]
432
+ ])
433
+ ], 8, _hoisted_8);
434
+ }), 128)) : (openBlock(), createElementBlock("p", _hoisted_10, toDisplayString(unref(t)("sig.noResult")), 1))
435
+ ]);
436
+ }), 128))
437
+ ])) : createCommentVNode("", true)
438
+ ], 2)
439
+ ])
440
+ ], 2),
441
+ featureType.value !== "all" || enterSearchInput.value ? (openBlock(), createElementBlock("div", _hoisted_11, [
442
+ sigInput.value ? (openBlock(), createElementBlock("div", _hoisted_12, [
443
+ createElementVNode("span", null, toDisplayString(unref(t)("sig.filterResultTip1")), 1),
444
+ createElementVNode("span", _hoisted_13, toDisplayString(filterSearchData.value.length), 1),
445
+ createElementVNode("span", null, toDisplayString(unref(t)("sig.filterResultTip2")), 1),
446
+ locale.value === "zh" ? (openBlock(), createElementBlock("span", _hoisted_14, toDisplayString(sigInput.value), 1)) : createCommentVNode("", true),
447
+ createElementVNode("span", null, toDisplayString(unref(t)("sig.filterResultTip3")), 1)
448
+ ])) : (openBlock(), createElementBlock("div", _hoisted_15, [
449
+ createElementVNode("span", null, toDisplayString(unref(t)("sig.filterResultTip4")), 1),
450
+ createElementVNode("span", _hoisted_16, toDisplayString(filterSearchData.value.length), 1),
451
+ createElementVNode("span", null, toDisplayString(unref(t)("sig.filterResultTip5")), 1)
452
+ ]))
453
+ ])) : createCommentVNode("", true),
454
+ filterSigData.value.length ? (openBlock(), createBlock(unref(ORow), {
455
+ key: 1,
456
+ gap: gap.value,
457
+ wrap: "wrap",
458
+ class: normalizeClass(["o-sig-card-list", { "o-sig-card-list-tip": featureType.value !== "all" || enterSearchInput.value }])
459
+ }, {
460
+ default: withCtx(() => [
461
+ (openBlock(true), createElementBlock(Fragment, null, renderList(filterSigData.value, (sig) => {
462
+ return openBlock(), createBlock(unref(OCol), {
463
+ key: sig.name,
464
+ flex: unref(lePadV) ? "0 0 100%" : "0 0 50%"
465
+ }, {
466
+ default: withCtx(() => [
467
+ createVNode(_sfc_main$1, {
468
+ sig,
469
+ locale: locale.value,
470
+ mobile: unref(lePadV),
471
+ "active-repo": activeRepo.value,
472
+ onToSigDetail: toSigDetail
473
+ }, null, 8, ["sig", "locale", "mobile", "active-repo"])
474
+ ]),
475
+ _: 2
476
+ }, 1032, ["flex"]);
477
+ }), 128))
478
+ ]),
479
+ _: 1
480
+ }, 8, ["gap", "class"])) : (openBlock(), createBlock(OEmpty, {
481
+ key: 2,
482
+ style: {
483
+ "margin-top": "40px",
484
+ "--result-image-width": "140px",
485
+ "--result-image-height": "170px"
486
+ }
487
+ })),
488
+ unref(lePadV) && filterDataMb.value.length && filterDataMb.value.length < filterSearchData.value.length ? (openBlock(), createElementBlock("p", _hoisted_17, toDisplayString(unref(t)("sig.loading")), 1)) : createCommentVNode("", true),
489
+ filterSearchData.value.length > COUNT_PER_PAGE[0] ? (openBlock(), createElementBlock("div", _hoisted_18, [
490
+ createVNode(unref(OPagination), {
491
+ page: sigQuery.value.page,
492
+ "onUpdate:page": _cache[5] || (_cache[5] = ($event) => sigQuery.value.page = $event),
493
+ "page-size": sigQuery.value.pageSize,
494
+ "onUpdate:pageSize": _cache[6] || (_cache[6] = ($event) => sigQuery.value.pageSize = $event),
495
+ layout: ["total", "pagesize", "pager", "jumper"],
496
+ total: filterSearchData.value.length,
497
+ "page-sizes": COUNT_PER_PAGE,
498
+ "show-more": true
499
+ }, null, 8, ["page", "page-size", "total"])
500
+ ])) : createCommentVNode("", true)
501
+ ]);
502
+ };
503
+ }
504
+ });
505
+ export {
506
+ _sfc_main as default
507
+ };
@@ -0,0 +1,5 @@
1
+ import _sfc_main from "./OSigList.vue.mjs";
2
+ import './OSigList.css';
3
+ export {
4
+ _sfc_main as default
5
+ };
@@ -0,0 +1,126 @@
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
+ .o-sig-detail-info-card {
10
+ position: relative;
11
+ border-radius: var(--o-radius-xs);
12
+ background-size: cover;
13
+ background-position: right bottom;
14
+ background-repeat: no-repeat;
15
+ padding: var(--o-gap-6);
16
+ }
17
+ @media (min-width: 1201px) and (max-width: 1680px) {
18
+ .o-sig-detail-info-card {
19
+ padding: var(--o-gap-5);
20
+ }
21
+ }
22
+ @media (min-width: 841px) and (max-width: 1200px) {
23
+ .o-sig-detail-info-card {
24
+ padding: var(--o-gap-4);
25
+ }
26
+ }
27
+ @media (max-width: 840px) {
28
+ .o-sig-detail-info-card {
29
+ padding: var(--o-gap-3);
30
+ }
31
+ }
32
+ .o-sig-detail-info-card .o-sig-detail-name-box {
33
+ display: flex;
34
+ align-items: center;
35
+ }
36
+ .o-sig-detail-info-card .o-sig-detail-name {
37
+ font-weight: 600;
38
+ font-size: 32px;
39
+ line-height: 44px;
40
+ }
41
+ @media (min-width: 1201px) and (max-width: 1680px) {
42
+ .o-sig-detail-info-card .o-sig-detail-name {
43
+ font-size: 20px;
44
+ line-height: 28px;
45
+ }
46
+ }
47
+ @media (min-width: 841px) and (max-width: 1200px) {
48
+ .o-sig-detail-info-card .o-sig-detail-name {
49
+ font-size: 20px;
50
+ line-height: 28px;
51
+ }
52
+ }
53
+ @media (min-width: 601px) and (max-width: 840px) {
54
+ .o-sig-detail-info-card .o-sig-detail-name {
55
+ font-size: 18px;
56
+ line-height: 26px;
57
+ }
58
+ }
59
+ @media (max-width: 600px) {
60
+ .o-sig-detail-info-card .o-sig-detail-name {
61
+ font-size: 16px;
62
+ line-height: 24px;
63
+ }
64
+ }
65
+ .o-sig-detail-info-card .o-divider {
66
+ --o-divider-gap: var(--o-gap-4);
67
+ }
68
+ @media (min-width: 1201px) and (max-width: 1680px) {
69
+ .o-sig-detail-info-card .o-divider {
70
+ --o-divider-gap: var(--o-gap-3);
71
+ }
72
+ }
73
+ @media (min-width: 841px) and (max-width: 1200px) {
74
+ .o-sig-detail-info-card .o-divider {
75
+ --o-divider-gap: var(--o-gap-2);
76
+ }
77
+ }
78
+ @media (max-width: 840px) {
79
+ .o-sig-detail-info-card .o-divider {
80
+ --o-divider-gap: var(--o-gap-2);
81
+ }
82
+ }
83
+ .o-sig-detail-info-card .o-link .o-link-label {
84
+ display: flex;
85
+ align-items: center;
86
+ }
87
+ .o-sig-detail-info-card .o-link .o-link-label .o-icon {
88
+ margin-left: var(--o-gap-1);
89
+ }
90
+ .o-sig-detail-info-card .o-sig-detail-info-content {
91
+ margin-top: var(--o-gap-4);
92
+ color: var(--o-color-info2);
93
+ }
94
+ @media (max-width: 1200px) {
95
+ .o-sig-detail-info-card .o-sig-detail-info-content {
96
+ margin-top: var(--o-gap-3);
97
+ }
98
+ }
99
+ .o-sig-detail-info-card .o-sig-detail-description {
100
+ font-size: 16px;
101
+ line-height: 24px;
102
+ }
103
+ @media (min-width: 1201px) and (max-width: 1680px) {
104
+ .o-sig-detail-info-card .o-sig-detail-description {
105
+ font-size: 14px;
106
+ line-height: 22px;
107
+ }
108
+ }
109
+ @media (min-width: 841px) and (max-width: 1200px) {
110
+ .o-sig-detail-info-card .o-sig-detail-description {
111
+ font-size: 14px;
112
+ line-height: 22px;
113
+ }
114
+ }
115
+ @media (min-width: 601px) and (max-width: 840px) {
116
+ .o-sig-detail-info-card .o-sig-detail-description {
117
+ font-size: 14px;
118
+ line-height: 22px;
119
+ }
120
+ }
121
+ @media (max-width: 600px) {
122
+ .o-sig-detail-info-card .o-sig-detail-description {
123
+ font-size: 12px;
124
+ line-height: 18px;
125
+ }
126
+ }
@@ -0,0 +1,13 @@
1
+ type __VLS_Props = {
2
+ sigName?: string;
3
+ giteeAddress?: string;
4
+ description?: string;
5
+ bg?: string;
6
+ };
7
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
8
+ description: string;
9
+ sigName: string;
10
+ bg: string;
11
+ giteeAddress: string;
12
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
13
+ export default _default;