vue-wiguet-chatweb 0.1.23 → 0.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.vue.d.ts +2 -0
- package/dist/components/Chat.vue.d.ts +17 -6
- package/dist/components/ChatMessage.vue.d.ts +12 -0
- package/dist/components/DangerIcon.vue.d.ts +1 -1
- package/dist/components/IconAttach.vue.d.ts +2 -0
- package/dist/components/IconChat.vue.d.ts +1 -1
- package/dist/components/IconClose.vue.d.ts +1 -1
- package/dist/components/IconSend.vue.d.ts +1 -1
- package/dist/components/IconTelegram.vue.d.ts +1 -1
- package/dist/components/IconWhatsApp.vue.d.ts +1 -1
- package/dist/components/IconWidget.vue.d.ts +1 -1
- package/dist/components/Loader.vue.d.ts +1 -1
- package/dist/components/MessageList.vue.d.ts +14 -6
- package/dist/components/ODialog/IPropsDialog.d.ts +3 -0
- package/dist/components/ODialog/IPropsSidebar.d.ts +5 -0
- package/dist/components/ODialog/ODialog.vue.d.ts +22 -0
- package/dist/components/Widget.vue.d.ts +10 -6
- package/dist/dto/app.dto.d.ts +9 -1
- package/dist/hooks/useMobile.d.ts +3 -0
- package/dist/index.d.ts +1 -1
- package/dist/store/config.d.ts +1 -1
- package/dist/store/index.d.ts +1 -4
- package/dist/style.css +1 -1
- package/dist/vue-wiguet-chatweb.js +3379 -2759
- package/dist/vue-wiguet-chatweb.umd.cjs +17 -7
- package/package.json +8 -6
- package/src/components/Chat.vue +157 -53
- package/src/components/IconAttach.vue +24 -0
- package/src/components/IconSend.vue +1 -1
- package/src/components/LoadingComponent.vue +111 -0
- package/src/components/MessageList.vue +14 -30
- package/src/components/ODialog/IPropsDialog.ts +4 -0
- package/src/components/ODialog/IPropsSidebar.ts +13 -0
- package/src/components/ODialog/ODialog.vue +85 -0
- package/src/components/Widget.vue +19 -1
| @@ -0,0 +1,85 @@ | |
| 1 | 
            +
            <template>
         | 
| 2 | 
            +
              <div v-if="props.modelValue" class="dialog-overlay" @click="closeDialog">
         | 
| 3 | 
            +
                <div class="dialog-content" @click.stop>
         | 
| 4 | 
            +
                  <div class="header-widget">
         | 
| 5 | 
            +
                    <h4 class="title-chat">{{ title }}</h4>
         | 
| 6 | 
            +
                    <button @click="() => closeDialog()" class="btn-close">
         | 
| 7 | 
            +
                      <IconClose class="pointer" />
         | 
| 8 | 
            +
                    </button>
         | 
| 9 | 
            +
                  </div>
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  <div>
         | 
| 12 | 
            +
                    <slot></slot>
         | 
| 13 | 
            +
                  </div>
         | 
| 14 | 
            +
                </div>
         | 
| 15 | 
            +
              </div>
         | 
| 16 | 
            +
            </template>
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            <script lang="ts" setup>
         | 
| 19 | 
            +
            import IconClose from '../IconClose.vue'
         | 
| 20 | 
            +
            import { IPropsDialog } from './IPropsDialog';
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            const props = defineProps<IPropsDialog>()
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            const emit = defineEmits(['update:modelValue']);
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            const closeDialog = () => {
         | 
| 27 | 
            +
              emit("update:modelValue", false);
         | 
| 28 | 
            +
            };
         | 
| 29 | 
            +
            </script>
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            <style scoped>
         | 
| 32 | 
            +
            .dialog-overlay {
         | 
| 33 | 
            +
              position: fixed;
         | 
| 34 | 
            +
              top: 0;
         | 
| 35 | 
            +
              left: 0;
         | 
| 36 | 
            +
              width: 100%;
         | 
| 37 | 
            +
              height: 100%;
         | 
| 38 | 
            +
              background-color: rgba(0, 0, 0, 0.5);
         | 
| 39 | 
            +
              display: flex;
         | 
| 40 | 
            +
              justify-content: center;
         | 
| 41 | 
            +
              align-items: center;
         | 
| 42 | 
            +
              opacity: 0;
         | 
| 43 | 
            +
              animation: fadeIn 0.3s forwards;
         | 
| 44 | 
            +
            }
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            .dialog-content {
         | 
| 47 | 
            +
              background-color: white;
         | 
| 48 | 
            +
              padding: 15px;
         | 
| 49 | 
            +
              border-radius: 8px;
         | 
| 50 | 
            +
              text-align: center;
         | 
| 51 | 
            +
              animation: slideIn 0.3s ease-out forwards;
         | 
| 52 | 
            +
            }
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            @keyframes fadeIn {
         | 
| 55 | 
            +
              to {
         | 
| 56 | 
            +
                opacity: 1;
         | 
| 57 | 
            +
              }
         | 
| 58 | 
            +
            }
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            @keyframes slideIn {
         | 
| 61 | 
            +
              from {
         | 
| 62 | 
            +
                transform: translateY(-50px);
         | 
| 63 | 
            +
              }
         | 
| 64 | 
            +
              to {
         | 
| 65 | 
            +
                transform: translateY(0);
         | 
| 66 | 
            +
              }
         | 
| 67 | 
            +
            }
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            .dialog-overlay.v-enter-active,
         | 
| 70 | 
            +
            .dialog-overlay.v-leave-active {
         | 
| 71 | 
            +
              transition: opacity 0.3s;
         | 
| 72 | 
            +
            }
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            .btn-close {
         | 
| 75 | 
            +
              padding: 0;
         | 
| 76 | 
            +
              background-color: transparent;
         | 
| 77 | 
            +
              border: none;
         | 
| 78 | 
            +
              display: flex;
         | 
| 79 | 
            +
              align-items: center;
         | 
| 80 | 
            +
              border-radius: 50%;
         | 
| 81 | 
            +
              &:hover {
         | 
| 82 | 
            +
                background-color: rgba(202, 202, 202, 0.534);
         | 
| 83 | 
            +
              }
         | 
| 84 | 
            +
            }
         | 
| 85 | 
            +
            </style>
         | 
| @@ -53,6 +53,24 @@ | |
| 53 53 | 
             
                    @on-qualifying="(args)=> emit('onQualifying', args)"
         | 
| 54 54 | 
             
                  />
         | 
| 55 55 | 
             
                </div>
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                <Button label="Show" @click="visible = true" />
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            <Dialog v-model:visible="visible" modal header="Edit Profile" :style="{ width: '25rem' }">
         | 
| 60 | 
            +
                <span class="text-surface-500 dark:text-surface-400 block mb-8">Update your information.</span>
         | 
| 61 | 
            +
                <div class="flex items-center gap-4 mb-4">
         | 
| 62 | 
            +
                    <label for="username" class="font-semibold w-24">Username</label>
         | 
| 63 | 
            +
                    <InputText id="username" class="flex-auto" autocomplete="off" />
         | 
| 64 | 
            +
                </div>
         | 
| 65 | 
            +
                <div class="flex items-center gap-4 mb-8">
         | 
| 66 | 
            +
                    <label for="email" class="font-semibold w-24">Email</label>
         | 
| 67 | 
            +
                    <InputText id="email" class="flex-auto" autocomplete="off" />
         | 
| 68 | 
            +
                </div>
         | 
| 69 | 
            +
                <div class="flex justify-end gap-2">
         | 
| 70 | 
            +
                    <Button type="button" label="Cancel" severity="secondary" @click="visible = false"></Button>
         | 
| 71 | 
            +
                    <Button type="button" label="Save" @click="visible = false"></Button>
         | 
| 72 | 
            +
                </div>
         | 
| 73 | 
            +
            </Dialog>
         | 
| 56 74 | 
             
              </div>
         | 
| 57 75 | 
             
            </template>
         | 
| 58 76 |  | 
| @@ -65,7 +83,7 @@ import IconWhatsApp from "./IconWhatsApp.vue"; | |
| 65 83 | 
             
            import IconChat from "./IconChat.vue";
         | 
| 66 84 |  | 
| 67 85 | 
             
            const emit = defineEmits(["show-toast", "show-confirm", "onQualifying"]);
         | 
| 68 | 
            -
             | 
| 86 | 
            +
            const visible = ref(true);
         | 
| 69 87 | 
             
            const enum MeansCommunication{
         | 
| 70 88 | 
             
              WHATSAPP,
         | 
| 71 89 | 
             
              TELEGRAM
         |