pukaad-ui-lib 1.231.0 → 1.233.0

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 (34) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/assets/json/social-icon.json +2 -2
  3. package/dist/runtime/components/button.vue +5 -13
  4. package/dist/runtime/components/card/card-place-detail.vue +1 -1
  5. package/dist/runtime/components/drawer/drawer-post-blog.d.vue.ts +1 -0
  6. package/dist/runtime/components/drawer/drawer-post-blog.vue +27 -64
  7. package/dist/runtime/components/drawer/drawer-post-blog.vue.d.ts +1 -0
  8. package/dist/runtime/components/input/input-autocomplete.d.vue.ts +1 -1
  9. package/dist/runtime/components/input/input-autocomplete.vue.d.ts +1 -1
  10. package/dist/runtime/components/input/input-link.vue +1 -1
  11. package/dist/runtime/components/input/input-tag.d.vue.ts +1 -1
  12. package/dist/runtime/components/input/input-tag.vue +1 -1
  13. package/dist/runtime/components/input/input-tag.vue.d.ts +1 -1
  14. package/dist/runtime/components/modal/modal-phone-OTP.vue +26 -24
  15. package/dist/runtime/components/modal/modal-profile-edit.vue +36 -144
  16. package/dist/runtime/components/modal/modal-share.vue +16 -20
  17. package/dist/runtime/components/ui/alert-dialog/AlertDialogContent.d.vue.ts +4 -4
  18. package/dist/runtime/components/ui/alert-dialog/AlertDialogContent.vue.d.ts +4 -4
  19. package/dist/runtime/components/ui/button/index.js +22 -1
  20. package/dist/runtime/components/ui/dialog/DialogContent.d.vue.ts +4 -4
  21. package/dist/runtime/components/ui/dialog/DialogContent.vue.d.ts +4 -4
  22. package/dist/runtime/components/ui/dialog/DialogScrollContent.d.vue.ts +4 -4
  23. package/dist/runtime/components/ui/dialog/DialogScrollContent.vue.d.ts +4 -4
  24. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.d.vue.ts +2 -2
  25. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +2 -2
  26. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.d.vue.ts +4 -4
  27. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +4 -4
  28. package/dist/runtime/components/ui/popover/PopoverContent.d.vue.ts +4 -4
  29. package/dist/runtime/components/ui/popover/PopoverContent.vue.d.ts +4 -4
  30. package/dist/runtime/components/ui/select/SelectContent.d.vue.ts +2 -2
  31. package/dist/runtime/components/ui/select/SelectContent.vue.d.ts +2 -2
  32. package/dist/runtime/components/ui/sheet/SheetContent.d.vue.ts +4 -4
  33. package/dist/runtime/components/ui/sheet/SheetContent.vue.d.ts +4 -4
  34. package/package.json +1 -1
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pukaad-ui-lib",
3
3
  "configKey": "pukaadUI",
4
- "version": "1.231.0",
4
+ "version": "1.233.0",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "3.6.1"
@@ -40,7 +40,7 @@
40
40
  "example": "https://threads.net/@username"
41
41
  },
42
42
  {
43
- "icon": "pukaad-social:Tiktok",
43
+ "icon": "pukaad-social:TikTok",
44
44
  "name": "TikTok",
45
45
  "example": "https://tiktok.com/@username"
46
46
  },
@@ -60,7 +60,7 @@
60
60
  "example": "https://example.com"
61
61
  },
62
62
  {
63
- "icon": "pukaad-social:Whatsapp",
63
+ "icon": "pukaad-social:WhatsApp",
64
64
  "name": "WhatsApp",
65
65
  "example": "https://wa.me/1234567890"
66
66
  },
@@ -1,21 +1,13 @@
1
1
  <template>
2
- <ShadButton
3
- :class="[
2
+ <ShadButton :class="[
4
3
  'font-body-medium relative',
5
- props.variant === 'text' && '!p-0',
4
+ props.variant === 'text' || props.variant === 'link' ? '!p-0 !h-auto' : '',
6
5
  props.circle && 'rounded-full aspect-square',
7
6
  props.class
8
- ]"
9
- :variant="props.variant"
10
- :color="props.color"
11
- :type="props.type"
12
- :disabled="props.loading || props.disabled"
13
- >
7
+ ]" :variant="props.variant" :color="props.color" :type="props.type" :disabled="props.loading || props.disabled">
14
8
  <span class="inline-grid place-items-center">
15
- <span
16
- class="inline-flex items-center justify-center gap-[8px] [grid-area:1/1]"
17
- :class="{ invisible: props.loading }"
18
- >
9
+ <span class="inline-flex items-center justify-center gap-[8px] [grid-area:1/1]"
10
+ :class="{ invisible: props.loading }">
19
11
  <slot />
20
12
  </span>
21
13
  <ShadSpinner v-if="props.loading" class="[grid-area:1/1]" />
@@ -69,7 +69,7 @@ const businessHours = computed(
69
69
  );
70
70
  const socialLinks = computed(
71
71
  () => (props.item.contact_channels ?? []).filter((ch) => ch.value).map((ch) => ({
72
- name: ch.channel_type?.toLowerCase() ?? "link",
72
+ name: ch.channel_type ?? "link",
73
73
  link: ch.value
74
74
  }))
75
75
  );
@@ -1,4 +1,5 @@
1
1
  export interface DrawerPostBlogItem {
2
+ id?: string;
2
3
  title: string;
3
4
  content: object[];
4
5
  tags: any[];
@@ -1,37 +1,13 @@
1
1
  <template>
2
- <Drawer
3
- class="w-[748px]"
4
- :title="drawerTitle"
5
- @close="onClose"
6
- disabled-auto-close
7
- @submit="onSubmit"
8
- v-model="isOpen"
9
- >
2
+ <Drawer class="w-[748px]" :title="drawerTitle" @close="onClose" disabled-auto-close @submit="onSubmit"
3
+ v-model="isOpen">
10
4
  <div class="flex flex-col gap-[16px]">
11
- <InputTextField
12
- name="title"
13
- label="หัวข้อ"
14
- placeholder="ตั้งชื่อบทความให้น่าสนใจ"
15
- showCounter
16
- :limit="180"
17
- v-model="form.title"
18
- disabled-border
19
- required
20
- />
5
+ <InputTextField name="title" label="หัวข้อ" placeholder="ตั้งชื่อบทความให้น่าสนใจ" showCounter :limit="180"
6
+ v-model="form.title" disabled-border required />
21
7
 
22
- <InputContent
23
- placeholder="อยากเล่าอะไร"
24
- :height="288"
25
- v-model="form.content"
26
- />
8
+ <InputContent placeholder="อยากเล่าอะไร" :height="288" v-model="form.content" />
27
9
 
28
- <InputTag
29
- v-model="form.tags"
30
- name="tags"
31
- label="แท็ก"
32
- placeholder="เพิ่มแท็ก"
33
- :limit="5"
34
- />
10
+ <InputTag v-model="form.tags" name="tags" label="แท็ก" placeholder="เพิ่มแท็ก" :limit="5" />
35
11
 
36
12
  <!-- <InputCheckbox
37
13
  name="disableComment"
@@ -41,12 +17,8 @@
41
17
 
42
18
  <div class="flex flex-col gap-[8px]">
43
19
  <div class="text-gray font-body-large">ภาพหน้าปก</div>
44
- <InputFile
45
- :limit="1"
46
- name="coverImage"
47
- accept="image/jpeg,image/png,image/webp,image/bmp,image/gif"
48
- v-model="form.coverImage"
49
- />
20
+ <InputFile :limit="1" name="coverImage" accept="image/jpeg,image/png,image/webp,image/bmp,image/gif"
21
+ v-model="form.coverImage" />
50
22
  <div class="flex flex-col text-gray font-body-small">
51
23
  <div>รองรับไฟล์ *.jpg *.jpeg *.png *.webp *.bmp *.gif</div>
52
24
  <div>ขนาดไม่เกิน 30 mb</div>
@@ -58,11 +30,7 @@
58
30
  <div class="flex justify-end gap-[16px] items-center">
59
31
  <Button variant="outline" @click="onClose">ยกเลิก</Button>
60
32
  <Button @click="onSaveDraft"> บันทึกแบบร่าง </Button>
61
- <Button
62
- type="submit"
63
- color="primary"
64
- :disabled="!meta.valid || isLoading"
65
- >
33
+ <Button type="submit" color="primary" :disabled="!meta.valid || isLoading">
66
34
  <span v-if="isLoading">กำลังบันทึก...</span>
67
35
  <span v-else>เผยแพร่</span>
68
36
  </Button>
@@ -92,9 +60,9 @@ const isLoading = ref(false);
92
60
  const isOpen = defineModel({ type: Boolean, ...{
93
61
  default: false
94
62
  } });
63
+ const isEditMode = computed(() => !!props.item?.id);
95
64
  const drawerTitle = computed(() => {
96
- const hasTitle = props.item?.title?.trim();
97
- return hasTitle ? "\u0E41\u0E01\u0E49\u0E44\u0E02\u0E1A\u0E25\u0E47\u0E2D\u0E01" : "\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E1A\u0E25\u0E47\u0E2D\u0E01";
65
+ return isEditMode.value ? "\u0E41\u0E01\u0E49\u0E44\u0E02\u0E1A\u0E25\u0E47\u0E2D\u0E01" : "\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E1A\u0E25\u0E47\u0E2D\u0E01";
98
66
  });
99
67
  watch(isOpen, (newVal) => {
100
68
  if (newVal) {
@@ -175,13 +143,11 @@ const onSubmit = async () => {
175
143
  let coverImageUrl = "";
176
144
  if (form.value.coverImage && form.value.coverImage.length > 0) {
177
145
  const fileItem = form.value.coverImage[0];
178
- if (fileItem && fileItem.file) {
179
- console.log("File found:", fileItem.file);
180
- console.log("File name:", fileItem.file.name);
146
+ if (fileItem?.file) {
181
147
  coverImageUrl = await uploadImage(fileItem.file);
148
+ } else if (fileItem?.url) {
149
+ coverImageUrl = fileItem.url;
182
150
  }
183
- } else {
184
- console.log("No cover image selected");
185
151
  }
186
152
  const payload = {
187
153
  title: form.value.title,
@@ -189,27 +155,24 @@ const onSubmit = async () => {
189
155
  tags: form.value.tags.map((t) => t.name || t),
190
156
  cover_image_url: coverImageUrl
191
157
  };
192
- console.log("Submitting blog payload:", payload);
193
- const res = await api("/profiles/me/blog", {
194
- method: "POST",
195
- body: payload
196
- });
197
- if (res.code === "SUCCESS_CREATED") {
198
- $toast.success("\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E1A\u0E17\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08");
158
+ const res = await api(
159
+ isEditMode.value ? `/blogs/${form.value.id}` : "/profiles/me/blog",
160
+ {
161
+ method: isEditMode.value ? "PUT" : "POST",
162
+ body: payload
163
+ }
164
+ );
165
+ const isSuccess = isEditMode.value ? res.code === "SUCCESS_OK" : res.code === "SUCCESS_CREATED";
166
+ if (isSuccess) {
167
+ $toast.success(isEditMode.value ? "\u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E1A\u0E17\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08" : "\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E1A\u0E17\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08");
199
168
  emit("submit", form.value);
200
- emit("success", res.data || {
201
- id: `temp-${Date.now()}`,
202
- created_at: (/* @__PURE__ */ new Date()).toISOString(),
203
- title: form.value.title,
204
- content: form.value.content,
205
- cover_image_url: coverImageUrl
206
- });
169
+ emit("success", res.data);
207
170
  isOpen.value = false;
208
171
  } else {
209
- throw new Error(res.message || "Failed to create blog");
172
+ throw new Error(res.message || "\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14");
210
173
  }
211
174
  } catch (error) {
212
- $toast.error(error.message || "\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E43\u0E19\u0E01\u0E32\u0E23\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E1A\u0E17\u0E04\u0E27\u0E32\u0E21");
175
+ $toast.error(error.message || "\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E43\u0E19\u0E01\u0E32\u0E23\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E1A\u0E17\u0E04\u0E27\u0E32\u0E21");
213
176
  console.error("Submit error:", error);
214
177
  } finally {
215
178
  isLoading.value = false;
@@ -1,4 +1,5 @@
1
1
  export interface DrawerPostBlogItem {
2
+ id?: string;
2
3
  title: string;
3
4
  content: object[];
4
5
  tags: any[];
@@ -50,8 +50,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
50
50
  name: string;
51
51
  description: string;
52
52
  options: AutocompleteOption[] | string[] | number[];
53
- limit: number;
54
53
  placeholder: string;
54
+ limit: number;
55
55
  disabledErrorMessage: boolean;
56
56
  disabledBorder: boolean;
57
57
  showCounter: boolean;
@@ -50,8 +50,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
50
50
  name: string;
51
51
  description: string;
52
52
  options: AutocompleteOption[] | string[] | number[];
53
- limit: number;
54
53
  placeholder: string;
54
+ limit: number;
55
55
  disabledErrorMessage: boolean;
56
56
  disabledBorder: boolean;
57
57
  showCounter: boolean;
@@ -114,7 +114,7 @@ const listSocial = [
114
114
  },
115
115
  {
116
116
  name: "WhatsApp",
117
- icon: "Whatsapp",
117
+ icon: "WhatsApp",
118
118
  example: "https://wa.me/1234567890",
119
119
  regex: /(?:https?:\/\/)?(?:wa\.me|api\.whatsapp\.com)\/.+/i
120
120
  },
@@ -26,8 +26,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
26
26
  }>, {
27
27
  name: string;
28
28
  state: "user" | "admin";
29
- limit: number;
30
29
  placeholder: string;
30
+ limit: number;
31
31
  ignore: string[];
32
32
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
33
33
  declare const _default: typeof __VLS_export;
@@ -48,7 +48,7 @@
48
48
  @openAutoFocus.prevent
49
49
  @interactOutside="handleInteractOutside"
50
50
  >
51
- <ShadCommand>
51
+ <ShadCommand :filter="() => 1">
52
52
  <ShadCommandInput
53
53
  v-if="props.state === 'admin'"
54
54
  placeholder="ค้นหาแท็ก"
@@ -26,8 +26,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
26
26
  }>, {
27
27
  name: string;
28
28
  state: "user" | "admin";
29
- limit: number;
30
29
  placeholder: string;
30
+ limit: number;
31
31
  ignore: string[];
32
32
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
33
33
  declare const _default: typeof __VLS_export;
@@ -1,10 +1,5 @@
1
1
  <template>
2
- <Modal
3
- title="ป้อนรหัสรักษาความปลอดภัย (OTP)"
4
- @close="emit('close')"
5
- @submit="onVerifyOTP"
6
- v-model="isOpen"
7
- >
2
+ <Modal title="ป้อนรหัสรักษาความปลอดภัย (OTP)" @close="emit('close')" @submit="onVerifyOTP" v-model="isOpen">
8
3
  <div class="space-y-[16px]">
9
4
  <div class="text-center font-body-large">
10
5
  <div>
@@ -15,26 +10,23 @@
15
10
  </div>
16
11
 
17
12
  <div class="flex justify-center">
18
- <InputOTP
19
- name="otp"
20
- columnGap="auto"
21
- v-model="valueOTP"
22
- :error="otpError"
23
- />
13
+ <InputOTP name="otp" columnGap="auto" v-model="valueOTP" :error="otpError" />
24
14
  </div>
25
15
 
26
16
  <div class="text-center font-body-large">
27
- กรุณารอ <span class="text-primary">04.59</span> นาที
28
- จะส่งรหัสยืนยันอีกครั้ง
17
+ <template v-if="countdown !== '00:00'">
18
+ กรุณารอ <span class="text-primary">{{ countdown }}</span> นาที
19
+ จะส่งรหัสยืนยันอีกครั้ง
20
+ </template>
21
+ <template v-else>
22
+ ไม่ได้รับรหัส?
23
+ <Button variant="link" color="primary" @click="onResend">ส่งรหัสอีกครั้ง</Button>
24
+ </template>
29
25
  </div>
30
26
  </div>
27
+
31
28
  <template #footer="{ meta }">
32
- <Button
33
- type="submit"
34
- color="primary"
35
- :disabled="!meta.valid"
36
- class="w-full"
37
- >
29
+ <Button type="submit" color="primary" :disabled="!meta.valid" class="w-full">
38
30
  {{ props.confirmedText }}
39
31
  </Button>
40
32
  </template>
@@ -43,6 +35,7 @@
43
35
 
44
36
  <script setup>
45
37
  import { ref, watch } from "vue";
38
+ import { useCountDown } from "../../composables/useCountDown";
46
39
  const emit = defineEmits(["complete", "close"]);
47
40
  const props = defineProps({
48
41
  phoneLabel: { type: String, required: false, default: "" },
@@ -55,13 +48,21 @@ const props = defineProps({
55
48
  disabled: { type: Boolean, required: false },
56
49
  placeholder: { type: String, required: false }
57
50
  });
58
- const isOpen = defineModel({ type: Boolean, ...{
59
- default: false
60
- } });
51
+ const isOpen = defineModel({ type: Boolean, ...{ default: false } });
61
52
  const textRef = ref("");
62
53
  const valueOTP = ref("");
63
54
  const otpError = ref("");
64
- const loadingModal = ref(false);
55
+ const { CountdownTime } = useCountDown();
56
+ const expireAt = ref("");
57
+ const countdown = CountdownTime(expireAt);
58
+ const resetCountdown = () => {
59
+ expireAt.value = new Date(Date.now() + 5 * 60 * 1e3).toISOString();
60
+ };
61
+ const onResend = () => {
62
+ valueOTP.value = "";
63
+ otpError.value = "";
64
+ resetCountdown();
65
+ };
65
66
  const onVerifyOTP = () => {
66
67
  if (valueOTP.value === "123456") {
67
68
  otpError.value = "";
@@ -75,5 +76,6 @@ watch(isOpen, (value) => {
75
76
  textRef.value = "";
76
77
  valueOTP.value = "";
77
78
  otpError.value = "";
79
+ if (value) resetCountdown();
78
80
  });
79
81
  </script>
@@ -1,156 +1,69 @@
1
1
  <template>
2
- <Modal
3
- width="468"
4
- title="โปรไฟล์"
5
- title-position="center"
6
- @close="onClose"
7
- v-model="modelValue"
8
- >
2
+ <Modal class="w-[425px]" title="โปรไฟล์" @close="onClose" v-model="modelValue">
9
3
  <template #header>
10
- <div v-if="step !== 'menu'">
4
+ <div v-if="step !== 'menu'" class="flex flex-col gap-[8px]">
11
5
  <div class="flex gap-[8px] items-center w-full">
12
6
  <Button variant="text" @click="step = 'menu'">
13
7
  <Icon name="lucide:chevron-left" :size="24" />
14
8
  </Button>
15
9
  <div class="font-title-medium-prominent">
16
10
  <div v-if="step === 'profile-name'">แก้ไขชื่อโปรไฟล์</div>
17
- <div v-if="step === 'premium-id'">พรีเมียม ID</div>
18
11
  <div v-if="step === 'category'">หมวดหมู่</div>
19
12
  </div>
20
13
  </div>
14
+ <div v-if="step === 'profile-name'" class="font-body-large">
15
+ หากคุณเปลี่ยนชื่อ คุณจะไม่สามารถเปลี่ยนชื่อได้อีกเป็นเวลา 60 วัน
16
+ <Button variant="link" color="primary" @click="goToHelpCenter">เรียนรู้เพิ่มเติม</Button>
17
+ </div>
18
+ <div v-if="step === 'category'" class="font-body-large">
19
+ เลือกหมวดหมู่ที่สอดคล้องกับโปรไฟล์
20
+ </div>
21
+ </div>
22
+ <div v-if="step === 'menu'" class="flex flex-col gap-[8px]">
23
+ <div class="font-title-medium-prominent">โปรไฟล์</div>
24
+ <div class="font-body-large">
25
+ จัดการชื่อโปรไฟล์และชื่อผู้ใช้ของคุณสำหรับการแสดงผลในระบบ และการเข้าถึงโปรไฟล์
26
+ <Button variant="link" color="primary" @click="goToHelpCenter">เรียนรู้เพิ่มเติม</Button>
27
+ </div>
21
28
  </div>
22
29
  </template>
23
30
 
24
31
  <div v-if="step === 'menu'" class="flex flex-col gap-[16px]">
25
- <div class="font-body-large">
26
- จัดการชื่อโปรไฟล์และชื่อผู้ใช้ของคุณสำหรับการแสดงผลในระบบ
27
- และการเข้าถึงโปรไฟล์
28
- <span class="text-primary cursor-pointer"> เรียนรู้เพิ่มเติม</span>
29
- </div>
30
- <div class="flex flex-col border border-mercury rounded-[8px]">
31
- <div
32
- v-for="(menu, i) in listMenu"
33
- :key="menu.label"
34
- @click="handleMenuClick(menu)"
35
- :class="[
36
- 'flex p-[16px] justify-between items-center',
37
- isMenuClickable(menu) ? 'cursor-pointer hover:bg-smoke' : '',
38
- i < listMenu.length - 1 ? 'border-b border-mercury' : isMenuClickable(menu) ? 'hover:rounded-b-[8px]' : ''
39
- ]"
40
- >
41
- <div class="flex flex-col min-w-[378px]">
42
- <div class="font-body-large-prominent">{{ menu.label }}</div>
43
- <div class="font-body-large text-gray">{{ menu.value || "-" }}</div>
32
+ <div class="flex flex-col gap-[4px]">
33
+ <template v-for="(menu, i) in listMenu" :key="menu.label">
34
+ <div @click="handleMenuClick(menu)" :class="[
35
+ 'flex justify-between items-center',
36
+ isMenuClickable(menu) ? 'cursor-pointer ' : ''
37
+ ]">
38
+ <div class="flex flex-col w-full">
39
+ <div class="font-body-large-prominent">{{ menu.label }}</div>
40
+ <div class="font-body-large text-gray">{{ menu.value || "-" }}</div>
41
+ </div>
42
+ <Icon v-if="isMenuClickable(menu)" name="lucide:chevron-right" :size="24" class="text-black" />
44
43
  </div>
45
- <Button
46
- v-if="isMenuClickable(menu)"
47
- variant="text"
48
- size="small"
49
- color="black"
50
- icon-size="18"
51
- prepend-icon="lucide:chevron-right"
52
- />
53
- </div>
44
+ <Divider v-if="i < listMenu.length - 1" />
45
+ </template>
54
46
  </div>
55
47
  </div>
56
48
 
57
49
  <div v-else class="flex flex-col gap-[16px]">
58
50
  <template v-if="step === 'profile-name'">
59
- <div class="flex flex-col gap-[16px]">
60
- <div class="font-body-large">
61
- หากคุณเปลี่ยนชื่อ คุณจะไม่สามารถเปลี่ยนชื่อได้อีกเป็นเวลา 60 วัน
62
- <Button
63
- variant="text"
64
- color="primary"
65
- disabled-padding
66
- @click="goToHelpCenter"
67
- >
68
- เรียนรู้เพิ่มเติม
69
- </Button>
70
- </div>
71
- </div>
72
- <Form
73
- v-slot="{ meta }"
74
- class="flex flex-col gap-[16px]"
75
- @submit="saveProfileName"
76
- >
77
- <InputTextField
78
- name="profileName"
79
- label="ชื่อโปรไฟล์"
80
- :placeholder="listMenu[0]?.value || '-'"
81
- full-width
82
- validate-on-input
83
- :rules="ruleProfileName"
84
- v-model="profileName"
85
- />
86
- <Button
87
- type="submit"
88
- color="primary"
89
- full-width
90
- :disabled="!meta.valid || isLoading"
91
- >
51
+ <Form v-slot="{ meta }" class="flex flex-col gap-[16px]" @submit="saveProfileName">
52
+ <InputTextField name="profileName" label="ชื่อโปรไฟล์" :placeholder="listMenu[0]?.value || '-'" full-width
53
+ validate-on-input :rules="ruleProfileName" v-model="profileName" />
54
+ <Button type="submit" color="primary" full-width :disabled="!meta.valid || isLoading">
92
55
  <span v-if="isLoading">กำลังบันทึก...</span>
93
56
  <span v-else>บันทึก</span>
94
57
  </Button>
95
58
  </Form>
96
59
  </template>
97
60
 
98
- <template v-if="step === 'premium-id'">
99
- <div class="flex flex-col gap-[16px]">
100
- <div class="font-body-large">
101
- ดูรายละเอียดเกี่ยวกับการใช้พรีเมียม ID และซื้อพรีเมียม ID ได้ที่นี่
102
61
 
103
- <Button
104
- variant="text"
105
- color="primary"
106
- disabled-padding
107
- @click="goToDetailPremiumID"
108
- >
109
- ดูรายละเอียดเกี่ยวกับพรีเมียม ID
110
- </Button>
111
- </div>
112
- <div class="flex gap-[40px]">
113
- <div class="font-body-large w-[140px]">พรีเมียม ID</div>
114
- <div class="font-body-large text-gray">ไม่มี</div>
115
- </div>
116
- <div class="flex gap-[40px]">
117
- <div class="font-body-large w-[140px]">วันชำระเงินครั้งต่อไป</div>
118
- <div class="font-body-large text-gray">ไม่มี</div>
119
- </div>
120
- <Divider :height="0" />
121
- <div class="font-body-large-prominent">
122
- ค่าบริการรายปีของพรีเมียม ID
123
- </div>
124
- <div class="flex gap-[40px]">
125
- <div class="font-body-large w-[140px]">ราคา (ไม่รวมภาษี)</div>
126
- <div class="font-body-large text-gray">฿444</div>
127
- </div>
128
- <Divider :height="0" />
129
- <InputTextField
130
- v-model="namePremiumID"
131
- label="ซื้อพรีเมียม ID"
132
- show-counter
133
- :limit="18"
134
- prepend-icon="lucide:at-sign"
135
- />
136
- <Button
137
- color="primary"
138
- :disabled="!namePremiumID || namePremiumID.length > 18"
139
- >ซื้อพรีเมียม ID</Button
140
- >
141
- </div>
142
- </template>
143
62
 
144
63
  <template v-if="step === 'category'">
145
64
  <div class="flex flex-col gap-[16px]">
146
- <div class="font-body-large">เลือกหมวดหมู่ที่สอดคล้องกับโปรไฟล์</div>
147
- <InputAutocomplete
148
- v-model="profileCategory"
149
- :options="profileCategoryItems"
150
- name="profileCategory"
151
- placeholder="ค้นหาหรือเลือกหมวดหมู่ที่เกี่ยวข้อง"
152
- label="หมวดหมู่"
153
- />
65
+ <InputAutocomplete v-model="profileCategory" :options="profileCategoryItems" name="profileCategory"
66
+ placeholder="ค้นหาหรือเลือกหมวดหมู่ที่เกี่ยวข้อง" label="หมวดหมู่" />
154
67
  <Button color="primary" :disabled="!profileCategory">บันทึก</Button>
155
68
  </div>
156
69
  </template>
@@ -179,10 +92,6 @@ const modelValue = defineModel({ type: Boolean, ...{
179
92
  } });
180
93
  const step = ref("menu");
181
94
  const profileName = ref();
182
- const premiumId = ref();
183
- const category = ref();
184
- const namePremiumID = ref();
185
- const isOpenDropdown = ref(false);
186
95
  const profileCategory = ref();
187
96
  const profileCategoryItems = ref([]);
188
97
  const isLoading = ref(false);
@@ -277,9 +186,6 @@ const saveProfileName = async (values, { setErrors }) => {
277
186
  const goToHelpCenter = () => {
278
187
  console.log("go to help center");
279
188
  };
280
- const goToDetailPremiumID = () => {
281
- console.log("go to detail premium id");
282
- };
283
189
  const getProfile = () => {
284
190
  const commonMenus = [
285
191
  {
@@ -299,15 +205,6 @@ const getProfile = () => {
299
205
  }
300
206
  }
301
207
  ];
302
- const businessMenus = [
303
- {
304
- label: "\u0E1E\u0E23\u0E35\u0E40\u0E21\u0E35\u0E22\u0E21 ID",
305
- value: props.profileDetail?.premiumId || "\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14",
306
- action: () => {
307
- step.value = "premium-id";
308
- }
309
- }
310
- ];
311
208
  const profileMenus = [
312
209
  {
313
210
  label: "\u0E2B\u0E21\u0E27\u0E14\u0E2B\u0E21\u0E39\u0E48",
@@ -317,15 +214,10 @@ const getProfile = () => {
317
214
  }
318
215
  }
319
216
  ];
320
- if (props.state === "business") {
321
- listMenu.value = [...commonMenus, ...businessMenus, ...profileMenus];
322
- } else {
323
- listMenu.value = [...commonMenus, ...profileMenus];
324
- }
217
+ listMenu.value = [...commonMenus, ...profileMenus];
325
218
  };
326
219
  const reset = () => {
327
220
  profileName.value = "";
328
- premiumId.value = "";
329
221
  };
330
222
  const onClose = () => {
331
223
  reset();
@@ -1,25 +1,21 @@
1
1
  <template>
2
- <Modal title="แชร์" width="396" v-model="isOpen" :loading="true">
3
- <div class="flex justify-between">
4
- <div
5
- v-for="(share, i) of listShares"
6
- :key="i"
7
- @click="share.action()"
8
- class="flex flex-col gap-[4px] items-center cursor-pointer w-[73px]"
9
- >
10
- <Icon :name="share.icon" size="40" />
11
- <div class="font-body-large text-gray">
12
- {{ share.label }}
2
+ <Modal title="แชร์" class="w-[426px]" v-model="isOpen" :loading="false">
3
+ <div class="flex flex-col gap-[16px]">
4
+ <Divider />
5
+ <div class="flex justify-between">
6
+ <div v-for="(share, i) of listShares" :key="i" @click="share.action()"
7
+ class="flex flex-col gap-[4px] items-center cursor-pointer w-[73px]">
8
+ <Icon :name="share.icon" size="40" />
9
+ <div class="font-body-large text-gray">
10
+ {{ share.label }}
11
+ </div>
12
+ </div>
13
+ <div class="flex flex-col gap-[4px] items-center cursor-pointer w-[73px]" @click="onCopyLink">
14
+ <div class="w-[40px] h-[40px] rounded-full bg-dark text-white flex items-center justify-center">
15
+ <Icon name="fa6-solid:link" size="20" />
16
+ </div>
17
+ <div class="font-body-large text-gray text-nowrap">คัดลอกลิงค์</div>
13
18
  </div>
14
- </div>
15
- <div
16
- class="flex flex-col gap-[4px] items-center cursor-pointer w-[73px]"
17
- @click="onCopyLink"
18
- >
19
- <ShadAvatar size="40">
20
- <Icon name="fa6-solid:link" size="40" />
21
- </ShadAvatar>
22
- <div class="font-body-large text-gray text-nowrap">คัดลอกลิงค์</div>
23
19
  </div>
24
20
  </div>
25
21
  </Modal>
@@ -8,19 +8,19 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_19) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ openAutoFocus: (event: Event) => any;
12
+ closeAutoFocus: (event: Event) => any;
11
13
  escapeKeyDown: (event: KeyboardEvent) => any;
12
14
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
13
15
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
14
16
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
15
- openAutoFocus: (event: Event) => any;
16
- closeAutoFocus: (event: Event) => any;
17
17
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
19
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
18
20
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
19
21
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
20
22
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
21
23
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
22
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
23
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
24
24
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
25
25
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
26
26
  declare const _default: typeof __VLS_export;
@@ -8,19 +8,19 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_19) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ openAutoFocus: (event: Event) => any;
12
+ closeAutoFocus: (event: Event) => any;
11
13
  escapeKeyDown: (event: KeyboardEvent) => any;
12
14
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
13
15
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
14
16
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
15
- openAutoFocus: (event: Event) => any;
16
- closeAutoFocus: (event: Event) => any;
17
17
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
19
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
18
20
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
19
21
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
20
22
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
21
23
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
22
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
23
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
24
24
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
25
25
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
26
26
  declare const _default: typeof __VLS_export;
@@ -8,7 +8,7 @@ export const buttonVariants = cva(
8
8
  default: "shadow-sm",
9
9
  outline: "shadow-sm",
10
10
  ghost: "",
11
- link: "underline-offset-4 hover:underline",
11
+ link: "underline-offset-4 hover:underline p-0 h-auto",
12
12
  text: "",
13
13
  icon: "has-[>svg]:px-0"
14
14
  },
@@ -129,6 +129,27 @@ export const buttonVariants = cva(
129
129
  variant: "text",
130
130
  color: "destructive",
131
131
  class: "text-destructive hover:opacity-80"
132
+ },
133
+ // link variant - inline link style, primary blue by default, no padding
134
+ {
135
+ variant: "link",
136
+ color: "default",
137
+ class: "text-foreground hover:opacity-80"
138
+ },
139
+ {
140
+ variant: "link",
141
+ color: "primary",
142
+ class: "text-primary hover:opacity-80"
143
+ },
144
+ {
145
+ variant: "link",
146
+ color: "secondary",
147
+ class: "text-secondary hover:opacity-80"
148
+ },
149
+ {
150
+ variant: "link",
151
+ color: "destructive",
152
+ class: "text-destructive hover:opacity-80"
132
153
  }
133
154
  ],
134
155
  defaultVariants: {
@@ -14,21 +14,21 @@ type __VLS_Slots = {} & {
14
14
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
15
  submit: (event: Event) => any;
16
16
  close: (event: Event) => any;
17
+ openAutoFocus: (event: Event) => any;
18
+ closeAutoFocus: (event: Event) => any;
17
19
  escapeKeyDown: (event: KeyboardEvent) => any;
18
20
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
19
21
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
20
22
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
21
- openAutoFocus: (event: Event) => any;
22
- closeAutoFocus: (event: Event) => any;
23
23
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
24
24
  onSubmit?: ((event: Event) => any) | undefined;
25
25
  onClose?: ((event: Event) => any) | undefined;
26
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
27
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
26
28
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
27
29
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
28
30
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
29
31
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
30
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
31
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
32
32
  }>, {
33
33
  disabledCloseBtn: boolean;
34
34
  noPadding: boolean;
@@ -14,21 +14,21 @@ type __VLS_Slots = {} & {
14
14
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
15
  submit: (event: Event) => any;
16
16
  close: (event: Event) => any;
17
+ openAutoFocus: (event: Event) => any;
18
+ closeAutoFocus: (event: Event) => any;
17
19
  escapeKeyDown: (event: KeyboardEvent) => any;
18
20
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
19
21
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
20
22
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
21
- openAutoFocus: (event: Event) => any;
22
- closeAutoFocus: (event: Event) => any;
23
23
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
24
24
  onSubmit?: ((event: Event) => any) | undefined;
25
25
  onClose?: ((event: Event) => any) | undefined;
26
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
27
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
26
28
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
27
29
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
28
30
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
29
31
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
30
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
31
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
32
32
  }>, {
33
33
  disabledCloseBtn: boolean;
34
34
  noPadding: boolean;
@@ -8,19 +8,19 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_22) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ openAutoFocus: (event: Event) => any;
12
+ closeAutoFocus: (event: Event) => any;
11
13
  escapeKeyDown: (event: KeyboardEvent) => any;
12
14
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
13
15
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
14
16
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
15
- openAutoFocus: (event: Event) => any;
16
- closeAutoFocus: (event: Event) => any;
17
17
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
19
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
18
20
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
19
21
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
20
22
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
21
23
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
22
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
23
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
24
24
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
25
25
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
26
26
  declare const _default: typeof __VLS_export;
@@ -8,19 +8,19 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_22) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ openAutoFocus: (event: Event) => any;
12
+ closeAutoFocus: (event: Event) => any;
11
13
  escapeKeyDown: (event: KeyboardEvent) => any;
12
14
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
13
15
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
14
16
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
15
- openAutoFocus: (event: Event) => any;
16
- closeAutoFocus: (event: Event) => any;
17
17
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
19
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
18
20
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
19
21
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
20
22
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
21
23
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
22
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
23
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
24
24
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
25
25
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
26
26
  declare const _default: typeof __VLS_export;
@@ -9,17 +9,17 @@ type __VLS_Slots = {} & {
9
9
  default?: (props: typeof __VLS_16) => any;
10
10
  };
11
11
  declare const __VLS_base: import("vue").DefineComponent<ExtendedDropdownMenuContentProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
+ closeAutoFocus: (event: Event) => any;
12
13
  escapeKeyDown: (event: KeyboardEvent) => any;
13
14
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
14
15
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
15
16
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
16
- closeAutoFocus: (event: Event) => any;
17
17
  }, string, import("vue").PublicProps, Readonly<ExtendedDropdownMenuContentProps> & Readonly<{
18
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
18
19
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
19
20
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
20
21
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
21
22
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
22
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
23
23
  }>, {
24
24
  sideOffset: number;
25
25
  preventOpenAutoFocus: boolean;
@@ -9,17 +9,17 @@ type __VLS_Slots = {} & {
9
9
  default?: (props: typeof __VLS_16) => any;
10
10
  };
11
11
  declare const __VLS_base: import("vue").DefineComponent<ExtendedDropdownMenuContentProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
+ closeAutoFocus: (event: Event) => any;
12
13
  escapeKeyDown: (event: KeyboardEvent) => any;
13
14
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
14
15
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
15
16
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
16
- closeAutoFocus: (event: Event) => any;
17
17
  }, string, import("vue").PublicProps, Readonly<ExtendedDropdownMenuContentProps> & Readonly<{
18
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
18
19
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
19
20
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
20
21
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
21
22
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
22
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
23
23
  }>, {
24
24
  sideOffset: number;
25
25
  preventOpenAutoFocus: boolean;
@@ -8,20 +8,20 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_8) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ openAutoFocus: (event: Event) => any;
12
+ closeAutoFocus: (event: Event) => any;
11
13
  escapeKeyDown: (event: KeyboardEvent) => any;
12
14
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
13
15
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
14
16
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
15
- openAutoFocus: (event: Event) => any;
16
- closeAutoFocus: (event: Event) => any;
17
17
  entryFocus: (event: Event) => any;
18
18
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
20
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
19
21
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
20
22
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
21
23
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
22
24
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
23
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
24
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
25
25
  onEntryFocus?: ((event: Event) => any) | undefined;
26
26
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
27
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -8,20 +8,20 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_8) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ openAutoFocus: (event: Event) => any;
12
+ closeAutoFocus: (event: Event) => any;
11
13
  escapeKeyDown: (event: KeyboardEvent) => any;
12
14
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
13
15
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
14
16
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
15
- openAutoFocus: (event: Event) => any;
16
- closeAutoFocus: (event: Event) => any;
17
17
  entryFocus: (event: Event) => any;
18
18
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
20
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
19
21
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
20
22
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
21
23
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
22
24
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
23
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
24
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
25
25
  onEntryFocus?: ((event: Event) => any) | undefined;
26
26
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
27
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -8,19 +8,19 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_14) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ openAutoFocus: (event: Event) => any;
12
+ closeAutoFocus: (event: Event) => any;
11
13
  escapeKeyDown: (event: KeyboardEvent) => any;
12
14
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
13
15
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
14
16
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
15
- openAutoFocus: (event: Event) => any;
16
- closeAutoFocus: (event: Event) => any;
17
17
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
19
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
18
20
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
19
21
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
20
22
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
21
23
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
22
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
23
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
24
24
  }>, {
25
25
  align: "center" | "start" | "end";
26
26
  sideOffset: number;
@@ -8,19 +8,19 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_14) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ openAutoFocus: (event: Event) => any;
12
+ closeAutoFocus: (event: Event) => any;
11
13
  escapeKeyDown: (event: KeyboardEvent) => any;
12
14
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
13
15
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
14
16
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
15
- openAutoFocus: (event: Event) => any;
16
- closeAutoFocus: (event: Event) => any;
17
17
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
19
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
18
20
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
19
21
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
20
22
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
21
23
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
22
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
23
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
24
24
  }>, {
25
25
  align: "center" | "start" | "end";
26
26
  sideOffset: number;
@@ -8,13 +8,13 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_25) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ closeAutoFocus: (event: Event) => any;
11
12
  escapeKeyDown: (event: KeyboardEvent) => any;
12
13
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
13
- closeAutoFocus: (event: Event) => any;
14
14
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
15
16
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
16
17
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
17
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
18
18
  }>, {
19
19
  position: "item-aligned" | "popper";
20
20
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -8,13 +8,13 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_25) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ closeAutoFocus: (event: Event) => any;
11
12
  escapeKeyDown: (event: KeyboardEvent) => any;
12
13
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
13
- closeAutoFocus: (event: Event) => any;
14
14
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
15
16
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
16
17
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
17
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
18
18
  }>, {
19
19
  position: "item-aligned" | "popper";
20
20
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -13,21 +13,21 @@ type __VLS_Slots = {} & {
13
13
  declare const __VLS_base: import("vue").DefineComponent<SheetContentProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
14
  submit: (event: Event) => any;
15
15
  close: () => any;
16
+ openAutoFocus: (event: Event) => any;
17
+ closeAutoFocus: (event: Event) => any;
16
18
  escapeKeyDown: (event: KeyboardEvent) => any;
17
19
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
18
20
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
19
21
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
20
- openAutoFocus: (event: Event) => any;
21
- closeAutoFocus: (event: Event) => any;
22
22
  }, string, import("vue").PublicProps, Readonly<SheetContentProps> & Readonly<{
23
23
  onSubmit?: ((event: Event) => any) | undefined;
24
24
  onClose?: (() => any) | undefined;
25
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
26
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
25
27
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
26
28
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
27
29
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
28
30
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
29
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
30
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
31
31
  }>, {
32
32
  side: "top" | "right" | "bottom" | "left";
33
33
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -13,21 +13,21 @@ type __VLS_Slots = {} & {
13
13
  declare const __VLS_base: import("vue").DefineComponent<SheetContentProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
14
  submit: (event: Event) => any;
15
15
  close: () => any;
16
+ openAutoFocus: (event: Event) => any;
17
+ closeAutoFocus: (event: Event) => any;
16
18
  escapeKeyDown: (event: KeyboardEvent) => any;
17
19
  pointerDownOutside: (event: import("reka-ui").PointerDownOutsideEvent) => any;
18
20
  focusOutside: (event: import("reka-ui").FocusOutsideEvent) => any;
19
21
  interactOutside: (event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any;
20
- openAutoFocus: (event: Event) => any;
21
- closeAutoFocus: (event: Event) => any;
22
22
  }, string, import("vue").PublicProps, Readonly<SheetContentProps> & Readonly<{
23
23
  onSubmit?: ((event: Event) => any) | undefined;
24
24
  onClose?: (() => any) | undefined;
25
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
26
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
25
27
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
26
28
  onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
27
29
  onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
28
30
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
29
- onOpenAutoFocus?: ((event: Event) => any) | undefined;
30
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
31
31
  }>, {
32
32
  side: "top" | "right" | "bottom" | "left";
33
33
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pukaad-ui-lib",
3
- "version": "1.231.0",
3
+ "version": "1.233.0",
4
4
  "description": "pukaad-ui for MeMSG",
5
5
  "repository": {
6
6
  "type": "git",