@simplysm/sd-cli 13.0.75 → 13.0.77
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/README.md +341 -16
- package/dist/builders/DtsBuilder.js +2 -2
- package/dist/builders/DtsBuilder.js.map +1 -1
- package/dist/builders/LibraryBuilder.d.ts +3 -3
- package/dist/builders/LibraryBuilder.d.ts.map +1 -1
- package/dist/builders/LibraryBuilder.js +2 -2
- package/dist/builders/LibraryBuilder.js.map +1 -1
- package/dist/builders/types.d.ts +7 -1
- package/dist/builders/types.d.ts.map +1 -1
- package/dist/capacitor/capacitor.d.ts +5 -0
- package/dist/capacitor/capacitor.d.ts.map +1 -1
- package/dist/capacitor/capacitor.js +59 -59
- package/dist/capacitor/capacitor.js.map +1 -1
- package/dist/commands/check.js +4 -4
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/device.js +3 -3
- package/dist/commands/device.js.map +1 -1
- package/dist/commands/lint.d.ts +2 -2
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +4 -98
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/publish.js +20 -20
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/replace-deps.js +1 -1
- package/dist/commands/replace-deps.js.map +1 -1
- package/dist/commands/typecheck.js +9 -9
- package/dist/commands/typecheck.js.map +1 -1
- package/dist/electron/electron.js +16 -16
- package/dist/electron/electron.js.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.js +6 -6
- package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
- package/dist/orchestrators/DevOrchestrator.d.ts +7 -6
- package/dist/orchestrators/DevOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/DevOrchestrator.js +157 -203
- package/dist/orchestrators/DevOrchestrator.js.map +1 -1
- package/dist/orchestrators/WatchOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/WatchOrchestrator.js +3 -4
- package/dist/orchestrators/WatchOrchestrator.js.map +1 -1
- package/dist/sd-cli.js +1 -1
- package/dist/sd-cli.js.map +1 -1
- package/dist/sd-config.types.d.ts +9 -3
- package/dist/sd-config.types.d.ts.map +1 -1
- package/dist/utils/copy-public.d.ts.map +1 -1
- package/dist/utils/copy-public.js +23 -27
- package/dist/utils/copy-public.js.map +1 -1
- package/dist/utils/copy-src.d.ts.map +1 -1
- package/dist/utils/copy-src.js +7 -7
- package/dist/utils/copy-src.js.map +1 -1
- package/dist/utils/esbuild-config.d.ts.map +1 -1
- package/dist/utils/esbuild-config.js +36 -42
- package/dist/utils/esbuild-config.js.map +1 -1
- package/dist/utils/replace-deps.js +7 -7
- package/dist/utils/replace-deps.js.map +1 -1
- package/dist/utils/sd-config.js +2 -2
- package/dist/utils/sd-config.js.map +1 -1
- package/dist/utils/template.js +7 -7
- package/dist/utils/template.js.map +1 -1
- package/dist/utils/tsconfig.d.ts +1 -2
- package/dist/utils/tsconfig.d.ts.map +1 -1
- package/dist/utils/tsconfig.js +5 -8
- package/dist/utils/tsconfig.js.map +1 -1
- package/dist/utils/typecheck-serialization.js +2 -2
- package/dist/utils/typecheck-serialization.js.map +1 -1
- package/dist/utils/vite-config.d.ts +2 -0
- package/dist/utils/vite-config.d.ts.map +1 -1
- package/dist/utils/vite-config.js +36 -3
- package/dist/utils/vite-config.js.map +1 -1
- package/dist/utils/worker-events.d.ts +11 -1
- package/dist/utils/worker-events.d.ts.map +1 -1
- package/dist/utils/worker-events.js +3 -5
- package/dist/utils/worker-events.js.map +1 -1
- package/dist/utils/worker-utils.d.ts +2 -2
- package/dist/utils/worker-utils.d.ts.map +1 -1
- package/dist/utils/worker-utils.js +1 -1
- package/dist/utils/worker-utils.js.map +1 -1
- package/dist/workers/client.worker.d.ts +1 -1
- package/dist/workers/client.worker.js +3 -3
- package/dist/workers/client.worker.js.map +1 -1
- package/dist/workers/dts.worker.d.ts +1 -1
- package/dist/workers/dts.worker.d.ts.map +1 -1
- package/dist/workers/dts.worker.js +13 -28
- package/dist/workers/dts.worker.js.map +1 -1
- package/dist/workers/library.worker.d.ts +1 -1
- package/dist/workers/library.worker.js +4 -4
- package/dist/workers/library.worker.js.map +1 -1
- package/dist/workers/lint.worker.d.ts +1 -1
- package/dist/workers/server-runtime.worker.d.ts +1 -1
- package/dist/workers/server-runtime.worker.js +4 -4
- package/dist/workers/server-runtime.worker.js.map +1 -1
- package/dist/workers/server.worker.d.ts +1 -1
- package/dist/workers/server.worker.js +6 -6
- package/dist/workers/server.worker.js.map +1 -1
- package/package.json +4 -5
- package/src/builders/DtsBuilder.ts +2 -2
- package/src/builders/LibraryBuilder.ts +7 -10
- package/src/builders/types.ts +6 -1
- package/src/capacitor/capacitor.ts +61 -60
- package/src/commands/check.ts +4 -4
- package/src/commands/device.ts +3 -3
- package/src/commands/lint.ts +6 -117
- package/src/commands/publish.ts +20 -20
- package/src/commands/replace-deps.ts +1 -1
- package/src/commands/typecheck.ts +9 -9
- package/src/electron/electron.ts +16 -16
- package/src/orchestrators/BuildOrchestrator.ts +6 -6
- package/src/orchestrators/DevOrchestrator.ts +210 -256
- package/src/orchestrators/WatchOrchestrator.ts +8 -10
- package/src/sd-cli.ts +1 -1
- package/src/sd-config.types.ts +10 -3
- package/src/utils/copy-public.ts +22 -26
- package/src/utils/copy-src.ts +7 -7
- package/src/utils/esbuild-config.ts +51 -63
- package/src/utils/replace-deps.ts +7 -7
- package/src/utils/sd-config.ts +2 -2
- package/src/utils/template.ts +7 -7
- package/src/utils/tsconfig.ts +6 -10
- package/src/utils/typecheck-serialization.ts +2 -2
- package/src/utils/vite-config.ts +376 -341
- package/src/utils/worker-events.ts +13 -10
- package/src/utils/worker-utils.ts +45 -45
- package/src/workers/client.worker.ts +3 -3
- package/src/workers/dts.worker.ts +451 -467
- package/src/workers/library.worker.ts +4 -4
- package/src/workers/server-runtime.worker.ts +4 -4
- package/src/workers/server.worker.ts +572 -572
- package/templates/init/package.json.hbs +2 -3
- package/templates/init/packages/client-admin/package.json.hbs +5 -5
- package/templates/init/packages/client-admin/src/views/auth/LoginView.tsx +2 -2
- package/templates/init/packages/client-admin/src/views/home/base/employee/EmployeeDetail.tsx.hbs +86 -105
- package/templates/init/packages/client-admin/src/views/home/base/employee/EmployeeSheet.tsx.hbs +1 -1
- package/templates/init/packages/client-admin/src/views/home/base/role-permission/RoleDetail.tsx.hbs +4 -12
- package/templates/init/packages/client-admin/src/views/home/base/role-permission/RolePermissionDetail.tsx.hbs +0 -2
- package/templates/init/packages/client-admin/src/views/home/base/role-permission/RolePermissionView.tsx +1 -1
- package/templates/init/packages/client-admin/src/views/home/base/role-permission/RoleSheet.tsx.hbs +1 -1
- package/templates/init/packages/client-admin/src/views/home/my-info/MyInfoDetail.tsx.hbs +36 -43
- package/templates/init/packages/db-main/package.json.hbs +2 -2
- package/templates/init/packages/server/package.json.hbs +4 -4
- package/templates/init/tests/e2e/package.json.hbs +1 -1
- package/tests/get-compiler-options-for-package.spec.ts +13 -72
- package/tests/get-package-source-files.spec.ts +0 -42
- package/tests/get-types-from-package-json.spec.ts +15 -30
- package/tests/infra/ResultCollector.spec.ts +0 -9
- package/tests/infra/WorkerManager.spec.ts +0 -34
- package/tests/load-ignore-patterns.spec.ts +15 -40
- package/tests/load-sd-config.spec.ts +16 -53
- package/tests/publish-config-narrowing.spec.ts +20 -0
- package/tests/run-lint.spec.ts +38 -87
- package/tests/run-typecheck.spec.ts +194 -303
- package/tests/run-watch.spec.ts +0 -34
- package/tests/sd-cli.spec.ts +0 -88
- package/tests/sd-public-dev-plugin-mime.spec.ts +19 -0
- package/dist/builders/index.d.ts +0 -5
- package/dist/builders/index.d.ts.map +0 -1
- package/dist/builders/index.js +0 -5
- package/dist/builders/index.js.map +0 -6
- package/dist/infra/index.d.ts +0 -4
- package/dist/infra/index.d.ts.map +0 -1
- package/dist/infra/index.js +0 -4
- package/dist/infra/index.js.map +0 -6
- package/dist/orchestrators/index.d.ts +0 -4
- package/dist/orchestrators/index.d.ts.map +0 -1
- package/dist/orchestrators/index.js +0 -4
- package/dist/orchestrators/index.js.map +0 -6
- package/src/builders/index.ts +0 -4
- package/src/infra/index.ts +0 -3
- package/src/orchestrators/index.ts +0 -3
- package/templates/init/stylelint.config.ts +0 -1
|
@@ -17,12 +17,11 @@
|
|
|
17
17
|
"vitest": "vitest"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@simplysm/lint": "~13.0.
|
|
21
|
-
"@simplysm/sd-cli": "~13.0.
|
|
20
|
+
"@simplysm/lint": "~13.0.77",
|
|
21
|
+
"@simplysm/sd-cli": "~13.0.77",
|
|
22
22
|
"@types/node": "^20.19.35",
|
|
23
23
|
"eslint": "^9.39.3",
|
|
24
24
|
"prettier": "^3.8.1",
|
|
25
|
-
"stylelint": "^16.26.1",
|
|
26
25
|
"typescript": "^5.9.3",
|
|
27
26
|
"vite-tsconfig-paths": "^6.1.1",
|
|
28
27
|
"vitest": "^4.0.18"
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"private": true,
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@{{projectName}}/db-main": "workspace:*",
|
|
9
|
-
"@simplysm/core-browser": "~13.0.
|
|
10
|
-
"@simplysm/core-common": "~13.0.
|
|
9
|
+
"@simplysm/core-browser": "~13.0.77",
|
|
10
|
+
"@simplysm/core-common": "~13.0.77",
|
|
11
11
|
"@simplysm/excel": "^13.0.71",
|
|
12
|
-
"@simplysm/orm-common": "~13.0.
|
|
13
|
-
"@simplysm/service-client": "~13.0.
|
|
14
|
-
"@simplysm/solid": "~13.0.
|
|
12
|
+
"@simplysm/orm-common": "~13.0.77",
|
|
13
|
+
"@simplysm/service-client": "~13.0.77",
|
|
14
|
+
"@simplysm/solid": "~13.0.77",
|
|
15
15
|
"@solid-primitives/event-listener": "^2.4.5",
|
|
16
16
|
"@solidjs/router": "^0.15.4",
|
|
17
17
|
"@tabler/icons-solidjs": "^3.37.1",
|
|
@@ -81,7 +81,7 @@ export function LoginView() {
|
|
|
81
81
|
type="email"
|
|
82
82
|
placeholder="이메일을 입력하세요"
|
|
83
83
|
required
|
|
84
|
-
|
|
84
|
+
lazyValidation
|
|
85
85
|
size="lg"
|
|
86
86
|
autocomplete="employeename"
|
|
87
87
|
value={data.email}
|
|
@@ -95,7 +95,7 @@ export function LoginView() {
|
|
|
95
95
|
<FormGroup.Item>
|
|
96
96
|
<TextInput
|
|
97
97
|
required
|
|
98
|
-
|
|
98
|
+
lazyValidation
|
|
99
99
|
class="w-full"
|
|
100
100
|
type="password"
|
|
101
101
|
placeholder="비밀번호를 입력하세요"
|
package/templates/init/packages/client-admin/src/views/home/base/employee/EmployeeDetail.tsx.hbs
CHANGED
|
@@ -53,7 +53,6 @@ export function EmployeeDetail(props: { itemId?: number }) {
|
|
|
53
53
|
const emp = await db
|
|
54
54
|
.employee()
|
|
55
55
|
.joinLastDataLog()
|
|
56
|
-
// eslint-disable-next-line solid/reactivity -- 비동기 콜백 내부
|
|
57
56
|
.where((c) => [expr.eq(c.id, props.itemId)])
|
|
58
57
|
.select((c) => ({
|
|
59
58
|
name: c.name,
|
|
@@ -124,64 +123,56 @@ export function EmployeeDetail(props: { itemId?: number }) {
|
|
|
124
123
|
<section class={"flex flex-col gap-2"}>
|
|
125
124
|
<h3 class="font-bold text-base-400">직원정보</h3>
|
|
126
125
|
<FormTable>
|
|
127
|
-
<
|
|
128
|
-
<
|
|
129
|
-
<
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
<DatePicker
|
|
178
|
-
disabled={!perms().edit}
|
|
179
|
-
value={ctx.data.leavingDate}
|
|
180
|
-
onValueChange={(v) => ctx.setData("leavingDate", v)}
|
|
181
|
-
/>
|
|
182
|
-
</td>
|
|
183
|
-
</tr>
|
|
184
|
-
</tbody>
|
|
126
|
+
<FormTable.Row>
|
|
127
|
+
<FormTable.Item label="이름">
|
|
128
|
+
<TextInput
|
|
129
|
+
required
|
|
130
|
+
disabled={!perms().edit}
|
|
131
|
+
value={ctx.data.name ?? ""}
|
|
132
|
+
onValueChange={(v) => ctx.setData("name", v)}
|
|
133
|
+
/>
|
|
134
|
+
</FormTable.Item>
|
|
135
|
+
<FormTable.Item label="이메일">
|
|
136
|
+
<TextInput
|
|
137
|
+
type="email"
|
|
138
|
+
disabled={!perms().edit}
|
|
139
|
+
value={ctx.data.email ?? ""}
|
|
140
|
+
onValueChange={(v) => ctx.setData("email", v)}
|
|
141
|
+
/>
|
|
142
|
+
</FormTable.Item>
|
|
143
|
+
</FormTable.Row>
|
|
144
|
+
<FormTable.Row>
|
|
145
|
+
<FormTable.Item label="전화번호">
|
|
146
|
+
<TextInput
|
|
147
|
+
disabled={!perms().edit}
|
|
148
|
+
value={ctx.data.phoneNumber ?? ""}
|
|
149
|
+
onValueChange={(v) => ctx.setData("phoneNumber", v)}
|
|
150
|
+
/>
|
|
151
|
+
</FormTable.Item>
|
|
152
|
+
<FormTable.Item label="생년월일">
|
|
153
|
+
<DatePicker
|
|
154
|
+
disabled={!perms().edit}
|
|
155
|
+
value={ctx.data.birthDate}
|
|
156
|
+
onValueChange={(v) => ctx.setData("birthDate", v)}
|
|
157
|
+
/>
|
|
158
|
+
</FormTable.Item>
|
|
159
|
+
</FormTable.Row>
|
|
160
|
+
<FormTable.Row>
|
|
161
|
+
<FormTable.Item label="입사일자">
|
|
162
|
+
<DatePicker
|
|
163
|
+
disabled={!perms().edit}
|
|
164
|
+
value={ctx.data.enteringDate}
|
|
165
|
+
onValueChange={(v) => ctx.setData("enteringDate", v)}
|
|
166
|
+
/>
|
|
167
|
+
</FormTable.Item>
|
|
168
|
+
<FormTable.Item label="퇴사일자">
|
|
169
|
+
<DatePicker
|
|
170
|
+
disabled={!perms().edit}
|
|
171
|
+
value={ctx.data.leavingDate}
|
|
172
|
+
onValueChange={(v) => ctx.setData("leavingDate", v)}
|
|
173
|
+
/>
|
|
174
|
+
</FormTable.Item>
|
|
175
|
+
</FormTable.Row>
|
|
185
176
|
</FormTable>
|
|
186
177
|
</section>
|
|
187
178
|
|
|
@@ -189,19 +180,16 @@ export function EmployeeDetail(props: { itemId?: number }) {
|
|
|
189
180
|
<section class={"flex flex-col gap-2"}>
|
|
190
181
|
<h3 class="font-bold text-base-400">인증정보</h3>
|
|
191
182
|
<FormTable>
|
|
192
|
-
<
|
|
193
|
-
<
|
|
194
|
-
<
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
</td>
|
|
203
|
-
</tr>
|
|
204
|
-
</tbody>
|
|
183
|
+
<FormTable.Row>
|
|
184
|
+
<FormTable.Item label="비밀번호" colspan={3}>
|
|
185
|
+
<TextInput
|
|
186
|
+
type="password"
|
|
187
|
+
disabled={!perms().authEdit}
|
|
188
|
+
value={ctx.data.password ?? ""}
|
|
189
|
+
onValueChange={(v) => ctx.setData("password", v)}
|
|
190
|
+
/>
|
|
191
|
+
</FormTable.Item>
|
|
192
|
+
</FormTable.Row>
|
|
205
193
|
</FormTable>
|
|
206
194
|
</section>
|
|
207
195
|
</Show>
|
|
@@ -210,19 +198,16 @@ export function EmployeeDetail(props: { itemId?: number }) {
|
|
|
210
198
|
<section class={"flex flex-col gap-2"}>
|
|
211
199
|
<h3 class="font-bold text-base-400">개인정보</h3>
|
|
212
200
|
<FormTable>
|
|
213
|
-
<
|
|
214
|
-
<
|
|
215
|
-
<
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
</td>
|
|
224
|
-
</tr>
|
|
225
|
-
</tbody>
|
|
201
|
+
<FormTable.Row>
|
|
202
|
+
<FormTable.Item label="주민번호" colspan={3}>
|
|
203
|
+
<TextInput
|
|
204
|
+
format="XXXXXX-XXXXXXX"
|
|
205
|
+
disabled={!perms().personalEdit}
|
|
206
|
+
value={ctx.data.socialSecurityNumber ?? ""}
|
|
207
|
+
onValueChange={(v) => ctx.setData("socialSecurityNumber", v)}
|
|
208
|
+
/>
|
|
209
|
+
</FormTable.Item>
|
|
210
|
+
</FormTable.Row>
|
|
226
211
|
</FormTable>
|
|
227
212
|
</section>
|
|
228
213
|
</Show>
|
|
@@ -231,26 +216,22 @@ export function EmployeeDetail(props: { itemId?: number }) {
|
|
|
231
216
|
<section class={"flex flex-col gap-2"}>
|
|
232
217
|
<h3 class="font-bold text-base-400">급여정보</h3>
|
|
233
218
|
<FormTable>
|
|
234
|
-
<
|
|
235
|
-
<
|
|
236
|
-
<
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
/>
|
|
251
|
-
</td>
|
|
252
|
-
</tr>
|
|
253
|
-
</tbody>
|
|
219
|
+
<FormTable.Row>
|
|
220
|
+
<FormTable.Item label="계좌은행">
|
|
221
|
+
<TextInput
|
|
222
|
+
disabled={!perms().payrollEdit}
|
|
223
|
+
value={ctx.data.payrollAccountBank ?? ""}
|
|
224
|
+
onValueChange={(v) => ctx.setData("payrollAccountBank", v)}
|
|
225
|
+
/>
|
|
226
|
+
</FormTable.Item>
|
|
227
|
+
<FormTable.Item label="계좌번호">
|
|
228
|
+
<TextInput
|
|
229
|
+
disabled={!perms().payrollEdit}
|
|
230
|
+
value={ctx.data.payrollAccountNumber ?? ""}
|
|
231
|
+
onValueChange={(v) => ctx.setData("payrollAccountNumber", v)}
|
|
232
|
+
/>
|
|
233
|
+
</FormTable.Item>
|
|
234
|
+
</FormTable.Row>
|
|
254
235
|
</FormTable>
|
|
255
236
|
</section>
|
|
256
237
|
</Show>
|
package/templates/init/packages/client-admin/src/views/home/base/employee/EmployeeSheet.tsx.hbs
CHANGED
|
@@ -164,7 +164,7 @@ export function EmployeeSheet() {
|
|
|
164
164
|
<CrudSheet<SheetItem, Filter>
|
|
165
165
|
search={search}
|
|
166
166
|
getItemKey={(item) => item.id}
|
|
167
|
-
|
|
167
|
+
isItemDeleted={(item) => item.isDeleted}
|
|
168
168
|
isItemSelectable={(item) => item.id != null}
|
|
169
169
|
persistKey="employee-page"
|
|
170
170
|
editable={employeePerms.edit}
|
package/templates/init/packages/client-admin/src/views/home/base/role-permission/RoleDetail.tsx.hbs
CHANGED
|
@@ -33,7 +33,6 @@ export function RoleDetail(props: { itemId?: number }) {
|
|
|
33
33
|
return appService.orm.connectWithoutTransaction(async (db) => {
|
|
34
34
|
const role = await db
|
|
35
35
|
.role()
|
|
36
|
-
// eslint-disable-next-line solid/reactivity -- 비동기 콜백 내부
|
|
37
36
|
.where((c) => [expr.eq(c.id, props.itemId)])
|
|
38
37
|
.select((c) => ({
|
|
39
38
|
name: c.name,
|
|
@@ -61,7 +60,6 @@ export function RoleDetail(props: { itemId?: number }) {
|
|
|
61
60
|
await appService.orm.connect(async (db) => {
|
|
62
61
|
const count = await db
|
|
63
62
|
.role()
|
|
64
|
-
// eslint-disable-next-line solid/reactivity -- 비동기 콜백 내부
|
|
65
63
|
.where((c) => [
|
|
66
64
|
expr.eq(c.name, data.name ?? ""),
|
|
67
65
|
|
|
@@ -78,7 +76,6 @@ export function RoleDetail(props: { itemId?: number }) {
|
|
|
78
76
|
});
|
|
79
77
|
|
|
80
78
|
// 저장
|
|
81
|
-
// eslint-disable-next-line solid/reactivity -- 비동기 콜백 내부
|
|
82
79
|
const savedId = await appService.orm.connect(async (db) => {
|
|
83
80
|
if (props.itemId == null) {
|
|
84
81
|
const [inserted] = await db.role().insert(
|
|
@@ -95,7 +92,6 @@ export function RoleDetail(props: { itemId?: number }) {
|
|
|
95
92
|
} else {
|
|
96
93
|
await db
|
|
97
94
|
.role()
|
|
98
|
-
// eslint-disable-next-line solid/reactivity -- 비동기 콜백 내부
|
|
99
95
|
.where((_c) => [expr.eq(_c.id, props.itemId)])
|
|
100
96
|
.update((_c) => ({
|
|
101
97
|
name: data.name ?? "",
|
|
@@ -112,7 +108,6 @@ export function RoleDetail(props: { itemId?: number }) {
|
|
|
112
108
|
await appService.orm.connect(async (db) => {
|
|
113
109
|
await db
|
|
114
110
|
.role()
|
|
115
|
-
// eslint-disable-next-line solid/reactivity -- 비동기 콜백 내부
|
|
116
111
|
.where((_c) => [expr.eq(_c.id, props.itemId!)])
|
|
117
112
|
.update((_c) => ({
|
|
118
113
|
isDeleted: del,
|
|
@@ -133,19 +128,16 @@ export function RoleDetail(props: { itemId?: number }) {
|
|
|
133
128
|
{(ctx) => (
|
|
134
129
|
<div class="p-2">
|
|
135
130
|
<FormTable>
|
|
136
|
-
<
|
|
137
|
-
|
|
138
|
-
<th>이름</th>
|
|
139
|
-
<td>
|
|
131
|
+
<FormTable.Row>
|
|
132
|
+
<FormTable.Item label="이름">
|
|
140
133
|
<TextInput
|
|
141
134
|
required
|
|
142
135
|
disabled={!perms().edit}
|
|
143
136
|
value={ctx.data.name ?? ""}
|
|
144
137
|
onValueChange={(v) => ctx.setData("name", v)}
|
|
145
138
|
/>
|
|
146
|
-
</
|
|
147
|
-
</
|
|
148
|
-
</tbody>
|
|
139
|
+
</FormTable.Item>
|
|
140
|
+
</FormTable.Row>
|
|
149
141
|
</FormTable>
|
|
150
142
|
</div>
|
|
151
143
|
)}
|
|
@@ -57,11 +57,9 @@ export function RolePermissionDetail(props: { roleId: number }) {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
async function handleSubmit(data: Record<string, boolean>) {
|
|
60
|
-
// eslint-disable-next-line solid/reactivity -- 비동기 콜백 내부
|
|
61
60
|
await appService.orm.connect(async (db) => {
|
|
62
61
|
await db
|
|
63
62
|
.rolePermission()
|
|
64
|
-
// eslint-disable-next-line solid/reactivity -- 비동기 콜백 내부
|
|
65
63
|
.where((c) => [expr.eq(c.roleId, props.roleId)])
|
|
66
64
|
.delete();
|
|
67
65
|
|
|
@@ -24,7 +24,7 @@ export function RolePermissionView() {
|
|
|
24
24
|
variant={"ghost"}
|
|
25
25
|
theme={"primary"}
|
|
26
26
|
size={"xs"}
|
|
27
|
-
onClick={() => dialog.show(() => <RoleSheet />, { header: "권한그룹",
|
|
27
|
+
onClick={() => dialog.show(() => <RoleSheet />, { header: "권한그룹", closeOnInteractOutside: true })}
|
|
28
28
|
>
|
|
29
29
|
<Icon icon={IconExternalLink} />
|
|
30
30
|
</Button>
|
package/templates/init/packages/client-admin/src/views/home/base/role-permission/RoleSheet.tsx.hbs
CHANGED
|
@@ -85,7 +85,7 @@ export function RoleSheet() {
|
|
|
85
85
|
<CrudSheet<SheetItem, Filter>
|
|
86
86
|
search={search}
|
|
87
87
|
getItemKey={(item) => item.id}
|
|
88
|
-
|
|
88
|
+
isItemDeleted={(item) => item.isDeleted}
|
|
89
89
|
isItemSelectable={(item) => item.id != null}
|
|
90
90
|
persistKey="role-sheet-page"
|
|
91
91
|
editable={rolePerms.edit}
|
|
@@ -148,9 +148,8 @@ export function MyInfoDetail() {
|
|
|
148
148
|
<section>
|
|
149
149
|
<h3 class="mb-4 border-l-4 border-base-500 pl-3 font-bold text-base-500">인증정보</h3>
|
|
150
150
|
<FormTable>
|
|
151
|
-
<
|
|
152
|
-
<
|
|
153
|
-
<td>
|
|
151
|
+
<FormTable.Row>
|
|
152
|
+
<FormTable.Item label="이메일">
|
|
154
153
|
<TextInput
|
|
155
154
|
type="email"
|
|
156
155
|
required
|
|
@@ -158,11 +157,10 @@ export function MyInfoDetail() {
|
|
|
158
157
|
onValueChange={(v) => ctx.setData("email", v)}
|
|
159
158
|
autocomplete="off"
|
|
160
159
|
/>
|
|
161
|
-
</
|
|
162
|
-
</
|
|
163
|
-
<
|
|
164
|
-
<
|
|
165
|
-
<td>
|
|
160
|
+
</FormTable.Item>
|
|
161
|
+
</FormTable.Row>
|
|
162
|
+
<FormTable.Row>
|
|
163
|
+
<FormTable.Item label="현재 비밀번호">
|
|
166
164
|
<TextInput
|
|
167
165
|
required={Boolean(ctx.data.newPassword || ctx.data.confirmPassword)}
|
|
168
166
|
class="w-56"
|
|
@@ -172,11 +170,10 @@ export function MyInfoDetail() {
|
|
|
172
170
|
onValueChange={(v) => ctx.setData("currentPassword", v)}
|
|
173
171
|
placeholder="비밀번호 변경 시에만 입력"
|
|
174
172
|
/>
|
|
175
|
-
</
|
|
176
|
-
</
|
|
177
|
-
<
|
|
178
|
-
<
|
|
179
|
-
<td>
|
|
173
|
+
</FormTable.Item>
|
|
174
|
+
</FormTable.Row>
|
|
175
|
+
<FormTable.Row>
|
|
176
|
+
<FormTable.Item label="새 비밀번호">
|
|
180
177
|
<TextInput
|
|
181
178
|
required={Boolean(ctx.data.currentPassword || ctx.data.confirmPassword)}
|
|
182
179
|
minLength={8}
|
|
@@ -187,11 +184,10 @@ export function MyInfoDetail() {
|
|
|
187
184
|
onValueChange={(v) => ctx.setData("newPassword", v)}
|
|
188
185
|
placeholder="비밀번호 변경 시에만 입력"
|
|
189
186
|
/>
|
|
190
|
-
</
|
|
191
|
-
</
|
|
192
|
-
<
|
|
193
|
-
<
|
|
194
|
-
<td>
|
|
187
|
+
</FormTable.Item>
|
|
188
|
+
</FormTable.Row>
|
|
189
|
+
<FormTable.Row>
|
|
190
|
+
<FormTable.Item label="새 비밀번호 확인">
|
|
195
191
|
<TextInput
|
|
196
192
|
required={Boolean(ctx.data.currentPassword || ctx.data.newPassword)}
|
|
197
193
|
minLength={8}
|
|
@@ -207,38 +203,35 @@ export function MyInfoDetail() {
|
|
|
207
203
|
onValueChange={(v) => ctx.setData("confirmPassword", v)}
|
|
208
204
|
placeholder="비밀번호 변경 시에만 입력"
|
|
209
205
|
/>
|
|
210
|
-
</
|
|
211
|
-
</
|
|
206
|
+
</FormTable.Item>
|
|
207
|
+
</FormTable.Row>
|
|
212
208
|
</FormTable>
|
|
213
209
|
</section>
|
|
214
210
|
|
|
215
211
|
<section>
|
|
216
212
|
<h3 class="mb-4 border-l-4 border-base-500 pl-3 font-bold text-base-500">시스템설정</h3>
|
|
217
213
|
<FormTable>
|
|
218
|
-
<
|
|
219
|
-
<
|
|
220
|
-
<
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
214
|
+
<FormTable.Row>
|
|
215
|
+
<FormTable.Item label="로그인 시 화면">
|
|
216
|
+
<Select
|
|
217
|
+
class="w-full"
|
|
218
|
+
value={ctx.data.firstRouterLink}
|
|
219
|
+
onValueChange={(v) => ctx.setData("firstRouterLink", v)}
|
|
220
|
+
items={routeOptions()}
|
|
221
|
+
renderValue={(v) => <>{routeMap().get(v) ?? v}</>}
|
|
222
|
+
placeholder="선택 안함"
|
|
223
|
+
>
|
|
224
|
+
<Select.ItemTemplate>
|
|
225
|
+
{(href: string) => <>{routeMap().get(href) ?? href}</>}
|
|
226
|
+
</Select.ItemTemplate>
|
|
227
|
+
<Select.Action
|
|
228
|
+
onClick={() => ctx.setData("firstRouterLink", undefined as any)}
|
|
229
229
|
>
|
|
230
|
-
<
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
>
|
|
236
|
-
<Icon icon={IconX} class={"text-danger-500"} />
|
|
237
|
-
</Select.Action>
|
|
238
|
-
</Select>
|
|
239
|
-
</td>
|
|
240
|
-
</tr>
|
|
241
|
-
</tbody>
|
|
230
|
+
<Icon icon={IconX} class={"text-danger-500"} />
|
|
231
|
+
</Select.Action>
|
|
232
|
+
</Select>
|
|
233
|
+
</FormTable.Item>
|
|
234
|
+
</FormTable.Row>
|
|
242
235
|
</FormTable>
|
|
243
236
|
</section>
|
|
244
237
|
</div>
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
"private": true,
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@{{projectName}}/db-main": "workspace:*",
|
|
8
|
-
"@simplysm/core-common": "~13.0.
|
|
8
|
+
"@simplysm/core-common": "~13.0.77",
|
|
9
9
|
"@simplysm/excel": "^13.0.71",
|
|
10
|
-
"@simplysm/orm-common": "~13.0.
|
|
11
|
-
"@simplysm/orm-node": "~13.0.
|
|
12
|
-
"@simplysm/service-server": "~13.0.
|
|
10
|
+
"@simplysm/orm-common": "~13.0.77",
|
|
11
|
+
"@simplysm/orm-node": "~13.0.77",
|
|
12
|
+
"@simplysm/service-server": "~13.0.77",
|
|
13
13
|
"bcrypt": "^6.0.0",
|
|
14
14
|
"pg": "^8.19.0",
|
|
15
15
|
"pg-copy-streams": "^7.0.0"
|