yc-pro-components 0.0.57 → 0.0.59

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 (50) hide show
  1. package/es/components/yc-plus-page/src/header-filter-cell.vue.d.ts +5 -0
  2. package/es/components/yc-plus-page/src/header-filter-cell.vue.mjs +1 -1
  3. package/es/components/yc-plus-page/src/header-filter-cell.vue2.mjs +48 -47
  4. package/es/components/yc-plus-page/src/index.vue.d.ts +1 -0
  5. package/es/components/yc-plus-page/src/index.vue.mjs +1 -1
  6. package/es/components/yc-plus-page/src/index.vue2.mjs +11 -4
  7. package/es/components/yc-plus-page/src/type.d.ts +4 -0
  8. package/es/components/yc-plus-page/src/use-header-filter.d.ts +2 -0
  9. package/es/components/yc-plus-page/src/use-header-filter.mjs +6 -1
  10. package/es/index.css +12 -12
  11. package/index.css +12 -12
  12. package/index.js +67 -54
  13. package/index.min.css +2 -2
  14. package/index.min.js +11 -11
  15. package/index.min.mjs +11 -11
  16. package/index.mjs +67 -54
  17. package/lib/components/yc-plus-page/src/header-filter-cell.vue.d.ts +5 -0
  18. package/lib/components/yc-plus-page/src/header-filter-cell.vue.js +1 -1
  19. package/lib/components/yc-plus-page/src/header-filter-cell.vue2.js +47 -46
  20. package/lib/components/yc-plus-page/src/index.vue.d.ts +1 -0
  21. package/lib/components/yc-plus-page/src/index.vue.js +1 -1
  22. package/lib/components/yc-plus-page/src/index.vue2.js +11 -4
  23. package/lib/components/yc-plus-page/src/type.d.ts +4 -0
  24. package/lib/components/yc-plus-page/src/use-header-filter.d.ts +2 -0
  25. package/lib/components/yc-plus-page/src/use-header-filter.js +6 -1
  26. package/lib/index.css +11 -11
  27. package/locale/en.js +1 -1
  28. package/locale/en.min.js +1 -1
  29. package/locale/en.min.mjs +1 -1
  30. package/locale/en.mjs +1 -1
  31. package/locale/ja.js +1 -1
  32. package/locale/ja.min.js +1 -1
  33. package/locale/ja.min.mjs +1 -1
  34. package/locale/ja.mjs +1 -1
  35. package/locale/ko.js +1 -1
  36. package/locale/ko.min.js +1 -1
  37. package/locale/ko.min.mjs +1 -1
  38. package/locale/ko.mjs +1 -1
  39. package/locale/zh-cn.js +1 -1
  40. package/locale/zh-cn.min.js +1 -1
  41. package/locale/zh-cn.min.mjs +1 -1
  42. package/locale/zh-cn.mjs +1 -1
  43. package/locale/zh-tw.js +1 -1
  44. package/locale/zh-tw.min.js +1 -1
  45. package/locale/zh-tw.min.mjs +1 -1
  46. package/locale/zh-tw.mjs +1 -1
  47. package/package.json +1 -1
  48. package/theme-chalk/index.css +1 -1
  49. package/theme-chalk/plus-search.css +1 -1
  50. package/theme-chalk/src/search.scss +14 -6
package/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! yc-pro-components v0.0.57 */
1
+ /*! yc-pro-components v0.0.59 */
2
2
  import { unref, isRef, ref, inject, isReactive, watch, computed, shallowRef, provide, onMounted, nextTick, onBeforeUnmount, defineComponent, useAttrs, watchEffect, openBlock, createBlock, mergeProps, createSlots, withCtx, createElementVNode, renderSlot, normalizeStyle, createVNode, createTextVNode, toDisplayString, createElementBlock, normalizeClass, createCommentVNode, reactive, Fragment, renderList, resolveDynamicComponent, normalizeProps, guardReactiveProps, h, withDirectives, isVNode, withKeys, withModifiers, TransitionGroup, toHandlers, getCurrentInstance, resolveComponent, toRefs, useSlots, onUnmounted, resolveDirective, pushScopeId, popScopeId, onBeforeMount, getCurrentScope, onScopeDispose, toRef, mergeModels, useModel, vShow, createStaticVNode, hasInjectionContext, markRaw, effectScope, toRaw } from 'vue';
3
3
  import { dayjs, localeContextKey, ElDialog, ElButton, ElPagination, ElRadioGroup, ElRadio, ElTableColumn, ElDropdown, ElDropdownMenu, ElDropdownItem, ElIcon, ElTooltip, ElPopconfirm, ElLink, ElMessageBox, useFormDisabled, ElDatePicker, ClickOutside, ElTag, ElInput, ElAutocomplete, ElCascader, ElCheckboxGroup, ElCheckbox, ElColorPicker, ElInputNumber, ElRate, ElSelect, ElOption, ElSlider, ElSwitch, ElTimePicker, ElTimeSelect, ElTransfer, ElTreeSelect, ElSelectV2, ElText, ElDivider, ElFormItem, ElOptionGroup, ElRow, ElCol, ElForm, ElCard, ElMessage, ElImage, ElProgress, ElAvatar, ElPopover, ElTable, vLoading, ElDescriptions, ElDescriptionsItem, ElDrawer, TableV2FixedDir, ElAutoResizer, ElTableV2, ElSteps, ElStep, ElBreadcrumb, ElBreadcrumbItem, ElMenuItem, ElSubMenu, ElMenu, ElScrollbar, ElHeader, ElContainer, ElMain, ElBacktop, ElUpload } from 'element-plus';
4
4
 
@@ -32335,6 +32335,10 @@ function useHeaderFilter(options = {}) {
32335
32335
  orderByState.push(next);
32336
32336
  }
32337
32337
  };
32338
+ const resetAllHeaderFilters = () => {
32339
+ headerFiltersState.filters.splice(0);
32340
+ orderByState.splice(0);
32341
+ };
32338
32342
  const getMergedQuery = (baseQuery) => {
32339
32343
  const normalizeFilters = (filters) => {
32340
32344
  return filters.map((f) => {
@@ -32387,7 +32391,8 @@ function useHeaderFilter(options = {}) {
32387
32391
  getMergedQuery,
32388
32392
  updateCatalogs,
32389
32393
  isFieldFilterable,
32390
- isFieldVisible
32394
+ isFieldVisible,
32395
+ resetAllHeaderFilters
32391
32396
  };
32392
32397
  }
32393
32398
 
@@ -32614,19 +32619,18 @@ const _hoisted_3$8 = {
32614
32619
  }
32615
32620
  };
32616
32621
  const _hoisted_4$6 = {
32617
- key: 0,
32618
- class: "yc-header-filter-cell__operators"
32619
- };
32620
- const _hoisted_5$6 = ["onClick"];
32621
- const _hoisted_6$5 = { key: 0 };
32622
- const _hoisted_7$4 = {
32623
32622
  class: "yc-header-filter-cell__actions",
32624
32623
  style: {
32625
32624
  display: "flex",
32626
- justifyContent: "space-between",
32627
- marginTop: "4px"
32625
+ justifyContent: "flex-end"
32628
32626
  }
32629
32627
  };
32628
+ const _hoisted_5$6 = {
32629
+ key: 0,
32630
+ class: "yc-header-filter-cell__operators"
32631
+ };
32632
+ const _hoisted_6$5 = ["onClick"];
32633
+ const _hoisted_7$4 = { key: 0 };
32630
32634
  var _sfc_main$g = /* @__PURE__ */ defineComponent({
32631
32635
  ...{
32632
32636
  name: "YcTableHeaderFilterCell"
@@ -32639,6 +32643,7 @@ var _sfc_main$g = /* @__PURE__ */ defineComponent({
32639
32643
  filters: { default: () => [] },
32640
32644
  orderBy: { default: () => [] },
32641
32645
  disableFilter: { type: Boolean, default: false },
32646
+ hideSort: { type: Boolean, default: false },
32642
32647
  fieldConfig: {},
32643
32648
  referenceRenderer: { type: Function, default: void 0 }
32644
32649
  },
@@ -32871,9 +32876,9 @@ var _sfc_main$g = /* @__PURE__ */ defineComponent({
32871
32876
  gap: "4px",
32872
32877
  cursor: "default"
32873
32878
  },
32874
- onMousedown: _cache[1] || (_cache[1] = withModifiers(() => {
32879
+ onMousedown: _cache[2] || (_cache[2] = withModifiers(() => {
32875
32880
  }, ["stop"])),
32876
- onClick: _cache[2] || (_cache[2] = withModifiers(() => {
32881
+ onClick: _cache[3] || (_cache[3] = withModifiers(() => {
32877
32882
  }, ["stop"]))
32878
32883
  },
32879
32884
  [
@@ -32884,13 +32889,13 @@ var _sfc_main$g = /* @__PURE__ */ defineComponent({
32884
32889
  {
32885
32890
  class: normalizeClass(["yc-header-filter-cell__label", {
32886
32891
  "yc-header-filter-cell__label--ellipsis": shouldShowEllipsis.value,
32887
- "yc-header-filter-cell__label--active": isAscActive.value || isDescActive.value || isActive.value
32892
+ "yc-header-filter-cell__label--active": !_ctx.hideSort && (isAscActive.value || isDescActive.value) || isActive.value
32888
32893
  }]),
32889
- style: {
32894
+ style: normalizeStyle({
32890
32895
  userSelect: "none",
32891
- cursor: "pointer"
32892
- },
32893
- onClick: withModifiers(cycleSort, ["stop"])
32896
+ cursor: _ctx.hideSort ? "default" : "pointer"
32897
+ }),
32898
+ onClick: _cache[0] || (_cache[0] = withModifiers(($event) => !_ctx.hideSort && cycleSort(), ["stop"]))
32894
32899
  },
32895
32900
  [
32896
32901
  _ctx.referenceRenderer ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.referenceRenderer), { key: 0 })) : (openBlock(), createElementBlock(
@@ -32949,8 +32954,8 @@ var _sfc_main$g = /* @__PURE__ */ defineComponent({
32949
32954
  /* STABLE_FRAGMENT */
32950
32955
  ))
32951
32956
  ],
32952
- 2
32953
- /* CLASS */
32957
+ 6
32958
+ /* CLASS, STYLE */
32954
32959
  ),
32955
32960
  createCommentVNode(" tooltip \u56FE\u6807\uFF08\u95EE\u53F7\uFF09- \u4EC5\u5728\u672A\u4F7F\u7528\u81EA\u5B9A\u4E49\u6E32\u67D3\u65F6\u663E\u793A "),
32956
32961
  columnTooltip.value && !_ctx.referenceRenderer ? (openBlock(), createBlock(
@@ -32979,8 +32984,9 @@ var _sfc_main$g = /* @__PURE__ */ defineComponent({
32979
32984
  16
32980
32985
  /* FULL_PROPS */
32981
32986
  )) : createCommentVNode("v-if", true),
32982
- createCommentVNode(" \u6392\u5E8F\u56FE\u6807 "),
32983
- createElementVNode("span", {
32987
+ createCommentVNode(" \u6392\u5E8F\u56FE\u6807\uFF0C\u5F53 hideSort \u4E3A true \u65F6\u9690\u85CF "),
32988
+ !_ctx.hideSort ? (openBlock(), createElementBlock("span", {
32989
+ key: 1,
32984
32990
  class: "yc-header-filter-cell__sort",
32985
32991
  style: {
32986
32992
  display: "inline-flex",
@@ -33013,10 +33019,10 @@ var _sfc_main$g = /* @__PURE__ */ defineComponent({
33013
33019
  _: 1
33014
33020
  /* STABLE */
33015
33021
  }, 8, ["style"])
33016
- ]),
33022
+ ])) : createCommentVNode("v-if", true),
33017
33023
  createCommentVNode(" \u7B5B\u9009\u56FE\u6807\u548C\u5F39\u7A97 "),
33018
33024
  !_ctx.disableFilter ? (openBlock(), createBlock(unref(ElPopover), {
33019
- key: 1,
33025
+ key: 2,
33020
33026
  visible: popVisible.value,
33021
33027
  trigger: "click",
33022
33028
  placement: "bottom-start",
@@ -33027,7 +33033,7 @@ var _sfc_main$g = /* @__PURE__ */ defineComponent({
33027
33033
  reference: withCtx(() => [
33028
33034
  createElementVNode("span", {
33029
33035
  style: { cursor: "pointer", display: "inline-flex", alignItems: "center" },
33030
- onClick: _cache[0] || (_cache[0] = withModifiers(($event) => popVisible.value = !popVisible.value, ["stop"]))
33036
+ onClick: _cache[1] || (_cache[1] = withModifiers(($event) => popVisible.value = !popVisible.value, ["stop"]))
33031
33037
  }, [
33032
33038
  createVNode(unref(YcSvgIcon), {
33033
33039
  src: filterIconUrl.value,
@@ -33039,8 +33045,28 @@ var _sfc_main$g = /* @__PURE__ */ defineComponent({
33039
33045
  ]),
33040
33046
  default: withCtx(() => [
33041
33047
  createElementVNode("div", _hoisted_3$8, [
33048
+ createCommentVNode(" \u64CD\u4F5C\u6309\u94AE\uFF08\u7F6E\u9876\u53F3\u4FA7\uFF0C\u907F\u514D\u4E0B\u62C9\u9009\u62E9\u5668\u906E\u6321\uFF09 "),
33049
+ createElementVNode("div", _hoisted_4$6, [
33050
+ createVNode(unref(ElButton), { onClick: handleReset }, {
33051
+ default: withCtx(() => [
33052
+ createTextVNode("\u91CD\u7F6E")
33053
+ ]),
33054
+ _: 1
33055
+ /* STABLE */
33056
+ }),
33057
+ createVNode(unref(ElButton), {
33058
+ type: "primary",
33059
+ onClick: handleConfirm
33060
+ }, {
33061
+ default: withCtx(() => [
33062
+ createTextVNode("\u786E\u5B9A")
33063
+ ]),
33064
+ _: 1
33065
+ /* STABLE */
33066
+ })
33067
+ ]),
33042
33068
  createCommentVNode(" \u64CD\u4F5C\u7B26\u5217\u8868\uFF08\u591A\u9009/\u65E5\u671F\u533A\u95F4\u7B49\u7531 hideOperatorList \u9690\u85CF\uFF0C\u9ED8\u8BA4 in / between\uFF09 "),
33043
- !hideOperatorList.value ? (openBlock(), createElementBlock("div", _hoisted_4$6, [
33069
+ !hideOperatorList.value ? (openBlock(), createElementBlock("div", _hoisted_5$6, [
33044
33070
  (openBlock(true), createElementBlock(
33045
33071
  Fragment,
33046
33072
  null,
@@ -33067,35 +33093,15 @@ var _sfc_main$g = /* @__PURE__ */ defineComponent({
33067
33093
  1
33068
33094
  /* TEXT */
33069
33095
  ),
33070
- state.selectedOp === op.code ? (openBlock(), createElementBlock("span", _hoisted_6$5, "\u2713")) : createCommentVNode("v-if", true)
33071
- ], 12, _hoisted_5$6);
33096
+ state.selectedOp === op.code ? (openBlock(), createElementBlock("span", _hoisted_7$4, "\u2713")) : createCommentVNode("v-if", true)
33097
+ ], 12, _hoisted_6$5);
33072
33098
  }),
33073
33099
  128
33074
33100
  /* KEYED_FRAGMENT */
33075
33101
  ))
33076
33102
  ])) : createCommentVNode("v-if", true),
33077
33103
  createCommentVNode(" \u503C\u8F93\u5165 "),
33078
- needValueInput.value ? (openBlock(), createBlock(resolveDynamicComponent(renderValueField), { key: 1 })) : createCommentVNode("v-if", true),
33079
- createCommentVNode(" \u64CD\u4F5C\u6309\u94AE "),
33080
- createElementVNode("div", _hoisted_7$4, [
33081
- createVNode(unref(ElButton), { onClick: handleReset }, {
33082
- default: withCtx(() => [
33083
- createTextVNode("\u91CD\u7F6E")
33084
- ]),
33085
- _: 1
33086
- /* STABLE */
33087
- }),
33088
- createVNode(unref(ElButton), {
33089
- type: "primary",
33090
- onClick: handleConfirm
33091
- }, {
33092
- default: withCtx(() => [
33093
- createTextVNode("\u786E\u5B9A")
33094
- ]),
33095
- _: 1
33096
- /* STABLE */
33097
- })
33098
- ])
33104
+ needValueInput.value ? (openBlock(), createBlock(resolveDynamicComponent(renderValueField), { key: 1 })) : createCommentVNode("v-if", true)
33099
33105
  ])
33100
33106
  ]),
33101
33107
  _: 1
@@ -33109,7 +33115,7 @@ var _sfc_main$g = /* @__PURE__ */ defineComponent({
33109
33115
  }
33110
33116
  });
33111
33117
 
33112
- var YcTableHeaderFilterCellComponent = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-1b4d52f7"], ["__file", "header-filter-cell.vue"]]);
33118
+ var YcTableHeaderFilterCellComponent = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-bc48f1f7"], ["__file", "header-filter-cell.vue"]]);
33113
33119
 
33114
33120
  const DEFAULT_PAGE_SIZE = 20;
33115
33121
  const COLUMN_CACHE_PREFIX = "yc-column-settings:";
@@ -33183,7 +33189,8 @@ var _sfc_main$f = /* @__PURE__ */ defineComponent({
33183
33189
  getOpsByProp,
33184
33190
  getMergedQuery,
33185
33191
  updateCatalogs,
33186
- isFieldFilterable
33192
+ isFieldFilterable,
33193
+ resetAllHeaderFilters
33187
33194
  // isFieldVisible 已在 enhancedColumns 中直接使用 fieldCatalogState 实现
33188
33195
  } = useHeaderFilter({
33189
33196
  headerFilterConfig: () => props.headerFilter,
@@ -33232,6 +33239,7 @@ var _sfc_main$f = /* @__PURE__ */ defineComponent({
33232
33239
  return visibleCols;
33233
33240
  }
33234
33241
  return visibleCols.map((col) => {
33242
+ var _a, _b;
33235
33243
  const colHideFilter = col.hideHeaderFilter === true;
33236
33244
  const hasExplicitHeaderFilter = col.headerFilter && typeof col.headerFilter === "object" || col.headerFilter === true;
33237
33245
  const fieldFilterable = hasExplicitHeaderFilter || isFieldFilterable(col.prop);
@@ -33242,9 +33250,12 @@ var _sfc_main$f = /* @__PURE__ */ defineComponent({
33242
33250
  return col;
33243
33251
  }
33244
33252
  const operators = getOpsByProp(col.prop);
33253
+ const colHeaderFilter = col.headerFilter && typeof col.headerFilter === "object" ? col.headerFilter : {};
33254
+ const globalHeaderFilter = props.headerFilter && typeof props.headerFilter === "object" ? props.headerFilter : {};
33255
+ const columnHideSort = (_b = (_a = colHeaderFilter.hideSort) != null ? _a : globalHeaderFilter.hideSort) != null ? _b : false;
33245
33256
  const FILTER_ICON_WIDTH = 24;
33246
33257
  const SORT_ICON_WIDTH = 16;
33247
- const EXTRA_WIDTH = FILTER_ICON_WIDTH + SORT_ICON_WIDTH;
33258
+ const EXTRA_WIDTH = FILTER_ICON_WIDTH + (columnHideSort ? 0 : SORT_ICON_WIDTH);
33248
33259
  const originalWidth = col.width || col.minWidth;
33249
33260
  let adjustedWidth = originalWidth;
33250
33261
  if (typeof originalWidth === "number") {
@@ -33271,6 +33282,7 @@ var _sfc_main$f = /* @__PURE__ */ defineComponent({
33271
33282
  operators,
33272
33283
  filters: headerFiltersState.filters,
33273
33284
  orderBy: orderByState,
33285
+ hideSort: columnHideSort,
33274
33286
  onConfirm: handleFilterConfirm,
33275
33287
  onReset: handleFilterReset,
33276
33288
  onSortChange: handleSortChange,
@@ -33371,7 +33383,7 @@ var _sfc_main$f = /* @__PURE__ */ defineComponent({
33371
33383
  }
33372
33384
  const defaultSearchConfig = {
33373
33385
  hasUnfold: false,
33374
- layout: "flex",
33386
+ layout: "grid",
33375
33387
  labelSuffix: "",
33376
33388
  labelPosition: "right",
33377
33389
  searchIcon: null,
@@ -33383,7 +33395,7 @@ var _sfc_main$f = /* @__PURE__ */ defineComponent({
33383
33395
  }
33384
33396
  return {
33385
33397
  hasUnfold: false,
33386
- layout: "flex",
33398
+ layout: "grid",
33387
33399
  labelSuffix: "",
33388
33400
  labelPosition: "right",
33389
33401
  searchIcon: null,
@@ -33562,6 +33574,7 @@ var _sfc_main$f = /* @__PURE__ */ defineComponent({
33562
33574
  upsertHeaderFilter,
33563
33575
  removeHeaderFilter,
33564
33576
  setOrderBy,
33577
+ resetAllHeaderFilters,
33565
33578
  getList: () => {
33566
33579
  var _a, _b;
33567
33580
  return (_b = (_a = plusPageRef.value) == null ? void 0 : _a.getList) == null ? void 0 : _b.call(_a);
@@ -33640,7 +33653,7 @@ var _sfc_main$f = /* @__PURE__ */ defineComponent({
33640
33653
  }
33641
33654
  });
33642
33655
 
33643
- var YcPlusPageComponent = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-f0c3f2a9"], ["__file", "index.vue"]]);
33656
+ var YcPlusPageComponent = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-3906549e"], ["__file", "index.vue"]]);
33644
33657
 
33645
33658
  function compareValues(a, b) {
33646
33659
  if (a == null && b == null) return 0;
@@ -15,6 +15,8 @@ interface Props {
15
15
  orderBy?: OrderByItem[];
16
16
  /** 是否禁用筛选(仅显示排序) */
17
17
  disableFilter?: boolean;
18
+ /** 是否隐藏排序图标(仅显示筛选) */
19
+ hideSort?: boolean;
18
20
  /** 字段元数据配置(例如来自后端的 catalog 字典) */
19
21
  fieldConfig?: Record<string, unknown>;
20
22
  /** 自定义渲染 reference */
@@ -25,6 +27,7 @@ declare const _default: DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRunt
25
27
  filters: () => never[];
26
28
  orderBy: () => never[];
27
29
  disableFilter: boolean;
30
+ hideSort: boolean;
28
31
  referenceRenderer: undefined;
29
32
  }>, {}, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
30
33
  reset: (payload: {
@@ -45,6 +48,7 @@ declare const _default: DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRunt
45
48
  filters: () => never[];
46
49
  orderBy: () => never[];
47
50
  disableFilter: boolean;
51
+ hideSort: boolean;
48
52
  referenceRenderer: undefined;
49
53
  }>>> & {
50
54
  onReset?: ((payload: {
@@ -65,6 +69,7 @@ declare const _default: DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRunt
65
69
  orderBy: OrderByItem[];
66
70
  operators: OperatorOption[];
67
71
  disableFilter: boolean;
72
+ hideSort: boolean;
68
73
  referenceRenderer: () => unknown;
69
74
  }, {}>;
70
75
  export default _default;
@@ -5,6 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var headerFilterCell_vue_vue_type_script_setup_true_lang = require('./header-filter-cell.vue2.js');
6
6
  var _pluginVue_exportHelper = require('../../../_virtual/_plugin-vue_export-helper.js');
7
7
 
8
- var YcTableHeaderFilterCellComponent = /* @__PURE__ */ _pluginVue_exportHelper.default(headerFilterCell_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-1b4d52f7"], ["__file", "header-filter-cell.vue"]]);
8
+ var YcTableHeaderFilterCellComponent = /* @__PURE__ */ _pluginVue_exportHelper.default(headerFilterCell_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-bc48f1f7"], ["__file", "header-filter-cell.vue"]]);
9
9
 
10
10
  exports.default = YcTableHeaderFilterCellComponent;
@@ -26,19 +26,18 @@ const _hoisted_3 = {
26
26
  }
27
27
  };
28
28
  const _hoisted_4 = {
29
- key: 0,
30
- class: "yc-header-filter-cell__operators"
31
- };
32
- const _hoisted_5 = ["onClick"];
33
- const _hoisted_6 = { key: 0 };
34
- const _hoisted_7 = {
35
29
  class: "yc-header-filter-cell__actions",
36
30
  style: {
37
31
  display: "flex",
38
- justifyContent: "space-between",
39
- marginTop: "4px"
32
+ justifyContent: "flex-end"
40
33
  }
41
34
  };
35
+ const _hoisted_5 = {
36
+ key: 0,
37
+ class: "yc-header-filter-cell__operators"
38
+ };
39
+ const _hoisted_6 = ["onClick"];
40
+ const _hoisted_7 = { key: 0 };
42
41
  var _sfc_main = /* @__PURE__ */ vue.defineComponent({
43
42
  ...{
44
43
  name: "YcTableHeaderFilterCell"
@@ -51,6 +50,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
51
50
  filters: { default: () => [] },
52
51
  orderBy: { default: () => [] },
53
52
  disableFilter: { type: Boolean, default: false },
53
+ hideSort: { type: Boolean, default: false },
54
54
  fieldConfig: {},
55
55
  referenceRenderer: { type: Function, default: void 0 }
56
56
  },
@@ -283,9 +283,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
283
283
  gap: "4px",
284
284
  cursor: "default"
285
285
  },
286
- onMousedown: _cache[1] || (_cache[1] = vue.withModifiers(() => {
286
+ onMousedown: _cache[2] || (_cache[2] = vue.withModifiers(() => {
287
287
  }, ["stop"])),
288
- onClick: _cache[2] || (_cache[2] = vue.withModifiers(() => {
288
+ onClick: _cache[3] || (_cache[3] = vue.withModifiers(() => {
289
289
  }, ["stop"]))
290
290
  },
291
291
  [
@@ -296,13 +296,13 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
296
296
  {
297
297
  class: vue.normalizeClass(["yc-header-filter-cell__label", {
298
298
  "yc-header-filter-cell__label--ellipsis": shouldShowEllipsis.value,
299
- "yc-header-filter-cell__label--active": isAscActive.value || isDescActive.value || isActive.value
299
+ "yc-header-filter-cell__label--active": !_ctx.hideSort && (isAscActive.value || isDescActive.value) || isActive.value
300
300
  }]),
301
- style: {
301
+ style: vue.normalizeStyle({
302
302
  userSelect: "none",
303
- cursor: "pointer"
304
- },
305
- onClick: vue.withModifiers(cycleSort, ["stop"])
303
+ cursor: _ctx.hideSort ? "default" : "pointer"
304
+ }),
305
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => !_ctx.hideSort && cycleSort(), ["stop"]))
306
306
  },
307
307
  [
308
308
  _ctx.referenceRenderer ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.referenceRenderer), { key: 0 })) : (vue.openBlock(), vue.createElementBlock(
@@ -361,8 +361,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
361
361
  /* STABLE_FRAGMENT */
362
362
  ))
363
363
  ],
364
- 2
365
- /* CLASS */
364
+ 6
365
+ /* CLASS, STYLE */
366
366
  ),
367
367
  vue.createCommentVNode(" tooltip \u56FE\u6807\uFF08\u95EE\u53F7\uFF09- \u4EC5\u5728\u672A\u4F7F\u7528\u81EA\u5B9A\u4E49\u6E32\u67D3\u65F6\u663E\u793A "),
368
368
  columnTooltip.value && !_ctx.referenceRenderer ? (vue.openBlock(), vue.createBlock(
@@ -391,8 +391,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
391
391
  16
392
392
  /* FULL_PROPS */
393
393
  )) : vue.createCommentVNode("v-if", true),
394
- vue.createCommentVNode(" \u6392\u5E8F\u56FE\u6807 "),
395
- vue.createElementVNode("span", {
394
+ vue.createCommentVNode(" \u6392\u5E8F\u56FE\u6807\uFF0C\u5F53 hideSort \u4E3A true \u65F6\u9690\u85CF "),
395
+ !_ctx.hideSort ? (vue.openBlock(), vue.createElementBlock("span", {
396
+ key: 1,
396
397
  class: "yc-header-filter-cell__sort",
397
398
  style: {
398
399
  display: "inline-flex",
@@ -425,10 +426,10 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
425
426
  _: 1
426
427
  /* STABLE */
427
428
  }, 8, ["style"])
428
- ]),
429
+ ])) : vue.createCommentVNode("v-if", true),
429
430
  vue.createCommentVNode(" \u7B5B\u9009\u56FE\u6807\u548C\u5F39\u7A97 "),
430
431
  !_ctx.disableFilter ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElPopover), {
431
- key: 1,
432
+ key: 2,
432
433
  visible: popVisible.value,
433
434
  trigger: "click",
434
435
  placement: "bottom-start",
@@ -439,7 +440,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
439
440
  reference: vue.withCtx(() => [
440
441
  vue.createElementVNode("span", {
441
442
  style: { cursor: "pointer", display: "inline-flex", alignItems: "center" },
442
- onClick: _cache[0] || (_cache[0] = vue.withModifiers(($event) => popVisible.value = !popVisible.value, ["stop"]))
443
+ onClick: _cache[1] || (_cache[1] = vue.withModifiers(($event) => popVisible.value = !popVisible.value, ["stop"]))
443
444
  }, [
444
445
  vue.createVNode(vue.unref(index$1.default), {
445
446
  src: filterIconUrl.value,
@@ -451,8 +452,28 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
451
452
  ]),
452
453
  default: vue.withCtx(() => [
453
454
  vue.createElementVNode("div", _hoisted_3, [
455
+ vue.createCommentVNode(" \u64CD\u4F5C\u6309\u94AE\uFF08\u7F6E\u9876\u53F3\u4FA7\uFF0C\u907F\u514D\u4E0B\u62C9\u9009\u62E9\u5668\u906E\u6321\uFF09 "),
456
+ vue.createElementVNode("div", _hoisted_4, [
457
+ vue.createVNode(vue.unref(elementPlus.ElButton), { onClick: handleReset }, {
458
+ default: vue.withCtx(() => [
459
+ vue.createTextVNode("\u91CD\u7F6E")
460
+ ]),
461
+ _: 1
462
+ /* STABLE */
463
+ }),
464
+ vue.createVNode(vue.unref(elementPlus.ElButton), {
465
+ type: "primary",
466
+ onClick: handleConfirm
467
+ }, {
468
+ default: vue.withCtx(() => [
469
+ vue.createTextVNode("\u786E\u5B9A")
470
+ ]),
471
+ _: 1
472
+ /* STABLE */
473
+ })
474
+ ]),
454
475
  vue.createCommentVNode(" \u64CD\u4F5C\u7B26\u5217\u8868\uFF08\u591A\u9009/\u65E5\u671F\u533A\u95F4\u7B49\u7531 hideOperatorList \u9690\u85CF\uFF0C\u9ED8\u8BA4 in / between\uFF09 "),
455
- !hideOperatorList.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
476
+ !hideOperatorList.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
456
477
  (vue.openBlock(true), vue.createElementBlock(
457
478
  vue.Fragment,
458
479
  null,
@@ -479,35 +500,15 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
479
500
  1
480
501
  /* TEXT */
481
502
  ),
482
- state.selectedOp === op.code ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_6, "\u2713")) : vue.createCommentVNode("v-if", true)
483
- ], 12, _hoisted_5);
503
+ state.selectedOp === op.code ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7, "\u2713")) : vue.createCommentVNode("v-if", true)
504
+ ], 12, _hoisted_6);
484
505
  }),
485
506
  128
486
507
  /* KEYED_FRAGMENT */
487
508
  ))
488
509
  ])) : vue.createCommentVNode("v-if", true),
489
510
  vue.createCommentVNode(" \u503C\u8F93\u5165 "),
490
- needValueInput.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderValueField), { key: 1 })) : vue.createCommentVNode("v-if", true),
491
- vue.createCommentVNode(" \u64CD\u4F5C\u6309\u94AE "),
492
- vue.createElementVNode("div", _hoisted_7, [
493
- vue.createVNode(vue.unref(elementPlus.ElButton), { onClick: handleReset }, {
494
- default: vue.withCtx(() => [
495
- vue.createTextVNode("\u91CD\u7F6E")
496
- ]),
497
- _: 1
498
- /* STABLE */
499
- }),
500
- vue.createVNode(vue.unref(elementPlus.ElButton), {
501
- type: "primary",
502
- onClick: handleConfirm
503
- }, {
504
- default: vue.withCtx(() => [
505
- vue.createTextVNode("\u786E\u5B9A")
506
- ]),
507
- _: 1
508
- /* STABLE */
509
- })
510
- ])
511
+ needValueInput.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(renderValueField), { key: 1 })) : vue.createCommentVNode("v-if", true)
511
512
  ])
512
513
  ]),
513
514
  _: 1
@@ -8001,6 +8001,7 @@ declare const _default: __VLS_WithTemplateSlots< DefineComponent<__VLS_WithDefau
8001
8001
  upsertHeaderFilter: (field: string, op: string, value?: string | undefined) => void;
8002
8002
  removeHeaderFilter: (field: string) => void;
8003
8003
  setOrderBy: (field: string, direction?: "desc" | "asc" | undefined) => void;
8004
+ resetAllHeaderFilters: () => void;
8004
8005
  getList: () => Promise<void> | undefined;
8005
8006
  }, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
8006
8007
  "header-filter-confirm": (payload: HeaderFilterPayload) => void;
@@ -5,6 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var index_vue_vue_type_script_setup_true_lang = require('./index.vue2.js');
6
6
  var _pluginVue_exportHelper = require('../../../_virtual/_plugin-vue_export-helper.js');
7
7
 
8
- var YcPlusPageComponent = /* @__PURE__ */ _pluginVue_exportHelper.default(index_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-f0c3f2a9"], ["__file", "index.vue"]]);
8
+ var YcPlusPageComponent = /* @__PURE__ */ _pluginVue_exportHelper.default(index_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-3906549e"], ["__file", "index.vue"]]);
9
9
 
10
10
  exports.default = YcPlusPageComponent;
@@ -82,7 +82,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
82
82
  getOpsByProp,
83
83
  getMergedQuery,
84
84
  updateCatalogs,
85
- isFieldFilterable
85
+ isFieldFilterable,
86
+ resetAllHeaderFilters
86
87
  // isFieldVisible 已在 enhancedColumns 中直接使用 fieldCatalogState 实现
87
88
  } = useHeaderFilter.useHeaderFilter({
88
89
  headerFilterConfig: () => props.headerFilter,
@@ -131,6 +132,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
131
132
  return visibleCols;
132
133
  }
133
134
  return visibleCols.map((col) => {
135
+ var _a, _b;
134
136
  const colHideFilter = col.hideHeaderFilter === true;
135
137
  const hasExplicitHeaderFilter = col.headerFilter && typeof col.headerFilter === "object" || col.headerFilter === true;
136
138
  const fieldFilterable = hasExplicitHeaderFilter || isFieldFilterable(col.prop);
@@ -141,9 +143,12 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
141
143
  return col;
142
144
  }
143
145
  const operators = getOpsByProp(col.prop);
146
+ const colHeaderFilter = col.headerFilter && typeof col.headerFilter === "object" ? col.headerFilter : {};
147
+ const globalHeaderFilter = props.headerFilter && typeof props.headerFilter === "object" ? props.headerFilter : {};
148
+ const columnHideSort = (_b = (_a = colHeaderFilter.hideSort) != null ? _a : globalHeaderFilter.hideSort) != null ? _b : false;
144
149
  const FILTER_ICON_WIDTH = 24;
145
150
  const SORT_ICON_WIDTH = 16;
146
- const EXTRA_WIDTH = FILTER_ICON_WIDTH + SORT_ICON_WIDTH;
151
+ const EXTRA_WIDTH = FILTER_ICON_WIDTH + (columnHideSort ? 0 : SORT_ICON_WIDTH);
147
152
  const originalWidth = col.width || col.minWidth;
148
153
  let adjustedWidth = originalWidth;
149
154
  if (typeof originalWidth === "number") {
@@ -170,6 +175,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
170
175
  operators,
171
176
  filters: headerFiltersState.filters,
172
177
  orderBy: orderByState,
178
+ hideSort: columnHideSort,
173
179
  onConfirm: handleFilterConfirm,
174
180
  onReset: handleFilterReset,
175
181
  onSortChange: handleSortChange,
@@ -270,7 +276,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
270
276
  }
271
277
  const defaultSearchConfig = {
272
278
  hasUnfold: false,
273
- layout: "flex",
279
+ layout: "grid",
274
280
  labelSuffix: "",
275
281
  labelPosition: "right",
276
282
  searchIcon: null,
@@ -282,7 +288,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
282
288
  }
283
289
  return {
284
290
  hasUnfold: false,
285
- layout: "flex",
291
+ layout: "grid",
286
292
  labelSuffix: "",
287
293
  labelPosition: "right",
288
294
  searchIcon: null,
@@ -461,6 +467,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
461
467
  upsertHeaderFilter,
462
468
  removeHeaderFilter,
463
469
  setOrderBy,
470
+ resetAllHeaderFilters,
464
471
  getList: () => {
465
472
  var _a, _b;
466
473
  return (_b = (_a = plusPageRef.value) == null ? void 0 : _a.getList) == null ? void 0 : _b.call(_a);
@@ -63,6 +63,8 @@ export interface HeaderFilterConfig {
63
63
  field: string;
64
64
  direction: 'asc' | 'desc';
65
65
  }>;
66
+ /** 是否隐藏所有列的排序图标(全局配置),默认 false。列级 headerFilter.hideSort 优先 */
67
+ hideSort?: boolean;
66
68
  }
67
69
  /**
68
70
  * 列级别的表头筛选配置
@@ -82,6 +84,8 @@ export interface ColumnHeaderFilterConfig {
82
84
  onConfirm?: (payload: HeaderFilterPayload) => void;
83
85
  /** 重置回调 */
84
86
  onReset?: (payload: HeaderFilterResetPayload) => void;
87
+ /** 是否隐藏该列的排序图标,默认 false。优先级高于全局 HeaderFilterConfig.hideSort */
88
+ hideSort?: boolean;
85
89
  }
86
90
  /**
87
91
  * 表头筛选确认事件 payload
@@ -48,6 +48,8 @@ export interface UseHeaderFilterReturn {
48
48
  isFieldFilterable: (prop?: string) => boolean;
49
49
  /** 判断字段是否允许显示(基于 fieldCatalog 的 nullable 属性) */
50
50
  isFieldVisible: (prop?: string) => boolean;
51
+ /** 重置所有筛选条件和排序状态 */
52
+ resetAllHeaderFilters: () => void;
51
53
  }
52
54
  /**
53
55
  * 表头筛选 Hook
@@ -128,6 +128,10 @@ function useHeaderFilter(options = {}) {
128
128
  orderByState.push(next);
129
129
  }
130
130
  };
131
+ const resetAllHeaderFilters = () => {
132
+ headerFiltersState.filters.splice(0);
133
+ orderByState.splice(0);
134
+ };
131
135
  const getMergedQuery = (baseQuery) => {
132
136
  const normalizeFilters = (filters) => {
133
137
  return filters.map((f) => {
@@ -180,7 +184,8 @@ function useHeaderFilter(options = {}) {
180
184
  getMergedQuery,
181
185
  updateCatalogs,
182
186
  isFieldFilterable,
183
- isFieldVisible
187
+ isFieldVisible,
188
+ resetAllHeaderFilters
184
189
  };
185
190
  }
186
191