diff --git a/docs/en/learn.mdx b/docs/en/learn.mdx new file mode 100644 index 00000000..bd8cbbf5 --- /dev/null +++ b/docs/en/learn.mdx @@ -0,0 +1,40 @@ +--- +title: Introduction +description: Page Description +--- + +# Introduction to Vanilla Calendar Pro + +**Vanilla Calendar Pro** is a powerful, flexible, and lightweight tool for handling dates and times, created for developers who need a functional and easily customizable calendar for web applications or websites. It is independent of external libraries and highly performant, making it an excellent choice for integrating into any projects that require a calendar. + +This calendar is designed for developers working on a wide variety of projects, whether personal sites, corporate portals, or complex web applications. Vanilla Calendar Pro is perfect for those looking for a simple date display solution and those needing more advanced features like time selection and interactive actions. + +## Key Features + +Vanilla Calendar Pro offers a rich set of features that allow the creation of convenient and adaptive calendar widgets. + +Key features include: + +- **Lightweight**: The final JavaScript file is minified and optimized for fast loading. +- **Dependency-Free**: Completely standalone, with no need for additional libraries. +- **Easy Localization**: Supports easy localization for any language. +- **Customizable**: Easily configurable through CSS and HTML markup. +- **Multiple Instances**: Allows unlimited calendars on a single page. +- **Theme Support**: Automatically switches between light and dark themes and supports custom themes. +- **Week Start Customization**: Enables choosing any day of the week as the starting day. +- **Weekend Customization**: Allows setting custom weekends for each week. +- **Week Number Display**: Can display week numbers throughout the year. +- **Not Tied to ``**: Unlike many calendars, it is not limited to use with the `` element. +- **Accessibility**: Includes ARIA labels, `tabindex`, and full keyboard navigation, enhancing accessibility. +- **Date and Time Range Selection**: Supports selecting date and time ranges with minimum and maximum limits. +- **Pop-Ups and Tooltips**: Allows setting up pop-ups with custom information and adds tooltips for date range selections. + +## Try Vanilla Calendar Pro + +Below is a live example of Vanilla Calendar Pro in a JS sandbox. You can modify the parameters and instantly see how the calendar adapts to your settings. + + + +**This demo example** — one of many in this section — helps you understand how to use Vanilla Calendar Pro and customize it to your needs. + +In the following sections, you will find everything needed for successful integration and setup of Vanilla Calendar Pro. diff --git a/docs/en/learn/action-handlers/change-of-time.mdx b/docs/en/learn/action-handlers/change-of-time.mdx deleted file mode 100644 index a0e826be..00000000 --- a/docs/en/learn/action-handlers/change-of-time.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Handling Time Changes - -By activating the `settings.selection.time` parameter, you gain the ability to automatically retrieve the required data whenever the time changes. - -Usage example in the sandbox: - - diff --git a/docs/en/learn/action-handlers/click-a-day.mdx b/docs/en/learn/action-handlers/click-a-day.mdx deleted file mode 100644 index 011f9005..00000000 --- a/docs/en/learn/action-handlers/click-a-day.mdx +++ /dev/null @@ -1,11 +0,0 @@ -# Handling Click on a Day - -Various actions are available for user interaction with the calendar, one of which is `clickDay()`. This action allows you to track the moment when a user clicks on a specific day in the calendar. - -Example with logging the selected day to the console: - - - -Please note that the selected day is represented as an array because the user can select not only one day but also a range of dates if allowed by the calendar parameters. - - diff --git a/docs/en/learn/action-handlers/click-on-a-month-in-the-month-selection.mdx b/docs/en/learn/action-handlers/click-on-a-month-in-the-month-selection.mdx deleted file mode 100644 index 8be6c798..00000000 --- a/docs/en/learn/action-handlers/click-on-a-month-in-the-month-selection.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Handling Click on a Month in the Month List - -When you click on a month in the list of all months, you can handle this event and obtain information about the selected item and its ordinal number. - -It's important to note that months are numbered starting from zero, where January corresponds to the zeroth month, and December is the eleventh. - - diff --git a/docs/en/learn/action-handlers/click-on-the-arrows.mdx b/docs/en/learn/action-handlers/click-on-the-arrows.mdx deleted file mode 100644 index a1f2fefe..00000000 --- a/docs/en/learn/action-handlers/click-on-the-arrows.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Handling Click on the Arrows - -When you click on any of the arrows, an event occurs to switch the month or year in the calendar. This event can be used according to your needs. - - diff --git a/docs/en/learn/action-handlers/click-on-the-week-number.mdx b/docs/en/learn/action-handlers/click-on-the-week-number.mdx deleted file mode 100644 index 2e524a0b..00000000 --- a/docs/en/learn/action-handlers/click-on-the-week-number.mdx +++ /dev/null @@ -1,9 +0,0 @@ -# Handling Click on the Week Number - -In some countries, week numbers are used to denote dates. You can display week numbers in the calendar using the `settings.visibility.weekNumbers` parameter and handle clicks on them. - - - -By having information about the dates in the selected week, you can easily select these dates using code. - - diff --git a/docs/en/learn/action-handlers/click-on-the-year-in-the-year-selection.mdx b/docs/en/learn/action-handlers/click-on-the-year-in-the-year-selection.mdx deleted file mode 100644 index e4107a06..00000000 --- a/docs/en/learn/action-handlers/click-on-the-year-in-the-year-selection.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Handling Click on the Year in Year Selection - -Similar to selecting a month, you can choose a year by clicking on the year header in the calendar. - -When you click on a year from the list, you can obtain information about the selected element that was clicked and the year number. - - diff --git a/docs/en/learn/action-handlers/get-and-change-every-day.mdx b/docs/en/learn/action-handlers/get-and-change-every-day.mdx deleted file mode 100644 index a484b27c..00000000 --- a/docs/en/learn/action-handlers/get-and-change-every-day.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Getting and Modifying Each Day - -When you have access to each day in the calendar, you can perform various operations, add additional information, or make changes to each day. - -As an example, you can add a random cost or value to each day. - - diff --git a/docs/en/learn/additional-features-layouts.mdx b/docs/en/learn/additional-features-layouts.mdx new file mode 100644 index 00000000..3f566984 --- /dev/null +++ b/docs/en/learn/additional-features-layouts.mdx @@ -0,0 +1,19 @@ +--- +title: Layouts +description: Layouts allow you to customize the HTML markup of the calendar, adding your own elements such as buttons. Learn how to customize the calendar header and add elements for different types of calendars. +section: 6. Additional Features +--- + +# Layouts + +The calendar provides a convenient way to customize the HTML markup using the `layouts` parameter. This allows you to add your own elements, such as buttons or any other HTML element, to the calendar. + +`layouts` takes the `type` of the calendar as the key and a string as the value. + +In the following example, the calendar header is customized for `type: 'default'`, and a regular button is added inside the calendar. + + + +Now, let's use the `inputMode: true` parameter. We will add a button that will hide the calendar when clicked. + + diff --git a/docs/en/learn/additional-features-popups-and-tooltip.mdx b/docs/en/learn/additional-features-popups-and-tooltip.mdx new file mode 100644 index 00000000..597a0c5b --- /dev/null +++ b/docs/en/learn/additional-features-popups-and-tooltip.mdx @@ -0,0 +1,23 @@ +--- +title: Popups and Tooltips +description: Learn how to add popups with information for any day in the calendar and use tooltips for selecting date ranges. +section: 6. Additional Features +--- + +# Popups and Tooltips + +## Popups + +The calendar allows you to add popups with information for any day, which will be displayed when hovering over that day. + +In the provided example, a specific day is highlighted using a CSS modifier, and information is added to the popup. + +Additional details about popups can be found in the reference guide. + + + +## Tooltips + +Tooltips can be used when the `selectionDatesMode` parameter is set to `'multiple-ranged'`. Using `onCreateDateRangeTooltip`, you can create a fully customized tooltip. + + diff --git a/docs/en/learn/additional-features-styles.mdx b/docs/en/learn/additional-features-styles.mdx new file mode 100644 index 00000000..88b517e9 --- /dev/null +++ b/docs/en/learn/additional-features-styles.mdx @@ -0,0 +1,15 @@ +--- +title: Styles +description: Customize the styles of the calendar by replacing the CSS classes with your own. Learn how to customize the appearance of the calendar. +section: 6. Additional Features +--- + +# Styles + +All CSS classes used in the calendar are variables that can be customized by replacing them with your own values. + +When replacing CSS classes with your own, keep in mind that you will need to create and style this class in your own CSS. + +Below is an example of replacing the class for the arrows with your own. A full list of classes can be found in the reference guide. + + diff --git a/docs/en/learn/additional-features-themes.mdx b/docs/en/learn/additional-features-themes.mdx new file mode 100644 index 00000000..de6ed7e5 --- /dev/null +++ b/docs/en/learn/additional-features-themes.mdx @@ -0,0 +1,27 @@ +--- +title: Themes +description: The calendar supports custom themes and by default has light and dark themes. Learn how to configure themes and use system settings or your own themes. +section: 6. Additional Features +--- + +# Themes + +The calendar supports custom themes and by default has light and dark themes. + +If the `themeAttrDetect` parameter is set to `false`, the theme will be determined by the user's system settings or the `selectedTheme` parameter. + +The calendar can automatically detect and track the site's theme based on the set tag and attribute. Additional information about this parameter can be found in the reference guide. + +If your site supports only one theme or you want to customize the appearance of the calendar to your liking, you can explicitly select one of the available themes. + +The example below demonstrates the forced use of the dark theme: + + + +And here is the same example, but using the light theme: + + + +As described above, you can use your own themes, create them yourself, or import them from the calendar if they exist. + + diff --git a/docs/en/learn/additional-features/date-picker-in-input.mdx b/docs/en/learn/additional-features/date-picker-in-input.mdx deleted file mode 100644 index b2d3c87b..00000000 --- a/docs/en/learn/additional-features/date-picker-in-input.mdx +++ /dev/null @@ -1,20 +0,0 @@ -# Date Selection in Input - -If you need to display a calendar when clicking on an **«Input»**, you can easily configure it by initializing it with the `input` parameter. -Here's a simple example of usage with default parameters: - - - Open the sandbox in a separate tab to see the example with all the files. To do this, click the **«Open»** button in the upper right corner. - - - - -It's important to note that the **«Input»** in the context of this calendar does not necessarily have to be an `` tag. It can be any HTML element, such as a `
`. - - - -With the calendar type set to `'multiple'`, users can select multiple dates simultaneously. -This allows for easily defining date ranges and working with them. -Such a calendar provides flexibility and various options for date management. - - diff --git a/docs/en/learn/additional-features/enable-time-picker.mdx b/docs/en/learn/additional-features/enable-time-picker.mdx deleted file mode 100644 index d5141016..00000000 --- a/docs/en/learn/additional-features/enable-time-picker.mdx +++ /dev/null @@ -1,27 +0,0 @@ -# Time Selection Options - -By default, time selection is disabled, but you can easily enable it and configure it to meet your needs. - -## 12-Hour Time with AM/PM - -You can enable the 12-hour time format and add AM/PM markers. - - - -## 24-Hour Time - -If you need a 24-hour time format without AM/PM, you can configure it as follows. - - - -## Setting Your Own Time - -You can set the initial time when initializing the calendar. For a 24-hour day, you don't need to specify an AM/PM marker. - - - -## Time Step Control - -In addition, you can configure the time step for minutes and hours. You can also disable manual input of time in the input field. - - diff --git a/docs/en/learn/additional-features/react-component.mdx b/docs/en/learn/additional-features/react-component.mdx deleted file mode 100644 index 508a99c8..00000000 --- a/docs/en/learn/additional-features/react-component.mdx +++ /dev/null @@ -1,63 +0,0 @@ -# React Component - - - If you're not using TypeScript, use the .jsx extension instead of .tsx and remove the component's typing. - - -To create a React component named VanillaCalendar.tsx, you need to copy the code provided below into this file: - -```js -import { HTMLAttributes, useEffect, useRef, useState } from "react"; -import VC from "vanilla-calendar-pro"; -import { IOptions } from "vanilla-calendar-pro/types"; -import "vanilla-calendar-pro/build/vanilla-calendar.min.css"; - -interface VanillaCalendarProps extends HTMLAttributes { - config?: IOptions, -} - -function VanillaCalendar({ config, ...attributes }: VanillaCalendarProps) { - const ref = useRef(null); - const [calendar, setCalendar] = useState(null); - - useEffect(() => { - if (!ref.current) return - setCalendar(new VC(ref.current, config)); - }, [ref, config]) - - useEffect(() => { - if (!calendar) return; - calendar.init(); - }, [calendar]); - - return ( -
- ) -} - -export default VanillaCalendar -``` - -Then import the created component VanillaCalendar into your React component where you plan to display the calendar. - -```js -import VanillaCalendar from "./VanillaCalendar"; -``` - -Use the created component. - -```js -// ... - -// ... -``` - -You can pass any HTML attributes supported by the `
` tag to the `VanillaCalendar` component, as well as the `config`parameter for calendar customization. - -```js -// ... - -// ... -``` diff --git a/docs/en/learn/components-for-libraries-react.mdx b/docs/en/learn/components-for-libraries-react.mdx new file mode 100644 index 00000000..8e0f87bc --- /dev/null +++ b/docs/en/learn/components-for-libraries-react.mdx @@ -0,0 +1,69 @@ +--- +title: React Component +description: Learn how to create and use a React component for Vanilla Calendar Pro. A detailed guide to creating the component and integrating it into a React application. +section: 7. Components for Libraries +--- + +# React Component + + + If you are not using TypeScript, use the `.jsx` extension instead of `.tsx` and remove the `CalendarProps` interface from the component. + + +For demonstration purposes, let's consider the simplest React component for Vanilla Calendar Pro. Create a file named `VanillaCalendar.tsx` and copy the following code into it: + +```tsx +import { useEffect, useRef, useState } from 'react'; +import { Options, Calendar } from 'vanilla-calendar-pro'; + +import 'vanilla-calendar-pro/styles/index.css'; + +interface CalendarProps extends React.HTMLAttributes { + config?: Options, +} + +function VanillaCalendar({ config, ...attributes }: CalendarProps) { + const ref = useRef(null); + const [calendar, setCalendar] = useState(null); + + useEffect(() => { + if (!ref.current) return; + setCalendar(new Calendar(ref.current, config)); + }, [ref, config]) + + useEffect(() => { + if (!calendar) return; + calendar.init() + }, [calendar]) + + return ( +
+ ) +} + +export default VanillaCalendar; +``` + +Then, import the created `VanillaCalendar` component into your React application where you plan to display the calendar. + +```tsx +import VanillaCalendar from "./VanillaCalendar"; +``` + +Use the created component. + +```tsx +// ... + +// ... +``` + +The `VanillaCalendar` component can accept any HTML attributes supported by the `
` tag, as well as the `config` parameter for configuring the calendar. + +```tsx +// ... + +// ... +``` diff --git a/docs/en/learn/customization-and-modification/css-classes.mdx b/docs/en/learn/customization-and-modification/css-classes.mdx deleted file mode 100644 index 7c6534a8..00000000 --- a/docs/en/learn/customization-and-modification/css-classes.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# CSS Classes - -All CSS classes used in the calendar are variables that can be customized by replacing them with your own values. However, it's important to note that when making such replacements, you'll also need to independently add styles for the modified CSS class. - -Below is an example of replacing the class for arrows with your own. The complete list of classes can be found in the reference guide. - - diff --git a/docs/en/learn/customization-and-modification/dom-templates.mdx b/docs/en/learn/customization-and-modification/dom-templates.mdx deleted file mode 100644 index 6250aec3..00000000 --- a/docs/en/learn/customization-and-modification/dom-templates.mdx +++ /dev/null @@ -1,13 +0,0 @@ -# DOM Templates - -The calendar provides a convenient way to customize the HTML markup using the `DOMTemplates` parameter. This allows you to add your own elements, such as buttons or any other HTML elements, to the calendar. - -`DOMTemplates` takes the calendar `type` as the key and a string as the value. - -In the following example, the calendar header is customized for type: `'default'`, and a regular button is added inside the calendar. - - - -Now let's use the `input: true` parameter. We'll add a button that will hide the calendar when clicked. - - diff --git a/docs/en/learn/customization-and-modification/popups.mdx b/docs/en/learn/customization-and-modification/popups.mdx deleted file mode 100644 index 12939a0d..00000000 --- a/docs/en/learn/customization-and-modification/popups.mdx +++ /dev/null @@ -1,11 +0,0 @@ -# Pop-ups - -The calendar allows you to add pop-ups with information for any day, which will be displayed when hovering over that day. - -This is a useful tool for displaying additional data in the calendar. - -In the example given, specific days are highlighted using CSS modifiers, and information is added to pop-ups for each of them. - -Further details about pop-ups can be found in the reference. - - diff --git a/docs/en/learn/customization-and-modification/themes.mdx b/docs/en/learn/customization-and-modification/themes.mdx deleted file mode 100644 index 2de124fa..00000000 --- a/docs/en/learn/customization-and-modification/themes.mdx +++ /dev/null @@ -1,17 +0,0 @@ -# Themes - -The calendar supports both light and dark theme designs. - -If the `settings.visibility.themeDetect` parameter is set to `false`, the theme will be determined by the user's system settings or the `settings.visibility.theme` parameter. - -The calendar can automatically detect and track the site's theme based on the set tag and attribute. Additional information about this parameter can be found in the reference. - -If your site supports only one theme or you want to customize the calendar's appearance according to your preferences, you can explicitly choose one of the available themes. - -The example below demonstrates the forced use of the dark theme. - - - -And here's the same example, but using the light theme. - - diff --git a/docs/en/learn/date-management-date-min-and-max.mdx b/docs/en/learn/date-management-date-min-and-max.mdx new file mode 100644 index 00000000..7da9f743 --- /dev/null +++ b/docs/en/learn/date-management-date-min-and-max.mdx @@ -0,0 +1,16 @@ +--- +title: Maximum and Minimum Date +description: Learn how to set a date range in the calendar using the dateMin and dateMax parameters. Configure the minimum and maximum dates to limit the allowed range. +section: 4. Managing Dates and Time +--- + +# Maximum and Minimum Date + +The date range in the calendar can be set using the `dateMin` and `dateMax` parameters. These parameters specify the allowed range of dates in the calendar. + +By default, the minimum date is `'1970-01-01'`, which corresponds to the beginning of UNIX time. +The maximum date is set to `'2470-12-31'` by default and is chosen arbitrarily. + +If you need to set a specific range of possible dates, replace the values of the `dateMin` and `dateMax` parameters with the dates you need. Note that the calendar will not process dates outside the specified range. + + diff --git a/docs/en/learn/date-management-display-range-dates.mdx b/docs/en/learn/date-management-display-range-dates.mdx new file mode 100644 index 00000000..13001abe --- /dev/null +++ b/docs/en/learn/date-management-display-range-dates.mdx @@ -0,0 +1,15 @@ +--- +title: Display Date Range +description: Learn how to set the range of displayed dates in the calendar using the displayDateMin and displayDateMax parameters. Configure the display and selection of dates within a specified range. +section: 4. Managing Dates and Time +--- + +# Display Date Range + +The `displayDateMin` and `displayDateMax` parameters define the range of dates that can be displayed in the calendar but do not affect the calendar's lifecycle. They only indicate which dates are allowed to be displayed and selected. + +For example, if the `displayDisabledDates` parameter is set to `true`, then the minimum and maximum years available for viewing by the user will be determined by the values of the `dateMin` and `dateMax` parameters. + + + +Changing the `displayDisabledDates` parameter allows you to control the dates available for viewing and selection in the calendar. diff --git a/docs/en/learn/date-management-enable-or-disable-days.mdx b/docs/en/learn/date-management-enable-or-disable-days.mdx new file mode 100644 index 00000000..009ae584 --- /dev/null +++ b/docs/en/learn/date-management-enable-or-disable-days.mdx @@ -0,0 +1,15 @@ +--- +title: Enable or Disable Days +description: Learn how to disable or enable specific days in the calendar. Configure the availability of days for selection based on your needs. +section: 4. Managing Dates and Time +--- + +# Enable or Disable Days + +You may need to disable certain days so that they are not available for selection. + + + +Sometimes it may be easier to disable all days and enable specific days rather than listing the disabled days. + + diff --git a/docs/en/learn/date-management-enable-time-picker.mdx b/docs/en/learn/date-management-enable-time-picker.mdx new file mode 100644 index 00000000..9cf70c92 --- /dev/null +++ b/docs/en/learn/date-management-enable-time-picker.mdx @@ -0,0 +1,39 @@ +--- +title: Enable Time Selection +description: Learn how to enable and configure time selection in the calendar. Supports 12-hour and 24-hour formats, setting initial time, managing time range, and step. +section: 4. Managing Dates and Time +--- + +# Enable Time Selection + +By default, time selection is disabled, but you can easily enable it and configure it according to your needs. + +## 12-Hour Day with AM/PM + +You can enable the 12-hour time format and add AM/PM markers. + + + +## 24-Hour Day + +If you need a 24-hour time format without AM/PM, you can configure it as follows. + + + +## Setting Your Own Time + +You can set the initial time when initializing the calendar. For a 24-hour day, you do not need to specify the AM/PM marker. + + + +## Managing Time Range + +You can set the possible time range. + + + +## Managing Time Step + +In addition to everything else, you can configure the time step for minutes and hours. You can also disable the ability to manually enter time in the input field. + + diff --git a/docs/en/learn/date-management-forbid-choice.mdx b/docs/en/learn/date-management-forbid-choice.mdx new file mode 100644 index 00000000..d26d761d --- /dev/null +++ b/docs/en/learn/date-management-forbid-choice.mdx @@ -0,0 +1,11 @@ +--- +title: Disable Day, Month, and Year Selection +description: Learn how to disable the ability to select the day, month, or year in the calendar. Configure the calendar according to your needs. +section: 4. Managing Dates and Time +--- + +# Disable Day, Month, and Year Selection + +The calendar allows you to easily disable the ability to select the day, month, or year individually. + + diff --git a/docs/en/learn/date-management-other-today.mdx b/docs/en/learn/date-management-other-today.mdx new file mode 100644 index 00000000..daca91b4 --- /dev/null +++ b/docs/en/learn/date-management-other-today.mdx @@ -0,0 +1,11 @@ +--- +title: Custom Today +description: Learn how to specify a different day as today in the calendar. Configure the calendar according to your needs. +section: 4. Managing Dates and Time +--- + +# Custom Today + +The calendar provides the ability to specify which day should be considered today. + + diff --git a/docs/en/learn/date-management-selected-days-month-year.mdx b/docs/en/learn/date-management-selected-days-month-year.mdx new file mode 100644 index 00000000..f48a9842 --- /dev/null +++ b/docs/en/learn/date-management-selected-days-month-year.mdx @@ -0,0 +1,13 @@ +--- +title: Selected Days, Month, and Year on Initialization +description: Learn how to specify selected days, month, and year when initializing the calendar. Configure the calendar according to your needs. +section: 4. Managing Dates and Time +--- + +# Selected Days, Month, and Year on Initialization + +The calendar allows you to explicitly specify selected days upon initialization, as well as the month and year that will be displayed regardless of the current date. + +This is useful if you need to pre-select certain dates and set a specific month and year. + + diff --git a/docs/en/learn/date-management/disable-the-ability-to-select-days-months-and-years.mdx b/docs/en/learn/date-management/disable-the-ability-to-select-days-months-and-years.mdx deleted file mode 100644 index 411a6637..00000000 --- a/docs/en/learn/date-management/disable-the-ability-to-select-days-months-and-years.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Disabling the Ability to Select Day, Month, and Year - -The calendar allows you to easily disable the ability to select the day, month, or year individually. - -The example below demonstrates disabling the ability to select all three parameters. - - diff --git a/docs/en/learn/date-management/do-not-highlight-the-weekend-today.mdx b/docs/en/learn/date-management/do-not-highlight-the-weekend-today.mdx deleted file mode 100644 index 78da6675..00000000 --- a/docs/en/learn/date-management/do-not-highlight-the-weekend-today.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Disabling Highlighting of Weekends and Today - -The calendar allows you to easily disable the highlighting of all holidays, weekends, and today's date. - -The example below demonstrates disabling the highlighting of weekends and today's date. - - diff --git a/docs/en/learn/date-management/other-today.mdx b/docs/en/learn/date-management/other-today.mdx deleted file mode 100644 index b9345137..00000000 --- a/docs/en/learn/date-management/other-today.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Setting a Different Today - -The calendar allows you to specify which day should be considered as today. - -The example below demonstrates setting a different date as today. - - diff --git a/docs/en/learn/date-management/selected-days-month-year-by-default.mdx b/docs/en/learn/date-management/selected-days-month-year-by-default.mdx deleted file mode 100644 index b9aefa36..00000000 --- a/docs/en/learn/date-management/selected-days-month-year-by-default.mdx +++ /dev/null @@ -1,9 +0,0 @@ -# Default Selected Days, Month, and Year - -The calendar allows you to explicitly specify default selected days, as well as a month and year that will be displayed independently of the current date. - -The example below demonstrates setting default selected days, month, and year. - - - -This is useful if you need to preselect specific dates and set a particular month and year during the calendar initialization. diff --git a/docs/en/learn/date-management/specify-additional-weekends-or-holidays.mdx b/docs/en/learn/date-management/specify-additional-weekends-or-holidays.mdx deleted file mode 100644 index 20bf5c2c..00000000 --- a/docs/en/learn/date-management/specify-additional-weekends-or-holidays.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Specifying Additional Weekends/Holidays - -In the calendar, you can specify additional weekends or holidays that will be highlighted in red. Holiday dates must be set manually. - -The example below demonstrates how to set additional weekends/holidays. - - diff --git a/docs/en/learn/date-range/enable-or-disable-days.mdx b/docs/en/learn/date-range/enable-or-disable-days.mdx deleted file mode 100644 index 5ee89e86..00000000 --- a/docs/en/learn/date-range/enable-or-disable-days.mdx +++ /dev/null @@ -1,15 +0,0 @@ -# Enabling or Disabling Days - -Sometimes you may need to disable specific days so they are not available for selection. The examples below show how this can be done. - - - It's important to understand that in the examples below, the parameters `settings.selected.year` and `settings.selected.month` are only specified for the demonstration of a particular month. - - -The example below demonstrates the disabling of specific days. - - - -And in the following example, it shows how to enable specific days, which can be simpler than specifying a list of disabled days. - - diff --git a/docs/en/learn/date-range/maximum-and-minimum-date-to-display.mdx b/docs/en/learn/date-range/maximum-and-minimum-date-to-display.mdx deleted file mode 100644 index 3aa991c5..00000000 --- a/docs/en/learn/date-range/maximum-and-minimum-date-to-display.mdx +++ /dev/null @@ -1,9 +0,0 @@ -# Maximum and Minimum Date for Display - -The parameters `settings.range.min` and `settings.range.max define the range of dates that can be displayed in the calendar, but they do not affect the calendar's lifecycle. They simply specify which dates are allowed for display and selection. - -For example, if the parameter `settings.visibility.disabled` is set to `true`, the minimum and maximum years available for user viewing will be determined by the values of the `date.min` and `date.max` parameters. - - - -Changing the `settings.visibility.disabled` parameter allows you to control the available dates for viewing and selection in the calendar. diff --git a/docs/en/learn/date-range/start-and-end-of-existing-dates.mdx b/docs/en/learn/date-range/start-and-end-of-existing-dates.mdx deleted file mode 100644 index abb28142..00000000 --- a/docs/en/learn/date-range/start-and-end-of-existing-dates.mdx +++ /dev/null @@ -1,12 +0,0 @@ -# Start and End Dates of Existing Dates - -The date range in the calendar can be set using the `date.min` and `date.max` parameters. These parameters specify the permissible date range in the calendar. - -By default, the minimum date is `'1970-01-01'`, which corresponds to the beginning of UNIX time. -The default maximum date is set to `'2470-12-31'`, and it is chosen arbitrarily. - -If you need to set a specific date range, replace the values of the `date.min` and `date.max` parameters with the dates you require. Note that the calendar will not process dates outside the specified range. - -The example below demonstrates how you can set your own start and end dates for the range. - - diff --git a/docs/en/learn/getting-started/installation.mdx b/docs/en/learn/getting-started/installation.mdx deleted file mode 100644 index 0fcc16c9..00000000 --- a/docs/en/learn/getting-started/installation.mdx +++ /dev/null @@ -1,57 +0,0 @@ -# Installation - -VanillaCalendar is developed in native JS using TypeScript and has no external dependencies. You can easily incorporate it into your project by following the instructions below. - -## Try VanillaCalendar - -To simply try out VanillaCalendar, you can use the online code editor. - - - -You can edit it directly or open it in a new tab. Most pages in this documentation include such sandboxes. - -## Installation using NPM or Yarn - -You can install VanillaCalendar using NPM or Yarn. - -```shell -npm install vanilla-calendar-pro -# or -yarn add vanilla-calendar-pro -``` - -## Local Installation - -To include VanillaCalendar locally, follow these steps: - -- Download the archive with the latest version of VanillaCalendar from [this link](https://vanilla-calendar.pro/vanilla-calendar.zip). -- Unzip the archive into your project's folder. -- Include all the necessary files in your HTML document. - -```html - - - - - - - - - -``` - -## Connection via CDN - -VanillaCalendar is also available through a CDN. You can insert the following scripts and styles into your HTML document. - -```html - - - - - - - - - -``` diff --git a/docs/en/learn/getting-started/usage.mdx b/docs/en/learn/getting-started/usage.mdx deleted file mode 100644 index 2bce4b05..00000000 --- a/docs/en/learn/getting-started/usage.mdx +++ /dev/null @@ -1,122 +0,0 @@ -# Usage - -Now that you have installed VanillaCalendar, you can create your first calendar. VanillaCalendar can be used **in combination with «Input»** or **statically without «Input»**. - -Almost all pages in this section use the simplest option — **statically without «Input»**. If you're interested in how to use this calendar **in combination with «Input»**, visit the page «Date Selection in Input». - -## HTML - -Create an HTML tag with any unique CSS selector anywhere on your page; the calendar will reference it and use it as an identifier. - -As an example in this documentation, an **«id»** attribute with the value **«calendar»** will be used. - - -```html - - - - -
- - -``` - -## JavaScript -If you installed VanillaCalendar using NPM or Yarn, you need to import JavaScript and the necessary styles. If you connected VanillaCalendar locally or used a CDN, you can skip this step. - -```js -import VanillaCalendar from 'vanilla-calendar-pro'; -import 'vanilla-calendar-pro/build/vanilla-calendar.min.css'; -``` - - - In addition to the file **«vanilla-calendar.min.css»**, which contains all possible calendar styles, there are separate style files in the **«build»** directory. Please include them instead of **«vanilla-calendar.min.css»** if you find it necessary. - - -```js -// Only layout calendar -import 'vanilla-calendar-pro/build/vanilla-calendar.layout.min.css'; - -// Themes -import 'vanilla-calendar-pro/build/themes/light.min.css'; -import 'vanilla-calendar-pro/build/themes/dark.min.css'; -``` - - - The calendar automatically displays the theme used in the user's system. You can disable this default behavior and forcibly set any of the themes. - In this case, you don't need to import all the themes. - - -Now, create an instance of VanillaCalendar with default parameters and initialize it. - -```js -const calendar = new VanillaCalendar('#calendar'); -calendar.init(); -``` - -The full example with html and js files can be viewed in the sandbox by clicking the **"Open"** button at the top right. - - - -## TypeScript -If you installed VanillaCalendar using NPM or Yarn and you use TypeScript, the usage is similar to JavaScript except that the types use different imports as shown below. - -```ts -import VanillaCalendar from 'vanilla-calendar-pro'; -import type { IOptions, ISettings } from 'vanilla-calendar-pro/types'; -import 'vanilla-calendar-pro/build/vanilla-calendar.min.css'; - -// use the types in your code -import class Example { - init() { - const options: IOptions = { - settings: { - selected: { - dates: ['2024-08-20'], - }, - }, - }; - - const calendar = new VanillaCalendar('#calendar', options); - calendar.init(); - - const newOptions: IOptions['settings'] = { - selected: { - dates: ['2024-08-22'], - }, - }; - - this.changeSetting(calendar, newOptions as ISettings); - calendar.update({ dates: true }); - } - - changeSetting(calendar: VanillaCalendar, settings: ISettings) { - calendar.settings = { ...calendar.settings, ...settings }; - } -} -``` - -## Locally or via CDN - -If you want to use CDN, insert the scripts and styles into your HTML document from the «Connection via CDN». - -```html - - - - - - -
- - - - -``` - -Now, you have a simple calendar with default parameters. You can customize it to suit your needs, as described in other sections of the documentation. diff --git a/docs/en/learn/handle-click-a-day.mdx b/docs/en/learn/handle-click-a-day.mdx new file mode 100644 index 00000000..6735fa3e --- /dev/null +++ b/docs/en/learn/handle-click-a-day.mdx @@ -0,0 +1,17 @@ +--- +title: Handling Day Click +description: Learn how to handle clicks on days in the calendar using the onClickDate() action. Configure the handling of selecting a single day or a range of dates. +section: 5. Action Handlers +--- + +# Handling Day Click + +For user interaction with the calendar, various actions are provided, one of which is `onClickDate()`. This action allows you to track when a user clicks on a specific day in the calendar. + +Example with outputting the selected day to the console: + + + +Note that the selected day is represented as an array, as the user can select not only a single day but also a range of dates if allowed by the calendar parameters. + + diff --git a/docs/en/learn/handle-click-on-a-month-in-the-month-selection.mdx b/docs/en/learn/handle-click-on-a-month-in-the-month-selection.mdx new file mode 100644 index 00000000..0173f527 --- /dev/null +++ b/docs/en/learn/handle-click-on-a-month-in-the-month-selection.mdx @@ -0,0 +1,13 @@ +--- +title: Handling Month Click in Month List +description: Learn how to handle clicks on months in the month list. Get information about the selected month and its index. +section: 5. Action Handlers +--- + +# Handling Month Click in Month List + +When a month is clicked in the list of all months, you can handle this event and get information about the selected element and its index. + +It is important to note that according to JS standards, months are numbered starting from zero, where January corresponds to the zeroth month and December to the eleventh. + + diff --git a/docs/en/learn/handle-click-on-the-arrows.mdx b/docs/en/learn/handle-click-on-the-arrows.mdx new file mode 100644 index 00000000..525af73e --- /dev/null +++ b/docs/en/learn/handle-click-on-the-arrows.mdx @@ -0,0 +1,11 @@ +--- +title: Handling Arrow Clicks +description: Learn how to handle clicks on the arrows to switch the month or year in the calendar. Configure event handling according to your needs. +section: 5. Action Handlers +--- + +# Handling Arrow Clicks + +When any of the arrows are clicked, an event occurs to switch the month or year in the calendar. This event can be used according to your needs. + + diff --git a/docs/en/learn/handle-click-on-the-year-in-the-year-selection.mdx b/docs/en/learn/handle-click-on-the-year-in-the-year-selection.mdx new file mode 100644 index 00000000..ea89eca5 --- /dev/null +++ b/docs/en/learn/handle-click-on-the-year-in-the-year-selection.mdx @@ -0,0 +1,13 @@ +--- +title: Handling Year Click in Year Selection +description: Learn how to handle clicks on the year in the year list. Get information about the selected year and its number. +section: 5. Action Handlers +--- + +# Handling Year Click in Year Selection + +Just like selecting a month, you can select a year by clicking on the year header in the calendar. + +When a year is clicked from the list, you can get information about the selected element that was clicked, as well as the year number. + + diff --git a/docs/en/learn/handle-click-on-weekday-and-the-week-number.mdx b/docs/en/learn/handle-click-on-weekday-and-the-week-number.mdx new file mode 100644 index 00000000..dd80dacf --- /dev/null +++ b/docs/en/learn/handle-click-on-weekday-and-the-week-number.mdx @@ -0,0 +1,19 @@ +--- +title: Handling Day of Week and Week Number Clicks +description: Learn how to handle clicks on the day of the week and the week number in the calendar. Configure event handling to select all days of the month related to the selected day of the week or to select dates in the selected week. +section: 5. Action Handlers +--- + +# Handling Day of Week and Week Number Clicks + +## Day of the Week + +You can intercept a click on a day of the week and, for example, select all days of the month that correspond to that day of the week. + + + +## Week Number + +You can display week numbers in the calendar using the `enableWeekNumbers` parameter and handle clicks on them. Having information about the dates in the selected week, you can easily select these dates in the same way. + + diff --git a/docs/en/learn/handle-get-and-change-every-day.mdx b/docs/en/learn/handle-get-and-change-every-day.mdx new file mode 100644 index 00000000..7a45fe55 --- /dev/null +++ b/docs/en/learn/handle-get-and-change-every-day.mdx @@ -0,0 +1,13 @@ +--- +title: Getting and Modifying Each Day +description: Learn how to get and modify each day in the calendar. Perform various operations, add additional information, or make changes to each day. +section: 5. Action Handlers +--- + +# Getting and Modifying Each Day + +With access to each day in the calendar, you can perform various operations, add additional information, or make changes to each day. + +For example, you can add a random cost or value to each day. + + diff --git a/docs/en/learn/handle-select-and-change-of-time.mdx b/docs/en/learn/handle-select-and-change-of-time.mdx new file mode 100644 index 00000000..fe99b3bf --- /dev/null +++ b/docs/en/learn/handle-select-and-change-of-time.mdx @@ -0,0 +1,11 @@ +--- +title: Selecting and Changing Time +description: Learn how to activate and handle the selection and change of time in the calendar. Get data with each change of time. +section: 5. Action Handlers +--- + +# Selecting and Changing Time + +By activating the `selectionTimeMode` parameter, you gain the ability to automatically receive the necessary data with each change of time. + + diff --git a/docs/en/learn/installation-and-usage.mdx b/docs/en/learn/installation-and-usage.mdx new file mode 100644 index 00000000..a2e97c66 --- /dev/null +++ b/docs/en/learn/installation-and-usage.mdx @@ -0,0 +1,93 @@ +--- +title: Installation and Usage +description: Learn how to install and use Vanilla Calendar Pro. Integrate the calendar through a package manager or CDN, and configure it according to your needs. +section: 1. Getting Started +--- + +# Installation and Usage + +Vanilla Calendar Pro is easily integrated into any project. There are several installation methods, depending on how you prefer to manage dependencies and build your project. + +## Installation via Package Manager + +The most common way to install Vanilla Calendar Pro is by using a package manager. This method is ideal for projects using Node.js and modern build tools. + +1. Install the package: + +```bash +npm install vanilla-calendar-pro +# or +yarn add vanilla-calendar-pro +# or +pnpm add vanilla-calendar-pro +``` + +2. Create an HTML element in the body of your document with an arbitrary CSS selector: + +```html + + + + +
+ + +``` + +For demonstration purposes in this section, we will use `#calendar` as the CSS selector, but you can create and use any other selector. + +3. Import the script, create a calendar instance, and initialize it in your JavaScript or TypeScript file. + +```ts +import { Calendar } from 'vanilla-calendar-pro'; + +const calendar = new Calendar('#calendar', { + // Your settings +}); +calendar.init(); +``` + +4. Import the styles in the same file. The `index.css` file contains the layout grid for the calendar, as well as light and dark themes. + +```ts +import 'vanilla-calendar-pro/styles/index.css'; +``` + +You also have the option to include the layout and theme styles separately, like this: + +```ts +import 'vanilla-calendar-pro/styles/layout.css'; // Only the skeleton +import 'vanilla-calendar-pro/styles/themes/light.css'; // Light theme +import 'vanilla-calendar-pro/styles/themes/dark.css'; // Dark theme +// or any other custom theme... +``` + +5. Full example of simple initialization without any custom settings: + + + +## Local or CDN + +If you need to quickly integrate Vanilla Calendar Pro without using build tools or package managers, you can include it via CDN or download the archive with the latest version and include it locally. + +```html + + + + + + +
+ + + +``` diff --git a/docs/en/learn/internationalization-locale.mdx b/docs/en/learn/internationalization-locale.mdx new file mode 100644 index 00000000..a4be9aa6 --- /dev/null +++ b/docs/en/learn/internationalization-locale.mdx @@ -0,0 +1,15 @@ +--- +title: Localization +description: Learn how to localize the calendar using the locale parameter or set the locale manually by providing arrays of month and weekday names. +section: 3. Internationalization +--- + +# Localization + +If your locale is supported by the `.toLocaleString()` method, you can simply pass it to the `locale` parameter to localize the calendar. + + + +If the locale is not supported or translated incorrectly, you can always set the locale manually. To do this, you need to provide arrays of month and weekday names instead of the language tag. + + diff --git a/docs/en/learn/internationalization-week-numbers.mdx b/docs/en/learn/internationalization-week-numbers.mdx new file mode 100644 index 00000000..6456ff69 --- /dev/null +++ b/docs/en/learn/internationalization-week-numbers.mdx @@ -0,0 +1,12 @@ +--- +title: Week Numbers +description: Learn how to enable the display of week numbers in the calendar by setting the enableWeekNumbers parameter to true. +section: 3. Internationalization +--- + +# Week Numbers + +In some countries, week numbers are used to denote dates. +You can enable the display of week numbers in the calendar by setting the `enableWeekNumbers` parameter to `true`. + + diff --git a/docs/en/learn/internationalization-weekday-first-and-weekdays.mdx b/docs/en/learn/internationalization-weekday-first-and-weekdays.mdx new file mode 100644 index 00000000..9bbfacb4 --- /dev/null +++ b/docs/en/learn/internationalization-weekday-first-and-weekdays.mdx @@ -0,0 +1,13 @@ +--- +title: First Day of the Week and Weekends +description: Learn how to configure the first day of the week and weekends in the calendar. Change the ISO 8601 standard and assign any days of the week as weekends or disable them. +section: 3. Internationalization +--- + +# First Day of the Week and Weekends + +By default, the calendar is based on the European standard **ISO 8601**. This means that the first day of the week is Monday. + +Using separate parameters to define the first day of the week and the displayed weekends, you can specify any day as the first day of the week and assign any days of the week as weekends or completely disable them by specifying an empty array. + + diff --git a/docs/en/learn/internationalization-weekends-and-holidays.mdx b/docs/en/learn/internationalization-weekends-and-holidays.mdx new file mode 100644 index 00000000..069ac48b --- /dev/null +++ b/docs/en/learn/internationalization-weekends-and-holidays.mdx @@ -0,0 +1,11 @@ +--- +title: Additional Weekends and Holidays +description: Learn how to specify additional weekends and holidays in the calendar. Mark these days in red by setting them manually. +section: 3. Internationalization +--- + +# Additional Weekends and Holidays + +In the calendar, you can specify additional weekends or holidays that will be marked in red. These days should be set manually. + + diff --git a/docs/en/learn/internationalization/assign-manually.mdx b/docs/en/learn/internationalization/assign-manually.mdx deleted file mode 100644 index b4f634fb..00000000 --- a/docs/en/learn/internationalization/assign-manually.mdx +++ /dev/null @@ -1,9 +0,0 @@ -# Manual Localization - -You can manually localize the calendar if the `settings.lang` parameter does not meet your needs. Only the month and day labels in the calendar need to be localized, so you need to provide the corresponding arrays of strings and set `settings.lang` to `'define'`. - - - Please note that the week array should start with Sunday; this does not affect **ISO 8601**. - - - diff --git a/docs/en/learn/internationalization/iso-8601.mdx b/docs/en/learn/internationalization/iso-8601.mdx deleted file mode 100644 index c7a360b0..00000000 --- a/docs/en/learn/internationalization/iso-8601.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# First Day of the Week - -The calendar follows the **ISO 8601** standard to determine the first day of the week. If the `settings.iso8601` parameter is set to `true`, Monday will be the first day of the week. Otherwise, if `settings.iso8601` is set to `false`, Sunday will be the first day of the week. You can customize this parameter according to your preference. - - - -This allows you to configure which day of the week will be the first day in your calendar in accordance with the international **ISO 8601** standard. diff --git a/docs/en/learn/internationalization/locale.mdx b/docs/en/learn/internationalization/locale.mdx deleted file mode 100644 index 9dd21824..00000000 --- a/docs/en/learn/internationalization/locale.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Automatic Localization - -If your locale is supported by the `.toLocaleString()` method, you can simply pass it to the `settings.lang` parameter for calendar localization. - - - -If the locale is not supported or translated incorrectly, you can always set the locale manually, as explained in the next section. diff --git a/docs/en/learn/internationalization/week-numbers.mdx b/docs/en/learn/internationalization/week-numbers.mdx deleted file mode 100644 index ebb6db45..00000000 --- a/docs/en/learn/internationalization/week-numbers.mdx +++ /dev/null @@ -1,6 +0,0 @@ -# Week Numbers - -For example, in Norway, it's very common to denote dates using week numbers. -You can enable the display of week numbers in the calendar by setting the `settings.visibility.weekNumbers` parameter to `true`. - - diff --git a/docs/en/learn/type-default.mdx b/docs/en/learn/type-default.mdx new file mode 100644 index 00000000..8fe61e26 --- /dev/null +++ b/docs/en/learn/type-default.mdx @@ -0,0 +1,25 @@ +--- +title: Default (Single) +description: Learn how to use the 'default' calendar type to display one month and select days. Configure the calendar to display when clicking on an element with the inputMode parameter. +section: 2. Calendar Types +--- + +# Default (Single) + +## Static + +The `'default'` calendar type displays one month, allows you to select days, navigate between months using arrows, and select the month and year from the respective headers. This is the standard display mode for the calendar. + + + +## With Input + +If you need to display the calendar when clicking on an **«Input»**, you can easily configure it by initializing it with the `inputMode: true` parameter. + + + It is important to note that **«Input»** in the context of this calendar does not necessarily have to be an `` tag. It can be any HTML element, such as a `
`. In **«Input»**, you can initialize any type of calendar. + + +By default, the calendar does not write any values to the **«Input»** field, giving you unique control over what you want to see in the `value`. + + diff --git a/docs/en/learn/type-month.mdx b/docs/en/learn/type-month.mdx new file mode 100644 index 00000000..f830fe23 --- /dev/null +++ b/docs/en/learn/type-month.mdx @@ -0,0 +1,11 @@ +--- +title: Month +description: Learn how to use the 'month' calendar type to display a list of months and select months and years. Restrict the user's selection to only the month and year. +section: 2. Calendar Types +--- + +# Month + +The `'month'` calendar type displays a list of months and allows the user to select months and years from the respective headers. This mode is useful if you need to restrict the user's selection to only the month and year, without the ability to select specific days. + + diff --git a/docs/en/learn/type-multiple.mdx b/docs/en/learn/type-multiple.mdx new file mode 100644 index 00000000..d0768dcb --- /dev/null +++ b/docs/en/learn/type-multiple.mdx @@ -0,0 +1,19 @@ +--- +title: Multiple +description: Learn how to use the 'multiple' calendar type to display multiple months and select dates. Configure the selection of date ranges with the selectionDatesMode parameter. +section: 2. Calendar Types +--- + +# Multiple + +The `'multiple'` calendar type displays multiple months, allowing you to select days in each of them. This type of calendar is useful when the user needs to select multiple dates across different months. To do this, you need to use the `selectionDatesMode` parameter and set its value to `'multiple'`. + +Example code for creating a calendar with the `'multiple'` type: + + + +If you need to select date ranges, you can use the `selectionDatesMode` parameter and set its value to `'multiple-ranged'`. This allows you to select date ranges instead of individual days. + +When the `selectionDatesMode` parameter is set to `'multiple-ranged'`, for performance optimization, the array of selected dates contains only the start and end dates. You can disable this and get the full list of selected dates using `enableEdgeDatesOnly`. + + diff --git a/docs/en/learn/type-year.mdx b/docs/en/learn/type-year.mdx new file mode 100644 index 00000000..9e53ac24 --- /dev/null +++ b/docs/en/learn/type-year.mdx @@ -0,0 +1,11 @@ +--- +title: Year +description: Learn how to use the 'year' calendar type to display a list of years and select the year and month. Restrict the user's selection to only the year and month. +section: 2. Calendar Types +--- + +# Year + +The `'year'` calendar type displays a list of years, allowing the user to select a year from the list and a month from the corresponding header. This mode is useful if you need to restrict the user's selection to only the year and month, excluding the ability to select specific days. + + diff --git a/docs/en/learn/types-of-calendars/default.mdx b/docs/en/learn/types-of-calendars/default.mdx deleted file mode 100644 index 9d1844ce..00000000 --- a/docs/en/learn/types-of-calendars/default.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Default (Single) - -The calendar type `'default'` displays a single month, allows you to select days, navigate between months using arrows, and choose a month and year from the respective headers. This is the standard calendar display mode. - - diff --git a/docs/en/learn/types-of-calendars/month.mdx b/docs/en/learn/types-of-calendars/month.mdx deleted file mode 100644 index 7ac0240e..00000000 --- a/docs/en/learn/types-of-calendars/month.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Month - -The calendar type `'month'` displays a list of months and allows the user to select months and years from the respective headers. This mode is useful if you need to limit the user's selection to only the month and year, without the ability to choose specific days. - - diff --git a/docs/en/learn/types-of-calendars/multiple.mdx b/docs/en/learn/types-of-calendars/multiple.mdx deleted file mode 100644 index 5a81c336..00000000 --- a/docs/en/learn/types-of-calendars/multiple.mdx +++ /dev/null @@ -1,11 +0,0 @@ -# Multiple - -The calendar type `'multiple'` displays multiple months, allowing you to select days in each of them. This calendar type is useful when a user needs to choose multiple dates in different months, but for this, you need to use the `settings.selection.day` parameter and set its value to `'multiple'`. - -Example code for creating a calendar with the type `'multiple'`. - - - -If you need to select date ranges in each month, you can use the `settings.selection.day` parameter and set its value to `'multiple-ranged'`. This allows you to select date ranges, not just individual days. - - diff --git a/docs/en/learn/types-of-calendars/year.mdx b/docs/en/learn/types-of-calendars/year.mdx deleted file mode 100644 index c13f6136..00000000 --- a/docs/en/learn/types-of-calendars/year.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Year - -The calendar type `'year'` displays a list of years, allowing the user to choose a year from the list and select a month from the respective header. This mode is useful if you need to limit the user's selection to only the year and month, excluding the ability to choose specific days. - - diff --git a/docs/en/reference.mdx b/docs/en/reference.mdx new file mode 100644 index 00000000..8b079ece --- /dev/null +++ b/docs/en/reference.mdx @@ -0,0 +1,19 @@ +--- +title: Guide Overview +description: Page Description +--- + +# Guide Overview + +This section provides detailed documentation on working with the **Vanilla Calendar Pro API**. If you're looking for an introduction to the features, please check out the [«Learn»](/docs/learn) section. + +The Vanilla Calendar Pro API documentation is divided into several functional subsections: + +1. **Instance Creation** — how and where to create a calendar instance; +2. **Methods** — available methods for working with the calendar instance; +3. **Settings** — all options that can be provided to change the behavior and display of the calendar. +4. **Actions** — event handlers that allow you to receive and process various interaction data with the calendar. +5. **Popups** — pop-ups allow you to select any day and display brief information about it directly in the calendar when hovering over that day. +6. **Layouts** — templates that allow you to practically alter the entire DOM structure of the calendar and add your own HTML elements. +7. **Styles** — a CSS class object for styling the calendar. It allows you to use any CSS framework, like Tailwind CSS, or custom classes. +8. **Aria-labels** — an object of strings for `aria-label`. Allows you to localize all calendar labels to ensure accessibility. diff --git a/docs/en/reference/actions.mdx b/docs/en/reference/actions.mdx new file mode 100644 index 00000000..35848d60 --- /dev/null +++ b/docs/en/reference/actions.mdx @@ -0,0 +1,379 @@ +--- +title: Actions +description: Learn about the various actions that can be configured for the calendar, including event handlers for clicks on dates, weeks, months, years, and arrows, as well as time changes and tooltip displays. +section: 4 +--- + +# Actions + +## onClickDate() + +`Type: Function` + +`Default: null` + +`Options: onClickDate(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickDate(self, event) {}, +}); +``` + +This method is triggered after clicking on a day in the calendar. You can get the following parameters: +- `self` - reference to the initialized calendar; +- `event` - mouse event. + + + It is important to know that each HTML day element contains a data attribute with the full date in the format `YYYY-MM-DD`. + If you need to get the day, month, and year separately, you can use standard JS methods. + For example: `new Date('2022-11-07').getDate()` will return `7`. + + +--- + +## onClickWeekDay() + +`Type: Function` + +`Default: null` + +`Options: onClickWeekDay(self, day, dateEls, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickWeekDay(self, day, dateEls, event) {}, +}); +``` + +This method is triggered after clicking on a weekday in the calendar. You can get the following parameters: +- `self` - reference to the initialized calendar; +- `number` - week number; +- `days` - array of days (html elements); +- `year` - year of the week; +- `event` - mouse event. + +--- + +## onClickWeekNumber() + +`Type: Function` + +`Default: null` + +`Options: onClickWeekNumber(self, number, year, dateEls, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickWeekNumber(self, number, year, dateEls, event) {}, +}); +``` + +This method is triggered after clicking on a week number in the calendar, but for it to work, the `enableWeekNumbers` parameter must be set to `true`. You can get the following parameters: +- `self` - reference to the initialized calendar; +- `number` - week number; +- `days` - array of days (html elements); +- `year` - year of the week; +- `event` - mouse event. + +--- + +## onClickTitle() + +`Type: Function` + +`Default: null` + +`Options: onClickTitle(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickTitle(self, event) {}, +}); +``` + +This method is triggered after clicking on the month or year title in the calendar. You can get the following parameters: +- `self` - reference to the initialized calendar; +- `event` - mouse event. + +--- + +## onClickMonth() + +`Type: Function` + +`Default: null` + +`Options: onClickMonth(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickMonth(self, event) {}, +}); +``` + +This method is triggered after selecting a month in the calendar. You can get the following parameters: +- `self` - reference to the initialized calendar; +- `event` - mouse event. + +--- + +## onClickYear() + +`Type: Function` + +`Default: null` + +`Options: onClickYear(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickYear(self, event) {}, +}); +``` + +This method is triggered after selecting a year in the calendar. You can get the following parameters: +- `self` - reference to the initialized calendar; +- `event` - mouse event. + +--- + +## onClickArrow() + +`Type: Function` + +`Default: null` + +`Options: onClickArrow(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickArrow(self, event) {}, +}); +``` + +This method is triggered after clicking on an arrow in the calendar. You can get the following parameters: +- `self` - reference to the initialized calendar; +- `event` - mouse event. + +--- + +## onChangeTime() + +`Type: Function` + +`Default: null` + +`Options: onChangeTime(self, event, isError) => void | null` + +```ts +new Calendar('#calendar', { + onChangeTime(self, event) {}, +}); +``` + +This method is triggered after changing the time in the calendar. You can get the following parameters: +- `self` - reference to the initialized calendar; +- `event` - change event; +- `isError` - returns true if the user entered an incorrect time. + +--- + +## onChangeToInput() + +`Type: Function` + +`Default: null` + +`Options: onChangeToInput(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onChangeToInput(self, event) {}, +}); +``` + +For this method to work, the `inputMode` parameter must be set to `true`. +This method is triggered after clicking on a day in the calendar or changing the time in any way. +You can get the following parameters: +- `self` - reference to the initialized calendar; +- `event` - event. + +--- + +## onCreateDateRangeTooltip() + +`Type: Function` + +`Default: null` + +`Options: onCreateDateRangeTooltip(self, dateEl, tooltipEl, dateElBCR, mainElBCR) => void | null` + +```ts +new Calendar('#calendar', { + onCreateDateRangeTooltip(self, dateEl, tooltipEl, dateElBCR, mainElBCR) {}, +}); +``` + +Allows creating a tooltip for a date range. Triggers on clicking and hovering over a day if the `selectionDatesMode` parameter is set to `'multiple-ranged'`. +You can get the following parameters: +- `self` - reference to the initialized calendar. +- `dateEl` - HTML date element; +- `tooltipEl` - HTML tooltip element; +- `dateElBCR` - object with information about the position and size of the HTML date element; +- `mainElBCR` - object with information about the position and size of the main HTML calendar element. + +--- + +## onCreateDateEls() + +`Type: Function` + +`Default: null` + +`Options: onCreateDateEls(self, dateEl) => void | null` + +```ts +new Calendar('#calendar', { + onCreateDateEls(self, dateEl) {}, +}); +``` + +This method is triggered during calendar initialization and any changes. It provides access to information about each day. You can get the following parameters: +- `self` - reference to the initialized calendar; +- `dateEl` - HTML date element. + +--- + +## onCreateMonthEls() + +`Type: Function` + +`Default: null` + +`Options: onCreateMonthEls(self, monthEl) => void | null` + +```ts +new Calendar('#calendar', { + onCreateMonthEls(self, monthEl) {}, +}); +``` + +This method is triggered when the calendar type is set to `'month'`. The calendar type also becomes `'month'` when the user clicks on the month title or during initialization with the parameter `type = 'month'`. It provides access to information about each month. You can get the following parameters: +- `self` - reference to the initialized calendar; +- `monthEl` - HTML month element. + +--- + +## onCreateYearEls() + +`Type: Function` + +`Default: null` + +`Options: onCreateYearEls(self, yearEl) => void | null` + +```ts +new Calendar('#calendar', { + onCreateYearEls(self, yearEl) {}, +}); +``` + +This method is triggered when the calendar type is set to `'year'`. The calendar type becomes `'year'` when the user clicks on the year title or during initialization with the parameter `type = 'year'`. It provides access to information about each year. You can get the following parameters: +- `self` - reference to the initialized calendar; +- `yearEl` - HTML year element. + +--- + +## onInit() + +`Type: Function` + +`Default: null` + +`Options: onInit(self) => void | null` + +```ts +new Calendar('#calendar', { + onInit(self) {}, +}); +``` + +This method is triggered during calendar initialization. If the `inputMode` parameter is set to `true`, the method will execute on the first display of the calendar, as this is when the calendar is initialized. +- `self` - reference to the initialized calendar. + +--- + +## onUpdate() + +`Type: Function` + +`Default: null` + +`Options: onUpdate(self) => void | null` + +```ts +new Calendar('#calendar', { + onUpdate(self) {}, +}); +``` + +This method is triggered when the calendar is updated/reset using the `.update()` method. +- `self` - reference to the initialized calendar. + +--- + +## onDestroy() + +`Type: Function` + +`Default: null` + +`Options: onDestroy(self) => void | null` + +```ts +new Calendar('#calendar', { + onDestroy(self) {}, +}); +``` + +This method is triggered when the calendar is destroyed. +- `self` - reference to the initialized calendar. + +--- + +## onShow() + +`Type: Function` + +`Default: null` + +`Options: onShow(self) => void | null` + +```ts +new Calendar('#calendar', { + onShow(self) {}, +}); +``` + +This method is triggered when the calendar is displayed to the user, but only if the `inputMode` parameter is set to `true`. +- `self` - reference to the initialized calendar. + +--- + +## onHide() + +`Type: Function` + +`Default: null` + +`Options: onHide(self) => void | null` + +```ts +new Calendar('#calendar', { + onHide(self) {}, +}); +``` + +This method is triggered when the calendar is hidden, but only if the `inputMode` parameter is set to `true`. +- `self` - reference to the initialized calendar. diff --git a/docs/en/reference/additionally/actions.mdx b/docs/en/reference/additionally/actions.mdx deleted file mode 100644 index f07610f7..00000000 --- a/docs/en/reference/additionally/actions.mdx +++ /dev/null @@ -1,348 +0,0 @@ -# Actions - -Actions in VanillaCalendar are event handlers that allow you to receive and process various interaction data with the calendar. - - - Starting from version 2.9.0, all methods contain `self` - a link to the initialized calendar. This allows you to obtain the maximum amount of data. `self` contains all the [read-only parameters](/docs/reference/main/readonly-options) and more. - - - - Note that month numbering starts from `0`, so December is the 11th month. This is related to the behavior of the standard JavaScript method `.getMonth()`. - - -## actions.clickDay() - -`Type: Function` - -`Default: null` - -`Options: clickDay(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - clickDay(e, self) {}, - }, -}); -``` - -This method triggers after clicking on a day in the calendar. You can get the following parameters: -- `e` - the mouse event; -- `self` - reference to the initialized calendar. - - - It's important to know that each HTML element of the day you clicked on contains a data attribute that holds the full date in the `YYYY-MM-DD` format. If you need to get the day, month, and year separately, you can use standard JavaScript methods. For example, `new Date('2022-11-07').getDate()` will return `7`. - - ---- - -## actions.clickWeekNumber() - -`Type: Function` - -`Default: null` - -`Options: clickWeekNumber(e, number, days, year, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - clickWeekNumber(e, number, days, year, self) {}, - }, -}); -``` - -This method triggers after clicking on the week number in the calendar, but it requires the `settings.visibility.weekNumbers` parameter to be set to true. You can get the following parameters: -- `e` - the mouse event; -- `number` - the week number; -- `days` - an array of days (HTML elements); -- `year` - the year of the week. -- `self` - reference to the initialized calendar. - ---- - -## actions.clickMonth() - -`Type: Function` - -`Default: null` - -`Options: clickMonth(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - clickMonth(e, self) {}, - }, -}); -``` - -This method triggers after selecting a month in the calendar. You can get the following parameters: -- `e` - the mouse event; -- `self` - reference to the initialized calendar. - ---- - -## actions.clickYear() - -`Type: Function` - -`Default: null` - -`Options: clickYear(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - clickYear(e, self) {}, - }, -}); -``` - -This method triggers after selecting a year in the calendar. You can get the following parameters: -- `e` - the mouse event; -- `self` - reference to the initialized calendar. - ---- - -## actions.clickArrow() - -`Type: Function` - -`Default: null` - -`Options: clickArrow(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - clickArrow(e, self) {}, - }, -}); -``` - -This method triggers after clicking the arrow in the calendar. You can get the following parameters: -- `e` - the mouse event; -- `self` - reference to the initialized calendar. - ---- - -## actions.changeTime() - -`Type: Function` - -`Default: null` - -`Options: changeTime(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - changeTime(e, self) {}, - }, -}); -``` - -This method triggers after changing the time in the calendar. You can get the following parameters: -- `e` - the change event; -- `self` - reference to the initialized calendar. - ---- - -## actions.changeToInput() - -`Type: Function` - -`Default: null` - -`Options: changeToInput(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - changeToInput(e, self) {}, - }, -}); -``` - -To use this method, you need the `input` parameter set to `true`. -This method triggers after clicking on a day in the calendar or changing the time in any way. -You can get the following parameters: -- `e` - the event; -- `self` - reference to the initialized calendar. - ---- - -## actions.getDays() - -`Type: Function` - -`Default: null` - -`Options: getDays(day, date, HTMLElement, HTMLButtonElement, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - getDays(day, date, HTMLElement, HTMLButtonElement, self) {}, - }, -}); -``` - -This method triggers during the calendar initialization and any changes. It provides access to information about each day and its HTML element. You can get the following parameters: -- `day` - the day number; -- `date` - the full date in the `YYYY-MM-DD` format; -- `HTMLElement` - the parent (wrapper) HTML element of the day; -- `HTMLButtonElement` - the child (button) HTML element of the day. -- `self` - reference to the initialized calendar. - ---- - -## actions.getMonths() - -`Type: Function` - -`Default: null` - -`Options: getMonths(month: number, HTMLElement: HTMLElement, self: IVanillaCalendar) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - getMonths(month, HTMLElement, self) {}, - }, -}); -``` - -This method is triggered when the calendar type is set to `'month'`. The calendar type also becomes `'month'` when the user clicks on the month header or during initialization with the `type = 'month'` parameter. It provides access to information about each month and its HTML element. You can retrieve the following parameters: -- `month` - month number (starts at 0); -- `HTMLElement` - HTML element of the month; -- `self` - reference to the initialized calendar. - ---- - -## actions.getYears() - -`Type: Function` - -`Default: null` - -`Options: getYears(year: number, HTMLElement: HTMLElement, self: IVanillaCalendar) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - getYears(year, HTMLElement, self) {}, - }, -}); -``` - -This method is triggered when the calendar type is set to `'year'`. The calendar type becomes `'year'` when the user clicks on the year header or during initialization with the `type = 'year'` parameter. It provides access to information about each year and its HTML element. You can retrieve the following parameters: -- `year` - year number; -- `HTMLElement` - HTML element of the year; -- `self` - reference to the initialized calendar. - ---- - -## actions.hideCalendar() - -`Type: Function` - -`Default: null` - -`Options: hideCalendar(self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - hideCalendar(self) {}, - }, -}); -``` - -This method triggers when the calendar is hiding, but only if the `input` parameter is set to `true`. -- `self` - reference to the initialized calendar. - ---- - -## actions.showCalendar() - -`Type: Function` - -`Default: null` - -`Options: showCalendar(self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - showCalendar(self) {}, - }, -}); -``` - -This method triggers when displaying the calendar to the user, but only if the `input` parameter is set to `true`. -- `self` - reference to the initialized calendar. - ---- - -## actions.initCalendar() - -`Type: Function` - -`Default: null` - -`Options: initCalendar(self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - initCalendar(self) {}, - }, -}); -``` - -This method is triggered during the initialization of the calendar. If the value true is set for the `input` parameter, the method will execute upon the first display of the calendar, as the calendar is initialized at that moment. -- `self` - reference to the initialized calendar. - ---- - -## actions.updateCalendar() - -`Type: Function` - -`Default: null` - -`Options: updateCalendar(self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - updateCalendar(self) {}, - }, -}); -``` - -This method is triggered when the calendar is updated/reset. -- `self` - reference to the initialized calendar. - ---- - -## actions.destroyCalendar() - -`Type: Function` - -`Default: null` - -`Options: destroyCalendar(self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - destroyCalendar(self) {}, - }, -}); -``` - -This method is triggered upon destruction of the calendar. -- `self` - reference to the initialized calendar. diff --git a/docs/en/reference/additionally/css-classes.mdx b/docs/en/reference/additionally/css-classes.mdx deleted file mode 100644 index 228fefe4..00000000 --- a/docs/en/reference/additionally/css-classes.mdx +++ /dev/null @@ -1,77 +0,0 @@ -# CSS Classes - -`CSSClasses` provide the ability to override any CSS class within the calendar. Below is a list of all the default classes. - -```js -new VanillaCalendar('#calendar', { - CSSClasses: { - calendar: 'vanilla-calendar', - calendarDefault: 'vanilla-calendar_default', - calendarMultiple: 'vanilla-calendar_multiple', - calendarMonth: 'vanilla-calendar_month', - calendarYear: 'vanilla-calendar_year', - calendarHidden: 'vanilla-calendar_hidden', - calendarToInput: 'vanilla-calendar_to-input', - controls: 'vanilla-calendar-controls', - grid: 'vanilla-calendar-grid', - gridDisabled: 'vanilla-calendar-grid_disabled', - column: 'vanilla-calendar-column', - columnMonth: 'vanilla-calendar-column_month', - columnYear: 'vanilla-calendar-column_year', - header: 'vanilla-calendar-header', - headerContent: 'vanilla-calendar-header__content', - month: 'vanilla-calendar-month', - monthDisabled: 'vanilla-calendar-month_disabled', - year: 'vanilla-calendar-year', - yearDisabled: 'vanilla-calendar-year_disabled', - arrow: 'vanilla-calendar-arrow', - arrowPrev: 'vanilla-calendar-arrow_prev', - arrowNext: 'vanilla-calendar-arrow_next', - wrapper: 'vanilla-calendar-wrapper', - content: 'vanilla-calendar-content', - week: 'vanilla-calendar-week', - weekDay: 'vanilla-calendar-week__day', - weekDayWeekend: 'vanilla-calendar-week__day_weekend', - days: 'vanilla-calendar-days', - daysSelecting: 'vanilla-calendar-days_selecting', - months: 'vanilla-calendar-months', - monthsSelecting: 'vanilla-calendar-months_selecting', - monthsMonth: 'vanilla-calendar-months__month', - monthsMonthSelected: 'vanilla-calendar-months__month_selected', - monthsMonthDisabled: 'vanilla-calendar-months__month_disabled', - years: 'vanilla-calendar-years', - yearsSelecting: 'vanilla-calendar-years_selecting', - yearsYear: 'vanilla-calendar-years__year', - yearsYearSelected: 'vanilla-calendar-years__year_selected', - yearsYearDisabled: 'vanilla-calendar-years__year_disabled', - time: 'vanilla-calendar-time', - timeContent: 'vanilla-calendar-time__content', - timeHours: 'vanilla-calendar-time__hours', - timeMinutes: 'vanilla-calendar-time__minutes', - timeKeeping: 'vanilla-calendar-time__keeping', - timeRanges: 'vanilla-calendar-time__ranges', - timeRange: 'vanilla-calendar-time__range', - day: 'vanilla-calendar-day', - daySelected: 'vanilla-calendar-day_selected', - daySelectedFirst: 'vanilla-calendar-day_selected-first', - daySelectedLast: 'vanilla-calendar-day_selected-last', - daySelectedIntermediate: 'vanilla-calendar-day_selected-intermediate', - dayPopup: 'vanilla-calendar-day__popup', - dayBtn: 'vanilla-calendar-day__btn', - dayBtnPrev: 'vanilla-calendar-day__btn_prev', - dayBtnNext: 'vanilla-calendar-day__btn_next', - dayBtnToday: 'vanilla-calendar-day__btn_today', - dayBtnSelected: 'vanilla-calendar-day__btn_selected', - dayBtnHover: 'vanilla-calendar-day__btn_hover', - dayBtnDisabled: 'vanilla-calendar-day__btn_disabled', - dayBtnIntermediate: 'vanilla-calendar-day__btn_intermediate', - dayBtnWeekend: 'vanilla-calendar-day__btn_weekend', - dayBtnHoliday: 'vanilla-calendar-day__btn_holiday', - weekNumbers: 'vanilla-calendar-week-numbers', - weekNumbersTitle: 'vanilla-calendar-week-numbers__title', - weekNumbersContent: 'vanilla-calendar-week-numbers__content', - weekNumber: 'vanilla-calendar-week-number', - isFocus: 'vanilla-calendar-is-focus', - }, -}); -``` diff --git a/docs/en/reference/additionally/dom-templates.mdx b/docs/en/reference/additionally/dom-templates.mdx deleted file mode 100644 index 16adf322..00000000 --- a/docs/en/reference/additionally/dom-templates.mdx +++ /dev/null @@ -1,154 +0,0 @@ -# DOM Templates - -DOM templates allow you to customize the DOM structure of the calendar almost entirely and add your own HTML elements, such as buttons. Each calendar type has its own default template, and you can customize each of them. - - - Tags containing the **«#»** symbol are registered calendar components and should have a closing forward slash at the end of the tag, except for the **\<#Multiple>\<#/Multiple>** tag, which wraps a single month. - The default templates list all possible components for that template. - - -## DOMTemplates.default - -`Type: String` - -`Default: string` - -`Options: string` - -```js -new VanillaCalendar('#calendar', { - DOMTemplates: { - default: ` -
- <#ArrowPrev /> -
- <#Month /> - <#Year /> -
- <#ArrowNext /> -
-
- <#WeekNumbers /> -
- <#Week /> - <#Days /> -
-
- <#ControlTime /> - ` - } -}); -``` - -This is the default template for displaying a single month and its dates. - ---- - -## DOMTemplates.multiple - -`Type: String` - -`Default: string` - -`Options: string` - -```js -new VanillaCalendar('#calendar', { - DOMTemplates: { - multiple: ` -
- <#ArrowPrev /> - <#ArrowNext /> -
-
- <#Multiple> -
-
-
- <#Month /> - <#Year /> -
-
-
- <#WeekNumbers /> -
- <#Week /> - <#Days /> -
-
-
- <#/Multiple> -
- <#ControlTime /> - ` - } -}); -``` - -This is the default template for displaying multiple months and their dates. - ---- - -## DOMTemplates.month - -`Type: String` - -`Default: string` - -`Options: string` - -```js -new VanillaCalendar('#calendar', { - DOMTemplates: { - month: ` -
-
- <#Month /> - <#Year /> -
-
-
-
- <#Months /> -
-
- ` - } -}); -``` - -This is the default template for selecting a month. - ---- - -## DOMTemplates.year - -`Type: String` - -`Default: string` - -`Options: string` - -```js -new VanillaCalendar('#calendar', { - DOMTemplates: { - year: ` -
- <#ArrowPrev /> -
- <#Month /> - <#Year /> -
- <#ArrowNext /> -
-
-
- <#Years /> -
-
- ` - } -}); -``` - -This is the default template for selecting a year. diff --git a/docs/en/reference/additionally/localization.mdx b/docs/en/reference/additionally/localization.mdx deleted file mode 100644 index 82cc988e..00000000 --- a/docs/en/reference/additionally/localization.mdx +++ /dev/null @@ -1,49 +0,0 @@ -# Localization - -The top-level `locale` key is used for manual localization of the calendar. This key works only if the `settings.lang` parameter is set to `'define'`. `locale` allows you to set your own names for months and weekdays. - - - If your language tag is supported by the `.toLocaleString()` method, you can pass that language tag to the `settings.lang` parameter without the need for manual localization. - You can find information about your language tag support here (BCP 47). - - -The `locale` key contains two sub-keys: `months` and `weekday`. Both of these keys take an array of strings. -**Both keys are required** if the `settings.lang` parameter is set to `'define'`. - -## locale.months - -`Type: String[]` - -`Default: []` - -`Options: String[] | []` - -```js -new VanillaCalendar('#calendar', { - settings: { - lang: 'define', - }, - locale: { - months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - }, -}); -``` - -## locale.weekday - -`Type: String[]` - -`Default: []` - -`Options: String[] | []` - -```js -new VanillaCalendar('#calendar', { - settings: { - lang: 'define', - }, - locale: { - weekday: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - }, -}); -``` diff --git a/docs/en/reference/additionally/pop-ups.mdx b/docs/en/reference/additionally/pop-ups.mdx deleted file mode 100644 index 30f5487f..00000000 --- a/docs/en/reference/additionally/pop-ups.mdx +++ /dev/null @@ -1,72 +0,0 @@ -# Popups - -Popups allow you to highlight any day and display brief information about it directly in the calendar when you hover over that day. - -## popups['date'] - -`Type: String` - -`Default: null` - -`Options: 'YYYY-MM-DD': | null` - -```js -new VanillaCalendar('#calendar', { - popups: { - '2022-06-28': {}, - } -}); -``` - -Use dates in the format `YYYY-MM-DD` as the key. In the example provided, a popup is set for June 28, 2022. - ---- - -## popups['date'].modifier - -`Type: String` - -`Default: null` - -`Options: CSS classes | null` - -```js -new VanillaCalendar('#calendar', { - popups: { - '2022-06-28': { - modifier: 'bg-red color-pink', - }, - } -}); -``` - -The `modifier` accepts arbitrary CSS classes separated by spaces. You can use these classes to style the date, making it stand out or changing its appearance. - ---- - -## popups['date'].html - -`Type: String` - -`Default: null` - -`Options: '' | HTML | null` - -```js -new VanillaCalendar('#calendar', { - popups: { - '2022-06-28': { - modifier: 'bg-red color-pink', - html: `
- 12:00 PM -

Airplane in Las Vegas

-
`, - // or just text - // html: 'Airplane in Las Vegas', - }, - } -}); -``` - -The `html` accepts plain text or HTML markup for styling the popup. -In this example, hovering over June 28, 2022, will display a popup with the text "Airplane in Las Vegas" and the time "12:00 PM," and it will apply the styles specified in the `bg-red` and `color-pink` classes. diff --git a/docs/en/reference/additionally/settings.mdx b/docs/en/reference/additionally/settings.mdx deleted file mode 100644 index 115c8643..00000000 --- a/docs/en/reference/additionally/settings.mdx +++ /dev/null @@ -1,774 +0,0 @@ -# Settings - -The top-level `settings` key contains a set of parameters that define the calendar's configuration. - -## settings.lang - -`Type: String` - -`Default: 'en'` - -`Options: Language label | 'define'` - -```js -new VanillaCalendar('#calendar', { - settings: { - lang: 'en', - }, -}); -``` - -This parameter sets the language localization of the calendar. -You can specify a language label according to BCP 47 or use `'define'` to customize your own month and weekday names, see `locale` for more details. - ---- - -## settings.iso8601 - -`Type: Boolean` - -`Default: true` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - iso8601: true, - }, -}); -``` - -This parameter sets the start of the week in accordance with the international standard ISO 8601. If set to `'false'`, the week will start on Sunday; otherwise, it starts on Monday. - ---- - -## settings.range.min - -`Type: String` - -`Default: '1970-01-01'` - -`Options: 'YYYY-MM-DD' | 'today'` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - min: '2022-07-01', - // or - min: 'today', - } - }, -}); -``` - -This parameter sets the minimum date that the user can choose. Dates earlier than the specified date will be disabled and not available for selection. - - - It's important to note that `settings.range.min` and `settings.range.max` disable dates outside the range, while `date.min` and `date.max` do not even create them. - - - - You can provide `'today'` as a shortcut to `settings.range.min` and/or `settings.range.max`. - - ---- - -## settings.range.max - -`Type: String` - -`Default: '2470-12-31'` - -`Options: 'YYYY-MM-DD' | 'today'` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - max: '2024-07-01', - // or - max: 'today', - } - }, -}); -``` - -This parameter sets the maximum date that the user can choose. Dates later than the specified date will be disabled and not available for selection. - - - It's important to note that `settings.range.min` and `settings.range.max` disable dates outside the range, while `date.min` and `date.max` do not even create them. - - - - You can provide `'today'` as a shortcut to `settings.range.min` and/or `settings.range.max`. - - ---- - -## settings.range.edgesOnly - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - edgesOnly: true, - } - }, -}); -``` - -This parameter will keep references of the date range edges only, which are the Start and End dates in `settings.selected.dates` but nothing in between the range. It only works when `settings.selection.day` is set to `'multiple-ranged'`. - - - It's important to note that with this setting, disabling dates within the date range will have no effect. So make sure to use this parameter when you are interested with only the start and end date but nothing in-between. - - ---- - -## settings.range.disablePast - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - disablePast: true, - } - }, -}); -``` - -This parameter disables all past days. - ---- - -## settings.range.disableGaps - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - disableGaps: true, - } - }, -}); -``` - -This parameter disables the selection of days within a range with disabled dates. It only works when `settings.selection.day` is set to `'multiple-ranged'`. - ---- - -## settings.range.disableAllDays - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - disableAllDays: true, - } - }, -}); -``` - -This parameter disables all days and can be useful when using `settings.range.enabled`. - ---- - -## settings.range.disableWeekday - -`Type: Number[]` - -`Default: []` - -`Options: number[] | []` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - disableWeekday: [0, 6], - } - }, -}); -``` - -This parameter allows you to disable specified weekdays. Specify an array with numbers, where each number represents a day of the week. For example, `0` is Sunday. - ---- - -## settings.range.disabled - -`Type: String[] | Number[] | Date[]` - -`Default: null` - -`Options: ['YYYY-MM-DD'] | [Number] | [Date] | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - disabled: ['2022-08-10:2022-08-15', '2022-08-20', 1722152977141, new Date()], - } - }, -}); -``` - -This parameter allows you to disable specific dates regardless of the specified range. - - - To specify a range dates, use any delimiter between dates within a single string. - - ---- - -## settings.range.enabled - -`Type: String[] | Number[] | Date[]` - -`Default: null` - -`Options: ['YYYY-MM-DD'] | [Number] | [Date] | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - enabled: ['2022-08-11:2022-08-16', '2022-08-20', 1722152977141, new Date()], - } - }, -}); -``` - -This parameter allows you to enable specific dates regardless of the range and disabled dates. - - - To specify a range dates, use any delimiter between dates within a single string. - - ---- - -## settings.selection.day - -`Type: String | false` - -`Default: 'single'` - -`Options: 'single' | 'multiple' | 'multiple-ranged' | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - day: 'single', - }, - }, -}); -``` - -This parameter determines whether it's allowed to select one or multiple days, or if day selection is completely disabled. - ---- - -## settings.selection.month - -`Type: Boolean` - -`Default: true` - -`Options: true | false | 'only-arrows'` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - month: false, - }, - }, -}); -``` - -This parameter allows you to disable the selection of months, allow switching between months only using arrows, or allow switching between months in any way. - ---- - -## settings.selection.year - -`Type: Boolean` - -`Default: true` - -`Options: true | false | 'only-arrows'` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - year: false, - }, - }, -}); -``` - -This parameter allows you to disable the selection of years, allow switching between years only using arrows, or allow switching between years in any way. - ---- - -## settings.selection.time - -`Type: Boolean | Number` - -`Default: false` - -`Options: true (it is 12) | false | 24 | 12` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - time: true, - }, - }, -}); -``` - -This parameter enables time selection. You can also specify the time format using a boolean value or a number: 24-hour or 12-hour format. - ---- - -## settings.selection.controlTime - -`Type: String` - -`Default: 'all'` - -`Options: 'all' | 'range'` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - controlTime: 'all', - }, - }, -}); -``` - -This parameter determines how time selection is allowed: `'all'` (any method) or `'range'` (only with the controller). - ---- - -## settings.selection.stepHours - -`Type: Number` - -`Default: 1` - -`Options: Number (from 1 to 23)` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - stepHours: 1, - }, - }, -}); -``` - -This parameter sets the step for the hour controller. You can choose any number from 1 to 23. - ---- - -## settings.selection.stepMinutes - -`Type: Number` - -`Default: 1` - -`Options: Number (from 1 to 59)` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - stepMinutes: 1, - }, - }, -}); -``` - -This parameter sets the step for the minute controller. You can choose any number from 1 to 59. - ---- - -## settings.selection.cancelableDay - -`Type: Number` - -`Default: true` - -`Options: boolean` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - cancelableDay: false, - }, - }, -}); -``` - -This option allows you to enable/disable cancellation of the selected date by pressing again. - ---- - -## settings.selected.dates - -`Type: String[] | Number[] | Date[]` - -`Default: null` - -`Options: ['YYYY-MM-DD'] | [Number] | [Date] | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - selected: { - dates: ['2022-08-10:2022-08-15', '2022-08-20', 1722152977141, new Date()], - }, - }, -}); -``` - -This parameter allows you to specify a list of dates that will be selected when the calendar is initialized. - - - To specify a range dates, use any delimiter between dates within a single string. - - ---- - -## settings.selected.month - -`Type: Number` - -`Default: null` - -`Options: Number (from 0 to 11) | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - selected: { - month: 0, - }, - }, -}); -``` - -This parameter determines the month that will be displayed when the calendar is initialized. Months are numbered from 0 to 11. - ---- - -## settings.selected.year - -`Type: Number` - -`Default: null` - -`Options: Number (YYYY) | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - selected: { - year: 2022, - }, - }, -}); -``` - -This parameter determines the year that will be displayed when the calendar is initialized. - ---- - -## settings.selected.holidays - -`Type: String[] | Number[] | Date[]` - -`Default: null` - -`Options: ['YYYY-MM-DD'] | [Number] | [Date] | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - selected: { - holidays: ['2022-08-10:2022-08-15', '2022-08-20', 1722152977141, new Date()], - }, - }, -}); -``` - -This parameter allows you to specify dates that will be considered holidays and will receive additional CSS modifiers. - - - To specify a range dates, use any delimiter between dates within a single string. - - ---- - -## settings.selected.time - -`Type: String` - -`Default: null` - -`Options: 'hh:mm aa' | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - selected: { - time: '03:44 AM', - }, - }, -}); -``` - -This parameter allows you to set the time that will be displayed when the calendar is initialized. The time is specified in the `'hh:mm aa'` format, where `'aa'` is the AM/PM marker. If using the 24-hour format, the `'aa'` marker is not required. - ---- - -## settings.visibility.theme - -`Type: String` - -`Default: 'system'` - -`Options: 'light' | 'dark' | 'system'` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - theme: 'system', - }, - }, -}); -``` - -This parameter determines the theme of the calendar. By default, the theme is determined by the user's system or website settings. - ---- - -## settings.visibility.themeDetect - -`Type: String | False` - -`Default: 'html[data-theme]'` - -`Options: 'string | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - themeDetect: 'html[data-theme]', - }, - }, -}); -``` -To automatically detect and apply the website's theme to the calendar, you can pass a string value as a CSS selector. -Square brackets indicate an attribute containing the theme name. -By default, it tracks the `html` tag with the `data-theme` attribute, but you can customize any other attribute and tag, such as `class`, if the class name is used to set the theme: `'html[class]'`. -If set to `false`, the theme will be determined by the user's system or the `settings.visibility.theme` parameter. - ---- - -## settings.visibility.monthShort - -`Type: Boolean` - -`Default: true` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - monthShort: true, - }, - }, -}); -``` - -This parameter allows you to use abbreviated month names when selecting a month. - ---- - -## settings.visibility.weekNumbers - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - weekNumbers: false, - }, - }, -}); -``` - -With this parameter, you can decide whether to display week numbers in the calendar. - ---- - -## settings.visibility.weekend - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - weekend: true, - }, - }, -}); -``` - -This parameter allows you to highlight weekends in the calendar. - ---- - -## settings.visibility.today - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - today: true, - }, - }, -}); -``` - -With this parameter, you can highlight the current day in the calendar. - ---- - -## settings.visibility.disabled - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - disabled: false, - }, - }, -}); -``` - -This parameter determines whether all days, including disabled days, will be displayed. - ---- - -## settings.visibility.daysOutside - -`Type: Boolean` - -`Default: true` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - daysOutside: false, - }, - }, -}); -``` - -With this parameter, you can decide whether to display days from the previous and next months. - ---- - -## settings.visibility.positionToInput - -`Type: String` - -`Default: 'left'` - -`Options: 'auto' | 'center' | 'left' | 'right' | ['bottom' | 'top', 'center' | 'left' | 'right']` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - positionToInput: 'auto', - // positionToInput: ['bottom', 'center'], - }, - }, -}); -``` - -This parameter specifies the position of the calendar relative to input, if the calendar is initialized with the `input` parameter. - -`positionToInput` takes a string with a value of `'left'`, `'center'`, or `'right'`, or an array of values `[Y-axis, X-axis]`, where the Y-axis can take the values `'bottom'` or `'top'`, and the X-axis can take the values `'left'`, `'center'`, or `'right'`. -If the Y-axis is not specified, the default is `'bottom'`. - -You can use the `positionToInput: 'auto'` value to automatically detect the best position depending on the available space in the viewport.  -Behind the scene, it calculates the available space on all 4 sides, and it will first try to display the picker at the bottom of the input -which is the default position. If there is not enough space at the bottom, it will evaluate what would be the other best available position. diff --git a/docs/en/reference/creating-an-instance.mdx b/docs/en/reference/creating-an-instance.mdx new file mode 100644 index 00000000..c4ada0ca --- /dev/null +++ b/docs/en/reference/creating-an-instance.mdx @@ -0,0 +1,59 @@ +--- +title: Creating an Instance +description: Learn how to create an instance of Vanilla Calendar Pro using a CSS selector or HTML element. Configure the calendar to initialize in a wrapper or popup when clicking on an element. +section: 1 +--- + +# Creating an Instance + +`new Calendar()` - creates an instance of **Vanilla Calendar Pro**, which is an encapsulation of the calendar, its settings, and methods. + +If you included **Vanilla Calendar Pro** using the ` - - - - - -``` - -## Подключение через CDN - -VanillaCalendar также доступен через CDN. Вы можете вставить следующие скрипты и стили в ваш HTML-документ. - -```html - - - - - - - - - -``` diff --git a/docs/ru/learn/getting-started/usage.mdx b/docs/ru/learn/getting-started/usage.mdx deleted file mode 100644 index 15e84118..00000000 --- a/docs/ru/learn/getting-started/usage.mdx +++ /dev/null @@ -1,122 +0,0 @@ -# Использование - -Теперь, после того как вы установили VanillaCalendar, вы можете создать свой первый календарь. VanillaCalendar можно использовать **в сочетании с «Input»** или **статически без «Input»**. - -Практически на всех страницах этого раздела используется самый простой вариант — **статически без «Input»**. -Если вас интересует, как этот календарь можно использовать **в сочетании с «Input»**, посетите страницу «Выбор даты в input». - -## HTML - -Создайте HTML-тег с любым уникальным CSS-селектором в любом месте вашей страницы, каледарь будет ссылаться на него и использовать в качестве идентификатора. - -В качестве примера в этой документации будет используеться атрибут **«id»** со значением **«calendar»**. - -```html - - - - -
- - -``` - -## JavaScript -Если вы установили VanillaCalendar с помощью NPM или Yarn, вам нужно импортировать JavaScript и необходимые стили. Если вы подключили VanillaCalendar локально или использовали CDN, вы можете пропустить этот шаг. - -```js -import VanillaCalendar from 'vanilla-calendar-pro'; -import 'vanilla-calendar-pro/build/vanilla-calendar.min.css'; -``` - - - Помимо файла **«vanilla-calendar.min.css»**, содержащего все возможные стили календаря, в каталоге **«build»** существуют отдельные файлы стилей. Пожалуйста, включите их вместо **«vanilla-calendar.min.css»**, если считаете это необходимым. - - -```js -// Only layout calendar -import 'vanilla-calendar-pro/build/vanilla-calendar.layout.min.css'; - -// Themes -import 'vanilla-calendar-pro/build/themes/light.min.css'; -import 'vanilla-calendar-pro/build/themes/dark.min.css'; -``` - - - Календарь автоматически отображает тему, используемую в системе пользователя. - Вы можете отключить это поведение по умолчанию и принудительно установить любую из тем. В этом случае вам не нужно импортировать все темы. - - -Теперь создайте экземпляр VanillaCalendar с параметрами по умолчанию и инициализируйте его. - -```js -const calendar = new VanillaCalendar('#calendar'); -calendar.init(); -``` - -Полный пример с файлами html и js можно просмотреть в песочнице, для этого нажмите кнопку **«Открыть»** вверху справа. - - - -## TypeScript -Если вы установили VanillaCalendar с помощью NPM или Yarn и используете TypeScript, его использование аналогично JavaScript, за исключением того, что типы используют разные импорты, как показано ниже. - -```ts -import VanillaCalendar from 'vanilla-calendar-pro'; -import type { IOptions, ISettings } from 'vanilla-calendar-pro/types'; -import 'vanilla-calendar-pro/build/vanilla-calendar.min.css'; - -// use the types in your code -import class Example { - init() { - const options: IOptions = { - settings: { - selected: { - dates: ['2024-08-20'], - }, - }, - }; - - const calendar = new VanillaCalendar('#calendar', options); - calendar.init(); - - const newOptions: IOptions['settings'] = { - selected: { - dates: ['2024-08-22'], - }, - }; - - this.changeSetting(calendar, newOptions as ISettings); - calendar.update({ dates: true }); - } - - changeSetting(calendar: VanillaCalendar, settings: ISettings) { - calendar.settings = { ...calendar.settings, ...settings }; - } -} -``` - -## Локально или CDN - -Если вы хотите использовать CDN, вставьте скрипты и стили в ваш HTML-документ из раздела «Подключение через CDN». - -```html - - - - - - -
- - - - -``` - -Теперь у вас есть простой календарь с параметрами по умолчанию. Вы можете настроить его под свои потребности, как описано в других разделах документации. diff --git a/docs/ru/learn/handle-click-a-day.mdx b/docs/ru/learn/handle-click-a-day.mdx new file mode 100644 index 00000000..446b7c53 --- /dev/null +++ b/docs/ru/learn/handle-click-a-day.mdx @@ -0,0 +1,17 @@ +--- +title: Обработка клика на день +description: Узнайте, как обрабатывать клики на дни в календаре с помощью действия onClickDate(). Настройте обработку выбора одного дня или диапазона дат. +section: 5. Обработчики действий +--- + +# Обработка клика на день + +Для взаимодействия пользователя с календарем предусмотрены различные действия, одним из которых является `onClickDate()`. Это действие позволяет отслеживать момент, когда пользователь нажимает на конкретный день в календаре. + +Пример с выводом выбранного дня в консоль: + + + +Заметьте, что выбранный день представлен в виде массива, так как пользователь может выбрать не только один день, но и диапазон дат, если это разрешено параметрами календаря. + + diff --git a/docs/ru/learn/handle-click-on-a-month-in-the-month-selection.mdx b/docs/ru/learn/handle-click-on-a-month-in-the-month-selection.mdx new file mode 100644 index 00000000..fa39dc2c --- /dev/null +++ b/docs/ru/learn/handle-click-on-a-month-in-the-month-selection.mdx @@ -0,0 +1,13 @@ +--- +title: Обработка клика на месяц в списке месяцев +description: Узнайте, как обрабатывать клики на месяцы в списке месяцев. Получите информацию о выбранном месяце и его порядковом номере. +section: 5. Обработчики действий +--- + +# Обработка клика на месяц в списке месяцев + +При клике на месяц в списке всех месяцев вы можете обработать это событие и получить информацию о выбранном элементе и его порядковом номере. + +Важно отметить, что по стандартам JS месяцы нумеруются с нуля, где январь соответствует нулевому месяцу, а декабрь - одиннадцатому. + + diff --git a/docs/ru/learn/handle-click-on-the-arrows.mdx b/docs/ru/learn/handle-click-on-the-arrows.mdx new file mode 100644 index 00000000..171605b0 --- /dev/null +++ b/docs/ru/learn/handle-click-on-the-arrows.mdx @@ -0,0 +1,11 @@ +--- +title: Обработка клика на стрелки +description: Узнайте, как обрабатывать клики на стрелки для переключения месяца или года в календаре. Настройте обработку событий в соответствии с вашими потребностями. +section: 5. Обработчики действий +--- + +# Обработка клика на стрелки + +При нажатии на любую из стрелок происходит событие переключения месяца или года в календаре. Это событие может быть использовано в соответствии с вашими потребностями. + + diff --git a/docs/ru/learn/action-handlers/click-on-the-year-in-the-year-selection.mdx b/docs/ru/learn/handle-click-on-the-year-in-the-year-selection.mdx similarity index 52% rename from docs/ru/learn/action-handlers/click-on-the-year-in-the-year-selection.mdx rename to docs/ru/learn/handle-click-on-the-year-in-the-year-selection.mdx index 45314465..a143567b 100644 --- a/docs/ru/learn/action-handlers/click-on-the-year-in-the-year-selection.mdx +++ b/docs/ru/learn/handle-click-on-the-year-in-the-year-selection.mdx @@ -1,7 +1,13 @@ +--- +title: Обработка клика на год в выборе года +description: Узнайте, как обрабатывать клики на год в списке годов. Получите информацию о выбранном годе и его номере. +section: 5. Обработчики действий +--- + # Обработка клика на год в выборе года Как и при выборе месяца, вы можете выбрать год, нажав на заголовок года в календаре. При клике на год из списка, вы можете получить информацию о выбранном элементе, на который произошел клик, а также номер года. - + diff --git a/docs/ru/learn/handle-click-on-weekday-and-the-week-number.mdx b/docs/ru/learn/handle-click-on-weekday-and-the-week-number.mdx new file mode 100644 index 00000000..bf7224a4 --- /dev/null +++ b/docs/ru/learn/handle-click-on-weekday-and-the-week-number.mdx @@ -0,0 +1,19 @@ +--- +title: Обработка клика на день недели и на номер недели +description: Узнайте, как обрабатывать клики на день недели и на номер недели в календаре. Настройте обработку событий для выбора всех дней месяца, относящихся к выбранному дню недели, или для выбора дат в выбранной неделе. +section: 5. Обработчики действий +--- + +# Обработка клика на день недели и на номер недели + +## День недели + +Вы можете перехватить клик по дню недели и, например, выбрать все дни месяца, относящиеся к этому дню недели. + + + +## Номер недели + +Вы можете отобразить номера недель в календаре с помощью параметра `enableWeekNumbers` и обработать клики по ним. Имея информацию о датах в выбранной неделе, вы точно так же можете легко выбрать эти даты. + + diff --git a/docs/ru/learn/action-handlers/get-and-change-every-day.mdx b/docs/ru/learn/handle-get-and-change-every-day.mdx similarity index 50% rename from docs/ru/learn/action-handlers/get-and-change-every-day.mdx rename to docs/ru/learn/handle-get-and-change-every-day.mdx index 3a1042c3..e765157d 100644 --- a/docs/ru/learn/action-handlers/get-and-change-every-day.mdx +++ b/docs/ru/learn/handle-get-and-change-every-day.mdx @@ -1,7 +1,13 @@ +--- +title: Получение и изменение каждого дня +description: Узнайте, как получать и изменять каждый день в календаре. Выполняйте различные операции, добавляйте дополнительную информацию или вносите изменения в каждый день. +section: 5. Обработчики действий +--- + # Получение и изменение каждого дня При наличии доступа к каждому дню в календаре, вы можете выполнять различные операции, добавлять дополнительную информацию или вносить изменения в каждый день. В качестве примера, вы можете добавить случайную стоимость или значение к каждому дню. - + diff --git a/docs/ru/learn/handle-select-and-change-of-time.mdx b/docs/ru/learn/handle-select-and-change-of-time.mdx new file mode 100644 index 00000000..3be677db --- /dev/null +++ b/docs/ru/learn/handle-select-and-change-of-time.mdx @@ -0,0 +1,11 @@ +--- +title: Выбор и изменение времени +description: Узнайте, как активировать и обрабатывать выбор и изменение времени в календаре. Получайте данные при каждом изменении времени. +section: 5. Обработчики действий +--- + +# Выбор и изменение времени + +Путем активации параметра `selectionTimeMode`, вы получаете возможность автоматически получать необходимые данные при каждом изменении времени. + + diff --git a/docs/ru/learn/installation-and-usage.mdx b/docs/ru/learn/installation-and-usage.mdx new file mode 100644 index 00000000..4135e158 --- /dev/null +++ b/docs/ru/learn/installation-and-usage.mdx @@ -0,0 +1,94 @@ +--- +title: Установка и использование +description: Узнайте, как установить и использовать Vanilla Calendar Pro. Интегрируйте календарь через пакетный менеджер или CDN, и настройте его в соответствии с вашими потребностями. +section: 1. Начало работы +--- + +# Установка и использование + +Vanilla Calendar Pro легко интегрируется в любые проекты. Существует несколько способов установки, в зависимости от того, как вы предпочитаете управлять зависимостями и сборкой вашего проекта. + +## Установка через пакетный менеджер + +Самый распространенный способ установки Vanilla Calendar Pro — это использование пакетного менеджера. Этот метод идеально подходит для проектов с использованием Node.js и современных сборщиков. + +1. Установите пакет: + +```bash +npm install vanilla-calendar-pro +# or +yarn add vanilla-calendar-pro +# or +pnpm add vanilla-calendar-pro +``` + + +2. Создайте HTML-элемент в теле вашего документа с произвольным CSS селектором: + +```html + + + + +
+ + +``` + +В качестве демонстрации в этом разделе мы будем использовать `#calendar` в качестве селектора CSS, но вы можете создать и использовать любой другой селектор. + +3. Импортируйте скрипт, создайте экземпляр календаря и инициализируйте его в вашем JavaScript или TypeScript файле. + +```ts +import { Calendar } from 'vanilla-calendar-pro'; + +const calendar = new Calendar('#calendar', { + // Ваши настройки +}); +calendar.init(); +``` + +4. Импортируйте стили в этом же файле. Файл `index.css` содержит в себе сетку для макета календаря, светлую и темную тему. + +```ts +import 'vanilla-calendar-pro/styles/index.css'; +``` + +Вы так же имеете возможность подключить стили для макета календаря и темы отдельно, вот так: + +```ts +import 'vanilla-calendar-pro/styles/layout.css'; // Только скелет +import 'vanilla-calendar-pro/styles/themes/light.css'; // Светлая тема +import 'vanilla-calendar-pro/styles/themes/dark.css'; // Темная тема +// или любая другая пользовательская тема... +``` + +5. Полный пример простой инициализации без каких-либо пользовательских настроек: + + + +## Локально или CDN + +Если вам нужно быстро интегрировать Vanilla Calendar Pro без использования сборщиков или пакетных менеджеров, вы можете подключить его через CDN или скачать архив с актуальной версий и подключить локально. + +```html + + + + + + +
+ + + +``` diff --git a/docs/ru/learn/internationalization-locale.mdx b/docs/ru/learn/internationalization-locale.mdx new file mode 100644 index 00000000..1f973b34 --- /dev/null +++ b/docs/ru/learn/internationalization-locale.mdx @@ -0,0 +1,15 @@ +--- +title: Локализация +description: Узнайте, как локализовать календарь с помощью параметра locale или установить локаль вручную, предоставив массивы названий месяцев и недель. +section: 3. Интернационализация +--- + +# Локализация + +Если ваша локаль поддерживается методом `.toLocaleString()`, вы можете просто передать её в параметр `locale` для локализации календаря. + + + +Если локаль не поддерживается или переведена неправильно, вы всегда можете установить локаль вручную. Для этого вам необходимо предоставить массивы названий месяцев и недель вместо языковой метки. + + diff --git a/docs/ru/learn/internationalization-week-numbers.mdx b/docs/ru/learn/internationalization-week-numbers.mdx new file mode 100644 index 00000000..54061cfb --- /dev/null +++ b/docs/ru/learn/internationalization-week-numbers.mdx @@ -0,0 +1,12 @@ +--- +title: Номера недель +description: Узнайте, как включить отображение номеров недель в календаре, установив параметр enableWeekNumbers в true. +section: 3. Интернационализация +--- + +# Номера недель + +В некоторых странах используют номера недель для обозначения дат. +Вы можете включить отображение номеров недель в календаре, установив параметр `enableWeekNumbers` в `true`. + + diff --git a/docs/ru/learn/internationalization-weekday-first-and-weekdays.mdx b/docs/ru/learn/internationalization-weekday-first-and-weekdays.mdx new file mode 100644 index 00000000..e52ebe5e --- /dev/null +++ b/docs/ru/learn/internationalization-weekday-first-and-weekdays.mdx @@ -0,0 +1,13 @@ +--- +title: Первый день недели и выходные +description: Узнайте, как настроить первый день недели и выходные в календаре. Измените стандарт ISO 8601 и назначьте любые дни недели выходными или отключите их. +section: 3. Интернационализация +--- + +# Первый день недели и выходные + +По умолчанию календарь основан на европейском стандарте **ISO 8601**. Это означает, что первый день недели — понедельник. + +Используя отдельные параметры для определения первого дня недели и отображаемых выходных, вы можете определить любой день как первый день недели и назначить любые дни недели выходными или полностью отключить их, указав пустой массив. + + diff --git a/docs/ru/learn/internationalization-weekends-and-holidays.mdx b/docs/ru/learn/internationalization-weekends-and-holidays.mdx new file mode 100644 index 00000000..29eea73a --- /dev/null +++ b/docs/ru/learn/internationalization-weekends-and-holidays.mdx @@ -0,0 +1,11 @@ +--- +title: Дополнительные выходные и праздники +description: Узнайте, как указать дополнительные выходные и праздничные дни в календаре. Отметьте эти дни красным цветом, установив их вручную. +section: 3. Интернационализация +--- + +# Дополнительные выходные и праздники + +В календаре можно указать дополнительные выходные или праздничные дни, которые будут отмечены красным цветом. Эти дни должны быть установлены вручную. + + diff --git a/docs/ru/learn/internationalization/assign-manually.mdx b/docs/ru/learn/internationalization/assign-manually.mdx deleted file mode 100644 index 8e9952a5..00000000 --- a/docs/ru/learn/internationalization/assign-manually.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Ручная локализация - -Вы можете ручным образом локализовать календарь, если параметр `settings.lang` не подходит для ваших нужд. -В календаре локализованы только надписи месяцев и дней недели, поэтому вам нужно предоставить соответствующие массивы строк и установить `settings.lang` в `'define'`. - - - Обратите внимание, что массив недель должен начинаться с воскресенья, это не влияет на **ISO 8601**. - - - diff --git a/docs/ru/learn/internationalization/iso-8601.mdx b/docs/ru/learn/internationalization/iso-8601.mdx deleted file mode 100644 index eaf68fe1..00000000 --- a/docs/ru/learn/internationalization/iso-8601.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Первый день недели - -В календаре используется стандарт **ISO 8601** для определения первого дня недели. Если параметр `settings.iso8601` установлен в `true`, то первым днем недели будет понедельник. В противном случае, если параметр `settings.iso8601` равен `false`, первым днем недели будет воскресенье. Вы можете настроить этот параметр по вашему усмотрению. - - - -Это позволяет настроить, какой день недели будет первым в вашем календаре в соответствии с международным стандартом **ISO 8601**. diff --git a/docs/ru/learn/internationalization/locale.mdx b/docs/ru/learn/internationalization/locale.mdx deleted file mode 100644 index f4458eec..00000000 --- a/docs/ru/learn/internationalization/locale.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Автоматическая локализация - -Если ваша локаль поддерживается методом `.toLocaleString()`, вы можете просто передать её в параметр `settings.lang` для локализации календаря. - - - -Если локаль не поддерживается или переведена неправильно, вы всегда можете установить локаль вручную, см. следующий раздел. diff --git a/docs/ru/learn/internationalization/week-numbers.mdx b/docs/ru/learn/internationalization/week-numbers.mdx deleted file mode 100644 index 9cf52e3a..00000000 --- a/docs/ru/learn/internationalization/week-numbers.mdx +++ /dev/null @@ -1,6 +0,0 @@ -# Номера недель - -Например, в Норвегии, очень часто обозначают даты, используя номера недель. -Вы можете включить отображение номеров недель в календаре, установив параметр `settings.visibility.weekNumbers` в `true`. - - diff --git a/docs/ru/learn/type-default.mdx b/docs/ru/learn/type-default.mdx new file mode 100644 index 00000000..63e1a4d7 --- /dev/null +++ b/docs/ru/learn/type-default.mdx @@ -0,0 +1,25 @@ +--- +title: По умолчанию (Одиночный) +description: Узнайте, как использовать тип календаря 'default' для отображения одного месяца и выбора дней. Настройте календарь для отображения при клике на элемент с параметром inputMode. +section: 2. Типы календарей +--- + +# По умолчанию (Одиночный) + +## Статичный + +Тип календаря `'default'` отображает один месяц, позволяет выбирать дни, перемещаться между месяцами с помощью стрелок и выбирать месяц и год из соответствующих заголовков. Это стандартный режим отображения календаря. + + + +## С Input + +Если вам необходимо отображать календарь при клике на **«Input»**, вы можете легко настроить его, инициализировав с параметром `inputMode: true`. + + + Важно отметить, что **«Input»** в контексте этого календаря не обязательно является тегом ``. Это может быть любой HTML-элемент, например `
`. В **«Input»** можно инициализирвоать любой тип календаря. + + +По умолчанию календарь не записывает никаких значений в поле **«Input»**, что дает вам уникальный контроль над тем, что вы хотите видеть в `value`. + + diff --git a/docs/ru/learn/types-of-calendars/month.mdx b/docs/ru/learn/type-month.mdx similarity index 54% rename from docs/ru/learn/types-of-calendars/month.mdx rename to docs/ru/learn/type-month.mdx index afe1264e..36ba945f 100644 --- a/docs/ru/learn/types-of-calendars/month.mdx +++ b/docs/ru/learn/type-month.mdx @@ -1,6 +1,12 @@ +--- +title: Месяц +description: Узнайте, как использовать тип календаря 'month' для отображения списка месяцев и выбора месяцев и года. Ограничьте выбор пользователя только месяцем и годом. +section: 2. Типы календарей +--- + # Месяц Тип календаря `'month'` отображает список месяцев, и позволяет пользователю выбирать месяцы и год из соответствующих заголовков. Этот режим полезен, если вам нужно ограничить выбор пользователя только месяцем и годом, без возможности выбора конкретных дней. - + diff --git a/docs/ru/learn/type-multiple.mdx b/docs/ru/learn/type-multiple.mdx new file mode 100644 index 00000000..9b7e45be --- /dev/null +++ b/docs/ru/learn/type-multiple.mdx @@ -0,0 +1,20 @@ +--- +title: Несколько +description: Узнайте, как использовать тип календаря 'multiple' для отображения нескольких месяцев и выбора дат. Настройте выбор диапазонов дат с параметром selectionDatesMode. +section: 2. Типы календарей +--- + +# Несколько + +Тип календаря `'multiple'` отображает несколько месяцев, позволяя выбирать дни в каждом из них. +Этот тип календаря полезен, когда пользователю нужно выбирать несколько дат в разных месяцах, но для этого вам необходимо использовать параметр `selectionDatesMode` и установить его значение на `'multiple'`. + +Пример кода для создания календаря с типом `'multiple'`: + + + +Если вам нужно выбирать диапазоны дат, вы можете использовать параметр `selectionDatesMode` и установить его значение на `'multiple-ranged'`. Это позволит вам выбирать диапазоны дат, а не только отдельные дни. + +Когда для параметра `selectionDatesMode` установлено значение `'multiple-ranged'`, для оптимизации производительности календаря массив выбранных дат содержит только дату начала и окончания. Вы можете отключить это и получить полный список выбранных дат, используя `enableEdgeDatesOnly`. + + diff --git a/docs/ru/learn/types-of-calendars/year.mdx b/docs/ru/learn/type-year.mdx similarity index 57% rename from docs/ru/learn/types-of-calendars/year.mdx rename to docs/ru/learn/type-year.mdx index e0926752..433c26df 100644 --- a/docs/ru/learn/types-of-calendars/year.mdx +++ b/docs/ru/learn/type-year.mdx @@ -1,6 +1,12 @@ +--- +title: Год +description: Узнайте, как использовать тип календаря 'year' для отображения списка лет и выбора года и месяца. Ограничьте выбор пользователя только годом и месяцем. +section: 2. Типы календарей +--- + # Год Тип календаря `'year'` отображает список лет, позволяя пользователю выбирать год из списка, и выбирать месяц из соответствующего заголовка. Этот режим полезен, если вам необходимо ограничить выбор пользователю только годом и месяцем, и исключить возможность выбора конкретных дней. - + diff --git a/docs/ru/learn/types-of-calendars/default.mdx b/docs/ru/learn/types-of-calendars/default.mdx deleted file mode 100644 index 083e6bdb..00000000 --- a/docs/ru/learn/types-of-calendars/default.mdx +++ /dev/null @@ -1,6 +0,0 @@ -# По умолчанию (Одиночный) - -Тип календаря `'default'` отображает один месяц, позволяет выбирать дни, переключаться между месяцами с помощью стрелок, а также выбирать месяц и год из соответствующих заголовков. -Это стандартный режим отображения календаря. - - diff --git a/docs/ru/learn/types-of-calendars/multiple.mdx b/docs/ru/learn/types-of-calendars/multiple.mdx deleted file mode 100644 index 1109b316..00000000 --- a/docs/ru/learn/types-of-calendars/multiple.mdx +++ /dev/null @@ -1,13 +0,0 @@ -# Несколько - -Тип календаря `'multiple'` отображает несколько месяцев, позволяя выбирать дни в каждом из них. -Этот тип календаря полезен, когда пользователю нужно выбирать несколько дат в разных месяцах, но для этого вам необходимо использовать параметр `settings.selection.day` и установить его значение на `'multiple'`. - -Пример кода для создания календаря с типом `'multiple'`. - - - -Если вам нужно выбирать диапазоны дат в каждом месяце, вы можете использовать параметр `settings.selection.day` и установить его значение на `'multiple-ranged'`. -Это позволит вам выбирать диапазоны дат, а не только отдельные дни. - - diff --git a/docs/ru/reference.mdx b/docs/ru/reference.mdx new file mode 100644 index 00000000..7762c4a9 --- /dev/null +++ b/docs/ru/reference.mdx @@ -0,0 +1,19 @@ +--- +title: Обзор справочника +description: Обзор справочника по API Vanilla Calendar Pro. Узнайте, как создать экземпляр календаря, использовать методы, настройки, обработчики событий, попапы, макеты, стили и aria-подписи. +--- + +# Обзор справочника + +В этом разделе представлена подробная документация по работе с **API Vanilla Calendar Pro**. Если вы ищете введение в возможности, пожалуйста, ознакомьтесь с разделом [«Изучать»](/ru/docs/learn). + +Документация API Vanilla Calendar Pro разделена на несколько функциональных подразделов: + +1. **Создание экземпляра** — как и где создать экземпляр календаря; +2. **Методы** — доступные методы для работы с экземпляром календаря; +3. **Настройки** — все опции, которые можно передать для изменения поведения и отображения календаря. +4. **Действия** — обработчики событий, которые позволяют получать и обрабатывать различные данные взаимодействия с календарем. +5. **Попапы** — всплывающие окна, позволяют выбрать любой день и отобразить краткую информацию о нем прямо в календаре при наведении на этот день. +6. **Макеты** — это шаблоны, которые позволяют практически полностью изменить структуру DOM календаря и добавить свои собственные HTML-элементы. +7. **Стили** — объект классов CSS для стилизации календаря. Позволяет использовать любой CSS фреймворк, например, Tailwind CSS или собственные классы. +8. **Aria-подписи** — объект строк для `aria-label`. Позволяет локализовать все подписи календаря для обеспечения доступности. diff --git a/docs/ru/reference/actions.mdx b/docs/ru/reference/actions.mdx new file mode 100644 index 00000000..5d539c36 --- /dev/null +++ b/docs/ru/reference/actions.mdx @@ -0,0 +1,379 @@ +--- +title: Действия +description: Узнайте о различных действиях, которые можно настроить для календаря, включая обработчики событий для кликов на даты, недели, месяцы, годы и стрелки, а также для изменения времени и отображения подсказок. +section: 4 +--- + +# Действия + +## onClickDate() + +`Type: Function` + +`Default: null` + +`Options: onClickDate(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickDate(self, event) {}, +}); +``` + +Этот метод срабатывает после нажатия на день в календаре. Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `event` - событие мыши. + + + Важно знать, что каждый HTML-элемент дня, содержит data-атрибут, внутри которого находится полная дата в формате `YYYY-MM-DD`. + Если вам нужно получить день, месяц, год отдельно, то вы можете использовать стандартные методы JS. + В качестве примера: `new Date('2022-11-07').getDate()` вернет `7`. + + +--- + +## onClickWeekDay() + +`Type: Function` + +`Default: null` + +`Options: onClickWeekDay(self, day, dateEls, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickWeekDay(self, day, dateEls, event) {}, +}); +``` + +Этот метод срабатывает после нажатия на день недели в календаре. Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `number` - номер недели; +- `days` - массив дней (html-элементов); +- `year` - год недели; +- `event` - событие мыши. + +--- + +## onClickWeekNumber() + +`Type: Function` + +`Default: null` + +`Options: onClickWeekNumber(self, number, year, dateEls, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickWeekNumber(self, number, year, dateEls, event) {}, +}); +``` + +Этот метод срабатывает после нажатия на номер недели в календаре, но для его работы необходим параметр `enableWeekNumbers` со значением `true`. Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `number` - номер недели; +- `days` - массив дней (html-элементов); +- `year` - год недели; +- `event` - событие мыши. + +--- + +## onClickTitle() + +`Type: Function` + +`Default: null` + +`Options: onClickTitle(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickTitle(self, event) {}, +}); +``` + +Этот метод срабатывает после нажатия на заголовок месяца или года в календаре. Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `event` - событие мыши. + +--- + +## onClickMonth() + +`Type: Function` + +`Default: null` + +`Options: onClickMonth(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickMonth(self, event) {}, +}); +``` + +Этот метод срабатывает после выбора месяца в календаре. Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `event` - событие мыши. + +--- + +## onClickYear() + +`Type: Function` + +`Default: null` + +`Options: onClickYear(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickYear(self, event) {}, +}); +``` + +Этот метод срабатывает после выбора года в календаре. Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `event` - событие мыши. + +--- + +## onClickArrow() + +`Type: Function` + +`Default: null` + +`Options: onClickArrow(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onClickArrow(self, event) {}, +}); +``` + +Этот метод срабатывает после клика на стрелочку в календаре. Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `event` - событие мыши. + +--- + +## onChangeTime() + +`Type: Function` + +`Default: null` + +`Options: onChangeTime(self, event, isError) => void | null` + +```ts +new Calendar('#calendar', { + onChangeTime(self, event) {}, +}); +``` + +Этот метод срабатывает после изменения времени в календаре. Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `event` - событие change; +- `isError` - возвращает true, если пользователь ввел неверное время. + +--- + +## onChangeToInput() + +`Type: Function` + +`Default: null` + +`Options: onChangeToInput(self, event) => void | null` + +```ts +new Calendar('#calendar', { + onChangeToInput(self, event) {}, +}); +``` + +Для работы этого метода необходим параметр `inputMode` с значением `true`. +Этот метод срабатывает после нажатия на день в календаре или изменения времени любым способом. +Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `event` - событие. + +--- + +## onCreateDateRangeTooltip() + +`Type: Function` + +`Default: null` + +`Options: onCreateDateRangeTooltip(self, dateEl, tooltipEl, dateElBCR, mainElBCR) => void | null` + +```ts +new Calendar('#calendar', { + onCreateDateRangeTooltip(self, dateEl, tooltipEl, dateElBCR, mainElBCR) {}, +}); +``` + +Позволяет создать подсказку для диапазона дат. Срабатывает при нажатии и наведении курсора мыши на день, если для параметра `selectionDatesMode` установлено значание `'multiple-ranged'`. +Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь. +- `dateEl` - HTML элемент даты; +- `tooltipEl` - HTML элемент подсказки; +- `dateElBCR` - объект с информацией о положении и размере HTML элемента даты; +- `mainElBCR` - объект с информацией о положении и размере основного HTML элемента календаря. + +--- + +## onCreateDateEls() + +`Type: Function` + +`Default: null` + +`Options: onCreateDateEls(self, dateEl) => void | null` + +```ts +new Calendar('#calendar', { + onCreateDateEls(self, dateEl) {}, +}); +``` + +Этот метод срабатывает при инициализации календаря и при любых изменениях. Он предоставляет доступ к информации о каждом дне. Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `dateEl` - HTML элемент даты. + +--- + +## onCreateMonthEls() + +`Type: Function` + +`Default: null` + +`Options: onCreateMonthEls(self, monthEl) => void | null` + +```ts +new Calendar('#calendar', { + onCreateMonthEls(self, monthEl) {}, +}); +``` + +Этот метод срабатывает, когда тип календаря установлен на `'month'`. Тип календаря также становится `'month'`, когда пользователь кликает на заголовок месяца или при инициализации с параметром `type = 'month'`. Он предоставляет доступ к информации о каждом месяце. Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `monthEl` - HTML элемент месяца. + +--- + +## onCreateYearEls() + +`Type: Function` + +`Default: null` + +`Options: onCreateYearEls(self, yearEl) => void | null` + +```ts +new Calendar('#calendar', { + onCreateYearEls(self, yearEl) {}, +}); +``` + +Этот метод срабатывает, когда тип календаря установлен на `'year'`. Тип календаря становится `'year'`, когда пользователь кликает на заголовок года или при инициализации с параметром `type = 'year'`. Он предоставляет доступ к информации о каждом годе. Вы можете получить следующие параметры: +- `self` - ссылка на инициализированный календарь; +- `yearEl` - HTML элемент года. + +--- + +## onInit() + +`Type: Function` + +`Default: null` + +`Options: onInit(self) => void | null` + +```ts +new Calendar('#calendar', { + onInit(self) {}, +}); +``` + +Этот метод срабатывает при инициализации календаря. Если для параметра `inputMode` установлено значение `true`, то метод отработает при первом отображении календаря, поскольку в этот момент инициализируется календарь. +- `self` - ссылка на инициализированный календарь. + +--- + +## onUpdate() + +`Type: Function` + +`Default: null` + +`Options: onUpdate(self) => void | null` + +```ts +new Calendar('#calendar', { + onUpdate(self) {}, +}); +``` + +Этот метод срабатывает при обновлении/сбросе календаря с помощью метода `.update()`. +- `self` - ссылка на инициализированный календарь. + +--- + +## onDestroy() + +`Type: Function` + +`Default: null` + +`Options: onDestroy(self) => void | null` + +```ts +new Calendar('#calendar', { + onDestroy(self) {}, +}); +``` + +Этот метод срабатывает при уничтожении календаря. +- `self` - ссылка на инициализированный календарь. + +--- + +## onShow() + +`Type: Function` + +`Default: null` + +`Options: onShow(self) => void | null` + +```ts +new Calendar('#calendar', { + onShow(self) {}, +}); +``` + +Этот метод срабатывает при отображении календаря пользователю, но только если для параметра `inputMode` установлено значение `true`. +- `self` - ссылка на инициализированный календарь. + +--- + +## onHide() + +`Type: Function` + +`Default: null` + +`Options: onHide(self) => void | null` + +```ts +new Calendar('#calendar', { + onHide(self) {}, +}); +``` + +Этот метод срабатывает при скрытии календаря, но только если для параметра `inputMode` установлено значение `true`. +- `self` - ссылка на инициализированный календарь. diff --git a/docs/ru/reference/additionally/actions.mdx b/docs/ru/reference/additionally/actions.mdx deleted file mode 100644 index 8bf5bc0f..00000000 --- a/docs/ru/reference/additionally/actions.mdx +++ /dev/null @@ -1,350 +0,0 @@ -# Действия - -Действия в VanillaCalendar представляют собой обработчики событий, которые позволяют получать и обрабатывать различные данные взаимодействия с календарем. - - - Начиная с версии 2.9.0 все методы содержат `self` — ссылку на инициализированный календарь. Это позволяет получить максимальное количество данных. `self` содержит все [параметры для чтения](/docs/reference/main/readonly-options) и многое другое. - - - - Обратите внимание, что нумерация месяцев начинаются с `0`, поэтому декабрь — это 11-й месяц. Это связано с работой стандартного метода `.getMonth()`. - - -## actions.clickDay() - -`Type: Function` - -`Default: null` - -`Options: clickDay(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - clickDay(e, self) {}, - }, -}); -``` - -Этот метод срабатывает после нажатия на день в календаре. Вы можете получить следующие параметры: -- `e` - событие мыши; -- `self` - ссылка на инициализированный календарь. - - - Важно знать, что каждый HTML-элемент дня, на который нажали, содержит data-атрибут, внутри которого находится полная дата в формате `YYYY-MM-DD`. - Если вам нужно получить день, месяц, год отдельно, то вы можете использовать стандартные методы JS. - В качестве примера: `new Date('2022-11-07').getDate()` вернет `7`. - - ---- - -## actions.clickWeekNumber() - -`Type: Function` - -`Default: null` - -`Options: clickWeekNumber(e, number, days, year, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - clickWeekNumber(e, number, days, year, self) {}, - }, -}); -``` - -Этот метод срабатывает после нажатия на номер недели в календаре, но для его работы необходим параметр `settings.visibility.weekNumbers` со значением `true`. Вы можете получить следующие параметры: -- `e` - событие мыши; -- `number` - номер недели; -- `days` - массив дней (html-элементов); -- `year` - год недели; -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.clickMonth() - -`Type: Function` - -`Default: null` - -`Options: clickMonth(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - clickMonth(e, self) {}, - }, -}); -``` - -Этот метод срабатывает после выбора месяца в календаре. Вы можете получить следующие параметры: -- `e` - событие мыши; -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.clickYear() - -`Type: Function` - -`Default: null` - -`Options: clickYear(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - clickYear(e, self) {}, - }, -}); -``` - -Этот метод срабатывает после выбора года в календаре. Вы можете получить следующие параметры: -- `e` - событие мыши; -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.clickArrow() - -`Type: Function` - -`Default: null` - -`Options: clickArrow(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - clickArrow(e, self) {}, - }, -}); -``` - -Этот метод срабатывает после клика на стрелочку в календаре. Вы можете получить следующие параметры: -- `e` - событие мыши; -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.changeTime() - -`Type: Function` - -`Default: null` - -`Options: changeTime(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - changeTime(e, self) {}, - }, -}); -``` - -Этот метод срабатывает после изменения времени в календаре. Вы можете получить следующие параметры: -- `e` - событие change; -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.changeToInput() - -`Type: Function` - -`Default: null` - -`Options: changeToInput(e, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - changeToInput(e, self) {}, - }, -}); -``` - -Для работы этого метода необходим параметр `input` с значением `true`. -Этот метод срабатывает после нажатия на день в календаре или изменения времени любым способом. -Вы можете получить следующие параметры: -- `e` - событие; -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.getDays() - -`Type: Function` - -`Default: null` - -`Options: getDays(day, date, HTMLElement, HTMLButtonElement, self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - getDays(day, date, HTMLElement, HTMLButtonElement, self) {}, - }, -}); -``` - -Этот метод срабатывает при инициализации календаря и при любых изменениях. Он предоставляет доступ к информации о каждом дне и его HTML-элементе. Вы можете получить следующие параметры: -- `day` - номер дня; -- `date` - полная дата в формате `YYYY-MM-DD`; -- `HTMLElement` - родительский (обертка) HTML-элемент дня; -- `HTMLButtonElement` - дочерний (кнопка) HTML-элемент дня. -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.getMonths() - -`Type: Function` - -`Default: null` - -`Options: getMonths(month: number, HTMLElement: HTMLElement, self: IVanillaCalendar) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - getMonths(month, HTMLElement, self) {}, - }, -}); -``` - -Этот метод срабатывает, когда тип календаря установлен на `'month'`. Тип календаря также становится `'month'`, когда пользователь кликает на заголовок месяца или при инициализации с параметром `type = 'month'`. Он предоставляет доступ к информации о каждом месяце и его HTML-элементе. Вы можете получить следующие параметры: -- `month` - номер месяца (начинается с 0); -- `HTMLElement` - HTML-элемент месяца; -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.getYears() - -`Type: Function` - -`Default: null` - -`Options: getYears(year: number, HTMLElement: HTMLElement, self: IVanillaCalendar) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - getYears(year, HTMLElement, self) {}, - }, -}); -``` - -Этот метод срабатывает, когда тип календаря установлен на `'year'`. Тип календаря становится `'year'`, когда пользователь кликает на заголовок года или при инициализации с параметром `type = 'year'`. Он предоставляет доступ к информации о каждом годе и его HTML-элементе. Вы можете получить следующие параметры: -- `year` - номер года; -- `HTMLElement` - HTML-элемент года; -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.hideCalendar() - -`Type: Function` - -`Default: null` - -`Options: hideCalendar(self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - hideCalendar(self) {}, - }, -}); -``` - -Этот метод срабатывает при скрытии календаря, но только если для параметра `input` установлено значение `true`. -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.showCalendar() - -`Type: Function` - -`Default: null` - -`Options: showCalendar(self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - showCalendar(self) {}, - }, -}); -``` - -Этот метод срабатывает при отображении календаря пользователю, но только если для параметра `input` установлено значение `true`. -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.initCalendar() - -`Type: Function` - -`Default: null` - -`Options: initCalendar(self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - initCalendar(self) {}, - }, -}); -``` - -Этот метод срабатывает при инициализации календаря. Если для параметра `input` установлено значение `true`, то метод отработает при первом отображении календаря, поскольку в этот момент инициализируется календарь. -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.updateCalendar() - -`Type: Function` - -`Default: null` - -`Options: updateCalendar(self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - updateCalendar(self) {}, - }, -}); -``` - -Этот метод срабатывает при обновлении/сбросе календаря. -- `self` - ссылка на инициализированный календарь. - ---- - -## actions.destroyCalendar() - -`Type: Function` - -`Default: null` - -`Options: destroyCalendar(self) => void | null` - -```js -new VanillaCalendar('#calendar', { - actions: { - destroyCalendar(self) {}, - }, -}); -``` - -Этот метод срабатывает при уничтожении календаря. -- `self` - ссылка на инициализированный календарь. diff --git a/docs/ru/reference/additionally/css-classes.mdx b/docs/ru/reference/additionally/css-classes.mdx deleted file mode 100644 index edfa0fd7..00000000 --- a/docs/ru/reference/additionally/css-classes.mdx +++ /dev/null @@ -1,80 +0,0 @@ -# CSS-Классы - -`CSSClasses` предоставляет возможность переопределить любой CSS-класс в календаре. Ниже приведен список всех классов по умолчанию. - -```js -new VanillaCalendar('#calendar', { - CSSClasses: { - calendar: 'vanilla-calendar', - calendarDefault: 'vanilla-calendar_default', - calendarMultiple: 'vanilla-calendar_multiple', - calendarMonth: 'vanilla-calendar_month', - calendarYear: 'vanilla-calendar_year', - calendarHidden: 'vanilla-calendar_hidden', - calendarToInput: 'vanilla-calendar_to-input', - calendarToInputTop: 'vanilla-calendar_to-input_top', - calendarToInputBottom: 'vanilla-calendar_to-input_bottom', - controls: 'vanilla-calendar-controls', - grid: 'vanilla-calendar-grid', - gridDisabled: 'vanilla-calendar-grid_disabled', - column: 'vanilla-calendar-column', - columnMonth: 'vanilla-calendar-column_month', - columnYear: 'vanilla-calendar-column_year', - header: 'vanilla-calendar-header', - headerContent: 'vanilla-calendar-header__content', - month: 'vanilla-calendar-month', - monthDisabled: 'vanilla-calendar-month_disabled', - year: 'vanilla-calendar-year', - yearDisabled: 'vanilla-calendar-year_disabled', - arrow: 'vanilla-calendar-arrow', - arrowPrev: 'vanilla-calendar-arrow_prev', - arrowNext: 'vanilla-calendar-arrow_next', - wrapper: 'vanilla-calendar-wrapper', - content: 'vanilla-calendar-content', - week: 'vanilla-calendar-week', - weekDay: 'vanilla-calendar-week__day', - weekDayWeekend: 'vanilla-calendar-week__day_weekend', - days: 'vanilla-calendar-days', - daysSelecting: 'vanilla-calendar-days_selecting', - months: 'vanilla-calendar-months', - monthsSelecting: 'vanilla-calendar-months_selecting', - monthsMonth: 'vanilla-calendar-months__month', - monthsMonthSelected: 'vanilla-calendar-months__month_selected', - monthsMonthDisabled: 'vanilla-calendar-months__month_disabled', - years: 'vanilla-calendar-years', - yearsSelecting: 'vanilla-calendar-years_selecting', - yearsYear: 'vanilla-calendar-years__year', - yearsYearSelected: 'vanilla-calendar-years__year_selected', - yearsYearDisabled: 'vanilla-calendar-years__year_disabled', - time: 'vanilla-calendar-time', - timeContent: 'vanilla-calendar-time__content', - timeHours: 'vanilla-calendar-time__hours', - timeMinutes: 'vanilla-calendar-time__minutes', - timeKeeping: 'vanilla-calendar-time__keeping', - timeRanges: 'vanilla-calendar-time__ranges', - timeRange: 'vanilla-calendar-time__range', - day: 'vanilla-calendar-day', - dayHoverFirst: 'vanilla-calendar-day_hover-first', - dayHoverLast: 'vanilla-calendar-day_hover-last', - dayHoverIntermediate: 'vanilla-calendar-day_hover-intermediate', - daySelectedFirst: 'vanilla-calendar-day_selected-first', - daySelectedLast: 'vanilla-calendar-day_selected-last', - daySelectedIntermediate: 'vanilla-calendar-day_selected-intermediate', - dayPopup: 'vanilla-calendar-day__popup', - dayBtn: 'vanilla-calendar-day__btn', - dayBtnPrev: 'vanilla-calendar-day__btn_prev', - dayBtnNext: 'vanilla-calendar-day__btn_next', - dayBtnToday: 'vanilla-calendar-day__btn_today', - dayBtnSelected: 'vanilla-calendar-day__btn_selected', - dayBtnHover: 'vanilla-calendar-day__btn_hover', - dayBtnDisabled: 'vanilla-calendar-day__btn_disabled', - dayBtnWeekend: 'vanilla-calendar-day__btn_weekend', - dayBtnHoliday: 'vanilla-calendar-day__btn_holiday', - weekNumbers: 'vanilla-calendar-week-numbers', - weekNumbersTitle: 'vanilla-calendar-week-numbers__title', - weekNumbersContent: 'vanilla-calendar-week-numbers__content', - weekNumber: 'vanilla-calendar-week-number', - isFocus: 'vanilla-calendar-is-focus', - }, -}); -``` diff --git a/docs/ru/reference/additionally/dom-templates.mdx b/docs/ru/reference/additionally/dom-templates.mdx deleted file mode 100644 index 5dc588e5..00000000 --- a/docs/ru/reference/additionally/dom-templates.mdx +++ /dev/null @@ -1,154 +0,0 @@ -# DOM-Шаблоны - -DOM-шаблоны позволяют вам почти полностью изменить структуру DOM календаря и добавить собственные HTML-элементы, такие как кнопки. Каждый тип календаря имеет свой собственный шаблон по умолчанию, и вы можете настроить каждый из них. - - - Теги, содержащие символ **«#»**, являются зарегистрированными компонентами календаря и должны содержать закрывающую косую черту в конце тега, за исключением тега **\<#Multiple>\<#/Multiple>**, который оборачивает один месяц. - В шаблонах по умолчанию перечислены все возможные компоненты для этого шаблона. - - -## DOMTemplates.default - -`Type: String` - -`Default: string` - -`Options: string` - -```js -new VanillaCalendar('#calendar', { - DOMTemplates: { - default: ` -
- <#ArrowPrev /> -
- <#Month /> - <#Year /> -
- <#ArrowNext /> -
-
- <#WeekNumbers /> -
- <#Week /> - <#Days /> -
-
- <#ControlTime /> - ` - } -}); -``` - -Это шаблон по умолчанию для отображения одного месяца и его дат. - ---- - -## DOMTemplates.multiple - -`Type: String` - -`Default: string` - -`Options: string` - -```js -new VanillaCalendar('#calendar', { - DOMTemplates: { - multiple: ` -
- <#ArrowPrev /> - <#ArrowNext /> -
-
- <#Multiple> -
-
-
- <#Month /> - <#Year /> -
-
-
- <#WeekNumbers /> -
- <#Week /> - <#Days /> -
-
-
- <#/Multiple> -
- <#ControlTime /> - ` - } -}); -``` - -Это шаблон по умолчанию для отображения нескольких месяцев и их дат. - ---- - -## DOMTemplates.month - -`Type: String` - -`Default: string` - -`Options: string` - -```js -new VanillaCalendar('#calendar', { - DOMTemplates: { - month: ` -
-
- <#Month /> - <#Year /> -
-
-
-
- <#Months /> -
-
- ` - } -}); -``` - -Это шаблон по умолчанию для выбора месяца. - ---- - -## DOMTemplates.year - -`Type: String` - -`Default: string` - -`Options: string` - -```js -new VanillaCalendar('#calendar', { - DOMTemplates: { - year: ` -
- <#ArrowPrev /> -
- <#Month /> - <#Year /> -
- <#ArrowNext /> -
-
-
- <#Years /> -
-
- ` - } -}); -``` - -Это шаблон по умолчанию для выбора года. diff --git a/docs/ru/reference/additionally/localization.mdx b/docs/ru/reference/additionally/localization.mdx deleted file mode 100644 index 8855ff1e..00000000 --- a/docs/ru/reference/additionally/localization.mdx +++ /dev/null @@ -1,49 +0,0 @@ -# Локализация - -Ключ верхнего уровня `locale` используется для ручной локализации календаря. Этот ключ работает только в случае, если для параметра `settings.lang` задано значение `'define'`. `locale` позволяет вам устанавливать собственные имена для месяцев и дней недели. - - - Если ваша языковая метка поддерживаеться методом `.toLocaleString()`, вы можете передать эту языковую метку в параметр `settings.lang`, без необходимости ручной локализации. - Вы можете найти информацию о поддержке вашей языковой метки здесь (BCP 47). - - -Ключ `locale` содержит два подключа: `months` и `weekday`. Оба эти ключа принимают массив строк. -**Оба ключа обязательны**, если параметру `settings.lang` установлено значение `'define'`. - -## locale.months - -`Type: String[]` - -`Default: []` - -`Options: String[] | []` - -```js -new VanillaCalendar('#calendar', { - settings: { - lang: 'define', - }, - locale: { - months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - }, -}); -``` - -## locale.weekday - -`Type: String[]` - -`Default: []` - -`Options: String[] | []` - -```js -new VanillaCalendar('#calendar', { - settings: { - lang: 'define', - }, - locale: { - weekday: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - }, -}); -``` diff --git a/docs/ru/reference/additionally/settings.mdx b/docs/ru/reference/additionally/settings.mdx deleted file mode 100644 index caee8aa6..00000000 --- a/docs/ru/reference/additionally/settings.mdx +++ /dev/null @@ -1,775 +0,0 @@ -# Настройки - -В ключе верхнего уровня `settings` содержится набор параметров, которые определяют конфигурацию календаря. - -## settings.lang - -`Type: String` - -`Default: 'en'` - -`Options: Language label | 'define'` - -```js -new VanillaCalendar('#calendar', { - settings: { - lang: 'en', - }, -}); -``` - -Этот параметр задает языковую локализацию календаря. -Вы можете указать метку языка согласно BCP 47 или использовать `'define'`, чтобы настроить собственные названия месяцев и дней недели, подробнее см. `locale`. - ---- - -## settings.iso8601 - -`Type: Boolean` - -`Default: true` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - iso8601: true, - }, -}); -``` - -Этот параметр устанавливает начало недели в соответствии с международным стандартом ISO 8601. Если установлено значение `'false'`, неделя начнется с воскресенья, в противном случае - с понедельника. - ---- - -## settings.range.min - -`Type: String` - -`Default: '1970-01-01'` - -`Options: 'YYYY-MM-DD' | 'today'` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - min: '2022-07-01', - // or - min: 'today', - } - }, -}); -``` - -Этот параметр устанавливает минимальную дату, которую пользователь может выбрать. Даты, меньшие указанной, будут отключены и недоступны для выбора. - - - Важно отметить, что `settings.range.min` и `settings.range.max` отключают даты, выходящие за пределы диапазона, в то время как `date.min` и `date.max` вообще их не создают. - - - - Вы можете указать `'today'` как ярлык для `settings.range.min` и/или `settings.range.max`. - - ---- - -## settings.range.max - -`Type: String` - -`Default: '2470-12-31'` - -`Options: 'YYYY-MM-DD' | 'today'` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - max: '2024-07-01', - // or - max: 'today', - } - }, -}); -``` - -Этот параметр устанавливает максимальную дату, которую пользователь может выбрать. Даты, большие указанной, будут отключены и недоступны для выбора. - - - Важно отметить, что `settings.range.min` и `settings.range.max` отключают даты, выходящие за пределы диапазона, в то время как `date.min` и `date.max` вообще их не создают. - - - - Вы можете указать `'today'` как ярлык для `settings.range.min` и/или `settings.range.max`. - - ---- - -## settings.range.edgesOnly - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - edgesOnly: true, - } - }, -}); -``` - -Этот параметр позволяет получить только начальную и конечную выбранную пользователем дату, игнорируя промежуточные даты. Этот параметр работает только в том случае, если для `settings.selection.day` установлено значение `'multiple-ranged'`. - - - Важно отметить, что при использовании этой настройки отключение дат в пределах диапазона дат не будет иметь никакого эффекта. Поэтому обязательно используйте этот параметр, если вас интересуют только начальная и конечная выбранная пользователем дата. - - ---- - -## settings.range.disablePast - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - disablePast: true, - } - }, -}); -``` - -Этот параметр отключает все прошлые дни. - ---- - -## settings.range.disableGaps - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - disableGaps: true, - } - }, -}); -``` - -Этот параметр отключает выбор дней в диапазоне с отключенными датами. Работает только если для параметра `settings.selection.day` установлено значение `'multiple-ranged'`. - ---- - -## settings.range.disableAllDays - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - disableAllDays: true, - } - }, -}); -``` - -Этот параметр отключает все дни и может быть полезен при использовании `settings.range.enabled`. - ---- - -## settings.range.disableWeekday - -`Type: Number[]` - -`Default: []` - -`Options: number[] | []` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - disableWeekday: [0, 6], - } - }, -}); -``` - -Этот параметр позволяет отключить указанные дни недели. Укажите массив с числами, где каждое число представляет собой идентификатор дня недели. Например, `0` - воскресенье. - ---- - -## settings.range.disabled - -`Type: String[] | Number[] | Date[]` - -`Default: null` - -`Options: ['YYYY-MM-DD'] | [Number] | [Date] | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - disabled: ['2022-08-10:2022-08-15', '2022-08-20', 1722152977141, new Date()], - } - }, -}); -``` - -Этот параметр позволяет отключить указанные даты, независимо от указанного диапазона. - - - Чтобы указать диапазон дат, используйте любой разделитель между датами в пределах одной строки. - - ---- - -## settings.range.enabled - -`Type: String[] | Number[] | Date[]` - -`Default: null` - -`Options: ['YYYY-MM-DD'] | [Number] | [Date] | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - range: { - enabled: ['2022-08-11:2022-08-16', '2022-08-20', 1722152977141, new Date()], - } - }, -}); -``` - -Этот параметр позволяет включить указанные даты, независимо от диапазона и отключенных дат. - - - Чтобы указать диапазон дат, используйте любой разделитель между датами в пределах одной строки. - - ---- - -## settings.selection.day - -`Type: String | false` - -`Default: 'single'` - -`Options: 'single' | 'multiple' | 'multiple-ranged' | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - day: 'single', - }, - }, -}); -``` - -Этот параметр определяет, разрешено ли выбирать один или несколько дней, либо выбор дней полностью отключен. - ---- - -## settings.selection.month - -`Type: Boolean` - -`Default: true` - -`Options: true | false | 'only-arrows'` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - month: false, - }, - }, -}); -``` - -Этот параметр позволяет отключить выбор месяца, разрешить переключение месяцев только с помощью стрелок или разрешить переключение месяцев любым способом. - ---- - -## settings.selection.year - -`Type: Boolean` - -`Default: true` - -`Options: true | false | 'only-arrows'` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - year: false, - }, - }, -}); -``` - -Этот параметр позволяет отключить выбор года, разрешить переключение года только с помощью стрелок или разрешить переключение года любым способом. - ---- - -## settings.selection.time - -`Type: Boolean | Number` - -`Default: false` - -`Options: true (it is 12) | false | 24 | 12` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - time: true, - }, - }, -}); -``` - -Этот параметр включает выбор времени. Вы также можете указать формат времени, используя булево значение или число: 24-часовой или 12-часовой формат. - ---- - -## settings.selection.controlTime - -`Type: String` - -`Default: 'all'` - -`Options: 'all' | 'range'` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - controlTime: 'all', - }, - }, -}); -``` - -Этот параметр определяет способ выбора времени: `'all'` (любым способом) или `'range'` (только с помощью контроллера). - ---- - -## settings.selection.stepHours - -`Type: Number` - -`Default: 1` - -`Options: Number (from 1 to 23)` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - stepHours: 1, - }, - }, -}); -``` - -Этот параметр устанавливает шаг для контроллера часов. Вы можете выбрать любое число от 1 до 23. - ---- - -## settings.selection.stepMinutes - -`Type: Number` - -`Default: 1` - -`Options: Number (from 1 to 59)` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - stepMinutes: 1, - }, - }, -}); -``` - -Этот параметр устанавливает шаг для контроллера минут. Вы можете выбрать любое число от 1 до 59. - ---- - -## settings.selection.cancelableDay - -`Type: Number` - -`Default: true` - -`Options: boolean` - -```js -new VanillaCalendar('#calendar', { - settings: { - selection: { - cancelableDay: false, - }, - }, -}); -``` - -Этот параметр позволяет включить/отключить отмену выбранной даты при повторном нажатии. - ---- - -## settings.selected.dates - -`Type: String[] | Number[] | Date[]` - -`Default: null` - -`Options: ['YYYY-MM-DD'] | [Number] | [Date] | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - selected: { - dates: ['2022-08-10:2022-08-15', '2022-08-20', 1722152977141, new Date()], - }, - }, -}); -``` - -Этот параметр позволяет указать список дат, которые будут выбраны при инициализации календаря. - - - Чтобы указать диапазон дат, используйте любой разделитель между датами в пределах одной строки. - - ---- - -## settings.selected.month - -`Type: Number` - -`Default: null` - -`Options: Number (from 0 to 11) | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - selected: { - month: 0, - }, - }, -}); -``` - -Этот параметр определяет месяц, который будет отображаться при инициализации календаря. Месяцы нумеруются с 0 до 11. - ---- - -## settings.selected.year - -`Type: Number` - -`Default: null` - -`Options: Number (YYYY) | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - selected: { - year: 2022, - }, - }, -}); -``` - -Этот параметр определяет год, который будет отображаться при инициализации календаря. - ---- - -## settings.selected.holidays - -`Type: String[] | Number[] | Date[]` - -`Default: null` - -`Options: ['YYYY-MM-DD'] | [Number] | [Date] | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - selected: { - holidays: ['2022-08-10:2022-08-15', '2022-08-20', 1722152977141, new Date()], - }, - }, -}); -``` - -Этот параметр позволяет указать даты, которые будут считаться праздничными и получат дополнительный CSS-модификатор. - - - Чтобы указать диапазон дат, используйте любой разделитель между датами в пределах одной строки. - - ---- - -## settings.selected.time - -`Type: String` - -`Default: null` - -`Options: 'hh:mm aa' | null` - -```js -new VanillaCalendar('#calendar', { - settings: { - selected: { - time: '03:44 AM', - }, - }, -}); -``` - -Этот параметр позволяет задать время, которое будет отображаться при инициализации календаря. Время задается в формате `'hh:mm aa'`, где `'aa'` - это маркер AM/PM. Если используется 24-часовой формат, маркер `'aa'` указывать не требуется. - ---- - -## settings.visibility.theme - -`Type: String` - -`Default: 'system'` - -`Options: 'light' | 'dark' | 'system'` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - theme: 'system', - }, - }, -}); -``` - -Этот параметр определяет тему календаря. По умолчанию тема определяется системой пользователя или настройками сайта. - ---- - -## settings.visibility.themeDetect - -`Type: String | False` - -`Default: 'html[data-theme]'` - -`Options: 'string | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - themeDetect: 'html[data-theme]', - }, - }, -}); -``` - -Для того чтобы календарь автоматически отслеживал и применял тему сайта, вы можете передать строковое значение в виде CSS-селектора. -Квадратные скобки указывают на атрибут, содержащий название темы. -По умолчанию отслеживается тег `html` с атрибутом `data-theme`, но вы можете настроить любой другой атрибут и тег, например, `class`, если имя класса используется для задания темы: `'html[class]'`. -Если установить значение `false`, тема будет определяться системой пользователя или параметром `settings.visibility.theme`. - ---- - -## settings.visibility.monthShort - -`Type: Boolean` - -`Default: true` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - monthShort: true, - }, - }, -}); -``` - -Этот параметр позволяет использовать сокращенные названия месяцев при выборе месяца. - ---- - -## settings.visibility.weekNumbers - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - weekNumbers: false, - }, - }, -}); -``` - -С помощью этого параметра вы можете решить, будут ли отображаться номера недель в году. - ---- - -## settings.visibility.weekend - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - weekend: true, - }, - }, -}); -``` - -Этот параметр позволяет выделить выходные дни в календаре. - ---- - -## settings.visibility.today - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - today: true, - }, - }, -}); -``` - -С помощью этого параметра вы можете выделить текущий день в календаре. - ---- - -## settings.visibility.disabled - -`Type: Boolean` - -`Default: false` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - disabled: false, - }, - }, -}); -``` - -Этот параметр определяет, будут ли отображаться все дни, включая отключенные дни. - ---- - -## settings.visibility.daysOutside - -`Type: Boolean` - -`Default: true` - -`Options: true | false` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - daysOutside: false, - }, - }, -}); -``` - -С помощью этого параметра вы можете решить, будут ли отображаться дни из прошлого и следующего месяца. - ---- - -## settings.visibility.positionToInput - -`Type: String` - -`Default: 'left'` - -`Options: 'auto' | 'center' | 'left' | 'right' | ['bottom' | 'top', 'center' | 'left' | 'right']` - -```js -new VanillaCalendar('#calendar', { - settings: { - visibility: { - positionToInput: 'auto', - // positionToInput: ['bottom', 'center'], - }, - }, -}); -``` - -Этот параметр определяет положение календаря относительно input, если каклендарь инициализирован с параметром `input`. - -`positionToInput` принимает строку со значением `'left'`, `'center'` или `'right'`, либо массив значений `[ось Y, ось X]`, где ось Y может быть `'bottom'` или `'top'`, а ось X может быть `'left'`, `'center'` или `'right'`. -Если ось Y не указана, то используется значение по умолчанию - `'bottom'`. - -Вы можете использовать значение `positionToInput: 'auto'` для автоматического определения наилучшей позиции в зависимости от доступного места в области просмотра. -Опция позволяет рассчитать доступное пространство со всех 4 сторон и сначала попытается отобразить календарь внизу относительно input, это позиция по умолчанию. -Если внизу недостаточно места, он оценит другую лучшую доступную позицию. diff --git a/docs/ru/reference/creating-an-instance.mdx b/docs/ru/reference/creating-an-instance.mdx new file mode 100644 index 00000000..3cc1f0de --- /dev/null +++ b/docs/ru/reference/creating-an-instance.mdx @@ -0,0 +1,59 @@ +--- +title: Создание экземпляра +description: Узнайте, как создать экземпляр Vanilla Calendar Pro, используя CSS-селектор или HTML-элемент. Настройте календарь для инициализации в оболочке или всплывающем окне при клике на элемент. +section: 1 +--- + +# Создание экземпляра + +`new Calendar()` - создает экземпляр **Vanilla Calendar Pro**, представляющий собой инкапсуляцию календаря, его настройки и методы. + +Если вы подключили **Vanilla Calendar Pro** с помощью тега `