@finema/core 3.22.0 → 3.23.2

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 (125) hide show
  1. package/dist/module.d.mts +2 -0
  2. package/dist/module.json +2 -2
  3. package/dist/module.mjs +16 -2
  4. package/dist/runtime/components/App.vue +1 -1
  5. package/dist/runtime/components/DevToolsWindow/index.vue +1 -1
  6. package/dist/runtime/components/Dialog/index.d.vue.ts +1 -4
  7. package/dist/runtime/components/Dialog/index.vue +9 -10
  8. package/dist/runtime/components/Dialog/index.vue.d.ts +1 -4
  9. package/dist/runtime/components/Empty.d.vue.ts +0 -1
  10. package/dist/runtime/components/Empty.vue +6 -2
  11. package/dist/runtime/components/Empty.vue.d.ts +0 -1
  12. package/dist/runtime/components/FlexDeck/index.vue +86 -81
  13. package/dist/runtime/components/Form/FieldWrapper.vue +14 -14
  14. package/dist/runtime/components/Form/Fields.vue +10 -10
  15. package/dist/runtime/components/Form/InputCheckbox/index.vue +20 -19
  16. package/dist/runtime/components/Form/InputCheckboxGroup/index.vue +2 -1
  17. package/dist/runtime/components/Form/InputComponent/index.vue +2 -1
  18. package/dist/runtime/components/Form/InputCurrency/index.vue +51 -50
  19. package/dist/runtime/components/Form/InputDateTime/date_time_field.types.d.ts +1 -1
  20. package/dist/runtime/components/Form/InputDateTime/index.vue +69 -64
  21. package/dist/runtime/components/Form/InputDateTimeRange/date_range_time_field.types.d.ts +1 -1
  22. package/dist/runtime/components/Form/InputDateTimeRange/index.vue +62 -57
  23. package/dist/runtime/components/Form/InputMonth/index.vue +10 -5
  24. package/dist/runtime/components/Form/InputMonth/types.d.ts +1 -1
  25. package/dist/runtime/components/Form/InputNumber/index.vue +22 -21
  26. package/dist/runtime/components/Form/InputRadio/index.d.vue.ts +1 -1
  27. package/dist/runtime/components/Form/InputRadio/index.vue +2 -1
  28. package/dist/runtime/components/Form/InputRadio/index.vue.d.ts +1 -1
  29. package/dist/runtime/components/Form/InputRating/index.vue +2 -1
  30. package/dist/runtime/components/Form/InputSearch/index.vue +7 -2
  31. package/dist/runtime/components/Form/InputSelect/index.vue +112 -111
  32. package/dist/runtime/components/Form/InputSelectMultiple/index.vue +120 -119
  33. package/dist/runtime/components/Form/InputTags/index.vue +56 -55
  34. package/dist/runtime/components/Form/InputText/index.vue +88 -87
  35. package/dist/runtime/components/Form/InputTextarea/index.vue +20 -19
  36. package/dist/runtime/components/Form/InputTime/index.vue +45 -40
  37. package/dist/runtime/components/Form/InputTime/types.d.ts +1 -1
  38. package/dist/runtime/components/Form/InputToggle/index.vue +19 -18
  39. package/dist/runtime/components/Form/InputUploadDropzone/index.d.vue.ts +1 -4
  40. package/dist/runtime/components/Form/InputUploadDropzone/index.vue +40 -35
  41. package/dist/runtime/components/Form/InputUploadDropzone/index.vue.d.ts +1 -4
  42. package/dist/runtime/components/Form/InputUploadDropzone/types.d.ts +2 -2
  43. package/dist/runtime/components/Form/InputUploadDropzoneAuto/index.d.vue.ts +0 -5
  44. package/dist/runtime/components/Form/InputUploadDropzoneAuto/index.vue +63 -58
  45. package/dist/runtime/components/Form/InputUploadDropzoneAuto/index.vue.d.ts +0 -5
  46. package/dist/runtime/components/Form/InputUploadDropzoneAuto/types.d.ts +3 -3
  47. package/dist/runtime/components/Form/InputUploadDropzoneAutoMultiple/index.d.vue.ts +0 -5
  48. package/dist/runtime/components/Form/InputUploadDropzoneAutoMultiple/index.vue +69 -60
  49. package/dist/runtime/components/Form/InputUploadDropzoneAutoMultiple/index.vue.d.ts +0 -5
  50. package/dist/runtime/components/Form/InputUploadDropzoneAutoMultiple/types.d.ts +3 -3
  51. package/dist/runtime/components/Form/InputUploadImageAuto/index.d.vue.ts +1 -6
  52. package/dist/runtime/components/Form/InputUploadImageAuto/index.vue +63 -58
  53. package/dist/runtime/components/Form/InputUploadImageAuto/index.vue.d.ts +1 -6
  54. package/dist/runtime/components/Form/InputUploadImageAuto/types.d.ts +3 -3
  55. package/dist/runtime/components/Form/InputWYSIWYG/EditorImageUploadNode.vue +18 -18
  56. package/dist/runtime/components/Form/InputWYSIWYG/EditorLinkPopover.vue +65 -65
  57. package/dist/runtime/components/Form/InputWYSIWYG/README.md +96 -96
  58. package/dist/runtime/components/Form/InputWYSIWYG/index.vue +43 -42
  59. package/dist/runtime/components/Form/fileState/EmptyState.vue +21 -21
  60. package/dist/runtime/components/Form/fileState/FailedState.vue +37 -33
  61. package/dist/runtime/components/Form/fileState/LoadingState.vue +24 -24
  62. package/dist/runtime/components/Form/fileState/MultipleFilesState.d.vue.ts +4 -4
  63. package/dist/runtime/components/Form/fileState/MultipleFilesState.vue +79 -75
  64. package/dist/runtime/components/Form/fileState/MultipleFilesState.vue.d.ts +4 -4
  65. package/dist/runtime/components/Form/fileState/PreviewModal.vue +23 -23
  66. package/dist/runtime/components/Form/fileState/SuccessState.d.vue.ts +2 -2
  67. package/dist/runtime/components/Form/fileState/SuccessState.vue +8 -4
  68. package/dist/runtime/components/Form/fileState/SuccessState.vue.d.ts +2 -2
  69. package/dist/runtime/components/Form/fileState/useFilePicker.d.ts +34 -0
  70. package/dist/runtime/components/Form/fileState/useFilePicker.js +48 -0
  71. package/dist/runtime/components/Form/fileState/useFileState.d.ts +7 -9
  72. package/dist/runtime/components/Form/fileState/useFileState.js +40 -120
  73. package/dist/runtime/components/Form/fileState/useUploadImageState.d.ts +7 -8
  74. package/dist/runtime/components/Form/fileState/useUploadImageState.js +28 -300
  75. package/dist/runtime/components/Form/fileState/useUploadState.d.ts +11 -7
  76. package/dist/runtime/components/Form/fileState/useUploadState.js +58 -131
  77. package/dist/runtime/components/Form/fileState/useUploadStateMultiple.d.ts +12 -18
  78. package/dist/runtime/components/Form/fileState/useUploadStateMultiple.js +89 -222
  79. package/dist/runtime/components/Form/index.vue +5 -5
  80. package/dist/runtime/components/Form/types.d.ts +2 -0
  81. package/dist/runtime/components/Image.vue +28 -28
  82. package/dist/runtime/components/Loader.d.vue.ts +1 -0
  83. package/dist/runtime/components/Loader.vue.d.ts +1 -0
  84. package/dist/runtime/components/Table/Base.d.vue.ts +15 -1
  85. package/dist/runtime/components/Table/Base.vue +118 -118
  86. package/dist/runtime/components/Table/Base.vue.d.ts +15 -1
  87. package/dist/runtime/components/Table/ColumnDate.vue +1 -1
  88. package/dist/runtime/components/Table/ColumnDateTime.vue +1 -1
  89. package/dist/runtime/components/Table/ColumnImage.vue +4 -4
  90. package/dist/runtime/components/Table/ColumnText.d.vue.ts +2 -3
  91. package/dist/runtime/components/Table/ColumnText.vue +11 -11
  92. package/dist/runtime/components/Table/ColumnText.vue.d.ts +2 -3
  93. package/dist/runtime/components/Table/Pagination.vue +70 -67
  94. package/dist/runtime/components/Table/Simple.vue +19 -19
  95. package/dist/runtime/components/Table/index.d.vue.ts +1 -1
  96. package/dist/runtime/components/Table/index.vue +37 -33
  97. package/dist/runtime/components/Table/index.vue.d.ts +1 -1
  98. package/dist/runtime/composables/loaderList.d.ts +2 -1
  99. package/dist/runtime/composables/loaderList.js +2 -1
  100. package/dist/runtime/composables/loaderObject.d.ts +2 -1
  101. package/dist/runtime/composables/loaderObject.js +2 -1
  102. package/dist/runtime/composables/loaderPage.js +194 -344
  103. package/dist/runtime/composables/useConfig.js +4 -3
  104. package/dist/runtime/composables/useDialog.js +5 -1
  105. package/dist/runtime/composables/useForm.d.ts +1 -1
  106. package/dist/runtime/composables/useForm.js +1 -1
  107. package/dist/runtime/composables/useMessages.d.ts +10 -0
  108. package/dist/runtime/composables/useMessages.js +10 -0
  109. package/dist/runtime/helpers/apiPageHelper.d.ts +0 -1
  110. package/dist/runtime/helpers/uploadCore.d.ts +54 -0
  111. package/dist/runtime/helpers/uploadCore.js +84 -0
  112. package/dist/runtime/i18n/valibot.d.ts +5 -68
  113. package/dist/runtime/i18n/valibot.js +33 -29
  114. package/dist/runtime/locale/en.d.ts +2 -0
  115. package/dist/runtime/locale/en.js +42 -0
  116. package/dist/runtime/locale/index.d.ts +7 -0
  117. package/dist/runtime/locale/index.js +8 -0
  118. package/dist/runtime/locale/th.d.ts +43 -0
  119. package/dist/runtime/locale/th.js +42 -0
  120. package/dist/runtime/server/tsconfig.json +3 -3
  121. package/dist/runtime/utils/ParamHelper.js +1 -1
  122. package/dist/runtime/utils/StringHelper.js +1 -4
  123. package/dist/runtime/utils/TimeHelper.js +2 -2
  124. package/dist/runtime/utils/lodash.js +2 -2
  125. package/package.json +20 -12
package/dist/module.d.mts CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as _nuxt_schema from '@nuxt/schema';
2
+ import { ICoreMessagesOverride } from '../dist/runtime/locale/index.js';
2
3
 
3
4
  declare const core: {
4
5
  limit_per_page: number;
@@ -15,6 +16,7 @@ declare const core: {
15
16
  color: string;
16
17
  time_zone: string;
17
18
  locale: string;
19
+ messages: ICoreMessagesOverride;
18
20
  };
19
21
 
20
22
  interface ModuleOptions {
package/dist/module.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@finema/core",
3
- "version": "3.22.0",
3
+ "version": "3.23.2",
4
4
  "configKey": "core",
5
5
  "builder": {
6
- "@nuxt/module-builder": "1.0.2",
6
+ "@nuxt/module-builder": "1.0.3",
7
7
  "unbuild": "3.6.1"
8
8
  }
9
9
  }
package/dist/module.mjs CHANGED
@@ -4,7 +4,7 @@ import * as lodash from 'lodash-es';
4
4
  import * as theme from '../dist/runtime/theme/index.js';
5
5
 
6
6
  const name = "@finema/core";
7
- const version = "3.22.0";
7
+ const version = "3.23.2";
8
8
 
9
9
  const nuxtAppOptions = {
10
10
  head: {
@@ -62,7 +62,9 @@ const core = {
62
62
  site_name: "",
63
63
  color: "#3675FB",
64
64
  time_zone: "Asia/Bangkok",
65
- locale: "th"
65
+ locale: "th",
66
+ // Override any text the kit renders by itself, e.g. { common: { confirm: 'ยืนยัน' } }
67
+ messages: {}
66
68
  };
67
69
 
68
70
  const module$1 = defineNuxtModule({
@@ -132,6 +134,17 @@ const module$1 = defineNuxtModule({
132
134
  },
133
135
  _nuxt.options.build
134
136
  );
137
+ const isInstalledPackage = import.meta.url.includes("node_modules");
138
+ const runtimeOptimizeDeps = [
139
+ "date-fns",
140
+ "date-fns/locale/th",
141
+ "date-fns-tz",
142
+ "lodash-es",
143
+ "url-join",
144
+ "maska/vue",
145
+ "@vuepic/vue-datepicker",
146
+ "@vueuse/components"
147
+ ].map((dep) => isInstalledPackage ? `${name} > ${dep}` : dep);
135
148
  _nuxt.options.vite = defu(
136
149
  {
137
150
  resolve: {
@@ -153,6 +166,7 @@ const module$1 = defineNuxtModule({
153
166
  "axios",
154
167
  "tailwind-variants",
155
168
  "@vueuse/core",
169
+ ...runtimeOptimizeDeps,
156
170
  "@nuxt/ui > prosemirror-state",
157
171
  "@nuxt/ui > prosemirror-transform",
158
172
  "@nuxt/ui > prosemirror-model",
@@ -13,7 +13,7 @@
13
13
 
14
14
  <script setup>
15
15
  import { th } from "@nuxt/ui/locale";
16
- import UApp from "#ui/components/App";
16
+ import UApp from "#ui/components/App.vue";
17
17
  import { useHead } from "#imports";
18
18
  import { useCoreConfig } from "#core/composables/useConfig";
19
19
  import DevToolsWindow from "#core/components/DevToolsWindow/index.vue";
@@ -298,7 +298,7 @@ onMounted(() => {
298
298
  const currentStyle = devToolsDynamicStyles.value;
299
299
  Object.keys(currentStyle).forEach((key) => {
300
300
  if (devToolsRef.value) {
301
- devToolsRef.value.style[key] = currentStyle[key];
301
+ devToolsRef.value.style[key] = currentStyle[key] ?? "";
302
302
  }
303
303
  });
304
304
  }
@@ -3,9 +3,6 @@ declare const __VLS_export: import("vue").DefineComponent<IDialogMetaItem, {}, {
3
3
  close: (args_0: boolean) => any;
4
4
  }, string, import("vue").PublicProps, Readonly<IDialogMetaItem> & Readonly<{
5
5
  onClose?: ((args_0: boolean) => any) | undefined;
6
- }>, {
7
- confirmText: string;
8
- cancelText: string;
9
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
7
  declare const _default: typeof __VLS_export;
11
8
  export default _default;
@@ -64,21 +64,20 @@ import { computed, useAttrs } from "vue";
64
64
  import { useUiIconConfig, useUiConfig } from "../../composables/useConfig";
65
65
  import { dialogTheme } from "#core/theme/dialog";
66
66
  import { DialogType } from "#core/composables/useDialog";
67
+ import { useCoreMessages } from "#core/composables/useMessages";
67
68
  const emits = defineEmits();
68
- const props = withDefaults(defineProps(), {
69
- confirmText: "\u0E15\u0E01\u0E25\u0E07",
70
- cancelText: "\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01"
71
- });
69
+ const props = defineProps();
72
70
  const attrs = useAttrs();
71
+ const {
72
+ messages
73
+ } = useCoreMessages();
73
74
  const icons = useUiIconConfig("dialog");
74
75
  const propsSafe = computed(() => {
75
- if (props.title) {
76
- return props;
77
- }
76
+ const source = props.title ? props : attrs;
78
77
  return {
79
- ...attrs,
80
- cancelText: attrs.cancelText || "\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01",
81
- confirmText: attrs.confirmText || "\u0E15\u0E01\u0E25\u0E07"
78
+ ...source,
79
+ cancelText: source.cancelText || messages.value.common.cancel,
80
+ confirmText: source.confirmText || messages.value.common.confirm
82
81
  };
83
82
  });
84
83
  const getIcon = computed(() => {
@@ -3,9 +3,6 @@ declare const __VLS_export: import("vue").DefineComponent<IDialogMetaItem, {}, {
3
3
  close: (args_0: boolean) => any;
4
4
  }, string, import("vue").PublicProps, Readonly<IDialogMetaItem> & Readonly<{
5
5
  onClose?: ((args_0: boolean) => any) | undefined;
6
- }>, {
7
- confirmText: string;
8
- cancelText: string;
9
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
7
  declare const _default: typeof __VLS_export;
11
8
  export default _default;
@@ -7,7 +7,6 @@ type __VLS_Props = {
7
7
  };
8
8
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
9
  icon: string;
10
- message: any;
11
10
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
11
  declare const _default: typeof __VLS_export;
13
12
  export default _default;
@@ -14,7 +14,7 @@
14
14
  :class="theme.message({
15
15
  class: [ui?.message]
16
16
  })"
17
- v-html="message"
17
+ v-html="message ?? messages.common.empty"
18
18
  />
19
19
  </div>
20
20
  </template>
@@ -23,11 +23,15 @@
23
23
  import { computed } from "vue";
24
24
  import { useUiConfig } from "#core/composables/useConfig";
25
25
  import { emptyTheme } from "#core/theme/empty";
26
+ import { useCoreMessages } from "#core/composables/useMessages";
26
27
  const props = defineProps({
27
- message: { type: null, required: false, default: "\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25!" },
28
+ message: { type: null, required: false },
28
29
  icon: { type: String, required: false, default: "ph:table-thin" },
29
30
  ui: { type: null, required: false },
30
31
  class: { type: null, required: false }
31
32
  });
32
33
  const theme = computed(() => useUiConfig(emptyTheme, "empty")());
34
+ const {
35
+ messages
36
+ } = useCoreMessages();
33
37
  </script>
@@ -7,7 +7,6 @@ type __VLS_Props = {
7
7
  };
8
8
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
9
  icon: string;
10
- message: any;
11
10
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
11
  declare const _default: typeof __VLS_export;
13
12
  export default _default;
@@ -1,90 +1,93 @@
1
1
  <template>
2
- <div>
3
- <div
4
- v-if="options.isEnabledSearch"
5
- class="mb-4 flex justify-end"
6
- >
7
- <Input
8
- v-model="q"
9
- icon="i-heroicons-magnifying-glass"
10
- :placeholder="options.searchPlaceholder || '\u0E04\u0E49\u0E19\u0E2B\u0E32...'"
11
- />
12
- </div>
13
-
14
- <div
15
- v-if="options.pageOptions && options.isEnableInfiniteScroll"
16
- class="mb-4 flex items-center justify-end"
17
- >
18
- <p class="text-xs text-gray-500">
19
- {{ totalInnerRawData }} รายการ จากทั้งหมด {{ totalCountWithComma }} รายการ
20
- </p>
21
- </div>
22
-
23
- <slot
24
- v-if="options.status.isSuccess && options.rawData.length === 0"
25
- name="empty-state"
26
- >
27
- <Empty />
28
- </slot>
29
-
30
- <slot
31
- v-else-if="options.status.isLoading"
32
- name="loading-state"
33
- >
34
- <Loader
35
- :loading="true"
36
- />
37
- </slot>
38
- <slot
39
- v-else-if="options.status.isError"
40
- name="error-state"
41
- >
42
- <div
43
- class="
44
- text-error-400 flex h-[200px] items-center justify-center text-2xl
45
- "
46
- >
47
- {{ StringHelper.getError(options.status.errorData) }}
48
- </div>
49
- </slot>
50
-
51
- <div
52
- v-else
53
- :class="containerClass"
54
- >
55
- <slot
56
- v-for="(row, index) in displayData"
57
- :key="index"
58
- :row="row"
59
- />
60
- <div ref="bottomEdgeElement" />
61
- </div>
62
-
63
- <div
64
- v-if="options.pageOptions && !options.isEnableInfiniteScroll && !options.isHidePagination"
65
- class="mt-4 flex justify-between px-3"
66
- >
67
- <p class="text-xs text-gray-500">
68
- {{ pageBetween }} {{ appConfig.core?.locale === "th" ? "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23 \u0E08\u0E32\u0E01\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14" : "items of total" }}
69
- {{ totalCountWithComma }} {{ appConfig.core?.locale === "th" ? "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23" : "items" }}
70
- </p>
71
- <Pagination
72
- v-if="options.pageOptions.totalPage > 1"
73
- :to="options.isRouteChange ? to : void 0"
74
- :default-page="options.pageOptions?.currentPage || 1"
75
- :items-per-page="options.pageOptions.limit"
76
- :total="options.pageOptions.totalCount"
77
- @update:page="onPageChange"
78
- />
79
- </div>
80
- </div>
2
+ <div>
3
+ <div
4
+ v-if="options.isEnabledSearch"
5
+ class="mb-4 flex justify-end"
6
+ >
7
+ <Input
8
+ v-model="q"
9
+ icon="i-heroicons-magnifying-glass"
10
+ :placeholder="options.searchPlaceholder || messages.common.search"
11
+ />
12
+ </div>
13
+
14
+ <div
15
+ v-if="options.pageOptions && options.isEnableInfiniteScroll"
16
+ class="mb-4 flex items-center justify-end"
17
+ >
18
+ <p class="text-xs text-gray-500">
19
+ {{ totalInnerRawData }} {{ messages.pagination.itemsOfTotal }}
20
+ {{ totalCountWithComma }} {{ messages.pagination.items }}
21
+ </p>
22
+ </div>
23
+
24
+ <slot
25
+ v-if="options.status.isSuccess && options.rawData.length === 0"
26
+ name="empty-state"
27
+ >
28
+ <Empty />
29
+ </slot>
30
+
31
+ <slot
32
+ v-else-if="options.status.isLoading"
33
+ name="loading-state"
34
+ >
35
+ <Loader
36
+ :loading="true"
37
+ />
38
+ </slot>
39
+ <slot
40
+ v-else-if="options.status.isError"
41
+ name="error-state"
42
+ >
43
+ <div
44
+ class="
45
+ text-error-400 flex h-[200px] items-center justify-center text-2xl
46
+ "
47
+ >
48
+ {{ StringHelper.getError(options.status.errorData) }}
49
+ </div>
50
+ </slot>
51
+
52
+ <div
53
+ v-else
54
+ :class="containerClass"
55
+ >
56
+ <slot
57
+ v-for="(row, index) in displayData"
58
+ :key="index"
59
+ :row="row"
60
+ />
61
+ <div ref="bottomEdgeElement" />
62
+ </div>
63
+
64
+ <div
65
+ v-if="options.pageOptions && !options.isEnableInfiniteScroll && !options.isHidePagination"
66
+ class="mt-4 flex justify-between px-3"
67
+ >
68
+ <p class="text-xs text-gray-500">
69
+ {{ pageBetween }} {{ messages.pagination.itemsOfTotal }}
70
+ {{ totalCountWithComma }} {{ messages.pagination.items }}
71
+ </p>
72
+ <Pagination
73
+ v-if="options.pageOptions.totalPage > 1"
74
+ :to="options.isRouteChange ? to : void 0"
75
+ :default-page="options.pageOptions?.currentPage || 1"
76
+ :items-per-page="options.pageOptions.limit"
77
+ :total="options.pageOptions.totalCount"
78
+ @update:page="onPageChange"
79
+ />
80
+ </div>
81
+ </div>
81
82
  </template>
82
83
 
83
84
  <script setup>
85
+ import { useCoreMessages } from "#core/composables/useMessages";
84
86
  import { computed, ref, watch } from "vue";
85
87
  import { useElementVisibility } from "@vueuse/core";
86
88
  import { NumberHelper } from "#core/utils/NumberHelper";
87
- import { _debounce, useRouter, useWatchChange, useWatchTrue, useAppConfig } from "#imports";
89
+ import { StringHelper } from "#core/utils/StringHelper";
90
+ import { _debounce, useRouter, useWatchChange, useWatchTrue } from "#imports";
88
91
  import { useCoreConfig } from "#core/composables/useConfig";
89
92
  import Empty from "#core/components/Empty.vue";
90
93
  const emits = defineEmits(["pageChange", "search"]);
@@ -100,7 +103,6 @@ const props = defineProps({
100
103
  });
101
104
  defineSlots();
102
105
  const coreConfig = useCoreConfig();
103
- const appConfig = useAppConfig();
104
106
  const router = useRouter();
105
107
  const q = ref(props.options?.pageOptions.search ?? "");
106
108
  const bottomEdgeElement = ref(null);
@@ -176,4 +178,7 @@ watch(targetElement, (value) => {
176
178
  const onPageChange = (page2) => {
177
179
  emits("pageChange", page2);
178
180
  };
181
+ const {
182
+ messages
183
+ } = useCoreMessages();
179
184
  </script>
@@ -1,17 +1,17 @@
1
1
  <template>
2
- <FormField
3
- :label="label"
4
- :name="name"
5
- :description="description"
6
- :hint="hint"
7
- :data-testid="name"
8
- :help="help"
9
- :error="errorMessage"
10
- :required="!!required"
11
- :ui="containerUi"
12
- >
13
- <slot />
14
- </FormField>
2
+ <FormField
3
+ :label="label"
4
+ :name="name"
5
+ :description="description"
6
+ :hint="hint"
7
+ :data-testid="name"
8
+ :help="help"
9
+ :error="errorMessage"
10
+ :required="!!required"
11
+ :ui="containerUi"
12
+ >
13
+ <slot />
14
+ </FormField>
15
15
  </template>
16
16
 
17
17
  <script setup>
@@ -30,6 +30,6 @@ defineProps({
30
30
  required: { type: Boolean, required: false },
31
31
  help: { type: String, required: false },
32
32
  ui: { type: null, required: false },
33
- containerUi: { type: null, required: false }
33
+ containerUi: { type: Object, required: false }
34
34
  });
35
35
  </script>
@@ -20,7 +20,7 @@
20
20
  </template>
21
21
 
22
22
  <script setup>
23
- import { computed } from "vue";
23
+ import { computed, defineAsyncComponent } from "vue";
24
24
  import FormInputTextarea from "./InputTextarea/index.vue";
25
25
  import FormInputText from "./InputText/index.vue";
26
26
  import FormInputSearch from "./InputSearch/index.vue";
@@ -34,16 +34,7 @@ import FormInputSelectMultiple from "./InputSelectMultiple/index.vue";
34
34
  import FormInputComponent from "./InputComponent/index.vue";
35
35
  import FormInputRadio from "./InputRadio/index.vue";
36
36
  import FormInputRating from "./InputRating/index.vue";
37
- import FormInputDateTime from "./InputDateTime/index.vue";
38
- import FormInputTime from "./InputTime/index.vue";
39
- import FormInputMonth from "./InputMonth/index.vue";
40
- import FormInputDateTimeRange from "./InputDateTimeRange/index.vue";
41
- import FormInputUploadDropzoneAuto from "./InputUploadDropzoneAuto/index.vue";
42
- import FormInputUploadDropzoneAutoMultiple from "./InputUploadDropzoneAutoMultiple/index.vue";
43
- import FormInputUploadDropzone from "./InputUploadDropzone/index.vue";
44
- import FormInputUploadImageAuto from "./InputUploadImageAuto/index.vue";
45
37
  import FormInputTag from "./InputTags/index.vue";
46
- import FormInputWYSIWYG from "./InputWYSIWYG/index.vue";
47
38
  import { INPUT_TYPES } from "#core/components/Form/types";
48
39
  import { formTheme } from "#core/theme/form";
49
40
  import { useUiConfig } from "#core/composables/useConfig";
@@ -54,6 +45,15 @@ const props = defineProps({
54
45
  class: { type: null, required: false },
55
46
  ui: { type: null, required: false }
56
47
  });
48
+ const FormInputDateTime = defineAsyncComponent(() => import("./InputDateTime/index.vue"));
49
+ const FormInputTime = defineAsyncComponent(() => import("./InputTime/index.vue"));
50
+ const FormInputMonth = defineAsyncComponent(() => import("./InputMonth/index.vue"));
51
+ const FormInputDateTimeRange = defineAsyncComponent(() => import("./InputDateTimeRange/index.vue"));
52
+ const FormInputUploadDropzoneAuto = defineAsyncComponent(() => import("./InputUploadDropzoneAuto/index.vue"));
53
+ const FormInputUploadDropzoneAutoMultiple = defineAsyncComponent(() => import("./InputUploadDropzoneAutoMultiple/index.vue"));
54
+ const FormInputUploadDropzone = defineAsyncComponent(() => import("./InputUploadDropzone/index.vue"));
55
+ const FormInputUploadImageAuto = defineAsyncComponent(() => import("./InputUploadImageAuto/index.vue"));
56
+ const FormInputWYSIWYG = defineAsyncComponent(() => import("./InputWYSIWYG/index.vue"));
57
57
  const componentMap = {
58
58
  [INPUT_TYPES.TEXT]: {
59
59
  component: FormInputText,
@@ -1,22 +1,22 @@
1
1
  <template>
2
- <FieldWrapper
3
- v-bind="wrapperProps"
4
- label=""
5
- description=""
6
- >
7
- <Checkbox
8
- :model-value="value"
9
- :disabled="wrapperProps.disabled"
10
- :name="name"
11
- :label="label"
12
- :description="description"
13
- :required="required"
14
- :variant="variant"
15
- :indicator="indicator"
16
- :ui="ui"
17
- @update:modelValue="onChange"
18
- />
19
- </FieldWrapper>
2
+ <FieldWrapper
3
+ v-bind="wrapperProps"
4
+ label=""
5
+ description=""
6
+ >
7
+ <Checkbox
8
+ :model-value="value"
9
+ :disabled="wrapperProps.disabled"
10
+ :name="name"
11
+ :label="label"
12
+ :description="description"
13
+ :required="required"
14
+ :variant="variant"
15
+ :indicator="indicator"
16
+ :ui="ui"
17
+ @update:modelValue="onChange"
18
+ />
19
+ </FieldWrapper>
20
20
  </template>
21
21
 
22
22
  <script setup>
@@ -39,7 +39,8 @@ const props = defineProps({
39
39
  readonly: { type: Boolean, required: false },
40
40
  required: { type: Boolean, required: false },
41
41
  help: { type: String, required: false },
42
- ui: { type: null, required: false }
42
+ ui: { type: null, required: false },
43
+ containerUi: { type: null, required: false }
43
44
  });
44
45
  const {
45
46
  value,
@@ -45,7 +45,8 @@ const props = defineProps({
45
45
  readonly: { type: Boolean, required: false },
46
46
  required: { type: Boolean, required: false },
47
47
  help: { type: String, required: false },
48
- ui: { type: null, required: false }
48
+ ui: { type: null, required: false },
49
+ containerUi: { type: null, required: false }
49
50
  });
50
51
  const {
51
52
  value,
@@ -21,6 +21,7 @@ const props = defineProps({
21
21
  readonly: { type: Boolean, required: false },
22
22
  required: { type: Boolean, required: false },
23
23
  help: { type: String, required: false },
24
- ui: { type: null, required: false }
24
+ ui: { type: null, required: false },
25
+ containerUi: { type: null, required: false }
25
26
  });
26
27
  </script>
@@ -1,56 +1,56 @@
1
1
  <template>
2
- <FieldWrapper
3
- v-bind="wrapperProps"
4
- :error-message="undefined"
5
- >
6
- <div
2
+ <FieldWrapper
3
+ v-bind="wrapperProps"
4
+ :error-message="undefined"
5
+ >
6
+ <div
7
7
  :class="['inline-flex w-full items-center -space-x-px rounded-lg ring-1', {
8
8
  'ring-error': wrapperProps.errorMessage,
9
9
  'ring-gray-300': !wrapperProps.errorMessage
10
- }]"
11
- >
12
- <p class="pl-3 text-lg">
13
- {{ currencySymbol }}
14
- </p>
15
- <InputNumber
16
- :model-value="value.value"
17
- :disabled="wrapperProps.disabled"
18
- :name="name"
19
- :placeholder="wrapperProps.placeholder"
20
- :autofocus="!!autoFocus"
21
- :readonly="readonly"
22
- :min="min"
23
- :max="max"
24
- :step="step"
25
- :format-options="formatOptions"
26
- :increment="false"
27
- :decrement="false"
28
- variant="none"
29
- @update:model-value="onAmountChange"
30
- />
31
- <Select
32
- :model-value="value.currency"
33
- :items="options"
34
- :disabled="wrapperProps.disabled"
35
- value-key="value"
36
- label-key="label"
37
- variant="none"
38
- size="xl"
39
- class="cursor-pointer"
40
- @update:model-value="onCurrencyChange"
41
- >
42
- <template #default="{ modelValue }">
43
- {{ options.find((item) => item.value === modelValue)?.label || modelValue }}
44
- </template>
45
- </Select>
46
- </div>
47
- <p
48
- v-if="wrapperProps.errorMessage"
49
- class="text-error mt-2"
50
- >
51
- {{ wrapperProps.errorMessage }}
52
- </p>
53
- </FieldWrapper>
10
+ }]"
11
+ >
12
+ <p class="pl-3 text-lg">
13
+ {{ currencySymbol }}
14
+ </p>
15
+ <InputNumber
16
+ :model-value="value.value"
17
+ :disabled="wrapperProps.disabled"
18
+ :name="name"
19
+ :placeholder="wrapperProps.placeholder"
20
+ :autofocus="!!autoFocus"
21
+ :readonly="readonly"
22
+ :min="min"
23
+ :max="max"
24
+ :step="step"
25
+ :format-options="formatOptions"
26
+ :increment="false"
27
+ :decrement="false"
28
+ variant="none"
29
+ @update:model-value="onAmountChange"
30
+ />
31
+ <Select
32
+ :model-value="value.currency"
33
+ :items="options"
34
+ :disabled="wrapperProps.disabled"
35
+ value-key="value"
36
+ label-key="label"
37
+ variant="none"
38
+ size="xl"
39
+ class="cursor-pointer"
40
+ @update:model-value="onCurrencyChange"
41
+ >
42
+ <template #default="{ modelValue }">
43
+ {{ options.find((item) => item.value === modelValue)?.label || modelValue }}
44
+ </template>
45
+ </Select>
46
+ </div>
47
+ <p
48
+ v-if="wrapperProps.errorMessage"
49
+ class="text-error mt-2"
50
+ >
51
+ {{ wrapperProps.errorMessage }}
52
+ </p>
53
+ </FieldWrapper>
54
54
  </template>
55
55
 
56
56
  <script setup>
@@ -90,7 +90,8 @@ const props = defineProps({
90
90
  readonly: { type: Boolean, required: false },
91
91
  required: { type: Boolean, required: false },
92
92
  help: { type: String, required: false },
93
- ui: { type: null, required: false }
93
+ ui: { type: null, required: false },
94
+ containerUi: { type: null, required: false }
94
95
  });
95
96
  const {
96
97
  value,