IKHSAN
ENID Baca dalam Bahasa Indonesia

opendesk

Public
Branch
main
Latest commit
08d9f3328 October 2026

HolidayList.vue

Open raw
<template>
  <div
    v-if="holidayList.list.loading && !holidayList.list.data"
    class="flex items-center justify-center absolute inset-x-0 top-5.5 bottom-0"
  >
    <LoadingIndicator class="w-4" />
  </div>
  <div v-else class="-ms-2 grow">
    <div
      v-if="!holidayList.list.loading && !holidayList.list.data?.length"
      class="flex flex-col items-center justify-center gap-4 h-full"
    >
      <div
        class="p-4 size-14.5 rounded-full bg-surface-gray-1 flex justify-center items-center"
      >
        <Briefcase class="size-6 text-ink-gray-6" />
      </div>
      <div class="flex flex-col items-center gap-1">
        <div class="text-base-medium text-ink-gray-6">
          {{ __("No Holiday list found") }}
        </div>
        <div class="text-p-sm text-ink-gray-5 max-w-60 text-center">
          {{ __("Add one to get started.") }}
        </div>
      </div>
    </div>
    <div v-else>
      <div class="flex text-sm text-ink-gray-5">
        <div class="ms-2">{{ __("Schedule name") }}</div>
      </div>
      <hr class="mx-2 mt-2" />
      <div>
        <div
          v-for="(holiday, index) in holidayList.list.data"
          :key="holiday.name"
        >
          <HolidayListItem :data="holiday" />
          <hr v-if="index !== holidayList.list.data.length - 1" class="mx-2" />
        </div>
      </div>
    </div>
  </div>
</template>

<script setup lang="ts">
import HolidayListItem from "./HolidayListItem.vue";
import { Button, LoadingIndicator } from "frappe-ui";
import Briefcase from "~icons/lucide/briefcase";

import { inject } from "vue";
import {
  holidayListActiveScreen,
  resetHolidayData,
} from "@/stores/holidayList";
import { HolidayListResourceSymbol } from "@/types";

const holidayList = inject(HolidayListResourceSymbol);

const goToNew = () => {
  resetHolidayData();
  holidayListActiveScreen.value = {
    screen: "view",
    data: null,
  };
};
</script>
bytes
1,927
lines
67
Type
vue
Latest commit
28 October 2026