UNPKG

skipper-organisms

Version:
355 lines (293 loc) 10.1 kB
# Skipper Organisms Open source UI elements developed by [SkipperHospitality](https://www.skipperhospitality.com/) ### Table of Contents * [Day Range Picker](#day-range-picker) * [Basic Structure](#basic-structure) * [Show Date on HTML Label attribute](#show-date-on-html-label-attribute) * [Applying DateRange Picker](#applying-daterange-picker) * [Update Style](#update-style-file) * [Parameter List](#parameter-list) * [DateRange API's](#daterange-apis) * [Accommodation Search Form](#accommodation-search-form) * [Basic Form Structure](#basic-form-structure) * [Import Form Package](#import-form-package) * [Update Form Style file](#update-form-style-file) * [Creating Form Component](#creating-form-component) * [Form Submission Event Listener](#form-submission-event-listener) * [Form Parameter List](#form-parameter-list) # Day Range Picker write the required markup to build your date range picker. ![Date Range Picker screenshot](https://raw.githubusercontent.com/Skipper-Hospitality/organisms/main/images/date-range-calendar.jpg "Get a date with JavaScript!") ## Basic Structure This is the basic HTML structure that DateRange picker requires: ```html <div> <input type="text" name="check-in" id="datepicker-check-in" /> <input type="text" name="check-in" id="datepicker-check-out"/> </div> ``` ## Show Date on HTML Label attribute You may need to show dates into lable instead of input box: ```html <div> <input type="text" name="check-in" id="datepicker-check-in"/> <label for="datepicker-check-in" id="datepicker-check-in-label"> 18 <small>Feb</small> </label> <input type="text" name="check-in" id="datepicker-check-out" value=""/> <label class="datepicker text-center" id="datepicker-check-out-label"> 19 <small>Feb</small> </label> </div> ``` # Applying DateRange Picker ## Import Package ```js //via npm npm i skipper-organisms import { DayRangePicker } from "skipper-organisms"; ``` ### **Importing from CDN** ```js //CSS CDN: <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/skipper-organisms@1.0.1/dist/day-range-picker.min.css"> //Javascript CDN: //CJS <script src="https://cdn.jsdelivr.net/npm/skipper-organisms@1.0.1/dist/day-range-picker.cjs.min.js"></script> //ES <script src="https://cdn.jsdelivr.net/npm/skipper-organisms@1.0.1/dist/day-range-picker.es.min.js" type="module"></script> ``` ## Import Styles file ```js <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/skipper-organisms@0.0.5/dist/day-range-picker.min.css"> ``` ## Update Style file You can also update your calendar widget **styles** by overwrite following css variables. ```js .daypicker-range { --daypicker-primary-color: #F6F4F2; --daypicker-inactive-color: #94A3B8; --daypicker-active-color: #d1d106; --daypicker-border: #fff; --bg-daypicker-inactive-color: #2E5162; --bg-daypicker: #253846; --bg-daypicker-range: #253846; --daypicker-border: #ccc; --daypicker-accent-color: #bebe04; --primary-font: "ABeeZee", sans-serif; } ``` ## Creating Component ```js // Parameter List const checkIn = document.getElementById("datepicker-check-in"); const checkOut = document.getElementById("datepicker-check-out"); const showPrice = true ; const format = "DD/MM/YYYY"; var picker = new DayRangePicker({ checkIn, checkOut, showPrice,format}); ``` ## Include Input Label ```js // Parameter List const checkIn = document.getElementById("datepicker-check-in"); const checkOut = document.getElementById("datepicker-check-out"); const checkInLabel = document.getElementById("datepicker-check-in-label"); const checkOutLabel = document.getElementById("datepicker-check-out-label"); const showPrice = true ; const format = "DD/MM/YYYY"; var picker = new DayRangePicker({ checkIn, checkOut, checkInLabel, checkOutLabel showPrice,format}); ``` ## Parameter List | Parameter | Required | Types of Ele. | Description | | ------ | ------ | ----- | ----- | | checkIn | True | HTML Element | HTML *Input* box | checkOut | True | HTML Element | HTML *Input* box | showPrice | False | Boolean | Default = *false* | format | False | String | Default = *YYYY-MM-DD* | checkInLabel | False | HTML Element | HTML *label* | checkOutLabel | False | HTML Element | HTML *label* | startDate | False | JS Date | *null* | endDate | False | JS Date | *null* | priceList | False | JS Object Array | *null* dependen on *showPrice* i.e. [{ date: '2022-03-19T14:48:00.000Z', price: 121}] | position | false | enum | position of the datepicker, relative to the field (default to bottom & left), ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position) | numberOfMonths | False | Number | Number of month to show, Default = *2* | minDate | False | Date | The minimum/earliest date that can be selected | maxDate | False | Date | The maximum/latest date that can be selected ## **DateRange API's** ### **.goToNextMonth()** Change **Calendar** view to next month. ```js // @parms: null // @return: null picker.goToNextMonth(); ``` ### **.goToPrevMonth()** Change **Calendar** view to previous month. ```js // @parms: null // @return: null picker.goToPrevMonth(); ``` ### **.selectStartDate(date)** Select start date for calendar ```js // @parms: date => java script date // @return: null let date = new Date(); picker.selectStartDate(date); ``` ### **.selectEndDate(date)** Select end date for calendar ```js // @parms: date => java script date // @return: null let date = new Date(); picker.selectEndDate(date); ``` ### **.getCurrentStartDate()** Return current start/checkIn date ```js // @parms: null // @return: current calendar selected start/checkIn date picker.getCurrentStartDate(); ``` ### **.getCurrentEndDate()** Return current end/CheckOut date ```js // @parms: null // @return: current calendar selected end/checkOut date picker.getCurrentEndDate(); ``` setDateRange ### **.setDateRange(start, end)** Set current start/CheckIn and end/CheckOut date ```js // @parms: start => Javascript date // @parms: end => Javascript date // @return: null picker.setDateRange(start, end); ``` ### **.getCurrentDateRange()** Return current start/CheckIn and end/CheckOut date ```js // @parms: null // @return: current start/CheckIn and end/CheckOut date picker.getCurrentDateRange(); ``` ### **.setPriceList(prices)** Set price list for calendar ```js /* const prices = [ { date: '2022-03-05T14:48:00.000Z', price: 110 }, { date: '2022-03-06T14:48:00.000Z', price: 112 } ]; date is a ISO Date */ // @parms: price list in array of object // @return: null picker.setPriceList(prices); ``` # Accommodation Search Form write the required markup to build your Accomodation Form ![Date Range Picker screenshot](https://raw.githubusercontent.com/Skipper-Hospitality/organisms/main/images/accommodation-form.png "Get a Form with JavaScript!") ![Date Range Picker screenshot](https://raw.githubusercontent.com/Skipper-Hospitality/organisms/main/images/accommodation-form_mobile.jpg "Get a Form with JavaScript!") ## Basic Form Structure This is the basic HTML structure that DateRange picker requires: ```html <div id="accommodation-search-form">Form</div> ``` ## Import Form Package ```js //via npm npm i skipper-organisms import { AccomodationForm } from "skipper-organisms"; ``` ### **Importing Form from CDN** ```js //CSS CDN: <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/skipper-organisms@1.0.1/dist/accommodation-search-form.min.css"> //Javascript CDN: //CJS <script src="https://cdn.jsdelivr.net/npm/skipper-organisms@1.0.1/dist/accommodation-search-form.cjs.min.js"></script> //ES <script src="https://cdn.jsdelivr.net/npm/skipper-organisms@1.0.1/dist/accommodation-search-form.es.min.js" type="module"></script> ``` ## Import Form Styles file ```js ``` ## Update Form Style file You can also update your calendar widget **styles** by overwrite following css variables. ```js .form_container { --primary-accommodation-search-form: #ffffff; --secondary-accommodation-search-form: #e3e200; --bg-accommodation-search-form: #253745; --bg-accommodation-search-form-input-box: #253745; --border-accommodation-search-form: #617c87; } ``` ## Creating Form Component ```js const accommodations = [ "Accommodation 1", "Accommodation 2", "Accommodation 3", "Accommodation 4", "Accommodation 5", ]; var accommodationForm = new AccomodationForm({ blockId: "accommodation-search-form", accommodations, format: "DD/MM/YYYY", }); ``` ## Form Submission Event Listener ```js document.addEventListener( "accommodation-search-form-submitted", function (e) { console.log(e.detail); // Prints "Example of an event" } ); ``` ## Form Parameter List | Parameter | Required | Types of Ele. | Description | | ------ | ------ | ----- | ----- | | blockId | True | string | Id of `div` to be rendered | blockClass | false | string | Class name of `div` to be rendered required if `blockId` is empty | accommodations | false | string array | List of Accommodations | checkIn | False | date | Default CheckIn Date | checkOut | False | date | Default CheckOut Date | maxRoom | False | Number | Maximum Number of rooms that can be select ( Default 10) | maxGuest | Flase | Number | Maximum Number of Guests that can be select (Default 10) | showAccommodations | false | Boolean | Accomodation list to be show or not | showDatesLabel | False | Boolean | Input date fileds should be override or not | showPromocode | False | Boolean | Promocode Field to be show or not