mirror of
				https://github.com/crater-invoice/crater.git
				synced 2025-10-30 21:21:09 -04:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			dark-table
			...
			dark-butto
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 2c8bb38531 | |||
| af2482a69c | |||
| cac35826c2 | 
| @ -1,6 +1,7 @@ | |||||||
| <script setup> | <script setup> | ||||||
| import { computed, ref } from 'vue' | import { computed, ref } from 'vue' | ||||||
| import SpinnerIcon from '@/scripts/components/icons/SpinnerIcon.vue' | import SpinnerIcon from '@/scripts/components/icons/SpinnerIcon.vue' | ||||||
|  |  | ||||||
| const props = defineProps({ | const props = defineProps({ | ||||||
|   contentLoading: { |   contentLoading: { | ||||||
|     type: Boolean, |     type: Boolean, | ||||||
| @ -9,7 +10,7 @@ const props = defineProps({ | |||||||
|   defaultClass: { |   defaultClass: { | ||||||
|     type: String, |     type: String, | ||||||
|     default: |     default: | ||||||
|       'inline-flex whitespace-nowrap items-center border font-medium focus:outline-none focus:ring-2 focus:ring-offset-2', |       'inline-flex whitespace-nowrap items-center border font-medium focus:outline-none focus:ring-2 focus:ring-offset-2 dark:focus:ring-offset-gray-800', | ||||||
|   }, |   }, | ||||||
|   tag: { |   tag: { | ||||||
|     type: String, |     type: String, | ||||||
| @ -27,6 +28,10 @@ const props = defineProps({ | |||||||
|     type: Boolean, |     type: Boolean, | ||||||
|     default: false, |     default: false, | ||||||
|   }, |   }, | ||||||
|  |   loadingRight: { | ||||||
|  |     type: Boolean, | ||||||
|  |     default: false, | ||||||
|  |   }, | ||||||
|   size: { |   size: { | ||||||
|     type: String, |     type: String, | ||||||
|     default: 'md', |     default: 'md', | ||||||
| @ -81,17 +86,17 @@ const placeHolderSize = computed(() => { | |||||||
|  |  | ||||||
| const variantClass = computed(() => { | const variantClass = computed(() => { | ||||||
|   return { |   return { | ||||||
|     'border-transparent shadow-sm text-white bg-primary-600 hover:bg-primary-700 focus:ring-primary-500': |     'border-transparent shadow-sm text-white bg-primary-600 hover:bg-primary-700 focus:ring-primary-500 dark:bg-primary-500 dark:hover:bg-primary-600': | ||||||
|       props.variant === 'primary', |       props.variant === 'primary', | ||||||
|     'border-transparent text-primary-700 bg-primary-100 hover:bg-primary-200 focus:ring-primary-500': |     'border-transparent text-primary-700 bg-primary-100 hover:bg-primary-200 focus:ring-primary-500': | ||||||
|       props.variant === 'secondary', |       props.variant === 'secondary', | ||||||
|     'border-transparent  border-solid border-primary-500 font-normal transition ease-in-out duration-150 text-primary-500 hover:bg-primary-200 shadow-inner focus:ring-primary-500': |     'border-transparent border-solid border-primary-500 font-normal transition ease-in-out duration-150 text-primary-500 hover:bg-primary-100 shadow-inner focus:ring-primary-500 dark:text-primary-400 dark:border-primary-400 dark:hover:bg-transparent dark:hover:text-primary-500 dark:hover:border-primary-500': | ||||||
|       props.variant == 'primary-outline', |       props.variant == 'primary-outline', | ||||||
|     'border-gray-200 text-gray-700 bg-white hover:bg-gray-50 focus:ring-primary-500 focus:ring-offset-0': |     'border-gray-200 text-gray-700 bg-white hover:bg-gray-50 focus:ring-primary-500 focus:ring-offset-0 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-900': | ||||||
|       props.variant == 'white', |       props.variant == 'white', | ||||||
|     'border-transparent shadow-sm text-white bg-red-600 hover:bg-red-700 focus:ring-red-500': |     'border-transparent shadow-sm text-white bg-red-600 hover:bg-red-700 focus:ring-red-500': | ||||||
|       props.variant === 'danger', |       props.variant === 'danger', | ||||||
|     'border-transparent bg-gray-200 border hover:bg-opacity-60 focus:ring-gray-500 focus:ring-offset-0': |     'border-transparent bg-gray-200 border hover:bg-opacity-60 focus:ring-gray-500 focus:ring-offset-0 dark:bg-gray-600 dark:text-white dark:hover:bg-opacity-60': | ||||||
|       props.variant === 'gray', |       props.variant === 'gray', | ||||||
|   } |   } | ||||||
| }) | }) | ||||||
| @ -124,6 +129,13 @@ const iconRightClass = computed(() => { | |||||||
|     'ml-3 -mr-1 h-5 w-5': props.size === 'lg' || props.size === 'xl', |     'ml-3 -mr-1 h-5 w-5': props.size === 'lg' || props.size === 'xl', | ||||||
|   } |   } | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | const buttonDisabledClass = computed(() => { | ||||||
|  |   if (props.disabled || props.loading) | ||||||
|  |     return 'cursor-not-allowed bg-opacity-70 dark:!bg-opacity-40 hover:!bg-opacity-70 pointer-event-none' | ||||||
|  |  | ||||||
|  |   return '' | ||||||
|  | }) | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| <template> | <template> | ||||||
| @ -141,15 +153,17 @@ const iconRightClass = computed(() => { | |||||||
|   <BaseCustomTag |   <BaseCustomTag | ||||||
|     v-else |     v-else | ||||||
|     :tag="tag" |     :tag="tag" | ||||||
|     :disabled="disabled" |     :disabled="disabled || loading" | ||||||
|     :class="[defaultClass, sizeClass, variantClass, roundedClass]" |     :class="[defaultClass, sizeClass, variantClass, roundedClass, buttonDisabledClass]" | ||||||
|   > |   > | ||||||
|     <SpinnerIcon v-if="loading" :class="[iconLeftClass, iconVariantClass]" /> |     <SpinnerIcon v-if="loading && !loadingRight" :class="[iconLeftClass, iconVariantClass]" /> | ||||||
|  |  | ||||||
|     <slot v-else name="left" :class="iconLeftClass"></slot> |     <slot v-else name="left" :class="iconLeftClass" /> | ||||||
|  |  | ||||||
|     <slot /> |     <slot /> | ||||||
|  |  | ||||||
|     <slot name="right" :class="[iconRightClass, iconVariantClass]"></slot> |     <SpinnerIcon v-if="loading && loadingRight" :class="[iconRightClass, iconVariantClass]" /> | ||||||
|  |  | ||||||
|  |     <slot v-else name="right" :class="[iconRightClass, iconVariantClass]" /> | ||||||
|   </BaseCustomTag> |   </BaseCustomTag> | ||||||
| </template> | </template> | ||||||
|  | |||||||
| @ -10,14 +10,13 @@ | |||||||
|       bg-white |       bg-white | ||||||
|       border-t border-gray-200 |       border-t border-gray-200 | ||||||
|       sm:px-6 |       sm:px-6 | ||||||
|       dark:bg-transparent dark:border-white/10 |  | ||||||
|     " |     " | ||||||
|   > |   > | ||||||
|     <div class="flex justify-between flex-1 sm:hidden"> |     <div class="flex justify-between flex-1 sm:hidden"> | ||||||
|       <a |       <a | ||||||
|         href="#" |         href="#" | ||||||
|         :class="{ |         :class="{ | ||||||
|           'disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400 dark:!bg-gray-800 dark:!text-gray-500': |           'disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400': | ||||||
|             pagination.currentPage === 1, |             pagination.currentPage === 1, | ||||||
|         }" |         }" | ||||||
|         class=" |         class=" | ||||||
| @ -33,7 +32,6 @@ | |||||||
|           border border-gray-300 |           border border-gray-300 | ||||||
|           rounded-md |           rounded-md | ||||||
|           hover:bg-gray-50 |           hover:bg-gray-50 | ||||||
|           dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300 |  | ||||||
|         " |         " | ||||||
|         @click="pageClicked(pagination.currentPage - 1)" |         @click="pageClicked(pagination.currentPage - 1)" | ||||||
|       > |       > | ||||||
| @ -42,7 +40,7 @@ | |||||||
|       <a |       <a | ||||||
|         href="#" |         href="#" | ||||||
|         :class="{ |         :class="{ | ||||||
|           'disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400 dark:!bg-gray-800 dark:!text-gray-500': |           'disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400': | ||||||
|             pagination.currentPage === pagination.totalPages, |             pagination.currentPage === pagination.totalPages, | ||||||
|         }" |         }" | ||||||
|         class=" |         class=" | ||||||
| @ -59,7 +57,6 @@ | |||||||
|           border border-gray-300 |           border border-gray-300 | ||||||
|           rounded-md |           rounded-md | ||||||
|           hover:bg-gray-50 |           hover:bg-gray-50 | ||||||
|           dark:bg-gray-800 dark:border-gray-600 dark:text-gray-300 |  | ||||||
|         " |         " | ||||||
|         @click="pageClicked(pagination.currentPage + 1)" |         @click="pageClicked(pagination.currentPage + 1)" | ||||||
|       > |       > | ||||||
| @ -68,12 +65,12 @@ | |||||||
|     </div> |     </div> | ||||||
|     <div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between"> |     <div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between"> | ||||||
|       <div> |       <div> | ||||||
|         <p class="text-sm text-gray-700 dark:text-gray-400"> |         <p class="text-sm text-gray-700"> | ||||||
|           Showing |           Showing | ||||||
|           {{ ' ' }} |           {{ ' ' }} | ||||||
|           <span |           <span | ||||||
|             v-if="pagination.limit && pagination.currentPage" |             v-if="pagination.limit && pagination.currentPage" | ||||||
|             class="font-medium dark:text-gray-200" |             class="font-medium" | ||||||
|           > |           > | ||||||
|             {{ |             {{ | ||||||
|               pagination.currentPage * pagination.limit - (pagination.limit - 1) |               pagination.currentPage * pagination.limit - (pagination.limit - 1) | ||||||
| @ -84,7 +81,7 @@ | |||||||
|           {{ ' ' }} |           {{ ' ' }} | ||||||
|           <span |           <span | ||||||
|             v-if="pagination.limit && pagination.currentPage" |             v-if="pagination.limit && pagination.currentPage" | ||||||
|             class="font-medium dark:text-gray-200" |             class="font-medium" | ||||||
|           > |           > | ||||||
|             <span |             <span | ||||||
|               v-if=" |               v-if=" | ||||||
| @ -101,7 +98,7 @@ | |||||||
|           {{ ' ' }} |           {{ ' ' }} | ||||||
|           of |           of | ||||||
|           {{ ' ' }} |           {{ ' ' }} | ||||||
|           <span v-if="pagination.totalCount" class="font-medium dark:text-gray-200"> |           <span v-if="pagination.totalCount" class="font-medium"> | ||||||
|             {{ pagination.totalCount }} |             {{ pagination.totalCount }} | ||||||
|           </span> |           </span> | ||||||
|           {{ ' ' }} |           {{ ' ' }} | ||||||
| @ -116,7 +113,7 @@ | |||||||
|           <a |           <a | ||||||
|             href="#" |             href="#" | ||||||
|             :class="{ |             :class="{ | ||||||
|               'disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400 dark:!bg-gray-800 dark:!text-gray-500': |               'disabled cursor-normal pointer-events-none !bg-gray-100 !text-gray-400': | ||||||
|                 pagination.currentPage === 1, |                 pagination.currentPage === 1, | ||||||
|             }" |             }" | ||||||
|             class=" |             class=" | ||||||
| @ -132,7 +129,6 @@ | |||||||
|               border border-gray-300 |               border border-gray-300 | ||||||
|               rounded-l-md |               rounded-l-md | ||||||
|               hover:bg-gray-50 |               hover:bg-gray-50 | ||||||
|               dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 |  | ||||||
|             " |             " | ||||||
|             @click="pageClicked(pagination.currentPage - 1)" |             @click="pageClicked(pagination.currentPage - 1)" | ||||||
|           > |           > | ||||||
| @ -144,9 +140,9 @@ | |||||||
|             href="#" |             href="#" | ||||||
|             aria-current="page" |             aria-current="page" | ||||||
|             :class="{ |             :class="{ | ||||||
|               'z-10 bg-primary-50 border-primary-500 text-primary-600 dark:bg-primary-500 dark:text-white': |               'z-10 bg-primary-50 border-primary-500 text-primary-600': | ||||||
|                 isActive(1), |                 isActive(1), | ||||||
|               'bg-white border-gray-300 text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300': |               'bg-white border-gray-300 text-gray-500 hover:bg-gray-50': | ||||||
|                 !isActive(1), |                 !isActive(1), | ||||||
|             }" |             }" | ||||||
|             class=" |             class=" | ||||||
| @ -177,7 +173,6 @@ | |||||||
|               text-gray-700 |               text-gray-700 | ||||||
|               bg-white |               bg-white | ||||||
|               border border-gray-300 |               border border-gray-300 | ||||||
|               dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 |  | ||||||
|             " |             " | ||||||
|           > |           > | ||||||
|             ... |             ... | ||||||
| @ -187,9 +182,9 @@ | |||||||
|             :key="page" |             :key="page" | ||||||
|             href="#" |             href="#" | ||||||
|             :class="{ |             :class="{ | ||||||
|               'z-10 bg-primary-50 border-primary-500 text-primary-600 dark:bg-primary-500 dark:text-white': |               'z-10 bg-primary-50 border-primary-500 text-primary-600': | ||||||
|                 isActive(page), |                 isActive(page), | ||||||
|               'bg-white border-gray-300 text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300': |               'bg-white border-gray-300 text-gray-500 hover:bg-gray-50': | ||||||
|                 !isActive(page), |                 !isActive(page), | ||||||
|               disabled: page === '...', |               disabled: page === '...', | ||||||
|             }" |             }" | ||||||
| @ -225,7 +220,6 @@ | |||||||
|               text-gray-700 |               text-gray-700 | ||||||
|               bg-white |               bg-white | ||||||
|               border border-gray-300 |               border border-gray-300 | ||||||
|               dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 |  | ||||||
|             " |             " | ||||||
|           > |           > | ||||||
|             ... |             ... | ||||||
| @ -235,9 +229,9 @@ | |||||||
|             href="#" |             href="#" | ||||||
|             aria-current="page" |             aria-current="page" | ||||||
|             :class="{ |             :class="{ | ||||||
|               'z-10 bg-primary-50 border-primary-500 text-primary-600 dark:bg-primary-500 dark:text-white': |               'z-10 bg-primary-50 border-primary-500 text-primary-600': | ||||||
|                 isActive(pagination.totalPages), |                 isActive(pagination.totalPages), | ||||||
|               'bg-white border-gray-300 text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300': |               'bg-white border-gray-300 text-gray-500 hover:bg-gray-50': | ||||||
|                 !isActive(pagination.totalPages), |                 !isActive(pagination.totalPages), | ||||||
|             }" |             }" | ||||||
|             class=" |             class=" | ||||||
| @ -269,10 +263,9 @@ | |||||||
|               border border-gray-300 |               border border-gray-300 | ||||||
|               rounded-r-md |               rounded-r-md | ||||||
|               hover:bg-gray-50 |               hover:bg-gray-50 | ||||||
|               dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 |  | ||||||
|             " |             " | ||||||
|             :class="{ |             :class="{ | ||||||
|               'disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400 dark:!bg-gray-800 dark:!text-gray-500': |               'disabled cursor-default pointer-events-none !bg-gray-100 !text-gray-400': | ||||||
|                 pagination.currentPage === pagination.totalPages, |                 pagination.currentPage === pagination.totalPages, | ||||||
|             }" |             }" | ||||||
|             @click="pageClicked(pagination.currentPage + 1)" |             @click="pageClicked(pagination.currentPage + 1)" | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	