├── assets ├── css │ ├── air-datepicker.css │ ├── air-datepicker.min.css │ └── main.min.css ├── fonts │ ├── inter-v12-latin-500.woff2 │ ├── inter-v12-latin-600.woff2 │ ├── inter-v12-latin-800.woff2 │ └── inter-v12-latin-regular.woff2 ├── images │ ├── apple-touch-icon.png │ ├── banner-1280x640.png │ ├── banner-1544x500.png │ ├── banner-772x250.png │ ├── favicon.ico │ ├── icon-128.png │ ├── icon-128x128.png │ ├── icon-16.png │ ├── icon-192.png │ ├── icon-196.png │ ├── icon-256.png │ ├── icon-256x256.png │ ├── icon-32.png │ ├── icon-48.png │ ├── icon-96.png │ ├── icon-og.png │ ├── icon-rounded.png │ ├── icon-square.png │ ├── illustration-1.png │ ├── illustration-1.svg │ ├── illustration-els.png │ ├── illustration-els.svg │ ├── illustration-og.png │ ├── screenshot-1.png │ └── screenshot-2.png └── js │ ├── all-calculators.js │ ├── app.js │ ├── calculator.js │ ├── chart.js │ ├── datepicker.js │ ├── dialog-table.js │ ├── dropdown-icon.js │ ├── fractions.js │ ├── functions.js │ ├── hourpicker.js │ ├── lib │ ├── air-datepicker.js │ ├── chartjs │ │ ├── chart.js │ │ ├── chart.js.map │ │ ├── chart.min.js │ │ ├── chart.umd.js │ │ ├── chart.umd.js.map │ │ ├── chunks │ │ │ ├── helpers.core.d.ts │ │ │ ├── helpers.segment.js │ │ │ └── helpers.segment.js.map │ │ ├── helpers.d.ts │ │ ├── helpers.js │ │ ├── helpers.js.map │ │ └── types.d.ts │ ├── input-mask.min.js │ ├── katex │ │ ├── auto-render.min.js │ │ ├── fonts │ │ │ ├── KaTeX_AMS-Regular.ttf │ │ │ ├── KaTeX_AMS-Regular.woff │ │ │ ├── KaTeX_AMS-Regular.woff2 │ │ │ ├── KaTeX_Caligraphic-Bold.ttf │ │ │ ├── KaTeX_Caligraphic-Bold.woff │ │ │ ├── KaTeX_Caligraphic-Bold.woff2 │ │ │ ├── KaTeX_Caligraphic-Regular.ttf │ │ │ ├── KaTeX_Caligraphic-Regular.woff │ │ │ ├── KaTeX_Caligraphic-Regular.woff2 │ │ │ ├── KaTeX_Fraktur-Bold.ttf │ │ │ ├── KaTeX_Fraktur-Bold.woff │ │ │ ├── KaTeX_Fraktur-Bold.woff2 │ │ │ ├── KaTeX_Fraktur-Regular.ttf │ │ │ ├── KaTeX_Fraktur-Regular.woff │ │ │ ├── KaTeX_Fraktur-Regular.woff2 │ │ │ ├── KaTeX_Main-Bold.ttf │ │ │ ├── KaTeX_Main-Bold.woff │ │ │ ├── KaTeX_Main-Bold.woff2 │ │ │ ├── KaTeX_Main-BoldItalic.ttf │ │ │ ├── KaTeX_Main-BoldItalic.woff │ │ │ ├── KaTeX_Main-BoldItalic.woff2 │ │ │ ├── KaTeX_Main-Italic.ttf │ │ │ ├── KaTeX_Main-Italic.woff │ │ │ ├── KaTeX_Main-Italic.woff2 │ │ │ ├── KaTeX_Main-Regular.ttf │ │ │ ├── KaTeX_Main-Regular.woff │ │ │ ├── KaTeX_Main-Regular.woff2 │ │ │ ├── KaTeX_Math-BoldItalic.ttf │ │ │ ├── KaTeX_Math-BoldItalic.woff │ │ │ ├── KaTeX_Math-BoldItalic.woff2 │ │ │ ├── KaTeX_Math-Italic.ttf │ │ │ ├── KaTeX_Math-Italic.woff │ │ │ ├── KaTeX_Math-Italic.woff2 │ │ │ ├── KaTeX_SansSerif-Bold.ttf │ │ │ ├── KaTeX_SansSerif-Bold.woff │ │ │ ├── KaTeX_SansSerif-Bold.woff2 │ │ │ ├── KaTeX_SansSerif-Italic.ttf │ │ │ ├── KaTeX_SansSerif-Italic.woff │ │ │ ├── KaTeX_SansSerif-Italic.woff2 │ │ │ ├── KaTeX_SansSerif-Regular.ttf │ │ │ ├── KaTeX_SansSerif-Regular.woff │ │ │ ├── KaTeX_SansSerif-Regular.woff2 │ │ │ ├── KaTeX_Script-Regular.ttf │ │ │ ├── KaTeX_Script-Regular.woff │ │ │ ├── KaTeX_Script-Regular.woff2 │ │ │ ├── KaTeX_Size1-Regular.ttf │ │ │ ├── KaTeX_Size1-Regular.woff │ │ │ ├── KaTeX_Size1-Regular.woff2 │ │ │ ├── KaTeX_Size2-Regular.ttf │ │ │ ├── KaTeX_Size2-Regular.woff │ │ │ ├── KaTeX_Size2-Regular.woff2 │ │ │ ├── KaTeX_Size3-Regular.ttf │ │ │ ├── KaTeX_Size3-Regular.woff │ │ │ ├── KaTeX_Size3-Regular.woff2 │ │ │ ├── KaTeX_Size4-Regular.ttf │ │ │ ├── KaTeX_Size4-Regular.woff │ │ │ ├── KaTeX_Size4-Regular.woff2 │ │ │ ├── KaTeX_Typewriter-Regular.ttf │ │ │ ├── KaTeX_Typewriter-Regular.woff │ │ │ └── KaTeX_Typewriter-Regular.woff2 │ │ ├── katex.min.css │ │ └── katex.min.js │ ├── lazysizes.min.js │ └── math.min.js │ ├── mask.js │ ├── module.js │ ├── options.js │ ├── themes.js │ └── timepicker.js ├── ci_ovulation_calculator.php ├── index.html ├── plugin.php ├── readme.md └── readme.txt /assets/css/air-datepicker.css: -------------------------------------------------------------------------------- 1 | .air-datepicker-cell { 2 | /* border-radius: var(--adp-cell-border-radius); */ 3 | box-sizing: border-box; 4 | cursor: pointer; 5 | display: flex; 6 | position: relative; 7 | align-items: center; 8 | justify-content: center; 9 | z-index: 1 10 | } 11 | 12 | /* .air-datepicker-cell.-focus- { 13 | background: var(--adp-cell-background-color-hover) 14 | } */ 15 | 16 | /* .air-datepicker-cell.-current- { 17 | color: var(--adp-color-current-date) 18 | } */ 19 | 20 | .air-datepicker-cell.-current-.-focus- { 21 | color: var(--adp-color) 22 | } 23 | 24 | .air-datepicker-cell.-current-.-in-range- { 25 | color: var(--adp-color-current-date) 26 | } 27 | 28 | .air-datepicker-cell.-disabled- { 29 | cursor: default; 30 | color: var(--adp-color-disabled) 31 | } 32 | 33 | .air-datepicker-cell.-disabled-.-focus- { 34 | color: var(--adp-color-disabled) 35 | } 36 | 37 | .air-datepicker-cell.-disabled-.-in-range- { 38 | color: var(--adp-color-disabled-in-range) 39 | } 40 | 41 | .air-datepicker-cell.-disabled-.-current-.-focus- { 42 | color: var(--adp-color-disabled) 43 | } 44 | 45 | .air-datepicker-cell.-in-range- { 46 | background: var(--adp-cell-background-color-in-range); 47 | border-radius: 0 48 | } 49 | 50 | .air-datepicker-cell.-in-range-:hover { 51 | background: var(--adp-cell-background-color-in-range-hover) 52 | } 53 | 54 | .air-datepicker-cell.-range-from- { 55 | border: 1px solid var(--adp-cell-border-color-in-range); 56 | background-color: var(--adp-cell-background-color-in-range); 57 | border-radius: var(--adp-cell-border-radius) 0 0 var(--adp-cell-border-radius) 58 | } 59 | 60 | .air-datepicker-cell.-range-to- { 61 | border: 1px solid var(--adp-cell-border-color-in-range); 62 | background-color: var(--adp-cell-background-color-in-range); 63 | border-radius: 0 var(--adp-cell-border-radius) var(--adp-cell-border-radius) 0 64 | } 65 | 66 | .air-datepicker-cell.-range-to-.-range-from- { 67 | border-radius: var(--adp-cell-border-radius) 68 | } 69 | 70 | /* .air-datepicker-cell.-selected- { 71 | color: #fff; 72 | border: none; 73 | background: var(--adp-cell-background-color-selected) 74 | } */ 75 | 76 | /* .air-datepicker-cell.-selected-.-current- { 77 | color: #fff; 78 | background: var(--adp-cell-background-color-selected) 79 | } */ 80 | 81 | /* .air-datepicker-cell.-selected-.-focus- { 82 | background: var(--adp-cell-background-color-selected-hover) 83 | } */ 84 | 85 | .air-datepicker-body { 86 | transition: all var(--adp-transition-duration) var(--adp-transition-ease) 87 | } 88 | 89 | .air-datepicker-body.-hidden- { 90 | display: none 91 | } 92 | 93 | .air-datepicker-body--day-names { 94 | display: grid; 95 | grid-template-columns: repeat(7, var(--adp-day-cell-width)); 96 | /* margin: 8px 0 3px */ 97 | } 98 | 99 | .air-datepicker-body--day-name { 100 | /* color: var(--adp-day-name-color); */ 101 | display: flex; 102 | align-items: center; 103 | justify-content: center; 104 | flex: 1; 105 | text-align: center; 106 | text-transform: uppercase; 107 | /* font-size: .8em */ 108 | } 109 | 110 | .air-datepicker-body--day-name.-clickable- { 111 | cursor: pointer 112 | } 113 | 114 | .air-datepicker-body--day-name.-clickable-:hover { 115 | color: var(--adp-day-name-color-hover) 116 | } 117 | 118 | .air-datepicker-body--cells { 119 | display: grid 120 | } 121 | 122 | .air-datepicker-nav { 123 | display: flex; 124 | justify-content: space-between; 125 | /* border-bottom: 1px solid var(--adp-border-color-inner); */ 126 | /* min-height: var(--adp-nav-height); */ 127 | /* padding: var(--adp-padding); */ 128 | box-sizing: content-box 129 | } 130 | 131 | .-only-timepicker- .air-datepicker-nav { 132 | display: none 133 | } 134 | 135 | .air-datepicker-nav--title, 136 | .air-datepicker-nav--action { 137 | display: flex; 138 | cursor: pointer; 139 | align-items: center; 140 | justify-content: center 141 | } 142 | 143 | .air-datepicker-nav--action { 144 | border-radius: var(--adp-border-radius); 145 | -webkit-user-select: none; 146 | -moz-user-select: none; 147 | user-select: none; 148 | width: 24px; 149 | height: 24px; 150 | } 151 | 152 | /* .air-datepicker-nav--action:hover { 153 | background: var(--adp-background-color-hover) 154 | } */ 155 | 156 | /* .air-datepicker-nav--action:active { 157 | background: var(--adp-background-color-active) 158 | } */ 159 | 160 | .air-datepicker-nav--action.-disabled- { 161 | visibility: hidden 162 | } 163 | 164 | .air-datepicker-nav--action svg { 165 | width: 24px; 166 | height: 24px 167 | } 168 | 169 | .air-datepicker-nav--action path { 170 | fill: none; 171 | stroke: var(--adp-nav-arrow-color); 172 | stroke-width: 2px 173 | } 174 | 175 | .air-datepicker-nav--title { 176 | border-radius: var(--adp-border-radius); 177 | padding: 0 8px 178 | } 179 | 180 | .air-datepicker-nav--title i { 181 | font-style: normal; 182 | color: var(--adp-nav-color-secondary); 183 | margin-left: .3em 184 | } 185 | 186 | /* .air-datepicker-nav--title:hover { 187 | background: var(--adp-background-color-hover) 188 | } */ 189 | 190 | /* .air-datepicker-nav--title:active { 191 | background: var(--adp-background-color-active) 192 | } */ 193 | 194 | .air-datepicker-nav--title.-disabled- { 195 | cursor: default; 196 | background: none 197 | } 198 | 199 | .air-datepicker-buttons { 200 | display: grid; 201 | grid-auto-columns: 1fr; 202 | grid-auto-flow: column 203 | } 204 | 205 | .air-datepicker-button { 206 | display: inline-flex; 207 | color: var(--adp-btn-color); 208 | border-radius: var(--adp-btn-border-radius); 209 | cursor: pointer; 210 | height: var(--adp-btn-height); 211 | border: none; 212 | background: rgba(255, 255, 255, 0) 213 | } 214 | 215 | .air-datepicker-button:hover { 216 | color: var(--adp-btn-color-hover); 217 | background: var(--adp-btn-background-color-hover) 218 | } 219 | 220 | .air-datepicker-button:focus { 221 | color: var(--adp-btn-color-hover); 222 | background: var(--adp-btn-background-color-hover); 223 | outline: none 224 | } 225 | 226 | .air-datepicker-button:active { 227 | background: var(--adp-btn-background-color-active) 228 | } 229 | 230 | .air-datepicker-button span { 231 | outline: none; 232 | display: flex; 233 | align-items: center; 234 | justify-content: center; 235 | width: 100%; 236 | height: 100% 237 | } 238 | 239 | .air-datepicker-time { 240 | display: grid; 241 | grid-template-columns: -webkit-max-content 1fr; 242 | grid-template-columns: max-content 1fr; 243 | grid-column-gap: 12px; 244 | align-items: center; 245 | position: relative; 246 | padding: 0 var(--adp-time-padding-inner) 247 | } 248 | 249 | .-only-timepicker- .air-datepicker-time { 250 | border-top: none 251 | } 252 | 253 | .air-datepicker-time--current { 254 | display: flex; 255 | align-items: center; 256 | flex: 1; 257 | font-size: 14px; 258 | text-align: center 259 | } 260 | 261 | .air-datepicker-time--current-colon { 262 | margin: 0 2px 3px; 263 | line-height: 1 264 | } 265 | 266 | .air-datepicker-time--current-hours, 267 | .air-datepicker-time--current-minutes { 268 | line-height: 1; 269 | font-size: 19px; 270 | font-family: "Century Gothic", CenturyGothic, AppleGothic, sans-serif; 271 | position: relative; 272 | z-index: 1 273 | } 274 | 275 | .air-datepicker-time--current-hours:after, 276 | .air-datepicker-time--current-minutes:after { 277 | content: ''; 278 | background: var(--adp-background-color-hover); 279 | border-radius: var(--adp-border-radius); 280 | position: absolute; 281 | left: -2px; 282 | top: -3px; 283 | right: -2px; 284 | bottom: -2px; 285 | z-index: -1; 286 | opacity: 0 287 | } 288 | 289 | .air-datepicker-time--current-hours.-focus-:after, 290 | .air-datepicker-time--current-minutes.-focus-:after { 291 | opacity: 1 292 | } 293 | 294 | .air-datepicker-time--current-ampm { 295 | text-transform: uppercase; 296 | align-self: flex-end; 297 | color: var(--adp-time-day-period-color); 298 | margin-left: 6px; 299 | font-size: 11px; 300 | margin-bottom: 1px 301 | } 302 | 303 | .air-datepicker-time--row { 304 | display: flex; 305 | align-items: center; 306 | font-size: 11px; 307 | height: 17px; 308 | background: linear-gradient(to right, var(--adp-time-track-color), var(--adp-time-track-color)) left 50%/100% var(--adp-time-track-height) no-repeat 309 | } 310 | 311 | .air-datepicker-time--row:first-child { 312 | margin-bottom: 4px 313 | } 314 | 315 | .air-datepicker-time--row input[type='range'] { 316 | background: none; 317 | cursor: pointer; 318 | flex: 1; 319 | height: 100%; 320 | width: 100%; 321 | padding: 0; 322 | margin: 0; 323 | -webkit-appearance: none 324 | } 325 | 326 | .air-datepicker-time--row input[type='range']::-webkit-slider-thumb { 327 | -webkit-appearance: none 328 | } 329 | 330 | .air-datepicker-time--row input[type='range']::-ms-tooltip { 331 | display: none 332 | } 333 | 334 | .air-datepicker-time--row input[type='range']:hover::-webkit-slider-thumb { 335 | border-color: var(--adp-time-track-color-hover) 336 | } 337 | 338 | .air-datepicker-time--row input[type='range']:hover::-moz-range-thumb { 339 | border-color: var(--adp-time-track-color-hover) 340 | } 341 | 342 | .air-datepicker-time--row input[type='range']:hover::-ms-thumb { 343 | border-color: var(--adp-time-track-color-hover) 344 | } 345 | 346 | .air-datepicker-time--row input[type='range']:focus { 347 | outline: none 348 | } 349 | 350 | .air-datepicker-time--row input[type='range']:focus::-webkit-slider-thumb { 351 | background: var(--adp-cell-background-color-selected); 352 | border-color: var(--adp-cell-background-color-selected) 353 | } 354 | 355 | .air-datepicker-time--row input[type='range']:focus::-moz-range-thumb { 356 | background: var(--adp-cell-background-color-selected); 357 | border-color: var(--adp-cell-background-color-selected) 358 | } 359 | 360 | .air-datepicker-time--row input[type='range']:focus::-ms-thumb { 361 | background: var(--adp-cell-background-color-selected); 362 | border-color: var(--adp-cell-background-color-selected) 363 | } 364 | 365 | .air-datepicker-time--row input[type='range']::-webkit-slider-thumb { 366 | box-sizing: border-box; 367 | height: 12px; 368 | width: 12px; 369 | border-radius: 3px; 370 | border: 1px solid var(--adp-time-track-color); 371 | background: #fff; 372 | cursor: pointer; 373 | -webkit-transition: background var(--adp-transition-duration); 374 | transition: background var(--adp-transition-duration) 375 | } 376 | 377 | .air-datepicker-time--row input[type='range']::-moz-range-thumb { 378 | box-sizing: border-box; 379 | height: 12px; 380 | width: 12px; 381 | border-radius: 3px; 382 | border: 1px solid var(--adp-time-track-color); 383 | background: #fff; 384 | cursor: pointer; 385 | -moz-transition: background var(--adp-transition-duration); 386 | transition: background var(--adp-transition-duration) 387 | } 388 | 389 | .air-datepicker-time--row input[type='range']::-ms-thumb { 390 | box-sizing: border-box; 391 | height: 12px; 392 | width: 12px; 393 | border-radius: 3px; 394 | border: 1px solid var(--adp-time-track-color); 395 | background: #fff; 396 | cursor: pointer; 397 | -ms-transition: background var(--adp-transition-duration); 398 | transition: background var(--adp-transition-duration) 399 | } 400 | 401 | .air-datepicker-time--row input[type='range']::-webkit-slider-thumb { 402 | margin-top: calc(var(--adp-time-thumb-size) / 2 * -1) 403 | } 404 | 405 | .air-datepicker-time--row input[type='range']::-webkit-slider-runnable-track { 406 | border: none; 407 | height: var(--adp-time-track-height); 408 | cursor: pointer; 409 | color: transparent; 410 | background: transparent 411 | } 412 | 413 | .air-datepicker-time--row input[type='range']::-moz-range-track { 414 | border: none; 415 | height: var(--adp-time-track-height); 416 | cursor: pointer; 417 | color: transparent; 418 | background: transparent 419 | } 420 | 421 | .air-datepicker-time--row input[type='range']::-ms-track { 422 | border: none; 423 | height: var(--adp-time-track-height); 424 | cursor: pointer; 425 | color: transparent; 426 | background: transparent 427 | } 428 | 429 | .air-datepicker-time--row input[type='range']::-ms-fill-lower { 430 | background: transparent 431 | } 432 | 433 | .air-datepicker-time--row input[type='range']::-ms-fill-upper { 434 | background: transparent 435 | } 436 | 437 | .air-datepicker { 438 | --adp-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; 439 | --adp-font-size: 14px; 440 | --adp-width: 246px; 441 | --adp-z-index: 100; 442 | --adp-padding: 4px; 443 | --adp-grid-areas: 444 | 'nav' 445 | 'body' 446 | 'timepicker' 447 | 'buttons'; 448 | --adp-transition-duration: .3s; 449 | --adp-transition-ease: ease-out; 450 | --adp-transition-offset: 8px; 451 | --adp-background-color: #fff; 452 | --adp-background-color-hover: #f0f0f0; 453 | --adp-background-color-active: #eaeaea; 454 | --adp-background-color-in-range: rgba(92, 196, 239, .1); 455 | --adp-background-color-in-range-focused: rgba(92, 196, 239, .2); 456 | --adp-background-color-selected-other-month-focused: #8ad5f4; 457 | --adp-background-color-selected-other-month: #a2ddf6; 458 | --adp-color: #4a4a4a; 459 | --adp-color-secondary: #9c9c9c; 460 | --adp-accent-color: #4eb5e6; 461 | --adp-color-current-date: var(--adp-accent-color); 462 | --adp-color-other-month: #dedede; 463 | --adp-color-disabled: #aeaeae; 464 | --adp-color-disabled-in-range: #939393; 465 | --adp-color-other-month-hover: #c5c5c5; 466 | --adp-border-color: #dbdbdb; 467 | --adp-border-color-inner: #efefef; 468 | --adp-border-radius: 4px; 469 | --adp-border-color-inline: #d7d7d7; 470 | --adp-nav-height: 32px; 471 | --adp-nav-arrow-color: var(--adp-color-secondary); 472 | --adp-nav-action-size: 32px; 473 | --adp-nav-color-secondary: var(--adp-color-secondary); 474 | --adp-day-name-color: #ff9a19; 475 | --adp-day-name-color-hover: #8ad5f4; 476 | --adp-day-cell-width: 1fr; 477 | --adp-day-cell-height: 32px; 478 | --adp-month-cell-height: 42px; 479 | --adp-year-cell-height: 56px; 480 | --adp-pointer-size: 10px; 481 | --adp-poiner-border-radius: 2px; 482 | --adp-pointer-offset: 14px; 483 | --adp-cell-border-radius: 4px; 484 | --adp-cell-background-color-hover: var(--adp-background-color-hover); 485 | --adp-cell-background-color-selected: #5cc4ef; 486 | --adp-cell-background-color-selected-hover: #45bced; 487 | --adp-cell-background-color-in-range: rgba(92, 196, 239, 0.1); 488 | --adp-cell-background-color-in-range-hover: rgba(92, 196, 239, 0.2); 489 | --adp-cell-border-color-in-range: var(--adp-cell-background-color-selected); 490 | --adp-btn-height: 32px; 491 | --adp-btn-color: var(--adp-accent-color); 492 | --adp-btn-color-hover: var(--adp-color); 493 | --adp-btn-border-radius: var(--adp-border-radius); 494 | --adp-btn-background-color-hover: var(--adp-background-color-hover); 495 | --adp-btn-background-color-active: var(--adp-background-color-active); 496 | --adp-time-track-height: 1px; 497 | --adp-time-track-color: #dedede; 498 | --adp-time-track-color-hover: #b1b1b1; 499 | --adp-time-thumb-size: 12px; 500 | --adp-time-padding-inner: 10px; 501 | --adp-time-day-period-color: var(--adp-color-secondary); 502 | --adp-mobile-font-size: 16px; 503 | --adp-mobile-nav-height: 40px; 504 | --adp-mobile-width: 320px; 505 | --adp-mobile-day-cell-height: 38px; 506 | --adp-mobile-month-cell-height: 48px; 507 | --adp-mobile-year-cell-height: 64px 508 | } 509 | 510 | .air-datepicker-overlay { 511 | --adp-overlay-background-color: rgba(0, 0, 0, .3); 512 | --adp-overlay-transition-duration: .3s; 513 | --adp-overlay-transition-ease: ease-out; 514 | --adp-overlay-z-index: 99 515 | } 516 | 517 | .air-datepicker { 518 | background: var(--adp-background-color); 519 | /* border: 1px solid var(--adp-border-color); */ 520 | /* box-shadow: 10px 10px 30px rgba(#FE5141, 0.2); */ 521 | /* border-radius: var(--adp-border-radius); */ 522 | box-sizing: content-box; 523 | display: grid; 524 | grid-template-columns: 1fr; 525 | grid-template-rows: repeat(4, -webkit-max-content); 526 | grid-template-rows: repeat(4, max-content); 527 | grid-template-areas: var(--adp-grid-areas); 528 | font-family: var(--adp-font-family), sans-serif; 529 | font-size: var(--adp-font-size); 530 | color: var(--adp-color); 531 | /* width: var(--adp-width); */ 532 | position: absolute; 533 | transition: opacity var(--adp-transition-duration) var(--adp-transition-ease), transform var(--adp-transition-duration) var(--adp-transition-ease); 534 | z-index: var(--adp-z-index) 535 | } 536 | 537 | .air-datepicker:not(.-custom-position-) { 538 | opacity: 0 539 | } 540 | 541 | .air-datepicker.-from-top- { 542 | transform: translateY(calc(var(--adp-transition-offset) * -1)) 543 | } 544 | 545 | .air-datepicker.-from-right- { 546 | transform: translateX(var(--adp-transition-offset)) 547 | } 548 | 549 | .air-datepicker.-from-bottom- { 550 | transform: translateY(var(--adp-transition-offset)) 551 | } 552 | 553 | .air-datepicker.-from-left- { 554 | transform: translateX(calc(var(--adp-transition-offset) * -1)) 555 | } 556 | 557 | .air-datepicker.-active-:not(.-custom-position-) { 558 | transform: translate(0, 0); 559 | opacity: 1 560 | } 561 | 562 | .air-datepicker.-active-.-custom-position- { 563 | transition: none 564 | } 565 | 566 | .air-datepicker.-inline- { 567 | border-color: var(--adp-border-color-inline); 568 | box-shadow: none; 569 | position: static; 570 | left: auto; 571 | right: auto; 572 | opacity: 1; 573 | transform: none 574 | } 575 | 576 | .air-datepicker.-inline- .air-datepicker--pointer { 577 | display: none 578 | } 579 | 580 | .air-datepicker.-is-mobile- { 581 | --adp-font-size: var(--adp-mobile-font-size); 582 | --adp-day-cell-height: var(--adp-mobile-day-cell-height); 583 | --adp-month-cell-height: var(--adp-mobile-month-cell-height); 584 | --adp-year-cell-height: var(--adp-mobile-year-cell-height); 585 | --adp-nav-height: var(--adp-mobile-nav-height); 586 | --adp-nav-action-size: var(--adp-mobile-nav-height); 587 | position: fixed; 588 | width: var(--adp-mobile-width); 589 | border: none 590 | } 591 | 592 | .air-datepicker.-is-mobile- * { 593 | -webkit-tap-highlight-color: transparent 594 | } 595 | 596 | .air-datepicker.-is-mobile- .air-datepicker--pointer { 597 | display: none 598 | } 599 | 600 | .air-datepicker.-is-mobile-:not(.-custom-position-) { 601 | transform: translate(-50%, calc(-50% + var(--adp-transition-offset))) 602 | } 603 | 604 | .air-datepicker.-is-mobile-.-active-:not(.-custom-position-) { 605 | transform: translate(-50%, -50%) 606 | } 607 | 608 | .air-datepicker.-custom-position- { 609 | transition: none 610 | } 611 | 612 | .air-datepicker-global-container { 613 | position: absolute; 614 | left: 0; 615 | top: 0 616 | } 617 | 618 | .air-datepicker--pointer { 619 | --pointer-half-size: calc(var(--adp-pointer-size) / 2); 620 | position: absolute; 621 | width: var(--adp-pointer-size); 622 | height: var(--adp-pointer-size); 623 | z-index: -1; 624 | display: none; 625 | } 626 | 627 | .air-datepicker--pointer:after { 628 | content: ''; 629 | position: absolute; 630 | background: #fff; 631 | border-top: 1px solid var(--adp-border-color-inline); 632 | border-right: 1px solid var(--adp-border-color-inline); 633 | border-top-right-radius: var(--adp-poiner-border-radius); 634 | width: var(--adp-pointer-size); 635 | height: var(--adp-pointer-size); 636 | box-sizing: border-box 637 | } 638 | 639 | .-top-left- .air-datepicker--pointer, 640 | .-top-center- .air-datepicker--pointer, 641 | .-top-right- .air-datepicker--pointer, 642 | [data-popper-placement^='top'] .air-datepicker--pointer { 643 | top: calc(100% - var(--pointer-half-size) + 1px) 644 | } 645 | 646 | .-top-left- .air-datepicker--pointer:after, 647 | .-top-center- .air-datepicker--pointer:after, 648 | .-top-right- .air-datepicker--pointer:after, 649 | [data-popper-placement^='top'] .air-datepicker--pointer:after { 650 | transform: rotate(135deg) 651 | } 652 | 653 | .-right-top- .air-datepicker--pointer, 654 | .-right-center- .air-datepicker--pointer, 655 | .-right-bottom- .air-datepicker--pointer, 656 | [data-popper-placement^='right'] .air-datepicker--pointer { 657 | right: calc(100% - var(--pointer-half-size) + 1px) 658 | } 659 | 660 | .-right-top- .air-datepicker--pointer:after, 661 | .-right-center- .air-datepicker--pointer:after, 662 | .-right-bottom- .air-datepicker--pointer:after, 663 | [data-popper-placement^='right'] .air-datepicker--pointer:after { 664 | transform: rotate(225deg) 665 | } 666 | 667 | .-bottom-left- .air-datepicker--pointer, 668 | .-bottom-center- .air-datepicker--pointer, 669 | .-bottom-right- .air-datepicker--pointer, 670 | [data-popper-placement^='bottom'] .air-datepicker--pointer { 671 | bottom: calc(100% - var(--pointer-half-size) + 1px) 672 | } 673 | 674 | .-bottom-left- .air-datepicker--pointer:after, 675 | .-bottom-center- .air-datepicker--pointer:after, 676 | .-bottom-right- .air-datepicker--pointer:after, 677 | [data-popper-placement^='bottom'] .air-datepicker--pointer:after { 678 | transform: rotate(315deg) 679 | } 680 | 681 | .-left-top- .air-datepicker--pointer, 682 | .-left-center- .air-datepicker--pointer, 683 | .-left-bottom- .air-datepicker--pointer, 684 | [data-popper-placement^='left'] .air-datepicker--pointer { 685 | left: calc(100% - var(--pointer-half-size) + 1px) 686 | } 687 | 688 | .-left-top- .air-datepicker--pointer:after, 689 | .-left-center- .air-datepicker--pointer:after, 690 | .-left-bottom- .air-datepicker--pointer:after, 691 | [data-popper-placement^='left'] .air-datepicker--pointer:after { 692 | transform: rotate(45deg) 693 | } 694 | 695 | .-top-left- .air-datepicker--pointer, 696 | .-bottom-left- .air-datepicker--pointer { 697 | left: var(--adp-pointer-offset) 698 | } 699 | 700 | .-top-right- .air-datepicker--pointer, 701 | .-bottom-right- .air-datepicker--pointer { 702 | right: var(--adp-pointer-offset) 703 | } 704 | 705 | .-top-center- .air-datepicker--pointer, 706 | .-bottom-center- .air-datepicker--pointer { 707 | left: calc(50% - var(--adp-pointer-size) / 2) 708 | } 709 | 710 | .-left-top- .air-datepicker--pointer, 711 | .-right-top- .air-datepicker--pointer { 712 | top: var(--adp-pointer-offset) 713 | } 714 | 715 | .-left-bottom- .air-datepicker--pointer, 716 | .-right-bottom- .air-datepicker--pointer { 717 | bottom: var(--adp-pointer-offset) 718 | } 719 | 720 | .-left-center- .air-datepicker--pointer, 721 | .-right-center- .air-datepicker--pointer { 722 | top: calc(50% - var(--adp-pointer-size) / 2) 723 | } 724 | 725 | .air-datepicker--navigation { 726 | grid-area: nav 727 | } 728 | 729 | .air-datepicker--content { 730 | box-sizing: content-box; 731 | padding: var(--adp-padding); 732 | grid-area: body 733 | } 734 | 735 | .-only-timepicker- .air-datepicker--content { 736 | display: none 737 | } 738 | 739 | .air-datepicker--time { 740 | grid-area: timepicker 741 | } 742 | 743 | .air-datepicker--buttons { 744 | grid-area: buttons 745 | } 746 | 747 | .air-datepicker--buttons, 748 | .air-datepicker--time { 749 | padding: var(--adp-padding); 750 | border-top: 1px solid var(--adp-border-color-inner) 751 | } 752 | 753 | .air-datepicker-overlay { 754 | position: fixed; 755 | background: var(--adp-overlay-background-color); 756 | left: 0; 757 | top: 0; 758 | width: 0; 759 | height: 0; 760 | opacity: 0; 761 | transition: opacity var(--adp-overlay-transition-duration) var(--adp-overlay-transition-ease), left 0s, height 0s, width 0s; 762 | transition-delay: 0s, var(--adp-overlay-transition-duration), var(--adp-overlay-transition-duration), var(--adp-overlay-transition-duration); 763 | z-index: var(--adp-overlay-z-index) 764 | } 765 | 766 | .air-datepicker-overlay.-active- { 767 | opacity: 1; 768 | width: 100%; 769 | height: 100%; 770 | transition: opacity var(--adp-overlay-transition-duration) var(--adp-overlay-transition-ease), height 0s, width 0s 771 | } -------------------------------------------------------------------------------- /assets/css/air-datepicker.min.css: -------------------------------------------------------------------------------- 1 | .air-datepicker-cell{box-sizing:border-box;cursor:pointer;display:flex;position:relative;align-items:center;justify-content:center;z-index:1}.air-datepicker-cell.-current-.-focus-{color:var(--adp-color)}.air-datepicker-cell.-current-.-in-range-{color:var(--adp-color-current-date)}.air-datepicker-cell.-disabled-{cursor:default;color:var(--adp-color-disabled)}.air-datepicker-cell.-disabled-.-focus-{color:var(--adp-color-disabled)}.air-datepicker-cell.-disabled-.-in-range-{color:var(--adp-color-disabled-in-range)}.air-datepicker-cell.-disabled-.-current-.-focus-{color:var(--adp-color-disabled)}.air-datepicker-cell.-in-range-{background:var(--adp-cell-background-color-in-range);border-radius:0}.air-datepicker-cell.-in-range-:hover{background:var(--adp-cell-background-color-in-range-hover)}.air-datepicker-cell.-range-from-{border:1px solid var(--adp-cell-border-color-in-range);background-color:var(--adp-cell-background-color-in-range);border-radius:var(--adp-cell-border-radius) 0 0 var(--adp-cell-border-radius)}.air-datepicker-cell.-range-to-{border:1px solid var(--adp-cell-border-color-in-range);background-color:var(--adp-cell-background-color-in-range);border-radius:0 var(--adp-cell-border-radius) var(--adp-cell-border-radius) 0}.air-datepicker-cell.-range-to-.-range-from-{border-radius:var(--adp-cell-border-radius)}.air-datepicker-body{transition:all var(--adp-transition-duration) var(--adp-transition-ease)}.air-datepicker-body.-hidden-{display:none}.air-datepicker-body--day-names{display:grid;grid-template-columns:repeat(7,var(--adp-day-cell-width))}.air-datepicker-body--day-name{display:flex;align-items:center;justify-content:center;flex:1;text-align:center;text-transform:uppercase}.air-datepicker-body--day-name.-clickable-{cursor:pointer}.air-datepicker-body--day-name.-clickable-:hover{color:var(--adp-day-name-color-hover)}.air-datepicker-body--cells{display:grid}.air-datepicker-nav{display:flex;justify-content:space-between;box-sizing:content-box}.-only-timepicker- .air-datepicker-nav{display:none}.air-datepicker-nav--action,.air-datepicker-nav--title{display:flex;cursor:pointer;align-items:center;justify-content:center}.air-datepicker-nav--action{border-radius:var(--adp-border-radius);-webkit-user-select:none;-moz-user-select:none;user-select:none;width:24px;height:24px}.air-datepicker-nav--action.-disabled-{visibility:hidden}.air-datepicker-nav--action svg{width:24px;height:24px}.air-datepicker-nav--action path{fill:none;stroke:var(--adp-nav-arrow-color);stroke-width:2px}.air-datepicker-nav--title{border-radius:var(--adp-border-radius);padding:0 8px}.air-datepicker-nav--title i{font-style:normal;color:var(--adp-nav-color-secondary);margin-left:.3em}.air-datepicker-nav--title.-disabled-{cursor:default;background:0 0}.air-datepicker-buttons{display:grid;grid-auto-columns:1fr;grid-auto-flow:column}.air-datepicker-button{display:inline-flex;color:var(--adp-btn-color);border-radius:var(--adp-btn-border-radius);cursor:pointer;height:var(--adp-btn-height);border:none;background:rgba(255,255,255,0)}.air-datepicker-button:hover{color:var(--adp-btn-color-hover);background:var(--adp-btn-background-color-hover)}.air-datepicker-button:focus{color:var(--adp-btn-color-hover);background:var(--adp-btn-background-color-hover);outline:0}.air-datepicker-button:active{background:var(--adp-btn-background-color-active)}.air-datepicker-button span{outline:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.air-datepicker-time{display:grid;grid-template-columns:-webkit-max-content 1fr;grid-template-columns:max-content 1fr;grid-column-gap:12px;align-items:center;position:relative;padding:0 var(--adp-time-padding-inner)}.-only-timepicker- .air-datepicker-time{border-top:none}.air-datepicker-time--current{display:flex;align-items:center;flex:1;font-size:14px;text-align:center}.air-datepicker-time--current-colon{margin:0 2px 3px;line-height:1}.air-datepicker-time--current-hours,.air-datepicker-time--current-minutes{line-height:1;font-size:19px;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;position:relative;z-index:1}.air-datepicker-time--current-hours:after,.air-datepicker-time--current-minutes:after{content:'';background:var(--adp-background-color-hover);border-radius:var(--adp-border-radius);position:absolute;left:-2px;top:-3px;right:-2px;bottom:-2px;z-index:-1;opacity:0}.air-datepicker-time--current-hours.-focus-:after,.air-datepicker-time--current-minutes.-focus-:after{opacity:1}.air-datepicker-time--current-ampm{text-transform:uppercase;align-self:flex-end;color:var(--adp-time-day-period-color);margin-left:6px;font-size:11px;margin-bottom:1px}.air-datepicker-time--row{display:flex;align-items:center;font-size:11px;height:17px;background:linear-gradient(to right,var(--adp-time-track-color),var(--adp-time-track-color)) left 50%/100% var(--adp-time-track-height) no-repeat}.air-datepicker-time--row:first-child{margin-bottom:4px}.air-datepicker-time--row input[type=range]{background:0 0;cursor:pointer;flex:1;height:100%;width:100%;padding:0;margin:0;-webkit-appearance:none}.air-datepicker-time--row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none}.air-datepicker-time--row input[type=range]::-ms-tooltip{display:none}.air-datepicker-time--row input[type=range]:hover::-webkit-slider-thumb{border-color:var(--adp-time-track-color-hover)}.air-datepicker-time--row input[type=range]:hover::-moz-range-thumb{border-color:var(--adp-time-track-color-hover)}.air-datepicker-time--row input[type=range]:hover::-ms-thumb{border-color:var(--adp-time-track-color-hover)}.air-datepicker-time--row input[type=range]:focus{outline:0}.air-datepicker-time--row input[type=range]:focus::-webkit-slider-thumb{background:var(--adp-cell-background-color-selected);border-color:var(--adp-cell-background-color-selected)}.air-datepicker-time--row input[type=range]:focus::-moz-range-thumb{background:var(--adp-cell-background-color-selected);border-color:var(--adp-cell-background-color-selected)}.air-datepicker-time--row input[type=range]:focus::-ms-thumb{background:var(--adp-cell-background-color-selected);border-color:var(--adp-cell-background-color-selected)}.air-datepicker-time--row input[type=range]::-webkit-slider-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid var(--adp-time-track-color);background:#fff;cursor:pointer;-webkit-transition:background var(--adp-transition-duration);transition:background var(--adp-transition-duration)}.air-datepicker-time--row input[type=range]::-moz-range-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid var(--adp-time-track-color);background:#fff;cursor:pointer;-moz-transition:background var(--adp-transition-duration);transition:background var(--adp-transition-duration)}.air-datepicker-time--row input[type=range]::-ms-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid var(--adp-time-track-color);background:#fff;cursor:pointer;-ms-transition:background var(--adp-transition-duration);transition:background var(--adp-transition-duration)}.air-datepicker-time--row input[type=range]::-webkit-slider-thumb{margin-top:calc(var(--adp-time-thumb-size)/ 2 * -1)}.air-datepicker-time--row input[type=range]::-webkit-slider-runnable-track{border:none;height:var(--adp-time-track-height);cursor:pointer;color:transparent;background:0 0}.air-datepicker-time--row input[type=range]::-moz-range-track{border:none;height:var(--adp-time-track-height);cursor:pointer;color:transparent;background:0 0}.air-datepicker-time--row input[type=range]::-ms-track{border:none;height:var(--adp-time-track-height);cursor:pointer;color:transparent;background:0 0}.air-datepicker-time--row input[type=range]::-ms-fill-lower{background:0 0}.air-datepicker-time--row input[type=range]::-ms-fill-upper{background:0 0}.air-datepicker{--adp-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--adp-font-size:14px;--adp-width:246px;--adp-z-index:100;--adp-padding:4px;--adp-grid-areas:'nav' 'body' 'timepicker' 'buttons';--adp-transition-duration:.3s;--adp-transition-ease:ease-out;--adp-transition-offset:8px;--adp-background-color:#fff;--adp-background-color-hover:#f0f0f0;--adp-background-color-active:#eaeaea;--adp-background-color-in-range:rgba(92, 196, 239, .1);--adp-background-color-in-range-focused:rgba(92, 196, 239, .2);--adp-background-color-selected-other-month-focused:#8ad5f4;--adp-background-color-selected-other-month:#a2ddf6;--adp-color:#4a4a4a;--adp-color-secondary:#9c9c9c;--adp-accent-color:#4eb5e6;--adp-color-current-date:var(--adp-accent-color);--adp-color-other-month:#dedede;--adp-color-disabled:#aeaeae;--adp-color-disabled-in-range:#939393;--adp-color-other-month-hover:#c5c5c5;--adp-border-color:#dbdbdb;--adp-border-color-inner:#efefef;--adp-border-radius:4px;--adp-border-color-inline:#d7d7d7;--adp-nav-height:32px;--adp-nav-arrow-color:var(--adp-color-secondary);--adp-nav-action-size:32px;--adp-nav-color-secondary:var(--adp-color-secondary);--adp-day-name-color:#ff9a19;--adp-day-name-color-hover:#8ad5f4;--adp-day-cell-width:1fr;--adp-day-cell-height:32px;--adp-month-cell-height:42px;--adp-year-cell-height:56px;--adp-pointer-size:10px;--adp-poiner-border-radius:2px;--adp-pointer-offset:14px;--adp-cell-border-radius:4px;--adp-cell-background-color-hover:var(--adp-background-color-hover);--adp-cell-background-color-selected:#5cc4ef;--adp-cell-background-color-selected-hover:#45bced;--adp-cell-background-color-in-range:rgba(92, 196, 239, 0.1);--adp-cell-background-color-in-range-hover:rgba(92, 196, 239, 0.2);--adp-cell-border-color-in-range:var(--adp-cell-background-color-selected);--adp-btn-height:32px;--adp-btn-color:var(--adp-accent-color);--adp-btn-color-hover:var(--adp-color);--adp-btn-border-radius:var(--adp-border-radius);--adp-btn-background-color-hover:var(--adp-background-color-hover);--adp-btn-background-color-active:var(--adp-background-color-active);--adp-time-track-height:1px;--adp-time-track-color:#dedede;--adp-time-track-color-hover:#b1b1b1;--adp-time-thumb-size:12px;--adp-time-padding-inner:10px;--adp-time-day-period-color:var(--adp-color-secondary);--adp-mobile-font-size:16px;--adp-mobile-nav-height:40px;--adp-mobile-width:320px;--adp-mobile-day-cell-height:38px;--adp-mobile-month-cell-height:48px;--adp-mobile-year-cell-height:64px}.air-datepicker-overlay{--adp-overlay-background-color:rgba(0, 0, 0, .3);--adp-overlay-transition-duration:.3s;--adp-overlay-transition-ease:ease-out;--adp-overlay-z-index:99}.air-datepicker{background:var(--adp-background-color);box-sizing:content-box;display:grid;grid-template-columns:1fr;grid-template-rows:repeat(4,-webkit-max-content);grid-template-rows:repeat(4,max-content);grid-template-areas:var(--adp-grid-areas);font-family:var(--adp-font-family),sans-serif;font-size:var(--adp-font-size);color:var(--adp-color);position:absolute;transition:opacity var(--adp-transition-duration) var(--adp-transition-ease),transform var(--adp-transition-duration) var(--adp-transition-ease);z-index:var(--adp-z-index)}.air-datepicker:not(.-custom-position-){opacity:0}.air-datepicker.-from-top-{transform:translateY(calc(var(--adp-transition-offset) * -1))}.air-datepicker.-from-right-{transform:translateX(var(--adp-transition-offset))}.air-datepicker.-from-bottom-{transform:translateY(var(--adp-transition-offset))}.air-datepicker.-from-left-{transform:translateX(calc(var(--adp-transition-offset) * -1))}.air-datepicker.-active-:not(.-custom-position-){transform:translate(0,0);opacity:1}.air-datepicker.-active-.-custom-position-{transition:none}.air-datepicker.-inline-{border-color:var(--adp-border-color-inline);box-shadow:none;position:static;left:auto;right:auto;opacity:1;transform:none}.air-datepicker.-inline- .air-datepicker--pointer{display:none}.air-datepicker.-is-mobile-{--adp-font-size:var(--adp-mobile-font-size);--adp-day-cell-height:var(--adp-mobile-day-cell-height);--adp-month-cell-height:var(--adp-mobile-month-cell-height);--adp-year-cell-height:var(--adp-mobile-year-cell-height);--adp-nav-height:var(--adp-mobile-nav-height);--adp-nav-action-size:var(--adp-mobile-nav-height);position:fixed;width:var(--adp-mobile-width);border:none}.air-datepicker.-is-mobile- *{-webkit-tap-highlight-color:transparent}.air-datepicker.-is-mobile- .air-datepicker--pointer{display:none}.air-datepicker.-is-mobile-:not(.-custom-position-){transform:translate(-50%,calc(-50% + var(--adp-transition-offset)))}.air-datepicker.-is-mobile-.-active-:not(.-custom-position-){transform:translate(-50%,-50%)}.air-datepicker.-custom-position-{transition:none}.air-datepicker-global-container{position:absolute;left:0;top:0}.air-datepicker--pointer{--pointer-half-size:calc(var(--adp-pointer-size) / 2);position:absolute;width:var(--adp-pointer-size);height:var(--adp-pointer-size);z-index:-1;display:none}.air-datepicker--pointer:after{content:'';position:absolute;background:#fff;border-top:1px solid var(--adp-border-color-inline);border-right:1px solid var(--adp-border-color-inline);border-top-right-radius:var(--adp-poiner-border-radius);width:var(--adp-pointer-size);height:var(--adp-pointer-size);box-sizing:border-box}.-top-center- .air-datepicker--pointer,.-top-left- .air-datepicker--pointer,.-top-right- .air-datepicker--pointer,[data-popper-placement^=top] .air-datepicker--pointer{top:calc(100% - var(--pointer-half-size) + 1px)}.-top-center- .air-datepicker--pointer:after,.-top-left- .air-datepicker--pointer:after,.-top-right- .air-datepicker--pointer:after,[data-popper-placement^=top] .air-datepicker--pointer:after{transform:rotate(135deg)}.-right-bottom- .air-datepicker--pointer,.-right-center- .air-datepicker--pointer,.-right-top- .air-datepicker--pointer,[data-popper-placement^=right] .air-datepicker--pointer{right:calc(100% - var(--pointer-half-size) + 1px)}.-right-bottom- .air-datepicker--pointer:after,.-right-center- .air-datepicker--pointer:after,.-right-top- .air-datepicker--pointer:after,[data-popper-placement^=right] .air-datepicker--pointer:after{transform:rotate(225deg)}.-bottom-center- .air-datepicker--pointer,.-bottom-left- .air-datepicker--pointer,.-bottom-right- .air-datepicker--pointer,[data-popper-placement^=bottom] .air-datepicker--pointer{bottom:calc(100% - var(--pointer-half-size) + 1px)}.-bottom-center- .air-datepicker--pointer:after,.-bottom-left- .air-datepicker--pointer:after,.-bottom-right- .air-datepicker--pointer:after,[data-popper-placement^=bottom] .air-datepicker--pointer:after{transform:rotate(315deg)}.-left-bottom- .air-datepicker--pointer,.-left-center- .air-datepicker--pointer,.-left-top- .air-datepicker--pointer,[data-popper-placement^=left] .air-datepicker--pointer{left:calc(100% - var(--pointer-half-size) + 1px)}.-left-bottom- .air-datepicker--pointer:after,.-left-center- .air-datepicker--pointer:after,.-left-top- .air-datepicker--pointer:after,[data-popper-placement^=left] .air-datepicker--pointer:after{transform:rotate(45deg)}.-bottom-left- .air-datepicker--pointer,.-top-left- .air-datepicker--pointer{left:var(--adp-pointer-offset)}.-bottom-right- .air-datepicker--pointer,.-top-right- .air-datepicker--pointer{right:var(--adp-pointer-offset)}.-bottom-center- .air-datepicker--pointer,.-top-center- .air-datepicker--pointer{left:calc(50% - var(--adp-pointer-size)/ 2)}.-left-top- .air-datepicker--pointer,.-right-top- .air-datepicker--pointer{top:var(--adp-pointer-offset)}.-left-bottom- .air-datepicker--pointer,.-right-bottom- .air-datepicker--pointer{bottom:var(--adp-pointer-offset)}.-left-center- .air-datepicker--pointer,.-right-center- .air-datepicker--pointer{top:calc(50% - var(--adp-pointer-size)/ 2)}.air-datepicker--navigation{grid-area:nav}.air-datepicker--content{box-sizing:content-box;padding:var(--adp-padding);grid-area:body}.-only-timepicker- .air-datepicker--content{display:none}.air-datepicker--time{grid-area:timepicker}.air-datepicker--buttons{grid-area:buttons}.air-datepicker--buttons,.air-datepicker--time{padding:var(--adp-padding);border-top:1px solid var(--adp-border-color-inner)}.air-datepicker-overlay{position:fixed;background:var(--adp-overlay-background-color);left:0;top:0;width:0;height:0;opacity:0;transition:opacity var(--adp-overlay-transition-duration) var(--adp-overlay-transition-ease),left 0s,height 0s,width 0s;transition-delay:0s,var(--adp-overlay-transition-duration),var(--adp-overlay-transition-duration),var(--adp-overlay-transition-duration);z-index:var(--adp-overlay-z-index)}.air-datepicker-overlay.-active-{opacity:1;width:100%;height:100%;transition:opacity var(--adp-overlay-transition-duration) var(--adp-overlay-transition-ease),height 0s,width 0s} -------------------------------------------------------------------------------- /assets/fonts/inter-v12-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/fonts/inter-v12-latin-500.woff2 -------------------------------------------------------------------------------- /assets/fonts/inter-v12-latin-600.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/fonts/inter-v12-latin-600.woff2 -------------------------------------------------------------------------------- /assets/fonts/inter-v12-latin-800.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/fonts/inter-v12-latin-800.woff2 -------------------------------------------------------------------------------- /assets/fonts/inter-v12-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/fonts/inter-v12-latin-regular.woff2 -------------------------------------------------------------------------------- /assets/images/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/apple-touch-icon.png -------------------------------------------------------------------------------- /assets/images/banner-1280x640.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/banner-1280x640.png -------------------------------------------------------------------------------- /assets/images/banner-1544x500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/banner-1544x500.png -------------------------------------------------------------------------------- /assets/images/banner-772x250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/banner-772x250.png -------------------------------------------------------------------------------- /assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/favicon.ico -------------------------------------------------------------------------------- /assets/images/icon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-128.png -------------------------------------------------------------------------------- /assets/images/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-128x128.png -------------------------------------------------------------------------------- /assets/images/icon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-16.png -------------------------------------------------------------------------------- /assets/images/icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-192.png -------------------------------------------------------------------------------- /assets/images/icon-196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-196.png -------------------------------------------------------------------------------- /assets/images/icon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-256.png -------------------------------------------------------------------------------- /assets/images/icon-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-256x256.png -------------------------------------------------------------------------------- /assets/images/icon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-32.png -------------------------------------------------------------------------------- /assets/images/icon-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-48.png -------------------------------------------------------------------------------- /assets/images/icon-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-96.png -------------------------------------------------------------------------------- /assets/images/icon-og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-og.png -------------------------------------------------------------------------------- /assets/images/icon-rounded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-rounded.png -------------------------------------------------------------------------------- /assets/images/icon-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/icon-square.png -------------------------------------------------------------------------------- /assets/images/illustration-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/illustration-1.png -------------------------------------------------------------------------------- /assets/images/illustration-els.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/illustration-els.png -------------------------------------------------------------------------------- /assets/images/illustration-og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/illustration-og.png -------------------------------------------------------------------------------- /assets/images/screenshot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/screenshot-1.png -------------------------------------------------------------------------------- /assets/images/screenshot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pub-calculator-io/ovulation-calculator/7aa3a0c120755ded6d1ad41212b819bafe40ba7b/assets/images/screenshot-2.png -------------------------------------------------------------------------------- /assets/js/app.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | window._ = document.getElementById.bind(document); 4 | window.$ = document.querySelector.bind(document); 5 | window.$$ = document.querySelectorAll.bind(document); 6 | 7 | console.log('Script is OK! ༼ つ ◕_◕ ༽つ') 8 | // IS MAIN PAGE 9 | // if(window.location.pathname === '/') document.body.classList.add('isMainPage') 10 | 11 | // DIALOG TABLE 12 | if(document.querySelector('.result-table__dialog')) { 13 | import('./dialog-table.js').then(e => { 14 | console.log("Dialog table loaded (づ ◕‿◕ )づ") 15 | }).catch(e => { 16 | console.log("Sorry, dialog tables not loaded (ಥ﹏ಥ)", e) 17 | }) 18 | } 19 | // MASK 20 | if(document.querySelector('[data-inputmask]')) { 21 | import('./mask.js').then(e => { 22 | console.log("Mask loaded (づ ◕‿◕ )づ") 23 | }).catch(e => { 24 | console.log("Sorry, masks not loaded (ಥ﹏ಥ)", e) 25 | }) 26 | } 27 | // DATEPICKER 28 | if(document.querySelector('.datepicker')) { 29 | import('./datepicker.js').then(e => { 30 | console.log("Datepicker loaded (づ ◕‿◕ )づ") 31 | }).catch(e => { 32 | console.log("Sorry, datepicker not loaded (ಥ﹏ಥ)", e) 33 | }) 34 | } 35 | // TIMEPICKER 36 | if(document.querySelector('.timepicker-input')) { 37 | import('./timepicker.js').then(e => { 38 | console.log("Timepicker loaded (づ ◕‿◕ )づ") 39 | }).catch(e => { 40 | console.log("Sorry, timepicker not loaded (ಥ﹏ಥ)", e) 41 | }) 42 | } 43 | // HOURPICKER 44 | if(document.querySelector('.hourpicker-input')) { 45 | import('./hourpicker.js').then(e => { 46 | console.log("Hourpicker loaded (づ ◕‿◕ )づ") 47 | }).catch(e => { 48 | console.log("Sorry, Hourpicker not loaded (ಥ﹏ಥ)", e) 49 | }) 50 | } 51 | // OPTIONS 52 | if(document.querySelector('.calculator-content--options')) { 53 | import('./options.js').then(e => { 54 | console.log("Options loaded (づ ◕‿◕ )づ") 55 | }).catch(e => { 56 | console.log("Sorry, options not loaded (ಥ﹏ಥ)", e) 57 | }) 58 | } 59 | // ICON DROPDOWN 60 | if(document.querySelector('.dropdown-icon')) { 61 | import('./dropdown-icon.js').then(e => { 62 | console.log("Dropdown-icon loaded (づ ◕‿◕ )づ") 63 | }).catch(e => { 64 | console.log("Sorry, dropdown-icon not loaded (ಥ﹏ಥ)", e) 65 | }) 66 | } 67 | 68 | // MODAL 69 | const MODAL_OPENERS = document.querySelectorAll('.js-modal-open') 70 | const MODAL_CLOSERS = document.querySelectorAll('.js-modal-close') 71 | const MODAL_WINDOW = document.querySelector('.modal-window') 72 | 73 | let currentShare = 0 74 | let isOpenPopupHeader = false; 75 | let focusedElement = 0; 76 | 77 | const closeAll = () => { 78 | MODAL_SEARCH.value = '' 79 | MODAL_SEARCH_LIST.classList.remove('modal-search__list--error') 80 | MODAL_SEARCH_LIST.classList.remove('modal-search__list--active') 81 | MODAL_OPENERS.forEach(MODAL_OPENER => { 82 | const MODAL_ID = MODAL_OPENER.getAttribute('data-modal') 83 | const MODAL = document.querySelector(`.modal-${MODAL_ID}`) 84 | MODAL.classList.remove(`modal-${MODAL_ID}--active`) 85 | }) 86 | } 87 | 88 | window.addEventListener('click', (e) => { 89 | let controllerTheme = document.querySelector('#popup-theme') 90 | let controllerLang = document.querySelector('#popup-lang') 91 | if(isOpenPopupHeader && !(e.composedPath().includes(controllerLang) || e.composedPath().includes(controllerTheme))) { 92 | isOpenPopupHeader = false 93 | document.querySelector('.modal-lang--active')?.classList.remove(`modal-lang--active`) 94 | document.querySelector('.modal-theme--active')?.classList.remove(`modal-theme--active`) 95 | } 96 | }) 97 | 98 | window.addEventListener('keydown', (e) => { 99 | if(e.key === 'Escape') { 100 | MODAL_WINDOW.classList.remove('modal-window--active') 101 | closeAll() 102 | } 103 | 104 | if((e.metaKey && e.key === 'k') || (e.ctrlKey && e.key === 'k')) { 105 | closeAll(); 106 | $('.modal-search__input').focus(); 107 | MODAL_WINDOW.classList.add(`modal-window--active`) 108 | $('.modal-search').classList.toggle(`modal-search--active`); 109 | } 110 | 111 | if(!MODAL_WINDOW) return; 112 | 113 | if(e.key === 'ArrowUp') { 114 | let listItem = [...MODAL_SEARCH_LIST_CONTENT.children] 115 | if(focusedElement - 1 < 0) { 116 | focusedElement = listItem.length - 1 117 | } else { 118 | focusedElement-- 119 | } 120 | listItem[focusedElement]?.focus() 121 | // listItem[focusedElement].scrollIntoView(true) 122 | } 123 | 124 | if(e.key === 'ArrowDown') { 125 | let listItem = [...MODAL_SEARCH_LIST_CONTENT.children] 126 | listItem[focusedElement]?.focus() 127 | if(focusedElement + 1 > listItem.length - 1) { 128 | focusedElement = 0 129 | } else { 130 | focusedElement++ 131 | } 132 | } 133 | }) 134 | 135 | if(MODAL_WINDOW) { 136 | MODAL_WINDOW.addEventListener('click', (e) => { 137 | if(e.target.classList.contains('modal-window')) { 138 | MODAL_WINDOW.classList.remove(`modal-window--active`) 139 | MODAL_WINDOW.classList.remove(`modal-window--active-mini`) 140 | closeAll() 141 | } 142 | }) 143 | } 144 | if(MODAL_OPENERS.length > 0) { 145 | MODAL_OPENERS.forEach(MODAL_OPENER => { 146 | MODAL_OPENER.addEventListener('click', () => { 147 | const MODAL_ID = MODAL_OPENER.getAttribute('data-modal') 148 | const MODAL = document.querySelector(`.modal-${MODAL_ID}`) 149 | 150 | closeAll(); 151 | 152 | if(MODAL_ID !== 'lang' && MODAL_ID !== 'theme') MODAL_WINDOW.classList.toggle(`modal-window--active`) 153 | else isOpenPopupHeader = true 154 | 155 | if(MODAL_ID === 'search') document.querySelector('.modal-search__input').focus() 156 | if(MODAL_ID === 'share') { 157 | console.log($('.modal-share__textarea').value) 158 | $$('.modal-share__textarea')[currentShare].focus() 159 | $$('.modal-share__textarea')[currentShare].setSelectionRange(0, $$('.modal-share__textarea')[currentShare].value.length) 160 | } 161 | 162 | MODAL.classList.toggle(`modal-${MODAL_ID}--active`) 163 | }) 164 | }) 165 | } 166 | if(MODAL_CLOSERS.length > 0) { 167 | MODAL_CLOSERS.forEach(MODAL_CLOSER => { 168 | MODAL_CLOSER.addEventListener('click', () => { 169 | const MODAL_ID = MODAL_CLOSER.getAttribute('data-modal') 170 | const MODAL = document.querySelector(`.modal-${MODAL_ID}`) 171 | 172 | closeAll(); 173 | 174 | if(MODAL_ID !== 'lang' && MODAL_ID !== 'theme') MODAL_WINDOW.classList.toggle(`modal-window--active`) 175 | else isOpenPopupHeader = true 176 | 177 | MODAL.classList.remove(`modal-${MODAL_ID}--active`) 178 | }) 179 | }) 180 | } 181 | 182 | // THEME 183 | const light = document.querySelectorAll('.light-theme'); 184 | const dark = document.querySelectorAll('.dark-theme'); 185 | const system = document.querySelectorAll('.system-theme'); 186 | 187 | light.forEach((i) => 188 | i.addEventListener('click', () => { 189 | document.documentElement.classList = ''; 190 | localStorage.setItem('theme', 'light'); 191 | setActiveThemeButton('light') 192 | if(switchTheme !== null) { 193 | if(typeof switchTheme === 'object') { 194 | switchTheme.forEach(element => element('light')) 195 | } else { 196 | switchTheme('light') 197 | } 198 | } 199 | }), 200 | ); 201 | dark.forEach((i) => 202 | i.addEventListener('click', () => { 203 | document.documentElement.classList = 'dark'; 204 | localStorage.setItem('theme', 'dark'); 205 | setActiveThemeButton('dark') 206 | if(switchTheme !== null) { 207 | if(typeof switchTheme === 'object') { 208 | switchTheme.forEach(element => element('dark')) 209 | } else { 210 | switchTheme('dark') 211 | } 212 | } 213 | }), 214 | ); 215 | system.forEach((i) => 216 | i.addEventListener('click', () => { 217 | document.documentElement.classList = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : ''; 218 | localStorage.setItem('theme', 'system'); 219 | setActiveThemeButton('system') 220 | if(switchTheme !== null) { 221 | if(typeof switchTheme === 'object') { 222 | switchTheme.forEach(element => element(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')) 223 | } else { 224 | switchTheme(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') 225 | } 226 | } 227 | }), 228 | ); 229 | 230 | // SEARCH 231 | const MODAL_SEARCH = document.querySelector('.modal-search__input') 232 | const MODAL_SEARCH_LIST = document.querySelector('.modal-search__list') 233 | const MODAL_SEARCH_LIST_CONTENT = document.querySelector('.modal-search__list-content') 234 | 235 | if(MODAL_SEARCH) MODAL_SEARCH.addEventListener('input', (e) => { 236 | focusedElement = 0 237 | if(e.target.value.length > 0) { 238 | const FILTERED_JSON = JSON_CALCULATORS.filter(CALCULATOR => { 239 | return (CALCULATOR.description.toLowerCase().match(e.target.value.toLowerCase()) !== null) || 240 | CALCULATOR.title.toLowerCase().match(e.target.value.toLowerCase()) !== null; 241 | }) 242 | if(FILTERED_JSON.length > 0) { 243 | MODAL_SEARCH_LIST.classList.remove('modal-search__list--error') 244 | MODAL_SEARCH_LIST.classList.add('modal-search__list--active') 245 | MODAL_SEARCH_LIST_CONTENT.innerHTML = '' 246 | FILTERED_JSON.forEach(CALCULATOR => { 247 | let calculatorWrapper = document.createElement('a') 248 | calculatorWrapper.classList.add('modal-search-item') 249 | calculatorWrapper.href = CALCULATOR.uri 250 | 251 | let calculatorImg = document.createElement('img') 252 | calculatorImg.classList.add('modal-search-item__img') 253 | calculatorImg.src = CALCULATOR.image 254 | 255 | let calculatorTitle = document.createElement('span') 256 | calculatorTitle.classList.add('modal-search-item__text') 257 | calculatorTitle.innerText = CALCULATOR.title 258 | 259 | calculatorWrapper.append(calculatorImg, calculatorTitle) 260 | MODAL_SEARCH_LIST_CONTENT.append(calculatorWrapper) 261 | }) 262 | } else { 263 | MODAL_SEARCH_LIST_CONTENT.innerHTML = '' 264 | MODAL_SEARCH_LIST.classList.remove('modal-search__list--active') 265 | MODAL_SEARCH_LIST.classList.add('modal-search__list--error') 266 | } 267 | } else { 268 | MODAL_SEARCH_LIST_CONTENT.innerHTML = '' 269 | MODAL_SEARCH_LIST.classList.remove('modal-search__list--active') 270 | MODAL_SEARCH_LIST.classList.remove('modal-search__list--error') 271 | } 272 | }) 273 | 274 | // LANG 275 | const LANG_SELECTS = document.querySelectorAll('.header-lang__select') 276 | 277 | if (LANG_SELECTS){ 278 | let langIsEng = true 279 | 280 | for (const LANG_SELECT of LANG_SELECTS) { 281 | if(LANG_SELECT.innerText !== 'ENG' && window.location.href.match(LANG_SELECT.href) !== null) { 282 | LANG_SELECT.classList.add('header-lang__select--active') 283 | langIsEng = false 284 | } 285 | } 286 | 287 | if(langIsEng) LANG_SELECTS[0]?.classList?.add('header-lang__select--active') 288 | } 289 | 290 | // SHARE 291 | $$('.modal-share__button').forEach((button,index) => { 292 | button.addEventListener('click', () => { 293 | $$('.modal-share__button').forEach(i => i.classList.remove('modal-share__button--active')) 294 | $$('.modal-share__content').forEach(i => i.classList.remove('modal-share__content--active')) 295 | button.classList.add('modal-share__button--active') 296 | $$('.modal-share__content')[index].classList.add('modal-share__content--active') 297 | $$('.modal-share__textarea')[index].setSelectionRange(0, $$('.modal-share__textarea')[index].value.length) 298 | currentShare = index 299 | }) 300 | }) 301 | 302 | window.copyWidget = function (button) { 303 | button.classList.add('button--copy-active') 304 | navigator.clipboard.writeText($$('.modal-share__textarea')[currentShare].value) 305 | setTimeout(() => { 306 | button.classList.remove('button--copy-active') 307 | }, 1000) 308 | } 309 | 310 | window.now = function (suffix = 0){ 311 | let date = new Date(); 312 | date.setDate(date.getDate() + suffix); 313 | return ("0" + date.getHours()).slice(-2) + ':' + ("0" + date.getMinutes()).slice(-2) + ':' + ("0" + date.getSeconds()).slice(-2) 314 | } 315 | 316 | if(window.innerWidth < 1024){ 317 | $$('.calculator-content .button--primary').forEach((button) => { 318 | button.addEventListener('click', () => { 319 | let scrollValue = _('result-container').offsetTop; 320 | window.scrollTo({ top: scrollValue, behavior: 'smooth'}); 321 | }) 322 | }); 323 | } 324 | -------------------------------------------------------------------------------- /assets/js/calculator.js: -------------------------------------------------------------------------------- 1 | function calculate(){ 2 | const firstDay = input.get('first_day').date().raw(); 3 | let cyclesLength = input.get('avg_cycles_length').index().val(); 4 | if(!input.valid()) return; 5 | cyclesLength = cyclesLength + 22; 6 | const ovulationWindow = calculateOvulationWindow(cyclesLength, firstDay); 7 | const mostProbableOvulationDay = new Date(ovulationWindow.startDate); 8 | mostProbableOvulationDay.setDate(mostProbableOvulationDay.getDate() + 2); 9 | 10 | const intercourseDay = new Date(ovulationWindow.startDate); 11 | intercourseDay.setDate(intercourseDay.getDate() - 3); 12 | 13 | const testDay = new Date(ovulationWindow.endDate); 14 | testDay.setDate(testDay.getDate() + 7); 15 | 16 | const nextPeriod = new Date(firstDay); 17 | nextPeriod.setDate(nextPeriod.getDate() + cyclesLength); 18 | 19 | output.val(formattedDate(ovulationWindow.startDate) + ' - ' + formattedDate(ovulationWindow.endDate)).set('ovulation-window'); 20 | output.val(formattedDate(intercourseDay) + ' - ' + formattedDate(ovulationWindow.endDate)).set('intercourse-window'); 21 | output.val(formattedDate(mostProbableOvulationDay)).set('most-probable'); 22 | output.val(formattedDate(testDay)).set('test-day'); 23 | output.val(formattedDate(nextPeriod)).set('next-period'); 24 | 25 | let estimationTable = ''; 26 | for(let i = 1; i <= 6; i++){ 27 | let date = new Date(firstDay); 28 | date.setDate(date.getDate() + (cyclesLength * (i - 1))); 29 | let ovulationWin = calculateOvulationWindow(cyclesLength, date); 30 | let dueDate = new Date(date); 31 | dueDate.setDate(dueDate.getDate() + cyclesLength - 28 + 280); 32 | estimationTable += `
Hour
22 | 23 |:
25 |Minute
27 | 28 |(parentContext: P, context: T): P extends null ? T : P & T;
339 |
340 | /**
341 | * @alias Chart.helpers.math
342 | * @namespace
343 | */
344 | declare const PI: number;
345 | declare const TAU: number;
346 | declare const PITAU: number;
347 | declare const INFINITY: number;
348 | declare const RAD_PER_DEG: number;
349 | declare const HALF_PI: number;
350 | declare const QUARTER_PI: number;
351 | declare const TWO_THIRDS_PI: number;
352 | declare const log10: (x: number) => number;
353 | declare const sign: (x: number) => number;
354 | declare function almostEquals(x: number, y: number, epsilon: number): boolean;
355 | /**
356 | * Implementation of the nice number algorithm used in determining where axis labels will go
357 | */
358 | declare function niceNum(range: number): number;
359 | /**
360 | * Returns an array of factors sorted from 1 to sqrt(value)
361 | * @private
362 | */
363 | declare function _factorize(value: number): number[];
364 | declare function isNumber(n: unknown): n is number;
365 | declare function almostWhole(x: number, epsilon: number): boolean;
366 | /**
367 | * @private
368 | */
369 | declare function _setMinAndMaxByKey(array: Record Hour : Minute : Second There was an error with your calculation. Jun 2023 M T W T F S S 29 30 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 6 7 8 9 {
4 | const OPTION_HEAD = option.querySelector('.calculator-content-head')
5 |
6 | OPTION_HEAD.addEventListener('click', (event) => {
7 |
8 | if(!event.composedPath().includes($('.js-add-button'))) {
9 | option.classList.toggle('calculator-content--active')
10 | }
11 | })
12 | })
--------------------------------------------------------------------------------
/assets/js/themes.js:
--------------------------------------------------------------------------------
1 | const setActiveThemeButton = (theme) => {
2 | document.querySelectorAll('.header-popup__button').forEach(button => {
3 | if(button.classList.contains(`${theme}-theme`)) button.classList.add('header-popup__button--active')
4 | else button.classList.remove('header-popup__button--active')
5 | })
6 | }
7 |
8 | switch (localStorage.getItem('theme')) {
9 | case 'light':
10 | document.documentElement.classList = '';
11 | console.log('Theme: Light');
12 | localStorage.setItem('theme', 'light');
13 | window.addEventListener('DOMContentLoaded', () => {
14 | setActiveThemeButton('light')
15 | })
16 | break;
17 | case 'dark':
18 | document.documentElement.classList = 'dark';
19 | console.log('Theme: Dark');
20 | localStorage.setItem('theme', 'dark');
21 | window.addEventListener('DOMContentLoaded', () => {
22 | setActiveThemeButton('dark')
23 | })
24 | break;
25 | case 'system':
26 | default:
27 | document.documentElement.classList = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : '';
28 | console.log('Theme: System');
29 | localStorage.setItem('theme', 'system');
30 | window.addEventListener('DOMContentLoaded', () => {
31 | setActiveThemeButton('system')
32 | })
33 | }
--------------------------------------------------------------------------------
/assets/js/timepicker.js:
--------------------------------------------------------------------------------
1 | const INPUTS = $$('.timepicker-input');
2 | let timepickerFormat = true
3 | let currentInput = {
4 | input: null,
5 | hour: null,
6 | minute: null,
7 | second: null,
8 | }
9 |
10 | function createTimepicker() {
11 | const TIMEPICKER = document.createElement('div');
12 | const {top, left} = currentInput.input.getBoundingClientRect()
13 | const {offsetHeight} = currentInput.input
14 | const VALUE = currentInput.input.value.split(':')
15 |
16 | TIMEPICKER.classList.add('timepicker');
17 | TIMEPICKER.innerHTML = `
18 | Ovulation Calculator';
20 | }
21 |
22 |
23 | add_shortcode( 'ci_ovulation_calculator', 'display_calcio_ci_ovulation_calculator' );
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
182 |
183 |
207 |
184 |
187 |
188 |
189 | Ovulation Window
185 | Jun 13, 2023 - Jun 17, 2023
186 |
190 |
193 | Most Probable Ovulation Date
191 | Jun 15, 2023
192 |
194 |
197 | Intercourse Window for Pregnancy
195 | Jun 10, 2023 - Jun 17, 2023
196 |
198 |
201 | Pregnancy Test
199 | Jun 24, 2023
200 |
202 |
205 |
206 | Next Period Start
203 | Jun 29, 2023
204 |
267 |
268 |
319 |
269 |
271 |
272 |
273 | ESTIMATIONS FOR THE NEXT 6 CYCLES
270 |
274 |
279 |
280 |
281 |
275 | Period Start
276 | Ovulation Window
277 | Due Date
278 |
282 |
287 | 1
283 | Jun 1, 2023
284 | Jun 13, 2023 - Jun 17, 2023
285 | Marc 7, 2024
286 |
288 |
293 | 2
289 | Jun 29, 2023
290 | Jul 11, 2023 - Jul 15, 2023
291 | Apr 4, 2024
292 |
294 |
299 | 3
295 | Jul 27, 2023
296 | Aug 8, 2023 - Aug 12, 2023
297 | May 2, 2024
298 |
300 |
305 | 4
301 | Aug 24, 2023
302 | Sep 5, 2023 - Sep 9, 2023
303 | May 30, 2024
304 |
306 |
311 | 5
307 | Sep 21, 2023
308 | Oct 3, 2023 - Oct 7, 2023
309 | Jun 27, 2024
310 |
312 |
317 |
318 | 6
313 | Oct 19, 2023
314 | Oct 31, 2023 - Nov 4, 2023
315 | Jul 25, 2024
316 | Ovulation Calculator';
20 | }
21 |
22 | add_shortcode( 'ci_ovulation_calculator', 'display_ci_ovulation_calculator' );
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # Ovulation Calculator Widget for WordPress
2 |
3 | Not sure when you’re ovulating? Use this free ovulation calculator to estimate your most fertile days and know when you are most likely to conceive.
4 |
5 | 
6 |
7 | ## Installation
8 |
9 | 1. [Download](https://github.com/pub-calculator-io/ovulation-calculator/archive/refs/heads/master.zip) the ZIP file of this repository.
10 | 2. Upload the /ovulation-calculator-master/ folder to the /wp-content/plugins/ directory.
11 | 3. Activate the [Ovulation Calculator](https://www.calculator.io/ovulation-calculator/ "Ovulation Calculator Homepage") plugin through the "Plugins" menu in WordPress.
12 |
13 | ## Usage
14 | * Add the shortcode `[ci_ovulation_calculator]` to your page, post or sidebar.
15 | * Or add the following code: `` to your template where you would like the Ovulation Calculator to appear.
16 |
17 | ## Libraries in Use
18 | 1. https://mathjs.org/
19 | 2. https://katex.org/
20 | 3. https://github.com/aFarkas/lazysizes
21 | 4. https://github.com/RobinHerbots/Inputmask
22 | 5. https://air-datepicker.com/
23 | 6. https://www.chartjs.org/
24 |
--------------------------------------------------------------------------------
/readme.txt:
--------------------------------------------------------------------------------
1 | === CI Ovulation calculator ===
2 | Contributors: calculatorio
3 | Tags: ovulation calculator, fertile days, menstrual cycle, fertility calculator, conception calculator, pregnancy planning, ovulation prediction, pregnancy calculator, menstrual period, ovulation date
4 | Requires at least: 5.0
5 | Tested up to: 6.4.0
6 | Stable tag: 1.0.0
7 | License: GPLv2 or later
8 | License URI: https://www.gnu.org/licenses/gpl-2.0.html
9 |
10 | Not sure when you’re ovulating? Use this free ovulation calculator to estimate your most fertile days and know when you are most likely to conceive.
11 |
12 | [https://www.calculator.io/ovulation-calculator/](https://www.calculator.io/ovulation-calculator/)
13 |
14 | == Usage ==
15 |
16 | Add the Ovulation Calculator shortcode to your page, post or sidebar:
17 |
18 | `[ci_ovulation_calculator]`
19 |
20 | Add the following code to your template where you would like the Ovulation Calculator to appear:
21 |
22 | ``
23 |
24 | == Screenshots ==
25 |
26 | 1. The Ovulation Calculator Input Form.
27 |
28 | == Installation ==
29 |
30 | 1. Upload the Ovulation Calculator /ci_ovulation_calculator/ folder to the /wp-content/plugins/ directory.
31 | 2. Activate the Ovulation Calculator plugin through the "Plugins" menu in WordPress.
32 |
33 | == Changelog ==
34 |
35 | = 1.0.0 =
36 | * Initial release of Ovulation Calculator
37 |
--------------------------------------------------------------------------------