Merge 3bd2b294a6 into a6ae2d9db7
26
.gitignore
vendored
|
|
@ -1,2 +1,24 @@
|
|||
/.mypy_cache/
|
||||
/.ruff_cache/
|
||||
# build output
|
||||
dist/
|
||||
# generated types
|
||||
.astro/
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
# logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
|
||||
# environment variables
|
||||
.env
|
||||
.env.production
|
||||
|
||||
# macOS-specific files
|
||||
.DS_Store
|
||||
|
||||
# jetbrains setting folder
|
||||
.idea/
|
||||
|
|
|
|||
53
AGENTS.md
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# Repository Guidelines
|
||||
|
||||
## Project Structure & Modules
|
||||
|
||||
- `src/`: Astro app — `pages/` (locale folders: `fr/`, `en/`), `layouts/`, `styles/`.
|
||||
- `src/i18n/routes.ts`: central route manifest (`hrefFor`, `siblingPath`) for FR/EN
|
||||
slugs.
|
||||
- `public/`: static assets and redirects (`_redirects`, `assets/images`, `webfonts`,
|
||||
etc.).
|
||||
- `docs/spec/website-revamp-spec.md`: product/UX spec and release plan (source of
|
||||
truth).
|
||||
- Legacy: `lib/`, `pages/`, `data/` (Python generator) — deprecated; do not modify.
|
||||
|
||||
## Build, Test, and Development
|
||||
|
||||
- Setup: `corepack enable && pnpm i` (uses `pnpm@10`).
|
||||
- Dev server: `pnpm dev` (Astro). Build: `pnpm build`. Preview: `pnpm preview`.
|
||||
- Deploy: Netlify (static). Redirects in `public/_redirects` (root → `/fr/`).
|
||||
- Analytics: Plausible (`plausible("event", {props})`).
|
||||
|
||||
## Coding Style & Conventions
|
||||
|
||||
- UI: Tailwind CSS v4 (brand tokens: `--color-brand`, `--color-brand-600`).
|
||||
- Icons: `lucide-astro` inline SVGs; use `text-brand` for accent.
|
||||
- JS: vanilla only (no jQuery). Prefer lightweight patterns (e.g., scrollBy carousels).
|
||||
- i18n: prefer `getRelativeLocaleUrl()` from `astro:i18n` for links; use `siblingPath()`
|
||||
for toggles when slugs differ.
|
||||
- Content slugs differ by locale (e.g., FR `avis` ↔ EN `reviews`) — never hardcode.
|
||||
|
||||
## Testing Guidelines
|
||||
|
||||
- Sanity: `pnpm build` must succeed. Then `pnpm preview` for visual QA.
|
||||
- Check: FR/EN toggles, redirects (`/ → /fr/`), forms (Netlify), and analytics events.
|
||||
- Accessibility: keyboard nav for mobile menu; color contrast for brand accents.
|
||||
|
||||
## Commit & Pull Requests
|
||||
|
||||
- Conventional Commits (examples): `feat(home): hero CTA`, `fix(i18n): toggle
|
||||
sibling path`.
|
||||
- PRs should include: build passing, screenshots (FR/EN), and spec updates when needed.
|
||||
- Keep focused and small; avoid mixing refactors with features.
|
||||
|
||||
## Revamp Spec & Phases
|
||||
|
||||
- Branch: `revamp/website-spec`. Spec: `docs/spec/website-revamp-spec.md`.
|
||||
- Phase 1 (current): FR core pages, inquiry form, i18n scaffolding.
|
||||
- Phase 2: EN pages + gallery, translated reviews.
|
||||
- Phase 3: Policies, analytics KPIs, performance polish (WebP/srcset, Lighthouse).
|
||||
|
||||
## Notes
|
||||
|
||||
- Do not commit `dist/`. Assets live in `public/assets/...`.
|
||||
- Use the route manifest for any new pages/links; add entries for new slugs.
|
||||
16
Pipfile
|
|
@ -1,16 +0,0 @@
|
|||
[[source]]
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
jinja2 = "*"
|
||||
rich = "*"
|
||||
|
||||
[dev-packages]
|
||||
black = "*"
|
||||
mypy = "*"
|
||||
ruff = "*"
|
||||
|
||||
[requires]
|
||||
python_version = "3.11"
|
||||
262
Pipfile.lock
generated
|
|
@ -1,262 +0,0 @@
|
|||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "bef80c03c82a5024d5fd39621dcbdf6fb13cdcf4f3765b97214d0d0cfa7c99b1"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "3.11"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"jinja2": {
|
||||
"hashes": [
|
||||
"sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb",
|
||||
"sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==3.1.5"
|
||||
},
|
||||
"markdown-it-py": {
|
||||
"hashes": [
|
||||
"sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1",
|
||||
"sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==3.0.0"
|
||||
},
|
||||
"markupsafe": {
|
||||
"hashes": [
|
||||
"sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4",
|
||||
"sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30",
|
||||
"sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0",
|
||||
"sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9",
|
||||
"sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396",
|
||||
"sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13",
|
||||
"sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028",
|
||||
"sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca",
|
||||
"sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557",
|
||||
"sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832",
|
||||
"sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0",
|
||||
"sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b",
|
||||
"sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579",
|
||||
"sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a",
|
||||
"sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c",
|
||||
"sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff",
|
||||
"sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c",
|
||||
"sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22",
|
||||
"sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094",
|
||||
"sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb",
|
||||
"sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e",
|
||||
"sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5",
|
||||
"sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a",
|
||||
"sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d",
|
||||
"sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a",
|
||||
"sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b",
|
||||
"sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8",
|
||||
"sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225",
|
||||
"sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c",
|
||||
"sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144",
|
||||
"sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f",
|
||||
"sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87",
|
||||
"sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d",
|
||||
"sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93",
|
||||
"sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf",
|
||||
"sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158",
|
||||
"sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84",
|
||||
"sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb",
|
||||
"sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48",
|
||||
"sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171",
|
||||
"sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c",
|
||||
"sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6",
|
||||
"sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd",
|
||||
"sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d",
|
||||
"sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1",
|
||||
"sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d",
|
||||
"sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca",
|
||||
"sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a",
|
||||
"sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29",
|
||||
"sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe",
|
||||
"sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798",
|
||||
"sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c",
|
||||
"sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8",
|
||||
"sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f",
|
||||
"sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f",
|
||||
"sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a",
|
||||
"sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178",
|
||||
"sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0",
|
||||
"sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79",
|
||||
"sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430",
|
||||
"sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"
|
||||
],
|
||||
"markers": "python_version >= '3.9'",
|
||||
"version": "==3.0.2"
|
||||
},
|
||||
"mdurl": {
|
||||
"hashes": [
|
||||
"sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8",
|
||||
"sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==0.1.2"
|
||||
},
|
||||
"pygments": {
|
||||
"hashes": [
|
||||
"sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c",
|
||||
"sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.15.1"
|
||||
},
|
||||
"rich": {
|
||||
"hashes": [
|
||||
"sha256:8f87bc7ee54675732fa66a05ebfe489e27264caeeff3728c945d25971b6485ec",
|
||||
"sha256:d653d6bccede5844304c605d5aac802c7cf9621efd700b46c7ec2b51ea914898"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==13.4.2"
|
||||
}
|
||||
},
|
||||
"develop": {
|
||||
"black": {
|
||||
"hashes": [
|
||||
"sha256:2818cf72dfd5d289e48f37ccfa08b460bf469e67fb7c4abb07edc2e9f16fb63f",
|
||||
"sha256:41622020d7120e01d377f74249e677039d20e6344ff5851de8a10f11f513bf93",
|
||||
"sha256:4acf672def7eb1725f41f38bf6bf425c8237248bb0804faa3965c036f7672d11",
|
||||
"sha256:4be5bb28e090456adfc1255e03967fb67ca846a03be7aadf6249096100ee32d0",
|
||||
"sha256:4f1373a7808a8f135b774039f61d59e4be7eb56b2513d3d2f02a8b9365b8a8a9",
|
||||
"sha256:56f52cfbd3dabe2798d76dbdd299faa046a901041faf2cf33288bc4e6dae57b5",
|
||||
"sha256:65b76c275e4c1c5ce6e9870911384bff5ca31ab63d19c76811cb1fb162678213",
|
||||
"sha256:65c02e4ea2ae09d16314d30912a58ada9a5c4fdfedf9512d23326128ac08ac3d",
|
||||
"sha256:6905238a754ceb7788a73f02b45637d820b2f5478b20fec82ea865e4f5d4d9f7",
|
||||
"sha256:79dcf34b33e38ed1b17434693763301d7ccbd1c5860674a8f871bd15139e7837",
|
||||
"sha256:7bb041dca0d784697af4646d3b62ba4a6b028276ae878e53f6b4f74ddd6db99f",
|
||||
"sha256:7d5e026f8da0322b5662fa7a8e752b3fa2dac1c1cbc213c3d7ff9bdd0ab12395",
|
||||
"sha256:9f50ea1132e2189d8dff0115ab75b65590a3e97de1e143795adb4ce317934995",
|
||||
"sha256:a0c9c4a0771afc6919578cec71ce82a3e31e054904e7197deacbc9382671c41f",
|
||||
"sha256:aadf7a02d947936ee418777e0247ea114f78aff0d0959461057cae8a04f20597",
|
||||
"sha256:b5991d523eee14756f3c8d5df5231550ae8993e2286b8014e2fdea7156ed0959",
|
||||
"sha256:bf21b7b230718a5f08bd32d5e4f1db7fc8788345c8aea1d155fc17852b3410f5",
|
||||
"sha256:c45f8dff244b3c431b36e3224b6be4a127c6aca780853574c00faf99258041eb",
|
||||
"sha256:c7ed6668cbbfcd231fa0dc1b137d3e40c04c7f786e626b405c62bcd5db5857e4",
|
||||
"sha256:d7de8d330763c66663661a1ffd432274a2f92f07feeddd89ffd085b5744f85e7",
|
||||
"sha256:e19cb1c6365fd6dc38a6eae2dcb691d7d83935c10215aef8e6c38edee3f77abd",
|
||||
"sha256:e2af80566f43c85f5797365077fb64a393861a3730bd110971ab7a0c94e873e7"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==24.3.0"
|
||||
},
|
||||
"click": {
|
||||
"hashes": [
|
||||
"sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28",
|
||||
"sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==8.1.7"
|
||||
},
|
||||
"mypy": {
|
||||
"hashes": [
|
||||
"sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042",
|
||||
"sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd",
|
||||
"sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2",
|
||||
"sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01",
|
||||
"sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7",
|
||||
"sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3",
|
||||
"sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816",
|
||||
"sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3",
|
||||
"sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc",
|
||||
"sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4",
|
||||
"sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b",
|
||||
"sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8",
|
||||
"sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c",
|
||||
"sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462",
|
||||
"sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7",
|
||||
"sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc",
|
||||
"sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258",
|
||||
"sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b",
|
||||
"sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9",
|
||||
"sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6",
|
||||
"sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f",
|
||||
"sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1",
|
||||
"sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828",
|
||||
"sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878",
|
||||
"sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f",
|
||||
"sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.4.1"
|
||||
},
|
||||
"mypy-extensions": {
|
||||
"hashes": [
|
||||
"sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d",
|
||||
"sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==1.0.0"
|
||||
},
|
||||
"packaging": {
|
||||
"hashes": [
|
||||
"sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5",
|
||||
"sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==24.0"
|
||||
},
|
||||
"pathspec": {
|
||||
"hashes": [
|
||||
"sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08",
|
||||
"sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==0.12.1"
|
||||
},
|
||||
"platformdirs": {
|
||||
"hashes": [
|
||||
"sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068",
|
||||
"sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==4.2.0"
|
||||
},
|
||||
"ruff": {
|
||||
"hashes": [
|
||||
"sha256:14a7b2f00f149c5a295f188a643ac25226ff8a4d08f7a62b1d4b0a1dc9f9b85c",
|
||||
"sha256:2d4444c60f2e705c14cd802b55cd2b561d25bf4311702c463a002392d3116b22",
|
||||
"sha256:2dab13cdedbf3af6d4427c07f47143746b6b95d9e4a254ac369a0edb9280a0d2",
|
||||
"sha256:323b674c98078be9aaded5b8b51c0d9c424486566fb6ec18439b496ce79e5998",
|
||||
"sha256:3250b24333ef419b7a232080d9724ccc4d2da1dbbe4ce85c4caa2290d83200f8",
|
||||
"sha256:3a43fbe026ca1a2a8c45aa0d600a0116bec4dfa6f8bf0c3b871ecda51ef2b5dd",
|
||||
"sha256:3e60605e07482183ba1c1b7237eca827bd6cbd3535fe8a4ede28cbe2a323cb97",
|
||||
"sha256:468bfb0a7567443cec3d03cf408d6f562b52f30c3c29df19927f1e0e13a40cd7",
|
||||
"sha256:479864a3ccd8a6a20a37a6e7577bdc2406868ee80b1e65605478ad3b8eb2ba0b",
|
||||
"sha256:6fe81732f788894a00f6ade1fe69e996cc9e485b7c35b0f53fb00284397284b2",
|
||||
"sha256:734165ea8feb81b0d53e3bf523adc2413fdb76f1264cde99555161dd5a725522",
|
||||
"sha256:74e4b206cb24f2e98a615f87dbe0bde18105217cbcc8eb785bb05a644855ba50",
|
||||
"sha256:7baa97c3d7186e5ed4d5d4f6834d759a27e56cf7d5874b98c507335f0ad5aadb",
|
||||
"sha256:88d0f2afb2e0c26ac1120e7061ddda2a566196ec4007bd66d558f13b374b9efc",
|
||||
"sha256:a9879f59f763cc5628aa01c31ad256a0f4dc61a29355c7315b83c2a5aac932b5",
|
||||
"sha256:f32ec416c24542ca2f9cc8c8b65b84560530d338aaf247a4a78e74b99cd476b4",
|
||||
"sha256:f612e0a14b3d145d90eb6ead990064e22f6f27281d847237560b4e10bf2251f3"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.0.277"
|
||||
},
|
||||
"typing-extensions": {
|
||||
"hashes": [
|
||||
"sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36",
|
||||
"sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==4.7.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
105
README.md
|
|
@ -1,88 +1,39 @@
|
|||
# VillaFleurie rental site
|
||||
# VillaFleurie Website
|
||||
|
||||
[](https://app.netlify.com/sites/villafleurie-site/deploys)
|
||||
This site is built with Astro and Tailwind, with FR/EN locales.
|
||||
|
||||
## How to use
|
||||
## Quick Start
|
||||
|
||||
You can build the site using the built-in static site generator included.
|
||||
The entry point is located in the [main file](./lib/main.py). It should not be modified.
|
||||
- Requirements: Node 18+, Corepack enabled (`pnpm`). Then:
|
||||
- `corepack enable`
|
||||
- `pnpm install`
|
||||
- Dev server: `pnpm dev` → open `http://localhost:4321/fr/` (root redirects to `/fr/`).
|
||||
- Build: `pnpm build` → static output in `dist/`. Preview: `pnpm preview`.
|
||||
|
||||
### Add a page
|
||||
## Structure
|
||||
|
||||
To add a page, create a `HTML` file in the `pages` directory.
|
||||
- `src/pages/fr|en/`: localized pages (Home, Apartments, Reviews, Rates, Contact,
|
||||
Policies).
|
||||
- `src/layouts/`: shared layout with sticky header, language toggle, footer.
|
||||
- `src/styles/global.css`: Tailwind v4 with brand tokens (`--color-brand`, `--color-brand-600`).
|
||||
- `src/i18n/routes.ts`: route manifest (`siblingPath`, CTA label helper).
|
||||
- `public/`: static assets + `_redirects` (root → `/fr/`).
|
||||
- Spec: `docs/spec/website-revamp-spec.md` (goals, sitemap, copy, release plan).
|
||||
|
||||
Optionally, you can inject data in the template. To do so you should create a `TOML` file with the same name as the
|
||||
template.
|
||||
## i18n & Navigation
|
||||
|
||||
Any fields will become available in the template.
|
||||
For instance the `index.toml` for `index.html` could contain the following fields:
|
||||
- Folder-based locales with different slugs (e.g., FR `avis` ↔ EN `reviews`).
|
||||
- Always use the route helpers for links and the language toggle; don’t hardcode
|
||||
cross‑locale paths.
|
||||
|
||||
```toml
|
||||
name = "index"
|
||||
template = "index.html"
|
||||
```
|
||||
## Forms & Analytics
|
||||
|
||||
### Layouts
|
||||
- Netlify Forms on `/fr/contact/` and `/en/contact/`, with localized thank‑you pages.
|
||||
- Plausible events: `booking_request_submitted` (primary), `click_airbnb`,
|
||||
`click_booking`, etc.
|
||||
|
||||
You can use template inheritance. The layouts must be in the `pages/layouts` subdirectory.
|
||||
## Contributing
|
||||
|
||||
### Configuration
|
||||
|
||||
The configuration file ([config.toml](./config.toml)) is mandatory and should resemble:
|
||||
|
||||
```toml
|
||||
name = "VillaFleurie"
|
||||
```
|
||||
|
||||
## Build site
|
||||
|
||||
You can generate the site by running:
|
||||
|
||||
```shell
|
||||
python -m lib.main
|
||||
```
|
||||
|
||||
### How to run the website
|
||||
|
||||
It will generate the final files in the [dist](./dist) folder.
|
||||
You can run the output files using a simple python server:
|
||||
|
||||
```shell
|
||||
cd dist && python -m http.server
|
||||
```
|
||||
|
||||
## Deployment
|
||||
|
||||
You can then deploy the site on any platform supporting static sites (Netlify,…) or your own VPS.
|
||||
|
||||
## TODO
|
||||
|
||||
- [X] Create a base template for the header and footer
|
||||
- [X] Build index page
|
||||
- [X] Build room pages
|
||||
- [x] T2
|
||||
- [x] T3
|
||||
- [X] Build contact pages
|
||||
- [X] Use netlify form for the contact form
|
||||
- [x] Deploy to VillaFleurie's domain
|
||||
- [ ] Find attractions for landing page
|
||||
- [x] Pick real reviews from AirBnB and Booking
|
||||
- [x] Optimize images
|
||||
- [x] Automate the file search
|
||||
- [x] Extract data out of the template
|
||||
- [ ] Create a 'all' key for data available in all templates
|
||||
- [ ] Create a template for the rooms
|
||||
- [ ] Build script before commit
|
||||
- [ ] Lit parapluie, barbecue et machine à laver
|
||||
- [x] Use rich instead of logger
|
||||
- [ ] Add file watching mode
|
||||
|
||||
## Excluded
|
||||
|
||||
* The language switcher
|
||||
|
||||
## Built with
|
||||
|
||||
- [Jinja](https://jinja.palletsprojects.com/en/3.1.x/) - fast, expressive, extensible templating
|
||||
engine
|
||||
- [Netlify](https://www.netlify.com/) - Develop and deploy websites and apps in record time
|
||||
- Use Conventional Commits. Include screenshots (FR/EN) for UI changes.
|
||||
- Keep the spec updated when requirements change.
|
||||
- See `AGENTS.md` for contributor guidelines and the current phase plan.
|
||||
|
|
|
|||
678
assets/css/bootstrap-datepicker3.css
vendored
|
|
@ -1,678 +0,0 @@
|
|||
/*!
|
||||
* Datepicker for Bootstrap v1.6.4 (https://github.com/eternicode/bootstrap-datepicker)
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
||||
*/
|
||||
.datepicker {
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
}
|
||||
.datepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datepicker.datepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datepicker.datepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datepicker-dropdown {
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: 4px;
|
||||
}
|
||||
.datepicker-dropdown:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid rgba(0, 0, 0, 0.15);
|
||||
border-top: 0;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
}
|
||||
.datepicker-dropdown:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #fff;
|
||||
border-top: 0;
|
||||
position: absolute;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-left:before {
|
||||
left: 6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-left:after {
|
||||
left: 7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-right:before {
|
||||
right: 6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-right:after {
|
||||
right: 7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-bottom:before {
|
||||
top: -7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-bottom:after {
|
||||
top: -6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-top:before {
|
||||
bottom: -7px;
|
||||
border-bottom: 0;
|
||||
border-top: 7px solid rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-top:after {
|
||||
bottom: -6px;
|
||||
border-bottom: 0;
|
||||
border-top: 6px solid #fff;
|
||||
}
|
||||
.datepicker table {
|
||||
margin: 0;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
.datepicker table tr td,
|
||||
.datepicker table tr th {
|
||||
text-align: center;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datepicker table tr td,
|
||||
.table-striped .datepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datepicker table tr td.old,
|
||||
.datepicker table tr td.new {
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.day:hover,
|
||||
.datepicker table tr td.focused {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker table tr td.disabled,
|
||||
.datepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #777777;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td.highlighted {
|
||||
color: #000;
|
||||
background-color: #d9edf7;
|
||||
border-color: #85c5e5;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.highlighted:focus,
|
||||
.datepicker table tr td.highlighted.focus {
|
||||
color: #000;
|
||||
background-color: #afd9ee;
|
||||
border-color: #298fc2;
|
||||
}
|
||||
.datepicker table tr td.highlighted:hover {
|
||||
color: #000;
|
||||
background-color: #afd9ee;
|
||||
border-color: #52addb;
|
||||
}
|
||||
.datepicker table tr td.highlighted:active,
|
||||
.datepicker table tr td.highlighted.active {
|
||||
color: #000;
|
||||
background-color: #afd9ee;
|
||||
border-color: #52addb;
|
||||
}
|
||||
.datepicker table tr td.highlighted:active:hover,
|
||||
.datepicker table tr td.highlighted.active:hover,
|
||||
.datepicker table tr td.highlighted:active:focus,
|
||||
.datepicker table tr td.highlighted.active:focus,
|
||||
.datepicker table tr td.highlighted:active.focus,
|
||||
.datepicker table tr td.highlighted.active.focus {
|
||||
color: #000;
|
||||
background-color: #91cbe8;
|
||||
border-color: #298fc2;
|
||||
}
|
||||
.datepicker table tr td.highlighted.disabled:hover,
|
||||
.datepicker table tr td.highlighted[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.highlighted:hover,
|
||||
.datepicker table tr td.highlighted.disabled:focus,
|
||||
.datepicker table tr td.highlighted[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.highlighted:focus,
|
||||
.datepicker table tr td.highlighted.disabled.focus,
|
||||
.datepicker table tr td.highlighted[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.highlighted.focus {
|
||||
background-color: #d9edf7;
|
||||
border-color: #85c5e5;
|
||||
}
|
||||
.datepicker table tr td.highlighted.focused {
|
||||
background: #afd9ee;
|
||||
}
|
||||
.datepicker table tr td.highlighted.disabled,
|
||||
.datepicker table tr td.highlighted.disabled:active {
|
||||
background: #d9edf7;
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.today {
|
||||
color: #000;
|
||||
background-color: #ffdb99;
|
||||
border-color: #ffb733;
|
||||
}
|
||||
.datepicker table tr td.today:focus,
|
||||
.datepicker table tr td.today.focus {
|
||||
color: #000;
|
||||
background-color: #ffc966;
|
||||
border-color: #b37400;
|
||||
}
|
||||
.datepicker table tr td.today:hover {
|
||||
color: #000;
|
||||
background-color: #ffc966;
|
||||
border-color: #f59e00;
|
||||
}
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today.active {
|
||||
color: #000;
|
||||
background-color: #ffc966;
|
||||
border-color: #f59e00;
|
||||
}
|
||||
.datepicker table tr td.today:active:hover,
|
||||
.datepicker table tr td.today.active:hover,
|
||||
.datepicker table tr td.today:active:focus,
|
||||
.datepicker table tr td.today.active:focus,
|
||||
.datepicker table tr td.today:active.focus,
|
||||
.datepicker table tr td.today.active.focus {
|
||||
color: #000;
|
||||
background-color: #ffbc42;
|
||||
border-color: #b37400;
|
||||
}
|
||||
.datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today.disabled:focus,
|
||||
.datepicker table tr td.today[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.today:focus,
|
||||
.datepicker table tr td.today.disabled.focus,
|
||||
.datepicker table tr td.today[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.today.focus {
|
||||
background-color: #ffdb99;
|
||||
border-color: #ffb733;
|
||||
}
|
||||
.datepicker table tr td.today.focused {
|
||||
background: #ffc966;
|
||||
}
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today.disabled:active {
|
||||
background: #ffdb99;
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.range {
|
||||
color: #000;
|
||||
background-color: #eeeeee;
|
||||
border-color: #bbbbbb;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range:focus,
|
||||
.datepicker table tr td.range.focus {
|
||||
color: #000;
|
||||
background-color: #d5d5d5;
|
||||
border-color: #7c7c7c;
|
||||
}
|
||||
.datepicker table tr td.range:hover {
|
||||
color: #000;
|
||||
background-color: #d5d5d5;
|
||||
border-color: #9d9d9d;
|
||||
}
|
||||
.datepicker table tr td.range:active,
|
||||
.datepicker table tr td.range.active {
|
||||
color: #000;
|
||||
background-color: #d5d5d5;
|
||||
border-color: #9d9d9d;
|
||||
}
|
||||
.datepicker table tr td.range:active:hover,
|
||||
.datepicker table tr td.range.active:hover,
|
||||
.datepicker table tr td.range:active:focus,
|
||||
.datepicker table tr td.range.active:focus,
|
||||
.datepicker table tr td.range:active.focus,
|
||||
.datepicker table tr td.range.active.focus {
|
||||
color: #000;
|
||||
background-color: #c3c3c3;
|
||||
border-color: #7c7c7c;
|
||||
}
|
||||
.datepicker table tr td.range.disabled:hover,
|
||||
.datepicker table tr td.range[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range:hover,
|
||||
.datepicker table tr td.range.disabled:focus,
|
||||
.datepicker table tr td.range[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range:focus,
|
||||
.datepicker table tr td.range.disabled.focus,
|
||||
.datepicker table tr td.range[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.focus {
|
||||
background-color: #eeeeee;
|
||||
border-color: #bbbbbb;
|
||||
}
|
||||
.datepicker table tr td.range.focused {
|
||||
background: #d5d5d5;
|
||||
}
|
||||
.datepicker table tr td.range.disabled,
|
||||
.datepicker table tr td.range.disabled:active {
|
||||
background: #eeeeee;
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted {
|
||||
color: #000;
|
||||
background-color: #e4eef3;
|
||||
border-color: #9dc1d3;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted:focus,
|
||||
.datepicker table tr td.range.highlighted.focus {
|
||||
color: #000;
|
||||
background-color: #c1d7e3;
|
||||
border-color: #4b88a6;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted:hover {
|
||||
color: #000;
|
||||
background-color: #c1d7e3;
|
||||
border-color: #73a6c0;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted:active,
|
||||
.datepicker table tr td.range.highlighted.active {
|
||||
color: #000;
|
||||
background-color: #c1d7e3;
|
||||
border-color: #73a6c0;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted:active:hover,
|
||||
.datepicker table tr td.range.highlighted.active:hover,
|
||||
.datepicker table tr td.range.highlighted:active:focus,
|
||||
.datepicker table tr td.range.highlighted.active:focus,
|
||||
.datepicker table tr td.range.highlighted:active.focus,
|
||||
.datepicker table tr td.range.highlighted.active.focus {
|
||||
color: #000;
|
||||
background-color: #a8c8d8;
|
||||
border-color: #4b88a6;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted.disabled:hover,
|
||||
.datepicker table tr td.range.highlighted[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.highlighted:hover,
|
||||
.datepicker table tr td.range.highlighted.disabled:focus,
|
||||
.datepicker table tr td.range.highlighted[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.highlighted:focus,
|
||||
.datepicker table tr td.range.highlighted.disabled.focus,
|
||||
.datepicker table tr td.range.highlighted[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.highlighted.focus {
|
||||
background-color: #e4eef3;
|
||||
border-color: #9dc1d3;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted.focused {
|
||||
background: #c1d7e3;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted.disabled,
|
||||
.datepicker table tr td.range.highlighted.disabled:active {
|
||||
background: #e4eef3;
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.range.today {
|
||||
color: #000;
|
||||
background-color: #f7ca77;
|
||||
border-color: #f1a417;
|
||||
}
|
||||
.datepicker table tr td.range.today:focus,
|
||||
.datepicker table tr td.range.today.focus {
|
||||
color: #000;
|
||||
background-color: #f4b747;
|
||||
border-color: #815608;
|
||||
}
|
||||
.datepicker table tr td.range.today:hover {
|
||||
color: #000;
|
||||
background-color: #f4b747;
|
||||
border-color: #bf800c;
|
||||
}
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today.active {
|
||||
color: #000;
|
||||
background-color: #f4b747;
|
||||
border-color: #bf800c;
|
||||
}
|
||||
.datepicker table tr td.range.today:active:hover,
|
||||
.datepicker table tr td.range.today.active:hover,
|
||||
.datepicker table tr td.range.today:active:focus,
|
||||
.datepicker table tr td.range.today.active:focus,
|
||||
.datepicker table tr td.range.today:active.focus,
|
||||
.datepicker table tr td.range.today.active.focus {
|
||||
color: #000;
|
||||
background-color: #f2aa25;
|
||||
border-color: #815608;
|
||||
}
|
||||
.datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today.disabled:focus,
|
||||
.datepicker table tr td.range.today[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:focus,
|
||||
.datepicker table tr td.range.today.disabled.focus,
|
||||
.datepicker table tr td.range.today[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.focus {
|
||||
background-color: #f7ca77;
|
||||
border-color: #f1a417;
|
||||
}
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today.disabled:active {
|
||||
background: #f7ca77;
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.selected,
|
||||
.datepicker table tr td.selected.highlighted {
|
||||
color: #fff;
|
||||
background-color: #777777;
|
||||
border-color: #555555;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.selected:focus,
|
||||
.datepicker table tr td.selected.highlighted:focus,
|
||||
.datepicker table tr td.selected.focus,
|
||||
.datepicker table tr td.selected.highlighted.focus {
|
||||
color: #fff;
|
||||
background-color: #5e5e5e;
|
||||
border-color: #161616;
|
||||
}
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected.highlighted:hover {
|
||||
color: #fff;
|
||||
background-color: #5e5e5e;
|
||||
border-color: #373737;
|
||||
}
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected.highlighted:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected.highlighted.active {
|
||||
color: #fff;
|
||||
background-color: #5e5e5e;
|
||||
border-color: #373737;
|
||||
}
|
||||
.datepicker table tr td.selected:active:hover,
|
||||
.datepicker table tr td.selected.highlighted:active:hover,
|
||||
.datepicker table tr td.selected.active:hover,
|
||||
.datepicker table tr td.selected.highlighted.active:hover,
|
||||
.datepicker table tr td.selected:active:focus,
|
||||
.datepicker table tr td.selected.highlighted:active:focus,
|
||||
.datepicker table tr td.selected.active:focus,
|
||||
.datepicker table tr td.selected.highlighted.active:focus,
|
||||
.datepicker table tr td.selected:active.focus,
|
||||
.datepicker table tr td.selected.highlighted:active.focus,
|
||||
.datepicker table tr td.selected.active.focus,
|
||||
.datepicker table tr td.selected.highlighted.active.focus {
|
||||
color: #fff;
|
||||
background-color: #4c4c4c;
|
||||
border-color: #161616;
|
||||
}
|
||||
.datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected.highlighted.disabled:hover,
|
||||
.datepicker table tr td.selected[disabled]:hover,
|
||||
.datepicker table tr td.selected.highlighted[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected.highlighted:hover,
|
||||
.datepicker table tr td.selected.disabled:focus,
|
||||
.datepicker table tr td.selected.highlighted.disabled:focus,
|
||||
.datepicker table tr td.selected[disabled]:focus,
|
||||
.datepicker table tr td.selected.highlighted[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected.highlighted:focus,
|
||||
.datepicker table tr td.selected.disabled.focus,
|
||||
.datepicker table tr td.selected.highlighted.disabled.focus,
|
||||
.datepicker table tr td.selected[disabled].focus,
|
||||
.datepicker table tr td.selected.highlighted[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected.focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected.highlighted.focus {
|
||||
background-color: #777777;
|
||||
border-color: #555555;
|
||||
}
|
||||
.datepicker table tr td.active,
|
||||
.datepicker table tr td.active.highlighted {
|
||||
color: #fff;
|
||||
background-color: #337ab7;
|
||||
border-color: #2e6da4;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.active:focus,
|
||||
.datepicker table tr td.active.highlighted:focus,
|
||||
.datepicker table tr td.active.focus,
|
||||
.datepicker table tr td.active.highlighted.focus {
|
||||
color: #fff;
|
||||
background-color: #286090;
|
||||
border-color: #122b40;
|
||||
}
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active.highlighted:hover {
|
||||
color: #fff;
|
||||
background-color: #286090;
|
||||
border-color: #204d74;
|
||||
}
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active.highlighted:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active.highlighted.active {
|
||||
color: #fff;
|
||||
background-color: #286090;
|
||||
border-color: #204d74;
|
||||
}
|
||||
.datepicker table tr td.active:active:hover,
|
||||
.datepicker table tr td.active.highlighted:active:hover,
|
||||
.datepicker table tr td.active.active:hover,
|
||||
.datepicker table tr td.active.highlighted.active:hover,
|
||||
.datepicker table tr td.active:active:focus,
|
||||
.datepicker table tr td.active.highlighted:active:focus,
|
||||
.datepicker table tr td.active.active:focus,
|
||||
.datepicker table tr td.active.highlighted.active:focus,
|
||||
.datepicker table tr td.active:active.focus,
|
||||
.datepicker table tr td.active.highlighted:active.focus,
|
||||
.datepicker table tr td.active.active.focus,
|
||||
.datepicker table tr td.active.highlighted.active.focus {
|
||||
color: #fff;
|
||||
background-color: #204d74;
|
||||
border-color: #122b40;
|
||||
}
|
||||
.datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active.highlighted.disabled:hover,
|
||||
.datepicker table tr td.active[disabled]:hover,
|
||||
.datepicker table tr td.active.highlighted[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active.highlighted:hover,
|
||||
.datepicker table tr td.active.disabled:focus,
|
||||
.datepicker table tr td.active.highlighted.disabled:focus,
|
||||
.datepicker table tr td.active[disabled]:focus,
|
||||
.datepicker table tr td.active.highlighted[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active.highlighted:focus,
|
||||
.datepicker table tr td.active.disabled.focus,
|
||||
.datepicker table tr td.active.highlighted.disabled.focus,
|
||||
.datepicker table tr td.active[disabled].focus,
|
||||
.datepicker table tr td.active.highlighted[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.active.focus,
|
||||
fieldset[disabled] .datepicker table tr td.active.highlighted.focus {
|
||||
background-color: #337ab7;
|
||||
border-color: #2e6da4;
|
||||
}
|
||||
.datepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.datepicker table tr td span:hover,
|
||||
.datepicker table tr td span.focused {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker table tr td span.disabled,
|
||||
.datepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #777777;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td span.active,
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover {
|
||||
color: #fff;
|
||||
background-color: #337ab7;
|
||||
border-color: #2e6da4;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td span.active:focus,
|
||||
.datepicker table tr td span.active:hover:focus,
|
||||
.datepicker table tr td span.active.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled:hover:focus,
|
||||
.datepicker table tr td span.active.focus,
|
||||
.datepicker table tr td span.active:hover.focus,
|
||||
.datepicker table tr td span.active.disabled.focus,
|
||||
.datepicker table tr td span.active.disabled:hover.focus {
|
||||
color: #fff;
|
||||
background-color: #286090;
|
||||
border-color: #122b40;
|
||||
}
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover:hover {
|
||||
color: #fff;
|
||||
background-color: #286090;
|
||||
border-color: #204d74;
|
||||
}
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active {
|
||||
color: #fff;
|
||||
background-color: #286090;
|
||||
border-color: #204d74;
|
||||
}
|
||||
.datepicker table tr td span.active:active:hover,
|
||||
.datepicker table tr td span.active:hover:active:hover,
|
||||
.datepicker table tr td span.active.disabled:active:hover,
|
||||
.datepicker table tr td span.active.disabled:hover:active:hover,
|
||||
.datepicker table tr td span.active.active:hover,
|
||||
.datepicker table tr td span.active:hover.active:hover,
|
||||
.datepicker table tr td span.active.disabled.active:hover,
|
||||
.datepicker table tr td span.active.disabled:hover.active:hover,
|
||||
.datepicker table tr td span.active:active:focus,
|
||||
.datepicker table tr td span.active:hover:active:focus,
|
||||
.datepicker table tr td span.active.disabled:active:focus,
|
||||
.datepicker table tr td span.active.disabled:hover:active:focus,
|
||||
.datepicker table tr td span.active.active:focus,
|
||||
.datepicker table tr td span.active:hover.active:focus,
|
||||
.datepicker table tr td span.active.disabled.active:focus,
|
||||
.datepicker table tr td span.active.disabled:hover.active:focus,
|
||||
.datepicker table tr td span.active:active.focus,
|
||||
.datepicker table tr td span.active:hover:active.focus,
|
||||
.datepicker table tr td span.active.disabled:active.focus,
|
||||
.datepicker table tr td span.active.disabled:hover:active.focus,
|
||||
.datepicker table tr td span.active.active.focus,
|
||||
.datepicker table tr td span.active:hover.active.focus,
|
||||
.datepicker table tr td span.active.disabled.active.focus,
|
||||
.datepicker table tr td span.active.disabled:hover.active.focus {
|
||||
color: #fff;
|
||||
background-color: #204d74;
|
||||
border-color: #122b40;
|
||||
}
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active:hover.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td span.active[disabled]:hover,
|
||||
.datepicker table tr td span.active:hover[disabled]:hover,
|
||||
.datepicker table tr td span.active.disabled[disabled]:hover,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:focus,
|
||||
.datepicker table tr td span.active:hover.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td span.active[disabled]:focus,
|
||||
.datepicker table tr td span.active:hover[disabled]:focus,
|
||||
.datepicker table tr td span.active.disabled[disabled]:focus,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
|
||||
.datepicker table tr td span.active.disabled.focus,
|
||||
.datepicker table tr td span.active:hover.disabled.focus,
|
||||
.datepicker table tr td span.active.disabled.disabled.focus,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled.focus,
|
||||
.datepicker table tr td span.active[disabled].focus,
|
||||
.datepicker table tr td span.active:hover[disabled].focus,
|
||||
.datepicker table tr td span.active.disabled[disabled].focus,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover.focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled.focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus {
|
||||
background-color: #337ab7;
|
||||
border-color: #2e6da4;
|
||||
}
|
||||
.datepicker table tr td span.old,
|
||||
.datepicker table tr td span.new {
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker .datepicker-switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datepicker .datepicker-switch,
|
||||
.datepicker .prev,
|
||||
.datepicker .next,
|
||||
.datepicker tfoot tr th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker .datepicker-switch:hover,
|
||||
.datepicker .prev:hover,
|
||||
.datepicker .next:hover,
|
||||
.datepicker tfoot tr th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker .cw {
|
||||
font-size: 10px;
|
||||
width: 12px;
|
||||
padding: 0 2px 0 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.input-group.date .input-group-addon {
|
||||
cursor: pointer;
|
||||
}
|
||||
.input-daterange {
|
||||
width: 100%;
|
||||
}
|
||||
.input-daterange input {
|
||||
text-align: center;
|
||||
}
|
||||
.input-daterange input:first-child {
|
||||
border-radius: 3px 0 0 3px;
|
||||
}
|
||||
.input-daterange input:last-child {
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
.input-daterange .input-group-addon {
|
||||
width: auto;
|
||||
min-width: 16px;
|
||||
padding: 4px 5px;
|
||||
line-height: 1.42857143;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
border-width: 1px 0;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-datepicker3.css.map */
|
||||
10259
assets/css/bootstrap.css
vendored
|
|
@ -1,618 +0,0 @@
|
|||
/**
|
||||
* Swiper 4.4.6
|
||||
* Most modern mobile touch slider and framework with hardware accelerated transitions
|
||||
* http://www.idangero.us/swiper/
|
||||
*
|
||||
* Copyright 2014-2018 Vladimir Kharlampidi
|
||||
*
|
||||
* Released under the MIT License
|
||||
*
|
||||
* Released on: December 19, 2018
|
||||
*/
|
||||
.swiper-container {
|
||||
margin: 0 auto;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
/* Fix of Webkit flickering */
|
||||
z-index: 1;
|
||||
}
|
||||
.swiper-container-no-flexbox .swiper-slide {
|
||||
float: left;
|
||||
}
|
||||
.swiper-container-vertical > .swiper-wrapper {
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-webkit-flex-direction: column;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
}
|
||||
.swiper-wrapper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-transition-property: -webkit-transform;
|
||||
transition-property: -webkit-transform;
|
||||
-o-transition-property: transform;
|
||||
transition-property: transform;
|
||||
transition-property: transform, -webkit-transform;
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
.swiper-container-android .swiper-slide,
|
||||
.swiper-wrapper {
|
||||
-webkit-transform: translate3d(0px, 0, 0);
|
||||
transform: translate3d(0px, 0, 0);
|
||||
}
|
||||
.swiper-container-multirow > .swiper-wrapper {
|
||||
-webkit-flex-wrap: wrap;
|
||||
-ms-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.swiper-container-free-mode > .swiper-wrapper {
|
||||
-webkit-transition-timing-function: ease-out;
|
||||
-o-transition-timing-function: ease-out;
|
||||
transition-timing-function: ease-out;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.swiper-slide {
|
||||
-webkit-flex-shrink: 0;
|
||||
-ms-flex-negative: 0;
|
||||
flex-shrink: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
-webkit-transition-property: -webkit-transform;
|
||||
transition-property: -webkit-transform;
|
||||
-o-transition-property: transform;
|
||||
transition-property: transform;
|
||||
transition-property: transform, -webkit-transform;
|
||||
}
|
||||
.swiper-slide-invisible-blank {
|
||||
visibility: hidden;
|
||||
}
|
||||
/* Auto Height */
|
||||
.swiper-container-autoheight,
|
||||
.swiper-container-autoheight .swiper-slide {
|
||||
height: auto;
|
||||
}
|
||||
.swiper-container-autoheight .swiper-wrapper {
|
||||
-webkit-box-align: start;
|
||||
-webkit-align-items: flex-start;
|
||||
-ms-flex-align: start;
|
||||
align-items: flex-start;
|
||||
-webkit-transition-property: height, -webkit-transform;
|
||||
transition-property: height, -webkit-transform;
|
||||
-o-transition-property: transform, height;
|
||||
transition-property: transform, height;
|
||||
transition-property: transform, height, -webkit-transform;
|
||||
}
|
||||
/* 3D Effects */
|
||||
.swiper-container-3d {
|
||||
-webkit-perspective: 1200px;
|
||||
perspective: 1200px;
|
||||
}
|
||||
.swiper-container-3d .swiper-wrapper,
|
||||
.swiper-container-3d .swiper-slide,
|
||||
.swiper-container-3d .swiper-slide-shadow-left,
|
||||
.swiper-container-3d .swiper-slide-shadow-right,
|
||||
.swiper-container-3d .swiper-slide-shadow-top,
|
||||
.swiper-container-3d .swiper-slide-shadow-bottom,
|
||||
.swiper-container-3d .swiper-cube-shadow {
|
||||
-webkit-transform-style: preserve-3d;
|
||||
transform-style: preserve-3d;
|
||||
}
|
||||
.swiper-container-3d .swiper-slide-shadow-left,
|
||||
.swiper-container-3d .swiper-slide-shadow-right,
|
||||
.swiper-container-3d .swiper-slide-shadow-top,
|
||||
.swiper-container-3d .swiper-slide-shadow-bottom {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: none;
|
||||
z-index: 10;
|
||||
}
|
||||
.swiper-container-3d .swiper-slide-shadow-left {
|
||||
background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));
|
||||
background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
}
|
||||
.swiper-container-3d .swiper-slide-shadow-right {
|
||||
background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));
|
||||
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
}
|
||||
.swiper-container-3d .swiper-slide-shadow-top {
|
||||
background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));
|
||||
background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
}
|
||||
.swiper-container-3d .swiper-slide-shadow-bottom {
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0)));
|
||||
background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
|
||||
}
|
||||
/* IE10 Windows Phone 8 Fixes */
|
||||
.swiper-container-wp8-horizontal,
|
||||
.swiper-container-wp8-horizontal > .swiper-wrapper {
|
||||
-ms-touch-action: pan-y;
|
||||
touch-action: pan-y;
|
||||
}
|
||||
.swiper-container-wp8-vertical,
|
||||
.swiper-container-wp8-vertical > .swiper-wrapper {
|
||||
-ms-touch-action: pan-x;
|
||||
touch-action: pan-x;
|
||||
}
|
||||
.swiper-button-prev,
|
||||
.swiper-button-next {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: 27px;
|
||||
height: 44px;
|
||||
margin-top: -22px;
|
||||
z-index: 10;
|
||||
cursor: pointer;
|
||||
background-size: 27px 44px;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
.swiper-button-prev.swiper-button-disabled,
|
||||
.swiper-button-next.swiper-button-disabled {
|
||||
opacity: 0.35;
|
||||
cursor: auto;
|
||||
pointer-events: none;
|
||||
}
|
||||
.swiper-button-prev,
|
||||
.swiper-container-rtl .swiper-button-next {
|
||||
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
|
||||
left: 10px;
|
||||
right: auto;
|
||||
}
|
||||
.swiper-button-next,
|
||||
.swiper-container-rtl .swiper-button-prev {
|
||||
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");
|
||||
right: 10px;
|
||||
left: auto;
|
||||
}
|
||||
.swiper-button-prev.swiper-button-white,
|
||||
.swiper-container-rtl .swiper-button-next.swiper-button-white {
|
||||
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
|
||||
}
|
||||
.swiper-button-next.swiper-button-white,
|
||||
.swiper-container-rtl .swiper-button-prev.swiper-button-white {
|
||||
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E");
|
||||
}
|
||||
.swiper-button-prev.swiper-button-black,
|
||||
.swiper-container-rtl .swiper-button-next.swiper-button-black {
|
||||
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
|
||||
}
|
||||
.swiper-button-next.swiper-button-black,
|
||||
.swiper-container-rtl .swiper-button-prev.swiper-button-black {
|
||||
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E");
|
||||
}
|
||||
.swiper-button-lock {
|
||||
display: none;
|
||||
}
|
||||
.swiper-pagination {
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
-webkit-transition: 300ms opacity;
|
||||
-o-transition: 300ms opacity;
|
||||
transition: 300ms opacity;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
z-index: 10;
|
||||
}
|
||||
.swiper-pagination.swiper-pagination-hidden {
|
||||
opacity: 0;
|
||||
}
|
||||
/* Common Styles */
|
||||
.swiper-pagination-fraction,
|
||||
.swiper-pagination-custom,
|
||||
.swiper-container-horizontal > .swiper-pagination-bullets {
|
||||
bottom: 10px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
/* Bullets */
|
||||
.swiper-pagination-bullets-dynamic {
|
||||
overflow: hidden;
|
||||
font-size: 0;
|
||||
}
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
|
||||
-webkit-transform: scale(0.33);
|
||||
-ms-transform: scale(0.33);
|
||||
transform: scale(0.33);
|
||||
position: relative;
|
||||
}
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {
|
||||
-webkit-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
transform: scale(1);
|
||||
}
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {
|
||||
-webkit-transform: scale(1);
|
||||
-ms-transform: scale(1);
|
||||
transform: scale(1);
|
||||
}
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {
|
||||
-webkit-transform: scale(0.66);
|
||||
-ms-transform: scale(0.66);
|
||||
transform: scale(0.66);
|
||||
}
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {
|
||||
-webkit-transform: scale(0.33);
|
||||
-ms-transform: scale(0.33);
|
||||
transform: scale(0.33);
|
||||
}
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {
|
||||
-webkit-transform: scale(0.66);
|
||||
-ms-transform: scale(0.66);
|
||||
transform: scale(0.66);
|
||||
}
|
||||
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {
|
||||
-webkit-transform: scale(0.33);
|
||||
-ms-transform: scale(0.33);
|
||||
transform: scale(0.33);
|
||||
}
|
||||
.swiper-pagination-bullet {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
display: inline-block;
|
||||
border-radius: 100%;
|
||||
background: #000;
|
||||
opacity: 0.2;
|
||||
}
|
||||
button.swiper-pagination-bullet {
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
.swiper-pagination-clickable .swiper-pagination-bullet {
|
||||
cursor: pointer;
|
||||
}
|
||||
.swiper-pagination-bullet-active {
|
||||
opacity: 1;
|
||||
background: #007aff;
|
||||
}
|
||||
.swiper-container-vertical > .swiper-pagination-bullets {
|
||||
right: 10px;
|
||||
top: 50%;
|
||||
-webkit-transform: translate3d(0px, -50%, 0);
|
||||
transform: translate3d(0px, -50%, 0);
|
||||
}
|
||||
.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet {
|
||||
margin: 6px 0;
|
||||
display: block;
|
||||
}
|
||||
.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
|
||||
top: 50%;
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
width: 8px;
|
||||
}
|
||||
.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
|
||||
display: inline-block;
|
||||
-webkit-transition: 200ms top, 200ms -webkit-transform;
|
||||
transition: 200ms top, 200ms -webkit-transform;
|
||||
-o-transition: 200ms transform, 200ms top;
|
||||
transition: 200ms transform, 200ms top;
|
||||
transition: 200ms transform, 200ms top, 200ms -webkit-transform;
|
||||
}
|
||||
.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {
|
||||
margin: 0 4px;
|
||||
}
|
||||
.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
|
||||
left: 50%;
|
||||
-webkit-transform: translateX(-50%);
|
||||
-ms-transform: translateX(-50%);
|
||||
transform: translateX(-50%);
|
||||
white-space: nowrap;
|
||||
}
|
||||
.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
|
||||
-webkit-transition: 200ms left, 200ms -webkit-transform;
|
||||
transition: 200ms left, 200ms -webkit-transform;
|
||||
-o-transition: 200ms transform, 200ms left;
|
||||
transition: 200ms transform, 200ms left;
|
||||
transition: 200ms transform, 200ms left, 200ms -webkit-transform;
|
||||
}
|
||||
.swiper-container-horizontal.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
|
||||
-webkit-transition: 200ms right, 200ms -webkit-transform;
|
||||
transition: 200ms right, 200ms -webkit-transform;
|
||||
-o-transition: 200ms transform, 200ms right;
|
||||
transition: 200ms transform, 200ms right;
|
||||
transition: 200ms transform, 200ms right, 200ms -webkit-transform;
|
||||
}
|
||||
/* Progress */
|
||||
.swiper-pagination-progressbar {
|
||||
background: rgba(0, 0, 0, 0.25);
|
||||
position: absolute;
|
||||
}
|
||||
.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
|
||||
background: #007aff;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
-webkit-transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
transform: scale(0);
|
||||
-webkit-transform-origin: left top;
|
||||
-ms-transform-origin: left top;
|
||||
transform-origin: left top;
|
||||
}
|
||||
.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
|
||||
-webkit-transform-origin: right top;
|
||||
-ms-transform-origin: right top;
|
||||
transform-origin: right top;
|
||||
}
|
||||
.swiper-container-horizontal > .swiper-pagination-progressbar,
|
||||
.swiper-container-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {
|
||||
width: 100%;
|
||||
height: 4px;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.swiper-container-vertical > .swiper-pagination-progressbar,
|
||||
.swiper-container-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {
|
||||
width: 4px;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.swiper-pagination-white .swiper-pagination-bullet-active {
|
||||
background: #ffffff;
|
||||
}
|
||||
.swiper-pagination-progressbar.swiper-pagination-white {
|
||||
background: rgba(255, 255, 255, 0.25);
|
||||
}
|
||||
.swiper-pagination-progressbar.swiper-pagination-white .swiper-pagination-progressbar-fill {
|
||||
background: #ffffff;
|
||||
}
|
||||
.swiper-pagination-black .swiper-pagination-bullet-active {
|
||||
background: #000000;
|
||||
}
|
||||
.swiper-pagination-progressbar.swiper-pagination-black {
|
||||
background: rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.swiper-pagination-progressbar.swiper-pagination-black .swiper-pagination-progressbar-fill {
|
||||
background: #000000;
|
||||
}
|
||||
.swiper-pagination-lock {
|
||||
display: none;
|
||||
}
|
||||
/* Scrollbar */
|
||||
.swiper-scrollbar {
|
||||
border-radius: 10px;
|
||||
position: relative;
|
||||
-ms-touch-action: none;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.swiper-container-horizontal > .swiper-scrollbar {
|
||||
position: absolute;
|
||||
left: 1%;
|
||||
bottom: 3px;
|
||||
z-index: 50;
|
||||
height: 5px;
|
||||
width: 98%;
|
||||
}
|
||||
.swiper-container-vertical > .swiper-scrollbar {
|
||||
position: absolute;
|
||||
right: 3px;
|
||||
top: 1%;
|
||||
z-index: 50;
|
||||
width: 5px;
|
||||
height: 98%;
|
||||
}
|
||||
.swiper-scrollbar-drag {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
border-radius: 10px;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
.swiper-scrollbar-cursor-drag {
|
||||
cursor: move;
|
||||
}
|
||||
.swiper-scrollbar-lock {
|
||||
display: none;
|
||||
}
|
||||
.swiper-zoom-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-pack: center;
|
||||
-webkit-justify-content: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-webkit-align-items: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
.swiper-zoom-container > img,
|
||||
.swiper-zoom-container > svg,
|
||||
.swiper-zoom-container > canvas {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
-o-object-fit: contain;
|
||||
object-fit: contain;
|
||||
}
|
||||
.swiper-slide-zoomed {
|
||||
cursor: move;
|
||||
}
|
||||
/* Preloader */
|
||||
.swiper-lazy-preloader {
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-left: -21px;
|
||||
margin-top: -21px;
|
||||
z-index: 10;
|
||||
-webkit-transform-origin: 50%;
|
||||
-ms-transform-origin: 50%;
|
||||
transform-origin: 50%;
|
||||
-webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite;
|
||||
animation: swiper-preloader-spin 1s steps(12, end) infinite;
|
||||
}
|
||||
.swiper-lazy-preloader:after {
|
||||
display: block;
|
||||
content: '';
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
|
||||
background-position: 50%;
|
||||
background-size: 100%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
.swiper-lazy-preloader-white:after {
|
||||
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");
|
||||
}
|
||||
@-webkit-keyframes swiper-preloader-spin {
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
@keyframes swiper-preloader-spin {
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
/* a11y */
|
||||
.swiper-container .swiper-notification {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
pointer-events: none;
|
||||
opacity: 0;
|
||||
z-index: -1000;
|
||||
}
|
||||
.swiper-container-fade.swiper-container-free-mode .swiper-slide {
|
||||
-webkit-transition-timing-function: ease-out;
|
||||
-o-transition-timing-function: ease-out;
|
||||
transition-timing-function: ease-out;
|
||||
}
|
||||
.swiper-container-fade .swiper-slide {
|
||||
pointer-events: none;
|
||||
-webkit-transition-property: opacity;
|
||||
-o-transition-property: opacity;
|
||||
transition-property: opacity;
|
||||
}
|
||||
.swiper-container-fade .swiper-slide .swiper-slide {
|
||||
pointer-events: none;
|
||||
}
|
||||
.swiper-container-fade .swiper-slide-active,
|
||||
.swiper-container-fade .swiper-slide-active .swiper-slide-active {
|
||||
pointer-events: auto;
|
||||
}
|
||||
.swiper-container-cube {
|
||||
overflow: visible;
|
||||
}
|
||||
.swiper-container-cube .swiper-slide {
|
||||
pointer-events: none;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
z-index: 1;
|
||||
visibility: hidden;
|
||||
-webkit-transform-origin: 0 0;
|
||||
-ms-transform-origin: 0 0;
|
||||
transform-origin: 0 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.swiper-container-cube .swiper-slide .swiper-slide {
|
||||
pointer-events: none;
|
||||
}
|
||||
.swiper-container-cube.swiper-container-rtl .swiper-slide {
|
||||
-webkit-transform-origin: 100% 0;
|
||||
-ms-transform-origin: 100% 0;
|
||||
transform-origin: 100% 0;
|
||||
}
|
||||
.swiper-container-cube .swiper-slide-active,
|
||||
.swiper-container-cube .swiper-slide-active .swiper-slide-active {
|
||||
pointer-events: auto;
|
||||
}
|
||||
.swiper-container-cube .swiper-slide-active,
|
||||
.swiper-container-cube .swiper-slide-next,
|
||||
.swiper-container-cube .swiper-slide-prev,
|
||||
.swiper-container-cube .swiper-slide-next + .swiper-slide {
|
||||
pointer-events: auto;
|
||||
visibility: visible;
|
||||
}
|
||||
.swiper-container-cube .swiper-slide-shadow-top,
|
||||
.swiper-container-cube .swiper-slide-shadow-bottom,
|
||||
.swiper-container-cube .swiper-slide-shadow-left,
|
||||
.swiper-container-cube .swiper-slide-shadow-right {
|
||||
z-index: 0;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
}
|
||||
.swiper-container-cube .swiper-cube-shadow {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #000;
|
||||
opacity: 0.6;
|
||||
-webkit-filter: blur(50px);
|
||||
filter: blur(50px);
|
||||
z-index: 0;
|
||||
}
|
||||
.swiper-container-flip {
|
||||
overflow: visible;
|
||||
}
|
||||
.swiper-container-flip .swiper-slide {
|
||||
pointer-events: none;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
z-index: 1;
|
||||
}
|
||||
.swiper-container-flip .swiper-slide .swiper-slide {
|
||||
pointer-events: none;
|
||||
}
|
||||
.swiper-container-flip .swiper-slide-active,
|
||||
.swiper-container-flip .swiper-slide-active .swiper-slide-active {
|
||||
pointer-events: auto;
|
||||
}
|
||||
.swiper-container-flip .swiper-slide-shadow-top,
|
||||
.swiper-container-flip .swiper-slide-shadow-bottom,
|
||||
.swiper-container-flip .swiper-slide-shadow-left,
|
||||
.swiper-container-flip .swiper-slide-shadow-right {
|
||||
z-index: 0;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
}
|
||||
.swiper-container-coverflow .swiper-wrapper {
|
||||
/* Windows 8 IE 10 fix */
|
||||
-ms-perspective: 1200px;
|
||||
}
|
||||
250
assets/js/bootstrap-datepicker.min.js
vendored
|
|
@ -1,250 +0,0 @@
|
|||
/*!
|
||||
* Datepicker for Bootstrap v1.6.4 (https://github.com/eternicode/bootstrap-datepicker)
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
||||
*/
|
||||
(function(factory){"use strict";if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof exports==='object'){factory(require('jquery'))}else{factory(jQuery)}}(function($,undefined){"use strict";function UTCDate(){return new Date(Date.UTC.apply(Date,arguments))}
|
||||
function UTCToday(){var today=new Date();return UTCDate(today.getFullYear(),today.getMonth(),today.getDate())}
|
||||
function isUTCEquals(date1,date2){return(date1.getUTCFullYear()===date2.getUTCFullYear()&&date1.getUTCMonth()===date2.getUTCMonth()&&date1.getUTCDate()===date2.getUTCDate())}
|
||||
function alias(method){return function(){return this[method].apply(this,arguments)}}
|
||||
function isValidDate(d){return d&&!isNaN(d.getTime())}
|
||||
var DateArray=(function(){var extras={get:function(i){return this.slice(i)[0]},contains:function(d){var val=d&&d.valueOf();for(var i=0,l=this.length;i<l;i++)
|
||||
if(this[i].valueOf()===val)
|
||||
return i;return-1},remove:function(i){this.splice(i,1)},replace:function(new_array){if(!new_array)
|
||||
return;if(!$.isArray(new_array))
|
||||
new_array=[new_array];this.clear();this.push.apply(this,new_array)},clear:function(){this.length=0},copy:function(){var a=new DateArray();a.replace(this);return a}};return function(){var a=[];a.push.apply(a,arguments);$.extend(a,extras);return a}})();var Datepicker=function(element,options){$(element).data('datepicker',this);this._process_options(options);this.dates=new DateArray();this.viewDate=this.o.defaultViewDate;this.focusDate=null;this.element=$(element);this.isInput=this.element.is('input');this.inputField=this.isInput?this.element:this.element.find('input');this.component=this.element.hasClass('date')?this.element.find('.add-on, .input-group-addon, .btn'):!1;this.hasInput=this.component&&this.inputField.length;if(this.component&&this.component.length===0)
|
||||
this.component=!1;this.isInline=!this.component&&this.element.is('div');this.picker=$(DPGlobal.template);if(this._check_template(this.o.templates.leftArrow)){this.picker.find('.prev').html(this.o.templates.leftArrow)}
|
||||
if(this._check_template(this.o.templates.rightArrow)){this.picker.find('.next').html(this.o.templates.rightArrow)}
|
||||
this._buildEvents();this._attachEvents();if(this.isInline){this.picker.addClass('datepicker-inline').appendTo(this.element)}
|
||||
else{this.picker.addClass('datepicker-dropdown dropdown-menu')}
|
||||
if(this.o.rtl){this.picker.addClass('datepicker-rtl')}
|
||||
this.viewMode=this.o.startView;if(this.o.calendarWeeks)
|
||||
this.picker.find('thead .datepicker-title, tfoot .today, tfoot .clear').attr('colspan',function(i,val){return parseInt(val)+1});this._allow_update=!1;this.setStartDate(this._o.startDate);this.setEndDate(this._o.endDate);this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);this.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted);this.setDatesDisabled(this.o.datesDisabled);this.fillDow();this.fillMonths();this._allow_update=!0;this.update();this.showMode();if(this.isInline){this.show()}};Datepicker.prototype={constructor:Datepicker,_resolveViewName:function(view,default_value){if(view===0||view==='days'||view==='month'){return 0}
|
||||
if(view===1||view==='months'||view==='year'){return 1}
|
||||
if(view===2||view==='years'||view==='decade'){return 2}
|
||||
if(view===3||view==='decades'||view==='century'){return 3}
|
||||
if(view===4||view==='centuries'||view==='millennium'){return 4}
|
||||
return default_value===undefined?!1:default_value},_check_template:function(tmp){try{if(tmp===undefined||tmp===""){return!1}
|
||||
if((tmp.match(/[<>]/g)||[]).length<=0){return!0}
|
||||
var jDom=$(tmp);return jDom.length>0}
|
||||
catch(ex){return!1}},_process_options:function(opts){this._o=$.extend({},this._o,opts);var o=this.o=$.extend({},this._o);var lang=o.language;if(!dates[lang]){lang=lang.split('-')[0];if(!dates[lang])
|
||||
lang=defaults.language}
|
||||
o.language=lang;o.startView=this._resolveViewName(o.startView,0);o.minViewMode=this._resolveViewName(o.minViewMode,0);o.maxViewMode=this._resolveViewName(o.maxViewMode,4);o.startView=Math.min(o.startView,o.maxViewMode);o.startView=Math.max(o.startView,o.minViewMode);if(o.multidate!==!0){o.multidate=Number(o.multidate)||!1;if(o.multidate!==!1)
|
||||
o.multidate=Math.max(0,o.multidate)}
|
||||
o.multidateSeparator=String(o.multidateSeparator);o.weekStart%=7;o.weekEnd=(o.weekStart+6)%7;var format=DPGlobal.parseFormat(o.format);if(o.startDate!==-Infinity){if(!!o.startDate){if(o.startDate instanceof Date)
|
||||
o.startDate=this._local_to_utc(this._zero_time(o.startDate));else o.startDate=DPGlobal.parseDate(o.startDate,format,o.language,o.assumeNearbyYear)}
|
||||
else{o.startDate=-Infinity}}
|
||||
if(o.endDate!==Infinity){if(!!o.endDate){if(o.endDate instanceof Date)
|
||||
o.endDate=this._local_to_utc(this._zero_time(o.endDate));else o.endDate=DPGlobal.parseDate(o.endDate,format,o.language,o.assumeNearbyYear)}
|
||||
else{o.endDate=Infinity}}
|
||||
o.daysOfWeekDisabled=o.daysOfWeekDisabled||[];if(!$.isArray(o.daysOfWeekDisabled))
|
||||
o.daysOfWeekDisabled=o.daysOfWeekDisabled.split(/[,\s]*/);o.daysOfWeekDisabled=$.map(o.daysOfWeekDisabled,function(d){return parseInt(d,10)});o.daysOfWeekHighlighted=o.daysOfWeekHighlighted||[];if(!$.isArray(o.daysOfWeekHighlighted))
|
||||
o.daysOfWeekHighlighted=o.daysOfWeekHighlighted.split(/[,\s]*/);o.daysOfWeekHighlighted=$.map(o.daysOfWeekHighlighted,function(d){return parseInt(d,10)});o.datesDisabled=o.datesDisabled||[];if(!$.isArray(o.datesDisabled)){o.datesDisabled=[o.datesDisabled]}
|
||||
o.datesDisabled=$.map(o.datesDisabled,function(d){return DPGlobal.parseDate(d,format,o.language,o.assumeNearbyYear)});var plc=String(o.orientation).toLowerCase().split(/\s+/g),_plc=o.orientation.toLowerCase();plc=$.grep(plc,function(word){return/^auto|left|right|top|bottom$/.test(word)});o.orientation={x:'auto',y:'auto'};if(!_plc||_plc==='auto');else if(plc.length===1){switch(plc[0]){case 'top':case 'bottom':o.orientation.y=plc[0];break;case 'left':case 'right':o.orientation.x=plc[0];break}}
|
||||
else{_plc=$.grep(plc,function(word){return/^left|right$/.test(word)});o.orientation.x=_plc[0]||'auto';_plc=$.grep(plc,function(word){return/^top|bottom$/.test(word)});o.orientation.y=_plc[0]||'auto'}
|
||||
if(o.defaultViewDate){var year=o.defaultViewDate.year||new Date().getFullYear();var month=o.defaultViewDate.month||0;var day=o.defaultViewDate.day||1;o.defaultViewDate=UTCDate(year,month,day)}else{o.defaultViewDate=UTCToday()}},_events:[],_secondaryEvents:[],_applyEvents:function(evs){for(var i=0,el,ch,ev;i<evs.length;i++){el=evs[i][0];if(evs[i].length===2){ch=undefined;ev=evs[i][1]}
|
||||
else if(evs[i].length===3){ch=evs[i][1];ev=evs[i][2]}
|
||||
el.on(ev,ch)}},_unapplyEvents:function(evs){for(var i=0,el,ev,ch;i<evs.length;i++){el=evs[i][0];if(evs[i].length===2){ch=undefined;ev=evs[i][1]}
|
||||
else if(evs[i].length===3){ch=evs[i][1];ev=evs[i][2]}
|
||||
el.off(ev,ch)}},_buildEvents:function(){var events={keyup:$.proxy(function(e){if($.inArray(e.keyCode,[27,37,39,38,40,32,13,9])===-1)
|
||||
this.update()},this),keydown:$.proxy(this.keydown,this),paste:$.proxy(this.paste,this)};if(this.o.showOnFocus===!0){events.focus=$.proxy(this.show,this)}
|
||||
if(this.isInput){this._events=[[this.element,events]]}
|
||||
else if(this.component&&this.hasInput){this._events=[[this.inputField,events],[this.component,{click:$.proxy(this.show,this)}]]}
|
||||
else{this._events=[[this.element,{click:$.proxy(this.show,this),keydown:$.proxy(this.keydown,this)}]]}
|
||||
this._events.push([this.element,'*',{blur:$.proxy(function(e){this._focused_from=e.target},this)}],[this.element,{blur:$.proxy(function(e){this._focused_from=e.target},this)}]);if(this.o.immediateUpdates){this._events.push([this.element,{'changeYear changeMonth':$.proxy(function(e){this.update(e.date)},this)}])}
|
||||
this._secondaryEvents=[[this.picker,{click:$.proxy(this.click,this)}],[$(window),{resize:$.proxy(this.place,this)}],[$(document),{mousedown:$.proxy(function(e){if(!(this.element.is(e.target)||this.element.find(e.target).length||this.picker.is(e.target)||this.picker.find(e.target).length||this.isInline)){this.hide()}},this)}]]},_attachEvents:function(){this._detachEvents();this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents();this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(event,altdate){var date=altdate||this.dates.get(-1),local_date=this._utc_to_local(date);this.element.trigger({type:event,date:local_date,dates:$.map(this.dates,this._utc_to_local),format:$.proxy(function(ix,format){if(arguments.length===0){ix=this.dates.length-1;format=this.o.format}
|
||||
else if(typeof ix==='string'){format=ix;ix=this.dates.length-1}
|
||||
format=format||this.o.format;var date=this.dates.get(ix);return DPGlobal.formatDate(date,format,this.o.language)},this)})},show:function(){if(this.inputField.prop('disabled')||(this.inputField.prop('readonly')&&this.o.enableOnReadonly===!1))
|
||||
return;if(!this.isInline)
|
||||
this.picker.appendTo(this.o.container);this.place();this.picker.show();this._attachSecondaryEvents();this._trigger('show');if((window.navigator.msMaxTouchPoints||'ontouchstart' in document)&&this.o.disableTouchKeyboard){$(this.element).blur()}
|
||||
return this},hide:function(){if(this.isInline||!this.picker.is(':visible'))
|
||||
return this;this.focusDate=null;this.picker.hide().detach();this._detachSecondaryEvents();this.viewMode=this.o.startView;this.showMode();if(this.o.forceParse&&this.inputField.val())
|
||||
this.setValue();this._trigger('hide');return this},destroy:function(){this.hide();this._detachEvents();this._detachSecondaryEvents();this.picker.remove();delete this.element.data().datepicker;if(!this.isInput){delete this.element.data().date}
|
||||
return this},paste:function(evt){var dateString;if(evt.originalEvent.clipboardData&&evt.originalEvent.clipboardData.types&&$.inArray('text/plain',evt.originalEvent.clipboardData.types)!==-1){dateString=evt.originalEvent.clipboardData.getData('text/plain')}
|
||||
else if(window.clipboardData){dateString=window.clipboardData.getData('Text')}
|
||||
else{return}
|
||||
this.setDate(dateString);this.update();evt.preventDefault()},_utc_to_local:function(utc){return utc&&new Date(utc.getTime()+(utc.getTimezoneOffset()*60000))},_local_to_utc:function(local){return local&&new Date(local.getTime()-(local.getTimezoneOffset()*60000))},_zero_time:function(local){return local&&new Date(local.getFullYear(),local.getMonth(),local.getDate())},_zero_utc_time:function(utc){return utc&&new Date(Date.UTC(utc.getUTCFullYear(),utc.getUTCMonth(),utc.getUTCDate()))},getDates:function(){return $.map(this.dates,this._utc_to_local)},getUTCDates:function(){return $.map(this.dates,function(d){return new Date(d)})},getDate:function(){return this._utc_to_local(this.getUTCDate())},getUTCDate:function(){var selected_date=this.dates.get(-1);if(typeof selected_date!=='undefined'){return new Date(selected_date)}else{return null}},clearDates:function(){if(this.inputField){this.inputField.val('')}
|
||||
this.update();this._trigger('changeDate');if(this.o.autoclose){this.hide()}},setDates:function(){var args=$.isArray(arguments[0])?arguments[0]:arguments;this.update.apply(this,args);this._trigger('changeDate');this.setValue();return this},setUTCDates:function(){var args=$.isArray(arguments[0])?arguments[0]:arguments;this.update.apply(this,$.map(args,this._utc_to_local));this._trigger('changeDate');this.setValue();return this},setDate:alias('setDates'),setUTCDate:alias('setUTCDates'),remove:alias('destroy'),setValue:function(){var formatted=this.getFormattedDate();this.inputField.val(formatted);return this},getFormattedDate:function(format){if(format===undefined)
|
||||
format=this.o.format;var lang=this.o.language;return $.map(this.dates,function(d){return DPGlobal.formatDate(d,format,lang)}).join(this.o.multidateSeparator)},getStartDate:function(){return this.o.startDate},setStartDate:function(startDate){this._process_options({startDate:startDate});this.update();this.updateNavArrows();return this},getEndDate:function(){return this.o.endDate},setEndDate:function(endDate){this._process_options({endDate:endDate});this.update();this.updateNavArrows();return this},setDaysOfWeekDisabled:function(daysOfWeekDisabled){this._process_options({daysOfWeekDisabled:daysOfWeekDisabled});this.update();this.updateNavArrows();return this},setDaysOfWeekHighlighted:function(daysOfWeekHighlighted){this._process_options({daysOfWeekHighlighted:daysOfWeekHighlighted});this.update();return this},setDatesDisabled:function(datesDisabled){this._process_options({datesDisabled:datesDisabled});this.update();this.updateNavArrows()},place:function(){if(this.isInline)
|
||||
return this;var calendarWidth=this.picker.outerWidth(),calendarHeight=this.picker.outerHeight(),visualPadding=10,container=$(this.o.container),windowWidth=container.width(),scrollTop=this.o.container==='body'?$(document).scrollTop():container.scrollTop(),appendOffset=container.offset();var parentsZindex=[];this.element.parents().each(function(){var itemZIndex=$(this).css('z-index');if(itemZIndex!=='auto'&&itemZIndex!==0)parentsZindex.push(parseInt(itemZIndex))});var zIndex=Math.max.apply(Math,parentsZindex)+this.o.zIndexOffset;var offset=this.component?this.component.parent().offset():this.element.offset();var height=this.component?this.component.outerHeight(!0):this.element.outerHeight(!1);var width=this.component?this.component.outerWidth(!0):this.element.outerWidth(!1);var left=offset.left-appendOffset.left,top=offset.top-appendOffset.top;if(this.o.container!=='body'){top+=scrollTop}
|
||||
this.picker.removeClass('datepicker-orient-top datepicker-orient-bottom '+'datepicker-orient-right datepicker-orient-left');if(this.o.orientation.x!=='auto'){this.picker.addClass('datepicker-orient-'+this.o.orientation.x);if(this.o.orientation.x==='right')
|
||||
left-=calendarWidth-width}
|
||||
else{if(offset.left<0){this.picker.addClass('datepicker-orient-left');left-=offset.left-visualPadding}else if(left+calendarWidth>windowWidth){this.picker.addClass('datepicker-orient-right');left+=width-calendarWidth}else{this.picker.addClass('datepicker-orient-left')}}
|
||||
var yorient=this.o.orientation.y,top_overflow;if(yorient==='auto'){top_overflow=-scrollTop+top-calendarHeight;yorient=top_overflow<0?'bottom':'top'}
|
||||
this.picker.addClass('datepicker-orient-'+yorient);if(yorient==='top')
|
||||
top-=calendarHeight+parseInt(this.picker.css('padding-top'));else top+=height;if(this.o.rtl){var right=windowWidth-(left+width);this.picker.css({top:top,right:right,zIndex:zIndex})}else{this.picker.css({top:top,left:left,zIndex:zIndex})}
|
||||
return this},_allow_update:!0,update:function(){if(!this._allow_update)
|
||||
return this;var oldDates=this.dates.copy(),dates=[],fromArgs=!1;if(arguments.length){$.each(arguments,$.proxy(function(i,date){if(date instanceof Date)
|
||||
date=this._local_to_utc(date);dates.push(date)},this));fromArgs=!0}
|
||||
else{dates=this.isInput?this.element.val():this.element.data('date')||this.inputField.val();if(dates&&this.o.multidate)
|
||||
dates=dates.split(this.o.multidateSeparator);else dates=[dates];delete this.element.data().date}
|
||||
dates=$.map(dates,$.proxy(function(date){return DPGlobal.parseDate(date,this.o.format,this.o.language,this.o.assumeNearbyYear)},this));dates=$.grep(dates,$.proxy(function(date){return(!this.dateWithinRange(date)||!date)},this),!0);this.dates.replace(dates);if(this.dates.length)
|
||||
this.viewDate=new Date(this.dates.get(-1));else if(this.viewDate<this.o.startDate)
|
||||
this.viewDate=new Date(this.o.startDate);else if(this.viewDate>this.o.endDate)
|
||||
this.viewDate=new Date(this.o.endDate);else this.viewDate=this.o.defaultViewDate;if(fromArgs){this.setValue()}
|
||||
else if(dates.length){if(String(oldDates)!==String(this.dates))
|
||||
this._trigger('changeDate')}
|
||||
if(!this.dates.length&&oldDates.length)
|
||||
this._trigger('clearDate');this.fill();this.element.change();return this},fillDow:function(){var dowCnt=this.o.weekStart,html='<tr>';if(this.o.calendarWeeks){this.picker.find('.datepicker-days .datepicker-switch').attr('colspan',function(i,val){return parseInt(val)+1});html+='<th class="cw"> </th>'}
|
||||
while(dowCnt<this.o.weekStart+7){html+='<th class="dow';if($.inArray(dowCnt,this.o.daysOfWeekDisabled)>-1)
|
||||
html+=' disabled';html+='">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>'}
|
||||
html+='</tr>';this.picker.find('.datepicker-days thead').append(html)},fillMonths:function(){var localDate=this._utc_to_local(this.viewDate);var html='',i=0;while(i<12){var focused=localDate&&localDate.getMonth()===i?' focused':'';html+='<span class="month'+focused+'">'+dates[this.o.language].monthsShort[i++]+'</span>'}
|
||||
this.picker.find('.datepicker-months td').html(html)},setRange:function(range){if(!range||!range.length)
|
||||
delete this.range;else this.range=$.map(range,function(d){return d.valueOf()});this.fill()},getClassNames:function(date){var cls=[],year=this.viewDate.getUTCFullYear(),month=this.viewDate.getUTCMonth(),today=new Date();if(date.getUTCFullYear()<year||(date.getUTCFullYear()===year&&date.getUTCMonth()<month)){cls.push('old')}
|
||||
else if(date.getUTCFullYear()>year||(date.getUTCFullYear()===year&&date.getUTCMonth()>month)){cls.push('new')}
|
||||
if(this.focusDate&&date.valueOf()===this.focusDate.valueOf())
|
||||
cls.push('focused');if(this.o.todayHighlight&&date.getUTCFullYear()===today.getFullYear()&&date.getUTCMonth()===today.getMonth()&&date.getUTCDate()===today.getDate()){cls.push('today')}
|
||||
if(this.dates.contains(date)!==-1)
|
||||
cls.push('active');if(!this.dateWithinRange(date)){cls.push('disabled')}
|
||||
if(this.dateIsDisabled(date)){cls.push('disabled','disabled-date')}
|
||||
if($.inArray(date.getUTCDay(),this.o.daysOfWeekHighlighted)!==-1){cls.push('highlighted')}
|
||||
if(this.range){if(date>this.range[0]&&date<this.range[this.range.length-1]){cls.push('range')}
|
||||
if($.inArray(date.valueOf(),this.range)!==-1){cls.push('selected')}
|
||||
if(date.valueOf()===this.range[0]){cls.push('range-start')}
|
||||
if(date.valueOf()===this.range[this.range.length-1]){cls.push('range-end')}}
|
||||
return cls},_fill_yearsView:function(selector,cssClass,factor,step,currentYear,startYear,endYear,callback){var html,view,year,steps,startStep,endStep,thisYear,i,classes,tooltip,before;html='';view=this.picker.find(selector);year=parseInt(currentYear/factor,10)*factor;startStep=parseInt(startYear/step,10)*step;endStep=parseInt(endYear/step,10)*step;steps=$.map(this.dates,function(d){return parseInt(d.getUTCFullYear()/step,10)*step});view.find('.datepicker-switch').text(year+'-'+(year+step*9));thisYear=year-step;for(i=-1;i<11;i+=1){classes=[cssClass];tooltip=null;if(i===-1){classes.push('old')}else if(i===10){classes.push('new')}
|
||||
if($.inArray(thisYear,steps)!==-1){classes.push('active')}
|
||||
if(thisYear<startStep||thisYear>endStep){classes.push('disabled')}
|
||||
if(thisYear===this.viewDate.getFullYear()){classes.push('focused')}
|
||||
if(callback!==$.noop){before=callback(new Date(thisYear,0,1));if(before===undefined){before={}}else if(typeof(before)==='boolean'){before={enabled:before}}else if(typeof(before)==='string'){before={classes:before}}
|
||||
if(before.enabled===!1){classes.push('disabled')}
|
||||
if(before.classes){classes=classes.concat(before.classes.split(/\s+/))}
|
||||
if(before.tooltip){tooltip=before.tooltip}}
|
||||
html+='<span class="'+classes.join(' ')+'"'+(tooltip?' title="'+tooltip+'"':'')+'>'+thisYear+'</span>';thisYear+=step}
|
||||
view.find('td').html(html)},fill:function(){var d=new Date(this.viewDate),year=d.getUTCFullYear(),month=d.getUTCMonth(),startYear=this.o.startDate!==-Infinity?this.o.startDate.getUTCFullYear():-Infinity,startMonth=this.o.startDate!==-Infinity?this.o.startDate.getUTCMonth():-Infinity,endYear=this.o.endDate!==Infinity?this.o.endDate.getUTCFullYear():Infinity,endMonth=this.o.endDate!==Infinity?this.o.endDate.getUTCMonth():Infinity,todaytxt=dates[this.o.language].today||dates.en.today||'',cleartxt=dates[this.o.language].clear||dates.en.clear||'',titleFormat=dates[this.o.language].titleFormat||dates.en.titleFormat,tooltip,before;if(isNaN(year)||isNaN(month))
|
||||
return;this.picker.find('.datepicker-days .datepicker-switch').text(DPGlobal.formatDate(d,titleFormat,this.o.language));this.picker.find('tfoot .today').text(todaytxt).toggle(this.o.todayBtn!==!1);this.picker.find('tfoot .clear').text(cleartxt).toggle(this.o.clearBtn!==!1);this.picker.find('thead .datepicker-title').text(this.o.title).toggle(this.o.title!=='');this.updateNavArrows();this.fillMonths();var prevMonth=UTCDate(year,month-1,28),day=DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(),prevMonth.getUTCMonth());prevMonth.setUTCDate(day);prevMonth.setUTCDate(day-(prevMonth.getUTCDay()-this.o.weekStart+7)%7);var nextMonth=new Date(prevMonth);if(prevMonth.getUTCFullYear()<100){nextMonth.setUTCFullYear(prevMonth.getUTCFullYear())}
|
||||
nextMonth.setUTCDate(nextMonth.getUTCDate()+42);nextMonth=nextMonth.valueOf();var html=[];var clsName;while(prevMonth.valueOf()<nextMonth){if(prevMonth.getUTCDay()===this.o.weekStart){html.push('<tr>');if(this.o.calendarWeeks){var
|
||||
ws=new Date(+prevMonth+(this.o.weekStart-prevMonth.getUTCDay()-7)%7*864e5),th=new Date(Number(ws)+(7+4-ws.getUTCDay())%7*864e5),yth=new Date(Number(yth=UTCDate(th.getUTCFullYear(),0,1))+(7+4-yth.getUTCDay())%7*864e5),calWeek=(th-yth)/864e5/7+1;html.push('<td class="cw">'+calWeek+'</td>')}}
|
||||
clsName=this.getClassNames(prevMonth);clsName.push('day');if(this.o.beforeShowDay!==$.noop){before=this.o.beforeShowDay(this._utc_to_local(prevMonth));if(before===undefined)
|
||||
before={};else if(typeof(before)==='boolean')
|
||||
before={enabled:before};else if(typeof(before)==='string')
|
||||
before={classes:before};if(before.enabled===!1)
|
||||
clsName.push('disabled');if(before.classes)
|
||||
clsName=clsName.concat(before.classes.split(/\s+/));if(before.tooltip)
|
||||
tooltip=before.tooltip}
|
||||
if($.isFunction($.uniqueSort)){clsName=$.uniqueSort(clsName)}else{clsName=$.unique(clsName)}
|
||||
html.push('<td class="'+clsName.join(' ')+'"'+(tooltip?' title="'+tooltip+'"':'')+'>'+prevMonth.getUTCDate()+'</td>');tooltip=null;if(prevMonth.getUTCDay()===this.o.weekEnd){html.push('</tr>')}
|
||||
prevMonth.setUTCDate(prevMonth.getUTCDate()+1)}
|
||||
this.picker.find('.datepicker-days tbody').empty().append(html.join(''));var monthsTitle=dates[this.o.language].monthsTitle||dates.en.monthsTitle||'Months';var months=this.picker.find('.datepicker-months').find('.datepicker-switch').text(this.o.maxViewMode<2?monthsTitle:year).end().find('span').removeClass('active');$.each(this.dates,function(i,d){if(d.getUTCFullYear()===year)
|
||||
months.eq(d.getUTCMonth()).addClass('active')});if(year<startYear||year>endYear){months.addClass('disabled')}
|
||||
if(year===startYear){months.slice(0,startMonth).addClass('disabled')}
|
||||
if(year===endYear){months.slice(endMonth+1).addClass('disabled')}
|
||||
if(this.o.beforeShowMonth!==$.noop){var that=this;$.each(months,function(i,month){var moDate=new Date(year,i,1);var before=that.o.beforeShowMonth(moDate);if(before===undefined)
|
||||
before={};else if(typeof(before)==='boolean')
|
||||
before={enabled:before};else if(typeof(before)==='string')
|
||||
before={classes:before};if(before.enabled===!1&&!$(month).hasClass('disabled'))
|
||||
$(month).addClass('disabled');if(before.classes)
|
||||
$(month).addClass(before.classes);if(before.tooltip)
|
||||
$(month).prop('title',before.tooltip)})}
|
||||
this._fill_yearsView('.datepicker-years','year',10,1,year,startYear,endYear,this.o.beforeShowYear);this._fill_yearsView('.datepicker-decades','decade',100,10,year,startYear,endYear,this.o.beforeShowDecade);this._fill_yearsView('.datepicker-centuries','century',1000,100,year,startYear,endYear,this.o.beforeShowCentury)},updateNavArrows:function(){if(!this._allow_update)
|
||||
return;var d=new Date(this.viewDate),year=d.getUTCFullYear(),month=d.getUTCMonth();switch(this.viewMode){case 0:if(this.o.startDate!==-Infinity&&year<=this.o.startDate.getUTCFullYear()&&month<=this.o.startDate.getUTCMonth()){this.picker.find('.prev').css({visibility:'hidden'})}
|
||||
else{this.picker.find('.prev').css({visibility:'visible'})}
|
||||
if(this.o.endDate!==Infinity&&year>=this.o.endDate.getUTCFullYear()&&month>=this.o.endDate.getUTCMonth()){this.picker.find('.next').css({visibility:'hidden'})}
|
||||
else{this.picker.find('.next').css({visibility:'visible'})}
|
||||
break;case 1:case 2:case 3:case 4:if(this.o.startDate!==-Infinity&&year<=this.o.startDate.getUTCFullYear()||this.o.maxViewMode<2){this.picker.find('.prev').css({visibility:'hidden'})}
|
||||
else{this.picker.find('.prev').css({visibility:'visible'})}
|
||||
if(this.o.endDate!==Infinity&&year>=this.o.endDate.getUTCFullYear()||this.o.maxViewMode<2){this.picker.find('.next').css({visibility:'hidden'})}
|
||||
else{this.picker.find('.next').css({visibility:'visible'})}
|
||||
break}},click:function(e){e.preventDefault();e.stopPropagation();var target,dir,day,year,month,monthChanged,yearChanged;target=$(e.target);if(target.hasClass('datepicker-switch')){this.showMode(1)}
|
||||
var navArrow=target.closest('.prev, .next');if(navArrow.length>0){dir=DPGlobal.modes[this.viewMode].navStep*(navArrow.hasClass('prev')?-1:1);if(this.viewMode===0){this.viewDate=this.moveMonth(this.viewDate,dir);this._trigger('changeMonth',this.viewDate)}else{this.viewDate=this.moveYear(this.viewDate,dir);if(this.viewMode===1){this._trigger('changeYear',this.viewDate)}}
|
||||
this.fill()}
|
||||
if(target.hasClass('today')&&!target.hasClass('day')){this.showMode(-2);this._setDate(UTCToday(),this.o.todayBtn==='linked'?null:'view')}
|
||||
if(target.hasClass('clear')){this.clearDates()}
|
||||
if(!target.hasClass('disabled')){if(target.hasClass('day')){day=parseInt(target.text(),10)||1;year=this.viewDate.getUTCFullYear();month=this.viewDate.getUTCMonth();if(target.hasClass('old')){if(month===0){month=11;year=year-1;monthChanged=!0;yearChanged=!0}else{month=month-1;monthChanged=!0}}
|
||||
if(target.hasClass('new')){if(month===11){month=0;year=year+1;monthChanged=!0;yearChanged=!0}else{month=month+1;monthChanged=!0}}
|
||||
this._setDate(UTCDate(year,month,day));if(yearChanged){this._trigger('changeYear',this.viewDate)}
|
||||
if(monthChanged){this._trigger('changeMonth',this.viewDate)}}
|
||||
if(target.hasClass('month')){this.viewDate.setUTCDate(1);day=1;month=target.parent().find('span').index(target);year=this.viewDate.getUTCFullYear();this.viewDate.setUTCMonth(month);this._trigger('changeMonth',this.viewDate);if(this.o.minViewMode===1){this._setDate(UTCDate(year,month,day));this.showMode()}else{this.showMode(-1)}
|
||||
this.fill()}
|
||||
if(target.hasClass('year')||target.hasClass('decade')||target.hasClass('century')){this.viewDate.setUTCDate(1);day=1;month=0;year=parseInt(target.text(),10)||0;this.viewDate.setUTCFullYear(year);if(target.hasClass('year')){this._trigger('changeYear',this.viewDate);if(this.o.minViewMode===2){this._setDate(UTCDate(year,month,day))}}
|
||||
if(target.hasClass('decade')){this._trigger('changeDecade',this.viewDate);if(this.o.minViewMode===3){this._setDate(UTCDate(year,month,day))}}
|
||||
if(target.hasClass('century')){this._trigger('changeCentury',this.viewDate);if(this.o.minViewMode===4){this._setDate(UTCDate(year,month,day))}}
|
||||
this.showMode(-1);this.fill()}}
|
||||
if(this.picker.is(':visible')&&this._focused_from){$(this._focused_from).focus()}
|
||||
delete this._focused_from},_toggle_multidate:function(date){var ix=this.dates.contains(date);if(!date){this.dates.clear()}
|
||||
if(ix!==-1){if(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive){this.dates.remove(ix)}}else if(this.o.multidate===!1){this.dates.clear();this.dates.push(date)}
|
||||
else{this.dates.push(date)}
|
||||
if(typeof this.o.multidate==='number')
|
||||
while(this.dates.length>this.o.multidate)
|
||||
this.dates.remove(0)},_setDate:function(date,which){if(!which||which==='date')
|
||||
this._toggle_multidate(date&&new Date(date));if(!which||which==='view')
|
||||
this.viewDate=date&&new Date(date);this.fill();this.setValue();if(!which||which!=='view'){this._trigger('changeDate')}
|
||||
if(this.inputField){this.inputField.change()}
|
||||
if(this.o.autoclose&&(!which||which==='date')){this.hide()}},moveDay:function(date,dir){var newDate=new Date(date);newDate.setUTCDate(date.getUTCDate()+dir);return newDate},moveWeek:function(date,dir){return this.moveDay(date,dir*7)},moveMonth:function(date,dir){if(!isValidDate(date))
|
||||
return this.o.defaultViewDate;if(!dir)
|
||||
return date;var new_date=new Date(date.valueOf()),day=new_date.getUTCDate(),month=new_date.getUTCMonth(),mag=Math.abs(dir),new_month,test;dir=dir>0?1:-1;if(mag===1){test=dir===-1?function(){return new_date.getUTCMonth()===month}:function(){return new_date.getUTCMonth()!==new_month};new_month=month+dir;new_date.setUTCMonth(new_month);if(new_month<0||new_month>11)
|
||||
new_month=(new_month+12)%12}
|
||||
else{for(var i=0;i<mag;i++)
|
||||
new_date=this.moveMonth(new_date,dir);new_month=new_date.getUTCMonth();new_date.setUTCDate(day);test=function(){return new_month!==new_date.getUTCMonth()}}
|
||||
while(test()){new_date.setUTCDate(--day);new_date.setUTCMonth(new_month)}
|
||||
return new_date},moveYear:function(date,dir){return this.moveMonth(date,dir*12)},moveAvailableDate:function(date,dir,fn){do{date=this[fn](date,dir);if(!this.dateWithinRange(date))
|
||||
return!1;fn='moveDay'}
|
||||
while(this.dateIsDisabled(date));return date},weekOfDateIsDisabled:function(date){return $.inArray(date.getUTCDay(),this.o.daysOfWeekDisabled)!==-1},dateIsDisabled:function(date){return(this.weekOfDateIsDisabled(date)||$.grep(this.o.datesDisabled,function(d){return isUTCEquals(date,d)}).length>0)},dateWithinRange:function(date){return date>=this.o.startDate&&date<=this.o.endDate},keydown:function(e){if(!this.picker.is(':visible')){if(e.keyCode===40||e.keyCode===27){this.show();e.stopPropagation()}
|
||||
return}
|
||||
var dateChanged=!1,dir,newViewDate,focusDate=this.focusDate||this.viewDate;switch(e.keyCode){case 27:if(this.focusDate){this.focusDate=null;this.viewDate=this.dates.get(-1)||this.viewDate;this.fill()}
|
||||
else this.hide();e.preventDefault();e.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||this.o.daysOfWeekDisabled.length===7)
|
||||
break;dir=e.keyCode===37||e.keyCode===38?-1:1;if(this.viewMode===0){if(e.ctrlKey){newViewDate=this.moveAvailableDate(focusDate,dir,'moveYear');if(newViewDate)
|
||||
this._trigger('changeYear',this.viewDate)}
|
||||
else if(e.shiftKey){newViewDate=this.moveAvailableDate(focusDate,dir,'moveMonth');if(newViewDate)
|
||||
this._trigger('changeMonth',this.viewDate)}
|
||||
else if(e.keyCode===37||e.keyCode===39){newViewDate=this.moveAvailableDate(focusDate,dir,'moveDay')}
|
||||
else if(!this.weekOfDateIsDisabled(focusDate)){newViewDate=this.moveAvailableDate(focusDate,dir,'moveWeek')}}else if(this.viewMode===1){if(e.keyCode===38||e.keyCode===40){dir=dir*4}
|
||||
newViewDate=this.moveAvailableDate(focusDate,dir,'moveMonth')}else if(this.viewMode===2){if(e.keyCode===38||e.keyCode===40){dir=dir*4}
|
||||
newViewDate=this.moveAvailableDate(focusDate,dir,'moveYear')}
|
||||
if(newViewDate){this.focusDate=this.viewDate=newViewDate;this.setValue();this.fill();e.preventDefault()}
|
||||
break;case 13:if(!this.o.forceParse)
|
||||
break;focusDate=this.focusDate||this.dates.get(-1)||this.viewDate;if(this.o.keyboardNavigation){this._toggle_multidate(focusDate);dateChanged=!0}
|
||||
this.focusDate=null;this.viewDate=this.dates.get(-1)||this.viewDate;this.setValue();this.fill();if(this.picker.is(':visible')){e.preventDefault();e.stopPropagation();if(this.o.autoclose)
|
||||
this.hide()}
|
||||
break;case 9:this.focusDate=null;this.viewDate=this.dates.get(-1)||this.viewDate;this.fill();this.hide();break}
|
||||
if(dateChanged){if(this.dates.length)
|
||||
this._trigger('changeDate');else this._trigger('clearDate');if(this.inputField){this.inputField.change()}}},showMode:function(dir){if(dir){this.viewMode=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,this.viewMode+dir))}
|
||||
this.picker.children('div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();this.updateNavArrows()}};var DateRangePicker=function(element,options){$(element).data('datepicker',this);this.element=$(element);this.inputs=$.map(options.inputs,function(i){return i.jquery?i[0]:i});delete options.inputs;datepickerPlugin.call($(this.inputs),options).on('changeDate',$.proxy(this.dateUpdated,this));this.pickers=$.map(this.inputs,function(i){return $(i).data('datepicker')});this.updateDates()};DateRangePicker.prototype={updateDates:function(){this.dates=$.map(this.pickers,function(i){return i.getUTCDate()});this.updateRanges()},updateRanges:function(){var range=$.map(this.dates,function(d){return d.valueOf()});$.each(this.pickers,function(i,p){p.setRange(range)})},dateUpdated:function(e){if(this.updating)
|
||||
return;this.updating=!0;var dp=$(e.target).data('datepicker');if(typeof(dp)==="undefined"){return}
|
||||
var new_date=dp.getUTCDate(),i=$.inArray(e.target,this.inputs),j=i-1,k=i+1,l=this.inputs.length;if(i===-1)
|
||||
return;$.each(this.pickers,function(i,p){if(!p.getUTCDate())
|
||||
p.setUTCDate(new_date)});if(new_date<this.dates[j]){while(j>=0&&new_date<this.dates[j]){this.pickers[j--].setUTCDate(new_date)}}
|
||||
else if(new_date>this.dates[k]){while(k<l&&new_date>this.dates[k]){this.pickers[k++].setUTCDate(new_date)}}
|
||||
this.updateDates();delete this.updating},remove:function(){$.map(this.pickers,function(p){p.remove()});delete this.element.data().datepicker}};function opts_from_el(el,prefix){var data=$(el).data(),out={},inkey,replace=new RegExp('^'+prefix.toLowerCase()+'([A-Z])');prefix=new RegExp('^'+prefix.toLowerCase());function re_lower(_,a){return a.toLowerCase()}
|
||||
for(var key in data)
|
||||
if(prefix.test(key)){inkey=key.replace(replace,re_lower);out[inkey]=data[key]}
|
||||
return out}
|
||||
function opts_from_locale(lang){var out={};if(!dates[lang]){lang=lang.split('-')[0];if(!dates[lang])
|
||||
return}
|
||||
var d=dates[lang];$.each(locale_opts,function(i,k){if(k in d)
|
||||
out[k]=d[k]});return out}
|
||||
var old=$.fn.datepicker;var datepickerPlugin=function(option){var args=Array.apply(null,arguments);args.shift();var internal_return;this.each(function(){var $this=$(this),data=$this.data('datepicker'),options=typeof option==='object'&&option;if(!data){var elopts=opts_from_el(this,'date'),xopts=$.extend({},defaults,elopts,options),locopts=opts_from_locale(xopts.language),opts=$.extend({},defaults,locopts,elopts,options);if($this.hasClass('input-daterange')||opts.inputs){$.extend(opts,{inputs:opts.inputs||$this.find('input').toArray()});data=new DateRangePicker(this,opts)}
|
||||
else{data=new Datepicker(this,opts)}
|
||||
$this.data('datepicker',data)}
|
||||
if(typeof option==='string'&&typeof data[option]==='function'){internal_return=data[option].apply(data,args)}});if(internal_return===undefined||internal_return instanceof Datepicker||internal_return instanceof DateRangePicker)
|
||||
return this;if(this.length>1)
|
||||
throw new Error('Using only allowed for the collection of a single element ('+option+' function)');else return internal_return};$.fn.datepicker=datepickerPlugin;var defaults=$.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:$.noop,beforeShowMonth:$.noop,beforeShowYear:$.noop,beforeShowDecade:$.noop,beforeShowCentury:$.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:Infinity,forceParse:!0,format:'mm/dd/yyyy',keyboardNavigation:!0,language:'en',minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:',',orientation:"auto",rtl:!1,startDate:-Infinity,startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:'body',immediateUpdates:!1,title:'',templates:{leftArrow:'«',rightArrow:'»'}};var locale_opts=$.fn.datepicker.locale_opts=['format','rtl','weekStart'];$.fn.datepicker.Constructor=Datepicker;var dates=$.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}};var DPGlobal={modes:[{clsName:'days',navFnc:'Month',navStep:1},{clsName:'months',navFnc:'FullYear',navStep:1},{clsName:'years',navFnc:'FullYear',navStep:10},{clsName:'decades',navFnc:'FullDecade',navStep:100},{clsName:'centuries',navFnc:'FullCentury',navStep:1000}],isLeapYear:function(year){return(((year%4===0)&&(year%100!==0))||(year%400===0))},getDaysInMonth:function(year,month){return[31,(DPGlobal.isLeapYear(year)?29:28),31,30,31,30,31,31,30,31,30,31][month]},validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(format){if(typeof format.toValue==='function'&&typeof format.toDisplay==='function')
|
||||
return format;var separators=format.replace(this.validParts,'\0').split('\0'),parts=format.match(this.validParts);if(!separators||!separators.length||!parts||parts.length===0){throw new Error("Invalid date format.")}
|
||||
return{separators:separators,parts:parts}},parseDate:function(date,format,language,assumeNearby){if(!date)
|
||||
return undefined;if(date instanceof Date)
|
||||
return date;if(typeof format==='string')
|
||||
format=DPGlobal.parseFormat(format);if(format.toValue)
|
||||
return format.toValue(date,format,language);var part_re=/([\-+]\d+)([dmwy])/,parts=date.match(/([\-+]\d+)([dmwy])/g),fn_map={d:'moveDay',m:'moveMonth',w:'moveWeek',y:'moveYear'},dateAliases={yesterday:'-1d',today:'+0d',tomorrow:'+1d'},part,dir,i,fn;if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){date=new Date();for(i=0;i<parts.length;i++){part=part_re.exec(parts[i]);dir=parseInt(part[1]);fn=fn_map[part[2]];date=Datepicker.prototype[fn](date,dir)}
|
||||
return UTCDate(date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate())}
|
||||
if(typeof dateAliases[date]!=='undefined'){date=dateAliases[date];parts=date.match(/([\-+]\d+)([dmwy])/g);if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){date=new Date();for(i=0;i<parts.length;i++){part=part_re.exec(parts[i]);dir=parseInt(part[1]);fn=fn_map[part[2]];date=Datepicker.prototype[fn](date,dir)}
|
||||
return UTCDate(date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate())}}
|
||||
parts=date&&date.match(this.nonpunctuation)||[];date=new Date();function applyNearbyYear(year,threshold){if(threshold===!0)
|
||||
threshold=10;if(year<100){year+=2000;if(year>((new Date()).getFullYear()+threshold)){year-=100}}
|
||||
return year}
|
||||
var parsed={},setters_order=['yyyy','yy','M','MM','m','mm','d','dd'],setters_map={yyyy:function(d,v){return d.setUTCFullYear(assumeNearby?applyNearbyYear(v,assumeNearby):v)},yy:function(d,v){return d.setUTCFullYear(assumeNearby?applyNearbyYear(v,assumeNearby):v)},m:function(d,v){if(isNaN(d))
|
||||
return d;v-=1;while(v<0)v+=12;v%=12;d.setUTCMonth(v);while(d.getUTCMonth()!==v)
|
||||
d.setUTCDate(d.getUTCDate()-1);return d},d:function(d,v){return d.setUTCDate(v)}},val,filtered;setters_map.M=setters_map.MM=setters_map.mm=setters_map.m;setters_map.dd=setters_map.d;date=UTCToday();var fparts=format.parts.slice();if(parts.length!==fparts.length){fparts=$(fparts).filter(function(i,p){return $.inArray(p,setters_order)!==-1}).toArray()}
|
||||
function match_part(){var m=this.slice(0,parts[i].length),p=parts[i].slice(0,m.length);return m.toLowerCase()===p.toLowerCase()}
|
||||
if(parts.length===fparts.length){var cnt;for(i=0,cnt=fparts.length;i<cnt;i++){val=parseInt(parts[i],10);part=fparts[i];if(isNaN(val)){switch(part){case 'MM':filtered=$(dates[language].months).filter(match_part);val=$.inArray(filtered[0],dates[language].months)+1;break;case 'M':filtered=$(dates[language].monthsShort).filter(match_part);val=$.inArray(filtered[0],dates[language].monthsShort)+1;break}}
|
||||
parsed[part]=val}
|
||||
var _date,s;for(i=0;i<setters_order.length;i++){s=setters_order[i];if(s in parsed&&!isNaN(parsed[s])){_date=new Date(date);setters_map[s](_date,parsed[s]);if(!isNaN(_date))
|
||||
date=_date}}}
|
||||
return date},formatDate:function(date,format,language){if(!date)
|
||||
return '';if(typeof format==='string')
|
||||
format=DPGlobal.parseFormat(format);if(format.toDisplay)
|
||||
return format.toDisplay(date,format,language);var val={d:date.getUTCDate(),D:dates[language].daysShort[date.getUTCDay()],DD:dates[language].days[date.getUTCDay()],m:date.getUTCMonth()+1,M:dates[language].monthsShort[date.getUTCMonth()],MM:dates[language].months[date.getUTCMonth()],yy:date.getUTCFullYear().toString().substring(2),yyyy:date.getUTCFullYear()};val.dd=(val.d<10?'0':'')+val.d;val.mm=(val.m<10?'0':'')+val.m;date=[];var seps=$.extend([],format.separators);for(var i=0,cnt=format.parts.length;i<=cnt;i++){if(seps.length)
|
||||
date.push(seps.shift());date.push(val[format.parts[i]])}
|
||||
return date.join('')},headTemplate:'<thead>'+'<tr>'+'<th colspan="7" class="datepicker-title"></th>'+'</tr>'+'<tr>'+'<th class="prev">«</th>'+'<th colspan="5" class="datepicker-switch"></th>'+'<th class="next">»</th>'+'</tr>'+'</thead>',contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot>'+'<tr>'+'<th colspan="7" class="today"></th>'+'</tr>'+'<tr>'+'<th colspan="7" class="clear"></th>'+'</tr>'+'</tfoot>'};DPGlobal.template='<div class="datepicker">'+'<div class="datepicker-days">'+'<table class="table-condensed">'+DPGlobal.headTemplate+'<tbody></tbody>'+DPGlobal.footTemplate+'</table>'+'</div>'+'<div class="datepicker-months">'+'<table class="table-condensed">'+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'</table>'+'</div>'+'<div class="datepicker-years">'+'<table class="table-condensed">'+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'</table>'+'</div>'+'<div class="datepicker-decades">'+'<table class="table-condensed">'+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'</table>'+'</div>'+'<div class="datepicker-centuries">'+'<table class="table-condensed">'+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'</table>'+'</div>'+'</div>';$.fn.datepicker.DPGlobal=DPGlobal;$.fn.datepicker.noConflict=function(){$.fn.datepicker=old;return this};$.fn.datepicker.version='1.6.4';$(document).on('focus.datepicker.data-api click.datepicker.data-api','[data-provide="datepicker"]',function(e){var $this=$(this);if($this.data('datepicker'))
|
||||
return;e.preventDefault();datepickerPlugin.call($this,'show')});$(function(){datepickerPlugin.call($('[data-provide="datepicker-inline"]'))})}))
|
||||
7
assets/js/bootstrap.min.js
vendored
44
assets/js/jquery.easing.min.js
vendored
|
|
@ -1,44 +0,0 @@
|
|||
/*
|
||||
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
|
||||
*
|
||||
* Uses the built in easing capabilities added In jQuery 1.1
|
||||
* to offer multiple easing options
|
||||
*
|
||||
* TERMS OF USE - EASING EQUATIONS
|
||||
*
|
||||
* Open source under the BSD License.
|
||||
*
|
||||
* Copyright © 2001 Robert Penner
|
||||
* All rights reserved.
|
||||
*
|
||||
* TERMS OF USE - jQuery Easing
|
||||
*
|
||||
* Open source under the BSD License.
|
||||
*
|
||||
* Copyright © 2008 George McGinley Smith
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* Neither the name of the author nor the names of contributors may be used to endorse
|
||||
* or promote products derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,f,a,h,g){"use strict";return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){"use strict";return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){"use strict";return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){"use strict";if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){"use strict";return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){"use strict";return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){"use strict";if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){"use strict";return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){"use strict";return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){"use strict";if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){"use strict";return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){"use strict";return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){"use strict";if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){"use strict";return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){"use strict";return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){"use strict";return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){"use strict";return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){"use strict";return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){"use strict";if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){"use strict";return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){"use strict";return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){"use strict";if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,l,k){"use strict";var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return -(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e},easeOutElastic:function(f,h,e,l,k){"use strict";var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return g*Math.pow(2,-10*h)*Math.sin((h*k-i)*(2*Math.PI)/j)+l+e},easeInOutElastic:function(f,h,e,l,k){"use strict";var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k/2)==2){return e+l}if(!j){j=k*(0.3*1.5)}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}if(h<1){return -0.5*(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e}return g*Math.pow(2,-10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j)*0.5+l+e},easeInBack:function(e,f,a,i,h,g){"use strict";if(g==undefined){g=1.70158}return i*(f/=h)*f*((g+1)*f-g)+a},easeOutBack:function(e,f,a,i,h,g){"use strict";if(g==undefined){g=1.70158}return i*((f=f/h-1)*f*((g+1)*f+g)+1)+a},easeInOutBack:function(e,f,a,i,h,g){"use strict";if(g==undefined){g=1.70158}if((f/=h/2)<1){return i/2*(f*f*(((g*=(1.525))+1)*f-g))+a}return i/2*((f-=2)*f*(((g*=(1.525))+1)*f+g)+2)+a},easeInBounce:function(e,f,a,h,g){"use strict";return h-jQuery.easing.easeOutBounce(e,g-f,0,h,g)+a},easeOutBounce:function(e,f,a,h,g){"use strict";if((f/=g)<(1/2.75)){return h*(7.5625*f*f)+a}else{if(f<(2/2.75)){return h*(7.5625*(f-=(1.5/2.75))*f+0.75)+a}else{if(f<(2.5/2.75)){return h*(7.5625*(f-=(2.25/2.75))*f+0.9375)+a}else{return h*(7.5625*(f-=(2.625/2.75))*f+0.984375)+a}}}},easeInOutBounce:function(e,f,a,h,g){"use strict";if(f<g/2){return jQuery.easing.easeInBounce(e,f*2,0,h,g)*0.5+a}return jQuery.easing.easeOutBounce(e,f*2-g,0,h,g)*0.5+h*0.5+a}});
|
||||
2
assets/js/jquery.min.js
vendored
|
|
@ -1,208 +0,0 @@
|
|||
/* Description: Custom JS file */
|
||||
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
/* Navbar Scripts */
|
||||
// jQuery for page scrolling feature - requires jQuery Easing plugin
|
||||
$(function() {
|
||||
$(document).on('click', 'a.page-scroll', function(event) {
|
||||
var $anchor = $(this);
|
||||
$('html, body').stop().animate({
|
||||
scrollTop: $($anchor.attr('href')).offset().top
|
||||
}, 600, 'easeInOutExpo');
|
||||
event.preventDefault();
|
||||
});
|
||||
});
|
||||
|
||||
// offcanvas script from Bootstrap + added element to close menu on click in small viewport
|
||||
$('[data-toggle="offcanvas"], .navbar-nav li a:not(.dropdown-toggle').on('click', function () {
|
||||
$('.offcanvas-collapse').toggleClass('open')
|
||||
})
|
||||
|
||||
// hover in desktop mode
|
||||
function toggleDropdown (e) {
|
||||
const _d = $(e.target).closest('.dropdown'),
|
||||
_m = $('.dropdown-menu', _d);
|
||||
setTimeout(function(){
|
||||
const shouldOpen = e.type !== 'click' && _d.is(':hover');
|
||||
_m.toggleClass('show', shouldOpen);
|
||||
_d.toggleClass('show', shouldOpen);
|
||||
$('[data-toggle="dropdown"]', _d).attr('aria-expanded', shouldOpen);
|
||||
}, e.type === 'mouseleave' ? 300 : 0);
|
||||
}
|
||||
$('body')
|
||||
.on('mouseenter mouseleave','.dropdown',toggleDropdown)
|
||||
.on('click', '.dropdown-menu a', toggleDropdown);
|
||||
|
||||
|
||||
/* Header Slider - Swiper */
|
||||
var headerSlider = new Swiper('.header-slider', {
|
||||
autoplay: {
|
||||
delay: 3500,
|
||||
disableOnInteraction: false
|
||||
},
|
||||
loop: true,
|
||||
effect: "fade",
|
||||
speed: 700
|
||||
});
|
||||
|
||||
|
||||
/* Image Slider - Swiper */
|
||||
var imageSlider = new Swiper('.image-slider', {
|
||||
autoplay: {
|
||||
delay: 3000,
|
||||
disableOnInteraction: false
|
||||
},
|
||||
loop: false,
|
||||
navigation: {
|
||||
nextEl: '.swiper-button-next',
|
||||
prevEl: '.swiper-button-prev'
|
||||
},
|
||||
slidesPerView: 3,
|
||||
spaceBetween: 20,
|
||||
breakpoints: {
|
||||
// when window is <= 767px
|
||||
767: {
|
||||
slidesPerView: 1
|
||||
},
|
||||
// when window is <= 991px
|
||||
991: {
|
||||
slidesPerView: 2,
|
||||
spaceBetween: 10
|
||||
},
|
||||
// when window is <= 1199px
|
||||
1199: {
|
||||
slidesPerView: 3,
|
||||
spaceBetween: 20
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Image Slider Room - Swiper */
|
||||
var imageSlider = new Swiper('.image-slider-room', {
|
||||
autoplay: {
|
||||
delay: 3000,
|
||||
disableOnInteraction: false
|
||||
},
|
||||
loop: false,
|
||||
navigation: {
|
||||
nextEl: '.swiper-button-next',
|
||||
prevEl: '.swiper-button-prev',
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Card Slider - Swiper */
|
||||
var cardSlider = new Swiper('.card-slider', {
|
||||
autoplay: {
|
||||
delay: 4000,
|
||||
disableOnInteraction: false
|
||||
},
|
||||
loop: true,
|
||||
navigation: {
|
||||
nextEl: '.swiper-button-next',
|
||||
prevEl: '.swiper-button-prev'
|
||||
},
|
||||
slidesPerView: 3,
|
||||
spaceBetween: 30,
|
||||
breakpoints: {
|
||||
// when window is <= 767px
|
||||
767: {
|
||||
slidesPerView: 1
|
||||
},
|
||||
// when window is <= 991px
|
||||
991: {
|
||||
slidesPerView: 2
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Image Lightbox - Magnific Popup */
|
||||
$('.popup-link').magnificPopup({
|
||||
removalDelay: 300,
|
||||
type: 'image',
|
||||
callbacks: {
|
||||
beforeOpen: function() {
|
||||
this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure ' + this.st.el.attr('data-effect'));
|
||||
},
|
||||
beforeClose: function() {
|
||||
$('.mfp-figure').addClass('fadeOut');
|
||||
}
|
||||
},
|
||||
gallery:{
|
||||
enabled:true //enable gallery mode
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Details Lightbox - Magnific Popup */
|
||||
$('.popup-with-move-anim').magnificPopup({
|
||||
type: 'inline',
|
||||
fixedContentPos: true,
|
||||
fixedBgPos: true,
|
||||
overflowY: 'auto',
|
||||
closeBtnInside: true,
|
||||
preloader: false,
|
||||
midClick: true,
|
||||
removalDelay: 300,
|
||||
mainClass: 'my-mfp-slide-bottom'
|
||||
});
|
||||
|
||||
|
||||
/* Move Form Fields Label When User Types */
|
||||
// for input and textarea fields
|
||||
$("input, textarea").keyup(function(){
|
||||
if ($(this).val() != '') {
|
||||
$(this).addClass('notEmpty');
|
||||
} else {
|
||||
$(this).removeClass('notEmpty');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Datepicker - Bootstrap Datepicker */
|
||||
$('#start').datepicker({
|
||||
todayHighlight: true,
|
||||
autoclose: true,
|
||||
format: 'MM/dd/yyyy',
|
||||
});
|
||||
|
||||
// detects change to selected date to keep the label above the value in the input field
|
||||
$('#start').datepicker().on('changeDate', function(e) {
|
||||
$("input[id=start]").addClass('notEmpty');
|
||||
});
|
||||
|
||||
$('#end').datepicker({
|
||||
autoclose: true,
|
||||
format: 'MM/dd/yyyy'
|
||||
});
|
||||
|
||||
// detects change to selected date to keep the label above the value in the input field// keeps the label above the value in the input field
|
||||
$('#end').datepicker().on('changeDate', function(e) {
|
||||
$("input[id=end]").addClass('notEmpty');
|
||||
});
|
||||
|
||||
|
||||
/* Back To Top Button */
|
||||
// create the back to top button
|
||||
$('body').prepend('<a href="body" class="back-to-top page-scroll">Back to Top</a>');
|
||||
var amountScrolled = 700;
|
||||
$(window).scroll(function() {
|
||||
if ($(window).scrollTop() > amountScrolled) {
|
||||
$('a.back-to-top').fadeIn('500');
|
||||
} else {
|
||||
$('a.back-to-top').fadeOut('500');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Removes Long Focus On Buttons */
|
||||
$(".button, a, button").mouseup(function() {
|
||||
$(this).blur();
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
13
assets/js/swiper.min.js
vendored
22
astro.config.mjs
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
// @ts-check
|
||||
import { defineConfig } from "astro/config";
|
||||
import sitemap from "@astrojs/sitemap";
|
||||
|
||||
import tailwindcss from "@tailwindcss/vite";
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
site: "https://villafleuriegp.com",
|
||||
i18n: {
|
||||
locales: ["fr", "en"],
|
||||
defaultLocale: "fr",
|
||||
routing: {
|
||||
prefixDefaultLocale: true,
|
||||
redirectToDefaultLocale: true,
|
||||
},
|
||||
},
|
||||
integrations: [sitemap()],
|
||||
vite: {
|
||||
plugins: [tailwindcss()],
|
||||
},
|
||||
});
|
||||
|
|
@ -1 +0,0 @@
|
|||
name = "VillaFleurie"
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
name = "contact"
|
||||
title = "Contact | VillaFleurie - Locations de vacances au Gosier en Guadeloupe"
|
||||
template = "contact.html"
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
name = "index"
|
||||
title = "VillaFleurie | Locations de vacances au Gosier en Guadeloupe"
|
||||
template = "index.html"
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
name = "reservation"
|
||||
title = "Reservation | VillaFleurie - Locations de vacances au Gosier en Guadeloupe"
|
||||
template = "reservation.html"
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
name = "t2-corail"
|
||||
title = "T2 Corail, petit nid douillet | VillaFleurie - Locations de vacances au Gosier en Guadeloupe"
|
||||
template = "t2-corail.html"
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
name = "t3-azur"
|
||||
title = "T3 Azur, besoin d'un lieu confortable | VillaFleurie - Locations de vacances au Gosier en Guadeloupe"
|
||||
template = "t3-azur.html"
|
||||
324
dist/contact.html
vendored
|
|
@ -1,324 +0,0 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, shrink-to-fit=no"
|
||||
/>
|
||||
|
||||
<!-- SEO Meta Tags -->
|
||||
<meta
|
||||
name="description"
|
||||
content="VillaFleurie location de vacances au Gosier en Guadeloupe"
|
||||
/>
|
||||
<meta name="author" content="VillaFleurie" />
|
||||
|
||||
<!-- OG Meta Tags to improve the way the post looks when you share the page on Facebook, Twitter, LinkedIn -->
|
||||
<meta property="og:site_name" content="VillaFleurie" />
|
||||
<!-- website name -->
|
||||
<meta property="og:site" content="" />
|
||||
<!-- website link -->
|
||||
<meta property="og:title" content="VillaFleurie" />
|
||||
<!-- title shown in the actual shared post -->
|
||||
<meta
|
||||
property="og:description"
|
||||
content="VillaFleurie location de vacances au Gosier en Guadeloupe"
|
||||
/>
|
||||
<!-- description shown in the actual shared post -->
|
||||
<meta property="og:image" content="" />
|
||||
<!-- image link, make sure it's jpg -->
|
||||
<meta property="og:url" content="/" />
|
||||
<!-- where do you want your post to link to -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<!-- to have large image post format in Twitter -->
|
||||
|
||||
<!-- Webpage Title -->
|
||||
<title>VillaFleurie</title>
|
||||
|
||||
<!-- Styles -->
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,600;0,700;1,400;1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=PT+Serif:ital,wght@1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link href="../css/bootstrap.css" rel="stylesheet" />
|
||||
<link href="../css/fontawesome-all.css" rel="stylesheet" />
|
||||
<link href="../css/bootstrap-datepicker3.css" rel="stylesheet" />
|
||||
<link href="../css/swiper.css" rel="stylesheet" />
|
||||
<link href="../css/magnific-popup.css" rel="stylesheet" />
|
||||
<link href="../css/styles.css" rel="stylesheet" />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="../images/logo.png" />
|
||||
|
||||
<script
|
||||
defer
|
||||
data-domain="villafleuriegp.com"
|
||||
src="https://plausible.nemausat.com/js/script.outbound-links.js"
|
||||
></script>
|
||||
<script>
|
||||
window.plausible =
|
||||
window.plausible ||
|
||||
function () {
|
||||
(window.plausible.q = window.plausible.q || []).push(arguments);
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
<body data-spy="scroll" data-target=".fixed-top">
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg fixed-top navbar-light">
|
||||
<div class="container">
|
||||
<!-- Text Logo - Use this if you don't have a graphic logo -->
|
||||
<!-- <a class="navbar-brand logo-text page-scroll" href="index.html">Villa</a> -->
|
||||
|
||||
<!-- Image Logo -->
|
||||
<a class="navbar-brand logo-image" href="index.html"
|
||||
><img
|
||||
src="../images/logo.png"
|
||||
alt="VillaFleurie logo"
|
||||
style="height: 76px"
|
||||
/></a>
|
||||
|
||||
<button
|
||||
class="navbar-toggler p-0 border-0"
|
||||
type="button"
|
||||
data-toggle="offcanvas"
|
||||
>
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div
|
||||
class="navbar-collapse offcanvas-collapse"
|
||||
id="navbarsExampleDefault"
|
||||
>
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item dropdown">
|
||||
<a
|
||||
class="nav-link dropdown-toggle"
|
||||
href="#"
|
||||
id="dropdown01"
|
||||
data-toggle="dropdown"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
>Chambres</a
|
||||
>
|
||||
<div class="dropdown-menu" aria-labelledby="dropdown01">
|
||||
<a class="dropdown-item page-scroll" href="t2-corail.html"
|
||||
>T2 Corail</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item page-scroll" href="t3-azur.html"
|
||||
>T3 Azur</a
|
||||
>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="contact.html">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
<span class="nav-item ml-auto">
|
||||
<a class="btn-outline-sm" href="tel:+33658961279">
|
||||
<i class="fas fa-phone-alt"></i>+33 6 58 96 12 79</a
|
||||
>
|
||||
</span>
|
||||
</div>
|
||||
<!-- end of navbar-collapse -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</nav>
|
||||
<!-- end of navbar -->
|
||||
<!-- end of navigation -->
|
||||
|
||||
|
||||
<!-- Header -->
|
||||
<header class="ex-header bg-gray">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xl-10 offset-xl-1">
|
||||
<h1 class="green">Nous contacter</h1>
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</header> <!-- end of ex-header -->
|
||||
<!-- end of header -->
|
||||
|
||||
|
||||
<!-- Form -->
|
||||
<div class="ex-form-1 bg-gray pb-6">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xl-10 offset-xl-1">
|
||||
<p class="mb-5">Voici l'occasion de nous contacter si vous êtes à la recherche d'une location capable
|
||||
d'offrir une expérience étonnante en termes de confort et de détente <a
|
||||
href="mailto:location.villafleurie@gmail.com">location.villafleurie@gmail.com</a> ou
|
||||
appelez-nous quand vous le pouvez <a href="tel:+33658961279">+33 6 58 96 12 79</a>.</p>
|
||||
<p>
|
||||
|
||||
<!-- Contact Form -->
|
||||
<form id="contactForm" name="contactForm" data-toggle="validator" data-focus="false" method="post"
|
||||
action="/reservation.html" netlify>
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control-input" id="cname" name="name" required>
|
||||
<label class="label-control" for="cname">Nom complet</label>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="email" class="form-control-input" id="cemail" name="email" required>
|
||||
<label class="label-control" for="cemail">Email</label>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<textarea class="form-control-textarea" id="cmessage" name="message" required></textarea>
|
||||
<label class="label-control" for="cmessage">Votre message</label>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="form-control-submit-button">Envoyer</button>
|
||||
</div>
|
||||
<div class="form-message">
|
||||
<div id="cmsgSubmit" class="h3 text-center hidden"></div>
|
||||
</div>
|
||||
</form>
|
||||
<!-- end of contact form -->
|
||||
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of ex-form-1 -->
|
||||
<!-- end of form -->
|
||||
|
||||
|
||||
<!-- Basic -->
|
||||
<div class="ex-basic-1 pt-5">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xl-10 offset-xl-1">
|
||||
<h2 class="mt-3 mb-4">Où nous trouver</h2>
|
||||
<p class="mb-5">Notre mission à VillaFleurie est de nous concentrer sur tous les détails pour faire de
|
||||
votre séjour une expérience extraordinaire. une expérience inoubliable. Nous avons formé notre
|
||||
personnel pour qu'il réponde à vos attentes et les dépasse, afin que votre expérience à la
|
||||
VillaFleurie ne soit pas un simple souvenir, mais l'un de vos meilleurs souvenirs.
|
||||
Nous sommes passionnés et nous ne vous décevrons pas.</p>
|
||||
|
||||
<div class="map-responsive mb-5">
|
||||
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3831.2598078323063!2d-61.48991482394046!3d16.20707768449259!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x8c134f148764f5d5%3A0x981bb218cee8b16c!2sVillaFleurie!5e0!3m2!1sfr!2sde!4v1685258248016!5m2!1sfr!2sde"
|
||||
width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy"
|
||||
referrerpolicy="no-referrer-when-downgrade"></iframe>
|
||||
</div>
|
||||
|
||||
<a class="btn-solid-reg mb-6" href="index.html#header">Réserver</a>
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of ex-basic-1 -->
|
||||
<!-- end of basic -->
|
||||
|
||||
|
||||
<!-- Footer -->
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3>
|
||||
Si vous souhaitez passer un moment confortable et relaxant,
|
||||
n'hésitez pas à nous contacter :
|
||||
<a class="green" href="mailto:location.villafleurie@gmail.com">
|
||||
location.villafleurie@gmail.com
|
||||
</a>
|
||||
</h3>
|
||||
<div class="social-container">
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-facebook-f fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-twitter fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-pinterest-p fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-instagram fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-youtube fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<!-- end of social-container -->
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- end of row -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</div>
|
||||
<!-- end of footer -->
|
||||
<!-- end of footer -->
|
||||
|
||||
<!-- Copyright -->
|
||||
<div class="copyright">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<hr class="divider" />
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- end of row -->
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<ul class="list-unstyled li-space-lg p-small">
|
||||
<li><a href="t2-corail.html">T2 Corail</a></li>
|
||||
<li><a href="t3-azur.html">T3 Azur</a></li>
|
||||
<li><a href="contact.html">Contact</a></li>
|
||||
</ul>
|
||||
<!-- end of list-unstyled -->
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
<div class="col-lg-6">
|
||||
<p class="p-small statement">Copyright © VillaFleurie</p>
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- enf of row -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</div>
|
||||
<!-- end of copyright -->
|
||||
<!-- end of copyright -->
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
<!-- jQuery for Bootstrap's JavaScript plugins -->
|
||||
<script src="../js/bootstrap.min.js"></script>
|
||||
<!-- Bootstrap framework -->
|
||||
<script src="../js/jquery.easing.min.js"></script>
|
||||
<!-- jQuery Easing for smooth scrolling between anchors -->
|
||||
<script src="../js/swiper.min.js"></script>
|
||||
<!-- Swiper for image and text sliders -->
|
||||
<script src="../js/jquery.magnific-popup.js"></script>
|
||||
<!-- Magnific Popup for lightboxes -->
|
||||
<script src="../js/bootstrap-datepicker.min.js"></script>
|
||||
<!-- Datepicker for Bootstrap -->
|
||||
<script src="../js/scripts.js"></script>
|
||||
<!-- Custom scripts -->
|
||||
</body>
|
||||
</html>
|
||||
4396
dist/css/fontawesome-all.css
vendored
351
dist/css/magnific-popup.css
vendored
|
|
@ -1,351 +0,0 @@
|
|||
/* Magnific Popup CSS */
|
||||
.mfp-bg {
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1042;
|
||||
overflow: hidden;
|
||||
position: fixed;
|
||||
background: #0b0b0b;
|
||||
opacity: 0.8; }
|
||||
|
||||
.mfp-wrap {
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 1043;
|
||||
position: fixed;
|
||||
outline: none !important;
|
||||
-webkit-backface-visibility: hidden; }
|
||||
|
||||
.mfp-container {
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
top: 0;
|
||||
padding: 0 8px;
|
||||
box-sizing: border-box; }
|
||||
|
||||
.mfp-container:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
height: 100%;
|
||||
vertical-align: middle; }
|
||||
|
||||
.mfp-align-top .mfp-container:before {
|
||||
display: none; }
|
||||
|
||||
.mfp-content {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: 0 auto;
|
||||
text-align: left;
|
||||
z-index: 1045; }
|
||||
|
||||
.mfp-inline-holder .mfp-content,
|
||||
.mfp-ajax-holder .mfp-content {
|
||||
width: 100%;
|
||||
cursor: auto; }
|
||||
|
||||
.mfp-ajax-cur {
|
||||
cursor: progress; }
|
||||
|
||||
.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
|
||||
cursor: -moz-zoom-out;
|
||||
cursor: -webkit-zoom-out;
|
||||
cursor: zoom-out; }
|
||||
|
||||
.mfp-zoom {
|
||||
cursor: pointer;
|
||||
cursor: -webkit-zoom-in;
|
||||
cursor: -moz-zoom-in;
|
||||
cursor: zoom-in; }
|
||||
|
||||
.mfp-auto-cursor .mfp-content {
|
||||
cursor: auto; }
|
||||
|
||||
.mfp-close,
|
||||
.mfp-arrow,
|
||||
.mfp-preloader,
|
||||
.mfp-counter {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none; }
|
||||
|
||||
.mfp-loading.mfp-figure {
|
||||
display: none; }
|
||||
|
||||
.mfp-hide {
|
||||
display: none !important; }
|
||||
|
||||
.mfp-preloader {
|
||||
color: #CCC;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: auto;
|
||||
text-align: center;
|
||||
margin-top: -0.8em;
|
||||
left: 8px;
|
||||
right: 8px;
|
||||
z-index: 1044; }
|
||||
.mfp-preloader a {
|
||||
color: #CCC; }
|
||||
.mfp-preloader a:hover {
|
||||
color: #FFF; }
|
||||
|
||||
.mfp-s-ready .mfp-preloader {
|
||||
display: none; }
|
||||
|
||||
.mfp-s-error .mfp-content {
|
||||
display: none; }
|
||||
|
||||
button.mfp-close,
|
||||
button.mfp-arrow {
|
||||
overflow: visible;
|
||||
cursor: pointer;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
-webkit-appearance: none;
|
||||
display: block;
|
||||
outline: none;
|
||||
padding: 0;
|
||||
z-index: 1046;
|
||||
box-shadow: none;
|
||||
touch-action: manipulation; }
|
||||
|
||||
button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0; }
|
||||
|
||||
.mfp-close {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
line-height: 44px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
opacity: 0.65;
|
||||
padding: 0 0 18px 10px;
|
||||
color: #FFF;
|
||||
font-style: normal;
|
||||
font-size: 28px;
|
||||
font-family: Arial, Baskerville, monospace; }
|
||||
.mfp-close:hover,
|
||||
.mfp-close:focus {
|
||||
opacity: 1; }
|
||||
.mfp-close:active {
|
||||
top: 1px; }
|
||||
|
||||
.mfp-close-btn-in .mfp-close {
|
||||
color: #333; }
|
||||
|
||||
.mfp-image-holder .mfp-close,
|
||||
.mfp-iframe-holder .mfp-close {
|
||||
color: #FFF;
|
||||
right: -6px;
|
||||
text-align: right;
|
||||
padding-right: 6px;
|
||||
width: 100%; }
|
||||
|
||||
.mfp-counter {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
color: #CCC;
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
white-space: nowrap; }
|
||||
|
||||
.mfp-arrow {
|
||||
position: absolute;
|
||||
opacity: 0.65;
|
||||
margin: 0;
|
||||
top: 50%;
|
||||
margin-top: -55px;
|
||||
padding: 0;
|
||||
width: 90px;
|
||||
height: 110px;
|
||||
-webkit-tap-highlight-color: transparent; }
|
||||
.mfp-arrow:active {
|
||||
margin-top: -54px; }
|
||||
.mfp-arrow:hover,
|
||||
.mfp-arrow:focus {
|
||||
opacity: 1; }
|
||||
.mfp-arrow:before,
|
||||
.mfp-arrow:after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
margin-top: 35px;
|
||||
margin-left: 35px;
|
||||
border: medium inset transparent; }
|
||||
.mfp-arrow:after {
|
||||
border-top-width: 13px;
|
||||
border-bottom-width: 13px;
|
||||
top: 8px; }
|
||||
.mfp-arrow:before {
|
||||
border-top-width: 21px;
|
||||
border-bottom-width: 21px;
|
||||
opacity: 0.7; }
|
||||
|
||||
.mfp-arrow-left {
|
||||
left: 0; }
|
||||
.mfp-arrow-left:after {
|
||||
border-right: 17px solid #FFF;
|
||||
margin-left: 31px; }
|
||||
.mfp-arrow-left:before {
|
||||
margin-left: 25px;
|
||||
border-right: 27px solid #3F3F3F; }
|
||||
|
||||
.mfp-arrow-right {
|
||||
right: 0; }
|
||||
.mfp-arrow-right:after {
|
||||
border-left: 17px solid #FFF;
|
||||
margin-left: 39px; }
|
||||
.mfp-arrow-right:before {
|
||||
border-left: 27px solid #3F3F3F; }
|
||||
|
||||
.mfp-iframe-holder {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px; }
|
||||
.mfp-iframe-holder .mfp-content {
|
||||
line-height: 0;
|
||||
width: 100%;
|
||||
max-width: 900px; }
|
||||
.mfp-iframe-holder .mfp-close {
|
||||
top: -40px; }
|
||||
|
||||
.mfp-iframe-scaler {
|
||||
width: 100%;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
padding-top: 56.25%; }
|
||||
.mfp-iframe-scaler iframe {
|
||||
position: absolute;
|
||||
display: block;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
|
||||
background: #000; }
|
||||
|
||||
/* Main image in popup */
|
||||
img.mfp-img {
|
||||
width: auto;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
line-height: 0;
|
||||
box-sizing: border-box;
|
||||
padding: 40px 0 40px;
|
||||
margin: 0 auto; }
|
||||
|
||||
/* The shadow behind the image */
|
||||
.mfp-figure {
|
||||
line-height: 0; }
|
||||
.mfp-figure:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 40px;
|
||||
bottom: 40px;
|
||||
display: block;
|
||||
right: 0;
|
||||
width: auto;
|
||||
height: auto;
|
||||
z-index: -1;
|
||||
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
|
||||
background: #444; }
|
||||
.mfp-figure small {
|
||||
color: #BDBDBD;
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
line-height: 14px; }
|
||||
.mfp-figure figure {
|
||||
margin: 0; }
|
||||
|
||||
.mfp-bottom-bar {
|
||||
margin-top: -36px;
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
cursor: auto; }
|
||||
|
||||
.mfp-title {
|
||||
text-align: left;
|
||||
line-height: 18px;
|
||||
color: #F3F3F3;
|
||||
word-wrap: break-word;
|
||||
padding-right: 36px; }
|
||||
|
||||
.mfp-image-holder .mfp-content {
|
||||
max-width: 100%; }
|
||||
|
||||
.mfp-gallery .mfp-image-holder .mfp-figure {
|
||||
cursor: pointer; }
|
||||
|
||||
@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
|
||||
/**
|
||||
* Remove all paddings around the image on small screen
|
||||
*/
|
||||
.mfp-img-mobile .mfp-image-holder {
|
||||
padding-left: 0;
|
||||
padding-right: 0; }
|
||||
.mfp-img-mobile img.mfp-img {
|
||||
padding: 0; }
|
||||
.mfp-img-mobile .mfp-figure:after {
|
||||
top: 0;
|
||||
bottom: 0; }
|
||||
.mfp-img-mobile .mfp-figure small {
|
||||
display: inline;
|
||||
margin-left: 5px; }
|
||||
.mfp-img-mobile .mfp-bottom-bar {
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
bottom: 0;
|
||||
margin: 0;
|
||||
top: auto;
|
||||
padding: 3px 5px;
|
||||
position: fixed;
|
||||
box-sizing: border-box; }
|
||||
.mfp-img-mobile .mfp-bottom-bar:empty {
|
||||
padding: 0; }
|
||||
.mfp-img-mobile .mfp-counter {
|
||||
right: 5px;
|
||||
top: 3px; }
|
||||
.mfp-img-mobile .mfp-close {
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
position: fixed;
|
||||
text-align: center;
|
||||
padding: 0; } }
|
||||
|
||||
@media all and (max-width: 900px) {
|
||||
.mfp-arrow {
|
||||
-webkit-transform: scale(0.75);
|
||||
transform: scale(0.75); }
|
||||
.mfp-arrow-left {
|
||||
-webkit-transform-origin: 0;
|
||||
transform-origin: 0; }
|
||||
.mfp-arrow-right {
|
||||
-webkit-transform-origin: 100%;
|
||||
transform-origin: 100%; }
|
||||
.mfp-container {
|
||||
padding-left: 6px;
|
||||
padding-right: 6px; } }
|
||||
1976
dist/css/styles.css
vendored
BIN
dist/images/article-details-large.jpg
vendored
|
Before Width: | Height: | Size: 52 KiB |
BIN
dist/images/article-details-small.jpg
vendored
|
Before Width: | Height: | Size: 71 KiB |
BIN
dist/images/attraction-1.jpg
vendored
|
Before Width: | Height: | Size: 51 KiB |
BIN
dist/images/attraction-2.jpg
vendored
|
Before Width: | Height: | Size: 67 KiB |
BIN
dist/images/attraction-3.jpg
vendored
|
Before Width: | Height: | Size: 50 KiB |
BIN
dist/images/attraction-4.jpg
vendored
|
Before Width: | Height: | Size: 32 KiB |
BIN
dist/images/avis-johann.webp
vendored
|
Before Width: | Height: | Size: 7.8 KiB |
BIN
dist/images/avis-nell.jpg
vendored
|
Before Width: | Height: | Size: 6 KiB |
BIN
dist/images/description-1.jpg
vendored
|
Before Width: | Height: | Size: 38 KiB |
BIN
dist/images/description-2.jpg
vendored
|
Before Width: | Height: | Size: 36 KiB |
BIN
dist/images/description-3.jpg
vendored
|
Before Width: | Height: | Size: 60 KiB |
BIN
dist/images/description-4.jpg
vendored
|
Before Width: | Height: | Size: 82 KiB |
BIN
dist/images/description-5.jpg
vendored
|
Before Width: | Height: | Size: 21 KiB |
BIN
dist/images/description-6.jpg
vendored
|
Before Width: | Height: | Size: 57 KiB |
BIN
dist/images/down-arrow.png
vendored
|
Before Width: | Height: | Size: 1 KiB |
BIN
dist/images/facilities-background.jpg
vendored
|
Before Width: | Height: | Size: 165 KiB |
BIN
dist/images/facilities-tab-1.jpg
vendored
|
Before Width: | Height: | Size: 49 KiB |
BIN
dist/images/facilities-tab-2.jpg
vendored
|
Before Width: | Height: | Size: 35 KiB |
BIN
dist/images/facilities-tab-3.jpg
vendored
|
Before Width: | Height: | Size: 59 KiB |
BIN
dist/images/facilities-tab-4.jpg
vendored
|
Before Width: | Height: | Size: 57 KiB |
BIN
dist/images/facilities-tab-5.jpg
vendored
|
Before Width: | Height: | Size: 107 KiB |
BIN
dist/images/favicon.png
vendored
|
Before Width: | Height: | Size: 1.3 KiB |
BIN
dist/images/header-background-1.jpg
vendored
|
Before Width: | Height: | Size: 257 KiB |
BIN
dist/images/header-background-2.jpg
vendored
|
Before Width: | Height: | Size: 124 KiB |
BIN
dist/images/header-background-3.jpg
vendored
|
Before Width: | Height: | Size: 303 KiB |
BIN
dist/images/language-en.jpg
vendored
|
Before Width: | Height: | Size: 1.7 KiB |
BIN
dist/images/language-it.jpg
vendored
|
Before Width: | Height: | Size: 1.4 KiB |
BIN
dist/images/logo.png
vendored
|
Before Width: | Height: | Size: 95 KiB |
BIN
dist/images/room-balcony-1.jpg
vendored
|
Before Width: | Height: | Size: 81 KiB |
BIN
dist/images/room-balcony-2.jpg
vendored
|
Before Width: | Height: | Size: 104 KiB |
BIN
dist/images/room-balcony-3.jpg
vendored
|
Before Width: | Height: | Size: 97 KiB |
BIN
dist/images/room-panoramic-1.jpg
vendored
|
Before Width: | Height: | Size: 119 KiB |
BIN
dist/images/room-panoramic-2.jpg
vendored
|
Before Width: | Height: | Size: 102 KiB |
BIN
dist/images/room-panoramic-3.jpg
vendored
|
Before Width: | Height: | Size: 198 KiB |
BIN
dist/images/room-presidential-1.jpg
vendored
|
Before Width: | Height: | Size: 88 KiB |
BIN
dist/images/room-presidential-2.jpg
vendored
|
Before Width: | Height: | Size: 101 KiB |
BIN
dist/images/room-presidential-3.jpg
vendored
|
Before Width: | Height: | Size: 73 KiB |
BIN
dist/images/rooms-balcony-room.jpg
vendored
|
Before Width: | Height: | Size: 44 KiB |
BIN
dist/images/rooms-panoramic-room.jpg
vendored
|
Before Width: | Height: | Size: 49 KiB |
BIN
dist/images/rooms-presidential-room.jpg
vendored
|
Before Width: | Height: | Size: 35 KiB |
BIN
dist/images/slide-about-1.jpg
vendored
|
Before Width: | Height: | Size: 662 KiB |
BIN
dist/images/testimonial-1.jpg
vendored
|
Before Width: | Height: | Size: 8.9 KiB |
BIN
dist/images/testimonial-2.jpg
vendored
|
Before Width: | Height: | Size: 7.3 KiB |
BIN
dist/images/testimonial-3.jpg
vendored
|
Before Width: | Height: | Size: 8.1 KiB |
BIN
dist/images/testimonial-4.jpg
vendored
|
Before Width: | Height: | Size: 7.1 KiB |
BIN
dist/images/testimonial-5.jpg
vendored
|
Before Width: | Height: | Size: 7.6 KiB |
BIN
dist/images/testimonial-6.jpg
vendored
|
Before Width: | Height: | Size: 6.9 KiB |
BIN
dist/images/testimonials-background.jpg
vendored
|
Before Width: | Height: | Size: 590 KiB |
BIN
dist/images/up-arrow.png
vendored
|
Before Width: | Height: | Size: 1.1 KiB |
BIN
dist/images/villafleurie_t2_chambre.jpg
vendored
|
Before Width: | Height: | Size: 525 KiB |
BIN
dist/images/villafleurie_t2_chambre_2.jpg
vendored
|
Before Width: | Height: | Size: 275 KiB |
BIN
dist/images/villafleurie_t2_cuisine.jpg
vendored
|
Before Width: | Height: | Size: 767 KiB |
BIN
dist/images/villafleurie_t2_salle_de_bain.jpg
vendored
|
Before Width: | Height: | Size: 272 KiB |
BIN
dist/images/villafleurie_t2_salon_1_wl81yXI.jpg
vendored
|
Before Width: | Height: | Size: 538 KiB |
BIN
dist/images/villafleurie_t2_salon_2.jpg
vendored
|
Before Width: | Height: | Size: 334 KiB |
BIN
dist/images/villafleurie_t2_terrasse.jpg
vendored
|
Before Width: | Height: | Size: 454 KiB |
BIN
dist/images/villafleurie_t3_chambre.jpg
vendored
|
Before Width: | Height: | Size: 535 KiB |
BIN
dist/images/villafleurie_t3_cuisine.jpg
vendored
|
Before Width: | Height: | Size: 333 KiB |
BIN
dist/images/villafleurie_t3_salon.jpg
vendored
|
Before Width: | Height: | Size: 382 KiB |
896
dist/index.html
vendored
|
|
@ -1,896 +0,0 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, shrink-to-fit=no"
|
||||
/>
|
||||
|
||||
<!-- SEO Meta Tags -->
|
||||
<meta
|
||||
name="description"
|
||||
content="VillaFleurie location de vacances au Gosier en Guadeloupe"
|
||||
/>
|
||||
<meta name="author" content="VillaFleurie" />
|
||||
|
||||
<!-- OG Meta Tags to improve the way the post looks when you share the page on Facebook, Twitter, LinkedIn -->
|
||||
<meta property="og:site_name" content="VillaFleurie" />
|
||||
<!-- website name -->
|
||||
<meta property="og:site" content="" />
|
||||
<!-- website link -->
|
||||
<meta property="og:title" content="VillaFleurie" />
|
||||
<!-- title shown in the actual shared post -->
|
||||
<meta
|
||||
property="og:description"
|
||||
content="VillaFleurie location de vacances au Gosier en Guadeloupe"
|
||||
/>
|
||||
<!-- description shown in the actual shared post -->
|
||||
<meta property="og:image" content="" />
|
||||
<!-- image link, make sure it's jpg -->
|
||||
<meta property="og:url" content="/" />
|
||||
<!-- where do you want your post to link to -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<!-- to have large image post format in Twitter -->
|
||||
|
||||
<!-- Webpage Title -->
|
||||
<title>VillaFleurie</title>
|
||||
|
||||
<!-- Styles -->
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,600;0,700;1,400;1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=PT+Serif:ital,wght@1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link href="../css/bootstrap.css" rel="stylesheet" />
|
||||
<link href="../css/fontawesome-all.css" rel="stylesheet" />
|
||||
<link href="../css/bootstrap-datepicker3.css" rel="stylesheet" />
|
||||
<link href="../css/swiper.css" rel="stylesheet" />
|
||||
<link href="../css/magnific-popup.css" rel="stylesheet" />
|
||||
<link href="../css/styles.css" rel="stylesheet" />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="../images/logo.png" />
|
||||
|
||||
<script
|
||||
defer
|
||||
data-domain="villafleuriegp.com"
|
||||
src="https://plausible.nemausat.com/js/script.outbound-links.js"
|
||||
></script>
|
||||
<script>
|
||||
window.plausible =
|
||||
window.plausible ||
|
||||
function () {
|
||||
(window.plausible.q = window.plausible.q || []).push(arguments);
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
<body data-spy="scroll" data-target=".fixed-top">
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg fixed-top navbar-light">
|
||||
<div class="container">
|
||||
<!-- Text Logo - Use this if you don't have a graphic logo -->
|
||||
<!-- <a class="navbar-brand logo-text page-scroll" href="index.html">Villa</a> -->
|
||||
|
||||
<!-- Image Logo -->
|
||||
<a class="navbar-brand logo-image" href="index.html"
|
||||
><img
|
||||
src="../images/logo.png"
|
||||
alt="VillaFleurie logo"
|
||||
style="height: 76px"
|
||||
/></a>
|
||||
|
||||
<button
|
||||
class="navbar-toggler p-0 border-0"
|
||||
type="button"
|
||||
data-toggle="offcanvas"
|
||||
>
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div
|
||||
class="navbar-collapse offcanvas-collapse"
|
||||
id="navbarsExampleDefault"
|
||||
>
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item dropdown">
|
||||
<a
|
||||
class="nav-link dropdown-toggle"
|
||||
href="#"
|
||||
id="dropdown01"
|
||||
data-toggle="dropdown"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
>Chambres</a
|
||||
>
|
||||
<div class="dropdown-menu" aria-labelledby="dropdown01">
|
||||
<a class="dropdown-item page-scroll" href="t2-corail.html"
|
||||
>T2 Corail</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item page-scroll" href="t3-azur.html"
|
||||
>T3 Azur</a
|
||||
>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="contact.html">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
<span class="nav-item ml-auto">
|
||||
<a class="btn-outline-sm" href="tel:+33658961279">
|
||||
<i class="fas fa-phone-alt"></i>+33 6 58 96 12 79</a
|
||||
>
|
||||
</span>
|
||||
</div>
|
||||
<!-- end of navbar-collapse -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</nav>
|
||||
<!-- end of navbar -->
|
||||
<!-- end of navigation -->
|
||||
|
||||
|
||||
<!-- Header -->
|
||||
<header id="header" class="header">
|
||||
<!-- Header Slider -->
|
||||
<div class="swiper-container header-slider">
|
||||
<div class="swiper-wrapper">
|
||||
<div class="swiper-slide first">
|
||||
</div>
|
||||
<div class="swiper-slide second">
|
||||
</div>
|
||||
<div class="swiper-slide third">
|
||||
</div>
|
||||
</div> <!-- end of swiper-wrapper -->
|
||||
</div> <!-- end of swiper-container -->
|
||||
<!-- end of header slider -->
|
||||
|
||||
<div class="text-container">
|
||||
<h1>VillaFleurie : L'expérience extraordinaire</h1>
|
||||
<a class="btn-solid-lg popup-with-move-anim" href="#header-details-lightbox">Réserver</a>
|
||||
<a class="btn-outline-lg page-scroll" href="#description">Découvrir</a>
|
||||
</div> <!-- end of text-container -->
|
||||
</header> <!-- end of header -->
|
||||
<!-- end of header -->
|
||||
|
||||
|
||||
<!-- Header Lightbox -->
|
||||
<!-- Lightbox -->
|
||||
<div id="header-details-lightbox" class="lightbox-form zoom-anim-dialog mfp-hide">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<button title="Close (Esc)" type="button" class="mfp-close x-button">×</button>
|
||||
<div class="col-lg-12">
|
||||
<p>Remplir et envoyer le formulaire pour réserver VillaFleurie</p>
|
||||
<!-- Booking Form -->
|
||||
<!-- autocomplete = off to avoid display problems in mobile view -->
|
||||
<form name="bookingForm" id="bookingForm" data-toggle="validator" data-focus="false" autocomplete="off"
|
||||
action="/reservation.html" netlify>
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control-input" id="name" name="name" required>
|
||||
<label class="label-control" for="name">Nom complet</label>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="email" class="form-control-input" id="email" name="email" required>
|
||||
<label class="label-control" for="email">Adresse email</label>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control-input" id="phone" name="phone" required>
|
||||
<label class="label-control" for="phone">Numéro de téléphone</label>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control-input" id="people" name="people" required>
|
||||
<label class="label-control" for="people">Nombre de personnes</label>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<select class="form-control-select" id="room" name="room" required>
|
||||
<option class="select-option" value="" disabled selected>Choisissez une chambre</option>
|
||||
<option class="select-option" value="t2">T2 Corail</option>
|
||||
<option class="select-option" value="t3">T3 Azur</option>
|
||||
</select>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<!-- readonly is enabled to avoid display problems in mobile view -->
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control-input" id="start" name="start" readonly required>
|
||||
<label class="label-control" for="start">Arrivée</label>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="text" class="form-control-input" id="end" name="end" readonly required>
|
||||
<label class="label-control" for="end">Départ</label>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="form-control-submit-button">Réserver</button>
|
||||
</div>
|
||||
<div class="form-message">
|
||||
<div id="msgSubmit" class="h3 text-center hidden"></div>
|
||||
</div>
|
||||
</form>
|
||||
<!-- end of booking form -->
|
||||
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of lightbox-form -->
|
||||
<!-- end of lightbox -->
|
||||
<!-- end of header lightbox -->
|
||||
|
||||
|
||||
<!-- Description -->
|
||||
<div id="description" class="slider-1 bg-gray">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h2 class="green">Découvrir VillaFleurie</h2>
|
||||
<p class="p-heading">Villa est un lieu de vacances unique situé sur le magnifique archipel de la
|
||||
Guadeloupe, prête à accueillir des touristes en quête de tranquillité tout au long de l'année.</p>
|
||||
</div> <!-- end of col -->
|
||||
<div class="col-lg-12">
|
||||
|
||||
<!-- Image Slider -->
|
||||
<div class="slider-container">
|
||||
<div class="swiper-container image-slider">
|
||||
<div class="swiper-wrapper">
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/slide-about-1.jpg" data-effect="fadeIn"><img
|
||||
class="img-fluid" src="../images/slide-about-1.jpg" alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t3_chambre.jpg"
|
||||
data-effect="fadeIn"><img
|
||||
class="img-fluid" src="../images/villafleurie_t3_chambre.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t2_salon_1_wl81yXI.jpg"
|
||||
data-effect="fadeIn"><img
|
||||
class="img-fluid" src="../images/villafleurie_t2_salon_1_wl81yXI.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t3_salon.jpg"
|
||||
data-effect="fadeIn"><img
|
||||
class="img-fluid" src="../images/villafleurie_t3_salon.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t2_terrasse.jpg"
|
||||
data-effect="fadeIn"><img
|
||||
class="img-fluid" src="../images/villafleurie_t2_terrasse.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t2_salle_de_bain.jpg"
|
||||
data-effect="fadeIn"><img
|
||||
class="img-fluid" src="../images/villafleurie_t2_salle_de_bain.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
</div> <!-- end of swiper-wrapper -->
|
||||
|
||||
<!-- Add Arrows -->
|
||||
<div class="swiper-button-next"></div>
|
||||
<div class="swiper-button-prev"></div>
|
||||
<!-- end of add arrows -->
|
||||
</div> <!-- end of swiper container -->
|
||||
</div> <!-- end of slider-container -->
|
||||
<!-- end of image slider -->
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of slider-1 -->
|
||||
<!-- end of description -->
|
||||
|
||||
|
||||
<!-- Facilities -->
|
||||
<div class="tabs">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h2>Des installations étonnantes</h2>
|
||||
<p class="p-heading">Tout ce dont vous avez besoin pour un séjour détendu. Les installations de
|
||||
VillaFleurie ont été conçues pour répondre aux besoins des touristes très exigeants du monde
|
||||
entier</p>
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
|
||||
<!-- Tabs Links -->
|
||||
<ul class="nav nav-tabs" id="villaTabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" id="nav-tab-1" data-toggle="tab" href="#tab-1" role="tab"
|
||||
aria-controls="tab-1" aria-selected="true">
|
||||
<i class="fas fa-utensils"></i><span>Restauration</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="nav-tab-2" data-toggle="tab" href="#tab-2" role="tab"
|
||||
aria-controls="tab-2" aria-selected="false">
|
||||
<i class="fas fa-glass-martini-alt"></i><span>Terrasse</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="nav-tab-3" data-toggle="tab" href="#tab-3" role="tab"
|
||||
aria-controls="tab-3" aria-selected="false">
|
||||
<i class="fas fa-sun"></i><span>Plages</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="nav-tab-5" data-toggle="tab" href="#tab-5" role="tab"
|
||||
aria-controls="tab-5" aria-selected="false">
|
||||
<i class="fas fa-car"></i><span>Parking</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- end of tabs links -->
|
||||
|
||||
<!-- Tabs Content -->
|
||||
<div class="tab-content" id="villaTabsContent">
|
||||
|
||||
<!-- Tab -->
|
||||
<div class="tab-pane fade show active" id="tab-1" role="tabpanel" aria-labelledby="tab-1">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="image-container">
|
||||
<img class="img-fluid" src="../images/facilities-tab-1.jpg" alt="alternative">
|
||||
</div> <!-- end of image-container -->
|
||||
</div> <!-- end of col -->
|
||||
<div class="col-lg-6">
|
||||
<div class="text-container">
|
||||
<h3>Délicieuse cuisine locale</h3>
|
||||
<p>La ville du Gosier possède de nombreux restaurants servant des plats délicieux
|
||||
issus de la cuisine locale et préparés à partir d'ingrédients provenant de
|
||||
fermes et de marchés locaux.</p>
|
||||
<p>Il n'est pas nécessaire de se dépêcher pour obtenir un bon repas, car les heures
|
||||
de service s'étendent tout au long de la journée.</p>
|
||||
</div> <!-- end of text-container -->
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of tab-pane -->
|
||||
<!-- end of tab -->
|
||||
|
||||
<!-- Tab -->
|
||||
<div class="tab-pane fade" id="tab-2" role="tabpanel" aria-labelledby="tab-2">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="text-container">
|
||||
<h3>Belle terrasse pour le café et les apéros</h3>
|
||||
<p>Commencez votre journée de vacances par un café revigorant et choisissez de vous
|
||||
asseoir et de vous détendre ou de planifier vos excursions dans les sites
|
||||
historiques et touristiques environnants.</p>
|
||||
<p>Profitez du calme des lieux pour vous détendre l'après-midi autour d'un apéritif
|
||||
entre amis.</p>
|
||||
<a class="btn-solid-reg" href="article.html">Article</a> <a class="btn-outline-reg"
|
||||
href="contact.html">Contact</a>
|
||||
</div> <!-- end of text-container -->
|
||||
</div> <!-- end of col -->
|
||||
<div class="col-lg-6">
|
||||
<div class="image-container">
|
||||
<img class="img-fluid" src="../images/facilities-tab-2.jpg" alt="alternative">
|
||||
</div> <!-- end of image-container -->
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of tab-pane -->
|
||||
<!-- end of tab -->
|
||||
|
||||
<!-- Tab -->
|
||||
<div class="tab-pane fade" id="tab-3" role="tabpanel" aria-labelledby="tab-3">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="image-container">
|
||||
<img class="img-fluid" src="../images/facilities-tab-3.jpg" alt="alternative">
|
||||
</div> <!-- end of image-container -->
|
||||
</div> <!-- end of col -->
|
||||
<div class="col-lg-6">
|
||||
<div class="text-container">
|
||||
<h3>Plages chaudes et eaux turquoises</h3>
|
||||
<p>Il y a deux belles plages ensoleillées près de la villa, équipées de chaises de
|
||||
plage, de parasols, d'un bar de plage et de douches.</p>
|
||||
<ul class="list-unstyled li-space-lg">
|
||||
<li class="media">
|
||||
<i class="fas fa-square"></i>
|
||||
<div class="media-body">Exposition au soleil tout au long de la journée
|
||||
grâce à l'orientation.
|
||||
</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<i class="fas fa-square"></i>
|
||||
<div class="media-body">Sable doré qui s'étend longuement dans l'eau</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<i class="fas fa-square"></i>
|
||||
<div class="media-body">Les équipements sont conçus pour offrir un maximum
|
||||
de détente
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="green" href="article.html">En savoir plus</a>
|
||||
</div> <!-- end of text-container -->
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of tab-pane -->
|
||||
<!-- end of tab -->
|
||||
|
||||
<!-- Tab -->
|
||||
<div class="tab-pane fade" id="tab-5" role="tabpanel" aria-labelledby="tab-5">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="image-container">
|
||||
<img class="img-fluid rounded" src="../images/facilities-tab-5.jpg"
|
||||
alt="alternative">
|
||||
</div> <!-- end of image-container -->
|
||||
</div> <!-- end of col -->
|
||||
<div class="col-lg-6">
|
||||
<div class="text-container">
|
||||
<h3>Plus besoin de s'inquiéter pour sa voiture</h3>
|
||||
<p>VillaFleurie offre un parking gratuit à tous ses clients dans une zone sûre et
|
||||
facile d'accès. Le parking est fermé pour vous offrir plus de tranquillité
|
||||
d'esprit.</p>
|
||||
<ul class="list-unstyled li-space-lg">
|
||||
<li class="media">
|
||||
<i class="fas fa-square"></i>
|
||||
<div class="media-body">Accès gratuit pour tout type de voiture</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<i class="fas fa-square"></i>
|
||||
<div class="media-body">Profitez de votre séjour sans vous soucier de la
|
||||
voiture
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="green"><strong>HORAIRE DE STATIONNEMENT : NON-STOP</strong></p>
|
||||
</div> <!-- end of text-container -->
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of tab-pane -->
|
||||
<!-- end of tab -->
|
||||
</div> <!-- end of tab-content -->
|
||||
<!-- end of tabs content -->
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of tabs -->
|
||||
<!-- end of facilities -->
|
||||
|
||||
|
||||
<!-- Rooms -->
|
||||
<div class="cards-1">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h2 class="green">Confort et détente</h2>
|
||||
<ul class="list-unstyled li-space-lg p-heading">
|
||||
<li class="address">Les chambres de VillaFleurie offrent confort et détente. Elles comprennent
|
||||
toutes:
|
||||
</li>
|
||||
<li><i class="fas fa-wifi"></i>Wi-Fi gratuit</li>
|
||||
<li><i class="fas fa-bath"></i>Salle de bain privée</li>
|
||||
<li><i class="fas fa-tablet"></i>Réfrigérateur</li>
|
||||
<li><i class="fas fa-tv"></i>Écran large LCD</li>
|
||||
<li><i class="fas fa-snowflake"></i>Climatisation</li>
|
||||
</ul> <!-- end of list-unstyled -->
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
|
||||
<!-- Card -->
|
||||
<div class="card">
|
||||
<div class="card-image">
|
||||
<a href="t2-corail.html"><img class="img-fluid"
|
||||
src="../images/villafleurie_t2_salon_1_wl81yXI.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">T2 Corail - 59€/nuit</h3>
|
||||
<p>Envie d'un petit cocon ? Le T2 Corail vous offre toutes les commodités à un prix très
|
||||
abordable.</p>
|
||||
<a class="btn-solid-reg popup-with-move-anim" href="#header-details-lightbox">Réserver</a> <a
|
||||
class="btn-outline-reg" href="t2-corail.html">Détails</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of card -->
|
||||
|
||||
<!-- Card -->
|
||||
<div class="card">
|
||||
<div class="card-image">
|
||||
<a href="t3-azur.html"><img class="img-fluid" src="../images/villafleurie_t3_chambre.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h3 class="card-title">T3 Azur - 79€/nuit</h3>
|
||||
<p>Besoin de plus d'espace ? En choisissant le T3 Azur, vous bénéficiez de tout le confort
|
||||
qu'offre VillaFleurie.</p>
|
||||
<a class="btn-solid-reg popup-with-move-anim" href="#header-details-lightbox">Réserver</a> <a
|
||||
class="btn-outline-reg" href="t3-azur.html">Détails</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of card -->
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of cards-1 -->
|
||||
<!-- end of rooms -->
|
||||
|
||||
|
||||
<!-- Attractions -->
|
||||
<!--<div class="cards-2 bg-gray">-->
|
||||
<!-- <div class="container">-->
|
||||
<!-- <div class="row">-->
|
||||
<!-- <div class="col-lg-12">-->
|
||||
<!-- <h2 class="green">Attractions populaires</h2>-->
|
||||
<!-- <hr class="hr-heading">-->
|
||||
<!-- </div> <!– end of col –>-->
|
||||
<!-- </div> <!– end of row –>-->
|
||||
<!-- <div class="row">-->
|
||||
<!-- <div class="col-lg-12">-->
|
||||
|
||||
<!-- <!– Card –>-->
|
||||
<!-- <div class="card">-->
|
||||
<!-- <div class="card-image">-->
|
||||
<!-- <a class="green" href="article.html"><img class="img-fluid" src="../images/attraction-1.jpg"-->
|
||||
<!-- alt="alternative"></a>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="card-body">-->
|
||||
<!-- <p><strong class="green">AFITOS OLD TOWN:</strong> Full of historical importance for this part-->
|
||||
<!-- of the world, Afitos Old Towm will impress you... <a class="green" href="article.html">Read-->
|
||||
<!-- More >></a></p>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <!– end of card –>-->
|
||||
|
||||
<!-- <!– Card –>-->
|
||||
<!-- <div class="card">-->
|
||||
<!-- <div class="card-image">-->
|
||||
<!-- <a class="green" href="article.html"><img class="img-fluid" src="../images/attraction-2.jpg"-->
|
||||
<!-- alt="alternative"></a>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="card-body">-->
|
||||
<!-- <p><strong class="green">NAVAGIO BEACH:</strong> Is the most famous beach at the Mediterranean-->
|
||||
<!-- sea with white sands and cool beach bars. In the week... <a class="green"-->
|
||||
<!-- href="article.html">Read More-->
|
||||
<!-- >></a></p>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <!– end of card –>-->
|
||||
|
||||
<!-- <!– Card –>-->
|
||||
<!-- <div class="card">-->
|
||||
<!-- <div class="card-image">-->
|
||||
<!-- <a class="green" href="article.html"><img class="img-fluid" src="../images/attraction-3.jpg"-->
|
||||
<!-- alt="alternative"></a>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="card-body">-->
|
||||
<!-- <p><strong class="green">AEGEAN BELVEDERE:</strong> The best place to watch the sunset in a-->
|
||||
<!-- romantic atmosphere and maybe even drink a glass of wine... <a class="green"-->
|
||||
<!-- href="article.html">Read More-->
|
||||
<!-- >></a></p>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <!– end of card –>-->
|
||||
|
||||
<!-- <!– Card –>-->
|
||||
<!-- <div class="card">-->
|
||||
<!-- <div class="card-image">-->
|
||||
<!-- <a class="green" href="article.html"><img class="img-fluid" src="../images/attraction-4.jpg"-->
|
||||
<!-- alt="alternative"></a>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="card-body">-->
|
||||
<!-- <p><strong class="green">JAMES WHITE HOUSE:</strong> Don't miss this great tourist attraction.-->
|
||||
<!-- The famous writer's house will fascinate literature... <a class="green" href="article.html">Read-->
|
||||
<!-- More >></a></p>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <!– end of card –>-->
|
||||
|
||||
<!-- </div> <!– end of col –>-->
|
||||
<!-- </div> <!– end of row –>-->
|
||||
<!-- </div> <!– end of container –>-->
|
||||
<!--</div> <!– end of cards-2 –>-->
|
||||
<!--<!– end of attractions –>-->
|
||||
|
||||
|
||||
<!-- Testimonials -->
|
||||
<div class="slider-2">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h2>Avis</h2>
|
||||
<hr class="hr-heading">
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
|
||||
<!-- Card Slider -->
|
||||
<div class="slider-container">
|
||||
<div class="swiper-container card-slider">
|
||||
<div class="swiper-wrapper">
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="card">
|
||||
<img class="card-image" src="../images/avis-johann.webp" alt="alternative">
|
||||
<div class="card-body">
|
||||
<p class="testimonial-text">Un grand merci pour l’accueil et pour votre
|
||||
sympathie. Merci également pour nous avoir arrangé sur l’heure d’arrivée. La
|
||||
location est simple, mais rien à redire. En revanche très utile le parking,
|
||||
car peu de place de stationnement. Un petit conseil pour la restauration, il
|
||||
faut aller chez Taillepierre qui est à 200m c'est à la bonne franquette,
|
||||
mais tellement bon</p>
|
||||
<p class="testimonial-author">Johann</p>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end of swiper-slide -->
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="card">
|
||||
<img class="card-image" src="../images/avis-nell.jpg" alt="alternative">
|
||||
<div class="card-body">
|
||||
<p class="testimonial-text">Nilka et sa famille ont veillé à ce que nous
|
||||
passions un séjour incroyable, en nous récupérant à l'aéroport et en nous
|
||||
déposant, en nous donnant des conseils et des idées de choses à faire, en
|
||||
nous aidant avec tout ce dont nous avions besoin. L'endroit est lumineux,
|
||||
spacieux, propre et toutes les commodités ont bien fonctionné. L'emplacement
|
||||
est génial, tout ce dont vous pourriez avoir besoin au sein du Gosier est à
|
||||
moins de dix minutes à pied, y compris des magasins, un supermarché, un
|
||||
parc, la plage, des restaurants, des bars, et plus encore. Si vous souhaitez
|
||||
aller plus loin, il y a un arrêt de bus littéralement en haut de la rue, où
|
||||
vous pouvez vous rendre à Pointe-à-Pitre en 20 minutes, et de nombreux
|
||||
autres endroits très facilement. Nous avons passé un très bon moment!</p>
|
||||
<p class="testimonial-author">Nell</p>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end of swiper-slide -->
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="card">
|
||||
<img class="card-image" src="../images/testimonial-1.jpg" alt="alternative">
|
||||
<div class="card-body">
|
||||
<p class="testimonial-text">Accueil et disponibilité des propriétaires.
|
||||
Situation géographique idéale (commerces, restaurants, plages, centre-ville,
|
||||
parking intérieur sécurisé)</p>
|
||||
<p class="testimonial-author">Thierry</p>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end of swiper-slide -->
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="card">
|
||||
<img class="card-image" src="../images/testimonial-2.jpg" alt="alternative">
|
||||
<div class="card-body">
|
||||
<p class="testimonial-text">Propreté, accueil chaleureux, calme, situation
|
||||
centrale.</p>
|
||||
<p class="testimonial-author">Sylvie</p>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end of swiper-slide -->
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="card">
|
||||
<img class="card-image" src="../images/testimonial-3.jpg" alt="alternative">
|
||||
<div class="card-body">
|
||||
<p class="testimonial-text">Bon accueil des propriétaires, toujours disponibles.
|
||||
Endroit calme avec jardin.</p>
|
||||
<p class="testimonial-author">Chantal</p>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end of swiper-slide -->
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="card">
|
||||
<img class="card-image" src="../images/testimonial-4.jpg" alt="alternative">
|
||||
<div class="card-body">
|
||||
<p class="testimonial-text">Jacques et Hélène sont des hôtes très sympathiques.
|
||||
Le logement est très propre et fonctionnel. La maison a un jardin
|
||||
magnifiquement fleuri.</p>
|
||||
<p class="testimonial-author">André</p>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end of swiper-slide -->
|
||||
<!-- end of slide -->
|
||||
|
||||
</div> <!-- end of swiper-wrapper -->
|
||||
|
||||
<!-- Add Arrows -->
|
||||
<div class="swiper-button-next"></div>
|
||||
<div class="swiper-button-prev"></div>
|
||||
<!-- end of add arrows -->
|
||||
|
||||
</div> <!-- end of swiper-container -->
|
||||
</div> <!-- end of slider-container -->
|
||||
<!-- end of card slider -->
|
||||
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of slider-2 -->
|
||||
<!-- end of testimonials -->
|
||||
|
||||
|
||||
<!-- Location -->
|
||||
<div class="basic-1 bg-gray">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h2 class="green">Où nous trouver</h2>
|
||||
<ul class="list-unstyled li-space-lg p-heading">
|
||||
<li class="address">Nous attendons votre visite</li>
|
||||
<li><i class="fas fa-map-marker-alt"></i>VillaFleurie, 4 rue Gerty Archimède, 97190 Le Gosier,
|
||||
Guadeloupe
|
||||
</li>
|
||||
<li><i class="fas fa-phone"></i><a class="green" href="tel:+33658961279">+33 6 58 96 12 79</a></li>
|
||||
<li><i class="fas fa-envelope"></i><a class="green" href="mailto:reception@villa.com">location.villafleurie@gmail.com</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="map-responsive">
|
||||
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3831.2598078323063!2d-61.48991482394046!3d16.20707768449259!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x8c134f148764f5d5%3A0x981bb218cee8b16c!2sVillaFleurie!5e0!3m2!1sfr!2sde!4v1685258248016!5m2!1sfr!2sde"
|
||||
width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy"
|
||||
referrerpolicy="no-referrer-when-downgrade"></iframe>
|
||||
</div> <!-- end of map-responsive -->
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of basic-1 -->
|
||||
<!-- end of location -->
|
||||
|
||||
|
||||
|
||||
<!-- Footer -->
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3>
|
||||
Si vous souhaitez passer un moment confortable et relaxant,
|
||||
n'hésitez pas à nous contacter :
|
||||
<a class="green" href="mailto:location.villafleurie@gmail.com">
|
||||
location.villafleurie@gmail.com
|
||||
</a>
|
||||
</h3>
|
||||
<div class="social-container">
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-facebook-f fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-twitter fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-pinterest-p fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-instagram fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-youtube fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<!-- end of social-container -->
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- end of row -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</div>
|
||||
<!-- end of footer -->
|
||||
<!-- end of footer -->
|
||||
|
||||
<!-- Copyright -->
|
||||
<div class="copyright">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<hr class="divider" />
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- end of row -->
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<ul class="list-unstyled li-space-lg p-small">
|
||||
<li><a href="t2-corail.html">T2 Corail</a></li>
|
||||
<li><a href="t3-azur.html">T3 Azur</a></li>
|
||||
<li><a href="contact.html">Contact</a></li>
|
||||
</ul>
|
||||
<!-- end of list-unstyled -->
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
<div class="col-lg-6">
|
||||
<p class="p-small statement">Copyright © VillaFleurie</p>
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- enf of row -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</div>
|
||||
<!-- end of copyright -->
|
||||
<!-- end of copyright -->
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
<!-- jQuery for Bootstrap's JavaScript plugins -->
|
||||
<script src="../js/bootstrap.min.js"></script>
|
||||
<!-- Bootstrap framework -->
|
||||
<script src="../js/jquery.easing.min.js"></script>
|
||||
<!-- jQuery Easing for smooth scrolling between anchors -->
|
||||
<script src="../js/swiper.min.js"></script>
|
||||
<!-- Swiper for image and text sliders -->
|
||||
<script src="../js/jquery.magnific-popup.js"></script>
|
||||
<!-- Magnific Popup for lightboxes -->
|
||||
<script src="../js/bootstrap-datepicker.min.js"></script>
|
||||
<!-- Datepicker for Bootstrap -->
|
||||
<script src="../js/scripts.js"></script>
|
||||
<!-- Custom scripts -->
|
||||
</body>
|
||||
</html>
|
||||
250
dist/js/bootstrap-datepicker.min.js
vendored
|
|
@ -1,250 +0,0 @@
|
|||
/*!
|
||||
* Datepicker for Bootstrap v1.6.4 (https://github.com/eternicode/bootstrap-datepicker)
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
||||
*/
|
||||
(function(factory){"use strict";if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof exports==='object'){factory(require('jquery'))}else{factory(jQuery)}}(function($,undefined){"use strict";function UTCDate(){return new Date(Date.UTC.apply(Date,arguments))}
|
||||
function UTCToday(){var today=new Date();return UTCDate(today.getFullYear(),today.getMonth(),today.getDate())}
|
||||
function isUTCEquals(date1,date2){return(date1.getUTCFullYear()===date2.getUTCFullYear()&&date1.getUTCMonth()===date2.getUTCMonth()&&date1.getUTCDate()===date2.getUTCDate())}
|
||||
function alias(method){return function(){return this[method].apply(this,arguments)}}
|
||||
function isValidDate(d){return d&&!isNaN(d.getTime())}
|
||||
var DateArray=(function(){var extras={get:function(i){return this.slice(i)[0]},contains:function(d){var val=d&&d.valueOf();for(var i=0,l=this.length;i<l;i++)
|
||||
if(this[i].valueOf()===val)
|
||||
return i;return-1},remove:function(i){this.splice(i,1)},replace:function(new_array){if(!new_array)
|
||||
return;if(!$.isArray(new_array))
|
||||
new_array=[new_array];this.clear();this.push.apply(this,new_array)},clear:function(){this.length=0},copy:function(){var a=new DateArray();a.replace(this);return a}};return function(){var a=[];a.push.apply(a,arguments);$.extend(a,extras);return a}})();var Datepicker=function(element,options){$(element).data('datepicker',this);this._process_options(options);this.dates=new DateArray();this.viewDate=this.o.defaultViewDate;this.focusDate=null;this.element=$(element);this.isInput=this.element.is('input');this.inputField=this.isInput?this.element:this.element.find('input');this.component=this.element.hasClass('date')?this.element.find('.add-on, .input-group-addon, .btn'):!1;this.hasInput=this.component&&this.inputField.length;if(this.component&&this.component.length===0)
|
||||
this.component=!1;this.isInline=!this.component&&this.element.is('div');this.picker=$(DPGlobal.template);if(this._check_template(this.o.templates.leftArrow)){this.picker.find('.prev').html(this.o.templates.leftArrow)}
|
||||
if(this._check_template(this.o.templates.rightArrow)){this.picker.find('.next').html(this.o.templates.rightArrow)}
|
||||
this._buildEvents();this._attachEvents();if(this.isInline){this.picker.addClass('datepicker-inline').appendTo(this.element)}
|
||||
else{this.picker.addClass('datepicker-dropdown dropdown-menu')}
|
||||
if(this.o.rtl){this.picker.addClass('datepicker-rtl')}
|
||||
this.viewMode=this.o.startView;if(this.o.calendarWeeks)
|
||||
this.picker.find('thead .datepicker-title, tfoot .today, tfoot .clear').attr('colspan',function(i,val){return parseInt(val)+1});this._allow_update=!1;this.setStartDate(this._o.startDate);this.setEndDate(this._o.endDate);this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);this.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted);this.setDatesDisabled(this.o.datesDisabled);this.fillDow();this.fillMonths();this._allow_update=!0;this.update();this.showMode();if(this.isInline){this.show()}};Datepicker.prototype={constructor:Datepicker,_resolveViewName:function(view,default_value){if(view===0||view==='days'||view==='month'){return 0}
|
||||
if(view===1||view==='months'||view==='year'){return 1}
|
||||
if(view===2||view==='years'||view==='decade'){return 2}
|
||||
if(view===3||view==='decades'||view==='century'){return 3}
|
||||
if(view===4||view==='centuries'||view==='millennium'){return 4}
|
||||
return default_value===undefined?!1:default_value},_check_template:function(tmp){try{if(tmp===undefined||tmp===""){return!1}
|
||||
if((tmp.match(/[<>]/g)||[]).length<=0){return!0}
|
||||
var jDom=$(tmp);return jDom.length>0}
|
||||
catch(ex){return!1}},_process_options:function(opts){this._o=$.extend({},this._o,opts);var o=this.o=$.extend({},this._o);var lang=o.language;if(!dates[lang]){lang=lang.split('-')[0];if(!dates[lang])
|
||||
lang=defaults.language}
|
||||
o.language=lang;o.startView=this._resolveViewName(o.startView,0);o.minViewMode=this._resolveViewName(o.minViewMode,0);o.maxViewMode=this._resolveViewName(o.maxViewMode,4);o.startView=Math.min(o.startView,o.maxViewMode);o.startView=Math.max(o.startView,o.minViewMode);if(o.multidate!==!0){o.multidate=Number(o.multidate)||!1;if(o.multidate!==!1)
|
||||
o.multidate=Math.max(0,o.multidate)}
|
||||
o.multidateSeparator=String(o.multidateSeparator);o.weekStart%=7;o.weekEnd=(o.weekStart+6)%7;var format=DPGlobal.parseFormat(o.format);if(o.startDate!==-Infinity){if(!!o.startDate){if(o.startDate instanceof Date)
|
||||
o.startDate=this._local_to_utc(this._zero_time(o.startDate));else o.startDate=DPGlobal.parseDate(o.startDate,format,o.language,o.assumeNearbyYear)}
|
||||
else{o.startDate=-Infinity}}
|
||||
if(o.endDate!==Infinity){if(!!o.endDate){if(o.endDate instanceof Date)
|
||||
o.endDate=this._local_to_utc(this._zero_time(o.endDate));else o.endDate=DPGlobal.parseDate(o.endDate,format,o.language,o.assumeNearbyYear)}
|
||||
else{o.endDate=Infinity}}
|
||||
o.daysOfWeekDisabled=o.daysOfWeekDisabled||[];if(!$.isArray(o.daysOfWeekDisabled))
|
||||
o.daysOfWeekDisabled=o.daysOfWeekDisabled.split(/[,\s]*/);o.daysOfWeekDisabled=$.map(o.daysOfWeekDisabled,function(d){return parseInt(d,10)});o.daysOfWeekHighlighted=o.daysOfWeekHighlighted||[];if(!$.isArray(o.daysOfWeekHighlighted))
|
||||
o.daysOfWeekHighlighted=o.daysOfWeekHighlighted.split(/[,\s]*/);o.daysOfWeekHighlighted=$.map(o.daysOfWeekHighlighted,function(d){return parseInt(d,10)});o.datesDisabled=o.datesDisabled||[];if(!$.isArray(o.datesDisabled)){o.datesDisabled=[o.datesDisabled]}
|
||||
o.datesDisabled=$.map(o.datesDisabled,function(d){return DPGlobal.parseDate(d,format,o.language,o.assumeNearbyYear)});var plc=String(o.orientation).toLowerCase().split(/\s+/g),_plc=o.orientation.toLowerCase();plc=$.grep(plc,function(word){return/^auto|left|right|top|bottom$/.test(word)});o.orientation={x:'auto',y:'auto'};if(!_plc||_plc==='auto');else if(plc.length===1){switch(plc[0]){case 'top':case 'bottom':o.orientation.y=plc[0];break;case 'left':case 'right':o.orientation.x=plc[0];break}}
|
||||
else{_plc=$.grep(plc,function(word){return/^left|right$/.test(word)});o.orientation.x=_plc[0]||'auto';_plc=$.grep(plc,function(word){return/^top|bottom$/.test(word)});o.orientation.y=_plc[0]||'auto'}
|
||||
if(o.defaultViewDate){var year=o.defaultViewDate.year||new Date().getFullYear();var month=o.defaultViewDate.month||0;var day=o.defaultViewDate.day||1;o.defaultViewDate=UTCDate(year,month,day)}else{o.defaultViewDate=UTCToday()}},_events:[],_secondaryEvents:[],_applyEvents:function(evs){for(var i=0,el,ch,ev;i<evs.length;i++){el=evs[i][0];if(evs[i].length===2){ch=undefined;ev=evs[i][1]}
|
||||
else if(evs[i].length===3){ch=evs[i][1];ev=evs[i][2]}
|
||||
el.on(ev,ch)}},_unapplyEvents:function(evs){for(var i=0,el,ev,ch;i<evs.length;i++){el=evs[i][0];if(evs[i].length===2){ch=undefined;ev=evs[i][1]}
|
||||
else if(evs[i].length===3){ch=evs[i][1];ev=evs[i][2]}
|
||||
el.off(ev,ch)}},_buildEvents:function(){var events={keyup:$.proxy(function(e){if($.inArray(e.keyCode,[27,37,39,38,40,32,13,9])===-1)
|
||||
this.update()},this),keydown:$.proxy(this.keydown,this),paste:$.proxy(this.paste,this)};if(this.o.showOnFocus===!0){events.focus=$.proxy(this.show,this)}
|
||||
if(this.isInput){this._events=[[this.element,events]]}
|
||||
else if(this.component&&this.hasInput){this._events=[[this.inputField,events],[this.component,{click:$.proxy(this.show,this)}]]}
|
||||
else{this._events=[[this.element,{click:$.proxy(this.show,this),keydown:$.proxy(this.keydown,this)}]]}
|
||||
this._events.push([this.element,'*',{blur:$.proxy(function(e){this._focused_from=e.target},this)}],[this.element,{blur:$.proxy(function(e){this._focused_from=e.target},this)}]);if(this.o.immediateUpdates){this._events.push([this.element,{'changeYear changeMonth':$.proxy(function(e){this.update(e.date)},this)}])}
|
||||
this._secondaryEvents=[[this.picker,{click:$.proxy(this.click,this)}],[$(window),{resize:$.proxy(this.place,this)}],[$(document),{mousedown:$.proxy(function(e){if(!(this.element.is(e.target)||this.element.find(e.target).length||this.picker.is(e.target)||this.picker.find(e.target).length||this.isInline)){this.hide()}},this)}]]},_attachEvents:function(){this._detachEvents();this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents();this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(event,altdate){var date=altdate||this.dates.get(-1),local_date=this._utc_to_local(date);this.element.trigger({type:event,date:local_date,dates:$.map(this.dates,this._utc_to_local),format:$.proxy(function(ix,format){if(arguments.length===0){ix=this.dates.length-1;format=this.o.format}
|
||||
else if(typeof ix==='string'){format=ix;ix=this.dates.length-1}
|
||||
format=format||this.o.format;var date=this.dates.get(ix);return DPGlobal.formatDate(date,format,this.o.language)},this)})},show:function(){if(this.inputField.prop('disabled')||(this.inputField.prop('readonly')&&this.o.enableOnReadonly===!1))
|
||||
return;if(!this.isInline)
|
||||
this.picker.appendTo(this.o.container);this.place();this.picker.show();this._attachSecondaryEvents();this._trigger('show');if((window.navigator.msMaxTouchPoints||'ontouchstart' in document)&&this.o.disableTouchKeyboard){$(this.element).blur()}
|
||||
return this},hide:function(){if(this.isInline||!this.picker.is(':visible'))
|
||||
return this;this.focusDate=null;this.picker.hide().detach();this._detachSecondaryEvents();this.viewMode=this.o.startView;this.showMode();if(this.o.forceParse&&this.inputField.val())
|
||||
this.setValue();this._trigger('hide');return this},destroy:function(){this.hide();this._detachEvents();this._detachSecondaryEvents();this.picker.remove();delete this.element.data().datepicker;if(!this.isInput){delete this.element.data().date}
|
||||
return this},paste:function(evt){var dateString;if(evt.originalEvent.clipboardData&&evt.originalEvent.clipboardData.types&&$.inArray('text/plain',evt.originalEvent.clipboardData.types)!==-1){dateString=evt.originalEvent.clipboardData.getData('text/plain')}
|
||||
else if(window.clipboardData){dateString=window.clipboardData.getData('Text')}
|
||||
else{return}
|
||||
this.setDate(dateString);this.update();evt.preventDefault()},_utc_to_local:function(utc){return utc&&new Date(utc.getTime()+(utc.getTimezoneOffset()*60000))},_local_to_utc:function(local){return local&&new Date(local.getTime()-(local.getTimezoneOffset()*60000))},_zero_time:function(local){return local&&new Date(local.getFullYear(),local.getMonth(),local.getDate())},_zero_utc_time:function(utc){return utc&&new Date(Date.UTC(utc.getUTCFullYear(),utc.getUTCMonth(),utc.getUTCDate()))},getDates:function(){return $.map(this.dates,this._utc_to_local)},getUTCDates:function(){return $.map(this.dates,function(d){return new Date(d)})},getDate:function(){return this._utc_to_local(this.getUTCDate())},getUTCDate:function(){var selected_date=this.dates.get(-1);if(typeof selected_date!=='undefined'){return new Date(selected_date)}else{return null}},clearDates:function(){if(this.inputField){this.inputField.val('')}
|
||||
this.update();this._trigger('changeDate');if(this.o.autoclose){this.hide()}},setDates:function(){var args=$.isArray(arguments[0])?arguments[0]:arguments;this.update.apply(this,args);this._trigger('changeDate');this.setValue();return this},setUTCDates:function(){var args=$.isArray(arguments[0])?arguments[0]:arguments;this.update.apply(this,$.map(args,this._utc_to_local));this._trigger('changeDate');this.setValue();return this},setDate:alias('setDates'),setUTCDate:alias('setUTCDates'),remove:alias('destroy'),setValue:function(){var formatted=this.getFormattedDate();this.inputField.val(formatted);return this},getFormattedDate:function(format){if(format===undefined)
|
||||
format=this.o.format;var lang=this.o.language;return $.map(this.dates,function(d){return DPGlobal.formatDate(d,format,lang)}).join(this.o.multidateSeparator)},getStartDate:function(){return this.o.startDate},setStartDate:function(startDate){this._process_options({startDate:startDate});this.update();this.updateNavArrows();return this},getEndDate:function(){return this.o.endDate},setEndDate:function(endDate){this._process_options({endDate:endDate});this.update();this.updateNavArrows();return this},setDaysOfWeekDisabled:function(daysOfWeekDisabled){this._process_options({daysOfWeekDisabled:daysOfWeekDisabled});this.update();this.updateNavArrows();return this},setDaysOfWeekHighlighted:function(daysOfWeekHighlighted){this._process_options({daysOfWeekHighlighted:daysOfWeekHighlighted});this.update();return this},setDatesDisabled:function(datesDisabled){this._process_options({datesDisabled:datesDisabled});this.update();this.updateNavArrows()},place:function(){if(this.isInline)
|
||||
return this;var calendarWidth=this.picker.outerWidth(),calendarHeight=this.picker.outerHeight(),visualPadding=10,container=$(this.o.container),windowWidth=container.width(),scrollTop=this.o.container==='body'?$(document).scrollTop():container.scrollTop(),appendOffset=container.offset();var parentsZindex=[];this.element.parents().each(function(){var itemZIndex=$(this).css('z-index');if(itemZIndex!=='auto'&&itemZIndex!==0)parentsZindex.push(parseInt(itemZIndex))});var zIndex=Math.max.apply(Math,parentsZindex)+this.o.zIndexOffset;var offset=this.component?this.component.parent().offset():this.element.offset();var height=this.component?this.component.outerHeight(!0):this.element.outerHeight(!1);var width=this.component?this.component.outerWidth(!0):this.element.outerWidth(!1);var left=offset.left-appendOffset.left,top=offset.top-appendOffset.top;if(this.o.container!=='body'){top+=scrollTop}
|
||||
this.picker.removeClass('datepicker-orient-top datepicker-orient-bottom '+'datepicker-orient-right datepicker-orient-left');if(this.o.orientation.x!=='auto'){this.picker.addClass('datepicker-orient-'+this.o.orientation.x);if(this.o.orientation.x==='right')
|
||||
left-=calendarWidth-width}
|
||||
else{if(offset.left<0){this.picker.addClass('datepicker-orient-left');left-=offset.left-visualPadding}else if(left+calendarWidth>windowWidth){this.picker.addClass('datepicker-orient-right');left+=width-calendarWidth}else{this.picker.addClass('datepicker-orient-left')}}
|
||||
var yorient=this.o.orientation.y,top_overflow;if(yorient==='auto'){top_overflow=-scrollTop+top-calendarHeight;yorient=top_overflow<0?'bottom':'top'}
|
||||
this.picker.addClass('datepicker-orient-'+yorient);if(yorient==='top')
|
||||
top-=calendarHeight+parseInt(this.picker.css('padding-top'));else top+=height;if(this.o.rtl){var right=windowWidth-(left+width);this.picker.css({top:top,right:right,zIndex:zIndex})}else{this.picker.css({top:top,left:left,zIndex:zIndex})}
|
||||
return this},_allow_update:!0,update:function(){if(!this._allow_update)
|
||||
return this;var oldDates=this.dates.copy(),dates=[],fromArgs=!1;if(arguments.length){$.each(arguments,$.proxy(function(i,date){if(date instanceof Date)
|
||||
date=this._local_to_utc(date);dates.push(date)},this));fromArgs=!0}
|
||||
else{dates=this.isInput?this.element.val():this.element.data('date')||this.inputField.val();if(dates&&this.o.multidate)
|
||||
dates=dates.split(this.o.multidateSeparator);else dates=[dates];delete this.element.data().date}
|
||||
dates=$.map(dates,$.proxy(function(date){return DPGlobal.parseDate(date,this.o.format,this.o.language,this.o.assumeNearbyYear)},this));dates=$.grep(dates,$.proxy(function(date){return(!this.dateWithinRange(date)||!date)},this),!0);this.dates.replace(dates);if(this.dates.length)
|
||||
this.viewDate=new Date(this.dates.get(-1));else if(this.viewDate<this.o.startDate)
|
||||
this.viewDate=new Date(this.o.startDate);else if(this.viewDate>this.o.endDate)
|
||||
this.viewDate=new Date(this.o.endDate);else this.viewDate=this.o.defaultViewDate;if(fromArgs){this.setValue()}
|
||||
else if(dates.length){if(String(oldDates)!==String(this.dates))
|
||||
this._trigger('changeDate')}
|
||||
if(!this.dates.length&&oldDates.length)
|
||||
this._trigger('clearDate');this.fill();this.element.change();return this},fillDow:function(){var dowCnt=this.o.weekStart,html='<tr>';if(this.o.calendarWeeks){this.picker.find('.datepicker-days .datepicker-switch').attr('colspan',function(i,val){return parseInt(val)+1});html+='<th class="cw"> </th>'}
|
||||
while(dowCnt<this.o.weekStart+7){html+='<th class="dow';if($.inArray(dowCnt,this.o.daysOfWeekDisabled)>-1)
|
||||
html+=' disabled';html+='">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>'}
|
||||
html+='</tr>';this.picker.find('.datepicker-days thead').append(html)},fillMonths:function(){var localDate=this._utc_to_local(this.viewDate);var html='',i=0;while(i<12){var focused=localDate&&localDate.getMonth()===i?' focused':'';html+='<span class="month'+focused+'">'+dates[this.o.language].monthsShort[i++]+'</span>'}
|
||||
this.picker.find('.datepicker-months td').html(html)},setRange:function(range){if(!range||!range.length)
|
||||
delete this.range;else this.range=$.map(range,function(d){return d.valueOf()});this.fill()},getClassNames:function(date){var cls=[],year=this.viewDate.getUTCFullYear(),month=this.viewDate.getUTCMonth(),today=new Date();if(date.getUTCFullYear()<year||(date.getUTCFullYear()===year&&date.getUTCMonth()<month)){cls.push('old')}
|
||||
else if(date.getUTCFullYear()>year||(date.getUTCFullYear()===year&&date.getUTCMonth()>month)){cls.push('new')}
|
||||
if(this.focusDate&&date.valueOf()===this.focusDate.valueOf())
|
||||
cls.push('focused');if(this.o.todayHighlight&&date.getUTCFullYear()===today.getFullYear()&&date.getUTCMonth()===today.getMonth()&&date.getUTCDate()===today.getDate()){cls.push('today')}
|
||||
if(this.dates.contains(date)!==-1)
|
||||
cls.push('active');if(!this.dateWithinRange(date)){cls.push('disabled')}
|
||||
if(this.dateIsDisabled(date)){cls.push('disabled','disabled-date')}
|
||||
if($.inArray(date.getUTCDay(),this.o.daysOfWeekHighlighted)!==-1){cls.push('highlighted')}
|
||||
if(this.range){if(date>this.range[0]&&date<this.range[this.range.length-1]){cls.push('range')}
|
||||
if($.inArray(date.valueOf(),this.range)!==-1){cls.push('selected')}
|
||||
if(date.valueOf()===this.range[0]){cls.push('range-start')}
|
||||
if(date.valueOf()===this.range[this.range.length-1]){cls.push('range-end')}}
|
||||
return cls},_fill_yearsView:function(selector,cssClass,factor,step,currentYear,startYear,endYear,callback){var html,view,year,steps,startStep,endStep,thisYear,i,classes,tooltip,before;html='';view=this.picker.find(selector);year=parseInt(currentYear/factor,10)*factor;startStep=parseInt(startYear/step,10)*step;endStep=parseInt(endYear/step,10)*step;steps=$.map(this.dates,function(d){return parseInt(d.getUTCFullYear()/step,10)*step});view.find('.datepicker-switch').text(year+'-'+(year+step*9));thisYear=year-step;for(i=-1;i<11;i+=1){classes=[cssClass];tooltip=null;if(i===-1){classes.push('old')}else if(i===10){classes.push('new')}
|
||||
if($.inArray(thisYear,steps)!==-1){classes.push('active')}
|
||||
if(thisYear<startStep||thisYear>endStep){classes.push('disabled')}
|
||||
if(thisYear===this.viewDate.getFullYear()){classes.push('focused')}
|
||||
if(callback!==$.noop){before=callback(new Date(thisYear,0,1));if(before===undefined){before={}}else if(typeof(before)==='boolean'){before={enabled:before}}else if(typeof(before)==='string'){before={classes:before}}
|
||||
if(before.enabled===!1){classes.push('disabled')}
|
||||
if(before.classes){classes=classes.concat(before.classes.split(/\s+/))}
|
||||
if(before.tooltip){tooltip=before.tooltip}}
|
||||
html+='<span class="'+classes.join(' ')+'"'+(tooltip?' title="'+tooltip+'"':'')+'>'+thisYear+'</span>';thisYear+=step}
|
||||
view.find('td').html(html)},fill:function(){var d=new Date(this.viewDate),year=d.getUTCFullYear(),month=d.getUTCMonth(),startYear=this.o.startDate!==-Infinity?this.o.startDate.getUTCFullYear():-Infinity,startMonth=this.o.startDate!==-Infinity?this.o.startDate.getUTCMonth():-Infinity,endYear=this.o.endDate!==Infinity?this.o.endDate.getUTCFullYear():Infinity,endMonth=this.o.endDate!==Infinity?this.o.endDate.getUTCMonth():Infinity,todaytxt=dates[this.o.language].today||dates.en.today||'',cleartxt=dates[this.o.language].clear||dates.en.clear||'',titleFormat=dates[this.o.language].titleFormat||dates.en.titleFormat,tooltip,before;if(isNaN(year)||isNaN(month))
|
||||
return;this.picker.find('.datepicker-days .datepicker-switch').text(DPGlobal.formatDate(d,titleFormat,this.o.language));this.picker.find('tfoot .today').text(todaytxt).toggle(this.o.todayBtn!==!1);this.picker.find('tfoot .clear').text(cleartxt).toggle(this.o.clearBtn!==!1);this.picker.find('thead .datepicker-title').text(this.o.title).toggle(this.o.title!=='');this.updateNavArrows();this.fillMonths();var prevMonth=UTCDate(year,month-1,28),day=DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(),prevMonth.getUTCMonth());prevMonth.setUTCDate(day);prevMonth.setUTCDate(day-(prevMonth.getUTCDay()-this.o.weekStart+7)%7);var nextMonth=new Date(prevMonth);if(prevMonth.getUTCFullYear()<100){nextMonth.setUTCFullYear(prevMonth.getUTCFullYear())}
|
||||
nextMonth.setUTCDate(nextMonth.getUTCDate()+42);nextMonth=nextMonth.valueOf();var html=[];var clsName;while(prevMonth.valueOf()<nextMonth){if(prevMonth.getUTCDay()===this.o.weekStart){html.push('<tr>');if(this.o.calendarWeeks){var
|
||||
ws=new Date(+prevMonth+(this.o.weekStart-prevMonth.getUTCDay()-7)%7*864e5),th=new Date(Number(ws)+(7+4-ws.getUTCDay())%7*864e5),yth=new Date(Number(yth=UTCDate(th.getUTCFullYear(),0,1))+(7+4-yth.getUTCDay())%7*864e5),calWeek=(th-yth)/864e5/7+1;html.push('<td class="cw">'+calWeek+'</td>')}}
|
||||
clsName=this.getClassNames(prevMonth);clsName.push('day');if(this.o.beforeShowDay!==$.noop){before=this.o.beforeShowDay(this._utc_to_local(prevMonth));if(before===undefined)
|
||||
before={};else if(typeof(before)==='boolean')
|
||||
before={enabled:before};else if(typeof(before)==='string')
|
||||
before={classes:before};if(before.enabled===!1)
|
||||
clsName.push('disabled');if(before.classes)
|
||||
clsName=clsName.concat(before.classes.split(/\s+/));if(before.tooltip)
|
||||
tooltip=before.tooltip}
|
||||
if($.isFunction($.uniqueSort)){clsName=$.uniqueSort(clsName)}else{clsName=$.unique(clsName)}
|
||||
html.push('<td class="'+clsName.join(' ')+'"'+(tooltip?' title="'+tooltip+'"':'')+'>'+prevMonth.getUTCDate()+'</td>');tooltip=null;if(prevMonth.getUTCDay()===this.o.weekEnd){html.push('</tr>')}
|
||||
prevMonth.setUTCDate(prevMonth.getUTCDate()+1)}
|
||||
this.picker.find('.datepicker-days tbody').empty().append(html.join(''));var monthsTitle=dates[this.o.language].monthsTitle||dates.en.monthsTitle||'Months';var months=this.picker.find('.datepicker-months').find('.datepicker-switch').text(this.o.maxViewMode<2?monthsTitle:year).end().find('span').removeClass('active');$.each(this.dates,function(i,d){if(d.getUTCFullYear()===year)
|
||||
months.eq(d.getUTCMonth()).addClass('active')});if(year<startYear||year>endYear){months.addClass('disabled')}
|
||||
if(year===startYear){months.slice(0,startMonth).addClass('disabled')}
|
||||
if(year===endYear){months.slice(endMonth+1).addClass('disabled')}
|
||||
if(this.o.beforeShowMonth!==$.noop){var that=this;$.each(months,function(i,month){var moDate=new Date(year,i,1);var before=that.o.beforeShowMonth(moDate);if(before===undefined)
|
||||
before={};else if(typeof(before)==='boolean')
|
||||
before={enabled:before};else if(typeof(before)==='string')
|
||||
before={classes:before};if(before.enabled===!1&&!$(month).hasClass('disabled'))
|
||||
$(month).addClass('disabled');if(before.classes)
|
||||
$(month).addClass(before.classes);if(before.tooltip)
|
||||
$(month).prop('title',before.tooltip)})}
|
||||
this._fill_yearsView('.datepicker-years','year',10,1,year,startYear,endYear,this.o.beforeShowYear);this._fill_yearsView('.datepicker-decades','decade',100,10,year,startYear,endYear,this.o.beforeShowDecade);this._fill_yearsView('.datepicker-centuries','century',1000,100,year,startYear,endYear,this.o.beforeShowCentury)},updateNavArrows:function(){if(!this._allow_update)
|
||||
return;var d=new Date(this.viewDate),year=d.getUTCFullYear(),month=d.getUTCMonth();switch(this.viewMode){case 0:if(this.o.startDate!==-Infinity&&year<=this.o.startDate.getUTCFullYear()&&month<=this.o.startDate.getUTCMonth()){this.picker.find('.prev').css({visibility:'hidden'})}
|
||||
else{this.picker.find('.prev').css({visibility:'visible'})}
|
||||
if(this.o.endDate!==Infinity&&year>=this.o.endDate.getUTCFullYear()&&month>=this.o.endDate.getUTCMonth()){this.picker.find('.next').css({visibility:'hidden'})}
|
||||
else{this.picker.find('.next').css({visibility:'visible'})}
|
||||
break;case 1:case 2:case 3:case 4:if(this.o.startDate!==-Infinity&&year<=this.o.startDate.getUTCFullYear()||this.o.maxViewMode<2){this.picker.find('.prev').css({visibility:'hidden'})}
|
||||
else{this.picker.find('.prev').css({visibility:'visible'})}
|
||||
if(this.o.endDate!==Infinity&&year>=this.o.endDate.getUTCFullYear()||this.o.maxViewMode<2){this.picker.find('.next').css({visibility:'hidden'})}
|
||||
else{this.picker.find('.next').css({visibility:'visible'})}
|
||||
break}},click:function(e){e.preventDefault();e.stopPropagation();var target,dir,day,year,month,monthChanged,yearChanged;target=$(e.target);if(target.hasClass('datepicker-switch')){this.showMode(1)}
|
||||
var navArrow=target.closest('.prev, .next');if(navArrow.length>0){dir=DPGlobal.modes[this.viewMode].navStep*(navArrow.hasClass('prev')?-1:1);if(this.viewMode===0){this.viewDate=this.moveMonth(this.viewDate,dir);this._trigger('changeMonth',this.viewDate)}else{this.viewDate=this.moveYear(this.viewDate,dir);if(this.viewMode===1){this._trigger('changeYear',this.viewDate)}}
|
||||
this.fill()}
|
||||
if(target.hasClass('today')&&!target.hasClass('day')){this.showMode(-2);this._setDate(UTCToday(),this.o.todayBtn==='linked'?null:'view')}
|
||||
if(target.hasClass('clear')){this.clearDates()}
|
||||
if(!target.hasClass('disabled')){if(target.hasClass('day')){day=parseInt(target.text(),10)||1;year=this.viewDate.getUTCFullYear();month=this.viewDate.getUTCMonth();if(target.hasClass('old')){if(month===0){month=11;year=year-1;monthChanged=!0;yearChanged=!0}else{month=month-1;monthChanged=!0}}
|
||||
if(target.hasClass('new')){if(month===11){month=0;year=year+1;monthChanged=!0;yearChanged=!0}else{month=month+1;monthChanged=!0}}
|
||||
this._setDate(UTCDate(year,month,day));if(yearChanged){this._trigger('changeYear',this.viewDate)}
|
||||
if(monthChanged){this._trigger('changeMonth',this.viewDate)}}
|
||||
if(target.hasClass('month')){this.viewDate.setUTCDate(1);day=1;month=target.parent().find('span').index(target);year=this.viewDate.getUTCFullYear();this.viewDate.setUTCMonth(month);this._trigger('changeMonth',this.viewDate);if(this.o.minViewMode===1){this._setDate(UTCDate(year,month,day));this.showMode()}else{this.showMode(-1)}
|
||||
this.fill()}
|
||||
if(target.hasClass('year')||target.hasClass('decade')||target.hasClass('century')){this.viewDate.setUTCDate(1);day=1;month=0;year=parseInt(target.text(),10)||0;this.viewDate.setUTCFullYear(year);if(target.hasClass('year')){this._trigger('changeYear',this.viewDate);if(this.o.minViewMode===2){this._setDate(UTCDate(year,month,day))}}
|
||||
if(target.hasClass('decade')){this._trigger('changeDecade',this.viewDate);if(this.o.minViewMode===3){this._setDate(UTCDate(year,month,day))}}
|
||||
if(target.hasClass('century')){this._trigger('changeCentury',this.viewDate);if(this.o.minViewMode===4){this._setDate(UTCDate(year,month,day))}}
|
||||
this.showMode(-1);this.fill()}}
|
||||
if(this.picker.is(':visible')&&this._focused_from){$(this._focused_from).focus()}
|
||||
delete this._focused_from},_toggle_multidate:function(date){var ix=this.dates.contains(date);if(!date){this.dates.clear()}
|
||||
if(ix!==-1){if(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive){this.dates.remove(ix)}}else if(this.o.multidate===!1){this.dates.clear();this.dates.push(date)}
|
||||
else{this.dates.push(date)}
|
||||
if(typeof this.o.multidate==='number')
|
||||
while(this.dates.length>this.o.multidate)
|
||||
this.dates.remove(0)},_setDate:function(date,which){if(!which||which==='date')
|
||||
this._toggle_multidate(date&&new Date(date));if(!which||which==='view')
|
||||
this.viewDate=date&&new Date(date);this.fill();this.setValue();if(!which||which!=='view'){this._trigger('changeDate')}
|
||||
if(this.inputField){this.inputField.change()}
|
||||
if(this.o.autoclose&&(!which||which==='date')){this.hide()}},moveDay:function(date,dir){var newDate=new Date(date);newDate.setUTCDate(date.getUTCDate()+dir);return newDate},moveWeek:function(date,dir){return this.moveDay(date,dir*7)},moveMonth:function(date,dir){if(!isValidDate(date))
|
||||
return this.o.defaultViewDate;if(!dir)
|
||||
return date;var new_date=new Date(date.valueOf()),day=new_date.getUTCDate(),month=new_date.getUTCMonth(),mag=Math.abs(dir),new_month,test;dir=dir>0?1:-1;if(mag===1){test=dir===-1?function(){return new_date.getUTCMonth()===month}:function(){return new_date.getUTCMonth()!==new_month};new_month=month+dir;new_date.setUTCMonth(new_month);if(new_month<0||new_month>11)
|
||||
new_month=(new_month+12)%12}
|
||||
else{for(var i=0;i<mag;i++)
|
||||
new_date=this.moveMonth(new_date,dir);new_month=new_date.getUTCMonth();new_date.setUTCDate(day);test=function(){return new_month!==new_date.getUTCMonth()}}
|
||||
while(test()){new_date.setUTCDate(--day);new_date.setUTCMonth(new_month)}
|
||||
return new_date},moveYear:function(date,dir){return this.moveMonth(date,dir*12)},moveAvailableDate:function(date,dir,fn){do{date=this[fn](date,dir);if(!this.dateWithinRange(date))
|
||||
return!1;fn='moveDay'}
|
||||
while(this.dateIsDisabled(date));return date},weekOfDateIsDisabled:function(date){return $.inArray(date.getUTCDay(),this.o.daysOfWeekDisabled)!==-1},dateIsDisabled:function(date){return(this.weekOfDateIsDisabled(date)||$.grep(this.o.datesDisabled,function(d){return isUTCEquals(date,d)}).length>0)},dateWithinRange:function(date){return date>=this.o.startDate&&date<=this.o.endDate},keydown:function(e){if(!this.picker.is(':visible')){if(e.keyCode===40||e.keyCode===27){this.show();e.stopPropagation()}
|
||||
return}
|
||||
var dateChanged=!1,dir,newViewDate,focusDate=this.focusDate||this.viewDate;switch(e.keyCode){case 27:if(this.focusDate){this.focusDate=null;this.viewDate=this.dates.get(-1)||this.viewDate;this.fill()}
|
||||
else this.hide();e.preventDefault();e.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||this.o.daysOfWeekDisabled.length===7)
|
||||
break;dir=e.keyCode===37||e.keyCode===38?-1:1;if(this.viewMode===0){if(e.ctrlKey){newViewDate=this.moveAvailableDate(focusDate,dir,'moveYear');if(newViewDate)
|
||||
this._trigger('changeYear',this.viewDate)}
|
||||
else if(e.shiftKey){newViewDate=this.moveAvailableDate(focusDate,dir,'moveMonth');if(newViewDate)
|
||||
this._trigger('changeMonth',this.viewDate)}
|
||||
else if(e.keyCode===37||e.keyCode===39){newViewDate=this.moveAvailableDate(focusDate,dir,'moveDay')}
|
||||
else if(!this.weekOfDateIsDisabled(focusDate)){newViewDate=this.moveAvailableDate(focusDate,dir,'moveWeek')}}else if(this.viewMode===1){if(e.keyCode===38||e.keyCode===40){dir=dir*4}
|
||||
newViewDate=this.moveAvailableDate(focusDate,dir,'moveMonth')}else if(this.viewMode===2){if(e.keyCode===38||e.keyCode===40){dir=dir*4}
|
||||
newViewDate=this.moveAvailableDate(focusDate,dir,'moveYear')}
|
||||
if(newViewDate){this.focusDate=this.viewDate=newViewDate;this.setValue();this.fill();e.preventDefault()}
|
||||
break;case 13:if(!this.o.forceParse)
|
||||
break;focusDate=this.focusDate||this.dates.get(-1)||this.viewDate;if(this.o.keyboardNavigation){this._toggle_multidate(focusDate);dateChanged=!0}
|
||||
this.focusDate=null;this.viewDate=this.dates.get(-1)||this.viewDate;this.setValue();this.fill();if(this.picker.is(':visible')){e.preventDefault();e.stopPropagation();if(this.o.autoclose)
|
||||
this.hide()}
|
||||
break;case 9:this.focusDate=null;this.viewDate=this.dates.get(-1)||this.viewDate;this.fill();this.hide();break}
|
||||
if(dateChanged){if(this.dates.length)
|
||||
this._trigger('changeDate');else this._trigger('clearDate');if(this.inputField){this.inputField.change()}}},showMode:function(dir){if(dir){this.viewMode=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,this.viewMode+dir))}
|
||||
this.picker.children('div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();this.updateNavArrows()}};var DateRangePicker=function(element,options){$(element).data('datepicker',this);this.element=$(element);this.inputs=$.map(options.inputs,function(i){return i.jquery?i[0]:i});delete options.inputs;datepickerPlugin.call($(this.inputs),options).on('changeDate',$.proxy(this.dateUpdated,this));this.pickers=$.map(this.inputs,function(i){return $(i).data('datepicker')});this.updateDates()};DateRangePicker.prototype={updateDates:function(){this.dates=$.map(this.pickers,function(i){return i.getUTCDate()});this.updateRanges()},updateRanges:function(){var range=$.map(this.dates,function(d){return d.valueOf()});$.each(this.pickers,function(i,p){p.setRange(range)})},dateUpdated:function(e){if(this.updating)
|
||||
return;this.updating=!0;var dp=$(e.target).data('datepicker');if(typeof(dp)==="undefined"){return}
|
||||
var new_date=dp.getUTCDate(),i=$.inArray(e.target,this.inputs),j=i-1,k=i+1,l=this.inputs.length;if(i===-1)
|
||||
return;$.each(this.pickers,function(i,p){if(!p.getUTCDate())
|
||||
p.setUTCDate(new_date)});if(new_date<this.dates[j]){while(j>=0&&new_date<this.dates[j]){this.pickers[j--].setUTCDate(new_date)}}
|
||||
else if(new_date>this.dates[k]){while(k<l&&new_date>this.dates[k]){this.pickers[k++].setUTCDate(new_date)}}
|
||||
this.updateDates();delete this.updating},remove:function(){$.map(this.pickers,function(p){p.remove()});delete this.element.data().datepicker}};function opts_from_el(el,prefix){var data=$(el).data(),out={},inkey,replace=new RegExp('^'+prefix.toLowerCase()+'([A-Z])');prefix=new RegExp('^'+prefix.toLowerCase());function re_lower(_,a){return a.toLowerCase()}
|
||||
for(var key in data)
|
||||
if(prefix.test(key)){inkey=key.replace(replace,re_lower);out[inkey]=data[key]}
|
||||
return out}
|
||||
function opts_from_locale(lang){var out={};if(!dates[lang]){lang=lang.split('-')[0];if(!dates[lang])
|
||||
return}
|
||||
var d=dates[lang];$.each(locale_opts,function(i,k){if(k in d)
|
||||
out[k]=d[k]});return out}
|
||||
var old=$.fn.datepicker;var datepickerPlugin=function(option){var args=Array.apply(null,arguments);args.shift();var internal_return;this.each(function(){var $this=$(this),data=$this.data('datepicker'),options=typeof option==='object'&&option;if(!data){var elopts=opts_from_el(this,'date'),xopts=$.extend({},defaults,elopts,options),locopts=opts_from_locale(xopts.language),opts=$.extend({},defaults,locopts,elopts,options);if($this.hasClass('input-daterange')||opts.inputs){$.extend(opts,{inputs:opts.inputs||$this.find('input').toArray()});data=new DateRangePicker(this,opts)}
|
||||
else{data=new Datepicker(this,opts)}
|
||||
$this.data('datepicker',data)}
|
||||
if(typeof option==='string'&&typeof data[option]==='function'){internal_return=data[option].apply(data,args)}});if(internal_return===undefined||internal_return instanceof Datepicker||internal_return instanceof DateRangePicker)
|
||||
return this;if(this.length>1)
|
||||
throw new Error('Using only allowed for the collection of a single element ('+option+' function)');else return internal_return};$.fn.datepicker=datepickerPlugin;var defaults=$.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:$.noop,beforeShowMonth:$.noop,beforeShowYear:$.noop,beforeShowDecade:$.noop,beforeShowCentury:$.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:Infinity,forceParse:!0,format:'mm/dd/yyyy',keyboardNavigation:!0,language:'en',minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:',',orientation:"auto",rtl:!1,startDate:-Infinity,startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:'body',immediateUpdates:!1,title:'',templates:{leftArrow:'«',rightArrow:'»'}};var locale_opts=$.fn.datepicker.locale_opts=['format','rtl','weekStart'];$.fn.datepicker.Constructor=Datepicker;var dates=$.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}};var DPGlobal={modes:[{clsName:'days',navFnc:'Month',navStep:1},{clsName:'months',navFnc:'FullYear',navStep:1},{clsName:'years',navFnc:'FullYear',navStep:10},{clsName:'decades',navFnc:'FullDecade',navStep:100},{clsName:'centuries',navFnc:'FullCentury',navStep:1000}],isLeapYear:function(year){return(((year%4===0)&&(year%100!==0))||(year%400===0))},getDaysInMonth:function(year,month){return[31,(DPGlobal.isLeapYear(year)?29:28),31,30,31,30,31,31,30,31,30,31][month]},validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(format){if(typeof format.toValue==='function'&&typeof format.toDisplay==='function')
|
||||
return format;var separators=format.replace(this.validParts,'\0').split('\0'),parts=format.match(this.validParts);if(!separators||!separators.length||!parts||parts.length===0){throw new Error("Invalid date format.")}
|
||||
return{separators:separators,parts:parts}},parseDate:function(date,format,language,assumeNearby){if(!date)
|
||||
return undefined;if(date instanceof Date)
|
||||
return date;if(typeof format==='string')
|
||||
format=DPGlobal.parseFormat(format);if(format.toValue)
|
||||
return format.toValue(date,format,language);var part_re=/([\-+]\d+)([dmwy])/,parts=date.match(/([\-+]\d+)([dmwy])/g),fn_map={d:'moveDay',m:'moveMonth',w:'moveWeek',y:'moveYear'},dateAliases={yesterday:'-1d',today:'+0d',tomorrow:'+1d'},part,dir,i,fn;if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){date=new Date();for(i=0;i<parts.length;i++){part=part_re.exec(parts[i]);dir=parseInt(part[1]);fn=fn_map[part[2]];date=Datepicker.prototype[fn](date,dir)}
|
||||
return UTCDate(date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate())}
|
||||
if(typeof dateAliases[date]!=='undefined'){date=dateAliases[date];parts=date.match(/([\-+]\d+)([dmwy])/g);if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){date=new Date();for(i=0;i<parts.length;i++){part=part_re.exec(parts[i]);dir=parseInt(part[1]);fn=fn_map[part[2]];date=Datepicker.prototype[fn](date,dir)}
|
||||
return UTCDate(date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate())}}
|
||||
parts=date&&date.match(this.nonpunctuation)||[];date=new Date();function applyNearbyYear(year,threshold){if(threshold===!0)
|
||||
threshold=10;if(year<100){year+=2000;if(year>((new Date()).getFullYear()+threshold)){year-=100}}
|
||||
return year}
|
||||
var parsed={},setters_order=['yyyy','yy','M','MM','m','mm','d','dd'],setters_map={yyyy:function(d,v){return d.setUTCFullYear(assumeNearby?applyNearbyYear(v,assumeNearby):v)},yy:function(d,v){return d.setUTCFullYear(assumeNearby?applyNearbyYear(v,assumeNearby):v)},m:function(d,v){if(isNaN(d))
|
||||
return d;v-=1;while(v<0)v+=12;v%=12;d.setUTCMonth(v);while(d.getUTCMonth()!==v)
|
||||
d.setUTCDate(d.getUTCDate()-1);return d},d:function(d,v){return d.setUTCDate(v)}},val,filtered;setters_map.M=setters_map.MM=setters_map.mm=setters_map.m;setters_map.dd=setters_map.d;date=UTCToday();var fparts=format.parts.slice();if(parts.length!==fparts.length){fparts=$(fparts).filter(function(i,p){return $.inArray(p,setters_order)!==-1}).toArray()}
|
||||
function match_part(){var m=this.slice(0,parts[i].length),p=parts[i].slice(0,m.length);return m.toLowerCase()===p.toLowerCase()}
|
||||
if(parts.length===fparts.length){var cnt;for(i=0,cnt=fparts.length;i<cnt;i++){val=parseInt(parts[i],10);part=fparts[i];if(isNaN(val)){switch(part){case 'MM':filtered=$(dates[language].months).filter(match_part);val=$.inArray(filtered[0],dates[language].months)+1;break;case 'M':filtered=$(dates[language].monthsShort).filter(match_part);val=$.inArray(filtered[0],dates[language].monthsShort)+1;break}}
|
||||
parsed[part]=val}
|
||||
var _date,s;for(i=0;i<setters_order.length;i++){s=setters_order[i];if(s in parsed&&!isNaN(parsed[s])){_date=new Date(date);setters_map[s](_date,parsed[s]);if(!isNaN(_date))
|
||||
date=_date}}}
|
||||
return date},formatDate:function(date,format,language){if(!date)
|
||||
return '';if(typeof format==='string')
|
||||
format=DPGlobal.parseFormat(format);if(format.toDisplay)
|
||||
return format.toDisplay(date,format,language);var val={d:date.getUTCDate(),D:dates[language].daysShort[date.getUTCDay()],DD:dates[language].days[date.getUTCDay()],m:date.getUTCMonth()+1,M:dates[language].monthsShort[date.getUTCMonth()],MM:dates[language].months[date.getUTCMonth()],yy:date.getUTCFullYear().toString().substring(2),yyyy:date.getUTCFullYear()};val.dd=(val.d<10?'0':'')+val.d;val.mm=(val.m<10?'0':'')+val.m;date=[];var seps=$.extend([],format.separators);for(var i=0,cnt=format.parts.length;i<=cnt;i++){if(seps.length)
|
||||
date.push(seps.shift());date.push(val[format.parts[i]])}
|
||||
return date.join('')},headTemplate:'<thead>'+'<tr>'+'<th colspan="7" class="datepicker-title"></th>'+'</tr>'+'<tr>'+'<th class="prev">«</th>'+'<th colspan="5" class="datepicker-switch"></th>'+'<th class="next">»</th>'+'</tr>'+'</thead>',contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot>'+'<tr>'+'<th colspan="7" class="today"></th>'+'</tr>'+'<tr>'+'<th colspan="7" class="clear"></th>'+'</tr>'+'</tfoot>'};DPGlobal.template='<div class="datepicker">'+'<div class="datepicker-days">'+'<table class="table-condensed">'+DPGlobal.headTemplate+'<tbody></tbody>'+DPGlobal.footTemplate+'</table>'+'</div>'+'<div class="datepicker-months">'+'<table class="table-condensed">'+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'</table>'+'</div>'+'<div class="datepicker-years">'+'<table class="table-condensed">'+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'</table>'+'</div>'+'<div class="datepicker-decades">'+'<table class="table-condensed">'+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'</table>'+'</div>'+'<div class="datepicker-centuries">'+'<table class="table-condensed">'+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'</table>'+'</div>'+'</div>';$.fn.datepicker.DPGlobal=DPGlobal;$.fn.datepicker.noConflict=function(){$.fn.datepicker=old;return this};$.fn.datepicker.version='1.6.4';$(document).on('focus.datepicker.data-api click.datepicker.data-api','[data-provide="datepicker"]',function(e){var $this=$(this);if($this.data('datepicker'))
|
||||
return;e.preventDefault();datepickerPlugin.call($this,'show')});$(function(){datepickerPlugin.call($('[data-provide="datepicker-inline"]'))})}))
|
||||
7
dist/js/bootstrap.min.js
vendored
44
dist/js/jquery.easing.min.js
vendored
|
|
@ -1,44 +0,0 @@
|
|||
/*
|
||||
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
|
||||
*
|
||||
* Uses the built in easing capabilities added In jQuery 1.1
|
||||
* to offer multiple easing options
|
||||
*
|
||||
* TERMS OF USE - EASING EQUATIONS
|
||||
*
|
||||
* Open source under the BSD License.
|
||||
*
|
||||
* Copyright © 2001 Robert Penner
|
||||
* All rights reserved.
|
||||
*
|
||||
* TERMS OF USE - jQuery Easing
|
||||
*
|
||||
* Open source under the BSD License.
|
||||
*
|
||||
* Copyright © 2008 George McGinley Smith
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* Neither the name of the author nor the names of contributors may be used to endorse
|
||||
* or promote products derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,f,a,h,g){"use strict";return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){"use strict";return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){"use strict";return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){"use strict";if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){"use strict";return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){"use strict";return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){"use strict";if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){"use strict";return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){"use strict";return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){"use strict";if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){"use strict";return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){"use strict";return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){"use strict";if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){"use strict";return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){"use strict";return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){"use strict";return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){"use strict";return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){"use strict";return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){"use strict";if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){"use strict";return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){"use strict";return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){"use strict";if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,l,k){"use strict";var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return -(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e},easeOutElastic:function(f,h,e,l,k){"use strict";var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}return g*Math.pow(2,-10*h)*Math.sin((h*k-i)*(2*Math.PI)/j)+l+e},easeInOutElastic:function(f,h,e,l,k){"use strict";var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k/2)==2){return e+l}if(!j){j=k*(0.3*1.5)}if(g<Math.abs(l)){g=l;var i=j/4}else{var i=j/(2*Math.PI)*Math.asin(l/g)}if(h<1){return -0.5*(g*Math.pow(2,10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j))+e}return g*Math.pow(2,-10*(h-=1))*Math.sin((h*k-i)*(2*Math.PI)/j)*0.5+l+e},easeInBack:function(e,f,a,i,h,g){"use strict";if(g==undefined){g=1.70158}return i*(f/=h)*f*((g+1)*f-g)+a},easeOutBack:function(e,f,a,i,h,g){"use strict";if(g==undefined){g=1.70158}return i*((f=f/h-1)*f*((g+1)*f+g)+1)+a},easeInOutBack:function(e,f,a,i,h,g){"use strict";if(g==undefined){g=1.70158}if((f/=h/2)<1){return i/2*(f*f*(((g*=(1.525))+1)*f-g))+a}return i/2*((f-=2)*f*(((g*=(1.525))+1)*f+g)+2)+a},easeInBounce:function(e,f,a,h,g){"use strict";return h-jQuery.easing.easeOutBounce(e,g-f,0,h,g)+a},easeOutBounce:function(e,f,a,h,g){"use strict";if((f/=g)<(1/2.75)){return h*(7.5625*f*f)+a}else{if(f<(2/2.75)){return h*(7.5625*(f-=(1.5/2.75))*f+0.75)+a}else{if(f<(2.5/2.75)){return h*(7.5625*(f-=(2.25/2.75))*f+0.9375)+a}else{return h*(7.5625*(f-=(2.625/2.75))*f+0.984375)+a}}}},easeInOutBounce:function(e,f,a,h,g){"use strict";if(f<g/2){return jQuery.easing.easeInBounce(e,f*2,0,h,g)*0.5+a}return jQuery.easing.easeOutBounce(e,f*2-g,0,h,g)*0.5+h*0.5+a}});
|
||||
3
dist/js/jquery.magnific-popup.js
vendored
2
dist/js/jquery.min.js
vendored
208
dist/js/scripts.js
vendored
|
|
@ -1,208 +0,0 @@
|
|||
/* Description: Custom JS file */
|
||||
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
|
||||
/* Navbar Scripts */
|
||||
// jQuery for page scrolling feature - requires jQuery Easing plugin
|
||||
$(function() {
|
||||
$(document).on('click', 'a.page-scroll', function(event) {
|
||||
var $anchor = $(this);
|
||||
$('html, body').stop().animate({
|
||||
scrollTop: $($anchor.attr('href')).offset().top
|
||||
}, 600, 'easeInOutExpo');
|
||||
event.preventDefault();
|
||||
});
|
||||
});
|
||||
|
||||
// offcanvas script from Bootstrap + added element to close menu on click in small viewport
|
||||
$('[data-toggle="offcanvas"], .navbar-nav li a:not(.dropdown-toggle').on('click', function () {
|
||||
$('.offcanvas-collapse').toggleClass('open')
|
||||
})
|
||||
|
||||
// hover in desktop mode
|
||||
function toggleDropdown (e) {
|
||||
const _d = $(e.target).closest('.dropdown'),
|
||||
_m = $('.dropdown-menu', _d);
|
||||
setTimeout(function(){
|
||||
const shouldOpen = e.type !== 'click' && _d.is(':hover');
|
||||
_m.toggleClass('show', shouldOpen);
|
||||
_d.toggleClass('show', shouldOpen);
|
||||
$('[data-toggle="dropdown"]', _d).attr('aria-expanded', shouldOpen);
|
||||
}, e.type === 'mouseleave' ? 300 : 0);
|
||||
}
|
||||
$('body')
|
||||
.on('mouseenter mouseleave','.dropdown',toggleDropdown)
|
||||
.on('click', '.dropdown-menu a', toggleDropdown);
|
||||
|
||||
|
||||
/* Header Slider - Swiper */
|
||||
var headerSlider = new Swiper('.header-slider', {
|
||||
autoplay: {
|
||||
delay: 3500,
|
||||
disableOnInteraction: false
|
||||
},
|
||||
loop: true,
|
||||
effect: "fade",
|
||||
speed: 700
|
||||
});
|
||||
|
||||
|
||||
/* Image Slider - Swiper */
|
||||
var imageSlider = new Swiper('.image-slider', {
|
||||
autoplay: {
|
||||
delay: 3000,
|
||||
disableOnInteraction: false
|
||||
},
|
||||
loop: false,
|
||||
navigation: {
|
||||
nextEl: '.swiper-button-next',
|
||||
prevEl: '.swiper-button-prev'
|
||||
},
|
||||
slidesPerView: 3,
|
||||
spaceBetween: 20,
|
||||
breakpoints: {
|
||||
// when window is <= 767px
|
||||
767: {
|
||||
slidesPerView: 1
|
||||
},
|
||||
// when window is <= 991px
|
||||
991: {
|
||||
slidesPerView: 2,
|
||||
spaceBetween: 10
|
||||
},
|
||||
// when window is <= 1199px
|
||||
1199: {
|
||||
slidesPerView: 3,
|
||||
spaceBetween: 20
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Image Slider Room - Swiper */
|
||||
var imageSlider = new Swiper('.image-slider-room', {
|
||||
autoplay: {
|
||||
delay: 3000,
|
||||
disableOnInteraction: false
|
||||
},
|
||||
loop: false,
|
||||
navigation: {
|
||||
nextEl: '.swiper-button-next',
|
||||
prevEl: '.swiper-button-prev',
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Card Slider - Swiper */
|
||||
var cardSlider = new Swiper('.card-slider', {
|
||||
autoplay: {
|
||||
delay: 4000,
|
||||
disableOnInteraction: false
|
||||
},
|
||||
loop: true,
|
||||
navigation: {
|
||||
nextEl: '.swiper-button-next',
|
||||
prevEl: '.swiper-button-prev'
|
||||
},
|
||||
slidesPerView: 3,
|
||||
spaceBetween: 30,
|
||||
breakpoints: {
|
||||
// when window is <= 767px
|
||||
767: {
|
||||
slidesPerView: 1
|
||||
},
|
||||
// when window is <= 991px
|
||||
991: {
|
||||
slidesPerView: 2
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Image Lightbox - Magnific Popup */
|
||||
$('.popup-link').magnificPopup({
|
||||
removalDelay: 300,
|
||||
type: 'image',
|
||||
callbacks: {
|
||||
beforeOpen: function() {
|
||||
this.st.image.markup = this.st.image.markup.replace('mfp-figure', 'mfp-figure ' + this.st.el.attr('data-effect'));
|
||||
},
|
||||
beforeClose: function() {
|
||||
$('.mfp-figure').addClass('fadeOut');
|
||||
}
|
||||
},
|
||||
gallery:{
|
||||
enabled:true //enable gallery mode
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Details Lightbox - Magnific Popup */
|
||||
$('.popup-with-move-anim').magnificPopup({
|
||||
type: 'inline',
|
||||
fixedContentPos: true,
|
||||
fixedBgPos: true,
|
||||
overflowY: 'auto',
|
||||
closeBtnInside: true,
|
||||
preloader: false,
|
||||
midClick: true,
|
||||
removalDelay: 300,
|
||||
mainClass: 'my-mfp-slide-bottom'
|
||||
});
|
||||
|
||||
|
||||
/* Move Form Fields Label When User Types */
|
||||
// for input and textarea fields
|
||||
$("input, textarea").keyup(function(){
|
||||
if ($(this).val() != '') {
|
||||
$(this).addClass('notEmpty');
|
||||
} else {
|
||||
$(this).removeClass('notEmpty');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Datepicker - Bootstrap Datepicker */
|
||||
$('#start').datepicker({
|
||||
todayHighlight: true,
|
||||
autoclose: true,
|
||||
format: 'MM/dd/yyyy',
|
||||
});
|
||||
|
||||
// detects change to selected date to keep the label above the value in the input field
|
||||
$('#start').datepicker().on('changeDate', function(e) {
|
||||
$("input[id=start]").addClass('notEmpty');
|
||||
});
|
||||
|
||||
$('#end').datepicker({
|
||||
autoclose: true,
|
||||
format: 'MM/dd/yyyy'
|
||||
});
|
||||
|
||||
// detects change to selected date to keep the label above the value in the input field// keeps the label above the value in the input field
|
||||
$('#end').datepicker().on('changeDate', function(e) {
|
||||
$("input[id=end]").addClass('notEmpty');
|
||||
});
|
||||
|
||||
|
||||
/* Back To Top Button */
|
||||
// create the back to top button
|
||||
$('body').prepend('<a href="body" class="back-to-top page-scroll">Back to Top</a>');
|
||||
var amountScrolled = 700;
|
||||
$(window).scroll(function() {
|
||||
if ($(window).scrollTop() > amountScrolled) {
|
||||
$('a.back-to-top').fadeIn('500');
|
||||
} else {
|
||||
$('a.back-to-top').fadeOut('500');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* Removes Long Focus On Buttons */
|
||||
$(".button, a, button").mouseup(function() {
|
||||
$(this).blur();
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
13
dist/js/swiper.min.js
vendored
253
dist/reservation.html
vendored
|
|
@ -1,253 +0,0 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, shrink-to-fit=no"
|
||||
/>
|
||||
|
||||
<!-- SEO Meta Tags -->
|
||||
<meta
|
||||
name="description"
|
||||
content="VillaFleurie location de vacances au Gosier en Guadeloupe"
|
||||
/>
|
||||
<meta name="author" content="VillaFleurie" />
|
||||
|
||||
<!-- OG Meta Tags to improve the way the post looks when you share the page on Facebook, Twitter, LinkedIn -->
|
||||
<meta property="og:site_name" content="VillaFleurie" />
|
||||
<!-- website name -->
|
||||
<meta property="og:site" content="" />
|
||||
<!-- website link -->
|
||||
<meta property="og:title" content="VillaFleurie" />
|
||||
<!-- title shown in the actual shared post -->
|
||||
<meta
|
||||
property="og:description"
|
||||
content="VillaFleurie location de vacances au Gosier en Guadeloupe"
|
||||
/>
|
||||
<!-- description shown in the actual shared post -->
|
||||
<meta property="og:image" content="" />
|
||||
<!-- image link, make sure it's jpg -->
|
||||
<meta property="og:url" content="/" />
|
||||
<!-- where do you want your post to link to -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<!-- to have large image post format in Twitter -->
|
||||
|
||||
<!-- Webpage Title -->
|
||||
<title>VillaFleurie</title>
|
||||
|
||||
<!-- Styles -->
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,600;0,700;1,400;1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=PT+Serif:ital,wght@1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link href="../css/bootstrap.css" rel="stylesheet" />
|
||||
<link href="../css/fontawesome-all.css" rel="stylesheet" />
|
||||
<link href="../css/bootstrap-datepicker3.css" rel="stylesheet" />
|
||||
<link href="../css/swiper.css" rel="stylesheet" />
|
||||
<link href="../css/magnific-popup.css" rel="stylesheet" />
|
||||
<link href="../css/styles.css" rel="stylesheet" />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="../images/logo.png" />
|
||||
|
||||
<script
|
||||
defer
|
||||
data-domain="villafleuriegp.com"
|
||||
src="https://plausible.nemausat.com/js/script.outbound-links.js"
|
||||
></script>
|
||||
<script>
|
||||
window.plausible =
|
||||
window.plausible ||
|
||||
function () {
|
||||
(window.plausible.q = window.plausible.q || []).push(arguments);
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
<body data-spy="scroll" data-target=".fixed-top">
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg fixed-top navbar-light">
|
||||
<div class="container">
|
||||
<!-- Text Logo - Use this if you don't have a graphic logo -->
|
||||
<!-- <a class="navbar-brand logo-text page-scroll" href="index.html">Villa</a> -->
|
||||
|
||||
<!-- Image Logo -->
|
||||
<a class="navbar-brand logo-image" href="index.html"
|
||||
><img
|
||||
src="../images/logo.png"
|
||||
alt="VillaFleurie logo"
|
||||
style="height: 76px"
|
||||
/></a>
|
||||
|
||||
<button
|
||||
class="navbar-toggler p-0 border-0"
|
||||
type="button"
|
||||
data-toggle="offcanvas"
|
||||
>
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div
|
||||
class="navbar-collapse offcanvas-collapse"
|
||||
id="navbarsExampleDefault"
|
||||
>
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item dropdown">
|
||||
<a
|
||||
class="nav-link dropdown-toggle"
|
||||
href="#"
|
||||
id="dropdown01"
|
||||
data-toggle="dropdown"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
>Chambres</a
|
||||
>
|
||||
<div class="dropdown-menu" aria-labelledby="dropdown01">
|
||||
<a class="dropdown-item page-scroll" href="t2-corail.html"
|
||||
>T2 Corail</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item page-scroll" href="t3-azur.html"
|
||||
>T3 Azur</a
|
||||
>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="contact.html">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
<span class="nav-item ml-auto">
|
||||
<a class="btn-outline-sm" href="tel:+33658961279">
|
||||
<i class="fas fa-phone-alt"></i>+33 6 58 96 12 79</a
|
||||
>
|
||||
</span>
|
||||
</div>
|
||||
<!-- end of navbar-collapse -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</nav>
|
||||
<!-- end of navbar -->
|
||||
<!-- end of navigation -->
|
||||
|
||||
|
||||
<!-- Header -->
|
||||
<header class="ex-header bg-gray">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xl-10 offset-xl-1">
|
||||
<h1 class="green">Merci pour votre message. Nous vous recontactons dès que possible.</h1>
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</header> <!-- end of ex-header -->
|
||||
<!-- end of header -->
|
||||
|
||||
|
||||
<!-- Footer -->
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3>
|
||||
Si vous souhaitez passer un moment confortable et relaxant,
|
||||
n'hésitez pas à nous contacter :
|
||||
<a class="green" href="mailto:location.villafleurie@gmail.com">
|
||||
location.villafleurie@gmail.com
|
||||
</a>
|
||||
</h3>
|
||||
<div class="social-container">
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-facebook-f fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-twitter fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-pinterest-p fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-instagram fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-youtube fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<!-- end of social-container -->
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- end of row -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</div>
|
||||
<!-- end of footer -->
|
||||
<!-- end of footer -->
|
||||
|
||||
<!-- Copyright -->
|
||||
<div class="copyright">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<hr class="divider" />
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- end of row -->
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<ul class="list-unstyled li-space-lg p-small">
|
||||
<li><a href="t2-corail.html">T2 Corail</a></li>
|
||||
<li><a href="t3-azur.html">T3 Azur</a></li>
|
||||
<li><a href="contact.html">Contact</a></li>
|
||||
</ul>
|
||||
<!-- end of list-unstyled -->
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
<div class="col-lg-6">
|
||||
<p class="p-small statement">Copyright © VillaFleurie</p>
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- enf of row -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</div>
|
||||
<!-- end of copyright -->
|
||||
<!-- end of copyright -->
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
<!-- jQuery for Bootstrap's JavaScript plugins -->
|
||||
<script src="../js/bootstrap.min.js"></script>
|
||||
<!-- Bootstrap framework -->
|
||||
<script src="../js/jquery.easing.min.js"></script>
|
||||
<!-- jQuery Easing for smooth scrolling between anchors -->
|
||||
<script src="../js/swiper.min.js"></script>
|
||||
<!-- Swiper for image and text sliders -->
|
||||
<script src="../js/jquery.magnific-popup.js"></script>
|
||||
<!-- Magnific Popup for lightboxes -->
|
||||
<script src="../js/bootstrap-datepicker.min.js"></script>
|
||||
<!-- Datepicker for Bootstrap -->
|
||||
<script src="../js/scripts.js"></script>
|
||||
<!-- Custom scripts -->
|
||||
</body>
|
||||
</html>
|
||||
402
dist/t2-corail.html
vendored
|
|
@ -1,402 +0,0 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, shrink-to-fit=no"
|
||||
/>
|
||||
|
||||
<!-- SEO Meta Tags -->
|
||||
<meta
|
||||
name="description"
|
||||
content="VillaFleurie location de vacances au Gosier en Guadeloupe"
|
||||
/>
|
||||
<meta name="author" content="VillaFleurie" />
|
||||
|
||||
<!-- OG Meta Tags to improve the way the post looks when you share the page on Facebook, Twitter, LinkedIn -->
|
||||
<meta property="og:site_name" content="VillaFleurie" />
|
||||
<!-- website name -->
|
||||
<meta property="og:site" content="" />
|
||||
<!-- website link -->
|
||||
<meta property="og:title" content="VillaFleurie" />
|
||||
<!-- title shown in the actual shared post -->
|
||||
<meta
|
||||
property="og:description"
|
||||
content="VillaFleurie location de vacances au Gosier en Guadeloupe"
|
||||
/>
|
||||
<!-- description shown in the actual shared post -->
|
||||
<meta property="og:image" content="" />
|
||||
<!-- image link, make sure it's jpg -->
|
||||
<meta property="og:url" content="/" />
|
||||
<!-- where do you want your post to link to -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<!-- to have large image post format in Twitter -->
|
||||
|
||||
<!-- Webpage Title -->
|
||||
<title>VillaFleurie</title>
|
||||
|
||||
<!-- Styles -->
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,600;0,700;1,400;1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=PT+Serif:ital,wght@1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link href="../css/bootstrap.css" rel="stylesheet" />
|
||||
<link href="../css/fontawesome-all.css" rel="stylesheet" />
|
||||
<link href="../css/bootstrap-datepicker3.css" rel="stylesheet" />
|
||||
<link href="../css/swiper.css" rel="stylesheet" />
|
||||
<link href="../css/magnific-popup.css" rel="stylesheet" />
|
||||
<link href="../css/styles.css" rel="stylesheet" />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="../images/logo.png" />
|
||||
|
||||
<script
|
||||
defer
|
||||
data-domain="villafleuriegp.com"
|
||||
src="https://plausible.nemausat.com/js/script.outbound-links.js"
|
||||
></script>
|
||||
<script>
|
||||
window.plausible =
|
||||
window.plausible ||
|
||||
function () {
|
||||
(window.plausible.q = window.plausible.q || []).push(arguments);
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
<body data-spy="scroll" data-target=".fixed-top">
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg fixed-top navbar-light">
|
||||
<div class="container">
|
||||
<!-- Text Logo - Use this if you don't have a graphic logo -->
|
||||
<!-- <a class="navbar-brand logo-text page-scroll" href="index.html">Villa</a> -->
|
||||
|
||||
<!-- Image Logo -->
|
||||
<a class="navbar-brand logo-image" href="index.html"
|
||||
><img
|
||||
src="../images/logo.png"
|
||||
alt="VillaFleurie logo"
|
||||
style="height: 76px"
|
||||
/></a>
|
||||
|
||||
<button
|
||||
class="navbar-toggler p-0 border-0"
|
||||
type="button"
|
||||
data-toggle="offcanvas"
|
||||
>
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div
|
||||
class="navbar-collapse offcanvas-collapse"
|
||||
id="navbarsExampleDefault"
|
||||
>
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item dropdown">
|
||||
<a
|
||||
class="nav-link dropdown-toggle"
|
||||
href="#"
|
||||
id="dropdown01"
|
||||
data-toggle="dropdown"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
>Chambres</a
|
||||
>
|
||||
<div class="dropdown-menu" aria-labelledby="dropdown01">
|
||||
<a class="dropdown-item page-scroll" href="t2-corail.html"
|
||||
>T2 Corail</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item page-scroll" href="t3-azur.html"
|
||||
>T3 Azur</a
|
||||
>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="contact.html">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
<span class="nav-item ml-auto">
|
||||
<a class="btn-outline-sm" href="tel:+33658961279">
|
||||
<i class="fas fa-phone-alt"></i>+33 6 58 96 12 79</a
|
||||
>
|
||||
</span>
|
||||
</div>
|
||||
<!-- end of navbar-collapse -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</nav>
|
||||
<!-- end of navbar -->
|
||||
<!-- end of navigation -->
|
||||
|
||||
|
||||
<!-- Header -->
|
||||
<header class="ex-header bg-gray">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xl-10 offset-xl-1">
|
||||
<h1 class="green">T2 Corail - 59€/nuit</h1>
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</header> <!-- end of ex-header -->
|
||||
<!-- end of header -->
|
||||
|
||||
|
||||
<!-- Basic -->
|
||||
<div class="ex-basic-1 bg-gray pb-6">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
|
||||
<!-- Image Slider Room -->
|
||||
<div class="slider-container">
|
||||
<div class="swiper-container image-slider-room">
|
||||
<div class="swiper-wrapper">
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t2_chambre.jpg"
|
||||
data-effect="fadeIn"><img
|
||||
class="img-fluid" src="../images/villafleurie_t2_chambre.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t2_chambre_2.jpg"
|
||||
data-effect="fadeIn"><img
|
||||
class="img-fluid" src="../images/villafleurie_t2_chambre_2.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t2_salon_1_wl81yXI.jpg"
|
||||
data-effect="fadeIn"><img
|
||||
class="img-fluid" src="../images/villafleurie_t2_salon_1_wl81yXI.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t2_salon_2.jpg"
|
||||
data-effect="fadeIn"><img
|
||||
class="img-fluid" src="../images/villafleurie_t2_salon_2.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- end of swiper-wrapper -->
|
||||
|
||||
<!-- Add Arrows -->
|
||||
<div class="swiper-button-next"></div>
|
||||
<div class="swiper-button-prev"></div>
|
||||
<!-- end of add arrows -->
|
||||
|
||||
</div> <!-- end of swiper container -->
|
||||
</div> <!-- end of slider-container -->
|
||||
<!-- end of image slider -->
|
||||
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of ex-basic-1 -->
|
||||
<!-- end of basic -->
|
||||
|
||||
|
||||
<!-- Basic -->
|
||||
<div class="ex-basic-1 pt-5">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xl-10 offset-xl-1">
|
||||
<h2 class="mt-3 mb-4">Description</h2>
|
||||
<p class="mb-5">Chacune des chambres de la VillaFleurie a été conçue pour offrir la meilleure expérience
|
||||
possible à de nombreux voyageurs, qu'ils soient à la recherche d'aventure ou qu'ils apprécient le
|
||||
confort. Nous avons conçu les chambres en nous appuyant sur plus de 10 ans d'expérience et toute
|
||||
l'équipe est très fière de ce que nous avons réalisé.</p>
|
||||
|
||||
<div class="text-box mb-6">
|
||||
<h3>Des chambres conçues pour le confort et la détente</h3>
|
||||
<p>Les chambres sont conçues pour offrir les meilleurs niveaux possibles de confort et de
|
||||
relaxation. Le design contemporain est basé sur des couleurs réconfortantes et parvient à plaire
|
||||
à de nombreux types de personnalités. Les matériaux utilisés sont modernes et durables.</p>
|
||||
</div> <!-- end of text-box -->
|
||||
|
||||
<ul class="list-unstyled list-icon-lg mb-5">
|
||||
<li class="media">
|
||||
<div class="list-icon bg-1">
|
||||
<i class="fas fa-shower"></i>
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<h3 class="list-item-title">Aménagements modernes</h3>
|
||||
<p class="list-item-text">Les équipements et les chambres de VillaFleurie sont conçus pour
|
||||
offrir les meilleurs niveaux possibles de confort et de relaxation. Le design est
|
||||
contemporain, basé sur des couleurs réconfortantes, et parvient à séduire de nombreux
|
||||
types de personnalités et de goûts. Les matériaux utilisés dans la
|
||||
construction de VillaFleurie proviennent des meilleurs fournisseurs.</p>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<div class="list-icon bg-2">
|
||||
<i class="fas fa-tv"></i>
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<h3 class="list-item-title">Appareils électroménagers de qualité</h3>
|
||||
<p class="list-item-text">Toute l'électronique est fonctionnelle et conçue pour offrir les
|
||||
meilleurs niveaux de confort et de relaxation. Le design est contemporain, basé sur des
|
||||
couleurs réconfortantes et parvient à séduire de nombreux types de personnalités et de
|
||||
goûts. L'objectif principal de tous les appareils est d'offrir un grand confort à
|
||||
l'intérieur.</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul> <!-- end of list-unstyled -->
|
||||
|
||||
<p class="mb-4">D'autres caractéristiques ont été conçues pour offrir les meilleurs niveaux possibles de
|
||||
confort et de relaxation. Le design contemporain basé sur des couleurs réconfortantes et parvient à
|
||||
séduire de nombreux types de personnalités et de goûts. Les matériaux utilisés dans la
|
||||
construction de la villa sont modernes et durables.</p>
|
||||
|
||||
<ul class="list-unstyled li-space-lg amenities mb-5">
|
||||
<li class="media">
|
||||
<i class="fas fa-shower"></i>
|
||||
<div class="media-body"><strong>Réserve d'eau</strong> VillaFleurie est équipée d'une réserve
|
||||
d'eau permettant de ne pas se soucier des éventuelles coupures d'eau
|
||||
</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<i class="fas fa-tv"></i>
|
||||
<div class="media-body"><strong>TV LCD moderne</strong> pour les jours de pluie qu'il faut
|
||||
passer à l'intérieur.
|
||||
</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<i class="fas fa-snowflake"></i>
|
||||
<div class="media-body"><strong>Climatisation</strong> de pointe spécialement conçue pour créer
|
||||
une température optimale
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="btn-solid-reg mb-6" href="index.html">Réserver</a>
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of ex-basic-1 -->
|
||||
<!-- end of basic -->
|
||||
|
||||
|
||||
<!-- Footer -->
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3>
|
||||
Si vous souhaitez passer un moment confortable et relaxant,
|
||||
n'hésitez pas à nous contacter :
|
||||
<a class="green" href="mailto:location.villafleurie@gmail.com">
|
||||
location.villafleurie@gmail.com
|
||||
</a>
|
||||
</h3>
|
||||
<div class="social-container">
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-facebook-f fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-twitter fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-pinterest-p fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-instagram fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-youtube fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<!-- end of social-container -->
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- end of row -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</div>
|
||||
<!-- end of footer -->
|
||||
<!-- end of footer -->
|
||||
|
||||
<!-- Copyright -->
|
||||
<div class="copyright">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<hr class="divider" />
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- end of row -->
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<ul class="list-unstyled li-space-lg p-small">
|
||||
<li><a href="t2-corail.html">T2 Corail</a></li>
|
||||
<li><a href="t3-azur.html">T3 Azur</a></li>
|
||||
<li><a href="contact.html">Contact</a></li>
|
||||
</ul>
|
||||
<!-- end of list-unstyled -->
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
<div class="col-lg-6">
|
||||
<p class="p-small statement">Copyright © VillaFleurie</p>
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- enf of row -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</div>
|
||||
<!-- end of copyright -->
|
||||
<!-- end of copyright -->
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
<!-- jQuery for Bootstrap's JavaScript plugins -->
|
||||
<script src="../js/bootstrap.min.js"></script>
|
||||
<!-- Bootstrap framework -->
|
||||
<script src="../js/jquery.easing.min.js"></script>
|
||||
<!-- jQuery Easing for smooth scrolling between anchors -->
|
||||
<script src="../js/swiper.min.js"></script>
|
||||
<!-- Swiper for image and text sliders -->
|
||||
<script src="../js/jquery.magnific-popup.js"></script>
|
||||
<!-- Magnific Popup for lightboxes -->
|
||||
<script src="../js/bootstrap-datepicker.min.js"></script>
|
||||
<!-- Datepicker for Bootstrap -->
|
||||
<script src="../js/scripts.js"></script>
|
||||
<!-- Custom scripts -->
|
||||
</body>
|
||||
</html>
|
||||
395
dist/t3-azur.html
vendored
|
|
@ -1,395 +0,0 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, shrink-to-fit=no"
|
||||
/>
|
||||
|
||||
<!-- SEO Meta Tags -->
|
||||
<meta
|
||||
name="description"
|
||||
content="VillaFleurie location de vacances au Gosier en Guadeloupe"
|
||||
/>
|
||||
<meta name="author" content="VillaFleurie" />
|
||||
|
||||
<!-- OG Meta Tags to improve the way the post looks when you share the page on Facebook, Twitter, LinkedIn -->
|
||||
<meta property="og:site_name" content="VillaFleurie" />
|
||||
<!-- website name -->
|
||||
<meta property="og:site" content="" />
|
||||
<!-- website link -->
|
||||
<meta property="og:title" content="VillaFleurie" />
|
||||
<!-- title shown in the actual shared post -->
|
||||
<meta
|
||||
property="og:description"
|
||||
content="VillaFleurie location de vacances au Gosier en Guadeloupe"
|
||||
/>
|
||||
<!-- description shown in the actual shared post -->
|
||||
<meta property="og:image" content="" />
|
||||
<!-- image link, make sure it's jpg -->
|
||||
<meta property="og:url" content="/" />
|
||||
<!-- where do you want your post to link to -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<!-- to have large image post format in Twitter -->
|
||||
|
||||
<!-- Webpage Title -->
|
||||
<title>VillaFleurie</title>
|
||||
|
||||
<!-- Styles -->
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,600;0,700;1,400;1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=PT+Serif:ital,wght@1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link href="../css/bootstrap.css" rel="stylesheet" />
|
||||
<link href="../css/fontawesome-all.css" rel="stylesheet" />
|
||||
<link href="../css/bootstrap-datepicker3.css" rel="stylesheet" />
|
||||
<link href="../css/swiper.css" rel="stylesheet" />
|
||||
<link href="../css/magnific-popup.css" rel="stylesheet" />
|
||||
<link href="../css/styles.css" rel="stylesheet" />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="../images/logo.png" />
|
||||
|
||||
<script
|
||||
defer
|
||||
data-domain="villafleuriegp.com"
|
||||
src="https://plausible.nemausat.com/js/script.outbound-links.js"
|
||||
></script>
|
||||
<script>
|
||||
window.plausible =
|
||||
window.plausible ||
|
||||
function () {
|
||||
(window.plausible.q = window.plausible.q || []).push(arguments);
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
<body data-spy="scroll" data-target=".fixed-top">
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg fixed-top navbar-light">
|
||||
<div class="container">
|
||||
<!-- Text Logo - Use this if you don't have a graphic logo -->
|
||||
<!-- <a class="navbar-brand logo-text page-scroll" href="index.html">Villa</a> -->
|
||||
|
||||
<!-- Image Logo -->
|
||||
<a class="navbar-brand logo-image" href="index.html"
|
||||
><img
|
||||
src="../images/logo.png"
|
||||
alt="VillaFleurie logo"
|
||||
style="height: 76px"
|
||||
/></a>
|
||||
|
||||
<button
|
||||
class="navbar-toggler p-0 border-0"
|
||||
type="button"
|
||||
data-toggle="offcanvas"
|
||||
>
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div
|
||||
class="navbar-collapse offcanvas-collapse"
|
||||
id="navbarsExampleDefault"
|
||||
>
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item dropdown">
|
||||
<a
|
||||
class="nav-link dropdown-toggle"
|
||||
href="#"
|
||||
id="dropdown01"
|
||||
data-toggle="dropdown"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false"
|
||||
>Chambres</a
|
||||
>
|
||||
<div class="dropdown-menu" aria-labelledby="dropdown01">
|
||||
<a class="dropdown-item page-scroll" href="t2-corail.html"
|
||||
>T2 Corail</a
|
||||
>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item page-scroll" href="t3-azur.html"
|
||||
>T3 Azur</a
|
||||
>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="contact.html">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
<span class="nav-item ml-auto">
|
||||
<a class="btn-outline-sm" href="tel:+33658961279">
|
||||
<i class="fas fa-phone-alt"></i>+33 6 58 96 12 79</a
|
||||
>
|
||||
</span>
|
||||
</div>
|
||||
<!-- end of navbar-collapse -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</nav>
|
||||
<!-- end of navbar -->
|
||||
<!-- end of navigation -->
|
||||
|
||||
|
||||
<!-- Header -->
|
||||
<header class="ex-header bg-gray">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xl-10 offset-xl-1">
|
||||
<h1 class="green">T3 Azur - 79€/nuit</h1>
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</header> <!-- end of ex-header -->
|
||||
<!-- end of header -->
|
||||
|
||||
|
||||
<!-- Basic -->
|
||||
<div class="ex-basic-1 bg-gray pb-6">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
|
||||
<!-- Image Slider Room -->
|
||||
<div class="slider-container">
|
||||
<div class="swiper-container image-slider-room">
|
||||
<div class="swiper-wrapper">
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t3_chambre.jpg"
|
||||
data-effect="fadeIn"><img class="img-fluid"
|
||||
src="../images/villafleurie_t3_chambre.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t3_salon.jpg"
|
||||
data-effect="fadeIn"><img class="img-fluid"
|
||||
src="../images/villafleurie_t3_salon.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
|
||||
<!-- Slide -->
|
||||
<div class="swiper-slide">
|
||||
<div class="image-container">
|
||||
<a class="popup-link" href="../images/villafleurie_t3_cuisine.jpg"
|
||||
data-effect="fadeIn"><img class="img-fluid"
|
||||
src="../images/villafleurie_t3_cuisine.jpg"
|
||||
alt="alternative"></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end of slide -->
|
||||
|
||||
</div> <!-- end of swiper-wrapper -->
|
||||
|
||||
<!-- Add Arrows -->
|
||||
<div class="swiper-button-next"></div>
|
||||
<div class="swiper-button-prev"></div>
|
||||
<!-- end of add arrows -->
|
||||
|
||||
</div> <!-- end of swiper container -->
|
||||
</div> <!-- end of slider-container -->
|
||||
<!-- end of image slider -->
|
||||
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of ex-basic-1 -->
|
||||
<!-- end of basic -->
|
||||
|
||||
|
||||
<!-- Basic -->
|
||||
<div class="ex-basic-1 pt-5">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xl-10 offset-xl-1">
|
||||
<h2 class="mt-3 mb-4">Description</h2>
|
||||
<p class="mb-5">Chacune des chambres de la VillaFleurie a été conçue pour offrir la meilleure expérience
|
||||
possible à de nombreux voyageurs, qu'ils soient à la recherche d'aventure ou qu'ils apprécient le
|
||||
confort. Nous avons conçu les chambres en nous appuyant sur plus de 10 ans d'expérience et toute
|
||||
l'équipe est très fière de ce que nous avons réalisé.</p>
|
||||
|
||||
<div class="text-box mb-6">
|
||||
<h3>Des chambres conçues pour le confort et la détente</h3>
|
||||
<p>Les chambres sont conçues pour offrir les meilleurs niveaux possibles de confort et de
|
||||
relaxation. Le design contemporain est basé sur des couleurs réconfortantes et parvient à plaire
|
||||
à de nombreux types de personnalités. Les matériaux utilisés sont modernes et durables.</p>
|
||||
</div> <!-- end of text-box -->
|
||||
|
||||
<ul class="list-unstyled list-icon-lg mb-5">
|
||||
<li class="media">
|
||||
<div class="list-icon bg-1">
|
||||
<i class="fas fa-shower"></i>
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<h3 class="list-item-title">Aménagements modernes</h3>
|
||||
<p class="list-item-text">Les équipements et les chambres de VillaFleurie sont conçus pour
|
||||
offrir les meilleurs niveaux possibles de confort et de relaxation. Le design est
|
||||
contemporain, basé sur des couleurs réconfortantes, et parvient à séduire de nombreux
|
||||
types de personnalités et de goûts. Les matériaux utilisés dans la
|
||||
construction de VillaFleurie proviennent des meilleurs fournisseurs.</p>
|
||||
</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<div class="list-icon bg-2">
|
||||
<i class="fas fa-tv"></i>
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<h3 class="list-item-title">Appareils électroménagers de qualité</h3>
|
||||
<p class="list-item-text">Toute l'électronique est fonctionnelle et conçue pour offrir les
|
||||
meilleurs niveaux de confort et de relaxation. Le design est contemporain, basé sur des
|
||||
couleurs réconfortantes et parvient à séduire de nombreux types de personnalités et de
|
||||
goûts. L'objectif principal de tous les appareils est d'offrir un grand confort à
|
||||
l'intérieur.</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul> <!-- end of list-unstyled -->
|
||||
|
||||
<p class="mb-4">D'autres caractéristiques ont été conçues pour offrir les meilleurs niveaux possibles de
|
||||
confort et de relaxation. Le design contemporain basé sur des couleurs réconfortantes et parvient à
|
||||
séduire de nombreux types de personnalités et de goûts. Les matériaux utilisés dans la
|
||||
construction de la villa sont modernes et durables.</p>
|
||||
|
||||
<ul class="list-unstyled li-space-lg amenities mb-5">
|
||||
<li class="media">
|
||||
<i class="fas fa-shower"></i>
|
||||
<div class="media-body"><strong>Réserve d'eau</strong> VillaFleurie est équipée d'une réserve
|
||||
d'eau permettant de ne pas se soucier des éventuelles coupures d'eau
|
||||
</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<i class="fas fa-tv"></i>
|
||||
<div class="media-body"><strong>TV LCD moderne</strong> pour les jours de pluie qu'il faut
|
||||
passer à l'intérieur.
|
||||
</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<i class="fas fa-snowflake"></i>
|
||||
<div class="media-body"><strong>Climatisation</strong> de pointe spécialement conçue pour créer
|
||||
une température optimale
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="btn-solid-reg mb-6" href="index.html">Réserver</a>
|
||||
</div> <!-- end of col -->
|
||||
</div> <!-- end of row -->
|
||||
</div> <!-- end of container -->
|
||||
</div> <!-- end of ex-basic-1 -->
|
||||
<!-- end of basic -->
|
||||
|
||||
|
||||
<!-- Footer -->
|
||||
<div class="footer">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3>
|
||||
Si vous souhaitez passer un moment confortable et relaxant,
|
||||
n'hésitez pas à nous contacter :
|
||||
<a class="green" href="mailto:location.villafleurie@gmail.com">
|
||||
location.villafleurie@gmail.com
|
||||
</a>
|
||||
</h3>
|
||||
<div class="social-container">
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-facebook-f fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-twitter fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-pinterest-p fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-instagram fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
<span class="fa-stack">
|
||||
<a href="#your-link">
|
||||
<i class="fas fa-circle fa-stack-2x"></i>
|
||||
<i class="fab fa-youtube fa-stack-1x"></i>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<!-- end of social-container -->
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- end of row -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</div>
|
||||
<!-- end of footer -->
|
||||
<!-- end of footer -->
|
||||
|
||||
<!-- Copyright -->
|
||||
<div class="copyright">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<hr class="divider" />
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- end of row -->
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<ul class="list-unstyled li-space-lg p-small">
|
||||
<li><a href="t2-corail.html">T2 Corail</a></li>
|
||||
<li><a href="t3-azur.html">T3 Azur</a></li>
|
||||
<li><a href="contact.html">Contact</a></li>
|
||||
</ul>
|
||||
<!-- end of list-unstyled -->
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
<div class="col-lg-6">
|
||||
<p class="p-small statement">Copyright © VillaFleurie</p>
|
||||
</div>
|
||||
<!-- end of col -->
|
||||
</div>
|
||||
<!-- enf of row -->
|
||||
</div>
|
||||
<!-- end of container -->
|
||||
</div>
|
||||
<!-- end of copyright -->
|
||||
<!-- end of copyright -->
|
||||
|
||||
<!-- Scripts -->
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
<!-- jQuery for Bootstrap's JavaScript plugins -->
|
||||
<script src="../js/bootstrap.min.js"></script>
|
||||
<!-- Bootstrap framework -->
|
||||
<script src="../js/jquery.easing.min.js"></script>
|
||||
<!-- jQuery Easing for smooth scrolling between anchors -->
|
||||
<script src="../js/swiper.min.js"></script>
|
||||
<!-- Swiper for image and text sliders -->
|
||||
<script src="../js/jquery.magnific-popup.js"></script>
|
||||
<!-- Magnific Popup for lightboxes -->
|
||||
<script src="../js/bootstrap-datepicker.min.js"></script>
|
||||
<!-- Datepicker for Bootstrap -->
|
||||
<script src="../js/scripts.js"></script>
|
||||
<!-- Custom scripts -->
|
||||
</body>
|
||||
</html>
|
||||
BIN
dist/webfonts/fa-brands-400.eot
vendored
3451
dist/webfonts/fa-brands-400.svg
vendored
|
Before Width: | Height: | Size: 676 KiB |