{"id":22466001,"url":"https://github.com/benitolopez/hotel-datepicker","last_synced_at":"2026-02-27T16:18:57.081Z","repository":{"id":44424104,"uuid":"51181537","full_name":"benitolopez/hotel-datepicker","owner":"benitolopez","description":"Date range picker for hotels","archived":false,"fork":false,"pushed_at":"2026-02-16T08:41:00.000Z","size":1362,"stargazers_count":322,"open_issues_count":0,"forks_count":103,"subscribers_count":19,"default_branch":"main","last_synced_at":"2026-02-16T16:22:03.124Z","etag":null,"topics":["calendar","datepicker","hotel-datepicker","javascript","range-picker"],"latest_commit_sha":null,"homepage":"https://hoteldatepicker.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/benitolopez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["benitolopez"]}},"created_at":"2016-02-05T23:51:09.000Z","updated_at":"2026-02-16T08:40:44.000Z","dependencies_parsed_at":"2025-05-16T22:04:41.852Z","dependency_job_id":"90a11dc2-9a0a-428b-9e89-22f58ee25ec5","html_url":"https://github.com/benitolopez/hotel-datepicker","commit_stats":{"total_commits":252,"total_committers":9,"mean_commits":28.0,"dds":0.08333333333333337,"last_synced_commit":"9f6da86ccc863ab7f70b8e409a307d9c8c76c5e3"},"previous_names":[],"tags_count":69,"template":false,"template_full_name":null,"purl":"pkg:github/benitolopez/hotel-datepicker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benitolopez%2Fhotel-datepicker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benitolopez%2Fhotel-datepicker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benitolopez%2Fhotel-datepicker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benitolopez%2Fhotel-datepicker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/benitolopez","download_url":"https://codeload.github.com/benitolopez/hotel-datepicker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/benitolopez%2Fhotel-datepicker/sbom","scorecard":{"id":232700,"data":{"date":"2025-08-11","repo":{"name":"github.com/benitolopez/hotel-datepicker","commit":"5916bb0899dd2344a9f20333581c6f0085b14fcb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/24 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":9,"reason":"8 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 9 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"29 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-q765-wm9j-66qj","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-r7jx-5m6m-cpg9","Warn: Project is vulnerable to: GHSA-r7qp-cfhv-p84w","Warn: Project is vulnerable to: GHSA-q9mw-68c2-j6m5","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-25hc-qcg6-38wj","Warn: Project is vulnerable to: GHSA-cqmj-92xf-r6r9","Warn: Project is vulnerable to: GHSA-fhg7-m89q-25r3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-f9xv-q969-pqx4"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T05:07:18.209Z","repository_id":44424104,"created_at":"2025-08-17T05:07:18.209Z","updated_at":"2025-08-17T05:07:18.209Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29903622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T14:46:13.553Z","status":"ssl_error","status_checked_at":"2026-02-27T14:46:10.522Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calendar","datepicker","hotel-datepicker","javascript","range-picker"],"created_at":"2024-12-06T10:09:52.430Z","updated_at":"2026-02-27T16:18:57.075Z","avatar_url":"https://github.com/benitolopez.png","language":"JavaScript","funding_links":["https://github.com/sponsors/benitolopez"],"categories":["UI Components"],"sub_categories":["Date Pickers"],"readme":"# Hotel Datepicker\n\nThe Hotel Datepicker is a responsive JavaScript date range picker for hotels. It supports modern browsers and it requires [Fecha](https://github.com/taylorhakes/fecha) **4.0.0** (or above).\n\nView the [demo here](https://hoteldatepicker.org).\n\n![Hotel Datepicker Thumbnail](https://hoteldatepicker.org/opengraph-image.jpg \"Hotel Datepicker Thumbnail\")\n\n## Installation\n\n### As a module:\n\nInstall with:\n\n```\nnpm i hotel-datepicker\n```\n\nThen import the modules with:\n\n```\nimport * as fecha from \"fecha\";\nimport HotelDatepicker from \"hotel-datepicker\";\nimport \"hotel-datepicker/dist/css/hotel-datepicker.css\";\n```\n\n### As a script:\n\nDownload [Fecha](https://github.com/taylorhakes/fecha/releases).\n\n**[BREAK CHANGE]** Use Fecha 4.0.0 or above.\n\nInclude files:\n\n```html\n\u003clink href=\"/path/to/hotel-datepicker.css\" rel=\"stylesheet\" /\u003e\u003c!-- Optional --\u003e\n\u003cscript src=\"/path/to/fecha.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"/path/to/hotel-datepicker.min.js\"\u003e\u003c/script\u003e\n```\n\n## Usage\n\nInitialize with vanilla JS.\n\n```html\n\u003cinput id=\"input-id\" type=\"text\" /\u003e\n```\n\n```js\nvar hdpkr = new HotelDatepicker(document.getElementById(\"input-id\"), options);\n```\n\n## Options\n\n### className\n\n-   Type: `String`\n-   Default: `datepicker`\n\nThe CSS selector of the datepicker.\n\n### format\n\n-   Type: `String`\n-   Default: `YYYY-MM-DD`\n\nThe date format string.\n\n### infoFormat\n\n-   Type: `String`\n-   Default: `YYYY-MM-DD`\n\nThe date format string in the info box. If not set, it uses the `format` option.\n\n### ariaDayFormat\n\n-   Type: `String`\n-   Default: `dddd, MMMM DD, YYYY`\n\nThe date format string in the aria label strings.\n\n### separator\n\n-   Type: `String`\n-   Default: `-`\n\nThe separator string used between date strings.\n\n### startOfWeek\n\n-   Type: `String`\n-   Default: `sunday`\n\nDefault start week: `sunday` or `monday`.\n\n### startDate\n\n-   Type: `Date` or `String`\n-   Default: `new Date()`\n\nThe start view date. All the dates before this date will be disabled.\n\n### endDate\n\n-   Type: `Date` or `String` or `Boolean`\n-   Default: `false`\n\nThe end view date. All the dates after this date will be disabled.\n\n### minNights\n\n-   Type: `Number`\n-   Default: `1`\n\nMinimum nights required to select a range of dates.\n\n### maxNights\n\n-   Type: `Number`\n-   Default: `0`\n\nMaximum nights required to select a range of dates.\n\n### minNightsMultiple\n\n-   Type: `Boolean`\n-   Default: `false`\n\nIf `true`, only ranges that are multiples of `minNights` are allowed.\n\n### selectForward\n\n-   Type: `Boolean`\n-   Default: `false`\n\nIf `true`, the selection of the second date must be after the first date. If `false`, you can select a range of dates in both directions.\n\n### disabledDates\n\n-   Type: `Array`\n-   Default: `[]`\n\nAn array of **strings** in this format: `'YYYY-MM-DD'` (note the `''`). All the dates passed to the list will be disabled.\n\n### enableCheckout\n\n-   Type: `Boolean`\n-   Default: `false`\n\nIf `true`, allows the checkout on a **disabled** date. But with a criteria. Let's say we have these disabled dates: `03 April 2020` and `04 April 2020`. With this option enabled, an user can still select the first date (`03 April 2020`) for the checkout. But not `04 April 2020`.\n\n### noCheckInDates\n\n-   Type: `Array`\n-   Default: `[]`\n\nAn array of **strings** in this format: `'YYYY-MM-DD'` (note the `''`). All the dates passed to the list will not allow a check-in on that day.\n\n### noCheckOutDates\n\n-   Type: `Array`\n-   Default: `[]`\n\nAn array of **strings** in this format: `'YYYY-MM-DD'` (note the `''`). All the dates passed to the list will not allow a check-out on that day.\n\n### disabledDaysOfWeek\n\n-   Type: `Array`\n-   Default: `[]`\n\nAn array of **strings** of day names in your language (same names used in `i18n['day-names']`): `'Monday'` (note the `''` and the uppercase).\n\n### noCheckInDaysOfWeek\n\n-   Type: `Array`\n-   Default: `[]`\n\nAn array of **strings** of day names in your language (same names used in `i18n['day-names']`): `'Monday'` (note the `''` and the uppercase).\n\n### noCheckOutDaysOfWeek\n\n-   Type: `Array`\n-   Default: `[]`\n\nAn array of **strings** of day names in your language (same names used in `i18n['day-names']`): `'Monday'` (note the `''` and the uppercase).\n\n```js\n[\"Monday\", \"Tuesday\", \"Wednesday\"];\n```\n\n### container\n\n-   Type: `Element`\n-   Default: `''`\n\nAn element for putting the datepicker. If not set, the datepicker will be appended to the parent of the input.\n\n### inline\n\n-   Type: `Boolean`\n-   Default: `false`\n\nRender the datepicker inline.\n\n### clearButton\n\n-   Type: `Boolean`\n-   Default: `false`\n\nIf `true`, a button to clear the selected dates is shown. Works only when `showTopbar` is true.\n\n### submitButton\n\n-   Type: `Boolean`\n-   Default: `false`\n\nIf `true`, a submit button is shown. Works only when `inline` and `showTopbar` are true.\n\n### submitButtonName\n\n-   Type: `String`\n-   Default: ``\n\nThe name of the button to reference the form-data. Works only when `submitButton` is true.\n\n### animationSpeed\n\n-   Type: `String`\n-   Default: `.5s`\n\nThe duration (in seconds) of the animation (open/close datepicker).\n\n### hoveringTooltip\n\n-   Type: `Boolean` or `Function`\n-   Default: `true`\n\nShows a tooltip when hovering a date. It can be a custom function:\n\n```js\nhoveringTooltip: function(nights, startTime, hoverTime) {\n    return nights;\n}\n```\n\n### showTopbar\n\n-   Type: `Boolean`\n-   Default: `true`\n\nShow/hide the toolbar.\n\n### topbarPosition\n\n-   Type: `String`\n-   Default: `top`\n\nSet the position of the toolbar.\n\n### autoClose\n\n-   Type: `Boolean`\n-   Default: `true`\n\nClose the datepicker after the selection of the second date.\n\n### preventContainerClose\n\n-   Type: `Boolean`\n-   Default: `false`\n\nWhen a click is done outside the datepicker container, the datepicker closes. Use this option to disable this behavior.\n\n### moveBothMonths\n\n-   Type: `Boolean`\n-   Default: `false`\n\nMove both months when clicking on the next/prev month button.\n\n### closeOnScroll\n\n-   Type: `Boolean`\n-   Default: `false`\n\nClose datepicker on scroll. Some devices might trigger the scroll event in an unpredictable way. Use it at your own risk.\n\n### onDayClick\n\n-   Type: `Function`\n-   Default: `false`\n\nRun a custom function every time a day is clicked:\n\n```js\nonDayClick: function() {\n    console.log('Day clicked!');\n}\n```\n\n### onOpenDatepicker\n\n-   Type: `Function`\n-   Default: `false`\n\nRun a custom function when the datepicker is opened:\n\n```js\nonOpenDatepicker: function() {\n    console.log('Datepicker opened!');\n}\n```\n\n### onSelectRange\n\n-   Type: `Function`\n-   Default: `false`\n\nRun a custom function when a range is selected:\n\n```js\nonSelectRange: function() {\n    console.log('Date range selected!');\n}\n```\n\n### extraDayText\n\n-   Type: `Function`\n-   Default: `false`\n\nRun a custom function to show extra text in day cells:\n\n```js\nextraDayText: function(date, attributes) {\n    if (attributes.class.includes(\"datepicker__month-day--visibleMonth\")) {\n        console.log(date);\n        console.log(attributes);\n        return \"\u003cspan\u003e$150\u003c/span\u003e\";\n    }\n}\n```\n\n### i18n\n\n**[BREAK CHANGE]** Two new options has been introduced in the v.3: `month-names-short` and `day-names-short`. Previously, the _short_ day name version ('Sun', 'Mon', 'Tue', etc) was used in the `day-names` option. Now, the `day-names` option uses the _long_ version.\n\n-   Type: `Object`\n\nDefault:\n\n```js\ni18n: {\n    selected: 'Your stay:',\n    night: 'Night',\n    nights: 'Nights',\n    button: 'Close',\n    clearButton: 'Clear',\n    submitButton: 'Submit',\n    'checkin-disabled': 'Check-in disabled',\n    'checkout-disabled': 'Check-out disabled',\n    'day-names-short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n    'day-names': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n    'month-names-short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n    'month-names': ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n    'error-more': 'Date range should not be more than 1 night',\n    'error-more-plural': 'Date range should not be more than %d nights',\n    'error-less': 'Date range should not be less than 1 night',\n    'error-less-plural': 'Date range should not be less than %d nights',\n    'info-more': 'Please select a date range of at least 1 night',\n    'info-more-plural': 'Please select a date range of at least %d nights',\n    'info-range': 'Please select a date range between %d and %d nights',\n    'info-range-equal': 'Please select a date range of %d nights',\n    'info-default': 'Please select a date range',\n    'aria-application': 'Calendar',\n    'aria-selected-checkin': 'Selected as check-in date, %s',\n    'aria-selected-checkout': 'Selected as check-out date, %s',\n    'aria-selected': 'Selected, %s',\n    'aria-disabled': 'Not available, %s',\n    'aria-choose-checkin': 'Choose %s as your check-in date',\n    'aria-choose-checkout': 'Choose %s as your check-out date',\n    'aria-prev-month': 'Move backward to switch to the previous month',\n    'aria-next-month': 'Move forward to switch to the next month',\n    'aria-close-button': 'Close the datepicker',\n    'aria-clear-button': 'Clear the selected dates',\n    'aria-submit-button': 'Submit the form'\n}\n```\n\n## Methods\n\n### getValue()\n\nThis function is called when the picker gets the date range string from the input.\n\n### setValue()\n\nThis function is called when the picker sets the input value.\n\n## API\n\n### open()\n\nOpens the datepicker.\n\n### close()\n\nCloses the datepicker.\n\n### getDatePicker()\n\nGets the datepicker DOM element.\n\n### setRange(d1, d2)\n\nSets the date range value.\n\n### clear()\n\nClears the datepicker value.\n\n### getNights()\n\nGets the number of nights selected. Returns `0` otherwise.\n\n### destroy()\n\nDestroys the datepicker.\n\n## Events\n\n### afterClose\n\nYou can listen for this event when the datepicker closes.\n\n```js\nvar input = document.getElementById(\"input-id\");\n\ninput.addEventListener(\n    \"afterClose\",\n    function () {\n        console.log(\"Closed!\");\n    },\n    false\n);\n```\n\n### afterClear\n\nYou can listen for this event when the datepicker clears the dates.\n\n```js\nvar input = document.getElementById(\"input-id\");\n\ninput.addEventListener(\n    \"afterClear\",\n    function () {\n        console.log(\"Cleared!\");\n    },\n    false\n);\n```\n\n## Keyboard Shortcuts\n\n-   `←/→`: Move backward (left) and forward (right) by one day.\n-   `↑/↓`: Move backward (up) and forward (down) by one week.\n-   `PGUP/PGDN`: Switch months.\n-   `HOME/END`: Go to the first or last day of a week.\n-   `↵`: Select the date in focus or trigger click on button in focus.\n-   `ESC`: Return to the date input field.\n\n## Versioning\n\nMaintained under the [Semantic Versioning guidelines](http://semver.org/).\n\n## Credits\n\nHotel Datepicker was initially developed as a fork of [jQuery Date Range Picker Plugin](https://github.com/longbill/jquery-date-range-picker) by Chunlong. But it was entirely rewritten in the version 2. It is now an independent project.\n\n## License\n\n[MIT](http://opensource.org/licenses/MIT) Copyright (c) 2025 [Benito Lopez](https://lopezb.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenitolopez%2Fhotel-datepicker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenitolopez%2Fhotel-datepicker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenitolopez%2Fhotel-datepicker/lists"}