maru_design2 2.16.1 → 2.16.4

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.16.2](https://github.com/42maru-ai/maru-design2/compare/v2.16.1...v2.16.2) (2024-09-27)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * :bento: Icon - UPDATE,ADD sort icons ([c9b14c0](https://github.com/42maru-ai/maru-design2/commit/c9b14c094b4425f9e74d373bf67eb3212a7dbfce))
9
+ * :bug: Dropdown - UPDATE input type condition ([6dbf931](https://github.com/42maru-ai/maru-design2/commit/6dbf931fc35a1b5d8d1052ae15a7e196e0a18b11))
10
+ * :children_crossing: Table - UPDATE sort icon ([7be523c](https://github.com/42maru-ai/maru-design2/commit/7be523c625aa69560dd8ea0d0093b6f6a6cbdbb8))
11
+
3
12
  ## [2.16.1](https://github.com/42maru-ai/maru-design2/compare/v2.16.0...v2.16.1) (2024-09-23)
4
13
 
5
14
 
@@ -197,7 +197,9 @@ export declare const ICONS: {
197
197
  readonly Settings02_s2420: "Settings02_s2420";
198
198
  readonly Share03_s1215: "Share03_s1215";
199
199
  readonly Share03_s1613: "Share03_s1613";
200
- readonly SortOutline_s18: "SortOutline_s18";
200
+ readonly SortDown_s0815: "SortDown_s0815";
201
+ readonly SortOutline_s1415: "SortOutline_s1415";
202
+ readonly SortUp_s0815: "SortUp_s0815";
201
203
  readonly State_s16: "State_s16";
202
204
  readonly State_s18: "State_s18";
203
205
  readonly StopCircle_s1413: "StopCircle_s1413";
@@ -1,8 +1,15 @@
1
1
  import { IColumnFormats, ISort } from '../types';
2
2
  interface Props {
3
3
  format: IColumnFormats;
4
- currentSort?: ISort;
5
- onSortClick: (columnName: string, sortable: boolean) => () => void;
4
+ sort?: ISort;
5
+ onSortClick: (columnName: string) => () => void;
6
6
  }
7
- declare function SortableColumn({ format, currentSort, onSortClick }: Props): import("react/jsx-runtime").JSX.Element;
7
+ /**
8
+ * 정렬 아닌거 마우스오버하면 쌍방 화살표
9
+ * 내림차순 정렬이면 아래 화살표
10
+ * 오름차순 정렬이면 위 화살표
11
+ * 색깔은 언제나 b500 #5c5c5c
12
+ * @returns
13
+ */
14
+ declare function SortableColumn({ format, sort, onSortClick }: Props): import("react/jsx-runtime").JSX.Element;
8
15
  export default SortableColumn;
@@ -1,8 +1,8 @@
1
1
  import { IColumnFormats, ISort } from '../types';
2
2
  interface Props {
3
3
  formats: IColumnFormats[];
4
- currentSort?: ISort;
5
- onSortClick: (columnName: string, sortable: boolean) => () => void;
4
+ sort?: ISort;
5
+ onSortClick: (columnName: string) => () => void;
6
6
  hasCheckbox?: boolean;
7
7
  allCheckbox: boolean;
8
8
  onAllCheck: (checked: boolean) => void;
@@ -12,5 +12,5 @@ interface Props {
12
12
  onReset: () => void;
13
13
  };
14
14
  }
15
- declare function THead({ formats, currentSort, onSortClick, hasCheckbox, allCheckbox, onAllCheck, hasActionCol, filter, }: Props): import("react/jsx-runtime").JSX.Element;
15
+ declare function THead({ formats, sort, onSortClick, hasCheckbox, allCheckbox, onAllCheck, hasActionCol, filter, }: Props): import("react/jsx-runtime").JSX.Element;
16
16
  export default THead;
package/dist/index.js CHANGED
@@ -87,7 +87,7 @@ function styleInject(css, ref) {
87
87
  var css_248z$i = "* {\n /* HTML5 display-role reset for older browsers */\n}\n* html,\n* body,\n* div,\n* span,\n* applet,\n* object,\n* iframe,\n* h1,\n* h2,\n* h3,\n* h4,\n* h5,\n* h6,\n* p,\n* blockquote,\n* pre,\n* a,\n* abbr,\n* acronym,\n* address,\n* big,\n* cite,\n* code,\n* del,\n* dfn,\n* em,\n* img,\n* ins,\n* kbd,\n* q,\n* s,\n* samp,\n* small,\n* strike,\n* strong,\n* sub,\n* sup,\n* tt,\n* var,\n* b,\n* u,\n* i,\n* center,\n* dl,\n* dt,\n* dd,\n* ol,\n* ul,\n* li,\n* fieldset,\n* form,\n* label,\n* legend,\n* table,\n* caption,\n* tbody,\n* tfoot,\n* thead,\n* tr,\n* th,\n* td,\n* article,\n* aside,\n* canvas,\n* details,\n* embed,\n* figure,\n* figcaption,\n* footer,\n* header,\n* hgroup,\n* menu,\n* nav,\n* output,\n* ruby,\n* section,\n* summary,\n* time,\n* mark,\n* audio,\n* video {\n padding: 0;\n border: 0;\n margin: 0;\n font: inherit;\n font-size: 100%;\n vertical-align: baseline;\n}\n* article,\n* aside,\n* details,\n* figcaption,\n* figure,\n* footer,\n* header,\n* hgroup,\n* menu,\n* nav,\n* section {\n display: block;\n}\n* ol,\n* ul {\n list-style: none;\n}\n* blockquote,\n* q {\n quotes: none;\n}\n* blockquote::before,\n* blockquote::after,\n* q::before,\n* q::after {\n content: \"\";\n content: none;\n}\n* table {\n border-collapse: collapse;\n border-spacing: 0;\n}\n* html {\n box-sizing: border-box;\n}\n* *,\n* *::before,\n* *::after {\n box-sizing: inherit;\n}";
88
88
  styleInject(css_248z$i);
89
89
 
90
- var css_248z$h = ".scrollbar, * {\n scrollbar-track-color: #e4e4e4;\n scrollbar-arrow-color: #e4e4e4;\n scrollbar-3dlight-color: #e4e4e4;\n scrollbar-highlight-color: #e4e4e4;\n scrollbar-shadow-color: #e4e4e4;\n scrollbar-face-color: #e4e4e4;\n}\n\n.scrollbar::-webkit-scrollbar, ::-webkit-scrollbar {\n background: inherit;\n width: 6px;\n height: 6px;\n}\n\n.scrollbar::-webkit-scrollbar-track, ::-webkit-scrollbar-track {\n background: none;\n}\n\n.scrollbar::-webkit-scrollbar-thumb, ::-webkit-scrollbar-thumb {\n background-color: #e4e4e4;\n border-radius: 16px;\n}\n\n.scrollbar::-webkit-scrollbar-button, ::-webkit-scrollbar-button {\n display: none;\n}\n\n@font-face {\n font-family: \"Pretendard\";\n src: url(\"../../assets/fonts/PretendardVariable.woff2\") format(\"woff2-variations\");\n}\n:root {\n --primary: var(--p);\n --primary-50-per: var(--p-50-per);\n --primary-50: var(--p-50);\n --primary-20-per: var(--p-20-per);\n --primary-20: var(--p-20);\n --primary-10-per: var(--p-10-per);\n --primary-10: var(--p-10);\n}\n\n[data-theme=blue] {\n --p: #308acc;\n --p-50-per: #308acc80;\n --p-50: #97c4e5;\n --p-20-per: #308acc33;\n --p-20: #d6e8f5;\n --p-10-per: #308acc1a;\n --p-10: #eaf3fa;\n --p-05-per: #308acc0d;\n --p-05: #f5fafd;\n}\n\n[data-theme=green] {\n --p: #096412;\n --p-50-per: #09641280;\n --p-50: #84b188;\n --p-20-per: #09641233;\n --p-20: #cee0d0;\n --p-10-per: #0964121a;\n --p-10: #e6f0e7;\n --p-05-per: #0964120d;\n --p-05: #f3f7f3;\n}";
90
+ var css_248z$h = ".scrollbar, * {\n scrollbar-track-color: #e4e4e4;\n scrollbar-arrow-color: #e4e4e4;\n scrollbar-3dlight-color: #e4e4e4;\n scrollbar-highlight-color: #e4e4e4;\n scrollbar-shadow-color: #e4e4e4;\n scrollbar-face-color: #e4e4e4;\n}\n\n.scrollbar::-webkit-scrollbar, ::-webkit-scrollbar {\n background: inherit;\n width: 6px;\n height: 6px;\n}\n\n.scrollbar::-webkit-scrollbar-track, ::-webkit-scrollbar-track {\n background: none;\n}\n\n.scrollbar::-webkit-scrollbar-thumb, ::-webkit-scrollbar-thumb {\n background-color: #e4e4e4;\n border-radius: 16px;\n}\n\n.scrollbar::-webkit-scrollbar-button, ::-webkit-scrollbar-button {\n display: none;\n}\n\n@font-face {\n font-family: \"Pretendard\";\n src: url(\"../../assets/fonts/PretendardVariable.woff2\") format(\"woff2-variations\");\n}\n* {\n -webkit-font-smoothing: antialiased;\n}\n\n:root {\n --primary: var(--p);\n --primary-50-per: var(--p-50-per);\n --primary-50: var(--p-50);\n --primary-20-per: var(--p-20-per);\n --primary-20: var(--p-20);\n --primary-10-per: var(--p-10-per);\n --primary-10: var(--p-10);\n}\n\n[data-theme=blue] {\n --p: #308acc;\n --p-50-per: #308acc80;\n --p-50: #97c4e5;\n --p-20-per: #308acc33;\n --p-20: #d6e8f5;\n --p-10-per: #308acc1a;\n --p-10: #eaf3fa;\n --p-05-per: #308acc0d;\n --p-05: #f5fafd;\n}\n\n[data-theme=green] {\n --p: #096412;\n --p-50-per: #09641280;\n --p-50: #84b188;\n --p-20-per: #09641233;\n --p-20: #cee0d0;\n --p-10-per: #0964121a;\n --p-10: #e6f0e7;\n --p-05-per: #0964120d;\n --p-05: #f3f7f3;\n}";
91
91
  styleInject(css_248z$h);
92
92
 
93
93
  function StyleProvider(_a) {
@@ -3031,26 +3031,89 @@ var iconmap = {
3031
3031
  "circles": [],
3032
3032
  "rects": []
3033
3033
  },
3034
- "SortOutline_s18": {
3035
- "width": "18",
3036
- "height": "18",
3037
- "viewBox": "0 0 18 18",
3034
+ "SortDown_s0815": {
3035
+ "width": "8",
3036
+ "height": "12",
3037
+ "viewBox": "0 0 8 12",
3038
3038
  "fill": "none",
3039
3039
  "paths": [{
3040
- "d": "M12.45 13.7988C12.0772 13.7988 11.775 13.4966 11.775 13.1238L11.775 6.78959L10.2273 8.33729C9.96367 8.6009 9.53629 8.6009 9.27268 8.33729C9.00908 8.07369 9.00908 7.6463 9.27269 7.3827L11.9197 4.73573C12.2125 4.44284 12.6874 4.44284 12.9803 4.73574L15.6273 7.38271C15.8909 7.64631 15.8909 8.0737 15.6273 8.3373C15.3637 8.6009 14.9363 8.6009 14.6727 8.3373L13.125 6.7896L13.125 13.1238C13.125 13.4966 12.8228 13.7988 12.45 13.7988Z",
3041
- "fill": "#8C8C8C",
3042
- "fillRule": "evenodd",
3043
- "clipRule": "evenodd"
3040
+ "d": "M3.85693 1V11",
3041
+ "stroke": "#8C8C8C",
3042
+ "strokeWidth": "1.5",
3043
+ "strokeLinecap": "round",
3044
+ "strokeLinejoin": "round"
3044
3045
  }, {
3045
- "d": "M4.94999 12.8388L4.94998 5.175C4.94998 4.80221 5.25219 4.5 5.62498 4.5C5.99777 4.5 6.29998 4.80221 6.29998 5.175L6.29999 12.8388C6.29999 13.2116 5.99778 13.5138 5.62499 13.5138C5.2522 13.5138 4.94999 13.2116 4.94999 12.8388Z",
3046
- "fill": "#8C8C8C",
3047
- "fillRule": "evenodd",
3048
- "clipRule": "evenodd"
3046
+ "d": "M6.71408 8.14258L3.85693 10.9997",
3047
+ "stroke": "#8C8C8C",
3048
+ "strokeWidth": "1.5",
3049
+ "strokeLinecap": "round",
3050
+ "strokeLinejoin": "round"
3049
3051
  }, {
3050
- "d": "M8.80229 9.96152C9.06589 10.2251 9.06589 10.6525 8.80229 10.9161L6.15532 13.5631C5.86243 13.856 5.38755 13.856 5.09466 13.5631L2.4477 10.9161C2.1841 10.6525 2.1841 10.2251 2.4477 9.96151C2.71131 9.69791 3.13869 9.69791 3.4023 9.96152L5.62499 12.1842L7.8477 9.96152C8.1113 9.69792 8.53869 9.69792 8.80229 9.96152Z",
3051
- "fill": "#8C8C8C",
3052
- "fillRule": "evenodd",
3053
- "clipRule": "evenodd"
3052
+ "d": "M1 8.14258L3.85714 10.9997",
3053
+ "stroke": "#8C8C8C",
3054
+ "strokeWidth": "1.5",
3055
+ "strokeLinecap": "round",
3056
+ "strokeLinejoin": "round"
3057
+ }],
3058
+ "circles": [],
3059
+ "rects": []
3060
+ },
3061
+ "SortOutline_s1415": {
3062
+ "width": "14",
3063
+ "height": "12",
3064
+ "viewBox": "0 0 14 12",
3065
+ "fill": "none",
3066
+ "paths": [{
3067
+ "d": "M3.61914 1V11",
3068
+ "stroke": "#8C8C8C",
3069
+ "strokeWidth": "1.5",
3070
+ "strokeLinecap": "round",
3071
+ "strokeLinejoin": "round"
3072
+ }, {
3073
+ "d": "M6.23809 3.61905L3.61905 1L1 3.61905",
3074
+ "stroke": "#8C8C8C",
3075
+ "strokeWidth": "1.5",
3076
+ "strokeLinecap": "round",
3077
+ "strokeLinejoin": "round"
3078
+ }, {
3079
+ "d": "M12.7937 8.38086L10.1747 10.9999L7.71436 8.38086",
3080
+ "stroke": "#8C8C8C",
3081
+ "strokeWidth": "1.5",
3082
+ "strokeLinecap": "round",
3083
+ "strokeLinejoin": "round"
3084
+ }, {
3085
+ "d": "M10.1748 11V1",
3086
+ "stroke": "#8C8C8C",
3087
+ "strokeWidth": "1.5",
3088
+ "strokeLinecap": "round",
3089
+ "strokeLinejoin": "round"
3090
+ }],
3091
+ "circles": [],
3092
+ "rects": []
3093
+ },
3094
+ "SortUp_s0815": {
3095
+ "width": "8",
3096
+ "height": "12",
3097
+ "viewBox": "0 0 8 12",
3098
+ "fill": "none",
3099
+ "paths": [{
3100
+ "d": "M3.85693 1V11",
3101
+ "stroke": "#8C8C8C",
3102
+ "strokeWidth": "1.5",
3103
+ "strokeLinecap": "round",
3104
+ "strokeLinejoin": "round"
3105
+ }, {
3106
+ "d": "M6.71408 3.85714L3.85693 1",
3107
+ "stroke": "#8C8C8C",
3108
+ "strokeWidth": "1.5",
3109
+ "strokeLinecap": "round",
3110
+ "strokeLinejoin": "round"
3111
+ }, {
3112
+ "d": "M1 3.85714L3.85714 1",
3113
+ "stroke": "#8C8C8C",
3114
+ "strokeWidth": "1.5",
3115
+ "strokeLinecap": "round",
3116
+ "strokeLinejoin": "round"
3054
3117
  }],
3055
3118
  "circles": [],
3056
3119
  "rects": []
@@ -3794,7 +3857,9 @@ var ICONS = {
3794
3857
  "Settings02_s2420": "Settings02_s2420",
3795
3858
  "Share03_s1215": "Share03_s1215",
3796
3859
  "Share03_s1613": "Share03_s1613",
3797
- "SortOutline_s18": "SortOutline_s18",
3860
+ "SortDown_s0815": "SortDown_s0815",
3861
+ "SortOutline_s1415": "SortOutline_s1415",
3862
+ "SortUp_s0815": "SortUp_s0815",
3798
3863
  "State_s16": "State_s16",
3799
3864
  "State_s18": "State_s18",
3800
3865
  "StopCircle_s1413": "StopCircle_s1413",
@@ -4167,8 +4232,8 @@ var Input = /*#__PURE__*/forwardRef(function (_a, inputRef) {
4167
4232
  className = _a.className,
4168
4233
  props = __rest(_a, ["invalid", "label", "type", "onClear", "hiddenClearButton", "wrapperRef", "startNode", "endNode", "className"]);
4169
4234
  var _c = useState(true),
4170
- pwdVision = _c[0],
4171
- setPwdVision = _c[1];
4235
+ maskingPassword = _c[0],
4236
+ setMaskingPassword = _c[1]; // *로 보이고 싶으면 true
4172
4237
  var _d = useState(false),
4173
4238
  showClearButton = _d[0],
4174
4239
  setShowClearButton = _d[1];
@@ -4176,7 +4241,7 @@ var Input = /*#__PURE__*/forwardRef(function (_a, inputRef) {
4176
4241
  var hashId = uuidv4(4);
4177
4242
  useEffect(function () {
4178
4243
  return function () {
4179
- setPwdVision(false);
4244
+ setMaskingPassword(true);
4180
4245
  setShowClearButton(false);
4181
4246
  };
4182
4247
  }, []);
@@ -4253,7 +4318,7 @@ var Input = /*#__PURE__*/forwardRef(function (_a, inputRef) {
4253
4318
  })), jsx("input", __assign({}, props, {
4254
4319
  id: "maru-input-".concat(hashId),
4255
4320
  ref: combineRef,
4256
- type: type === 'password' && pwdVision ? 'password' : 'text',
4321
+ type: type === 'password' && maskingPassword ? 'password' : 'text',
4257
4322
  onChange: handleInputChange,
4258
4323
  onBlur: handleInputBlur
4259
4324
  })), jsxs("div", __assign({
@@ -4262,14 +4327,17 @@ var Input = /*#__PURE__*/forwardRef(function (_a, inputRef) {
4262
4327
  children: [type === 'password' && !props.disabled && jsx("button", __assign({
4263
4328
  type: "button",
4264
4329
  onClick: function onClick() {
4265
- return setPwdVision(function (prev) {
4330
+ return setMaskingPassword(function (prev) {
4266
4331
  return !prev;
4267
4332
  });
4268
4333
  },
4269
4334
  tabIndex: -1
4270
4335
  }, {
4271
- children: jsx(Icon, {
4272
- name: pwdVision ? ICONS.Eye_s16 : ICONS.EyeOff_s16,
4336
+ children: jsx(Icon
4337
+ // 현재 상태에 대한 아이콘이 아니라 어떻게 하고싶냐는 뜻의 아이콘이니까 반대로 되어있는게 맞다
4338
+ , {
4339
+ // 현재 상태에 대한 아이콘이 아니라 어떻게 하고싶냐는 뜻의 아이콘이니까 반대로 되어있는게 맞다
4340
+ name: maskingPassword ? ICONS.Eye_s16 : ICONS.EyeOff_s16,
4273
4341
  color: "#bdbdbd"
4274
4342
  })
4275
4343
  })), endNode && jsx("div", __assign({
@@ -23177,45 +23245,9 @@ var noSpace = function noSpace(text) {
23177
23245
  return '';
23178
23246
  };
23179
23247
 
23180
- // text char 하나씩 비교하는 경우 (띄워쓰기 무시, 검색할 때 띄워쓰기 무시해야함)
23181
- var setHighlightTextOnDataExceptSpace = function setHighlightTextOnDataExceptSpace(data, targetKey, compareText, autoExcept) {
23182
- if (autoExcept === void 0) {
23183
- autoExcept = false;
23184
- }
23185
- var setHighlightIdx = function setHighlightIdx(dt) {
23186
- var pqi = 0;
23187
- var idx = [-1, -1];
23188
- for (var i = 0; i <= dt[targetKey].length; i += 1) {
23189
- if (dt[targetKey][i] !== ' ') {
23190
- if (pqi === compareText.length) {
23191
- idx[1] = i;
23192
- break;
23193
- }
23194
- if (dt[targetKey][i].toLowerCase() === compareText[pqi]) {
23195
- if (pqi === 0) {
23196
- idx[0] = i;
23197
- }
23198
- pqi += 1;
23199
- } else {
23200
- pqi = 0;
23201
- }
23202
- }
23203
- }
23204
- return idx;
23205
- };
23248
+ var searchData = function searchData(data, displayKey, query) {
23206
23249
  return data.reduce(function (acc, curr) {
23207
- var _a;
23208
- if (noSpace(curr[targetKey]).toLowerCase().includes(compareText)) {
23209
- var highlightIdx = setHighlightIdx(curr);
23210
- if (highlightIdx.every(function (el) {
23211
- return el !== -1;
23212
- })) {
23213
- var highlightText = "".concat(curr[targetKey].slice(0, highlightIdx[0]), "<em>").concat(curr[targetKey].slice(highlightIdx[0], highlightIdx[1]), "</em>").concat(curr[targetKey].slice(highlightIdx[1]));
23214
- acc.push(__assign(__assign({}, curr), (_a = {}, _a[targetKey] = highlightText, _a)));
23215
- return acc;
23216
- }
23217
- }
23218
- if (!autoExcept) {
23250
+ if (noSpace(curr[displayKey]).toLowerCase().includes(query)) {
23219
23251
  acc.push(curr);
23220
23252
  }
23221
23253
  return acc;
@@ -23544,16 +23576,10 @@ function DropdownMenu(_a) {
23544
23576
  rowId: item[idKey]
23545
23577
  }, {
23546
23578
  children: jsx("span", {
23547
- className: "maru-dropdown-menu-item-span",
23548
- dangerouslySetInnerHTML: {
23549
- __html: item[displayKey]
23550
- }
23579
+ children: item[displayKey]
23551
23580
  })
23552
23581
  })) : jsx("span", {
23553
- className: "maru-dropdown-menu-item-span",
23554
- dangerouslySetInnerHTML: {
23555
- __html: item[displayKey]
23556
- }
23582
+ children: item[displayKey]
23557
23583
  })
23558
23584
  }), "maru-dropdown-menu-item-".concat(item[idKey]));
23559
23585
  })
@@ -23629,22 +23655,26 @@ function Dropdown(_a) {
23629
23655
  initInputValue();
23630
23656
  };
23631
23657
  useEffect(function () {
23632
- if (selected === null || selected === void 0 ? void 0 : selected[displayKey]) {
23633
- setInputValue(selected[displayKey]);
23634
- } else {
23635
- // selected === undefined
23636
- setInputValue('');
23658
+ if (type === 'input') {
23659
+ if (selected === null || selected === void 0 ? void 0 : selected[displayKey]) {
23660
+ setInputValue(selected[displayKey]);
23661
+ } else {
23662
+ // selected === undefined
23663
+ setInputValue('');
23664
+ }
23637
23665
  }
23638
- }, [selected]);
23666
+ }, [type, selected]);
23639
23667
  // type=input 일때, inputValue 변경 시(사용자가 타이핑) 메뉴 아이템 파싱하여 표시하기 위한 useEffect
23640
23668
  useEffect(function () {
23641
- var pretreatedQeury = noSpace(inputValue).toLowerCase();
23642
- if (pretreatedQeury !== '') {
23643
- setFilteredData(setHighlightTextOnDataExceptSpace(data, displayKey, pretreatedQeury));
23644
- } else {
23645
- initFilteredData();
23669
+ if (type === 'input') {
23670
+ var pretreatedQeury = noSpace(inputValue).toLowerCase();
23671
+ if (pretreatedQeury !== '') {
23672
+ setFilteredData(searchData(data, displayKey, pretreatedQeury));
23673
+ } else {
23674
+ initFilteredData();
23675
+ }
23646
23676
  }
23647
- }, [inputValue]);
23677
+ }, [type, inputValue]);
23648
23678
  var handleInputChange = function handleInputChange(e) {
23649
23679
  setInputValue(e.currentTarget.value);
23650
23680
  };
@@ -24419,22 +24449,43 @@ function FilterTh(_a) {
24419
24449
  }));
24420
24450
  }
24421
24451
 
24452
+ /**
24453
+ * 정렬 아닌거 마우스오버하면 쌍방 화살표
24454
+ * 내림차순 정렬이면 아래 화살표
24455
+ * 오름차순 정렬이면 위 화살표
24456
+ * 색깔은 언제나 b500 #5c5c5c
24457
+ * @returns
24458
+ */
24422
24459
  function SortableColumn(_a) {
24423
24460
  var format = _a.format,
24424
- currentSort = _a.currentSort,
24461
+ sort = _a.sort,
24425
24462
  onSortClick = _a.onSortClick;
24426
24463
  var _b = useState(false),
24427
24464
  hover = _b[0],
24428
24465
  setHover = _b[1];
24429
- var color = (currentSort === null || currentSort === void 0 ? void 0 : currentSort.columnName) === format.columnIdKey ? 'primary' : hover ? '#84B188' : '#8c8c8c';
24466
+ var iconName = useMemo(function () {
24467
+ // 정렬 아닌거 마우스오버하면 쌍방 화살표
24468
+ if (sort && sort.columnName !== format.columnIdKey && hover) {
24469
+ return ICONS.SortOutline_s1415;
24470
+ }
24471
+ if (sort && sort.columnName === format.columnIdKey) {
24472
+ // 내림차순 정렬이면 아래 화살표
24473
+ if (sort.desc) {
24474
+ return ICONS.SortDown_s0815;
24475
+ }
24476
+ // 오름차순 정렬이면 위 화살표
24477
+ return ICONS.SortUp_s0815;
24478
+ }
24479
+ return undefined;
24480
+ }, [sort, format, hover]);
24430
24481
  return !format.sortable ? jsx("span", {
24431
24482
  children: format.columnName
24432
24483
  }) : jsx(Button, __assign({
24433
- onClick: onSortClick(format.columnIdKey, format.sortable),
24484
+ onClick: onSortClick(format.columnIdKey),
24434
24485
  variant: "text",
24435
- endIcon: {
24436
- name: ICONS.SortOutline_s18,
24437
- color: color
24486
+ endIcon: iconName && {
24487
+ name: iconName,
24488
+ color: '#5c5c5c'
24438
24489
  },
24439
24490
  color: "secondary",
24440
24491
  className: "maru-table-header-sortable",
@@ -24451,7 +24502,7 @@ function SortableColumn(_a) {
24451
24502
 
24452
24503
  function THead(_a) {
24453
24504
  var formats = _a.formats,
24454
- currentSort = _a.currentSort,
24505
+ sort = _a.sort,
24455
24506
  onSortClick = _a.onSortClick,
24456
24507
  hasCheckbox = _a.hasCheckbox,
24457
24508
  allCheckbox = _a.allCheckbox,
@@ -24506,12 +24557,12 @@ function THead(_a) {
24506
24557
  }, {
24507
24558
  children: jsx(SortableColumn, {
24508
24559
  format: format,
24509
- currentSort: currentSort,
24560
+ sort: sort,
24510
24561
  onSortClick: onSortClick
24511
24562
  })
24512
24563
  })) : jsx(SortableColumn, {
24513
24564
  format: format,
24514
- currentSort: currentSort,
24565
+ sort: sort,
24515
24566
  onSortClick: onSortClick
24516
24567
  })
24517
24568
  }, "column-".concat(format.columnIdKey));
@@ -24631,19 +24682,14 @@ function Table(_a) {
24631
24682
  }
24632
24683
  }
24633
24684
  }, [data, checkedIds]);
24634
- var handleSortClick = function handleSortClick(columnName, sortable) {
24635
- if (sortable === void 0) {
24636
- sortable = false;
24637
- }
24685
+ var handleSortClick = function handleSortClick(columnName) {
24638
24686
  return function () {
24639
- var desc = function desc() {
24640
- if ((sort === null || sort === void 0 ? void 0 : sort.columnName) !== columnName) return true;
24641
- return !sort.desc;
24642
- };
24643
- if (sortable) {
24687
+ if (sort) {
24688
+ // 현재 정렬중인건 방향만 바꾸고 다른거 정렬시키려면 내림차순으로
24689
+ var desc = sort.columnName === columnName ? !sort.desc : true;
24644
24690
  onSort === null || onSort === void 0 ? void 0 : onSort({
24645
24691
  columnName: columnName,
24646
- desc: desc()
24692
+ desc: desc
24647
24693
  });
24648
24694
  }
24649
24695
  };
@@ -24690,7 +24736,7 @@ function Table(_a) {
24690
24736
  hasActionCol: hasActionCol
24691
24737
  }), jsx(THead, {
24692
24738
  formats: formats,
24693
- currentSort: sort,
24739
+ sort: sort,
24694
24740
  onSortClick: handleSortClick,
24695
24741
  hasCheckbox: checkedIds != null,
24696
24742
  allCheckbox: allChecked,
@@ -1,3 +1 @@
1
- declare const setHighlightTextOnData: <T>(cb: (func: unknown) => void, data: T[], targetKey: string, compareText: string) => void;
2
- declare const setHighlightTextOnDataExceptSpace: <T>(data: T[], targetKey: string, compareText: string, autoExcept?: boolean) => typeof data;
3
- export { setHighlightTextOnData, setHighlightTextOnDataExceptSpace };
1
+ export declare const searchData: <T>(data: T[], displayKey: string, query: string) => typeof data;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maru_design2",
3
- "version": "2.16.1",
3
+ "version": "2.16.4",
4
4
  "main": "./dist/index.js",
5
5
  "author": "zena-42maru",
6
6
  "license": "MIT",