@akanjs/ui 1.0.7 → 1.0.8

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.
@@ -17,10 +17,11 @@ interface Cursor {
17
17
  interface ItemProps {
18
18
  value: any;
19
19
  children: ReactNode;
20
+ removable?: boolean;
20
21
  }
21
22
  export declare const DraggableList: {
22
23
  <V>({ className, mode, children, onChange, onRemove }: DragListProps<V>): import("react/jsx-runtime").JSX.Element;
23
24
  Cursor({ className, children }: Cursor): import("react/jsx-runtime").JSX.Element;
24
- Item: ({ value, children }: ItemProps) => import("react/jsx-runtime").JSX.Element;
25
+ Item: ({ value, children, removable }: ItemProps) => import("react/jsx-runtime").JSX.Element;
25
26
  };
26
27
  export {};
@@ -11,6 +11,8 @@ interface DefaultProps {
11
11
  children?: ReactNode;
12
12
  onSubmit?: string;
13
13
  onCancel?: string;
14
+ submitText?: string;
15
+ submitClassName?: string;
14
16
  submitOption?: CreateOption<any>;
15
17
  renderSubmit?: boolean;
16
18
  }
@@ -21,5 +23,5 @@ export interface EditProps<T extends string, Full extends {
21
23
  }
22
24
  export default function Edit_Client<T extends string, Full extends {
23
25
  id: string;
24
- }>({ className, checkSubmit, modalClassName, type, edit, modal, sliceName, children, onSubmit, onCancel, submitOption, renderSubmit, }: EditProps<T, Full>): import("react/jsx-runtime").JSX.Element;
26
+ }>({ className, checkSubmit, modalClassName, type, edit, modal, sliceName, children, onSubmit, onCancel, submitText, submitClassName, submitOption, renderSubmit, }: EditProps<T, Full>): import("react/jsx-runtime").JSX.Element;
25
27
  export {};
@@ -22,6 +22,8 @@ interface EditModalProps<Full extends {
22
22
  checkSubmit?: boolean;
23
23
  modalClassName?: string;
24
24
  renderTitle?: ((model: Full) => string | ReactNode) | string;
25
+ submitText?: string;
26
+ submitClassName?: string;
25
27
  submitOption?: CreateOption<Full>;
26
28
  renderSubmit?: boolean | ((any: any) => ReactNode);
27
29
  onSubmit?: string | ((model: Full) => void);
@@ -29,5 +31,5 @@ interface EditModalProps<Full extends {
29
31
  }
30
32
  export default function EditModal<Full extends {
31
33
  id: string;
32
- }>({ type, sliceName, id, className, disabled, checkSubmit, modalClassName, edit, modal, renderTitle, children, submitOption, renderSubmit, loadingWrapper, onSubmit, onCancel, }: EditModalProps<Full>): import("react/jsx-runtime").JSX.Element | undefined;
34
+ }>({ type, sliceName, id, className, disabled, checkSubmit, modalClassName, edit, modal, renderTitle, children, submitText, submitClassName, submitOption, renderSubmit, loadingWrapper, onSubmit, onCancel, }: EditModalProps<Full>): import("react/jsx-runtime").JSX.Element | undefined;
33
35
  export {};
@@ -5,7 +5,8 @@ interface EditWrapperProps {
5
5
  sliceName: string;
6
6
  modelId: string;
7
7
  modal?: string | null;
8
+ disabled?: boolean;
8
9
  resets?: string[] | null;
9
10
  }
10
- export default function EditWrapper({ children, sliceName, modelId, className, modal, resets }: EditWrapperProps): import("react/jsx-runtime").JSX.Element;
11
+ export default function EditWrapper({ children, sliceName, modelId, className, modal, disabled, resets, }: EditWrapperProps): import("react/jsx-runtime").JSX.Element;
11
12
  export {};
package/cjs/Copy.js CHANGED
@@ -22,15 +22,17 @@ __export(Copy_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(Copy_exports);
24
24
  var import_jsx_runtime = require("react/jsx-runtime");
25
+ var import_client = require("@akanjs/client");
25
26
  var import_store = require("@akanjs/store");
26
27
  var import_react_copy_to_clipboard = require("react-copy-to-clipboard");
27
28
  const Copy = ({ text, copyMessage, children }) => {
29
+ const { l } = (0, import_client.usePage)();
28
30
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
29
31
  import_react_copy_to_clipboard.CopyToClipboard,
30
32
  {
31
33
  text: text ?? "",
32
34
  onCopy: () => {
33
- import_store.st.do.showMessage({ content: copyMessage ?? "Copied", type: "success" });
35
+ import_store.st.do.showMessage({ content: copyMessage ?? l.trans({ en: "Copied", ko: "\uBCF5\uC0AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4" }), type: "success" });
34
36
  },
35
37
  children
36
38
  }
@@ -133,12 +133,12 @@ DragList.Cursor = ({ className, children }) => {
133
133
  }
134
134
  );
135
135
  };
136
- const Item = ({ value, children }) => {
136
+ const Item = ({ value, children, removable = false }) => {
137
137
  const { onRemove } = useDragList();
138
138
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex w-full items-center gap-2", children: [
139
139
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DraggableList.Cursor, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_md.MdDragIndicator, { className: "text-xl" }) }),
140
140
  children,
141
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
141
+ removable && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
142
142
  "button",
143
143
  {
144
144
  className: "btn btn-xs btn-error btn-square btn-outline",
@@ -37,6 +37,8 @@ function Render({
37
37
  children,
38
38
  onSubmit,
39
39
  onCancel,
40
+ submitText,
41
+ submitClassName,
40
42
  submitOption,
41
43
  renderSubmit
42
44
  }) {
@@ -55,6 +57,8 @@ function Render({
55
57
  modal,
56
58
  onSubmit,
57
59
  onCancel,
60
+ submitText,
61
+ submitClassName,
58
62
  submitOption,
59
63
  renderSubmit,
60
64
  children
@@ -72,6 +76,8 @@ function Edit_Client({
72
76
  children,
73
77
  onSubmit,
74
78
  onCancel,
79
+ submitText,
80
+ submitClassName,
75
81
  submitOption,
76
82
  renderSubmit
77
83
  }) {
@@ -86,6 +92,8 @@ function Edit_Client({
86
92
  children,
87
93
  onSubmit,
88
94
  onCancel,
95
+ submitText,
96
+ submitClassName,
89
97
  submitOption,
90
98
  renderSubmit
91
99
  };
@@ -89,6 +89,8 @@ function EditModal({
89
89
  modal,
90
90
  renderTitle,
91
91
  children,
92
+ submitText,
93
+ submitClassName,
92
94
  submitOption,
93
95
  renderSubmit,
94
96
  loadingWrapper,
@@ -183,19 +185,19 @@ function EditModal({
183
185
  if (typeof onSubmit === "function")
184
186
  onSubmit(model);
185
187
  void submitOption?.onSuccess?.(model);
188
+ if (onSubmit === "back")
189
+ import_client.router.back();
190
+ else if (onSubmit === "reset")
191
+ void storeDo[names.resetModel]();
192
+ else if (typeof onSubmit === "string")
193
+ import_client.router.replace(onSubmit.replace(new RegExp(`\\[${names.model}Id\\]`, "g"), model.id));
186
194
  }
187
195
  });
188
- if (onSubmit === "back")
189
- import_client.router.back();
190
- else if (onSubmit === "reset")
191
- void storeDo[names.resetModel]();
192
- else if (typeof onSubmit === "string")
193
- import_client.router.replace(onSubmit);
194
196
  }, []);
195
197
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
196
198
  import_Button.Button,
197
199
  {
198
- className: "btn btn-primary w-full gap-2 rounded-2xl",
200
+ className: (0, import_client.clsx)("btn btn-primary mt-4 w-full gap-2 rounded-2xl", submitClassName),
199
201
  disabled: modelSubmit.disabled || !!disabled,
200
202
  onClick: async (e, { onError }) => {
201
203
  await handleSubmit({ onError });
@@ -204,7 +206,7 @@ function EditModal({
204
206
  },
205
207
  children: [
206
208
  modelFormId ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ai.AiOutlineSave, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ai.AiOutlinePlus, {}),
207
- l(modelFormId ? "base.updateModel" : "base.createModel", {
209
+ submitText ?? l(modelFormId ? "base.updateModel" : "base.createModel", {
208
210
  model: l._(`${names.model}.modelName`)
209
211
  })
210
212
  ]
@@ -253,7 +255,7 @@ function EditModal({
253
255
  children: [
254
256
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Title, {}),
255
257
  children,
256
- type === "form" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-4", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Submit, {}) }) : null
258
+ type === "form" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Submit, {}) : null
257
259
  ]
258
260
  }
259
261
  );
@@ -25,7 +25,15 @@ var import_jsx_runtime = require("react/jsx-runtime");
25
25
  var import_client = require("@akanjs/client");
26
26
  var import_common = require("@akanjs/common");
27
27
  var import_store = require("@akanjs/store");
28
- function EditWrapper({ children, sliceName, modelId, className, modal, resets }) {
28
+ function EditWrapper({
29
+ children,
30
+ sliceName,
31
+ modelId,
32
+ className,
33
+ modal,
34
+ disabled,
35
+ resets
36
+ }) {
29
37
  const refName = import_store.st.slice[sliceName].refName;
30
38
  const modelName = refName;
31
39
  const names = {
@@ -37,6 +45,8 @@ function EditWrapper({ children, sliceName, modelId, className, modal, resets })
37
45
  {
38
46
  className: (0, import_client.clsx)("cursor-pointer", className),
39
47
  onClick: (e) => {
48
+ if (disabled)
49
+ return;
40
50
  e.stopPropagation();
41
51
  void storeDo[names.editModel](modelId, { modal });
42
52
  resets?.forEach((reset) => {
@@ -33,7 +33,7 @@ const ToggleSelect = ({
33
33
  disabled
34
34
  }) => {
35
35
  const { l } = (0, import_client.usePage)();
36
- const validateResult = value ? validate(value) : false;
36
+ const validateResult = value !== null ? validate(value) : false;
37
37
  const invalidMessage = value === null || typeof value === "string" && !value.length || validateResult === true ? null : validateResult === false ? l("base.invalidValueError") : validateResult;
38
38
  const options = items.map(
39
39
  (item) => typeof item === "string" || typeof item === "number" ? { label: item.toString(), value: item } : item
@@ -55,7 +55,7 @@ const ToggleSelect = ({
55
55
  disabled: isDisabled,
56
56
  className: (0, import_client.clsx)(
57
57
  "btn btn-sm",
58
- { "bg-success/70 text-success-content": isSelected, "cursor-not-allowed": isDisabled },
58
+ { "bg-success/70 text-success-content": isSelected, "btn-disabled cursor-not-allowed": isDisabled },
59
59
  // {
60
60
  // "btn-error": status === "error",
61
61
  // "btn-warning": status === "warning",
package/esm/Copy.js CHANGED
@@ -1,14 +1,16 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
+ import { usePage } from "@akanjs/client";
3
4
  import { st } from "@akanjs/store";
4
5
  import { CopyToClipboard } from "react-copy-to-clipboard";
5
6
  const Copy = ({ text, copyMessage, children }) => {
7
+ const { l } = usePage();
6
8
  return /* @__PURE__ */ jsx(
7
9
  CopyToClipboard,
8
10
  {
9
11
  text: text ?? "",
10
12
  onCopy: () => {
11
- st.do.showMessage({ content: copyMessage ?? "Copied", type: "success" });
13
+ st.do.showMessage({ content: copyMessage ?? l.trans({ en: "Copied", ko: "\uBCF5\uC0AC\uB418\uC5C8\uC2B5\uB2C8\uB2E4" }), type: "success" });
12
14
  },
13
15
  children
14
16
  }
@@ -101,12 +101,12 @@ DragList.Cursor = ({ className, children }) => {
101
101
  }
102
102
  );
103
103
  };
104
- const Item = ({ value, children }) => {
104
+ const Item = ({ value, children, removable = false }) => {
105
105
  const { onRemove } = useDragList();
106
106
  return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center gap-2", children: [
107
107
  /* @__PURE__ */ jsx(DraggableList.Cursor, { children: /* @__PURE__ */ jsx(MdDragIndicator, { className: "text-xl" }) }),
108
108
  children,
109
- /* @__PURE__ */ jsx(
109
+ removable && /* @__PURE__ */ jsx(
110
110
  "button",
111
111
  {
112
112
  className: "btn btn-xs btn-error btn-square btn-outline",
@@ -15,6 +15,8 @@ function Render({
15
15
  children,
16
16
  onSubmit,
17
17
  onCancel,
18
+ submitText,
19
+ submitClassName,
18
20
  submitOption,
19
21
  renderSubmit
20
22
  }) {
@@ -33,6 +35,8 @@ function Render({
33
35
  modal,
34
36
  onSubmit,
35
37
  onCancel,
38
+ submitText,
39
+ submitClassName,
36
40
  submitOption,
37
41
  renderSubmit,
38
42
  children
@@ -50,6 +54,8 @@ function Edit_Client({
50
54
  children,
51
55
  onSubmit,
52
56
  onCancel,
57
+ submitText,
58
+ submitClassName,
53
59
  submitOption,
54
60
  renderSubmit
55
61
  }) {
@@ -64,6 +70,8 @@ function Edit_Client({
64
70
  children,
65
71
  onSubmit,
66
72
  onCancel,
73
+ submitText,
74
+ submitClassName,
67
75
  submitOption,
68
76
  renderSubmit
69
77
  };
@@ -67,6 +67,8 @@ function EditModal({
67
67
  modal,
68
68
  renderTitle,
69
69
  children,
70
+ submitText,
71
+ submitClassName,
70
72
  submitOption,
71
73
  renderSubmit,
72
74
  loadingWrapper,
@@ -161,19 +163,19 @@ function EditModal({
161
163
  if (typeof onSubmit === "function")
162
164
  onSubmit(model);
163
165
  void submitOption?.onSuccess?.(model);
166
+ if (onSubmit === "back")
167
+ router.back();
168
+ else if (onSubmit === "reset")
169
+ void storeDo[names.resetModel]();
170
+ else if (typeof onSubmit === "string")
171
+ router.replace(onSubmit.replace(new RegExp(`\\[${names.model}Id\\]`, "g"), model.id));
164
172
  }
165
173
  });
166
- if (onSubmit === "back")
167
- router.back();
168
- else if (onSubmit === "reset")
169
- void storeDo[names.resetModel]();
170
- else if (typeof onSubmit === "string")
171
- router.replace(onSubmit);
172
174
  }, []);
173
175
  return /* @__PURE__ */ jsxs(
174
176
  Button,
175
177
  {
176
- className: "btn btn-primary w-full gap-2 rounded-2xl",
178
+ className: clsx("btn btn-primary mt-4 w-full gap-2 rounded-2xl", submitClassName),
177
179
  disabled: modelSubmit.disabled || !!disabled,
178
180
  onClick: async (e, { onError }) => {
179
181
  await handleSubmit({ onError });
@@ -182,7 +184,7 @@ function EditModal({
182
184
  },
183
185
  children: [
184
186
  modelFormId ? /* @__PURE__ */ jsx(AiOutlineSave, {}) : /* @__PURE__ */ jsx(AiOutlinePlus, {}),
185
- l(modelFormId ? "base.updateModel" : "base.createModel", {
187
+ submitText ?? l(modelFormId ? "base.updateModel" : "base.createModel", {
186
188
  model: l._(`${names.model}.modelName`)
187
189
  })
188
190
  ]
@@ -231,7 +233,7 @@ function EditModal({
231
233
  children: [
232
234
  /* @__PURE__ */ jsx(Title, {}),
233
235
  children,
234
- type === "form" ? /* @__PURE__ */ jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsx(Submit, {}) }) : null
236
+ type === "form" ? /* @__PURE__ */ jsx(Submit, {}) : null
235
237
  ]
236
238
  }
237
239
  );
@@ -3,7 +3,15 @@ import { jsx } from "react/jsx-runtime";
3
3
  import { clsx } from "@akanjs/client";
4
4
  import { capitalize } from "@akanjs/common";
5
5
  import { st } from "@akanjs/store";
6
- function EditWrapper({ children, sliceName, modelId, className, modal, resets }) {
6
+ function EditWrapper({
7
+ children,
8
+ sliceName,
9
+ modelId,
10
+ className,
11
+ modal,
12
+ disabled,
13
+ resets
14
+ }) {
7
15
  const refName = st.slice[sliceName].refName;
8
16
  const modelName = refName;
9
17
  const names = {
@@ -15,6 +23,8 @@ function EditWrapper({ children, sliceName, modelId, className, modal, resets })
15
23
  {
16
24
  className: clsx("cursor-pointer", className),
17
25
  onClick: (e) => {
26
+ if (disabled)
27
+ return;
18
28
  e.stopPropagation();
19
29
  void storeDo[names.editModel](modelId, { modal });
20
30
  resets?.forEach((reset) => {
@@ -11,7 +11,7 @@ const ToggleSelect = ({
11
11
  disabled
12
12
  }) => {
13
13
  const { l } = usePage();
14
- const validateResult = value ? validate(value) : false;
14
+ const validateResult = value !== null ? validate(value) : false;
15
15
  const invalidMessage = value === null || typeof value === "string" && !value.length || validateResult === true ? null : validateResult === false ? l("base.invalidValueError") : validateResult;
16
16
  const options = items.map(
17
17
  (item) => typeof item === "string" || typeof item === "number" ? { label: item.toString(), value: item } : item
@@ -33,7 +33,7 @@ const ToggleSelect = ({
33
33
  disabled: isDisabled,
34
34
  className: clsx(
35
35
  "btn btn-sm",
36
- { "bg-success/70 text-success-content": isSelected, "cursor-not-allowed": isDisabled },
36
+ { "bg-success/70 text-success-content": isSelected, "btn-disabled cursor-not-allowed": isDisabled },
37
37
  // {
38
38
  // "btn-error": status === "error",
39
39
  // "btn-warning": status === "warning",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akanjs/ui",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "sourceType": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"