@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
@@ -20,5 +20,5 @@ export interface IDateTimeFieldProps extends IFieldProps {
20
20
  autoApply?: boolean;
21
21
  }
22
22
  export type IDateTimeField = IFormFieldBase<INPUT_TYPES.DATE_TIME | INPUT_TYPES.DATE, IDateTimeFieldProps, {
23
- change: (value: string) => void;
23
+ change?: (value: string) => void;
24
24
  }>;
@@ -1,77 +1,78 @@
1
1
  <template>
2
- <FieldWrapper v-bind="wrapperProps">
3
- <Datepicker
4
- :model-value="innerValue"
5
- :disabled="wrapperProps.disabled"
6
- :cancel-text="appConfig.core?.locale === 'th' ? '\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01' : 'Cancel'"
7
- :select-text="appConfig.core?.locale === 'th' ? '\u0E15\u0E01\u0E25\u0E07' : 'Select'"
8
- :locale="appConfig.core?.locale"
9
- :enable-time-picker="!disabledTime"
10
- :auto-apply="autoApply && disabledTime"
11
- :placeholder="wrapperProps.placeholder"
12
- :format="format"
13
- :min-date="minDate"
14
- :max-date="maxDate"
15
- :min-time="minTime"
16
- :max-time="maxTime"
17
- :six-weeks="true"
18
- :start-time="startTime"
19
- :teleport="teleport"
20
- :required="required"
21
- :flow="flowCalendar"
22
- @update:model-value="onInput"
23
- >
24
- <template
25
- v-if="appConfig.core?.locale === 'th' && appConfig.core?.is_thai_year"
26
- #year="{ value }"
27
- >
28
- {{ value + 543 }}
29
- </template>
30
- <template
31
- v-if="appConfig.core?.locale === 'th' && appConfig.core?.is_thai_year"
32
- #year-overlay-value="{ value }"
33
- >
34
- {{ value + 543 }}
35
- </template>
36
- <template #dp-input="{ value: innerValue }">
37
- <Input
38
- v-if="!readMode"
39
- :trailing-icon="innerValue ? void 0 : 'i-heroicons-calendar-days'"
40
- type="text"
41
- :disabled="wrapperProps.disabled"
42
- :model-value="innerValue"
43
- :placeholder="wrapperProps.placeholder"
44
- :readonly="true"
2
+ <FieldWrapper v-bind="wrapperProps">
3
+ <Datepicker
4
+ :model-value="innerValue"
5
+ :disabled="wrapperProps.disabled"
6
+ :cancel-text="messages.common.cancel"
7
+ :select-text="messages.common.select"
8
+ :locale="appConfig.core?.locale"
9
+ :enable-time-picker="!disabledTime"
10
+ :auto-apply="autoApply && disabledTime"
11
+ :placeholder="wrapperProps.placeholder"
12
+ :format="format"
13
+ :min-date="minDate"
14
+ :max-date="maxDate"
15
+ :min-time="minTime"
16
+ :max-time="maxTime"
17
+ :six-weeks="true"
18
+ :start-time="startTime"
19
+ :teleport="teleport"
20
+ :required="required"
21
+ :flow="flowCalendar"
22
+ @update:model-value="onInput"
23
+ >
24
+ <template
25
+ v-if="appConfig.core?.locale === 'th' && appConfig.core?.is_thai_year"
26
+ #year="{ value }"
27
+ >
28
+ {{ value + 543 }}
29
+ </template>
30
+ <template
31
+ v-if="appConfig.core?.locale === 'th' && appConfig.core?.is_thai_year"
32
+ #year-overlay-value="{ value }"
33
+ >
34
+ {{ value + 543 }}
35
+ </template>
36
+ <template #dp-input="{ value: innerValue }">
37
+ <Input
38
+ v-if="!readMode"
39
+ :trailing-icon="innerValue ? void 0 : 'i-heroicons-calendar-days'"
40
+ type="text"
41
+ :disabled="wrapperProps.disabled"
42
+ :model-value="innerValue"
43
+ :placeholder="wrapperProps.placeholder"
44
+ :readonly="true"
45
45
  :ui="{
46
46
  base: 'cursor-pointer select-none',
47
47
  trailingIcon: 'cursor-pointer'
48
- }"
49
- />
50
- <div
51
- v-else
52
- class="cursor-pointer rounded-md px-2 py-1 hover:bg-gray-100"
53
- :class="classReadMode"
54
- >
55
- {{ innerValue || "None" }}
56
- </div>
57
- </template>
58
- <template #clear-icon="{ clear }">
59
- <Icon
60
- v-if="clearable"
61
- :name="clearIcon"
48
+ }"
49
+ />
50
+ <div
51
+ v-else
52
+ class="cursor-pointer rounded-md px-2 py-1 hover:bg-gray-100"
53
+ :class="classReadMode"
54
+ >
55
+ {{ innerValue || "None" }}
56
+ </div>
57
+ </template>
58
+ <template #clear-icon="{ clear }">
59
+ <Icon
60
+ v-if="clearable"
61
+ :name="clearIcon"
62
62
  :class="
63
63
  theme.clearIcon({
64
64
  class: [ui?.clearIcon]
65
65
  })
66
- "
67
- @click.stop="clear"
68
- />
69
- </template>
70
- </Datepicker>
71
- </FieldWrapper>
66
+ "
67
+ @click.stop="clear"
68
+ />
69
+ </template>
70
+ </Datepicker>
71
+ </FieldWrapper>
72
72
  </template>
73
73
 
74
74
  <script setup>
75
+ import { useCoreMessages } from "#core/composables/useMessages";
75
76
  import Datepicker from "@vuepic/vue-datepicker";
76
77
  import FieldWrapper from "#core/components/Form/FieldWrapper.vue";
77
78
  import {
@@ -115,7 +116,8 @@ const props = defineProps({
115
116
  readonly: { type: Boolean, required: false },
116
117
  required: { type: Boolean, required: false },
117
118
  help: { type: String, required: false },
118
- ui: { type: null, required: false }
119
+ ui: { type: null, required: false },
120
+ containerUi: { type: null, required: false }
119
121
  });
120
122
  const appConfig = useAppConfig();
121
123
  const theme = computed(() => useUiConfig(dateTimeTheme, "dateTime")());
@@ -168,6 +170,9 @@ const onInput = (_value) => {
168
170
  }
169
171
  emits("change", value.value);
170
172
  };
173
+ const {
174
+ messages
175
+ } = useCoreMessages();
171
176
  </script>
172
177
 
173
178
  <style scoped>
@@ -14,5 +14,5 @@ export interface IDateTimeRangeFieldProps extends IDateTimeFieldProps {
14
14
  teleport?: boolean | string | HTMLElement;
15
15
  }
16
16
  export type IDateTimeRangeField = IFormFieldBase<INPUT_TYPES.DATE_RANGE | INPUT_TYPES.DATE_TIME_RANGE, IDateTimeRangeFieldProps, {
17
- change: (value: IDateTimeRangeResponse) => void;
17
+ change?: (value: IDateTimeRangeResponse) => void;
18
18
  }>;
@@ -1,68 +1,69 @@
1
1
  <template>
2
- <FieldWrapper v-bind="wrapperProps">
3
- <Datepicker
4
- ref="datepicker"
5
- v-model="innerValueRef"
6
- :teleport="teleport"
7
- :disabled="wrapperProps.disabled"
8
- :cancel-text="appConfig.core?.locale === 'th' ? '\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01' : 'Cancel'"
9
- :select-text="appConfig.core?.locale === 'th' ? '\u0E15\u0E01\u0E25\u0E07' : 'Select'"
10
- :locale="appConfig.core?.locale"
11
- :format="format"
12
- :enable-time-picker="!disabledTime"
13
- :placeholder="wrapperProps.placeholder"
14
- :min-date="minDate"
15
- :max-date="maxDate"
16
- :min-time="minTime"
17
- :max-time="maxTime"
18
- :six-weeks="true"
19
- :start-time="startTime"
20
- :multi-calendars="!isDisabledMultiCalendar"
21
- :required="required"
22
- time-picker-inline
23
- range
24
- :flow="['calendar', 'time']"
25
- @update:model-value="onInput"
26
- >
27
- <template
28
- v-if="appConfig.core?.locale === 'th' && appConfig.core?.is_thai_year"
29
- #year="{ value }"
30
- >
31
- {{ value + 543 }}
32
- </template>
33
- <template
34
- v-if="appConfig.core?.locale === 'th' && appConfig.core?.is_thai_year"
35
- #year-overlay-value="{ value }"
36
- >
37
- {{ value + 543 }}
38
- </template>
39
- <template #dp-input="{ value: innerValue }">
40
- <Input
41
- :trailing-icon="innerValue ? void 0 : 'i-heroicons-calendar-days'"
42
- type="text"
43
- :model-value="innerValue"
44
- :placeholder="wrapperProps.placeholder"
45
- :readonly="true"
2
+ <FieldWrapper v-bind="wrapperProps">
3
+ <Datepicker
4
+ ref="datepicker"
5
+ v-model="innerValueRef"
6
+ :teleport="teleport"
7
+ :disabled="wrapperProps.disabled"
8
+ :cancel-text="messages.common.cancel"
9
+ :select-text="messages.common.select"
10
+ :locale="appConfig.core?.locale"
11
+ :format="format"
12
+ :enable-time-picker="!disabledTime"
13
+ :placeholder="wrapperProps.placeholder"
14
+ :min-date="minDate"
15
+ :max-date="maxDate"
16
+ :min-time="minTime"
17
+ :max-time="maxTime"
18
+ :six-weeks="true"
19
+ :start-time="startTime"
20
+ :multi-calendars="!isDisabledMultiCalendar"
21
+ :required="required"
22
+ time-picker-inline
23
+ range
24
+ :flow="['calendar', 'time']"
25
+ @update:model-value="onInput"
26
+ >
27
+ <template
28
+ v-if="appConfig.core?.locale === 'th' && appConfig.core?.is_thai_year"
29
+ #year="{ value }"
30
+ >
31
+ {{ value + 543 }}
32
+ </template>
33
+ <template
34
+ v-if="appConfig.core?.locale === 'th' && appConfig.core?.is_thai_year"
35
+ #year-overlay-value="{ value }"
36
+ >
37
+ {{ value + 543 }}
38
+ </template>
39
+ <template #dp-input="{ value: innerValue }">
40
+ <Input
41
+ :trailing-icon="innerValue ? void 0 : 'i-heroicons-calendar-days'"
42
+ type="text"
43
+ :model-value="innerValue"
44
+ :placeholder="wrapperProps.placeholder"
45
+ :readonly="true"
46
46
  :ui="{
47
47
  base: 'cursor-pointer select-none',
48
48
  trailingIcon: 'cursor-pointer'
49
- }"
50
- />
51
- </template>
52
- <template #clear-icon="{ clear }">
53
- <Icon
54
- :name="clearIcon"
49
+ }"
50
+ />
51
+ </template>
52
+ <template #clear-icon="{ clear }">
53
+ <Icon
54
+ :name="clearIcon"
55
55
  :class="theme.clearIcon({
56
56
  class: [ui?.clearIcon]
57
- })"
58
- @click.stop="clear"
59
- />
60
- </template>
61
- </Datepicker>
62
- </FieldWrapper>
57
+ })"
58
+ @click.stop="clear"
59
+ />
60
+ </template>
61
+ </Datepicker>
62
+ </FieldWrapper>
63
63
  </template>
64
64
 
65
65
  <script setup>
66
+ import { useCoreMessages } from "#core/composables/useMessages";
66
67
  import Datepicker from "@vuepic/vue-datepicker";
67
68
  import FieldWrapper from "#core/components/Form/FieldWrapper.vue";
68
69
  import { TimeHelper, ref, useFieldHOC, useAppConfig, computed, useUiConfig, watch, onMounted } from "#imports";
@@ -97,7 +98,8 @@ const props = defineProps({
97
98
  readonly: { type: Boolean, required: false },
98
99
  required: { type: Boolean, required: false },
99
100
  help: { type: String, required: false },
100
- ui: { type: null, required: false }
101
+ ui: { type: null, required: false },
102
+ containerUi: { type: null, required: false }
101
103
  });
102
104
  const appConfig = useAppConfig();
103
105
  const theme = computed(() => useUiConfig(dateTimeTheme, "dateTime")());
@@ -155,4 +157,7 @@ const onInput = (_value) => {
155
157
  }
156
158
  emits("change", value.value);
157
159
  };
160
+ const {
161
+ messages
162
+ } = useCoreMessages();
158
163
  </script>
@@ -4,8 +4,8 @@
4
4
  :model-value="value"
5
5
  :teleport="teleport"
6
6
  :disabled="wrapperProps.disabled"
7
- :cancel-text="appConfig.core?.locale === 'th' ? '\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01' : 'Cancel'"
8
- :select-text="appConfig.core?.locale === 'th' ? '\u0E15\u0E01\u0E25\u0E07' : 'Select'"
7
+ :cancel-text="messages.common.cancel"
8
+ :select-text="messages.common.select"
9
9
  :locale="appConfig.core?.locale"
10
10
  :format="appConfig.core?.month_format"
11
11
  month-picker
@@ -58,13 +58,14 @@
58
58
  </template>
59
59
 
60
60
  <script setup>
61
+ import { useCoreMessages } from "#core/composables/useMessages";
61
62
  import Datepicker from "@vuepic/vue-datepicker";
62
63
  import FieldWrapper from "#core/components/Form/FieldWrapper.vue";
63
64
  import { computed, useAppConfig, useFieldHOC, useUiConfig } from "#imports";
64
65
  import "@vuepic/vue-datepicker/dist/main.css";
65
66
  import { dateTimeTheme } from "#core/theme/dateTime";
66
67
  import { format } from "date-fns-tz";
67
- import * as locales from "date-fns/locale";
68
+ import { th } from "date-fns/locale/th";
68
69
  import { addYears } from "date-fns";
69
70
  const emits = defineEmits(["change"]);
70
71
  const props = defineProps({
@@ -85,7 +86,8 @@ const props = defineProps({
85
86
  readonly: { type: Boolean, required: false },
86
87
  required: { type: Boolean, required: false },
87
88
  help: { type: String, required: false },
88
- ui: { type: null, required: false }
89
+ ui: { type: null, required: false },
90
+ containerUi: { type: null, required: false }
89
91
  });
90
92
  const appConfig = useAppConfig();
91
93
  const theme = computed(() => useUiConfig(dateTimeTheme, "dateTime")());
@@ -101,7 +103,7 @@ const formatDisplay = (date) => {
101
103
  newDateStr = addYears(newDateStr, 543);
102
104
  }
103
105
  if (appConfig.core?.locale === "th" && appConfig.core?.is_thai_month) {
104
- options.locale = locales.th;
106
+ options.locale = th;
105
107
  }
106
108
  return format(newDateStr, appConfig.core?.month_format, options);
107
109
  };
@@ -109,4 +111,7 @@ const onInput = (date) => {
109
111
  value.value = date;
110
112
  emits("change", value.value);
111
113
  };
114
+ const {
115
+ messages
116
+ } = useCoreMessages();
112
117
  </script>
@@ -6,7 +6,7 @@ export interface IMonthFieldProps extends IFieldProps {
6
6
  teleport?: boolean | string | HTMLElement;
7
7
  }
8
8
  export type IMonthField = IFormFieldBase<INPUT_TYPES.MONTH, IMonthFieldProps, {
9
- change: (value: {
9
+ change?: (value: {
10
10
  year: number;
11
11
  month: number;
12
12
  } | undefined) => void;
@@ -1,24 +1,24 @@
1
1
  <template>
2
- <FieldWrapper v-bind="wrapperProps">
3
- <InputNumber
4
- :model-value="value"
5
- :disabled="wrapperProps.disabled"
6
- :name="name"
7
- :placeholder="wrapperProps.placeholder"
8
- :autofocus="!!autoFocus"
9
- :readonly="readonly"
10
- :orientation="orientation"
11
- :increment="increment"
12
- :decrement="decrement"
13
- :min="min"
14
- :max="max"
15
- :step="step"
16
- :disable-wheel-change="disableWheelChange"
17
- :format-options="formatOptions"
18
- :ui="ui"
19
- @update:model-value="onChange"
20
- />
21
- </FieldWrapper>
2
+ <FieldWrapper v-bind="wrapperProps">
3
+ <InputNumber
4
+ :model-value="value"
5
+ :disabled="wrapperProps.disabled"
6
+ :name="name"
7
+ :placeholder="wrapperProps.placeholder"
8
+ :autofocus="!!autoFocus"
9
+ :readonly="readonly"
10
+ :orientation="orientation"
11
+ :increment="increment"
12
+ :decrement="decrement"
13
+ :min="min"
14
+ :max="max"
15
+ :step="step"
16
+ :disable-wheel-change="disableWheelChange"
17
+ :format-options="formatOptions"
18
+ :ui="ui"
19
+ @update:model-value="onChange"
20
+ />
21
+ </FieldWrapper>
22
22
  </template>
23
23
 
24
24
  <script setup>
@@ -47,7 +47,8 @@ const props = defineProps({
47
47
  readonly: { type: Boolean, required: false },
48
48
  required: { type: Boolean, required: false },
49
49
  help: { type: String, required: false },
50
- ui: { type: null, required: false }
50
+ ui: { type: null, required: false },
51
+ containerUi: { type: null, required: false }
51
52
  });
52
53
  const {
53
54
  value,
@@ -5,8 +5,8 @@ declare const __VLS_export: import("vue").DefineComponent<IRadioFieldProps, {},
5
5
  onChange?: ((value: any) => any) | undefined;
6
6
  }>, {
7
7
  variant: "list" | "card" | "table";
8
- orientation: "horizontal" | "vertical";
9
8
  indicator: "start" | "end" | "hidden";
9
+ orientation: "horizontal" | "vertical";
10
10
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
11
  declare const _default: typeof __VLS_export;
12
12
  export default _default;
@@ -42,7 +42,8 @@ const props = defineProps({
42
42
  readonly: { type: Boolean, required: false },
43
43
  required: { type: Boolean, required: false },
44
44
  help: { type: String, required: false },
45
- ui: { type: null, required: false }
45
+ ui: { type: null, required: false },
46
+ containerUi: { type: null, required: false }
46
47
  });
47
48
  const {
48
49
  value,
@@ -5,8 +5,8 @@ declare const __VLS_export: import("vue").DefineComponent<IRadioFieldProps, {},
5
5
  onChange?: ((value: any) => any) | undefined;
6
6
  }>, {
7
7
  variant: "list" | "card" | "table";
8
- orientation: "horizontal" | "vertical";
9
8
  indicator: "start" | "end" | "hidden";
9
+ orientation: "horizontal" | "vertical";
10
10
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
11
  declare const _default: typeof __VLS_export;
12
12
  export default _default;
@@ -50,7 +50,8 @@ const props = defineProps({
50
50
  readonly: { type: Boolean, required: false },
51
51
  required: { type: Boolean, required: false },
52
52
  help: { type: String, required: false },
53
- ui: { type: null, required: false }
53
+ ui: { type: null, required: false },
54
+ containerUi: { type: null, required: false }
54
55
  });
55
56
  const {
56
57
  value,
@@ -24,7 +24,7 @@
24
24
  variant="link"
25
25
  :icon="clearIcon || 'i-heroicons-x-mark'"
26
26
  :padded="false"
27
- title="ล้างการค้นหา"
27
+ :title="messages.common.clearSearch"
28
28
  @click="onClear"
29
29
  />
30
30
  </template>
@@ -33,6 +33,7 @@
33
33
  </template>
34
34
 
35
35
  <script setup>
36
+ import { useCoreMessages } from "#core/composables/useMessages";
36
37
  import { useFieldHOC } from "#core/composables/useForm";
37
38
  import FieldWrapper from "#core/components/Form/FieldWrapper.vue";
38
39
  const emits = defineEmits(["change", "search", "clear"]);
@@ -58,7 +59,8 @@ const props = defineProps({
58
59
  readonly: { type: Boolean, required: false },
59
60
  required: { type: Boolean, required: false },
60
61
  help: { type: String, required: false },
61
- ui: { type: null, required: false }
62
+ ui: { type: null, required: false },
63
+ containerUi: { type: null, required: false }
62
64
  });
63
65
  const {
64
66
  value,
@@ -76,4 +78,7 @@ const onClear = () => {
76
78
  emits("clear");
77
79
  emits("search", "");
78
80
  };
81
+ const {
82
+ messages
83
+ } = useCoreMessages();
79
84
  </script>