@uniai-fe/uds-primitives 0.3.48 → 0.3.49
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/dist/styles.css +40 -12
- package/package.json +1 -1
- package/src/components/dropdown/markup/Template.tsx +75 -68
- package/src/components/dropdown/types/props.ts +21 -0
- package/src/components/select/markup/Default.tsx +56 -45
- package/src/components/select/markup/multiple/Multiple.tsx +113 -95
- package/src/components/table/markup/Container.tsx +42 -2
- package/src/components/table/styles/foundation.scss +71 -24
- package/src/components/table/styles/variables.scss +5 -0
- package/src/components/table/types/foundation.ts +5 -0
- package/src/utils/index.ts +1 -1
- package/src/utils/selected-values.ts +70 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selected Values Utils; value 기반 선택 비교/정규화 유틸
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Select/Dropdown value 원시 타입
|
|
7
|
+
*/
|
|
8
|
+
export type SelectedValue = string | number;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* value를 비교 키 문자열로 정규화
|
|
12
|
+
* @param {SelectedValue | undefined} value 비교 대상 value
|
|
13
|
+
* @returns {string} 정규화된 키 문자열
|
|
14
|
+
*/
|
|
15
|
+
export const toSelectedValueKey = (value?: SelectedValue): string =>
|
|
16
|
+
value === undefined ? "" : String(value);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* 단일 value 동등성 비교
|
|
20
|
+
* @param {SelectedValue | undefined} previousValue 이전 value
|
|
21
|
+
* @param {SelectedValue | undefined} nextValue 다음 value
|
|
22
|
+
* @returns {boolean} 동등 여부
|
|
23
|
+
*/
|
|
24
|
+
export const isSameSelectedValue = (
|
|
25
|
+
previousValue?: SelectedValue,
|
|
26
|
+
nextValue?: SelectedValue,
|
|
27
|
+
): boolean =>
|
|
28
|
+
toSelectedValueKey(previousValue) === toSelectedValueKey(nextValue);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* value 배열 동등성 비교
|
|
32
|
+
* @param {SelectedValue[]} previousValues 이전 value 배열
|
|
33
|
+
* @param {SelectedValue[]} nextValues 다음 value 배열
|
|
34
|
+
* @returns {boolean} 동등 여부
|
|
35
|
+
*/
|
|
36
|
+
export const isSameSelectedValueList = (
|
|
37
|
+
previousValues: SelectedValue[],
|
|
38
|
+
nextValues: SelectedValue[],
|
|
39
|
+
): boolean =>
|
|
40
|
+
previousValues.length === nextValues.length &&
|
|
41
|
+
previousValues.every((selectedValue, index) =>
|
|
42
|
+
isSameSelectedValue(selectedValue, nextValues[index]),
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* 단일 선택 value 정규화
|
|
47
|
+
* @param {SelectedValue[]} selectedValues 선택 value 배열
|
|
48
|
+
* @returns {SelectedValue | undefined} 단일 선택 결과
|
|
49
|
+
*/
|
|
50
|
+
export const normalizeSingleSelectedValue = (
|
|
51
|
+
selectedValues: SelectedValue[],
|
|
52
|
+
): SelectedValue | undefined => selectedValues[0];
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* 모드 기반 value 배열 정규화
|
|
56
|
+
* @param {SelectedValue[]} selectedValues 선택 value 배열
|
|
57
|
+
* @param {boolean} multiple 다중 선택 모드 여부
|
|
58
|
+
* @returns {SelectedValue[]} 모드 규칙 적용 결과
|
|
59
|
+
*/
|
|
60
|
+
export const normalizeSelectedValuesByMode = (
|
|
61
|
+
selectedValues: SelectedValue[],
|
|
62
|
+
multiple: boolean,
|
|
63
|
+
): SelectedValue[] => {
|
|
64
|
+
if (multiple) {
|
|
65
|
+
return selectedValues;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const firstValue = normalizeSingleSelectedValue(selectedValues);
|
|
69
|
+
return firstValue === undefined ? [] : [firstValue];
|
|
70
|
+
};
|