@simplysm/solid 13.0.62 → 13.0.64

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 (86) hide show
  1. package/README.md +6 -0
  2. package/dist/components/data/crud-detail/CrudDetail.d.ts.map +1 -1
  3. package/dist/components/data/crud-detail/CrudDetail.js +62 -41
  4. package/dist/components/data/crud-detail/CrudDetail.js.map +2 -2
  5. package/dist/components/data/crud-sheet/CrudSheet.d.ts.map +1 -1
  6. package/dist/components/data/crud-sheet/CrudSheet.js +164 -19
  7. package/dist/components/data/crud-sheet/CrudSheet.js.map +2 -2
  8. package/dist/components/data/crud-sheet/types.d.ts +9 -3
  9. package/dist/components/data/crud-sheet/types.d.ts.map +1 -1
  10. package/dist/components/data/sheet/DataSheet.d.ts.map +1 -1
  11. package/dist/components/data/sheet/DataSheet.js +3 -2
  12. package/dist/components/data/sheet/DataSheet.js.map +2 -2
  13. package/dist/components/form-control/checkbox/Checkbox.d.ts.map +1 -1
  14. package/dist/components/form-control/checkbox/Checkbox.js +10 -10
  15. package/dist/components/form-control/checkbox/Checkbox.js.map +2 -2
  16. package/dist/components/form-control/checkbox/Checkbox.styles.d.ts.map +1 -1
  17. package/dist/components/form-control/checkbox/Checkbox.styles.js +2 -2
  18. package/dist/components/form-control/checkbox/Checkbox.styles.js.map +1 -1
  19. package/dist/components/form-control/checkbox/Radio.d.ts.map +1 -1
  20. package/dist/components/form-control/checkbox/Radio.js +13 -13
  21. package/dist/components/form-control/checkbox/Radio.js.map +2 -2
  22. package/dist/components/form-control/data-select-button/DataSelectButton.d.ts +38 -0
  23. package/dist/components/form-control/data-select-button/DataSelectButton.d.ts.map +1 -0
  24. package/dist/components/form-control/data-select-button/DataSelectButton.js +184 -0
  25. package/dist/components/form-control/data-select-button/DataSelectButton.js.map +6 -0
  26. package/dist/components/form-control/select/Select.d.ts +7 -3
  27. package/dist/components/form-control/select/Select.d.ts.map +1 -1
  28. package/dist/components/form-control/select/Select.js +146 -45
  29. package/dist/components/form-control/select/Select.js.map +2 -2
  30. package/dist/components/form-control/select-list/SelectList.d.ts +54 -0
  31. package/dist/components/form-control/select-list/SelectList.d.ts.map +1 -0
  32. package/dist/components/form-control/select-list/SelectList.js +280 -0
  33. package/dist/components/form-control/select-list/SelectList.js.map +6 -0
  34. package/dist/components/form-control/select-list/SelectListContext.d.ts +13 -0
  35. package/dist/components/form-control/select-list/SelectListContext.d.ts.map +1 -0
  36. package/dist/components/form-control/select-list/SelectListContext.js +14 -0
  37. package/dist/components/form-control/select-list/SelectListContext.js.map +6 -0
  38. package/dist/components/form-control/shared-data/SharedDataSelect.d.ts +32 -0
  39. package/dist/components/form-control/shared-data/SharedDataSelect.d.ts.map +1 -0
  40. package/dist/components/form-control/shared-data/SharedDataSelect.js +74 -0
  41. package/dist/components/form-control/shared-data/SharedDataSelect.js.map +6 -0
  42. package/dist/components/form-control/shared-data/SharedDataSelectButton.d.ts +29 -0
  43. package/dist/components/form-control/shared-data/SharedDataSelectButton.d.ts.map +1 -0
  44. package/dist/components/form-control/shared-data/SharedDataSelectButton.js +17 -0
  45. package/dist/components/form-control/shared-data/SharedDataSelectButton.js.map +6 -0
  46. package/dist/components/form-control/shared-data/SharedDataSelectList.d.ts +29 -0
  47. package/dist/components/form-control/shared-data/SharedDataSelectList.d.ts.map +1 -0
  48. package/dist/components/form-control/shared-data/SharedDataSelectList.js +80 -0
  49. package/dist/components/form-control/shared-data/SharedDataSelectList.js.map +6 -0
  50. package/dist/features/address/AddressSearch.d.ts +8 -0
  51. package/dist/features/address/AddressSearch.d.ts.map +1 -0
  52. package/dist/features/address/AddressSearch.js +72 -0
  53. package/dist/features/address/AddressSearch.js.map +6 -0
  54. package/dist/index.d.ts +6 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +6 -0
  57. package/dist/index.js.map +1 -1
  58. package/dist/providers/shared-data/SharedDataContext.d.ts +14 -0
  59. package/dist/providers/shared-data/SharedDataContext.d.ts.map +1 -1
  60. package/dist/providers/shared-data/SharedDataContext.js.map +1 -1
  61. package/dist/providers/shared-data/SharedDataProvider.d.ts.map +1 -1
  62. package/dist/providers/shared-data/SharedDataProvider.js +5 -1
  63. package/dist/providers/shared-data/SharedDataProvider.js.map +2 -2
  64. package/docs/data-components.md +15 -4
  65. package/docs/form-controls.md +257 -0
  66. package/docs/hooks.md +30 -0
  67. package/docs/providers.md +7 -0
  68. package/package.json +3 -3
  69. package/src/components/data/crud-detail/CrudDetail.tsx +51 -26
  70. package/src/components/data/crud-sheet/CrudSheet.tsx +157 -20
  71. package/src/components/data/crud-sheet/types.ts +13 -3
  72. package/src/components/data/sheet/DataSheet.tsx +6 -7
  73. package/src/components/form-control/checkbox/Checkbox.styles.ts +2 -2
  74. package/src/components/form-control/checkbox/Checkbox.tsx +18 -20
  75. package/src/components/form-control/checkbox/Radio.tsx +18 -20
  76. package/src/components/form-control/data-select-button/DataSelectButton.tsx +279 -0
  77. package/src/components/form-control/select/Select.tsx +192 -36
  78. package/src/components/form-control/select-list/SelectList.tsx +385 -0
  79. package/src/components/form-control/select-list/SelectListContext.ts +23 -0
  80. package/src/components/form-control/shared-data/SharedDataSelect.tsx +101 -0
  81. package/src/components/form-control/shared-data/SharedDataSelectButton.tsx +47 -0
  82. package/src/components/form-control/shared-data/SharedDataSelectList.tsx +85 -0
  83. package/src/features/address/AddressSearch.tsx +75 -0
  84. package/src/index.ts +18 -0
  85. package/src/providers/shared-data/SharedDataContext.ts +14 -0
  86. package/src/providers/shared-data/SharedDataProvider.tsx +4 -0
@@ -0,0 +1,75 @@
1
+ import { type Component, createSignal, onMount } from "solid-js";
2
+ import { BusyContainer } from "../../components/feedback/busy/BusyContainer";
3
+ import { useDialogInstance } from "../../components/disclosure/DialogInstanceContext";
4
+
5
+ export interface AddressSearchResult {
6
+ postNumber: string | undefined;
7
+ address: string | undefined;
8
+ buildingName: string | undefined;
9
+ }
10
+
11
+ export const AddressSearchContent: Component = () => {
12
+ const dialogInstance = useDialogInstance<AddressSearchResult>();
13
+
14
+ const [initialized, setInitialized] = createSignal(false);
15
+ let contentEl!: HTMLDivElement;
16
+
17
+ onMount(async () => {
18
+ if (!document.getElementById("daum_address")) {
19
+ await new Promise<void>((resolve) => {
20
+ const scriptEl = document.createElement("script");
21
+ scriptEl.src = "//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js";
22
+ scriptEl.setAttribute("id", "daum_address");
23
+
24
+ scriptEl.onload = (): void => {
25
+ // @ts-expect-error -- Daum Postcode 글로벌 API
26
+ daum.postcode.load(() => {
27
+ resolve();
28
+ });
29
+ };
30
+ document.head.appendChild(scriptEl);
31
+ });
32
+ }
33
+
34
+ // @ts-expect-error -- Daum Postcode 글로벌 API
35
+ new daum.Postcode({
36
+ oncomplete: (data: any): void => {
37
+ const addr = data.userSelectedType === "R" ? data.roadAddress : data.jibunAddress;
38
+
39
+ let extraAddr = "";
40
+ if (data.userSelectedType === "R") {
41
+ if (data.bname !== "" && /[동로가]$/g.test(data.bname)) {
42
+ extraAddr += data.bname;
43
+ }
44
+
45
+ if (data.buildingName !== "" && data.apartment === "Y") {
46
+ extraAddr += extraAddr !== "" ? ", " + data.buildingName : data.buildingName;
47
+ }
48
+
49
+ if (extraAddr !== "") {
50
+ extraAddr = " (" + extraAddr + ")";
51
+ }
52
+ }
53
+
54
+ dialogInstance?.close({
55
+ postNumber: data.zonecode,
56
+ address: addr + extraAddr,
57
+ buildingName: data.buildingName,
58
+ });
59
+ },
60
+ onresize: (size: any): void => {
61
+ contentEl.style.height = size.height + "px";
62
+ },
63
+ width: "100%",
64
+ height: "100%",
65
+ }).embed(contentEl, { autoClose: false });
66
+
67
+ setInitialized(true);
68
+ });
69
+
70
+ return (
71
+ <BusyContainer busy={!initialized()}>
72
+ <div ref={contentEl} data-address-content style={{ "min-height": "100px" }} />
73
+ </BusyContainer>
74
+ );
75
+ };
package/src/index.ts CHANGED
@@ -6,6 +6,17 @@ export * from "./components/form-control/Button";
6
6
  // Select
7
7
  export * from "./components/form-control/select/Select";
8
8
 
9
+ // SelectList
10
+ export * from "./components/form-control/select-list/SelectList";
11
+
12
+ // DataSelectButton
13
+ export * from "./components/form-control/data-select-button/DataSelectButton";
14
+
15
+ // SharedData wrappers
16
+ export * from "./components/form-control/shared-data/SharedDataSelect";
17
+ export * from "./components/form-control/shared-data/SharedDataSelectButton";
18
+ export * from "./components/form-control/shared-data/SharedDataSelectList";
19
+
9
20
  // Combobox
10
21
  export * from "./components/form-control/combobox/Combobox";
11
22
 
@@ -171,3 +182,10 @@ export * from "./helpers/mergeStyles";
171
182
  export * from "./helpers/createAppStructure";
172
183
 
173
184
  //#endregion
185
+
186
+ //#region ========== Features ==========
187
+
188
+ // Address
189
+ export * from "./features/address/AddressSearch";
190
+
191
+ //#endregion
@@ -17,6 +17,12 @@ export interface SharedDataDefinition<TData> {
17
17
  orderBy: [(item: TData) => unknown, "asc" | "desc"][];
18
18
  /** 서버 이벤트 필터 (같은 name의 이벤트 중 filter가 일치하는 것만 수신) */
19
19
  filter?: unknown;
20
+ /** 항목에서 검색 텍스트를 추출하는 함수 */
21
+ getSearchText?: (item: TData) => string;
22
+ /** 항목이 숨김 상태인지 판별하는 함수 */
23
+ getIsHidden?: (item: TData) => boolean;
24
+ /** 항목의 부모 key를 추출하는 함수 (트리 구조 지원) */
25
+ getParentKey?: (item: TData) => string | number | undefined;
20
26
  }
21
27
 
22
28
  /**
@@ -32,6 +38,14 @@ export interface SharedDataAccessor<TData> {
32
38
  get: (key: string | number | undefined) => TData | undefined;
33
39
  /** 서버에 변경 이벤트 전파 (모든 구독자에게 refetch 트리거) */
34
40
  emit: (changeKeys?: Array<string | number>) => Promise<void>;
41
+ /** 항목의 고유 key 추출 함수 */
42
+ getKey: (item: TData) => string | number;
43
+ /** 항목에서 검색 텍스트를 추출하는 함수 */
44
+ getSearchText?: (item: TData) => string;
45
+ /** 항목이 숨김 상태인지 판별하는 함수 */
46
+ getIsHidden?: (item: TData) => boolean;
47
+ /** 항목의 부모 key를 추출하는 함수 (트리 구조 지원) */
48
+ getParentKey?: (item: TData) => string | number | undefined;
35
49
  }
36
50
 
37
51
  /**
@@ -171,6 +171,10 @@ export function SharedDataProvider(props: { children: JSX.Element }): JSX.Elemen
171
171
  changeKeys,
172
172
  );
173
173
  },
174
+ getKey: def.getKey,
175
+ getSearchText: def.getSearchText,
176
+ getIsHidden: def.getIsHidden,
177
+ getParentKey: def.getParentKey,
174
178
  };
175
179
  }
176
180
  }