@underverse-ui/underverse 2.0.40 → 2.0.41

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 (36) hide show
  1. package/api-reference.json +1 -1
  2. package/dist/{DatePicker-3IHOADO5.js → DatePicker-BYYBKHWH.js} +4 -4
  3. package/dist/{EmojiPicker-5MEENOF7.js → EmojiPicker-NKY2LOGI.js} +5 -5
  4. package/dist/{chunk-2K443MQP.js → chunk-C2EHPHWH.js} +3 -3
  5. package/dist/{chunk-GY6P6WZB.js → chunk-CJ6RPCJN.js} +3 -3
  6. package/dist/{chunk-ZCW2WBNT.js → chunk-GKUKLOSO.js} +9 -9
  7. package/dist/{chunk-THBABGVM.js → chunk-IW6FSDIT.js} +2 -2
  8. package/dist/{chunk-AKV7ZQJL.js → chunk-PNUDVGMI.js} +2 -2
  9. package/dist/{chunk-4MX7S6TM.js → chunk-PSWS64LA.js} +13 -5
  10. package/dist/chunk-PSWS64LA.js.map +1 -0
  11. package/dist/{chunk-LBOTY2AI.js → chunk-TVCZXO6G.js} +4 -4
  12. package/dist/{chunk-KBCOCHKM.js → chunk-VYTIGF3V.js} +4 -4
  13. package/dist/{chunk-BSN2YFRJ.js → chunk-WZH3Y3BL.js} +2 -2
  14. package/dist/index.cjs +121 -99
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +19 -1
  17. package/dist/index.d.ts +19 -1
  18. package/dist/index.js +118 -104
  19. package/dist/index.js.map +1 -1
  20. package/dist/{menu-bar-F6FGQVWO.js → menu-bar-67LDC7IR.js} +6 -6
  21. package/dist/ueditor.cjs +12 -4
  22. package/dist/ueditor.cjs.map +1 -1
  23. package/dist/ueditor.js +6 -6
  24. package/package.json +1 -1
  25. package/dist/chunk-4MX7S6TM.js.map +0 -1
  26. /package/dist/{DatePicker-3IHOADO5.js.map → DatePicker-BYYBKHWH.js.map} +0 -0
  27. /package/dist/{EmojiPicker-5MEENOF7.js.map → EmojiPicker-NKY2LOGI.js.map} +0 -0
  28. /package/dist/{chunk-2K443MQP.js.map → chunk-C2EHPHWH.js.map} +0 -0
  29. /package/dist/{chunk-GY6P6WZB.js.map → chunk-CJ6RPCJN.js.map} +0 -0
  30. /package/dist/{chunk-ZCW2WBNT.js.map → chunk-GKUKLOSO.js.map} +0 -0
  31. /package/dist/{chunk-THBABGVM.js.map → chunk-IW6FSDIT.js.map} +0 -0
  32. /package/dist/{chunk-AKV7ZQJL.js.map → chunk-PNUDVGMI.js.map} +0 -0
  33. /package/dist/{chunk-LBOTY2AI.js.map → chunk-TVCZXO6G.js.map} +0 -0
  34. /package/dist/{chunk-KBCOCHKM.js.map → chunk-VYTIGF3V.js.map} +0 -0
  35. /package/dist/{chunk-BSN2YFRJ.js.map → chunk-WZH3Y3BL.js.map} +0 -0
  36. /package/dist/{menu-bar-F6FGQVWO.js.map → menu-bar-67LDC7IR.js.map} +0 -0
package/dist/index.cjs CHANGED
@@ -202,7 +202,9 @@ var init_en = __esm({
202
202
  headerAlign: "Header alignment",
203
203
  alignLeft: "Align left",
204
204
  alignCenter: "Align center",
205
- alignRight: "Align right"
205
+ alignRight: "Align right",
206
+ sortBy: "Sort by",
207
+ filterBy: "Filter by"
206
208
  },
207
209
  ValidationInput: {
208
210
  required: "This field is required",
@@ -681,7 +683,9 @@ var init_vi = __esm({
681
683
  headerAlign: "C\u0103n ch\u1EC9nh ti\xEAu \u0111\u1EC1",
682
684
  alignLeft: "C\u0103n tr\xE1i",
683
685
  alignCenter: "C\u0103n gi\u1EEFa",
684
- alignRight: "C\u0103n ph\u1EA3i"
686
+ alignRight: "C\u0103n ph\u1EA3i",
687
+ sortBy: "S\u1EAFp x\u1EBFp theo",
688
+ filterBy: "L\u1ECDc theo"
685
689
  },
686
690
  ValidationInput: {
687
691
  required: "Tr\u01B0\u1EDDng n\xE0y l\xE0 b\u1EAFt bu\u1ED9c.",
@@ -1160,7 +1164,9 @@ var init_ko = __esm({
1160
1164
  headerAlign: "\uD5E4\uB354 \uC815\uB82C",
1161
1165
  alignLeft: "\uC67C\uCABD \uC815\uB82C",
1162
1166
  alignCenter: "\uAC00\uC6B4\uB370 \uC815\uB82C",
1163
- alignRight: "\uC624\uB978\uCABD \uC815\uB82C"
1167
+ alignRight: "\uC624\uB978\uCABD \uC815\uB82C",
1168
+ sortBy: "\uC815\uB82C \uAE30\uC900",
1169
+ filterBy: "\uD544\uD130:"
1164
1170
  },
1165
1171
  ValidationInput: {
1166
1172
  required: "\uD544\uC218 \uC785\uB825 \uD56D\uBAA9\uC785\uB2C8\uB2E4",
@@ -1639,7 +1645,9 @@ var init_ja = __esm({
1639
1645
  headerAlign: "\u30D8\u30C3\u30C0\u30FC\u914D\u7F6E",
1640
1646
  alignLeft: "\u5DE6\u63C3\u3048",
1641
1647
  alignCenter: "\u4E2D\u592E\u63C3\u3048",
1642
- alignRight: "\u53F3\u63C3\u3048"
1648
+ alignRight: "\u53F3\u63C3\u3048",
1649
+ sortBy: "\u4E26\u3073\u66FF\u3048",
1650
+ filterBy: "\u7D5E\u308A\u8FBC\u307F:"
1643
1651
  },
1644
1652
  ValidationInput: {
1645
1653
  required: "\u3053\u306E\u9805\u76EE\u306F\u5FC5\u9808\u3067\u3059",
@@ -38869,9 +38877,55 @@ function DataTableHeader({
38869
38877
  const isRightAlign = resolvedHeaderAlign === "right";
38870
38878
  const isCenterAlign = resolvedHeaderAlign === "center";
38871
38879
  const columnLabel = getColumnLabel(col.title) || col.key;
38872
- const sortByText = sortByLabel ?? gi18n.sortBy ?? "Sort by";
38873
- const sortLabel = `${sortByText} ${columnLabel}`;
38880
+ const sortByText = sortByLabel ?? gi18n.sortBy ?? (t("sortBy") !== "sortBy" ? t("sortBy") : void 0);
38881
+ const sortLabel = sortByText ? `${sortByText} ${columnLabel}` : columnLabel;
38882
+ const hasSortTooltip = Boolean(sortByText);
38874
38883
  const useEndIcon = (col.iconPosition ?? "end") === "end";
38884
+ const sortButton = /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38885
+ "button",
38886
+ {
38887
+ type: "button",
38888
+ className: cn(
38889
+ "p-1 rounded-lg transition-all duration-200 hover:bg-foreground/10",
38890
+ useEndIcon && isCenterAlign && "col-start-3 justify-self-end",
38891
+ sort?.key === col.key ? "opacity-100 bg-foreground/10" : "opacity-60 hover:opacity-100"
38892
+ ),
38893
+ onClick: () => {
38894
+ setCurPage(1);
38895
+ setSort((current) => {
38896
+ if (!current || current.key !== col.key) return { key: col.key, order: "asc" };
38897
+ if (current.order === "asc") return { key: col.key, order: "desc" };
38898
+ return null;
38899
+ });
38900
+ },
38901
+ "aria-label": sortLabel,
38902
+ title: hasSortTooltip ? sortLabel : void 0,
38903
+ children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("svg", { viewBox: "0 0 20 20", fill: "none", className: cn("inline-block", sortIconClass), children: [
38904
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38905
+ "path",
38906
+ {
38907
+ d: "M5 7.5l5-5 5 5",
38908
+ stroke: "currentColor",
38909
+ strokeWidth: "1.5",
38910
+ strokeLinecap: "round",
38911
+ strokeLinejoin: "round",
38912
+ opacity: sort?.key === col.key && sort.order === "asc" ? 1 : 0.4
38913
+ }
38914
+ ),
38915
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38916
+ "path",
38917
+ {
38918
+ d: "M5 12.5l5 5 5-5",
38919
+ stroke: "currentColor",
38920
+ strokeWidth: "1.5",
38921
+ strokeLinecap: "round",
38922
+ strokeLinejoin: "round",
38923
+ opacity: sort?.key === col.key && sort.order === "desc" ? 1 : 0.4
38924
+ }
38925
+ )
38926
+ ] })
38927
+ }
38928
+ );
38875
38929
  const titleContent = /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
38876
38930
  "div",
38877
38931
  {
@@ -38893,85 +38947,46 @@ function DataTableHeader({
38893
38947
  children: col.title
38894
38948
  }
38895
38949
  ),
38896
- col.sortable && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38950
+ col.sortable && (hasSortTooltip ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38897
38951
  Tooltip,
38898
38952
  {
38899
38953
  placement: "top",
38900
38954
  content: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "text-xs font-medium", children: sortLabel }),
38901
- children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38902
- "button",
38903
- {
38904
- type: "button",
38905
- className: cn(
38906
- "p-1 rounded-lg transition-all duration-200 hover:bg-foreground/10",
38907
- useEndIcon && isCenterAlign && "col-start-3 justify-self-end",
38908
- sort?.key === col.key ? "opacity-100 bg-foreground/10" : "opacity-60 hover:opacity-100"
38909
- ),
38910
- onClick: () => {
38911
- setCurPage(1);
38912
- setSort((current) => {
38913
- if (!current || current.key !== col.key) return { key: col.key, order: "asc" };
38914
- if (current.order === "asc") return { key: col.key, order: "desc" };
38915
- return null;
38916
- });
38917
- },
38918
- "aria-label": sortLabel,
38919
- children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("svg", { viewBox: "0 0 20 20", fill: "none", className: cn("inline-block", sortIconClass), children: [
38920
- /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38921
- "path",
38922
- {
38923
- d: "M5 7.5l5-5 5 5",
38924
- stroke: "currentColor",
38925
- strokeWidth: "1.5",
38926
- strokeLinecap: "round",
38927
- strokeLinejoin: "round",
38928
- opacity: sort?.key === col.key && sort.order === "asc" ? 1 : 0.4
38929
- }
38930
- ),
38931
- /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38932
- "path",
38933
- {
38934
- d: "M5 12.5l5 5 5-5",
38935
- stroke: "currentColor",
38936
- strokeWidth: "1.5",
38937
- strokeLinecap: "round",
38938
- strokeLinejoin: "round",
38939
- opacity: sort?.key === col.key && sort.order === "desc" ? 1 : 0.4
38940
- }
38941
- )
38942
- ] })
38943
- }
38944
- )
38955
+ children: sortButton
38945
38956
  }
38946
- )
38957
+ ) : sortButton)
38947
38958
  ]
38948
38959
  }
38949
38960
  );
38961
+ const filterText = gi18n.filterByColumn ? gi18n.filterByColumn(columnLabel) : t("filterByColumn") !== "filterByColumn" ? t("filterByColumn").replace("{column}", columnLabel) : t("filterBy") !== "filterBy" ? `${t("filterBy")} ${columnLabel}` : void 0;
38962
+ const filterLabel = filterText ?? columnLabel;
38963
+ const hasFilterTooltip = Boolean(filterText);
38964
+ const filterButton = /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38965
+ "button",
38966
+ {
38967
+ type: "button",
38968
+ title: hasFilterTooltip ? filterLabel : void 0,
38969
+ className: cn(
38970
+ "p-1.5 rounded-lg transition-all duration-200 hover:bg-foreground/10",
38971
+ filters[col.key] ? "bg-foreground/10 opacity-100" : "opacity-60 hover:opacity-100"
38972
+ ),
38973
+ "aria-label": filterLabel,
38974
+ children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react38.Filter, { className: "w-4 h-4" })
38975
+ }
38976
+ );
38950
38977
  const filterContent = col.filter ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38951
38978
  Popover,
38952
38979
  {
38953
38980
  getPortalContainer,
38954
38981
  placement: "bottom-start",
38955
- trigger: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "inline-flex", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38982
+ trigger: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "inline-flex", children: hasFilterTooltip ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38956
38983
  Tooltip,
38957
38984
  {
38958
38985
  placement: "top",
38959
- content: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "text-xs font-medium", children: gi18n.filterByColumn ? gi18n.filterByColumn(columnLabel) : `Filter by ${columnLabel}` }),
38960
- children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
38961
- "button",
38962
- {
38963
- type: "button",
38964
- title: gi18n.filterByColumn ? gi18n.filterByColumn(columnLabel) : `Filter by ${columnLabel}`,
38965
- className: cn(
38966
- "p-1.5 rounded-lg transition-all duration-200 hover:bg-foreground/10",
38967
- filters[col.key] ? "bg-foreground/10 opacity-100" : "opacity-60 hover:opacity-100"
38968
- ),
38969
- "aria-label": gi18n.filterByColumn ? gi18n.filterByColumn(columnLabel) : `Filter by ${columnLabel}`,
38970
- children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react38.Filter, { className: "w-4 h-4" })
38971
- }
38972
- )
38986
+ content: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "text-xs font-medium", children: filterLabel }),
38987
+ children: filterButton
38973
38988
  }
38974
- ) }),
38989
+ ) : filterButton }),
38975
38990
  children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "p-3 w-64 space-y-3", children: [
38976
38991
  /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex items-center justify-between", children: [
38977
38992
  /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "text-sm font-medium", children: col.title }),
@@ -39060,36 +39075,42 @@ function DataTableHeader({
39060
39075
  ),
39061
39076
  children: [
39062
39077
  renderHeaderContent(col, isLeaf),
39063
- isLeaf && enableHeaderAutoFit && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
39064
- Tooltip,
39065
- {
39066
- placement: "top",
39067
- content: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "text-xs font-medium", children: "Double click to auto-fit" }),
39068
- children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
39069
- "button",
39070
- {
39071
- type: "button",
39072
- "aria-label": gi18n.autoFitColumn ? gi18n.autoFitColumn(String(col.title)) : `Auto fit ${String(col.title)}`,
39073
- onClick: (event) => {
39074
- event.preventDefault();
39075
- event.stopPropagation();
39076
- },
39077
- onDoubleClick: (event) => {
39078
- event.preventDefault();
39079
- event.stopPropagation();
39080
- onAutoFitColumn?.(col.key);
39081
- },
39082
- className: cn(
39083
- "absolute inset-y-0 right-0 z-10 w-3",
39084
- !isLastCell && "-mr-1",
39085
- "cursor-col-resize select-none bg-transparent",
39086
- "after:absolute after:inset-y-2 after:right-0.8 after:w-px after:bg-border/0 after:transition-colors",
39087
- "hover:after:bg-primary/50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary"
39088
- )
39089
- }
39090
- )
39091
- }
39092
- )
39078
+ isLeaf && enableHeaderAutoFit && (() => {
39079
+ const autoFitTooltipText = t("doubleClickToAutoFit") !== "doubleClickToAutoFit" ? t("doubleClickToAutoFit") : void 0;
39080
+ const autoFitAriaLabel = gi18n.autoFitColumn ? gi18n.autoFitColumn(String(col.title)) : t("autoFitColumn") !== "autoFitColumn" ? t("autoFitColumn").replace("{column}", String(col.title)) : autoFitTooltipText ? `${autoFitTooltipText} ${String(col.title)}` : `Auto fit ${String(col.title)}`;
39081
+ const autoFitButton = /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
39082
+ "button",
39083
+ {
39084
+ type: "button",
39085
+ "aria-label": autoFitAriaLabel,
39086
+ title: autoFitTooltipText,
39087
+ onClick: (event) => {
39088
+ event.preventDefault();
39089
+ event.stopPropagation();
39090
+ },
39091
+ onDoubleClick: (event) => {
39092
+ event.preventDefault();
39093
+ event.stopPropagation();
39094
+ onAutoFitColumn?.(col.key);
39095
+ },
39096
+ className: cn(
39097
+ "absolute inset-y-0 right-0 z-10 w-3",
39098
+ !isLastCell && "-mr-1",
39099
+ "cursor-col-resize select-none bg-transparent",
39100
+ "after:absolute after:inset-y-2 after:right-0.8 after:w-px after:bg-border/0 after:transition-colors",
39101
+ "hover:after:bg-primary/50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary"
39102
+ )
39103
+ }
39104
+ );
39105
+ return autoFitTooltipText ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
39106
+ Tooltip,
39107
+ {
39108
+ placement: "top",
39109
+ content: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "text-xs font-medium", children: autoFitTooltipText }),
39110
+ children: autoFitButton
39111
+ }
39112
+ ) : autoFitButton;
39113
+ })()
39093
39114
  ]
39094
39115
  },
39095
39116
  col.key
@@ -39964,6 +39985,7 @@ function DataTable({
39964
39985
  paginationRange,
39965
39986
  enableHeaderAutoFit = true,
39966
39987
  labels,
39988
+ sortByLabel,
39967
39989
  columnColorGroups,
39968
39990
  borderMode,
39969
39991
  getPortalContainer,
@@ -40173,7 +40195,7 @@ function DataTable({
40173
40195
  enableHeaderAutoFit,
40174
40196
  getStickyHeaderClass,
40175
40197
  getStickyHeaderCellStyle,
40176
- sortByLabel: labels?.sortBy,
40198
+ sortByLabel: sortByLabel ?? labels?.sortBy,
40177
40199
  t,
40178
40200
  columnColorGroups,
40179
40201
  getPortalContainer