Package Exports
- hotel-datepicker-responsive
- hotel-datepicker-responsive/dist/hotel-datepicker.standalone.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (hotel-datepicker-responsive) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Hotel DatePicker Responsive
Un selector de fechas moderno y flexible para reservas de hotel con soporte para calendario de precios y diseño responsive.
Características
- Diseño Responsive: Adaptado para dispositivos móviles y escritorio
- Selección de Rangos: Permite seleccionar rangos de fechas (check-in y check-out)
- Modo Fecha Única: Opción para seleccionar una sola fecha
- Calendario de Precios: Integración con APIs de precios para mostrar tarifas
- Personalizable: Múltiples opciones de configuración y estilos
- Internacionalización: Soporte para múltiples idiomas
- Standalone: Incluye Luxon y CSS directamente en el bundle
- Sin Dependencias Externas: No requiere jQuery ni otras bibliotecas
- Optimizado para Rendimiento: Caché de tarifas y renderizado eficiente
- Iconos SVG Inline: No requiere bibliotecas de iconos externas
Mejoras recientes
Estructura modular
El código ha sido reorganizado en módulos independientes para facilitar el mantenimiento y la extensión:
calendar.js: Funciones para generar y manipular el calendarioconfig.js: Configuración por defectodom.js: Manipulación del DOMevents.js: Manejo de eventosinitializer.js: Inicialización del calendariomobile.js: Funcionalidades específicas para móvilnavigation.js: Navegación entre mesesrates.js: Gestión de tarifasrenderer.js: Renderización del calendarioutils.js: Funciones de utilidad
Optimización de rendimiento
- Caché de tarifas para evitar cargas innecesarias
- Renderizado optimizado para evitar parpadeos
- Detección inteligente de meses visibles en móvil
- Aplicación eficiente de estilos
Mejoras en la vista móvil
- Mejor respuesta táctil
- Scroll más suave
- Mejor visualización de los botones
- Optimización del espacio en pantalla
- Carga de tarifas solo para meses visibles
Instalación
npm install hotel-datepicker-responsive --saveUso Básico
<div id="datepicker"></div>
<script>
const datepicker = new HotelDatePicker('datepicker', {
minNights: 1,
maxNights: 30,
format: 'dd/MM/yyyy',
lang: 'es'
});
</script>Versión Standalone (Recomendada)
Esta versión incluye Luxon y CSS directamente en el bundle, por lo que solo necesitas incluir un archivo:
<!-- Incluir Hotel DatePicker (con Luxon y CSS incluidos) -->
<script src="dist/hotel-datepicker.standalone.js"></script>Para generar estos archivos, ejecuta:
npm run buildEsto creará en la carpeta dist:
hotel-datepicker.standalone.js: Librería completa con Luxon y CSS incluidos
Inicialización del componente
Una vez incluidos los archivos necesarios, inicializa el componente:
const datePicker = new HotelDatePicker('container-id', {
minNights: 1,
maxNights: 30,
onDateSelect: function(dates) {
console.log('Fechas seleccionadas:', dates);
}
});Servidor Python incluido
Para facilitar la visualización del calendario, se incluye un servidor Python simple:
- Ejecuta
start_server.batopython server.pydesde la línea de comandos - Abre tu navegador en http://localhost:8000/HotelDatePicker.html
Ejemplos incluidos
El proyecto incluye varios ejemplos para mostrar diferentes funcionalidades:
Ejemplo básico
Muestra el uso básico del calendario con opciones para ocultar leyenda y atajos.
examples/basic.htmlEjemplo con tarifas
Muestra cómo integrar el calendario con una API de tarifas.
examples/with-rates.htmlEjemplo móvil
Muestra el calendario optimizado para dispositivos móviles.
examples/mobile.htmlOpciones de configuración
| Opción | Tipo | Valor por defecto | Descripción |
|---|---|---|---|
| minNights | Number | 1 | Número mínimo de noches |
| maxNights | Number | 30 | Número máximo de noches |
| initialStartDate | String | null | Fecha de inicio inicial (formato ISO) |
| initialEndDate | String | null | Fecha de fin inicial (formato ISO) |
| format | String | 'dd LLL yyyy' | Formato de fecha (usando Luxon) |
| hideLegend | Boolean | false | Oculta la leyenda |
| hideShortcuts | Boolean | false | Oculta los atajos rápidos |
| mobileBreakpoint | Number | 768 | Punto de quiebre para vista móvil (en píxeles) |
| onDateSelect | Function | () => {} | Callback cuando se seleccionan fechas |
| onMonthChange | Function | () => {} | Callback cuando cambia el mes visible |
| priceCalendar | Object | { enabled: false } | Configuración del calendario de precios |
| i18n | Object | { ... } | Textos para internacionalización |
Métodos disponibles
open()
Abre el calendario.
datePicker.open();close()
Cierra el calendario.
datePicker.close();toggle()
Alterna entre abrir y cerrar el calendario.
datePicker.toggle();setRates(year, month, rates)
Establece las tarifas para un mes específico.
datePicker.setRates(2023, 5, {
daysByDate: {
'2023-05-01': {
availability: true,
avgPrice: '$1500',
checkinFormat: '2023-05-01',
color: 'bg-success',
cheapest: 0
},
// Más días...
}
});getSelectedDates()
Obtiene las fechas seleccionadas.
const dates = datePicker.getSelectedDates();
console.log(dates.startDate, dates.endDate, dates.nights);setSelectedDates(startDate, endDate)
Establece las fechas seleccionadas.
datePicker.setSelectedDates('2023-05-01', '2023-05-05');clearSelectedDates()
Limpia las fechas seleccionadas.
datePicker.clearSelectedDates();clearRatesCache()
Limpia la caché de tarifas.
datePicker.clearRatesCache();Estructura del proyecto
hotel-date-picker/
├── dist/ # Archivos compilados
│ ├── hotel-date-picker.js
│ ├── hotel-date-picker.min.js
│ └── luxon.min.js
├── examples/ # Ejemplos de uso
│ ├── basic.html
│ ├── with-rates.html
│ └── mobile.html
├── src/ # Código fuente
│ ├── modules/ # Módulos
│ │ ├── calendar.js
│ │ ├── config.js
│ │ ├── dom.js
│ │ ├── events.js
│ │ ├── index.js
│ │ ├── initializer.js
│ │ ├── mobile.js
│ │ ├── navigation.js
│ │ ├── rates.js
│ │ ├── renderer.js
│ │ └── utils.js
│ ├── HotelDatePicker.js
│ ├── HotelDatePicker.modular.js
│ ├── HotelDatePicker.css
│ ├── HotelDatePicker.combined.css
│ └── styles.css
├── package.json
└── README.mdPublicación en npm
Para publicar la librería en npm:
- Actualiza la información en
package.json(nombre, autor, repositorio, etc.) - Ejecuta
npm run buildpara generar los archivos - Ejecuta
npm loginpara iniciar sesión en npm - Ejecuta
npm publishpara publicar el paquete
Los usuarios podrán instalar tu paquete con:
npm install hotel-datepicker-responsiveY usarlo en sus proyectos:
<!-- Incluir Hotel DatePicker (con Luxon y CSS incluidos) -->
<script src="node_modules/hotel-datepicker-responsive/dist/hotel-datepicker.standalone.js"></script>
<script>
const datepicker = new HotelDatePicker('container-id', {
// opciones...
});
</script>Repositorio
El código fuente está disponible en GitHub: https://github.com/JoseRamonGraciaCalderon/HotelDatePicker
Licencia
MIT