diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index bd891d15..b88a862a 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -1,4 +1,4 @@ -name: Deploy docs +name: Sync docs for GitHub Pages on: push: @@ -15,23 +15,22 @@ on: - '.github/workflows/deploy-docs.yml' workflow_dispatch: -# Allow the GITHUB_TOKEN to deploy to GitHub Pages. permissions: - contents: read - pages: write - id-token: write + contents: write -# Allow one concurrent deployment, cancelling in-progress runs. concurrency: - group: pages + group: docs-pages-sync cancel-in-progress: true jobs: - build: + publish: + if: github.actor != 'github-actions[bot]' runs-on: ubuntu-latest - name: Build Docusaurus site + name: Build and sync docs site steps: - uses: actions/checkout@v6 + with: + fetch-depth: 0 - name: Setup node uses: actions/setup-node@v6 @@ -45,19 +44,18 @@ jobs: - name: Build docs site run: npm run docs:build - - name: Upload Pages artifact - uses: actions/upload-pages-artifact@v3 - with: - path: docs/build - - deploy: - runs-on: ubuntu-latest - name: Deploy to GitHub Pages - needs: build - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 + - name: Sync built site into docs folder + run: npm run docs:pages + + - name: Commit published docs + run: | + if git diff --quiet -- docs/; then + echo "No published docs changes to commit." + exit 0 + fi + + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add docs/ + git commit -m "docs: publish static site" + git push origin HEAD:main diff --git a/.gitignore b/.gitignore index 5340e0bc..8fdef082 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ blob-report/ .playwright/ docs/build +docs/.pages-build docs/.docusaurus -docs/docs/dist/ +docs/content/dist/ docs/static/dist/ diff --git a/Gruntfile.js b/Gruntfile.js index e40324ea..ada3fe73 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -207,7 +207,7 @@ module.exports = function (grunt) { }, src: [ 'README.md', - 'docs/docs/index.md' + 'docs/content/index.md' ] }, cdn: { @@ -216,7 +216,7 @@ module.exports = function (grunt) { }, src: [ 'README.md', - 'docs/docs/index.md' + 'docs/content/index.md' ] }, nuget: { diff --git a/README.md b/README.md index d8689f67..f3fbbd80 100644 --- a/README.md +++ b/README.md @@ -74,11 +74,11 @@ jsDelivr. Prefer pinning an explicit package version in production: - - + + ``` -You can replace `@1.1.0` with the version you want to consume. During +You can replace `@1.1.1` with the version you want to consume. During development, `@latest` also works, but a fixed version is safer for production deployments. @@ -141,7 +141,7 @@ picker.selectAll(); // (multiple selects) picker.destroy(); // remove the plugin and restore the original

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/docs/CNAME b/docs/CNAME index dc6ebabc..a57ec8bd 100644 --- a/docs/CNAME +++ b/docs/CNAME @@ -1 +1 @@ -bootstrap-select.crestapps.com \ No newline at end of file +bootstrap-select.crestapps.com diff --git a/docs/assets/css/styles.30561164.css b/docs/assets/css/styles.30561164.css new file mode 100644 index 00000000..6d09c9ea --- /dev/null +++ b/docs/assets/css/styles.30561164.css @@ -0,0 +1 @@ +@import url(https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap);.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}*,.loadingRing_RJI3 div{box-sizing:border-box}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:rgba(0,0,0,.03);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){-webkit-text-decoration:none;text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_uzNF .wordWrapButtonIcon_b1P5{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.selectPreviewLabel,.special,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{-webkit-text-decoration-color:var(--ifm-alert-border-color);text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.searchBarContainer_NW3z.searchIndexLoading_EJ1f .searchBarLoadingRing_YnHq{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs__link:-webkit-any-link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.dropdown__link--active,.dropdown__link:hover,.footer--dark .footer__link-item:focus,.footer--dark .footer__link-item:hover,.footer--dark a:focus,.footer--dark a:hover,.menu__link:hover,.navbar__brand:hover,.navbar__link--active,.navbar__link:hover,.pagination-nav__link:hover,.pagination__link:hover,.tag_zVej:hover{-webkit-text-decoration:none;text-decoration:none}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);-webkit-text-decoration:none;text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;pointer-events:none;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color)}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white);--ifm-footer-background-color:#181618}.bs-docs-example .form-group,.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.bs-docs-example>p:first-child,.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.featureCard h3,.footer__item,.standaloneExampleCard h3{margin-top:0}.admonitionContent_BuS1>:last-child,.bs-docs-example>p:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items,.searchResultItem_U687>h2{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color)}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter);content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:-webkit-sticky;position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color)}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color)}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:1rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover)}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:hsla(0,0%,100%,.07);--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#181618;--ifm-color-primary-dark:#111011;--ifm-color-primary-darker:#0d0c0d;--ifm-color-primary-darkest:#000;--ifm-color-primary-light:#2c292c;--ifm-color-primary-lighter:#3a373a;--ifm-color-primary-lightest:#504d50;--ifm-code-font-size:95%;--ifm-navbar-background-color:#fff;--ifm-background-color:#f4f4f4;--ifm-background-surface-color:#f4f4f4;--ifm-font-family-base:"Inter",system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;--docusaurus-highlighted-code-line-bg:rgba(0,0,0,.1);--crestapps-amber:#eaa429;--crestapps-dark-amber:#d88500;--crestapps-slate:#303846;--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:transparent;--docusaurus-collapse-button-bg-hover:rgba(0,0,0,.1);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#d9d9d9;--ifm-color-primary-dark:#c3c3c3;--ifm-color-primary-darker:#b8b8b8;--ifm-color-primary-darkest:#979797;--ifm-color-primary-light:#e2e2e2;--ifm-color-primary-lighter:#e8e8e8;--ifm-color-primary-lightest:#f5f5f5;--ifm-navbar-background-color:#181618;--ifm-background-color:#1e1e1e;--ifm-background-surface-color:#1e1e1e;--docusaurus-highlighted-code-line-bg:rgba(0,0,0,.3);color:#e6e6e6;--ifm-color-emphasis-900:#e6e6e6;--ifm-color-emphasis-200:hsla(0,0%,100%,.06)}[data-theme=dark] .main-wrapper,[data-theme=dark] .theme-doc-page,[data-theme=dark] .theme-doc-root,[data-theme=dark] article,[data-theme=dark] body,[data-theme=dark] html{color:#e6e6e6}[data-theme=dark] .bs-docs-example,[data-theme=dark] .featureCard,[data-theme=dark] .standaloneExampleCard{background:var(--ifm-background-surface-color);border-color:var(--ifm-color-emphasis-200);color:inherit}[data-theme=dark] .bs-docs-header,[data-theme=dark] .bs-docs-sub-header{color:#fff}[data-theme=dark] .highlight,[data-theme=dark] code,[data-theme=dark] pre{color:#f5f5f5}.main-wrapper,.theme-doc-page,.theme-doc-root,.theme-doc-sidebar-container,article,body,html{background-color:var(--ifm-background-color)}.navbar{box-shadow:0 1px 2px rgba(0,0,0,.1)}.hero--primary{background-color:#181618;color:#d9d9d9}.hero--primary .heroSecondaryButton:focus,.hero--primary .heroSecondaryButton:hover,.heroPrimaryButton{background-color:var(--crestapps-amber);border-color:var(--crestapps-amber);color:#181618}.hero--primary .hero__title{color:#fff}.heroPrimaryButton,.heroSecondaryButton{border-width:1px;font-weight:600}.heroPrimaryButton:focus,.heroPrimaryButton:hover{background-color:var(--crestapps-dark-amber);border-color:var(--crestapps-dark-amber);color:#fff}.hero--primary .heroSecondaryButton{background-color:initial;border:1px solid #d9d9d9;box-shadow:inset 0 0 0 1px #d9d9d9;color:#d9d9d9}.hero--primary .heroSecondaryButton:focus,.hero--primary .heroSecondaryButton:hover{box-shadow:none}.footer--dark .footer__link-item:focus,.footer--dark .footer__link-item:hover,.footer--dark a:focus,.footer--dark a:hover{color:var(--crestapps-amber)}.content_knG7 a,.hitFooter_E9YW a,.suggestion_fB_2.cursor_eG29 mark{-webkit-text-decoration:underline;text-decoration:underline}.heroBanner{padding:4rem 2rem}.heroContent{align-items:center;display:grid;grid-gap:3rem;gap:3rem;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr)}.heroLead{font-size:1.15rem;line-height:1.7;margin-bottom:2rem;max-width:48rem}.buttons{display:flex;flex-wrap:wrap;gap:1rem}.heroVisual{display:flex;justify-content:center}.selectPreview{background:linear-gradient(145deg,#2c2e40,#181618);border:1px solid hsla(0,0%,100%,.14);border-radius:1.25rem;box-shadow:0 24px 70px rgba(0,0,0,.35);color:#fff;max-width:28rem;padding:1.5rem;width:100%}.selectPreviewLabel{color:#d4d9e1;display:block;font-size:.85rem;font-weight:600;letter-spacing:.08em;margin-bottom:1rem}.selectPreviewButton{border:0;font:inherit;margin-bottom:.75rem;padding:.9rem 1rem;text-align:left;width:100%}.selectPreviewButton,.selectPreviewMenu{background:#fff;border-radius:.7rem;color:#181618}.bs-docs-example,.featureCard{background:var(--ifm-background-surface-color);border:1px solid var(--ifm-color-emphasis-200)}.categoryLink_byQd,.selectPreviewMenu{overflow:hidden}.selectPreviewMenu div{padding:.75rem 1rem}.selectPreviewMenu div:first-child{background:var(--crestapps-amber);font-weight:600}.features{padding:4rem 0}.featureColumn{margin-bottom:2rem}.featureCard{border-radius:1rem;box-shadow:0 10px 30px rgba(0,0,0,.06);height:100%;padding:1.5rem}.bs-docs-example{border-left:4px solid var(--crestapps-amber);border-radius:.75rem;box-shadow:0 8px 24px rgba(0,0,0,.05);margin:1rem 0 1.25rem;padding:1.25rem}.bs-docs-example label{display:block;font-weight:600;margin-bottom:.35rem}.special{background:#bc0000!important;color:#fff!important;font-weight:700!important}.standaloneExamples{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin:1.5rem 0}.standaloneExampleCard{background:var(--ifm-background-surface-color);border:1px solid var(--ifm-color-emphasis-200);border-radius:.75rem;padding:1rem}[data-theme=dark] .table,[data-theme=dark] .table>tbody>tr>td,[data-theme=dark] .table>thead>tr>th{background-color:initial;border-color:hsla(0,0%,100%,.06);color:#e6e6e6}[data-theme=dark] .table thead th{background-color:hsla(0,0%,100%,.03);color:#f1f1f1}[data-theme=dark] .table.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.02)}[data-theme=dark] .table.table-striped tbody tr:nth-of-type(2n){background-color:initial}[data-theme=dark] .table.table-bordered{border:1px solid hsla(0,0%,100%,.06)}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.hideAction_vcyE>svg,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.themedComponent_mlkZ,.toggleIcon_g3eP,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}[data-theme-choice=dark] .darkToggleIcon_wfgR,[data-theme-choice=light] .lightToggleIcon_pyhR,[data-theme-choice=system] .systemToggleIcon_QzmC,[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.cursor_eG29 .hideAction_vcyE>svg,.tocCollapsibleContent_vkbj a{display:block}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:-webkit-sticky;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:hsla(0,0%,100%,.05);--docusaurus-collapse-button-bg-hover:hsla(0,0%,100%,.1)}.collapseSidebarButton_PEFL{display:none;margin:0}.iconExternalLink_nPIU{margin-left:.3rem}.dropdownNavbarItemMobile_J0Sd{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.searchBar_RVTs .dropdownMenu_qbY6{background:var(--search-local-modal-background,#f5f6f7);border-radius:6px;box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64);left:auto!important;margin-top:8px;padding:var(--search-local-spacing,12px);position:relative;right:0!important;width:var(--search-local-modal-width,560px)}.searchInput_YFbd:focus{outline:2px solid var(--search-local-input-active-border-color,var(--ifm-color-primary));outline-offset:0}div.ask-ai,html[data-theme=dark] div.ask-ai{--ask-ai-primary:var(--ifm-color-primary);--ask-ai-primary-hover:var(--ifm-color-primary-light);--ask-ai-foreground:var(--ifm-color-content);--ask-ai-border:var(--ifm-color-emphasis-300);--ask-ai-error:var(--ifm-color-danger);--ask-ai-button-bg:var(--ifm-color-emphasis-200)}.ask-ai{--ask-ai-background:var(--search-local-modal-background,#f5f6f7);--ask-ai-muted:var(--search-local-muted-color,#969faf)}html[data-theme=dark] .ask-ai{--ask-ai-background:var(--search-local-modal-background,var(--ifm-background-color));--ask-ai-muted:var(--search-local-muted-color,var(--ifm-color-secondary-darkest))}html[data-theme=dark] .searchBar_RVTs .dropdownMenu_qbY6{background:var(--search-local-modal-background,var(--ifm-background-color));box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309)}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2{align-items:center;background:var(--search-local-hit-background,#fff);border-radius:4px;box-shadow:var(--search-local-hit-shadow,0 1px 3px 0 #d4d9e1);color:var(--search-local-hit-color,#444950);cursor:pointer;display:flex;flex-direction:row;height:var(--search-local-hit-height,56px);padding:0 var(--search-local-spacing,12px);width:100%}.hitTree_kk6K,.noResults_l6Q3{align-items:center;display:flex}html[data-theme=dark] .dropdownMenu_qbY6 .suggestion_fB_2{background:var(--search-local-hit-background,var(--ifm-color-emphasis-100));box-shadow:var(--search-local-hit-shadow,none);color:var(--search-local-hit-color,var(--ifm-font-color-base))}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2:not(:last-child){margin-bottom:4px}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2.cursor_eG29{background-color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitFooter_E9YW a,.hitIcon_a7Zy,.hitPath_ieM4,.hitTree_kk6K,.noResultsIcon_EBY5{color:var(--search-local-muted-color,#969faf)}html[data-theme=dark] .hitIcon_a7Zy,html[data-theme=dark] .hitPath_ieM4,html[data-theme=dark] .hitTree_kk6K,html[data-theme=dark] .noResultsIcon_EBY5{color:var(--search-local-muted-color,var(--ifm-color-secondary-darkest))}.hitTree_kk6K>svg{height:var(--search-local-hit-height,56px);opacity:.5;width:24px}.hitIcon_a7Zy,.hitTree_kk6K>svg{stroke-width:var(--search-local-icon-stroke-width,1.4)}.hitAction_NqkB,.hitIcon_a7Zy{height:20px;width:20px}.hitWrapper_sAK8{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;margin:0 8px;overflow-x:hidden;width:80%}.hitWrapper_sAK8 mark{background:none;color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitTitle_vyVt{font-size:.9em}.hitPath_ieM4{font-size:.75em}.hitPath_ieM4,.hitTitle_vyVt{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.noResults_l6Q3{flex-direction:column;justify-content:center;padding:var(--search-local-spacing,12px) 0}.noResultsIcon_EBY5{margin-bottom:var(--search-local-spacing,12px)}.hitFooter_E9YW{font-size:.85em;margin-top:var(--search-local-spacing,12px);text-align:center}.suggestion_fB_2.cursor_eG29,.suggestion_fB_2.cursor_eG29 .hitIcon_a7Zy,.suggestion_fB_2.cursor_eG29 .hitPath_ieM4,.suggestion_fB_2.cursor_eG29 .hitTree_kk6K,.suggestion_fB_2.cursor_eG29 mark{color:var(--search-local-hit-active-color,var(--ifm-color-white))!important}.searchBarContainer_NW3z{margin-left:16px}.searchBarContainer_NW3z .searchBarLoadingRing_YnHq{display:none;left:10px;position:absolute;top:6px}.searchBarContainer_NW3z .searchClearButton_qk4g{background:none;border:none;line-height:1rem;padding:0;position:absolute;right:.8rem;top:50%;transform:translateY(-50%)}.navbar__search{position:relative}.searchIndexLoading_EJ1f .navbar__search-input{background-image:none}.searchHintContainer_Pkmr{align-items:center;display:flex;gap:4px;height:100%;justify-content:center;pointer-events:none;position:absolute;right:10px;top:0}.searchHint_iIMx{background-color:var(--ifm-navbar-search-input-background-color);border:1px solid var(--ifm-color-emphasis-500);box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-500);color:var(--ifm-navbar-search-input-placeholder-color)}html[dir=rtl] .searchHintContainer_Pkmr{left:10px;right:auto}html[dir=rtl] .searchBarContainer_NW3z .searchClearButton_qk4g{left:.8rem;right:auto}html[dir=rtl] .searchBarContainer_NW3z .searchBarLoadingRing_YnHq{left:auto;right:10px}html[dir=rtl] .navbar__search-input{padding:0 2.25em 0 .5em}.loadingRing_RJI3{display:inline-block;height:20px;opacity:var(--search-local-loading-icon-opacity,.5);position:relative;width:20px}.categoryLinkLabel_W154,.linkLabel_WmDU{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical}.loadingRing_RJI3 div{animation:1.2s cubic-bezier(.5,0,.5,1) infinite a;border:2px solid var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color));border-color:var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color)) transparent transparent transparent;border-radius:50%;display:block;height:16px;margin:2px;position:absolute;width:16px}.loadingRing_RJI3 div:first-child{animation-delay:-.45s}.loadingRing_RJI3 div:nth-child(2){animation-delay:-.3s}.loadingRing_RJI3 div:nth-child(3){animation-delay:-.15s}@keyframes a{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.buttonGroup_M5ko button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.navbar__items--right>:last-child{padding-right:0}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.linkLabel_WmDU{line-clamp:2;-webkit-line-clamp:2}.menu__link--sublist-caret:after{margin-left:var(--ifm-menu-link-padding-vertical)}.categoryLinkLabel_W154{flex:1;line-clamp:2;-webkit-line-clamp:2}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.anchorTargetStickyNavbar_Vzrq{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorTargetHideOnScrollNavbar_vjPI{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:line-count;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:-webkit-sticky;position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(line-count);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_Vdqa{opacity:1!important}.copyButtonIcons_IEyt{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_TrPX,.copyButtonSuccessIcon_cVMy{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_cVMy{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_Vdqa .copyButtonIcon_TrPX{opacity:0;transform:scale(.33)}.copyButtonCopied_Vdqa .copyButtonSuccessIcon_cVMy{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_b1P5{height:1.2rem;width:1.2rem}.buttonGroup_M5ko{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_M5ko button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_M5ko button:focus-visible,.buttonGroup_M5ko button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_M5ko button{opacity:.4}.codeBlockContent_QJqH{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_OeMC{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockTitle_OeMC+.codeBlockContent_QJqH .codeBlock_a8dz{border-top-left-radius:0;border-top-right-radius:0}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;fill:var(--ifm-alert-foreground-color);height:1.6em;width:1.6em}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.searchContextInput_mXoe,.searchQueryInput_CFBF{background:var(--ifm-background-color);border:var(--ifm-global-border-width) solid var(--ifm-color-content-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-font-color-base);font-size:var(--ifm-font-size-base);margin-bottom:1rem;padding:.5rem;width:100%}.searchResultItem_U687{border-bottom:1px solid #dfe3e8;padding:1rem 0}.searchResultItemPath_uIbk{color:var(--ifm-color-content-secondary);font-size:.8rem;margin:.5rem 0 0}.searchResultItemSummary_oZHr{font-style:italic;margin:.5rem 0 0}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.lastUpdated_JAkA{text-align:right}.tocMobile_ITEo{display:none}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:-webkit-sticky;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.navbarSearchContainer_Bca1{padding:0 var(--ifm-navbar-item-padding-horizontal)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);-webkit-text-decoration:none!important;text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:-webkit-sticky;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.docItemCol_VOVn{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block;width:-moz-max-content;width:-webkit-max-content;width:max-content}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.heroContent{grid-template-columns:1fr}.docItemContainer_F8PC{padding:0 .3rem}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media not (max-width:996px){.searchBar_RVTs.searchBarLeft_MXDe .dropdownMenu_qbY6{left:0!important;right:auto!important}}@media only screen and (max-width:996px){.searchQueryColumn_q7nx{max-width:60%!important}.searchContextColumn_oWAF{max-width:40%!important}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.navbar__search-input:not(:focus){width:2rem}.searchBar_RVTs .dropdownMenu_qbY6{max-width:calc(100vw - var(--ifm-navbar-padding-horizontal)*2);width:var(--search-local-modal-width-sm,340px)}.searchBarContainer_NW3z:not(.focused_OWtg) .searchClearButton_qk4g,.searchHintContainer_Pkmr{display:none}}@media screen and (max-width:576px){.searchQueryColumn_q7nx{max-width:100%!important}.searchContextColumn_oWAF{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.noPrint_WFHX,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/docs/assets/js/0343fd66.785e0e5b.js b/docs/assets/js/0343fd66.785e0e5b.js new file mode 100644 index 00000000..11839a05 --- /dev/null +++ b/docs/assets/js/0343fd66.785e0e5b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_crestapps_bootstrap_select=self.webpackChunk_crestapps_bootstrap_select||[]).push([[145],{3600(e){e.exports=JSON.parse('{"version":{"pluginId":"default","version":"1.0","label":"1.0","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-1.0","isLast":false,"docsSidebars":{"docs":[{"type":"link","href":"/docs/1.0/","label":"Getting Started","docId":"index","unlisted":false},{"type":"link","href":"/docs/1.0/examples","label":"Examples","docId":"examples","unlisted":false},{"type":"link","href":"/docs/1.0/options","label":"Options","docId":"options","unlisted":false},{"type":"link","href":"/docs/1.0/methods","label":"Methods","docId":"methods","unlisted":false}]},"docs":{"examples":{"id":"examples","title":"Examples","description":"Live bootstrap-select examples hosted by the Docusaurus docs site.","sidebar":"docs"},"index":{"id":"index","title":"Getting Started","description":"Install and use the CrestApps bootstrap-select fork with Bootstrap 5+.","sidebar":"docs"},"methods":{"id":"methods","title":"Methods","description":"bootstrap-select instance and static methods.","sidebar":"docs"},"options":{"id":"options","title":"Options","description":"bootstrap-select options, events, and sanitizer settings.","sidebar":"docs"}}}}')}}]); \ No newline at end of file diff --git a/docs/assets/js/11b43341.e445e340.js b/docs/assets/js/11b43341.e445e340.js new file mode 100644 index 00000000..574439cf --- /dev/null +++ b/docs/assets/js/11b43341.e445e340.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_crestapps_bootstrap_select=self.webpackChunk_crestapps_bootstrap_select||[]).push([[256],{3401(e){e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Latest","banner":null,"badge":true,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","href":"/docs/","label":"Getting Started","docId":"index","unlisted":false},{"type":"link","href":"/docs/examples","label":"Examples","docId":"examples","unlisted":false},{"type":"link","href":"/docs/options","label":"Options","docId":"options","unlisted":false},{"type":"link","href":"/docs/methods","label":"Methods","docId":"methods","unlisted":false}]},"docs":{"examples":{"id":"examples","title":"Examples","description":"Live bootstrap-select examples hosted by the Docusaurus docs site.","sidebar":"docs"},"index":{"id":"index","title":"Getting Started","description":"Install and use the CrestApps bootstrap-select fork with Bootstrap 5+.","sidebar":"docs"},"methods":{"id":"methods","title":"Methods","description":"bootstrap-select instance and static methods.","sidebar":"docs"},"options":{"id":"options","title":"Options","description":"bootstrap-select options, events, and sanitizer settings.","sidebar":"docs"}}}}')}}]); \ No newline at end of file diff --git a/docs/assets/js/138e0e15.0cd5e95c.js b/docs/assets/js/138e0e15.0cd5e95c.js new file mode 100644 index 00000000..31fad2f1 --- /dev/null +++ b/docs/assets/js/138e0e15.0cd5e95c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_crestapps_bootstrap_select=self.webpackChunk_crestapps_bootstrap_select||[]).push([[921],{65(s){s.exports=JSON.parse('{"name":"@easyops-cn/docusaurus-search-local","id":"default"}')}}]); \ No newline at end of file diff --git a/docs/assets/js/17896441.c5869fb9.js b/docs/assets/js/17896441.c5869fb9.js new file mode 100644 index 00000000..c7ef0925 --- /dev/null +++ b/docs/assets/js/17896441.c5869fb9.js @@ -0,0 +1 @@ +(self.webpackChunk_crestapps_bootstrap_select=self.webpackChunk_crestapps_bootstrap_select||[]).push([[401],{8478(e,t,n){"use strict";n.d(t,{A:()=>i});n(6540);var s=n(2303),a=n(4848);function i(e){let t=e.children,n=e.fallback;return(0,s.A)()?(0,a.jsx)(a.Fragment,{children:null==t?void 0:t()}):null!=n?n:null}},6481(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>$n});var s=n(6540),a=n(5500),i=n(9532),r=n(4848);const l=s.createContext(null);function o(e){let t=e.children;const n=function(e){return(0,s.useMemo)(()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc}),[e])}(e.content);return(0,r.jsx)(l.Provider,{value:n,children:t})}function c(){const e=(0,s.useContext)(l);if(null===e)throw new i.dV("DocProvider");return e}function d(){var e;const t=c(),n=t.metadata,s=t.frontMatter,i=t.assets;return(0,r.jsx)(a.be,{title:n.title,description:n.description,keywords:s.keywords,image:null!=(e=i.image)?e:s.image})}var u=n(4164),m=n(4581),h=n(1312),f=n(8774);function p(e){const t=e.permalink,n=e.title,s=e.subLabel,a=e.isNext;return(0,r.jsxs)(f.A,{className:(0,u.A)("pagination-nav__link",a?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[s&&(0,r.jsx)("div",{className:"pagination-nav__sublabel",children:s}),(0,r.jsx)("div",{className:"pagination-nav__label",children:n})]})}function x(e){const t=e.className,n=e.previous,s=e.next;return(0,r.jsxs)("nav",{className:(0,u.A)(t,"pagination-nav"),"aria-label":(0,h.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[n&&(0,r.jsx)(p,{...n,subLabel:(0,r.jsx)(h.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),s&&(0,r.jsx)(p,{...s,subLabel:(0,r.jsx)(h.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function g(){const e=c().metadata;return(0,r.jsx)(x,{className:"docusaurus-mt-lg",previous:e.previous,next:e.next})}var v=n(4586),b=n(4070),j=n(7559),N=n(3886),A=n(3025);const y={unreleased:function(e){let t=e.siteTitle,n=e.versionMetadata;return(0,r.jsx)(h.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,r.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let t=e.siteTitle,n=e.versionMetadata;return(0,r.jsx)(h.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,r.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function C(e){const t=y[e.versionMetadata.banner];return(0,r.jsx)(t,{...e})}function L(e){let t=e.versionLabel,n=e.to,s=e.onClick;return(0,r.jsx)(h.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,r.jsx)("b",{children:(0,r.jsx)(f.A,{to:n,onClick:s,children:(0,r.jsx)(h.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function k(e){let t=e.className,n=e.versionMetadata;const s=(0,v.A)().siteConfig.title,a=(0,b.vT)({failfast:!0}).pluginId,i=(0,N.g1)(a).savePreferredVersionName,l=(0,b.HW)(a),o=l.latestDocSuggestion,c=l.latestVersionSuggestion,d=null!=o?o:(m=c).docs.find(e=>e.id===m.mainDocId);var m;return(0,r.jsxs)("div",{className:(0,u.A)(t,j.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,r.jsx)("div",{children:(0,r.jsx)(C,{siteTitle:s,versionMetadata:n})}),(0,r.jsx)("div",{className:"margin-top--md",children:(0,r.jsx)(L,{versionLabel:c.label,to:d.path,onClick:()=>i(c.name)})})]})}function w(e){let t=e.className;const n=(0,A.r)();return n.banner?(0,r.jsx)(k,{className:t,versionMetadata:n}):null}function _(e){let t=e.className;const n=(0,A.r)();return n.badge?(0,r.jsx)("span",{className:(0,u.A)(t,j.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,r.jsx)(h.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}const T="tag_zVej",B="tagRegular_sFm0",H="tagWithCount_h2kH";function M(e){let t=e.permalink,n=e.label,s=e.count,a=e.description;return(0,r.jsxs)(f.A,{rel:"tag",href:t,title:a,className:(0,u.A)(T,s?H:B),children:[n,s&&(0,r.jsx)("span",{children:s})]})}const E="tags_jXut",I="tag_QGVx";function V(e){let t=e.tags;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("b",{children:(0,r.jsx)(h.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,r.jsx)("ul",{className:(0,u.A)(E,"padding--none","margin-left--sm"),children:t.map(e=>(0,r.jsx)("li",{className:I,children:(0,r.jsx)(M,{...e})},e.permalink))})]})}var S=n(8587);const U="iconEdit_Z9Sw",z=["className"];function R(e){let t=e.className,n=(0,S.A)(e,z);return(0,r.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,u.A)(U,t),"aria-hidden":"true",...n,children:(0,r.jsx)("g",{children:(0,r.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function O(e){let t=e.editUrl;return(0,r.jsxs)(f.A,{to:t,className:j.G.common.editThisPage,children:[(0,r.jsx)(R,{}),(0,r.jsx)(h.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}function P(e){void 0===e&&(e={});const t=(0,v.A)().i18n.currentLocale,n=function(){const e=(0,v.A)().i18n,t=e.currentLocale;return e.localeConfigs[t].calendar}();return new Intl.DateTimeFormat(t,{calendar:n,...e})}function D(e){let t=e.lastUpdatedAt;const n=new Date(t),s=P({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(n);return(0,r.jsx)(h.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,r.jsx)("b",{children:(0,r.jsx)("time",{dateTime:n.toISOString(),itemProp:"dateModified",children:s})})},children:" on {date}"})}function G(e){let t=e.lastUpdatedBy;return(0,r.jsx)(h.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,r.jsx)("b",{children:t})},children:" by {user}"})}function F(e){let t=e.lastUpdatedAt,n=e.lastUpdatedBy;return(0,r.jsxs)("span",{className:j.G.common.lastUpdated,children:[(0,r.jsx)(h.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t?(0,r.jsx)(D,{lastUpdatedAt:t}):"",byUser:n?(0,r.jsx)(G,{lastUpdatedBy:n}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const W="lastUpdated_JAkA",q="noPrint_WFHX";function J(e){let t=e.className,n=e.editUrl,s=e.lastUpdatedAt,a=e.lastUpdatedBy;return(0,r.jsxs)("div",{className:(0,u.A)("row",t),children:[(0,r.jsx)("div",{className:(0,u.A)("col",q),children:n&&(0,r.jsx)(O,{editUrl:n})}),(0,r.jsx)("div",{className:(0,u.A)("col",W),children:(s||a)&&(0,r.jsx)(F,{lastUpdatedAt:s,lastUpdatedBy:a})})]})}function Z(){const e=c().metadata,t=e.editUrl,n=e.lastUpdatedAt,s=e.lastUpdatedBy,a=e.tags,i=a.length>0,l=!!(t||n||s);return i||l?(0,r.jsxs)("footer",{className:(0,u.A)(j.G.docs.docFooter,"docusaurus-mt-lg"),children:[i&&(0,r.jsx)("div",{className:(0,u.A)("row margin-top--sm",j.G.docs.docFooterTagsRow),children:(0,r.jsx)("div",{className:"col",children:(0,r.jsx)(V,{tags:a})})}),l&&(0,r.jsx)(J,{className:(0,u.A)("margin-top--sm",j.G.docs.docFooterEditMetaRow),editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s})]}):null}var $=n(1422),X=n(6342);const Y=["parentIndex"];function Q(e){const t=e.map(e=>({...e,parentIndex:-1,children:[]})),n=Array(7).fill(-1);t.forEach((e,t)=>{const s=n.slice(2,e.level);e.parentIndex=Math.max(...s),n[e.level]=t});const s=[];return t.forEach(e=>{const n=e.parentIndex,a=(0,S.A)(e,Y);n>=0?t[n].children.push(a):s.push(a)}),s}function K(e){let t=e.toc,n=e.minHeadingLevel,s=e.maxHeadingLevel;return t.flatMap(e=>{const t=K({toc:e.children,minHeadingLevel:n,maxHeadingLevel:s});return function(e){return e.level>=n&&e.level<=s}(e)?[{...e,children:t}]:t})}function ee(e){const t=e.getBoundingClientRect();return t.top===t.bottom?ee(e.parentNode):t}function te(e,t){var n;let s=t.anchorTopOffset;const a=e.find(e=>ee(e).top>=s);if(a){var i;return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight},[t]),e}function se(e){const t=(0,s.useRef)(void 0),n=ne();(0,s.useEffect)(()=>{if(!e)return()=>{};const s=e.linkClassName,a=e.linkActiveClassName,i=e.minHeadingLevel,r=e.maxHeadingLevel;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),l=function(e){let t=e.minHeadingLevel,n=e.maxHeadingLevel;const s=[];for(let a=t;a<=n;a+=1)s.push("h"+a+".anchor");return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:i,maxHeadingLevel:r}),o=te(l,{anchorTopOffset:n.current}),c=e.find(e=>o&&o.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e));e.forEach(e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===c)})}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}},[e,n])}function ae(e){let t=e.toc,n=e.className,s=e.linkClassName,a=e.isChild;return t.length?(0,r.jsx)("ul",{className:a?void 0:n,children:t.map(e=>(0,r.jsxs)("li",{children:[(0,r.jsx)(f.A,{to:"#"+e.id,className:null!=s?s:void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,r.jsx)(ae,{isChild:!0,toc:e.children,className:n,linkClassName:s})]},e.id))}):null}const ie=s.memo(ae),re=["toc","className","linkClassName","linkActiveClassName","minHeadingLevel","maxHeadingLevel"];function le(e){let t=e.toc,n=e.className,a=void 0===n?"table-of-contents table-of-contents__left-border":n,i=e.linkClassName,l=void 0===i?"table-of-contents__link":i,o=e.linkActiveClassName,c=void 0===o?void 0:o,d=e.minHeadingLevel,u=e.maxHeadingLevel,m=(0,S.A)(e,re);const h=(0,X.p)(),f=null!=d?d:h.tableOfContents.minHeadingLevel,p=null!=u?u:h.tableOfContents.maxHeadingLevel,x=function(e){let t=e.toc,n=e.minHeadingLevel,a=e.maxHeadingLevel;return(0,s.useMemo)(()=>K({toc:Q(t),minHeadingLevel:n,maxHeadingLevel:a}),[t,n,a])}({toc:t,minHeadingLevel:f,maxHeadingLevel:p});return se((0,s.useMemo)(()=>{if(l&&c)return{linkClassName:l,linkActiveClassName:c,minHeadingLevel:f,maxHeadingLevel:p}},[l,c,f,p])),(0,r.jsx)(ie,{toc:x,className:a,linkClassName:l,...m})}const oe="tocCollapsibleButton_TO0P",ce="tocCollapsibleButtonExpanded_MG3E",de=["collapsed"];function ue(e){let t=e.collapsed,n=(0,S.A)(e,de);return(0,r.jsx)("button",{type:"button",...n,className:(0,u.A)("clean-btn",oe,!t&&ce,n.className),children:(0,r.jsx)(h.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const me="tocCollapsible_ETCw",he="tocCollapsibleContent_vkbj",fe="tocCollapsibleExpanded_sAul";function pe(e){let t=e.toc,n=e.className,s=e.minHeadingLevel,a=e.maxHeadingLevel;const i=(0,$.u)({initialState:!0}),l=i.collapsed,o=i.toggleCollapsed;return(0,r.jsxs)("div",{className:(0,u.A)(me,!l&&fe,n),children:[(0,r.jsx)(ue,{collapsed:l,onClick:o}),(0,r.jsx)($.N,{lazy:!0,className:he,collapsed:l,children:(0,r.jsx)(le,{toc:t,minHeadingLevel:s,maxHeadingLevel:a})})]})}const xe="tocMobile_ITEo";function ge(){const e=c(),t=e.toc,n=e.frontMatter;return(0,r.jsx)(pe,{toc:t,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:(0,u.A)(j.G.docs.docTocMobile,xe)})}const ve="tableOfContents_bqdL",be=["className"];function je(e){let t=e.className,n=(0,S.A)(e,be);return(0,r.jsx)("div",{className:(0,u.A)(ve,"thin-scrollbar",t),children:(0,r.jsx)(le,{...n,linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})})}function Ne(){const e=c(),t=e.toc,n=e.frontMatter;return(0,r.jsx)(je,{toc:t,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:j.G.docs.docTocDesktop})}var Ae=n(4608),ye=n(8453),Ce=n(5260),Le=n(2303),ke=n(5293);function we(){const e=(0,X.p)().prism,t=(0,ke.G)().colorMode,n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var _e=n(8634),Te=n(8426),Be=n.n(Te);const He=(0,_e.A)(/title=(["'])(.*?)\1/,{quote:1,title:2}),Me=(0,_e.A)(/\{([\d,-]+)\}/,{range:1}),Ee={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},Ie={...Ee,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},Ve=Object.keys(Ee);function Se(e,t){const n=e.map(e=>{const n=Ie[e],s=n.start,a=n.end;return"(?:"+s+"\\s*("+t.flatMap(e=>{var t,n;return[e.line,null==(t=e.block)?void 0:t.start,null==(n=e.block)?void 0:n.end].filter(Boolean)}).join("|")+")\\s*"+a+")"}).join("|");return new RegExp("^\\s*(?:"+n+")\\s*$")}function Ue(e){let t=e.showLineNumbers,n=e.metastring;return"boolean"==typeof t?t?1:void 0:"number"==typeof t?t:function(e){const t=null==e?void 0:e.split(" ").find(e=>e.startsWith("showLineNumbers"));if(t){if(t.startsWith("showLineNumbers=")){const e=t.replace("showLineNumbers=","");return parseInt(e,10)}return 1}}(n)}function ze(e,t){const n=t.language,s=t.magicComments;if(void 0===n)return{lineClassNames:{},code:e};const a=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return Se(["js","jsBlock"],t);case"jsx":case"tsx":return Se(["js","jsBlock","jsx"],t);case"html":return Se(["js","jsBlock","html"],t);case"python":case"py":case"bash":return Se(["bash"],t);case"markdown":case"md":return Se(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return Se(["tex"],t);case"lua":case"haskell":return Se(["lua"],t);case"sql":return Se(["lua","jsBlock"],t);case"wasm":return Se(["wasm"],t);case"vb":case"vba":case"visual-basic":return Se(["vb","rem"],t);case"vbnet":return Se(["vbnet","rem"],t);case"batch":return Se(["rem"],t);case"basic":return Se(["rem","f90"],t);case"fsharp":return Se(["js","ml"],t);case"ocaml":case"sml":return Se(["ml"],t);case"fortran":return Se(["f90"],t);case"cobol":return Se(["cobol"],t);default:return Se(Ve,t)}}(n,s),i=e.split(/\r?\n/),r=Object.fromEntries(s.map(e=>[e.className,{start:0,range:""}])),l=Object.fromEntries(s.filter(e=>e.line).map(e=>{let t=e.className;return[e.line,t]})),o=Object.fromEntries(s.filter(e=>e.block).map(e=>{let t=e.className;return[e.block.start,t]})),c=Object.fromEntries(s.filter(e=>e.block).map(e=>{let t=e.className;return[e.block.end,t]}));for(let u=0;uvoid 0!==e);l[t]?r[l[t]].range+=u+",":o[t]?r[o[t]].start=u:c[t]&&(r[c[t]].range+=r[c[t]].start+"-"+(u-1)+","),i.splice(u,1)}const d={};return Object.entries(r).forEach(e=>{let t=e[0],n=e[1].range;Be()(n).forEach(e=>{null!=d[e]||(d[e]=[]),d[e].push(t)})}),{code:i.join("\n"),lineClassNames:d}}function Re(e,t){var n;const s=e.replace(/\r?\n$/,"");return null!=(n=function(e,t){let n=t.metastring,s=t.magicComments;if(n&&Me.test(n)){const t=n.match(Me).groups.range;if(0===s.length)throw new Error("A highlight range has been given in code block's metastring (``` "+n+"), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.");const a=s[0].className,i=Be()(t).filter(e=>e>0).map(e=>[e-1,[a]]);return{lineClassNames:Object.fromEntries(i),code:e}}return null}(s,{...t}))?n:ze(s,{...t})}function Oe(e){const t=function(e){var t,n,s,a;return null!=(t=null==(a=null!=(n=null!=(s=e.language)?s:function(e){if(!e)return;const t=e.split(" ").find(e=>e.startsWith("language-"));return null==t?void 0:t.replace(/language-/,"")}(e.className))?n:e.defaultLanguage)?void 0:a.toLowerCase())?t:"text"}({language:e.language,defaultLanguage:e.defaultLanguage,className:e.className}),n=Re(e.code,{metastring:e.metastring,magicComments:e.magicComments,language:t}),s=n.lineClassNames,a=n.code,i=function(e){let t=e.className,n=e.language;return(0,u.A)(t,n&&!(null!=t&&t.includes("language-"+n))&&"language-"+n)}({className:e.className,language:t}),r=(l=e.metastring,(null!=(o=null==l||null==(c=l.match(He))?void 0:c.groups.title)?o:"")||e.title);var l,o,c;const d=Ue({showLineNumbers:e.showLineNumbers,metastring:e.metastring});return{codeInput:e.code,code:a,className:i,language:t,title:r,lineNumbersStart:d,lineClassNames:s}}const Pe=(0,s.createContext)(null);function De(e){let t=e.metadata,n=e.wordWrap,a=e.children;const i=(0,s.useMemo)(()=>({metadata:t,wordWrap:n}),[t,n]);return(0,r.jsx)(Pe.Provider,{value:i,children:a})}function Ge(){const e=(0,s.useContext)(Pe);if(null===e)throw new i.dV("CodeBlockContextProvider");return e}const Fe="codeBlockContainer_Ckt0",We=["as"];function qe(e){let t=e.as,n=(0,S.A)(e,We);const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach(e=>{let s=e[0],a=e[1];const i=t[s];i&&"string"==typeof a&&(n[i]=a)}),n}(we());return(0,r.jsx)(t,{...n,style:s,className:(0,u.A)(n.className,Fe,j.G.common.codeBlock)})}const Je="codeBlock_bY9V",Ze="codeBlockStandalone_MEMb",$e="codeBlockLines_e6Vv",Xe="codeBlockLinesWithNumbering_o6Pm";function Ye(e){let t=e.children,n=e.className;return(0,r.jsx)(qe,{as:"pre",tabIndex:0,className:(0,u.A)(Ze,"thin-scrollbar",n),children:(0,r.jsx)("code",{className:$e,children:t})})}const Qe={attributes:!0,characterData:!0,childList:!0,subtree:!0};function Ke(e,t){const n=(0,s.useState)(),a=n[0],r=n[1],l=(0,s.useCallback)(()=>{var t;r(null==(t=e.current)?void 0:t.closest("[role=tabpanel][hidden]"))},[e,r]);(0,s.useEffect)(()=>{l()},[l]),function(e,t,n){void 0===n&&(n=Qe);const a=(0,i._q)(t),r=(0,i.Be)(n);(0,s.useEffect)(()=>{const t=new MutationObserver(a);return e&&t.observe(e,r),()=>t.disconnect()},[e,a,r])}(a,e=>{e.forEach(e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),l())})},{attributes:!0,characterData:!1,childList:!1,subtree:!1})}function et(e){return e.children}var tt=n(1765);const nt=["line","token"];function st(e){e.line,e.token;let t=(0,S.A)(e,nt);return(0,r.jsx)("span",{...t})}const at="codeLine_lJS_",it="codeLineNumber_Tfdd",rt="codeLineContent_feaV";function lt(){return(0,r.jsx)("br",{})}function ot(e){let t=e.line,n=e.classNames,s=e.showLineNumbers,a=e.getLineProps,i=e.getTokenProps;const l=function(e){const t=1===e.length&&"\n"===e[0].content?e[0]:void 0;return t?[{...t,content:""}]:e}(t),o=a({line:l,className:(0,u.A)(n,s&&at)}),c=l.map((e,t)=>{const n=i({token:e});return(0,r.jsx)(st,{...n,line:l,token:e,children:n.children},t)});return(0,r.jsxs)("div",{...o,children:[s?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:it}),(0,r.jsx)("span",{className:rt,children:c})]}):c,(0,r.jsx)(lt,{})]})}const ct=s.forwardRef((e,t)=>(0,r.jsx)("pre",{ref:t,tabIndex:0,...e,className:(0,u.A)(e.className,Je,"thin-scrollbar")}));function dt(e){const t=Ge().metadata;return(0,r.jsx)("code",{...e,className:(0,u.A)(e.className,$e,void 0!==t.lineNumbersStart&&Xe),style:{...e.style,counterReset:void 0===t.lineNumbersStart?void 0:"line-count "+(t.lineNumbersStart-1)}})}function ut(e){let t=e.className;const n=Ge(),s=n.metadata,a=n.wordWrap,i=we(),l=s.code,o=s.language,c=s.lineNumbersStart,d=s.lineClassNames;return(0,r.jsx)(tt.f4,{theme:i,code:l,language:o,children:e=>{let n=e.className,s=e.style,i=e.tokens,l=e.getLineProps,o=e.getTokenProps;return(0,r.jsx)(ct,{ref:a.codeBlockRef,className:(0,u.A)(t,n),style:s,children:(0,r.jsx)(dt,{children:i.map((e,t)=>(0,r.jsx)(ot,{line:e,getLineProps:l,getTokenProps:o,classNames:d[t],showLineNumbers:void 0!==c},t))})})}})}var mt=n(8478);const ht=["className"];function ft(e){let t=e.className,n=(0,S.A)(e,ht);return(0,r.jsx)("button",{type:"button",...n,className:(0,u.A)("clean-btn",t)})}function pt(e){return(0,r.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,r.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function xt(e){return(0,r.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,r.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const gt={copyButtonCopied:"copyButtonCopied_Vdqa",copyButtonIcons:"copyButtonIcons_IEyt",copyButtonIcon:"copyButtonIcon_TrPX",copyButtonSuccessIcon:"copyButtonSuccessIcon_cVMy"};function vt(e){return e?(0,h.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,h.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"})}function bt(){const e=Ge().metadata.code,t=(0,s.useState)(!1),a=t[0],i=t[1],r=(0,s.useRef)(void 0),l=(0,s.useCallback)(()=>{(async function(e){return navigator.clipboard?navigator.clipboard.writeText(e):(0,(await n.e(436).then(n.bind(n,3436))).default)(e)})(e).then(()=>{i(!0),r.current=window.setTimeout(()=>{i(!1)},1e3)})},[e]);return(0,s.useEffect)(()=>()=>window.clearTimeout(r.current),[]),{copyCode:l,isCopied:a}}function jt(e){let t=e.className;const n=bt(),s=n.copyCode,a=n.isCopied;return(0,r.jsx)(ft,{"aria-label":vt(a),title:(0,h.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,u.A)(t,gt.copyButton,a&>.copyButtonCopied),onClick:s,children:(0,r.jsxs)("span",{className:gt.copyButtonIcons,"aria-hidden":"true",children:[(0,r.jsx)(pt,{className:gt.copyButtonIcon}),(0,r.jsx)(xt,{className:gt.copyButtonSuccessIcon})]})})}function Nt(e){return(0,r.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,r.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const At="wordWrapButtonIcon_b1P5",yt="wordWrapButtonEnabled_uzNF";function Ct(e){let t=e.className;const n=Ge().wordWrap;if(!(n.isEnabled||n.isCodeScrollable))return!1;const s=(0,h.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,r.jsx)(ft,{onClick:()=>n.toggle(),className:(0,u.A)(t,n.isEnabled&&yt),"aria-label":s,title:s,children:(0,r.jsx)(Nt,{className:At,"aria-hidden":"true"})})}const Lt="buttonGroup_M5ko";function kt(e){let t=e.className;return(0,r.jsx)(mt.A,{children:()=>(0,r.jsxs)("div",{className:(0,u.A)(t,Lt),children:[(0,r.jsx)(Ct,{}),(0,r.jsx)(jt,{})]})})}const wt="codeBlockContent_QJqH",_t="codeBlockTitle_OeMC";function Tt(e){let t=e.className;const n=Ge().metadata;return(0,r.jsxs)(qe,{as:"div",className:(0,u.A)(t,n.className),children:[n.title&&(0,r.jsx)("div",{className:_t,children:(0,r.jsx)(et,{children:n.title})}),(0,r.jsxs)("div",{className:wt,children:[(0,r.jsx)(ut,{}),(0,r.jsx)(kt,{})]})]})}function Bt(e){const t=function(e){const t=(0,X.p)().prism;return Oe({code:e.children,className:e.className,metastring:e.metastring,magicComments:t.magicComments,defaultLanguage:t.defaultLanguage,language:e.language,title:e.title,showLineNumbers:e.showLineNumbers})}(e),n=function(){const e=(0,s.useState)(!1),t=e[0],n=e[1],a=(0,s.useState)(!1),i=a[0],r=a[1],l=(0,s.useRef)(null),o=(0,s.useCallback)(()=>{const e=l.current.querySelector("code");t?e.removeAttribute("style"):(e.style.whiteSpace="pre-wrap",e.style.overflowWrap="anywhere"),n(e=>!e)},[l,t]),c=(0,s.useCallback)(()=>{const e=l.current,t=e.scrollWidth>e.clientWidth||l.current.querySelector("code").hasAttribute("style");r(t)},[l]);return Ke(l,c),(0,s.useEffect)(()=>{c()},[t,c]),(0,s.useEffect)(()=>(window.addEventListener("resize",c,{passive:!0}),()=>{window.removeEventListener("resize",c)}),[c]),{codeBlockRef:l,isEnabled:t,isCodeScrollable:i,toggle:o}}();return(0,r.jsx)(De,{metadata:t,wordWrap:n,children:(0,r.jsx)(Tt,{})})}const Ht=["children"];function Mt(e){let t=e.children,n=(0,S.A)(e,Ht);const a=(0,Le.A)(),i=function(e){return s.Children.toArray(e).some(e=>(0,s.isValidElement)(e))?e:Array.isArray(e)?e.join(""):e}(t),l="string"==typeof i?Bt:Ye;return(0,r.jsx)(l,{...n,children:i},String(a))}function Et(e){return(0,r.jsx)("code",{...e})}var It=n(3535);var Vt=n(3427);const St="details_lb9f",Ut="isBrowser_bmU9",zt="collapsibleContent_i85q",Rt=["summary","children"];function Ot(e){return!!e&&("SUMMARY"===e.tagName||Ot(e.parentElement))}function Pt(e,t){return!!e&&(e===t||Pt(e.parentElement,t))}function Dt(e){let t=e.summary,n=e.children,a=(0,S.A)(e,Rt);(0,Vt.A)().collectAnchor(a.id);const i=(0,Le.A)(),l=(0,s.useRef)(null),o=(0,$.u)({initialState:!a.open}),c=o.collapsed,d=o.setCollapsed,m=(0,s.useState)(a.open),h=m[0],f=m[1],p=s.isValidElement(t)?t:(0,r.jsx)("summary",{children:null!=t?t:"Details"});return(0,r.jsxs)("details",{...a,ref:l,open:h,"data-collapsed":c,className:(0,u.A)(St,i&&Ut,a.className),onMouseDown:e=>{Ot(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Ot(t)&&Pt(t,l.current)&&(e.preventDefault(),c?(d(!1),f(!0)):d(!0))},children:[p,(0,r.jsx)($.N,{lazy:!1,collapsed:c,onCollapseTransitionEnd:e=>{d(e),f(!e)},children:(0,r.jsx)("div",{className:zt,children:n})})]})}const Gt="details_b_Ee";function Ft(e){let t=Object.assign({},(function(e){if(null==e)throw new TypeError("Cannot destructure "+e)}(e),e));return(0,r.jsx)(Dt,{...t,className:(0,u.A)("alert alert--info",Gt,t.className)})}function Wt(e){const t=s.Children.toArray(e.children),n=t.find(e=>s.isValidElement(e)&&"summary"===e.type),a=(0,r.jsx)(r.Fragment,{children:t.filter(e=>e!==n)});return(0,r.jsx)(Ft,{...e,summary:n,children:a})}function qt(e){return(0,r.jsx)(Ae.A,{...e})}const Jt="containsTaskList_mC6p";function Zt(e){if(void 0!==e)return(0,u.A)(e,(null==e?void 0:e.includes("contains-task-list"))&&Jt)}const $t="img_ev3q";function Xt(e){var t;const n=function(e){const t=s.Children.toArray(e),n=t.find(e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type),a=t.filter(e=>e!==n);return{mdxAdmonitionTitle:null==n?void 0:n.props.children,rest:a.length>0?(0,r.jsx)(r.Fragment,{children:a}):null}}(e.children),a=n.mdxAdmonitionTitle,i=n.rest,l=null!=(t=e.title)?t:a;return{...e,...l&&{title:l},children:i}}const Yt="admonition_xJq3",Qt="admonitionHeading_Gvgb",Kt="admonitionIcon_Rf37",en="admonitionContent_BuS1";function tn(e){let t=e.type,n=e.className,s=e.children,a=e.id;return(0,r.jsx)("div",{className:(0,u.A)(j.G.common.admonition,j.G.common.admonitionType(t),Yt,n),id:a,children:s})}function nn(e){let t=e.icon,n=e.title;return(0,r.jsxs)("div",{className:Qt,children:[(0,r.jsx)("span",{className:Kt,children:t}),n]})}function sn(e){let t=e.children;return t?(0,r.jsx)("div",{className:en,children:t}):null}function an(e){const t=e.type,n=e.icon,s=e.title,a=e.children,i=e.className,l=e.id;return(0,r.jsxs)(tn,{type:t,className:i,id:l,children:[s||n?(0,r.jsx)(nn,{title:s,icon:n}):null,(0,r.jsx)(sn,{children:a})]})}function rn(e){return(0,r.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const ln={icon:(0,r.jsx)(rn,{}),title:(0,r.jsx)(h.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function on(e){return(0,r.jsx)(an,{...ln,...e,className:(0,u.A)("alert alert--secondary",e.className),children:e.children})}function cn(e){return(0,r.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const dn={icon:(0,r.jsx)(cn,{}),title:(0,r.jsx)(h.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function un(e){return(0,r.jsx)(an,{...dn,...e,className:(0,u.A)("alert alert--success",e.className),children:e.children})}function mn(e){return(0,r.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const hn={icon:(0,r.jsx)(mn,{}),title:(0,r.jsx)(h.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function fn(e){return(0,r.jsx)(an,{...hn,...e,className:(0,u.A)("alert alert--info",e.className),children:e.children})}function pn(e){return(0,r.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const xn={icon:(0,r.jsx)(pn,{}),title:(0,r.jsx)(h.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function gn(e){return(0,r.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const vn={icon:(0,r.jsx)(gn,{}),title:(0,r.jsx)(h.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const bn={icon:(0,r.jsx)(pn,{}),title:(0,r.jsx)(h.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const jn={...{note:on,tip:un,info:fn,warning:function(e){return(0,r.jsx)(an,{...xn,...e,className:(0,u.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,r.jsx)(an,{...vn,...e,className:(0,u.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,r.jsx)(on,{title:"secondary",...e}),important:e=>(0,r.jsx)(fn,{title:"important",...e}),success:e=>(0,r.jsx)(un,{title:"success",...e}),caution:function(e){return(0,r.jsx)(an,{...bn,...e,className:(0,u.A)("alert alert--warning",e.className),children:e.children})}}};function Nn(e){const t=Xt(e),n=(s=t.type,jn[s]||(console.warn('No admonition component found for admonition type "'+s+'". Using Info as fallback.'),jn.info));var s;return(0,r.jsx)(n,{...t})}const An=()=>null;n.dn(An);const yn={Head:Ce.A,details:Wt,Details:Wt,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every(e=>"string"==typeof e&&!e.includes("\n"))}(e)?(0,r.jsx)(Et,{...e}):(0,r.jsx)(Mt,{...e})},a:function(e){const t=(0,It.v)(e.id);return(0,r.jsx)(f.A,{...e,className:(0,u.A)(t,e.className)})},pre:function(e){return(0,r.jsx)(r.Fragment,{children:e.children})},ul:function(e){return(0,r.jsx)("ul",{...e,className:Zt(e.className)})},li:function(e){(0,Vt.A)().collectAnchor(e.id);const t=(0,It.v)(e.id);return(0,r.jsx)("li",{className:(0,u.A)(t,e.className),...e})},img:function(e){return(0,r.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,u.A)(t,$t))});var t},h1:e=>(0,r.jsx)(qt,{as:"h1",...e}),h2:e=>(0,r.jsx)(qt,{as:"h2",...e}),h3:e=>(0,r.jsx)(qt,{as:"h3",...e}),h4:e=>(0,r.jsx)(qt,{as:"h4",...e}),h5:e=>(0,r.jsx)(qt,{as:"h5",...e}),h6:e=>(0,r.jsx)(qt,{as:"h6",...e}),admonition:Nn,mermaid:An};function Cn(e){let t=e.children;return(0,r.jsx)(ye.x,{components:yn,children:t})}function Ln(e){let t=e.children;const n=function(){const e=c(),t=e.metadata,n=e.frontMatter,s=e.contentTitle;return n.hide_title||void 0!==s?null:t.title}();return(0,r.jsxs)("div",{className:(0,u.A)(j.G.docs.docMarkdown,"markdown"),children:[n&&(0,r.jsx)("header",{children:(0,r.jsx)(Ae.A,{as:"h1",children:n})}),(0,r.jsx)(Cn,{children:t})]})}var kn=n(4718),wn=n(9169),_n=n(6025);function Tn(e){return(0,r.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,r.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const Bn="breadcrumbHomeIcon_YNFT";function Hn(){const e=(0,_n.Ay)("/");return(0,r.jsx)("li",{className:"breadcrumbs__item",children:(0,r.jsx)(f.A,{"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,r.jsx)(Tn,{className:Bn})})})}function Mn(e){const t=function(e){let t=e.breadcrumbs;const n=(0,v.A)().siteConfig;return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:t.filter(e=>e.href).map((e,t)=>({"@type":"ListItem",position:t+1,name:e.label,item:""+n.url+e.href}))}}({breadcrumbs:e.breadcrumbs});return(0,r.jsx)(Ce.A,{children:(0,r.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}const En="breadcrumbsContainer_Z_bl";function In(e){let t=e.children,n=e.href;const s="breadcrumbs__link";return e.isLast?(0,r.jsx)("span",{className:s,children:t}):n?(0,r.jsx)(f.A,{className:s,href:n,children:(0,r.jsx)("span",{children:t})}):(0,r.jsx)("span",{className:s,children:t})}function Vn(e){let t=e.children,n=e.active;return(0,r.jsx)("li",{className:(0,u.A)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:t})}function Sn(){const e=(0,kn.OF)(),t=(0,wn.Dt)();return e?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(Mn,{breadcrumbs:e}),(0,r.jsx)("nav",{className:(0,u.A)(j.G.docs.docBreadcrumbs,En),"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,r.jsxs)("ul",{className:"breadcrumbs",children:[t&&(0,r.jsx)(Hn,{}),e.map((t,n)=>{const s=n===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,r.jsx)(Vn,{active:s,children:(0,r.jsx)(In,{href:a,isLast:s,children:t.label})},n)})]})})]}):null}function Un(){return(0,r.jsx)(h.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function zn(){return(0,r.jsx)(h.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function Rn(){return(0,r.jsx)(Ce.A,{children:(0,r.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function On(){return(0,r.jsx)(h.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function Pn(){return(0,r.jsx)(h.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}function Dn(e){let t=e.className;return(0,r.jsx)(Nn,{type:"caution",title:(0,r.jsx)(On,{}),className:(0,u.A)(t,j.G.common.draftBanner),children:(0,r.jsx)(Pn,{})})}function Gn(e){let t=e.className;return(0,r.jsx)(Nn,{type:"caution",title:(0,r.jsx)(Un,{}),className:(0,u.A)(t,j.G.common.unlistedBanner),children:(0,r.jsx)(zn,{})})}function Fn(e){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(Rn,{}),(0,r.jsx)(Gn,{...e})]})}function Wn(e){let t=e.metadata;const n=t.unlisted,s=t.frontMatter;return(0,r.jsxs)(r.Fragment,{children:[(n||s.unlisted)&&(0,r.jsx)(Fn,{}),s.draft&&(0,r.jsx)(Dn,{})]})}const qn="docItemContainer_Djhp",Jn="docItemCol_VOVn";function Zn(e){let t=e.children;const n=function(){const e=c(),t=e.frontMatter,n=e.toc,s=(0,m.l)(),a=t.hide_table_of_contents,i=!a&&n.length>0;return{hidden:a,mobile:i?(0,r.jsx)(ge,{}):void 0,desktop:!i||"desktop"!==s&&"ssr"!==s?void 0:(0,r.jsx)(Ne,{})}}(),s=c().metadata;return(0,r.jsxs)("div",{className:"row",children:[(0,r.jsxs)("div",{className:(0,u.A)("col",!n.hidden&&Jn),children:[(0,r.jsx)(Wn,{metadata:s}),(0,r.jsx)(w,{}),(0,r.jsxs)("div",{className:qn,children:[(0,r.jsxs)("article",{children:[(0,r.jsx)(Sn,{}),(0,r.jsx)(_,{}),n.mobile,(0,r.jsx)(Ln,{children:t}),(0,r.jsx)(Z,{})]}),(0,r.jsx)(g,{})]})]}),n.desktop&&(0,r.jsx)("div",{className:"col col--3",children:n.desktop})]})}function $n(e){const t="docs-doc-id-"+e.content.metadata.id,n=e.content;return(0,r.jsx)(o,{content:e.content,children:(0,r.jsxs)(a.e3,{className:t,children:[(0,r.jsx)(d,{}),(0,r.jsx)(Zn,{children:(0,r.jsx)(n,{})})]})})}},8426(e,t){function n(e){let t,n=[];for(let s of e.split(",").map(e=>e.trim()))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,i]=t;if(s&&i){s=parseInt(s),i=parseInt(i);const e=sr,x:()=>l});var s=n(6540);const a={},i=s.createContext(a);function r(e){const t=s.useContext(i);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/docs/assets/js/1a4e3797.2b28c5df.js b/docs/assets/js/1a4e3797.2b28c5df.js new file mode 100644 index 00000000..c0b00e9b --- /dev/null +++ b/docs/assets/js/1a4e3797.2b28c5df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_crestapps_bootstrap_select=self.webpackChunk_crestapps_bootstrap_select||[]).push([[138],{1035(e,t,r){r.r(t),r.d(t,{default:()=>U});var s=r(6540),a=r(4586),n=r(4061),l=r(5260),c=r(8774),o=r(1312);const u=["zero","one","two","few","many","other"];function i(e){return u.filter(t=>e.includes(t))}const h={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function d(){const e=(0,a.A)().i18n.currentLocale;return(0,s.useMemo)(()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error('Failed to use Intl.PluralRules for locale "'+e+'".\nDocusaurus will fallback to the default (English) implementation.\nError: '+t.message+"\n"),h}},[e])}function m(){const e=d();return{selectMessage:(t,r)=>function(e,t,r){const s=e.split("|");if(1===s.length)return s[0];s.length>r.pluralForms.length&&console.error("For locale="+r.locale+", a maximum of "+r.pluralForms.length+" plural forms are expected ("+r.pluralForms.join(",")+"), but the message contains "+s.length+": "+e);const a=r.select(t),n=r.pluralForms.indexOf(a);return s[Math.min(n,s.length-1)]}(r,t,e)}}var p=r(4164),g=r(6347),f=r(2303),x=r(5033);const y=function(){const e=(0,f.A)(),t=(0,g.W6)(),r=(0,g.zy)(),s=(0,a.A)().siteConfig.baseUrl,n=e?new URLSearchParams(r.search):null,l=(null==n?void 0:n.get("q"))||"",c=(null==n?void 0:n.get("ctx"))||"",o=(null==n?void 0:n.get("version"))||"",u=e=>{const t=new URLSearchParams(r.search);return e?t.set("q",e):t.delete("q"),t};return{searchValue:l,searchContext:c&&Array.isArray(x.Hg)&&x.Hg.some(e=>"string"==typeof e?e===c:e.path===c)?c:"",searchVersion:o,updateSearchPath:e=>{const r=u(e);t.replace({search:r.toString()})},updateSearchContext:e=>{const s=new URLSearchParams(r.search);s.set("ctx",e),t.replace({search:s.toString()})},generateSearchPageLink:e=>{const t=u(e);return s+"search?"+t.toString()}}};var j=r(9153),S=r(9913),v=r(6841),A=r(3810),C=r(7674),w=r(2849),_=r(4471);const b="searchContextInput_mXoe",P="searchQueryInput_CFBF",F="searchResultItem_U687",R="searchResultItemPath_uIbk",T="searchResultItemSummary_oZHr",H="searchQueryColumn_q7nx",k="searchContextColumn_oWAF";var I=r(3385),N=r(4848);function q(){const e=(0,a.A)(),t=e.siteConfig.baseUrl,r=e.i18n.currentLocale,n=m().selectMessage,c=y(),u=c.searchValue,i=c.searchContext,h=c.searchVersion,d=c.updateSearchPath,g=c.updateSearchContext,f=(0,s.useState)(u),S=f[0],v=f[1],A=(0,s.useState)(),C=A[0],_=A[1],F=""+t+h,R=(0,s.useMemo)(()=>S?(0,o.T)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:S}):(0,o.T)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"}),[S]);(0,s.useEffect)(()=>{d(S),S?(async()=>{const e=await(0,j.w)(F,i,S,100);_(e)})():_(void 0)},[S,F,i]);const T=(0,s.useCallback)(e=>{v(e.target.value)},[]);(0,s.useEffect)(()=>{u&&u!==S&&v(u)},[u]);const q=(0,s.useState)(!1),U=q[0],M=q[1];return(0,s.useEffect)(()=>{!async function(){(!Array.isArray(x.Hg)||i||x.dz)&&await(0,j.k)(F,i),M(!0)}()},[i,F]),(0,N.jsxs)(s.Fragment,{children:[(0,N.jsxs)(l.A,{children:[(0,N.jsx)("meta",{property:"robots",content:"noindex, follow"}),(0,N.jsx)("title",{children:R})]}),(0,N.jsxs)("div",{className:"container margin-vert--lg",children:[(0,N.jsx)("h1",{children:R}),(0,N.jsxs)("div",{className:"row",children:[(0,N.jsx)("div",{className:(0,p.A)("col",{[H]:Array.isArray(x.Hg),"col--9":Array.isArray(x.Hg),"col--12":!Array.isArray(x.Hg)}),children:(0,N.jsx)("input",{type:"search",name:"q",className:P,"aria-label":"Search",onChange:T,value:S,autoComplete:"off",autoFocus:!0})}),Array.isArray(x.Hg)?(0,N.jsx)("div",{className:(0,p.A)("col","col--3","padding-left--none",k),children:(0,N.jsxs)("select",{name:"search-context",className:b,id:"context-selector",value:i,onChange:e=>g(e.target.value),children:[x.dz&&(0,N.jsx)("option",{value:"",children:(0,o.T)({id:"theme.SearchPage.searchContext.everywhere",message:"Everywhere"})}),x.Hg.map(e=>{const t=(0,I.p)(e,r),s=t.label,a=t.path;return(0,N.jsx)("option",{value:a,children:s},a)})]})}):null]}),!U&&S&&(0,N.jsx)("div",{children:(0,N.jsx)(w.A,{})}),C&&(C.length>0?(0,N.jsx)("p",{children:n(C.length,(0,o.T)({id:"theme.SearchPage.documentsFound.plurals",message:"1 document found|{count} documents found",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)'},{count:C.length}))}):(0,N.jsx)("p",{children:(0,o.T)({id:"theme.SearchPage.noResultsText",message:"No documents were found",description:"The paragraph for empty search result"})})),(0,N.jsx)("section",{children:C&&C.map(e=>(0,N.jsx)(L,{searchResult:e},e.document.i))})]})]})}function L(e){let t=e.searchResult,r=t.document,s=t.type,a=t.page,n=t.tokens,l=t.metadata;const o=s===S.i.Title,u=s===S.i.Keywords,i=s===S.i.Description,h=i||u,d=o||h,m=s===S.i.Content,p=(o?r.b:a.b).slice(),g=m||h?r.s:r.t;d||p.push(a.t);let f="";if(x.CU&&n.length>0){const e=new URLSearchParams;for(const t of n)e.append("_highlight",t);f="?"+e.toString()}return(0,N.jsxs)("article",{className:F,children:[(0,N.jsx)("h2",{children:(0,N.jsx)(c.A,{to:r.u+f+(r.h||""),dangerouslySetInnerHTML:{__html:m||h?(0,v.Z)(g,n):(0,A.C)(g,(0,C.g)(l,"t"),n,100)}})}),p.length>0&&(0,N.jsx)("p",{className:R,children:(0,_.$)(p)}),(m||i)&&(0,N.jsx)("p",{className:T,dangerouslySetInnerHTML:{__html:(0,A.C)(r.t,(0,C.g)(l,"t"),n,100)}})]})}const U=function(){return(0,N.jsx)(n.A,{children:(0,N.jsx)(q,{})})}}}]); \ No newline at end of file diff --git a/docs/assets/js/20e3dd10.86c95c01.js b/docs/assets/js/20e3dd10.86c95c01.js new file mode 100644 index 00000000..b7cf961a --- /dev/null +++ b/docs/assets/js/20e3dd10.86c95c01.js @@ -0,0 +1,384 @@ +"use strict";(self.webpackChunk_crestapps_bootstrap_select=self.webpackChunk_crestapps_bootstrap_select||[]).push([[674],{7810(e,t,o){o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>h,frontMatter:()=>a,metadata:()=>n,toc:()=>r});const n=JSON.parse('{"id":"examples","title":"Examples","description":"Live bootstrap-select examples hosted by the Docusaurus docs site.","source":"@site/content/examples.mdx","sourceDirName":".","slug":"/examples","permalink":"/docs/examples","draft":false,"unlisted":false,"editUrl":"https://github.com/CrestApps/crestapps-bootstrap-select/tree/main/docs/content/examples.mdx","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"sidebar_position":2,"title":"Examples","description":"Live bootstrap-select examples hosted by the Docusaurus docs site."},"sidebar":"docs","previous":{"title":"Getting Started","permalink":"/docs/"},"next":{"title":"Options","permalink":"/docs/options"}}');var s=o(4848),i=o(8453),l=o(5194);const a={sidebar_position:2,title:"Examples",description:"Live bootstrap-select examples hosted by the Docusaurus docs site."},c="Basic examples",p={},r=[{value:"Standard select boxes",id:"standard-select-boxes",level:2},{value:"Select boxes with optgroups",id:"select-boxes-with-optgroups",level:2},{value:"Multiple select boxes",id:"multiple-select-boxes",level:2},{value:"Live search",id:"live-search",level:2},{value:"Key words",id:"key-words",level:2},{value:"Tags-style live search with open options",id:"tags-style-live-search-with-open-options",level:2},{value:"List-style menu",id:"list-style-menu",level:2},{value:"Floating labels with visible tags",id:"floating-labels-with-visible-tags",level:2},{value:"Placeholder",id:"placeholder",level:2},{value:"Selected text",id:"selected-text",level:2},{value:"Selected text format",id:"selected-text-format",level:2},{value:"Button classes",id:"button-classes",level:2},{value:"Checkmark on selected option",id:"checkmark-on-selected-option",level:2},{value:"Menu arrow",id:"menu-arrow",level:2},{value:"Style individual options",id:"style-individual-options",level:2},{value:"Width",id:"width",level:2},{value:"Font Awesome icons",id:"font-awesome-icons",level:2},{value:"Custom content",id:"custom-content",level:2},{value:"Subtext",id:"subtext",level:2},{value:"Menu size",id:"menu-size",level:2},{value:"Select/deselect all options",id:"selectdeselect-all-options",level:2},{value:"Divider",id:"divider",level:2},{value:"Menu header",id:"menu-header",level:2},{value:"Dropup menu",id:"dropup-menu",level:2},{value:"Disabled select box",id:"disabled-select-box",level:2},{value:"Disabled options",id:"disabled-options",level:2},{value:"Disabled option groups",id:"disabled-option-groups",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"basic-examples",children:"Basic examples"})}),"\n",(0,s.jsx)(t.admonition,{title:"CrestApps fork",type:"info",children:(0,s.jsxs)(t.p,{children:["The examples use the vanilla JavaScript / Bootstrap 5+ API: ",(0,s.jsx)(t.code,{children:"new Selectpicker(el)"})," or the ",(0,s.jsx)(t.code,{children:"selectpicker"})," class, which auto-initializes. jQuery is not required."]})}),"\n",(0,s.jsxs)(t.p,{children:["The main examples now live directly on this docs page so they inherit the docs theme, including light and dark mode. The standalone HTML files are still kept under ",(0,s.jsx)(t.code,{children:"docs/static/examples/"})," for quick smoke-testing outside Docusaurus."]}),"\n",(0,s.jsx)(t.h2,{id:"standard-select-boxes",children:"Standard select boxes"}),"\n",(0,s.jsx)(l.A,{html:String.raw`
+

Native select:

+ + +
+ +
+

Enhanced with bootstrap-select:

+ + +
`}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)("span",{id:"optgroup"}),"\n",(0,s.jsx)(t.h2,{id:"select-boxes-with-optgroups",children:"Select boxes with optgroups"}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"multiple-select-boxes",children:"Multiple select boxes"}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"live-search",children:"Live search"}),"\n",(0,s.jsxs)(t.p,{children:["You can add a search input by passing ",(0,s.jsx)(t.code,{children:'data-live-search="true"'})," attribute:"]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `,className:"no-code"}),"\n",(0,s.jsx)(t.h2,{id:"key-words",children:"Key words"}),"\n",(0,s.jsxs)(t.p,{children:["Add key words to options to improve their searchability using ",(0,s.jsx)(t.code,{children:"data-tokens"}),"."]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"tags-style-live-search-with-open-options",children:"Tags-style live search with open options"}),"\n",(0,s.jsxs)(t.p,{children:["Use ",(0,s.jsx)(t.code,{children:"showSelectedTags"})," to keep selections visible as removable tags above the search box, while the button switches to a compact summary instead of repeating the same values."]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n \n \n \n \n \n \n\n'})}),"\n",(0,s.jsxs)(t.p,{children:["If you prefer a Bootstrap-style checkbox instead of the floating checkmark, set ",(0,s.jsx)(t.code,{children:"selectionIndicator"})," to ",(0,s.jsx)(t.code,{children:"checkbox"}),":"]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n \n \n \n \n\n'})}),"\n",(0,s.jsx)(t.h2,{id:"list-style-menu",children:"List-style menu"}),"\n",(0,s.jsxs)(t.p,{children:["Set ",(0,s.jsx)(t.code,{children:"selectedItemsStyle"})," to ",(0,s.jsx)(t.code,{children:"list"})," to render the removable selections as a stacked Bootstrap list group:"]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n \n \n \n\n'})}),"\n",(0,s.jsx)(t.h2,{id:"floating-labels-with-visible-tags",children:"Floating labels with visible tags"}),"\n",(0,s.jsxs)(t.p,{children:["When a tags-style picker is placed inside a Bootstrap 5 ",(0,s.jsx)(t.code,{children:"form-floating"})," wrapper, the selected tags stay visible inside the control after the menu closes, with balanced top and bottom spacing around the tags."]}),"\n",(0,s.jsx)(l.A,{html:String.raw`
+ + +
`}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'
\n \n \n \n \n \n \n
\n'})}),"\n",(0,s.jsxs)(t.p,{children:["For remote-backed pickers, initialize with JavaScript and provide ",(0,s.jsx)(t.code,{children:"source.create(callback, searchValue)"})," to save the new item before selecting it:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-js",children:"new Selectpicker('#tag-editor', {\n liveSearch: true,\n showSelectedTags: true,\n openOptions: true,\n source: {\n data: function (callback) {\n callback(existingTags);\n },\n search: function (callback, page, searchValue) {\n callback(filterTags(searchValue));\n },\n create: function (callback, searchValue) {\n saveTag(searchValue).then(function (tag) {\n callback({\n text: tag.displayText,\n value: tag.id\n });\n });\n }\n }\n});\n"})}),"\n",(0,s.jsx)(t.h1,{id:"limit-the-number-of-selections",children:"Limit the number of selections"}),"\n",(0,s.jsxs)(t.p,{children:["Limit the number of options that can be selected via the ",(0,s.jsx)(t.code,{children:"data-max-options"})," attribute. It also works for option groups. Customize the message displayed when the limit is reached with ",(0,s.jsx)(t.code,{children:"maxOptionsText"}),"."]}),"\n",(0,s.jsx)(l.A,{html:String.raw` + +`}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n\n\n'})}),"\n",(0,s.jsx)(t.h1,{id:"custom-button-text",children:"Custom button text"}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"placeholder",children:"Placeholder"}),"\n",(0,s.jsx)("p",{id:"titleMultiples"}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.code,{children:"placeholder"})," attribute to set the default placeholder text when nothing is selected. This works for both multiple and standard select boxes:"]}),"\n",(0,s.jsx)(l.A,{html:String.raw`
+ + +
+ +
+ + +
`}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"selected-text",children:"Selected text"}),"\n",(0,s.jsx)("p",{id:"title"}),"\n",(0,s.jsxs)(t.p,{children:["Set the ",(0,s.jsx)(t.code,{children:"title"})," attribute on individual options to display alternative text when the option is selected:"]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `,className:"no-code"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"selected-text-format",children:"Selected text format"}),"\n",(0,s.jsx)("p",{id:"titleMultiplesFormat"}),"\n",(0,s.jsxs)(t.p,{children:["Specify how the selection is displayed with the ",(0,s.jsx)(t.code,{children:"data-selected-text-format"})," attribute on a multiple select."]}),"\n",(0,s.jsx)(t.p,{children:"The supported values are:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"values"}),": A comma delimited list of selected values (default)"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"count"}),": If one item is selected, then the option value is shown. If more than one is selected then the number of selected items is displayed, e.g. ",(0,s.jsx)(t.code,{children:"2 of 6 selected"})]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"count > x"}),": Where ",(0,s.jsx)(t.code,{children:"x"})," is the number of items selected when the display format changes from ",(0,s.jsx)(t.code,{children:"values"})," to ",(0,s.jsx)(t.code,{children:"count"})]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"static"}),": Always show the placeholder, regardless of selection"]}),"\n"]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h1,{id:"styling",children:"Styling"}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"button-classes",children:"Button classes"}),"\n",(0,s.jsxs)(t.p,{children:["You can set the button classes via the ",(0,s.jsx)(t.code,{children:"data-style"})," attribute:"]}),"\n",(0,s.jsx)(l.A,{html:String.raw`
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
`}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n\n\n\n\n\n\n\n\n\n\n'})}),"\n",(0,s.jsx)(t.h2,{id:"checkmark-on-selected-option",children:"Checkmark on selected option"}),"\n",(0,s.jsxs)(t.p,{children:["You can also show the checkmark icon on standard select boxes with the ",(0,s.jsx)(t.code,{children:"show-tick"})," class:"]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"menu-arrow",children:"Menu arrow"}),"\n",(0,s.jsxs)(t.p,{children:["The Bootstrap menu arrow can be added with the ",(0,s.jsx)(t.code,{children:"show-menu-arrow"})," class:"]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"style-individual-options",children:"Style individual options"}),"\n",(0,s.jsx)("p",{id:"classes"}),"\n",(0,s.jsx)(t.p,{children:"Classes and styles added to options are transferred to the select box:"}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-css",children:".special {\n font-weight: bold !important;\n color: #fff !important;\n background: #bc0000 !important;\n text-transform: uppercase;\n}\n"})}),"\n",(0,s.jsx)(t.h2,{id:"width",children:"Width"}),"\n",(0,s.jsx)("p",{id:"grid"}),"\n",(0,s.jsx)(t.p,{children:"Wrap selects in grid columns, or any custom parent element, to easily enforce desired widths."}),"\n",(0,s.jsx)(l.A,{html:String.raw`
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +
+
+
`}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'
\n
\n
\n \n
\n
\n
\n'})}),"\n",(0,s.jsx)(t.h1,{id:"customize-options",children:"Customize options"}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"font-awesome-icons",children:"Font Awesome icons"}),"\n",(0,s.jsxs)(t.p,{children:["This example uses Font Awesome. Add an icon to an option or optgroup with the ",(0,s.jsx)(t.code,{children:"data-icon"})," attribute:"]}),"\n",(0,s.jsx)(t.admonition,{title:"Bootstrap 5 icons",type:"info",children:(0,s.jsxs)(t.p,{children:["Bootstrap 5 does not include an icon font. To use Font Awesome or another icon library, set ",(0,s.jsx)(t.code,{children:"iconBase"})," and ",(0,s.jsx)(t.code,{children:"tickIcon"})," to match that library."]})}),"\n",(0,s.jsx)(t.p,{children:"The selected option renders its icon in the button, and the menu shows the icons for the remaining options as well."}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"custom-content",children:"Custom content"}),"\n",(0,s.jsxs)(t.p,{children:["Insert custom HTML into the option with the ",(0,s.jsx)(t.code,{children:"data-content"})," attribute:"]}),"\n",(0,s.jsx)(t.admonition,{title:"Custom content is sanitized",type:"warning",children:(0,s.jsxs)(t.p,{children:["This feature inserts HTML into the DOM. By default, it is sanitized using our built-in ",(0,s.jsx)(t.a,{href:"../options#sanitizer",children:"sanitizer"}),"."]})}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"subtext",children:"Subtext"}),"\n",(0,s.jsxs)(t.p,{children:["Add subtext to an option or optgroup with the ",(0,s.jsx)(t.code,{children:"data-subtext"})," attribute:"]}),"\n",(0,s.jsx)(l.A,{html:String.raw`
+ +
+ +
+ + With showSubtext set to true. +
`}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h1,{id:"customize-menu",children:"Customize menu"}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"menu-size",children:"Menu size"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"size"})," option is set to ",(0,s.jsx)(t.code,{children:"'auto'"})," by default. When ",(0,s.jsx)(t.code,{children:"size"})," is set to ",(0,s.jsx)(t.code,{children:"'auto'"}),", the menu always opens up to show as many items as the window will allow without being cut off. Set ",(0,s.jsx)(t.code,{children:"size"})," to ",(0,s.jsx)(t.code,{children:"false"})," to always show all items. The size of the menu can also be specifed using the ",(0,s.jsx)(t.code,{children:"data-size"})," attribute."]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)("p",{id:"data-size"}),"\n",(0,s.jsxs)(t.p,{children:["Specify a number for ",(0,s.jsx)(t.code,{children:"data-size"})," to choose the maximum number of items to show in the menu."]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"selectdeselect-all-options",children:"Select/deselect all options"}),"\n",(0,s.jsxs)(t.p,{children:["Adds two buttons to the top of the menu - ",(0,s.jsx)(t.strong,{children:"Select All"})," & ",(0,s.jsx)(t.strong,{children:"Deselect All"})," with ",(0,s.jsx)(t.code,{children:'data-actions-box="true"'}),"."]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"divider",children:"Divider"}),"\n",(0,s.jsxs)(t.p,{children:["Add ",(0,s.jsx)(t.code,{children:'data-divider="true"'})," to an option to turn it into a divider."]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"menu-header",children:"Menu header"}),"\n",(0,s.jsxs)(t.p,{children:["Add a header to the dropdown menu, e.g. ",(0,s.jsx)(t.code,{children:"header: 'Select a condiment'"})," or ",(0,s.jsx)(t.code,{children:'data-header="Select a condiment"'})]}),"\n",(0,s.jsx)(l.A,{html:String.raw`
+
+ +
+
`}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"dropup-menu",children:"Dropup menu"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.code,{children:"dropupAuto"})," is set to true by default, which automatically determines whether or not the menu should display above or below the select box. If ",(0,s.jsx)(t.code,{children:"dropupAuto"})," is set to false, manually make the select a dropup menu by adding the ",(0,s.jsx)(t.code,{children:".dropup"})," class to the select."]}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h1,{id:"disabled",children:"Disabled"}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"disabled-select-box",children:"Disabled select box"}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"disabled-options",children:"Disabled options"}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})}),"\n",(0,s.jsx)(t.h2,{id:"disabled-option-groups",children:"Disabled option groups"}),"\n",(0,s.jsx)(l.A,{html:String.raw` `}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-html",children:'\n'})})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},5194(e,t,o){o.d(t,{A:()=>a});var n=o(6540),s=o(8478),i=o(4848);function l(e){let t=e.html,o=e.className,s=void 0===o?"":o,l=e.style;const a=(0,n.useRef)(null);return(0,n.useEffect)(function(){let e,t=!1,o=[];const n=[],s=[];function i(t){window.clearTimeout(e),e=window.setTimeout(c,t)}function l(e,t){window.addEventListener(e,t),s.push(function(){window.removeEventListener(e,t)})}function c(){!t&&a.current&&("undefined"!=typeof window&&window.bootstrap&&window.bootstrap.Dropdown&&window.Selectpicker?(o=Array.from(a.current.querySelectorAll("select.selectpicker")).map(function(e){return window.Selectpicker.getOrCreateInstance(e)}),window.requestAnimationFrame(function(){t||o.forEach(function(e){e&&"function"==typeof e.refresh&&e.refresh()})})):i(100))}return l("load",c),l("hashchange",function(){i(0),i(100)}),l("resize",function(){i(0)}),Array.from(document.querySelectorAll("script[src]")).forEach(function(e){/bootstrap(?:\.bundle)?(?:\.min)?\.js|bootstrap-select(?:\.min)?\.js/i.test(e.src)&&function(e){const t=function(){i(0)};e.addEventListener("load",t),n.push(function(){e.removeEventListener("load",t)})}(e)}),c(),function(){t=!0,window.clearTimeout(e),s.forEach(function(e){e()}),n.forEach(function(e){e()}),o.forEach(function(e){e&&"function"==typeof e.destroy&&e.destroy()}),o=[]}},[t]),(0,i.jsx)("div",{className:"bs-docs-example "+s,dangerouslySetInnerHTML:{__html:t},ref:a,style:l})}function a(e){return(0,i.jsx)(s.A,{fallback:(0,i.jsx)("div",{className:"bs-docs-example "+(e.className||""),style:e.style}),children:function(){return(0,i.jsx)(l,{...e})}})}},8478(e,t,o){o.d(t,{A:()=>i});o(6540);var n=o(2303),s=o(4848);function i(e){let t=e.children,o=e.fallback;return(0,n.A)()?(0,s.jsx)(s.Fragment,{children:null==t?void 0:t()}):null!=o?o:null}},8453(e,t,o){o.d(t,{R:()=>l,x:()=>a});var n=o(6540);const s={},i=n.createContext(s);function l(e){const t=n.useContext(i);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/docs/assets/js/237.1f0454a3.js b/docs/assets/js/237.1f0454a3.js new file mode 100644 index 00000000..a5d61fa4 --- /dev/null +++ b/docs/assets/js/237.1f0454a3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_crestapps_bootstrap_select=self.webpackChunk_crestapps_bootstrap_select||[]).push([[237],{3363(e,t,s){s.d(t,{A:()=>a});s(6540);var n=s(4164),o=s(1312),i=s(4608),r=s(4848);function a(e){let t=e.className;return(0,r.jsx)("main",{className:(0,n.A)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(i.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},2237(e,t,s){s.r(t),s.d(t,{default:()=>l});s(6540);var n=s(1312),o=s(5500),i=s(4061),r=s(3363),a=s(4848);function l(){const e=(0,n.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.be,{title:e}),(0,a.jsx)(i.A,{children:(0,a.jsx)(r.A,{})})]})}}}]); \ No newline at end of file diff --git a/docs/assets/js/314bb0f1.5b95ae61.js b/docs/assets/js/314bb0f1.5b95ae61.js new file mode 100644 index 00000000..f1c2a229 --- /dev/null +++ b/docs/assets/js/314bb0f1.5b95ae61.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_crestapps_bootstrap_select=self.webpackChunk_crestapps_bootstrap_select||[]).push([[496],{1781(e){e.exports=JSON.parse('{"version":{"pluginId":"default","version":"1.1","label":"1.1","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-1.1","isLast":false,"docsSidebars":{"docs":[{"type":"link","href":"/docs/1.1/","label":"Getting Started","docId":"index","unlisted":false},{"type":"link","href":"/docs/1.1/examples","label":"Examples","docId":"examples","unlisted":false},{"type":"link","href":"/docs/1.1/options","label":"Options","docId":"options","unlisted":false},{"type":"link","href":"/docs/1.1/methods","label":"Methods","docId":"methods","unlisted":false}]},"docs":{"examples":{"id":"examples","title":"Examples","description":"Live bootstrap-select examples hosted by the Docusaurus docs site.","sidebar":"docs"},"index":{"id":"index","title":"Getting Started","description":"Install and use the CrestApps bootstrap-select fork with Bootstrap 5+.","sidebar":"docs"},"methods":{"id":"methods","title":"Methods","description":"bootstrap-select instance and static methods.","sidebar":"docs"},"options":{"id":"options","title":"Options","description":"bootstrap-select options, events, and sanitizer settings.","sidebar":"docs"}}}}')}}]); \ No newline at end of file diff --git a/docs/assets/js/32db8e2e.c0e09e7f.js b/docs/assets/js/32db8e2e.c0e09e7f.js new file mode 100644 index 00000000..88b97c03 --- /dev/null +++ b/docs/assets/js/32db8e2e.c0e09e7f.js @@ -0,0 +1,373 @@ +"use strict";(self.webpackChunk_crestapps_bootstrap_select=self.webpackChunk_crestapps_bootstrap_select||[]).push([[12],{7458(e,t,o){o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>i,metadata:()=>d,toc:()=>l});const d=JSON.parse('{"id":"options","title":"Options","description":"bootstrap-select options, events, and sanitizer settings.","source":"@site/versioned_docs/version-1.1/options.mdx","sourceDirName":".","slug":"/options","permalink":"/docs/1.1/options","draft":false,"unlisted":false,"editUrl":"https://github.com/CrestApps/crestapps-bootstrap-select/tree/main/docs/versioned_docs/version-1.1/options.mdx","tags":[],"version":"1.1","sidebarPosition":3,"frontMatter":{"sidebar_position":3,"title":"Options","description":"bootstrap-select options, events, and sanitizer settings."},"sidebar":"docs","previous":{"title":"Examples","permalink":"/docs/1.1/examples"},"next":{"title":"Methods","permalink":"/docs/1.1/methods"}}');var n=o(4848),s=o(8453),a=o(9069);const i={sidebar_position:3,title:"Options",description:"bootstrap-select options, events, and sanitizer settings."},r="Core options",c={},l=[{value:"Tags-style live search and open options",id:"tags-style-live-search-and-open-options",level:2},{value:"Sanitizer",id:"sanitizer",level:2}];function h(e){const t={admonition:"admonition",code:"code",h1:"h1",h2:"h2",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.admonition,{title:"CrestApps fork",type:"info",children:(0,n.jsxs)(t.p,{children:["The options and data attributes documented on this page are part of the current forward-only API. Initialize with ",(0,n.jsx)(t.code,{children:"new Selectpicker('#sel', options)"})," or add the ",(0,n.jsx)(t.code,{children:"selectpicker"})," class for automatic initialization. Global defaults are set with ",(0,n.jsx)(t.code,{children:"Selectpicker.setDefaults({ ... })"}),"."]})}),"\n",(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"core-options",children:"Core options"})}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsxs)(t.p,{children:["Options can be passed via data attributes or JavaScript. For data attributes, append the option name to ",(0,n.jsx)(t.code,{children:"data-"}),", as in\n",(0,n.jsx)(t.code,{children:'data-style=""'})," or ",(0,n.jsx)(t.code,{children:'data-selected-text-format="count"'}),"."]}),"\n",(0,n.jsx)(t.admonition,{title:"Data attributes",type:"warning",children:(0,n.jsxs)(t.p,{children:["For security reasons, the ",(0,n.jsx)(t.code,{children:"sanitize"}),", ",(0,n.jsx)(t.code,{children:"sanitizeFn"}),", and ",(0,n.jsx)(t.code,{children:"whiteList"})," options cannot be supplied using data attributes."]})}),"\n",(0,n.jsx)(a.A,{html:String.raw` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDescription
actionsBoxbooleanfalse +

When set to true, adds two buttons to the top of the dropdown menu (Select All & Deselect All).

+
countSelectedTextstring | functionfunction +

Sets the format for the text displayed when selectedTextFormat is count or count > #. {0} is the selected amount. {1} is total available for selection.

+

When set to a function, the first parameter is the number of selected options, and the second is the total number of + options. The function must return a string.

+
deselectAllTextstring'Deselect All' +

The text on the button that deselects all options when actionsBox is enabled.

+
dropdownAlignRightboolean | 'auto'false +

Align the menu to the right instead of the left. If set to 'auto', the menu will automatically align right if there isn't room for the menu's full width when aligned to the left.

+
dropupAutobooleantrue +

checks to see which has more room, above or below. If the dropup has enough room to fully open normally, but + there is more room above, the dropup still opens normally. Otherwise, it becomes a dropup. If dropupAuto is + set to false, dropups must be called manually.

+
headerstringfalse +

adds a header to the top of the menu; includes a close button by default

+
hideDisabledbooleanfalse +

removes disabled options and optgroups from the menu data-hide-disabled: true

+
iconBasestring'' +

Set the base class for an icon font such as Font Awesome. If changing iconBase, you might also want to change tickIcon, in case the icon font uses a different naming scheme.

+
liveSearchbooleanfalse +

When set to true, adds a search box to the top of the selectpicker dropdown.

+
liveSearchNormalizebooleanfalse +

Setting liveSearchNormalize to true allows for accent-insensitive searching.

+
liveSearchPlaceholderstringnull +

When set to a string, a placeholder attribute equal to the string will be added to the liveSearch input.

+
liveSearchStylestring | function'contains' +

When set to 'contains', searching will reveal options that contain the searched text. For example, searching for pl with return both Apple, Plum, and Plantain. When set to 'startsWith', searching for pl will return only Plum and Plantain. If a function is used, the arguments are the option string and the searched text and it must return true if the option matches or false.

+
openOptionsbooleanfalse +

When set to true, the live-search UI shows a Create action whenever the current search text does not exactly match an existing option.

+

If options.source.create(callback, searchValue) is supplied, it will be used to resolve the created option. Otherwise the control creates a local option using the search text for both text and value.

+
openOptionsTextstring'Create "{0}"' +

Sets the label for the open-option create action. {0} is replaced with the current search text.

+
maxOptionsinteger | falsefalse +

When set to an integer and in a multi-select, the number of selected options cannot exceed the given value.

+

This option can also exist as a data-attribute for an <optgroup>, in which case it only applies to that <optgroup>.

+
maxOptionsTextstring | array | functionfunction +

The text that is displayed when maxOptions is enabled and the maximum number of options for the given scenario have been selected.

+

If a function is used, it must return an array. array[0] is the text used when maxOptions is applied to the entire select element. array[1] is the text used when maxOptions is used on an optgroup. If a string is used, the same text is used for both the element and the optgroup.

+
multipleSeparatorstring', ' +

Set the character displayed in the button that separates selected options.

+
noneSelectedTextstring'Nothing selected' +

The text that is displayed when a multiple select has no selected options.

+
noneResultsTextstring'No results matched {0}' +

The text displayed when a search doesn't return any results.

+
selectAllTextstring'Select All' +

The text on the button that selects all options when actionsBox is enabled.

+
selectedTextFormat'values' | 'static' | 'count' | 'count > x' (where x is an integer)'values' +

Specifies how the selection is displayed with a multiple select.

+

+ 'values' displays a list of the selected options (separated by multipleSeparator). +
+ 'static' displays the configured placeholder text. +
+ 'count > x' behaves like 'values' until the number of selected options is greater than x; after that, it displays the total number of selected options. +
+ 'count' is an alias for 'count > 1'. +

+
selectOnTabbooleanfalse +

When set to true, treats the tab character like the enter or space characters within the selectpicker dropdown.

+
showContentbooleantrue +

When set to true, display custom HTML associated with selected option(s) in the button. When set to false, the option value will be displayed instead.

+
showIconbooleantrue +

When set to true, display icon(s) associated with selected option(s) in the button.

+
showSubtextbooleanfalse +

When set to true, display subtext associated with a selected option in the button.

+
showSelectedTagsbooleanfalse +

For live-search selects, shows the current selections as removable tags that stay visible on the control, similar to a taxonomy tags editor. The button uses a compact summary instead of repeating the selected values.

+
showTickbooleanfalse +

Show checkmark on selected option (for items without multiple attribute).

+
selectedItemsStyle'tags' | 'list''tags' +

Controls how removable selected items are rendered when showSelectedTags is enabled. Use 'list' to render them as a Bootstrap list group with a remove button aligned to the right.

+
selectedTagRemoveLabelstring'Remove' +

Accessible label prefix used for each removable selected item when showSelectedTags is enabled.

+
selectionIndicator'checkmark' | 'checkbox''checkmark' +

Controls how selected items are indicated in the dropdown. Use 'checkbox' to render a Bootstrap-style checkbox column instead of the default floating checkmark.

+
size'auto' | integer | false'auto' +

When set to 'auto', the menu always opens up to show as many items as the window will allow + without being cut off.

+

When set to an integer, the menu will show the given number of items, even if the dropdown is cut off.

+

When set to false, the menu will always show all items.

+
stylestring | null + 'btn-light' + +

When set to a string, add the value to the button's style.

+
tickIconstring'bs-ok-default' +

Set which icon to use to display as the "tick" next to selected options.

+
virtualScrollboolean | integer600 +

If enabled, the items in the dropdown will be rendered using virtualization (i.e. only the items that are within the viewport will be rendered). This drastically improves performance for selects with a large number of options. Set to an integer to only use virtualization if the select has at least that number of options.

+
sanitizebooleantrue +

Enable or disable the sanitization. If activated, 'data-content' on individual options will be sanitized.

+
whiteListobjectDefault value +

Object which contains allowed attributes and tags

+
sanitizeFnnull | functionnull +

Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization.

+
`}),"\n",(0,n.jsx)(t.admonition,{title:"Bootstrap 5 runtime defaults",type:"info",children:(0,n.jsxs)(t.p,{children:["This Bootstrap 5 build no longer supports the legacy ",(0,n.jsx)(t.code,{children:"container"}),", ",(0,n.jsx)(t.code,{children:"mobile"}),", ",(0,n.jsx)(t.code,{children:"styleBase"}),", ",(0,n.jsx)(t.code,{children:"width"}),", or ",(0,n.jsx)(t.code,{children:"windowPadding"})," options. Layout should follow normal Bootstrap sizing and grid utilities, and the picker now fills its container by default."]})}),"\n",(0,n.jsx)(t.h2,{id:"tags-style-live-search-and-open-options",children:"Tags-style live search and open options"}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.code,{children:"showSelectedTags"})," and ",(0,n.jsx)(t.code,{children:"openOptions"})," settings are intended for taxonomy-style editors where authors need to keep selected values visible while continuing to search."]}),"\n",(0,n.jsx)(t.p,{children:"When both are enabled on a multiple select:"}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsx)(t.li,{children:"Selected values stay visible as removable tags on the control while the search UI stays available."}),"\n",(0,n.jsx)(t.li,{children:"Typing a value that does not exactly match an existing option shows a create action."}),"\n",(0,n.jsx)(t.li,{children:"Choosing that action creates and selects the option immediately."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"Use data attributes when local in-browser creation is enough:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-html",children:'\n \n \n \n\n'})}),"\n",(0,n.jsx)(t.p,{children:"Use JavaScript when the picker is backed by a remote source and new terms must be saved first:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:"new Selectpicker('#tag-editor', {\n liveSearch: true,\n showSelectedTags: true,\n openOptions: true,\n openOptionsText: 'Create tag \"{0}\"',\n selectedTagRemoveLabel: 'Remove tag',\n selectionIndicator: 'checkbox',\n source: {\n data: function (callback) {\n callback(existingTags);\n },\n search: function (callback, page, searchValue) {\n callback(findMatchingTags(searchValue));\n },\n create: function (callback, searchValue) {\n createTag(searchValue).then(function (tag) {\n callback({\n text: tag.displayText,\n value: tag.id\n });\n });\n }\n }\n});\n"})}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.code,{children:"source.create"})," can return the created option synchronously, invoke the provided callback later, or resolve a Promise. In each case, the picker adds the returned option and selects it automatically."]}),"\n",(0,n.jsx)(t.h1,{id:"default-settings",children:"Default settings"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsxs)(t.p,{children:["You can change the default settings for bootstrap-select by modifying its ",(0,n.jsx)(t.code,{children:"DEFAULTS"})," object (or by calling ",(0,n.jsx)(t.code,{children:"Selectpicker.setDefaults({ \u2026 })"}),"):"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:"Selectpicker.DEFAULTS.multipleSeparator = ' | ';\n"})}),"\n",(0,n.jsx)(t.h1,{id:"events",children:"Events"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsx)(t.p,{children:"Bootstrap-select exposes a few events for hooking into select functionality."}),"\n",(0,n.jsxs)(t.p,{children:["hide.bs.select, hidden.bs.select, show.bs.select, and shown.bs.select all have a ",(0,n.jsx)(t.code,{children:"relatedTarget"})," property, whose value is the toggling anchor element."]}),"\n",(0,n.jsx)(a.A,{html:String.raw` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Event TypeDescription
show.bs.selectThis event fires immediately when the show instance method is called.
shown.bs.selectThis event is fired when the dropdown has been made visible to the user (will wait for CSS transitions, to complete).
hide.bs.selectThis event is fired immediately when the hide instance method has been called.
hidden.bs.selectThis event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete).
loaded.bs.selectThis event fires after the select has been initialized.
rendered.bs.selectThis event fires after the render instance has been called.
refreshed.bs.selectThis event fires after the refresh instance has been called.
changed.bs.select +

This event fires after the select's value has been changed. The detail object passes clickedIndex, isSelected, and previousValue via event.detail.

+

previousValue is the value of the select prior to being changed. If the select's value has been changed either via the val(), selectAll(), or deselectAll() methods, clickedIndex and isSelected will be null.

+
`}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:"document.querySelector('#mySelect').addEventListener('changed.bs.select', function (e) {\n const { clickedIndex, isSelected, previousValue } = e.detail;\n // do something...\n});\n"})}),"\n",(0,n.jsx)(t.h2,{id:"sanitizer",children:"Sanitizer"}),"\n",(0,n.jsx)(t.hr,{}),"\n",(0,n.jsxs)(t.p,{children:["HTML added via the ",(0,n.jsx)(t.code,{children:"data-content"})," attribute on individual options is sanitized using our built-in sanitizer."]}),"\n",(0,n.jsxs)(t.p,{children:["The default ",(0,n.jsx)(t.code,{children:"whiteList"})," value is the following:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:"var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nvar DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', 'tabindex', 'style', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n"})}),"\n",(0,n.jsxs)(t.p,{children:["If you want to add new values to this default ",(0,n.jsx)(t.code,{children:"whiteList"})," you can do the following:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:"var myDefaultWhiteList = Selectpicker.DEFAULTS.whiteList;\n\n// To allow table elements\nmyDefaultWhiteList.table = [];\n\n// To allow td elements and data-option attributes on td elements\nmyDefaultWhiteList.td = ['data-option'];\n\n// You can push your custom regex to validate your attributes.\n// Be careful about your regular expressions being too lax\nvar myCustomRegex = /^data-my-app-[\\w-]+/;\nmyDefaultWhiteList['*'].push(myCustomRegex);\n"})}),"\n",(0,n.jsx)(t.p,{children:"If you want to bypass our sanitizer because you prefer to use a dedicated library, you should do the following:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:"new Selectpicker('#yourSelect', {\n sanitizeFn: function (domNodes) {\n return DOMPurify.sanitize(domNodes)\n }\n});\n"})}),"\n",(0,n.jsxs)(t.p,{children:["For performance reasons, our built-in sanitizer accepts an array of DOM nodes as its first argument, rather than an HTML string. Keep that in mind if deciding to use your own ",(0,n.jsx)(t.code,{children:"sanitizeFn"}),"."]})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},9069(e,t,o){o.d(t,{A:()=>n});o(6540);var d=o(4848);function n(e){let t=e.html;return(0,d.jsx)("div",{dangerouslySetInnerHTML:{__html:t}})}},8453(e,t,o){o.d(t,{R:()=>a,x:()=>i});var d=o(6540);const n={},s=d.createContext(n);function a(e){const t=d.useContext(s);return d.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),d.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/docs/assets/js/33fbf8ba.316d1e2c.js b/docs/assets/js/33fbf8ba.316d1e2c.js new file mode 100644 index 00000000..b0ee1d46 --- /dev/null +++ b/docs/assets/js/33fbf8ba.316d1e2c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_crestapps_bootstrap_select=self.webpackChunk_crestapps_bootstrap_select||[]).push([[488],{7515(e,t,s){s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>o,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"index","title":"Getting Started","description":"Install and use the CrestApps bootstrap-select fork with Bootstrap 5+.","source":"@site/versioned_docs/version-1.1/index.md","sourceDirName":".","slug":"/","permalink":"/docs/1.1/","draft":false,"unlisted":false,"editUrl":"https://github.com/CrestApps/crestapps-bootstrap-select/tree/main/docs/versioned_docs/version-1.1/index.md","tags":[],"version":"1.1","sidebarPosition":1,"frontMatter":{"sidebar_position":1,"title":"Getting Started","description":"Install and use the CrestApps bootstrap-select fork with Bootstrap 5+."},"sidebar":"docs","next":{"title":"Examples","permalink":"/docs/1.1/examples"}}');var r=s(4848),i=s(8453);const o={sidebar_position:1,title:"Getting Started",description:"Install and use the CrestApps bootstrap-select fork with Bootstrap 5+."},c="Getting Started",a={},l=[{value:"Quick start",id:"quick-start",level:2},{value:"Using the CDN build",id:"using-the-cdn-build",level:2},{value:"Via selectpicker class",id:"via-selectpicker-class",level:3},{value:"Via JavaScript",id:"via-javascript",level:3},{value:"Tags-style editor pattern",id:"tags-style-editor-pattern",level:2}];function p(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",p:"p",pre:"pre",strong:"strong",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"getting-started",children:"Getting Started"})}),"\n",(0,r.jsx)(t.admonition,{title:"CrestApps fork",type:"info",children:(0,r.jsxs)(t.p,{children:["This is the CrestApps fork of ",(0,r.jsx)(t.a,{href:"https://github.com/snapappointments/bootstrap-select",children:"snapappointments/bootstrap-select"}),". It removes the jQuery dependency entirely, uses plain vanilla JavaScript, and supports Bootstrap 5+ only. Older Bootstrap and jQuery compatibility paths are intentionally out of scope so the library can stay small and forward-focused."]})}),"\n",(0,r.jsx)(t.h2,{id:"quick-start",children:"Quick start"}),"\n",(0,r.jsxs)(t.p,{children:["bootstrap-select requires ",(0,r.jsx)(t.strong,{children:"Bootstrap 5+"})," (CSS and JS, including its bundled Popper).\njQuery is ",(0,r.jsx)(t.strong,{children:"not"})," required."]}),"\n",(0,r.jsxs)(t.p,{children:["Install with ",(0,r.jsx)(t.a,{href:"https://www.npmjs.com/package/@crestapps/bootstrap-select",children:"npm"}),":"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-sh",children:"npm install @crestapps/bootstrap-select bootstrap\n"})}),"\n",(0,r.jsx)(t.p,{children:"Load Bootstrap 5 first, then bootstrap-select's CSS and JS (after Bootstrap's JavaScript):"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-html",children:'\x3c!-- Bootstrap 5 (includes Popper) --\x3e\n\n - - + + ``` -You can replace `@1.1.0` with the version you want to consume. During development, +You can replace `@1.1.1` with the version you want to consume. During development, `@latest` also works, but a fixed version is safer for production deployments. When loaded via a ` + + + + + + + + + + + + +
Version: 1.0

Basic examples

+
CrestApps fork

The examples use the vanilla JavaScript / Bootstrap 5+ API: new Selectpicker(el) or the selectpicker class, which auto-initializes. jQuery is not required.

+

Standalone basic

Open the local plugin build on a plain HTML page.

Open basic example

Live search

Test search filtering against hosted example markup.

Open live search

Multiple select

Verify multiselect and action-box behavior.

Open multiselect
+

Standard select boxes

+
+
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+ +

Select boxes with optgroups

+
+
<select class="selectpicker">
<optgroup label="Picnic">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Camping">
<option>Tent</option>
<option>Flashlight</option>
<option>Toilet Paper</option>
</optgroup>
</select>
+

Multiple select boxes

+
+
<select class="selectpicker" multiple>
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Live search

+
+

Live search

+

You can add a search input by passing data-live-search="true" attribute:

+
+

Key words

+

Add key words to options to improve their searchability using data-tokens.

+
+
<select class="selectpicker" data-live-search="true">
<option data-tokens="ketchup mustard">Hot Dog, Fries and a Soda</option>
<option data-tokens="mustard">Burger, Shake and a Smile</option>
<option data-tokens="frosting">Sugar, Spice and all things nice</option>
</select>
+

Limit the number of selections

+

Limit the number of options that can be selected via the data-max-options attribute. It also works for option groups. Customize the message displayed when the limit is reached with maxOptionsText.

+
+
<select class="selectpicker" multiple data-max-options="2">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>

<select class="selectpicker" multiple>
<optgroup label="Condiments" data-max-options="2">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Breads" data-max-options="2">
<option>Plain</option>
<option>Steamed</option>
<option>Toasted</option>
</optgroup>
</select>
+

Custom button text

+
+

Placeholder

+

+

Use the placeholder attribute to set the default placeholder text when nothing is selected. This works for both multiple and standard select boxes:

+
+
<select class="selectpicker" multiple placeholder="Choose one of the following...">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Selected text

+

+

Set the title attribute on individual options to display alternative text when the option is selected:

+
+
<select class="selectpicker">
<option title="Combo 1">Hot Dog, Fries and a Soda</option>
<option title="Combo 2">Burger, Shake and a Smile</option>
<option title="Combo 3">Sugar, Spice and all things nice</option>
</select>
+

Selected text format

+

+

Specify how the selection is displayed with the data-selected-text-format attribute on a multiple select.

+

The supported values are:

+
    +
  • values: A comma delimited list of selected values (default)
  • +
  • count: If one item is selected, then the option value is shown. If more than one is selected then the number of selected items is displayed, e.g. 2 of 6 selected
  • +
  • count > x: Where x is the number of items selected when the display format changes from values to count
  • +
  • static: Always show the placeholder, regardless of selection
  • +
+
+
<select class="selectpicker" multiple data-selected-text-format="count">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+
+
<select class="selectpicker" multiple data-selected-text-format="count > 3">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
<option>Onions</option>
</select>
+

Styling

+
+

Button classes

+

You can set the button classes via the data-style attribute:

+
+
<select class="selectpicker" data-style="btn-primary">
...
</select>

<select class="selectpicker" data-style="btn-info">
...
</select>

<select class="selectpicker" data-style="btn-success">
...
</select>

<select class="selectpicker" data-style="btn-warning">
...
</select>

<select class="selectpicker" data-style="btn-danger">
...
</select>
+

Checkmark on selected option

+

You can also show the checkmark icon on standard select boxes with the show-tick class:

+
+
<select class="selectpicker show-tick">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+ +

The Bootstrap menu arrow can be added with the show-menu-arrow class:

+
+
<select class="selectpicker show-menu-arrow">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Style individual options

+

+

Classes and styles added to options are transferred to the select box:

+
+
<select class="selectpicker">
<option>Mustard</option>
<option class="special">Ketchup</option>
<option style="background: #5cb85c; color: #fff;">Relish</option>
</select>
+
.special {
font-weight: bold !important;
color: #fff !important;
background: #bc0000 !important;
text-transform: uppercase;
}
+

Width

+

+

Wrap selects in grid columns, or any custom parent element, to easily enforce desired widths.

+
+
<div class="row">
<div class="col-sm-3">
<div class="form-group">
<select class="selectpicker form-control">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
</div>
</div>
+
+

Alternatively, use the data-width attribute to set the width of the select. Set data-width to 'auto' to automatically adjust the width of the select to its widest option. 'fit' automatically adjusts the width of the select to the width of its currently selected option. An exact value can also be specified, e.g., 300px or 50%.

+
+
<select class="selectpicker" data-width="auto">
...
</select>
<select class="selectpicker" data-width="fit">
...
</select>
<select class="selectpicker" data-width="100px">
...
</select>
<select class="selectpicker" data-width="75%">
...
</select>
+

Customize options

+
+

Icons

+

Add an icon to an option or optgroup with the data-icon attribute:

+
Bootstrap 5 icons

Bootstrap 5 does not include an icon font. To use Font Awesome or another icon library, set iconBase and tickIcon to match that library.

+
+
<select class="selectpicker">
<option data-icon="fa-heart">Ketchup</option>
</select>
+

Custom content

+

Insert custom HTML into the option with the data-content attribute:

+
Custom content is sanitized

This feature inserts HTML into the DOM. By default, it is sanitized using our built-in sanitizer.

+
+
<select class="selectpicker">
<option data-content="<span class='badge text-bg-success'>Relish</span>">Relish</option>
</select>
+

Subtext

+

Add subtext to an option or optgroup with the data-subtext attribute:

+
+
<select class="selectpicker" data-size="5">
<option data-subtext="Heinz">Ketchup</option>
</select>
+

Customize menu

+
+ +

The size option is set to 'auto' by default. When size is set to 'auto', the menu always opens up to show as many items as the window will allow without being cut off. Set size to false to always show all items. The size of the menu can also be specifed using the data-size attribute.

+
+

+

Specify a number for data-size to choose the maximum number of items to show in the menu.

+
+
<select class="selectpicker" data-size="5">
...
</select>
+

Select/deselect all options

+

Adds two buttons to the top of the menu - Select All & Deselect All with data-actions-box="true".

+
+
<select class="selectpicker" multiple data-actions-box="true">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Divider

+

Add data-divider="true" to an option to turn it into a divider.

+
+
<select class="selectpicker" data-size="5">
<option data-divider="true"></option>
</select>
+ +

Add a header to the dropdown menu, e.g. header: 'Select a condiment' or data-header="Select a condiment"

+
+
<select class="selectpicker" data-header="Select a condiment">
...
</select>
+

Container

+

Append the select menu to a specific element, e.g. container: 'body' or data-container=".main-content". This is useful if the select element is inside an element with overflow: hidden.

+
+
<div style="overflow:hidden;">
<select class="selectpicker">
...
</select>
<select class="selectpicker" data-container="body">
...
</select>
</div>
+

Dropup menu

+

dropupAuto is set to true by default, which automatically determines whether or not the menu should display above or below the select box. If dropupAuto is set to false, manually make the select a dropup menu by adding the .dropup class to the select.

+
+
<select class="selectpicker dropup" data-dropup-auto="false">
...
</select>
+

Disabled

+
+

Disabled select box

+
+
<select class="selectpicker" disabled>
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Disabled options

+
+
<select class="selectpicker">
<option>Mustard</option>
<option disabled>Ketchup</option>
<option>Relish</option>
</select>
+

Disabled option groups

+
+
<select class="selectpicker test">
<optgroup label="Picnic" disabled>
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Camping">
<option>Tent</option>
<option>Flashlight</option>
<option>Toilet Paper</option>
</optgroup>
</select>
+ + \ No newline at end of file diff --git a/docs/docs/1.0/index.html b/docs/docs/1.0/index.html new file mode 100644 index 00000000..0ff47dea --- /dev/null +++ b/docs/docs/1.0/index.html @@ -0,0 +1,52 @@ + + + + + +Getting Started | bootstrap-select + + + + + + + + + + + + +
Version: 1.0

Getting Started

+
CrestApps fork

This is the CrestApps fork of snapappointments/bootstrap-select. It removes the jQuery dependency entirely, uses plain vanilla JavaScript, and supports Bootstrap 5+ only. Older Bootstrap and jQuery compatibility paths are intentionally out of scope so the library can stay small and forward-focused.

+

Quick start

+

bootstrap-select requires Bootstrap 5+ (CSS and JS, including its bundled Popper). +jQuery is not required.

+

Install with npm:

+
npm install crestapps-bootstrap-select bootstrap
+

Load Bootstrap 5 first, then bootstrap-select's CSS and JS (after Bootstrap's JavaScript):

+
<!-- Bootstrap 5 (includes Popper) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>

<!-- bootstrap-select -->
<link rel="stylesheet" href="dist/css/bootstrap-select.min.css">
<script src="dist/js/bootstrap-select.min.js"></script>

<!-- (Optional) translation files -->
<script src="dist/js/i18n/defaults-*.min.js"></script>
+

Using the CDN build

+

After the package is published to npm, it will also be available through jsDelivr. +Prefer pinning an explicit package version in production:

+
<!-- Bootstrap 5 (includes Popper) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"></script>

<!-- crestapps-bootstrap-select from jsDelivr -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/crestapps-bootstrap-select@1.0.0/dist/css/bootstrap-select.min.css">
<script src="https://cdn.jsdelivr.net/npm/crestapps-bootstrap-select@1.0.0/dist/js/bootstrap-select.min.js"></script>
+

You can replace @1.0.0 with the version you want to consume. During development, +@latest also works, but a fixed version is safer for production deployments.

+

When loaded via a <script> tag, the plugin exposes a global Selectpicker class. +Modern JavaScript can import the ES module entry:

+
import Selectpicker from 'crestapps-bootstrap-select';
+

Usage

+
+

Via selectpicker class

+

Add the selectpicker class to your select elements to auto-initialize bootstrap-select +once the DOM is ready.

+
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Barbecue</option>
</select>
+

Via JavaScript

+
// Initialize one select (accepts an element or a selector string)
new Selectpicker('#my-select', { liveSearch: true });
+

or

+
// Initialize several selects
document.querySelectorAll('.my-select').forEach(function (el) {
new Selectpicker(el);
});
+

If calling bootstrap-select via JavaScript, run your code after the elements exist — +either place the script at the bottom of the page (after the last <select>) or wrap +it in a DOMContentLoaded listener:

+
document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('select').forEach(function (el) {
new Selectpicker(el);
});
});
+ + \ No newline at end of file diff --git a/docs/docs/1.0/methods/index.html b/docs/docs/1.0/methods/index.html new file mode 100644 index 00000000..8e9b05dd --- /dev/null +++ b/docs/docs/1.0/methods/index.html @@ -0,0 +1,99 @@ + + + + + +Methods | bootstrap-select + + + + + + + + + + + + +
Version: 1.0

Methods

+

Interface with bootstrap-select.

+

In this fork, methods are called directly on the Selectpicker instance (there +is no jQuery $.fn.selectpicker). Obtain an instance with +Selectpicker.getInstance(elementOrSelector) (returns the existing instance) or +Selectpicker.getOrCreateInstance(elementOrSelector, options).

+
const picker = Selectpicker.getInstance('#my-select');
+
+

.val()

+

You can set the selected value by calling the val method on the instance.

+
Selectpicker.getInstance('#my-select').val('Mustard');
Selectpicker.getInstance('#my-select').val(['Mustard', 'Relish']);
+

This is different to setting value directly on the select element. If you set +value on the element directly, the bootstrap-select UI will not refresh (as the +change event only fires from user interaction). You will have to call the UI +render method yourself.

+
const select = document.querySelector('#my-select');
select.value = 'Mustard';
Selectpicker.getInstance(select).render();

// this is the equivalent of the above
Selectpicker.getInstance(select).val('Mustard');
+

Called with no argument, val() returns the current value (a string for single +selects, or an array of strings for multiple selects).

+
+

.selectAll()

+

This will select all items in a multi-select.

+
Selectpicker.getInstance('#my-select').selectAll();
+
+

.deselectAll()

+

This will deselect all items in a multi-select.

+
Selectpicker.getInstance('#my-select').deselectAll();
+
+

.render()

+

You can force a re-render of the bootstrap-select UI with the render method. +This is useful if you programmatically change any underlying values that affect +the layout of the element.

+
Selectpicker.getInstance('#my-select').render();
+
+

.mobile()

+

Enable mobile scrolling by calling mobile(). This enables the device's native +menu for select menus.

+

The method for detecting the browser is left up to the user.

+
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {
Selectpicker.getInstance('#my-select').mobile();
}
+
+

.setStyle()

+

Modify the class(es) associated with either the button itself or its container.

+

If changing the class on the container:

+
const select = document.querySelector('#my-select');
select.closest('.bootstrap-select').classList.add('col-lg-12');
Selectpicker.getInstance(select).setStyle();
+

If changing the class(es) on the button (altering data-style):

+
const picker = Selectpicker.getInstance('#my-select');

// Replace class
picker.setStyle('btn-danger');

// Add class
picker.setStyle('btn-lg', 'add');

// Remove class
picker.setStyle('btn-lg', 'remove');
+
+

.refresh()

+

To programmatically update a select with JavaScript, first manipulate the select, +then use the refresh method to update the UI to match the new state. This is +necessary when removing or adding options, or when disabling/enabling a select +via JavaScript.

+
Selectpicker.getInstance('#my-select').refresh();
+

For example, to remove an option then refresh:

+
document.querySelector('.rm-mustard').addEventListener('click', function () {
const select = document.querySelector('.remove-example');
const option = select.querySelector('[value="Mustard"]');
if (option) option.remove();
Selectpicker.getInstance(select).refresh();
});
+

Or to disable/enable a select:

+
const select = document.querySelector('.disable-example');

document.querySelector('.ex-disable').addEventListener('click', function () {
select.disabled = true;
Selectpicker.getInstance(select).refresh();
});

document.querySelector('.ex-enable').addEventListener('click', function () {
select.disabled = false;
Selectpicker.getInstance(select).refresh();
});
+
+

.toggle()

+

Programmatically toggles the bootstrap-select menu open/closed.

+
Selectpicker.getInstance('#my-select').toggle();
+

.open() and .close() are also available.

+
+

.hide()

+

To programmatically hide the bootstrap-select use the hide method (this only +affects the visibility of the bootstrap-select itself).

+
Selectpicker.getInstance('#my-select').hide();
+
+

.show()

+

To programmatically show the bootstrap-select use the show method (this only +affects the visibility of the bootstrap-select itself).

+
Selectpicker.getInstance('#my-select').show();
+
+

.destroy()

+

To programmatically destroy the bootstrap-select, use the destroy method. This +removes the generated UI and restores the original <select> element.

+
Selectpicker.getInstance('#my-select').destroy();
+
+

Static methods

+
MethodDescription
new Selectpicker(elementOrSelector, options)Create a new instance.
Selectpicker.getInstance(elementOrSelector)Return the existing instance for an element, or null.
Selectpicker.getOrCreateInstance(elementOrSelector, options)Return the existing instance, creating one if needed.
Selectpicker.setDefaults(options)Set global default options (used by the i18n translation files).
Selectpicker.VERSIONThe plugin version.
+ + \ No newline at end of file diff --git a/docs/docs/1.0/options/index.html b/docs/docs/1.0/options/index.html new file mode 100644 index 00000000..eb935b90 --- /dev/null +++ b/docs/docs/1.0/options/index.html @@ -0,0 +1,413 @@ + + + + + +Options | bootstrap-select + + + + + + + + + + + + +
Version: 1.0
CrestApps fork

The options and data attributes documented on this page are part of the current forward-only API. Initialize with new Selectpicker('#sel', options) or add the selectpicker class for automatic initialization. Global defaults are set with Selectpicker.setDefaults({ ... }).

+

Core options

+
+

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in +data-style="" or data-selected-text-format="count".

+
Data attributes

For security reasons, the sanitize, sanitizeFn, and whiteList options cannot be supplied using data attributes.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDescription
actionsBoxbooleanfalse +

When set to true, adds two buttons to the top of the dropdown menu (Select All & Deselect All).

+
containerstring | falsefalse +

When set to a string, appends the select to a specific element or selector, e.g., container: 'body' | '.main-body'

+
countSelectedTextstring | functionfunction +

Sets the format for the text displayed when selectedTextFormat is count or count > #. {0} is the selected amount. {1} is total available for selection.

+

When set to a function, the first parameter is the number of selected options, and the second is the total number of + options. The function must return a string.

+
deselectAllTextstring'Deselect All' +

The text on the button that deselects all options when actionsBox is enabled.

+
dropdownAlignRightboolean | 'auto'false +

Align the menu to the right instead of the left. If set to 'auto', the menu will automatically align right if there isn't room for the menu's full width when aligned to the left.

+
dropupAutobooleantrue +

checks to see which has more room, above or below. If the dropup has enough room to fully open normally, but + there is more room above, the dropup still opens normally. Otherwise, it becomes a dropup. If dropupAuto is + set to false, dropups must be called manually.

+
headerstringfalse +

adds a header to the top of the menu; includes a close button by default

+
hideDisabledbooleanfalse +

removes disabled options and optgroups from the menu data-hide-disabled: true

+
iconBasestring'' +

Set the base class for an icon font such as Font Awesome. If changing iconBase, you might also want to change tickIcon, in case the icon font uses a different naming scheme.

+
liveSearchbooleanfalse +

When set to true, adds a search box to the top of the selectpicker dropdown.

+
liveSearchNormalizebooleanfalse +

Setting liveSearchNormalize to true allows for accent-insensitive searching.

+
liveSearchPlaceholderstringnull +

When set to a string, a placeholder attribute equal to the string will be added to the liveSearch input.

+
liveSearchStylestring | function'contains' +

When set to 'contains', searching will reveal options that contain the searched text. For example, searching for pl with return both Apple, Plum, and Plantain. When set to 'startsWith', searching for pl will return only Plum and Plantain. If a function is used, the arguments are the option string and the searched text and it must return true if the option matches or false.

+
maxOptionsinteger | falsefalse +

When set to an integer and in a multi-select, the number of selected options cannot exceed the given value.

+

This option can also exist as a data-attribute for an <optgroup>, in which case it only applies to that <optgroup>.

+
maxOptionsTextstring | array | functionfunction +

The text that is displayed when maxOptions is enabled and the maximum number of options for the given scenario have been selected.

+

If a function is used, it must return an array. array[0] is the text used when maxOptions is applied to the entire select element. array[1] is the text used when maxOptions is used on an optgroup. If a string is used, the same text is used for both the element and the optgroup.

+
mobilebooleanfalse +

When set to true, enables the device's native menu for select menus.

+
multipleSeparatorstring', ' +

Set the character displayed in the button that separates selected options.

+
noneSelectedTextstring'Nothing selected' +

The text that is displayed when a multiple select has no selected options.

+
noneResultsTextstring'No results matched {0}' +

The text displayed when a search doesn't return any results.

+
selectAllTextstring'Select All' +

The text on the button that selects all options when actionsBox is enabled.

+
selectedTextFormat'values' | 'static' | 'count' | 'count > x' (where x is an integer)'values' +

Specifies how the selection is displayed with a multiple select.

+

+ 'values' displays a list of the selected options (separated by multipleSeparator). +
+ 'static' displays the configured placeholder text. +
+ 'count > x' behaves like 'values' until the number of selected options is greater than x; after that, it displays the total number of selected options. +
+ 'count' is an alias for 'count > 1'. +

+
selectOnTabbooleanfalse +

When set to true, treats the tab character like the enter or space characters within the selectpicker dropdown.

+
showContentbooleantrue +

When set to true, display custom HTML associated with selected option(s) in the button. When set to false, the option value will be displayed instead.

+
showIconbooleantrue +

When set to true, display icon(s) associated with selected option(s) in the button.

+
showSubtextbooleanfalse +

When set to true, display subtext associated with a selected option in the button.

+
showTickbooleanfalse +

Show checkmark on selected option (for items without multiple attribute).

+
size'auto' | integer | false'auto' +

When set to 'auto', the menu always opens up to show as many items as the window will allow + without being cut off.

+

When set to an integer, the menu will show the given number of items, even if the dropdown is cut off.

+

When set to false, the menu will always show all items.

+
stylestring | null + 'btn-light' + +

When set to a string, add the value to the button's style.

+
styleBasestring | null'btn' +

The default class applied to the button. When using the setStyle method, this class will always remain.

+

Hint: If you want to style the element as a form control, set style to '' and styleBase to 'form-control'.

+
tickIconstring'bs-ok-default' +

Set which icon to use to display as the "tick" next to selected options.

+
virtualScrollboolean | integer600 +

If enabled, the items in the dropdown will be rendered using virtualization (i.e. only the items that are within the viewport will be rendered). This drastically improves performance for selects with a large number of options. Set to an integer to only use virtualization if the select has at least that number of options.

+
width'auto' | 'fit' | css-width | false (where css-width is a CSS width with units, e.g. 100px)false +

When set to auto, the width of the selectpicker is automatically adjusted to accommodate the widest option.

+

When set to a css-width, the width of the selectpicker is forced inline to the given value.

+

When set to false, all width information is removed.

+
windowPaddinginteger | array0 +

This is useful in cases where the window has areas that the dropdown menu should not cover - for instance a fixed header. When set to an integer, the same padding will be added to all sides. Alternatively, an array of integers can be used in the format [top, right, bottom, left].

+
sanitizebooleantrue +

Enable or disable the sanitization. If activated, 'data-content' on individual options will be sanitized.

+
whiteListobjectDefault value +

Object which contains allowed attributes and tags

+
sanitizeFnnull | functionnull +

Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization.

+
+

Default settings

+
+

You can change the default settings for bootstrap-select by modifying its DEFAULTS object (or by calling Selectpicker.setDefaults({ … })):

+
Selectpicker.DEFAULTS.multipleSeparator = ' | ';
+

Events

+
+

Bootstrap-select exposes a few events for hooking into select functionality.

+

hide.bs.select, hidden.bs.select, show.bs.select, and shown.bs.select all have a relatedTarget property, whose value is the toggling anchor element.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Event TypeDescription
show.bs.selectThis event fires immediately when the show instance method is called.
shown.bs.selectThis event is fired when the dropdown has been made visible to the user (will wait for CSS transitions, to complete).
hide.bs.selectThis event is fired immediately when the hide instance method has been called.
hidden.bs.selectThis event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete).
loaded.bs.selectThis event fires after the select has been initialized.
rendered.bs.selectThis event fires after the render instance has been called.
refreshed.bs.selectThis event fires after the refresh instance has been called.
changed.bs.select +

This event fires after the select's value has been changed. The detail object passes clickedIndex, isSelected, and previousValue via event.detail.

+

previousValue is the value of the select prior to being changed. If the select's value has been changed either via the val(), selectAll(), or deselectAll() methods, clickedIndex and isSelected will be null.

+
+
document.querySelector('#mySelect').addEventListener('changed.bs.select', function (e) {
const { clickedIndex, isSelected, previousValue } = e.detail;
// do something...
});
+

Sanitizer

+
+

HTML added via the data-content attribute on individual options is sanitized using our built-in sanitizer.

+

The default whiteList value is the following:

+
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
var DefaultWhitelist = {
// Global attributes allowed on any supplied element below.
'*': ['class', 'dir', 'id', 'lang', 'role', 'tabindex', 'style', ARIA_ATTRIBUTE_PATTERN],
a: ['target', 'href', 'title', 'rel'],
area: [],
b: [],
br: [],
col: [],
code: [],
div: [],
em: [],
hr: [],
h1: [],
h2: [],
h3: [],
h4: [],
h5: [],
h6: [],
i: [],
img: ['src', 'alt', 'title', 'width', 'height'],
li: [],
ol: [],
p: [],
pre: [],
s: [],
small: [],
span: [],
sub: [],
sup: [],
strong: [],
u: [],
ul: []
}
+

If you want to add new values to this default whiteList you can do the following:

+
var myDefaultWhiteList = Selectpicker.DEFAULTS.whiteList;

// To allow table elements
myDefaultWhiteList.table = [];

// To allow td elements and data-option attributes on td elements
myDefaultWhiteList.td = ['data-option'];

// You can push your custom regex to validate your attributes.
// Be careful about your regular expressions being too lax
var myCustomRegex = /^data-my-app-[\w-]+/;
myDefaultWhiteList['*'].push(myCustomRegex);
+

If you want to bypass our sanitizer because you prefer to use a dedicated library, you should do the following:

+
new Selectpicker('#yourSelect', {
sanitizeFn: function (domNodes) {
return DOMPurify.sanitize(domNodes)
}
});
+

For performance reasons, our built-in sanitizer accepts an array of DOM nodes as its first argument, rather than an HTML string. Keep that in mind if deciding to use your own sanitizeFn.

+ + \ No newline at end of file diff --git a/docs/docs/1.0/search-index.json b/docs/docs/1.0/search-index.json new file mode 100644 index 00000000..d563da1d --- /dev/null +++ b/docs/docs/1.0/search-index.json @@ -0,0 +1 @@ +[{"documents":[{"i":91,"t":"Getting Started","u":"/docs/1.0/","b":["Docs"]},{"i":102,"t":"Basic examples","u":"/docs/1.0/examples/","b":["Docs"]},{"i":168,"t":"Methods","u":"/docs/1.0/methods/","b":["Docs"]},{"i":172,"t":"Core options","u":"/docs/1.0/options/","b":["Docs"]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/91",[0,1.137,1,1.137]],["t/102",[2,1.137,3,1.137]],["t/168",[4,1.46]],["t/172",[5,1.137,6,1.137]]],"invertedIndex":[["basic",{"_index":2,"t":{"102":{"position":[[0,5]]}}}],["core",{"_index":5,"t":{"172":{"position":[[0,4]]}}}],["exampl",{"_index":3,"t":{"102":{"position":[[6,8]]}}}],["get",{"_index":0,"t":{"91":{"position":[[0,7]]}}}],["method",{"_index":4,"t":{"168":{"position":[[0,7]]}}}],["option",{"_index":6,"t":{"172":{"position":[[5,7]]}}}],["start",{"_index":1,"t":{"91":{"position":[[8,7]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":93,"t":"Quick start","u":"/docs/1.0/","h":"#quick-start","p":91},{"i":95,"t":"Using the CDN build","u":"/docs/1.0/","h":"#using-the-cdn-build","p":91},{"i":97,"t":"Usage","u":"/docs/1.0/","h":"","p":91},{"i":98,"t":"Via selectpicker class","u":"/docs/1.0/","h":"#via-selectpicker-class","p":91},{"i":100,"t":"Via JavaScript","u":"/docs/1.0/","h":"#via-javascript","p":91},{"i":104,"t":"Standalone basic","u":"/docs/1.0/examples/","h":"","p":102},{"i":106,"t":"Live search","u":"/docs/1.0/examples/","h":"","p":102},{"i":108,"t":"Multiple select","u":"/docs/1.0/examples/","h":"","p":102},{"i":110,"t":"Standard select boxes","u":"/docs/1.0/examples/","h":"#standard-select-boxes","p":102},{"i":112,"t":"Select boxes with optgroups","u":"/docs/1.0/examples/","h":"#select-boxes-with-optgroups","p":102},{"i":114,"t":"Multiple select boxes","u":"/docs/1.0/examples/","h":"#multiple-select-boxes","p":102},{"i":116,"t":"Live search","u":"/docs/1.0/examples/","h":"","p":102},{"i":117,"t":"Live search","u":"/docs/1.0/examples/","h":"#live-search-1","p":102},{"i":119,"t":"Key words","u":"/docs/1.0/examples/","h":"#key-words","p":102},{"i":121,"t":"Limit the number of selections","u":"/docs/1.0/examples/","h":"","p":102},{"i":123,"t":"Custom button text","u":"/docs/1.0/examples/","h":"","p":102},{"i":124,"t":"Placeholder","u":"/docs/1.0/examples/","h":"#placeholder","p":102},{"i":126,"t":"Selected text","u":"/docs/1.0/examples/","h":"#selected-text","p":102},{"i":128,"t":"Selected text format","u":"/docs/1.0/examples/","h":"#selected-text-format","p":102},{"i":130,"t":"Styling","u":"/docs/1.0/examples/","h":"","p":102},{"i":131,"t":"Button classes","u":"/docs/1.0/examples/","h":"#button-classes","p":102},{"i":133,"t":"Checkmark on selected option","u":"/docs/1.0/examples/","h":"#checkmark-on-selected-option","p":102},{"i":135,"t":"Menu arrow","u":"/docs/1.0/examples/","h":"#menu-arrow","p":102},{"i":137,"t":"Style individual options","u":"/docs/1.0/examples/","h":"#style-individual-options","p":102},{"i":139,"t":"Width","u":"/docs/1.0/examples/","h":"#width","p":102},{"i":141,"t":"Customize options","u":"/docs/1.0/examples/","h":"","p":102},{"i":142,"t":"Icons","u":"/docs/1.0/examples/","h":"#icons","p":102},{"i":144,"t":"Custom content","u":"/docs/1.0/examples/","h":"#custom-content","p":102},{"i":146,"t":"Subtext","u":"/docs/1.0/examples/","h":"#subtext","p":102},{"i":148,"t":"Customize menu","u":"/docs/1.0/examples/","h":"","p":102},{"i":149,"t":"Menu size","u":"/docs/1.0/examples/","h":"#menu-size","p":102},{"i":151,"t":"Select/deselect all options","u":"/docs/1.0/examples/","h":"#selectdeselect-all-options","p":102},{"i":153,"t":"Divider","u":"/docs/1.0/examples/","h":"#divider","p":102},{"i":155,"t":"Menu header","u":"/docs/1.0/examples/","h":"#menu-header","p":102},{"i":157,"t":"Container","u":"/docs/1.0/examples/","h":"#container","p":102},{"i":159,"t":"Dropup menu","u":"/docs/1.0/examples/","h":"#dropup-menu","p":102},{"i":161,"t":"Disabled","u":"/docs/1.0/examples/","h":"","p":102},{"i":162,"t":"Disabled select box","u":"/docs/1.0/examples/","h":"#disabled-select-box","p":102},{"i":164,"t":"Disabled options","u":"/docs/1.0/examples/","h":"#disabled-options","p":102},{"i":166,"t":"Disabled option groups","u":"/docs/1.0/examples/","h":"#disabled-option-groups","p":102},{"i":170,"t":"Static methods","u":"/docs/1.0/methods/","h":"#static-methods","p":168},{"i":174,"t":"Default settings","u":"/docs/1.0/options/","h":"","p":172},{"i":176,"t":"Events","u":"/docs/1.0/options/","h":"","p":172},{"i":178,"t":"Sanitizer","u":"/docs/1.0/options/","h":"#sanitizer","p":172}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/93",[0,3.417,1,3.417]],["t/95",[2,2.84,3,2.84,4,2.84]],["t/97",[5,4.288]],["t/98",[6,2.413,7,2.84,8,2.413]],["t/100",[6,2.904,9,3.417]],["t/104",[10,3.417,11,3.417]],["t/106",[12,2.566,13,2.566]],["t/108",[14,2.904,15,1.563]],["t/110",[15,1.299,16,2.84,17,1.923]],["t/112",[15,1.299,17,1.923,18,2.84]],["t/114",[14,2.413,15,1.299,17,1.923]],["t/116",[12,2.566,13,2.566]],["t/117",[12,2.566,13,2.566]],["t/119",[19,3.417,20,3.417]],["t/121",[15,1.299,21,2.84,22,2.84]],["t/123",[23,1.923,24,2.413,25,2.132]],["t/124",[26,4.288]],["t/126",[15,1.563,25,2.566]],["t/128",[15,1.299,25,2.132,27,2.84]],["t/130",[28,3.644]],["t/131",[8,2.904,24,2.904]],["t/133",[15,1.299,29,2.84,30,1.616]],["t/135",[31,2.112,32,3.417]],["t/137",[28,2.413,30,1.616,33,2.84]],["t/139",[34,4.288]],["t/141",[23,2.313,30,1.944]],["t/142",[35,4.288]],["t/144",[23,2.313,36,3.417]],["t/146",[37,4.288]],["t/148",[23,2.313,31,2.112]],["t/149",[31,2.112,38,3.417]],["t/151",[30,1.944,39,3.417]],["t/153",[40,4.288]],["t/155",[31,2.112,41,3.417]],["t/157",[42,4.288]],["t/159",[31,2.112,43,3.417]],["t/161",[44,2.903]],["t/162",[15,1.299,17,1.923,44,1.923]],["t/164",[30,1.944,44,2.313]],["t/166",[30,1.616,44,1.923,45,2.84]],["t/170",[46,3.417,47,3.417]],["t/174",[48,3.417,49,3.417]],["t/176",[50,4.288]],["t/178",[51,4.288]]],"invertedIndex":[["arrow",{"_index":32,"t":{"135":{"position":[[5,5]]}}}],["basic",{"_index":11,"t":{"104":{"position":[[11,5]]}}}],["box",{"_index":17,"t":{"110":{"position":[[16,5]]},"112":{"position":[[7,5]]},"114":{"position":[[16,5]]},"162":{"position":[[16,3]]}}}],["build",{"_index":4,"t":{"95":{"position":[[14,5]]}}}],["button",{"_index":24,"t":{"123":{"position":[[7,6]]},"131":{"position":[[0,6]]}}}],["cdn",{"_index":3,"t":{"95":{"position":[[10,3]]}}}],["checkmark",{"_index":29,"t":{"133":{"position":[[0,9]]}}}],["class",{"_index":8,"t":{"98":{"position":[[17,5]]},"131":{"position":[[7,7]]}}}],["contain",{"_index":42,"t":{"157":{"position":[[0,9]]}}}],["content",{"_index":36,"t":{"144":{"position":[[7,7]]}}}],["custom",{"_index":23,"t":{"123":{"position":[[0,6]]},"141":{"position":[[0,9]]},"144":{"position":[[0,6]]},"148":{"position":[[0,9]]}}}],["default",{"_index":48,"t":{"174":{"position":[[0,7]]}}}],["disabl",{"_index":44,"t":{"161":{"position":[[0,8]]},"162":{"position":[[0,8]]},"164":{"position":[[0,8]]},"166":{"position":[[0,8]]}}}],["divid",{"_index":40,"t":{"153":{"position":[[0,7]]}}}],["dropup",{"_index":43,"t":{"159":{"position":[[0,6]]}}}],["event",{"_index":50,"t":{"176":{"position":[[0,6]]}}}],["format",{"_index":27,"t":{"128":{"position":[[14,6]]}}}],["group",{"_index":45,"t":{"166":{"position":[[16,6]]}}}],["header",{"_index":41,"t":{"155":{"position":[[5,6]]}}}],["icon",{"_index":35,"t":{"142":{"position":[[0,5]]}}}],["individu",{"_index":33,"t":{"137":{"position":[[6,10]]}}}],["javascript",{"_index":9,"t":{"100":{"position":[[4,10]]}}}],["key",{"_index":19,"t":{"119":{"position":[[0,3]]}}}],["limit",{"_index":21,"t":{"121":{"position":[[0,5]]}}}],["live",{"_index":12,"t":{"106":{"position":[[0,4]]},"116":{"position":[[0,4]]},"117":{"position":[[0,4]]}}}],["menu",{"_index":31,"t":{"135":{"position":[[0,4]]},"148":{"position":[[10,4]]},"149":{"position":[[0,4]]},"155":{"position":[[0,4]]},"159":{"position":[[7,4]]}}}],["method",{"_index":47,"t":{"170":{"position":[[7,7]]}}}],["multipl",{"_index":14,"t":{"108":{"position":[[0,8]]},"114":{"position":[[0,8]]}}}],["number",{"_index":22,"t":{"121":{"position":[[10,6]]}}}],["optgroup",{"_index":18,"t":{"112":{"position":[[18,9]]}}}],["option",{"_index":30,"t":{"133":{"position":[[22,6]]},"137":{"position":[[17,7]]},"141":{"position":[[10,7]]},"151":{"position":[[20,7]]},"164":{"position":[[9,7]]},"166":{"position":[[9,6]]}}}],["placehold",{"_index":26,"t":{"124":{"position":[[0,11]]}}}],["quick",{"_index":0,"t":{"93":{"position":[[0,5]]}}}],["sanit",{"_index":51,"t":{"178":{"position":[[0,9]]}}}],["search",{"_index":13,"t":{"106":{"position":[[5,6]]},"116":{"position":[[5,6]]},"117":{"position":[[5,6]]}}}],["select",{"_index":15,"t":{"108":{"position":[[9,6]]},"110":{"position":[[9,6]]},"112":{"position":[[0,6]]},"114":{"position":[[9,6]]},"121":{"position":[[20,10]]},"126":{"position":[[0,8]]},"128":{"position":[[0,8]]},"133":{"position":[[13,8]]},"162":{"position":[[9,6]]}}}],["select/deselect",{"_index":39,"t":{"151":{"position":[[0,15]]}}}],["selectpick",{"_index":7,"t":{"98":{"position":[[4,12]]}}}],["set",{"_index":49,"t":{"174":{"position":[[8,8]]}}}],["size",{"_index":38,"t":{"149":{"position":[[5,4]]}}}],["standalon",{"_index":10,"t":{"104":{"position":[[0,10]]}}}],["standard",{"_index":16,"t":{"110":{"position":[[0,8]]}}}],["start",{"_index":1,"t":{"93":{"position":[[6,5]]}}}],["static",{"_index":46,"t":{"170":{"position":[[0,6]]}}}],["style",{"_index":28,"t":{"130":{"position":[[0,7]]},"137":{"position":[[0,5]]}}}],["subtext",{"_index":37,"t":{"146":{"position":[[0,7]]}}}],["text",{"_index":25,"t":{"123":{"position":[[14,4]]},"126":{"position":[[9,4]]},"128":{"position":[[9,4]]}}}],["us",{"_index":2,"t":{"95":{"position":[[0,5]]}}}],["usag",{"_index":5,"t":{"97":{"position":[[0,5]]}}}],["via",{"_index":6,"t":{"98":{"position":[[0,3]]},"100":{"position":[[0,3]]}}}],["width",{"_index":34,"t":{"139":{"position":[[0,5]]}}}],["word",{"_index":20,"t":{"119":{"position":[[4,5]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":91,"t":"Install and use the CrestApps bootstrap-select fork with Bootstrap 5+.","s":"Getting Started","u":"/docs/1.0/","p":91},{"i":102,"t":"Live bootstrap-select examples hosted by the Docusaurus docs site.","s":"Basic examples","u":"/docs/1.0/examples/","p":102},{"i":168,"t":"bootstrap-select instance and static methods.","s":"Methods","u":"/docs/1.0/methods/","p":168},{"i":172,"t":"bootstrap-select options, events, and sanitizer settings.","s":"Core options","u":"/docs/1.0/options/","p":172}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/91",[0,1.119,1,1.119,2,1.119,3,0.138,4,0.098,5,1.119,6,1.119]],["t/102",[3,0.098,4,0.098,7,1.119,8,1.119,9,1.119,10,1.119,11,1.119,12,1.119]],["t/168",[3,0.118,4,0.118,13,1.347,14,1.347,15,1.347]],["t/172",[3,0.11,4,0.11,16,1.261,17,1.261,18,1.261,19,1.261]]],"invertedIndex":[["5",{"_index":6,"t":{"91":{"position":[[67,3]]}}}],["bootstrap",{"_index":3,"t":{"91":{"position":[[30,9],[57,9]]},"102":{"position":[[5,9]]},"168":{"position":[[0,9]]},"172":{"position":[[0,9]]}}}],["crestapp",{"_index":2,"t":{"91":{"position":[[20,9]]}}}],["doc",{"_index":11,"t":{"102":{"position":[[56,4]]}}}],["docusauru",{"_index":10,"t":{"102":{"position":[[45,10]]}}}],["event",{"_index":17,"t":{"172":{"position":[[26,7]]}}}],["exampl",{"_index":8,"t":{"102":{"position":[[22,8]]}}}],["fork",{"_index":5,"t":{"91":{"position":[[47,4]]}}}],["host",{"_index":9,"t":{"102":{"position":[[31,6]]}}}],["instal",{"_index":0,"t":{"91":{"position":[[0,7]]}}}],["instanc",{"_index":13,"t":{"168":{"position":[[17,8]]}}}],["live",{"_index":7,"t":{"102":{"position":[[0,4]]}}}],["method",{"_index":15,"t":{"168":{"position":[[37,8]]}}}],["option",{"_index":16,"t":{"172":{"position":[[17,8]]}}}],["sanit",{"_index":18,"t":{"172":{"position":[[38,9]]}}}],["select",{"_index":4,"t":{"91":{"position":[[40,6]]},"102":{"position":[[15,6]]},"168":{"position":[[10,6]]},"172":{"position":[[10,6]]}}}],["set",{"_index":19,"t":{"172":{"position":[[48,9]]}}}],["site",{"_index":12,"t":{"102":{"position":[[61,5]]}}}],["static",{"_index":14,"t":{"168":{"position":[[30,6]]}}}],["us",{"_index":1,"t":{"91":{"position":[[12,3]]}}}]],"pipeline":["stemmer"]}},{"documents":[],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[],"invertedIndex":[],"pipeline":["stemmer"]}},{"documents":[{"i":92,"t":"CrestApps fork This is the CrestApps fork of snapappointments/bootstrap-select. It removes the jQuery dependency entirely, uses plain vanilla JavaScript, and supports Bootstrap 5+ only. Older Bootstrap and jQuery compatibility paths are intentionally out of scope so the library can stay small and forward-focused.","s":"Getting Started","u":"/docs/1.0/","h":"","p":91},{"i":94,"t":"bootstrap-select requires Bootstrap 5+ (CSS and JS, including its bundled Popper). jQuery is not required. Install with npm: npm install crestapps-bootstrap-select bootstrap Load Bootstrap 5 first, then bootstrap-select's CSS and JS (after Bootstrap's JavaScript): ","s":"Quick start","u":"/docs/1.0/","h":"#quick-start","p":91},{"i":96,"t":"After the package is published to npm, it will also be available through jsDelivr. Prefer pinning an explicit package version in production: You can replace @1.0.0 with the version you want to consume. During development, @latest also works, but a fixed version is safer for production deployments. When loaded via a + + + + + + + + + + + + +
Version: 1.1

Basic examples

+
CrestApps fork

The examples use the vanilla JavaScript / Bootstrap 5+ API: new Selectpicker(el) or the selectpicker class, which auto-initializes. jQuery is not required.

+

The main examples now live directly on this docs page so they inherit the docs theme, including light and dark mode. The standalone HTML files are still kept under docs/static/examples/ for quick smoke-testing outside Docusaurus.

+

Standard select boxes

+
+
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+ +

Select boxes with optgroups

+
+
<select class="selectpicker">
<optgroup label="Picnic">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Camping">
<option>Tent</option>
<option>Flashlight</option>
<option>Toilet Paper</option>
</optgroup>
</select>
+

Multiple select boxes

+
+
<select class="selectpicker" multiple>
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+ +

You can add a search input by passing data-live-search="true" attribute:

+
+

Key words

+

Add key words to options to improve their searchability using data-tokens.

+
+
<select class="selectpicker" data-live-search="true">
<option data-tokens="ketchup mustard">Hot Dog, Fries and a Soda</option>
<option data-tokens="mustard">Burger, Shake and a Smile</option>
<option data-tokens="frosting">Sugar, Spice and all things nice</option>
</select>
+

Tags-style live search with open options

+

Use showSelectedTags to keep selections visible as removable tags above the search box, while the button switches to a compact summary instead of repeating the same values.

+
+
<select
class="selectpicker"
multiple
data-icon-base="fa-solid"
data-tick-icon="fa-check"
data-live-search="true"
data-show-selected-tags="true"
data-open-options="true"
data-live-search-placeholder="Search or create tags"
placeholder="Search or create tags">
<option selected data-icon="fa-seedling">Orchard Core</option>
<option selected data-icon="fa-cubes">Bootstrap 5</option>
<option data-icon="fa-code">Vue</option>
<option data-icon="fa-tags">Taxonomy</option>
<option data-icon="fa-circle-plus">Open option</option>
<option data-icon="fa-wand-magic-sparkles">Editor UX</option>
</select>
+

If you prefer a Bootstrap-style checkbox instead of the floating checkmark, set selectionIndicator to checkbox:

+
+
<select
class="selectpicker"
multiple
data-live-search="true"
data-show-selected-tags="true"
data-selection-indicator="checkbox"
placeholder="Choose frameworks">
<option selected>Bootstrap 5</option>
<option>Vue</option>
<option>React</option>
<option>Svelte</option>
</select>
+

List-style menu

+

Set selectedItemsStyle to list to render the removable selections as a stacked Bootstrap list group:

+
+
<select
class="selectpicker"
multiple
data-live-search="true"
data-show-selected-tags="true"
data-selected-items-style="list">
<option selected>Orchard Core</option>
<option selected>Bootstrap 5</option>
<option>Vue</option>
</select>
+

Floating labels with visible tags

+

When a tags-style picker is placed inside a Bootstrap 5 form-floating wrapper, the selected tags stay visible inside the control after the menu closes, with balanced top and bottom spacing around the tags.

+
+
<div class="form-floating">
<select
id="floating-tags-example"
class="selectpicker"
multiple
data-live-search="true"
data-show-selected-tags="true"
data-open-options="true"
placeholder="Years">
<option selected>2026</option>
<option selected>2023</option>
<option selected>2021</option>
</select>
<label for="floating-tags-example">Years</label>
</div>
+

For remote-backed pickers, initialize with JavaScript and provide source.create(callback, searchValue) to save the new item before selecting it:

+
new Selectpicker('#tag-editor', {
liveSearch: true,
showSelectedTags: true,
openOptions: true,
source: {
data: function (callback) {
callback(existingTags);
},
search: function (callback, page, searchValue) {
callback(filterTags(searchValue));
},
create: function (callback, searchValue) {
saveTag(searchValue).then(function (tag) {
callback({
text: tag.displayText,
value: tag.id
});
});
}
}
});
+

Limit the number of selections

+

Limit the number of options that can be selected via the data-max-options attribute. It also works for option groups. Customize the message displayed when the limit is reached with maxOptionsText.

+
+
<select class="selectpicker" multiple data-max-options="2">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>

<select class="selectpicker" multiple>
<optgroup label="Condiments" data-max-options="2">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Breads" data-max-options="2">
<option>Plain</option>
<option>Steamed</option>
<option>Toasted</option>
</optgroup>
</select>
+

Custom button text

+
+

Placeholder

+

+

Use the placeholder attribute to set the default placeholder text when nothing is selected. This works for both multiple and standard select boxes:

+
+
<select class="selectpicker" multiple placeholder="Choose one of the following...">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Selected text

+

+

Set the title attribute on individual options to display alternative text when the option is selected:

+
+
<select class="selectpicker">
<option title="Combo 1">Hot Dog, Fries and a Soda</option>
<option title="Combo 2">Burger, Shake and a Smile</option>
<option title="Combo 3">Sugar, Spice and all things nice</option>
</select>
+

Selected text format

+

+

Specify how the selection is displayed with the data-selected-text-format attribute on a multiple select.

+

The supported values are:

+
    +
  • values: A comma delimited list of selected values (default)
  • +
  • count: If one item is selected, then the option value is shown. If more than one is selected then the number of selected items is displayed, e.g. 2 of 6 selected
  • +
  • count > x: Where x is the number of items selected when the display format changes from values to count
  • +
  • static: Always show the placeholder, regardless of selection
  • +
+
+
<select class="selectpicker" multiple data-selected-text-format="count">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+
+
<select class="selectpicker" multiple data-selected-text-format="count > 3">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
<option>Onions</option>
</select>
+

Styling

+
+

Button classes

+

You can set the button classes via the data-style attribute:

+
+
<select class="selectpicker" data-style="btn-primary">
...
</select>

<select class="selectpicker" data-style="btn-secondary">
...
</select>

<select class="selectpicker" data-style="btn-success">
...
</select>

<select class="selectpicker" data-style="btn-dark">
...
</select>

<select class="selectpicker" data-style="btn-light">
...
</select>

<select class="selectpicker" data-style="btn-danger">
...
</select>
+

Checkmark on selected option

+

You can also show the checkmark icon on standard select boxes with the show-tick class:

+
+
<select class="selectpicker show-tick">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+ +

The Bootstrap menu arrow can be added with the show-menu-arrow class:

+
+
<select class="selectpicker show-menu-arrow">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Style individual options

+

+

Classes and styles added to options are transferred to the select box:

+
+
<select class="selectpicker">
<option>Mustard</option>
<option class="special">Ketchup</option>
<option style="background: #5cb85c; color: #fff;">Relish</option>
</select>
+
.special {
font-weight: bold !important;
color: #fff !important;
background: #bc0000 !important;
text-transform: uppercase;
}
+

Width

+

+

Wrap selects in grid columns, or any custom parent element, to easily enforce desired widths.

+
+
<div class="row">
<div class="col-sm-3">
<div class="form-group">
<select class="selectpicker form-control">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
</div>
</div>
+

Customize options

+
+

Font Awesome icons

+

This example uses Font Awesome. Add an icon to an option or optgroup with the data-icon attribute:

+
Bootstrap 5 icons

Bootstrap 5 does not include an icon font. To use Font Awesome or another icon library, set iconBase and tickIcon to match that library.

+

The selected option renders its icon in the button, and the menu shows the icons for the remaining options as well.

+
+
<select class="selectpicker" data-icon-base="fa-solid" data-tick-icon="fa-check">
<option selected data-icon="fa-heart">Ketchup</option>
</select>
+

Custom content

+

Insert custom HTML into the option with the data-content attribute:

+
Custom content is sanitized

This feature inserts HTML into the DOM. By default, it is sanitized using our built-in sanitizer.

+
+
<select class="selectpicker">
<option data-content="<span class='badge text-bg-success'>Relish</span>">Relish</option>
</select>
+

Subtext

+

Add subtext to an option or optgroup with the data-subtext attribute:

+
+
<select class="selectpicker" data-size="5">
<option data-subtext="Heinz">Ketchup</option>
</select>
+

Customize menu

+
+ +

The size option is set to 'auto' by default. When size is set to 'auto', the menu always opens up to show as many items as the window will allow without being cut off. Set size to false to always show all items. The size of the menu can also be specifed using the data-size attribute.

+
+

+

Specify a number for data-size to choose the maximum number of items to show in the menu.

+
+
<select class="selectpicker" data-size="5">
...
</select>
+

Select/deselect all options

+

Adds two buttons to the top of the menu - Select All & Deselect All with data-actions-box="true".

+
+
<select class="selectpicker" multiple data-actions-box="true">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Divider

+

Add data-divider="true" to an option to turn it into a divider.

+
+
<select class="selectpicker" data-size="5">
<option data-divider="true"></option>
</select>
+ +

Add a header to the dropdown menu, e.g. header: 'Select a condiment' or data-header="Select a condiment"

+
+
<select class="selectpicker" data-header="Select a condiment">
...
</select>
+

Dropup menu

+

dropupAuto is set to true by default, which automatically determines whether or not the menu should display above or below the select box. If dropupAuto is set to false, manually make the select a dropup menu by adding the .dropup class to the select.

+
+
<select class="selectpicker dropup" data-dropup-auto="false">
...
</select>
+

Disabled

+
+

Disabled select box

+
+
<select class="selectpicker" disabled>
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Disabled options

+
+
<select class="selectpicker">
<option>Mustard</option>
<option disabled>Ketchup</option>
<option>Relish</option>
</select>
+

Disabled option groups

+
+
<select class="selectpicker test">
<optgroup label="Picnic" disabled>
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Camping">
<option>Tent</option>
<option>Flashlight</option>
<option>Toilet Paper</option>
</optgroup>
</select>
+ + \ No newline at end of file diff --git a/docs/docs/1.1/index.html b/docs/docs/1.1/index.html new file mode 100644 index 00000000..4149bfe4 --- /dev/null +++ b/docs/docs/1.1/index.html @@ -0,0 +1,56 @@ + + + + + +Getting Started | bootstrap-select + + + + + + + + + + + + +
Version: 1.1

Getting Started

+
CrestApps fork

This is the CrestApps fork of snapappointments/bootstrap-select. It removes the jQuery dependency entirely, uses plain vanilla JavaScript, and supports Bootstrap 5+ only. Older Bootstrap and jQuery compatibility paths are intentionally out of scope so the library can stay small and forward-focused.

+

Quick start

+

bootstrap-select requires Bootstrap 5+ (CSS and JS, including its bundled Popper). +jQuery is not required.

+

Install with npm:

+
npm install @crestapps/bootstrap-select bootstrap
+

Load Bootstrap 5 first, then bootstrap-select's CSS and JS (after Bootstrap's JavaScript):

+
<!-- Bootstrap 5 (includes Popper) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>

<!-- bootstrap-select -->
<link rel="stylesheet" href="dist/css/bootstrap-select.min.css">
<script src="dist/js/bootstrap-select.min.js"></script>

<!-- (Optional) translation files -->
<script src="dist/js/i18n/defaults-*.min.js"></script>
+

Using the CDN build

+

After the package is published to npm, it will also be available through jsDelivr. +Prefer pinning an explicit package version in production:

+
<!-- Bootstrap 5 (includes Popper) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"></script>

<!-- @crestapps/bootstrap-select from jsDelivr -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@crestapps/bootstrap-select@1.1.0/dist/css/bootstrap-select.min.css">
<script src="https://cdn.jsdelivr.net/npm/@crestapps/bootstrap-select@1.1.0/dist/js/bootstrap-select.min.js"></script>
+

You can replace @1.1.0 with the version you want to consume. During development, +@latest also works, but a fixed version is safer for production deployments.

+

When loaded via a <script> tag, the plugin exposes a global Selectpicker class. +Modern JavaScript can import the ES module entry:

+
import Selectpicker from '@crestapps/bootstrap-select';
+

Usage

+
+

Via selectpicker class

+

Add the selectpicker class to your select elements to auto-initialize bootstrap-select +once the DOM is ready.

+
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Barbecue</option>
</select>
+

Via JavaScript

+
// Initialize one select (accepts an element or a selector string)
new Selectpicker('#my-select', { liveSearch: true });
+

or

+
// Initialize several selects
document.querySelectorAll('.my-select').forEach(function (el) {
new Selectpicker(el);
});
+

If calling bootstrap-select via JavaScript, run your code after the elements exist — +either place the script at the bottom of the page (after the last <select>) or wrap +it in a DOMContentLoaded listener:

+
document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('select').forEach(function (el) {
new Selectpicker(el);
});
});
+

Tags-style editor pattern

+

For taxonomy-style experiences, combine live search, removable selected tags, and open-option creation so selections stay visible as tags without repeating the full list in the button:

+
new Selectpicker('#tag-editor', {
liveSearch: true,
showSelectedTags: true,
openOptions: true,
selectionIndicator: 'checkbox'
});
+

See Examples for a live demo and Options for the full source.create(callback, searchValue) flow used by remote-backed editors.

+ + \ No newline at end of file diff --git a/docs/docs/1.1/methods/index.html b/docs/docs/1.1/methods/index.html new file mode 100644 index 00000000..f8da9e76 --- /dev/null +++ b/docs/docs/1.1/methods/index.html @@ -0,0 +1,99 @@ + + + + + +Methods | bootstrap-select + + + + + + + + + + + + +
Version: 1.1

Methods

+

Interface with bootstrap-select.

+

In this fork, methods are called directly on the Selectpicker instance (there +is no jQuery $.fn.selectpicker). Obtain an instance with +Selectpicker.getInstance(elementOrSelector) (returns the existing instance) or +Selectpicker.getOrCreateInstance(elementOrSelector, options).

+
const picker = Selectpicker.getInstance('#my-select');
+
+

.val()

+

You can set the selected value by calling the val method on the instance.

+
Selectpicker.getInstance('#my-select').val('Mustard');
Selectpicker.getInstance('#my-select').val(['Mustard', 'Relish']);
+

This is different to setting value directly on the select element. If you set +value on the element directly, the bootstrap-select UI will not refresh (as the +change event only fires from user interaction). You will have to call the UI +render method yourself.

+
const select = document.querySelector('#my-select');
select.value = 'Mustard';
Selectpicker.getInstance(select).render();

// this is the equivalent of the above
Selectpicker.getInstance(select).val('Mustard');
+

Called with no argument, val() returns the current value (a string for single +selects, or an array of strings for multiple selects).

+
+

.selectAll()

+

This will select all items in a multi-select.

+
Selectpicker.getInstance('#my-select').selectAll();
+
+

.deselectAll()

+

This will deselect all items in a multi-select.

+
Selectpicker.getInstance('#my-select').deselectAll();
+
+

.render()

+

You can force a re-render of the bootstrap-select UI with the render method. +This is useful if you programmatically change any underlying values that affect +the layout of the element.

+
Selectpicker.getInstance('#my-select').render();
+
+

.mobile()

+

Enable mobile scrolling by calling mobile(). This enables the device's native +menu for select menus.

+

The method for detecting the browser is left up to the user.

+
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {
Selectpicker.getInstance('#my-select').mobile();
}
+
+

.setStyle()

+

Modify the class(es) associated with either the button itself or its container.

+

If changing the class on the container:

+
const select = document.querySelector('#my-select');
select.closest('.bootstrap-select').classList.add('col-lg-12');
Selectpicker.getInstance(select).setStyle();
+

If changing the class(es) on the button (altering data-style):

+
const picker = Selectpicker.getInstance('#my-select');

// Replace class
picker.setStyle('btn-danger');

// Add class
picker.setStyle('btn-lg', 'add');

// Remove class
picker.setStyle('btn-lg', 'remove');
+
+

.refresh()

+

To programmatically update a select with JavaScript, first manipulate the select, +then use the refresh method to update the UI to match the new state. This is +necessary when removing or adding options, or when disabling/enabling a select +via JavaScript.

+
Selectpicker.getInstance('#my-select').refresh();
+

For example, to remove an option then refresh:

+
document.querySelector('.rm-mustard').addEventListener('click', function () {
const select = document.querySelector('.remove-example');
const option = select.querySelector('[value="Mustard"]');
if (option) option.remove();
Selectpicker.getInstance(select).refresh();
});
+

Or to disable/enable a select:

+
const select = document.querySelector('.disable-example');

document.querySelector('.ex-disable').addEventListener('click', function () {
select.disabled = true;
Selectpicker.getInstance(select).refresh();
});

document.querySelector('.ex-enable').addEventListener('click', function () {
select.disabled = false;
Selectpicker.getInstance(select).refresh();
});
+
+

.toggle()

+

Programmatically toggles the bootstrap-select menu open/closed.

+
Selectpicker.getInstance('#my-select').toggle();
+

.open() and .close() are also available.

+
+

.hide()

+

To programmatically hide the bootstrap-select use the hide method (this only +affects the visibility of the bootstrap-select itself).

+
Selectpicker.getInstance('#my-select').hide();
+
+

.show()

+

To programmatically show the bootstrap-select use the show method (this only +affects the visibility of the bootstrap-select itself).

+
Selectpicker.getInstance('#my-select').show();
+
+

.destroy()

+

To programmatically destroy the bootstrap-select, use the destroy method. This +removes the generated UI and restores the original <select> element.

+
Selectpicker.getInstance('#my-select').destroy();
+
+

Static methods

+
MethodDescription
new Selectpicker(elementOrSelector, options)Create a new instance.
Selectpicker.getInstance(elementOrSelector)Return the existing instance for an element, or null.
Selectpicker.getOrCreateInstance(elementOrSelector, options)Return the existing instance, creating one if needed.
Selectpicker.setDefaults(options)Set global default options (used by the i18n translation files).
Selectpicker.VERSIONThe plugin version.
+ + \ No newline at end of file diff --git a/docs/docs/1.1/options/index.html b/docs/docs/1.1/options/index.html new file mode 100644 index 00000000..af840f62 --- /dev/null +++ b/docs/docs/1.1/options/index.html @@ -0,0 +1,433 @@ + + + + + +Options | bootstrap-select + + + + + + + + + + + + +
Version: 1.1
CrestApps fork

The options and data attributes documented on this page are part of the current forward-only API. Initialize with new Selectpicker('#sel', options) or add the selectpicker class for automatic initialization. Global defaults are set with Selectpicker.setDefaults({ ... }).

+

Core options

+
+

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in +data-style="" or data-selected-text-format="count".

+
Data attributes

For security reasons, the sanitize, sanitizeFn, and whiteList options cannot be supplied using data attributes.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDescription
actionsBoxbooleanfalse +

When set to true, adds two buttons to the top of the dropdown menu (Select All & Deselect All).

+
countSelectedTextstring | functionfunction +

Sets the format for the text displayed when selectedTextFormat is count or count > #. {0} is the selected amount. {1} is total available for selection.

+

When set to a function, the first parameter is the number of selected options, and the second is the total number of + options. The function must return a string.

+
deselectAllTextstring'Deselect All' +

The text on the button that deselects all options when actionsBox is enabled.

+
dropdownAlignRightboolean | 'auto'false +

Align the menu to the right instead of the left. If set to 'auto', the menu will automatically align right if there isn't room for the menu's full width when aligned to the left.

+
dropupAutobooleantrue +

checks to see which has more room, above or below. If the dropup has enough room to fully open normally, but + there is more room above, the dropup still opens normally. Otherwise, it becomes a dropup. If dropupAuto is + set to false, dropups must be called manually.

+
headerstringfalse +

adds a header to the top of the menu; includes a close button by default

+
hideDisabledbooleanfalse +

removes disabled options and optgroups from the menu data-hide-disabled: true

+
iconBasestring'' +

Set the base class for an icon font such as Font Awesome. If changing iconBase, you might also want to change tickIcon, in case the icon font uses a different naming scheme.

+
liveSearchbooleanfalse +

When set to true, adds a search box to the top of the selectpicker dropdown.

+
liveSearchNormalizebooleanfalse +

Setting liveSearchNormalize to true allows for accent-insensitive searching.

+
liveSearchPlaceholderstringnull +

When set to a string, a placeholder attribute equal to the string will be added to the liveSearch input.

+
liveSearchStylestring | function'contains' +

When set to 'contains', searching will reveal options that contain the searched text. For example, searching for pl with return both Apple, Plum, and Plantain. When set to 'startsWith', searching for pl will return only Plum and Plantain. If a function is used, the arguments are the option string and the searched text and it must return true if the option matches or false.

+
openOptionsbooleanfalse +

When set to true, the live-search UI shows a Create action whenever the current search text does not exactly match an existing option.

+

If options.source.create(callback, searchValue) is supplied, it will be used to resolve the created option. Otherwise the control creates a local option using the search text for both text and value.

+
openOptionsTextstring'Create "{0}"' +

Sets the label for the open-option create action. {0} is replaced with the current search text.

+
maxOptionsinteger | falsefalse +

When set to an integer and in a multi-select, the number of selected options cannot exceed the given value.

+

This option can also exist as a data-attribute for an <optgroup>, in which case it only applies to that <optgroup>.

+
maxOptionsTextstring | array | functionfunction +

The text that is displayed when maxOptions is enabled and the maximum number of options for the given scenario have been selected.

+

If a function is used, it must return an array. array[0] is the text used when maxOptions is applied to the entire select element. array[1] is the text used when maxOptions is used on an optgroup. If a string is used, the same text is used for both the element and the optgroup.

+
multipleSeparatorstring', ' +

Set the character displayed in the button that separates selected options.

+
noneSelectedTextstring'Nothing selected' +

The text that is displayed when a multiple select has no selected options.

+
noneResultsTextstring'No results matched {0}' +

The text displayed when a search doesn't return any results.

+
selectAllTextstring'Select All' +

The text on the button that selects all options when actionsBox is enabled.

+
selectedTextFormat'values' | 'static' | 'count' | 'count > x' (where x is an integer)'values' +

Specifies how the selection is displayed with a multiple select.

+

+ 'values' displays a list of the selected options (separated by multipleSeparator). +
+ 'static' displays the configured placeholder text. +
+ 'count > x' behaves like 'values' until the number of selected options is greater than x; after that, it displays the total number of selected options. +
+ 'count' is an alias for 'count > 1'. +

+
selectOnTabbooleanfalse +

When set to true, treats the tab character like the enter or space characters within the selectpicker dropdown.

+
showContentbooleantrue +

When set to true, display custom HTML associated with selected option(s) in the button. When set to false, the option value will be displayed instead.

+
showIconbooleantrue +

When set to true, display icon(s) associated with selected option(s) in the button.

+
showSubtextbooleanfalse +

When set to true, display subtext associated with a selected option in the button.

+
showSelectedTagsbooleanfalse +

For live-search selects, shows the current selections as removable tags that stay visible on the control, similar to a taxonomy tags editor. The button uses a compact summary instead of repeating the selected values.

+
showTickbooleanfalse +

Show checkmark on selected option (for items without multiple attribute).

+
selectedItemsStyle'tags' | 'list''tags' +

Controls how removable selected items are rendered when showSelectedTags is enabled. Use 'list' to render them as a Bootstrap list group with a remove button aligned to the right.

+
selectedTagRemoveLabelstring'Remove' +

Accessible label prefix used for each removable selected item when showSelectedTags is enabled.

+
selectionIndicator'checkmark' | 'checkbox''checkmark' +

Controls how selected items are indicated in the dropdown. Use 'checkbox' to render a Bootstrap-style checkbox column instead of the default floating checkmark.

+
size'auto' | integer | false'auto' +

When set to 'auto', the menu always opens up to show as many items as the window will allow + without being cut off.

+

When set to an integer, the menu will show the given number of items, even if the dropdown is cut off.

+

When set to false, the menu will always show all items.

+
stylestring | null + 'btn-light' + +

When set to a string, add the value to the button's style.

+
tickIconstring'bs-ok-default' +

Set which icon to use to display as the "tick" next to selected options.

+
virtualScrollboolean | integer600 +

If enabled, the items in the dropdown will be rendered using virtualization (i.e. only the items that are within the viewport will be rendered). This drastically improves performance for selects with a large number of options. Set to an integer to only use virtualization if the select has at least that number of options.

+
sanitizebooleantrue +

Enable or disable the sanitization. If activated, 'data-content' on individual options will be sanitized.

+
whiteListobjectDefault value +

Object which contains allowed attributes and tags

+
sanitizeFnnull | functionnull +

Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization.

+
+
Bootstrap 5 runtime defaults

This Bootstrap 5 build no longer supports the legacy container, mobile, styleBase, width, or windowPadding options. Layout should follow normal Bootstrap sizing and grid utilities, and the picker now fills its container by default.

+

Tags-style live search and open options

+

The showSelectedTags and openOptions settings are intended for taxonomy-style editors where authors need to keep selected values visible while continuing to search.

+

When both are enabled on a multiple select:

+
    +
  1. Selected values stay visible as removable tags on the control while the search UI stays available.
  2. +
  3. Typing a value that does not exactly match an existing option shows a create action.
  4. +
  5. Choosing that action creates and selects the option immediately.
  6. +
+

Use data attributes when local in-browser creation is enough:

+
<select
class="selectpicker"
multiple
data-live-search="true"
data-show-selected-tags="true"
data-open-options="true"
placeholder="Search or create tags">
<option selected>Orchard Core</option>
<option>Vue</option>
<option>Taxonomy</option>
</select>
+

Use JavaScript when the picker is backed by a remote source and new terms must be saved first:

+
new Selectpicker('#tag-editor', {
liveSearch: true,
showSelectedTags: true,
openOptions: true,
openOptionsText: 'Create tag "{0}"',
selectedTagRemoveLabel: 'Remove tag',
selectionIndicator: 'checkbox',
source: {
data: function (callback) {
callback(existingTags);
},
search: function (callback, page, searchValue) {
callback(findMatchingTags(searchValue));
},
create: function (callback, searchValue) {
createTag(searchValue).then(function (tag) {
callback({
text: tag.displayText,
value: tag.id
});
});
}
}
});
+

source.create can return the created option synchronously, invoke the provided callback later, or resolve a Promise. In each case, the picker adds the returned option and selects it automatically.

+

Default settings

+
+

You can change the default settings for bootstrap-select by modifying its DEFAULTS object (or by calling Selectpicker.setDefaults({ … })):

+
Selectpicker.DEFAULTS.multipleSeparator = ' | ';
+

Events

+
+

Bootstrap-select exposes a few events for hooking into select functionality.

+

hide.bs.select, hidden.bs.select, show.bs.select, and shown.bs.select all have a relatedTarget property, whose value is the toggling anchor element.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Event TypeDescription
show.bs.selectThis event fires immediately when the show instance method is called.
shown.bs.selectThis event is fired when the dropdown has been made visible to the user (will wait for CSS transitions, to complete).
hide.bs.selectThis event is fired immediately when the hide instance method has been called.
hidden.bs.selectThis event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete).
loaded.bs.selectThis event fires after the select has been initialized.
rendered.bs.selectThis event fires after the render instance has been called.
refreshed.bs.selectThis event fires after the refresh instance has been called.
changed.bs.select +

This event fires after the select's value has been changed. The detail object passes clickedIndex, isSelected, and previousValue via event.detail.

+

previousValue is the value of the select prior to being changed. If the select's value has been changed either via the val(), selectAll(), or deselectAll() methods, clickedIndex and isSelected will be null.

+
+
document.querySelector('#mySelect').addEventListener('changed.bs.select', function (e) {
const { clickedIndex, isSelected, previousValue } = e.detail;
// do something...
});
+

Sanitizer

+
+

HTML added via the data-content attribute on individual options is sanitized using our built-in sanitizer.

+

The default whiteList value is the following:

+
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
var DefaultWhitelist = {
// Global attributes allowed on any supplied element below.
'*': ['class', 'dir', 'id', 'lang', 'role', 'tabindex', 'style', ARIA_ATTRIBUTE_PATTERN],
a: ['target', 'href', 'title', 'rel'],
area: [],
b: [],
br: [],
col: [],
code: [],
div: [],
em: [],
hr: [],
h1: [],
h2: [],
h3: [],
h4: [],
h5: [],
h6: [],
i: [],
img: ['src', 'alt', 'title', 'width', 'height'],
li: [],
ol: [],
p: [],
pre: [],
s: [],
small: [],
span: [],
sub: [],
sup: [],
strong: [],
u: [],
ul: []
}
+

If you want to add new values to this default whiteList you can do the following:

+
var myDefaultWhiteList = Selectpicker.DEFAULTS.whiteList;

// To allow table elements
myDefaultWhiteList.table = [];

// To allow td elements and data-option attributes on td elements
myDefaultWhiteList.td = ['data-option'];

// You can push your custom regex to validate your attributes.
// Be careful about your regular expressions being too lax
var myCustomRegex = /^data-my-app-[\w-]+/;
myDefaultWhiteList['*'].push(myCustomRegex);
+

If you want to bypass our sanitizer because you prefer to use a dedicated library, you should do the following:

+
new Selectpicker('#yourSelect', {
sanitizeFn: function (domNodes) {
return DOMPurify.sanitize(domNodes)
}
});
+

For performance reasons, our built-in sanitizer accepts an array of DOM nodes as its first argument, rather than an HTML string. Keep that in mind if deciding to use your own sanitizeFn.

+ + \ No newline at end of file diff --git a/docs/docs/1.1/search-index.json b/docs/docs/1.1/search-index.json new file mode 100644 index 00000000..085e18fa --- /dev/null +++ b/docs/docs/1.1/search-index.json @@ -0,0 +1 @@ +[{"documents":[{"i":180,"t":"Getting Started","u":"/docs/1.1/","b":["Docs"]},{"i":193,"t":"Basic examples","u":"/docs/1.1/examples/","b":["Docs"]},{"i":256,"t":"Methods","u":"/docs/1.1/methods/","b":["Docs"]},{"i":260,"t":"Core options","u":"/docs/1.1/options/","b":["Docs"]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/180",[0,1.137,1,1.137]],["t/193",[2,1.137,3,1.137]],["t/256",[4,1.46]],["t/260",[5,1.137,6,1.137]]],"invertedIndex":[["basic",{"_index":2,"t":{"193":{"position":[[0,5]]}}}],["core",{"_index":5,"t":{"260":{"position":[[0,4]]}}}],["exampl",{"_index":3,"t":{"193":{"position":[[6,8]]}}}],["get",{"_index":0,"t":{"180":{"position":[[0,7]]}}}],["method",{"_index":4,"t":{"256":{"position":[[0,7]]}}}],["option",{"_index":6,"t":{"260":{"position":[[5,7]]}}}],["start",{"_index":1,"t":{"180":{"position":[[8,7]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":182,"t":"Quick start","u":"/docs/1.1/","h":"#quick-start","p":180},{"i":184,"t":"Using the CDN build","u":"/docs/1.1/","h":"#using-the-cdn-build","p":180},{"i":186,"t":"Usage","u":"/docs/1.1/","h":"","p":180},{"i":187,"t":"Via selectpicker class","u":"/docs/1.1/","h":"#via-selectpicker-class","p":180},{"i":189,"t":"Via JavaScript","u":"/docs/1.1/","h":"#via-javascript","p":180},{"i":191,"t":"Tags-style editor pattern","u":"/docs/1.1/","h":"#tags-style-editor-pattern","p":180},{"i":195,"t":"Standard select boxes","u":"/docs/1.1/examples/","h":"#standard-select-boxes","p":193},{"i":197,"t":"Select boxes with optgroups","u":"/docs/1.1/examples/","h":"#select-boxes-with-optgroups","p":193},{"i":199,"t":"Multiple select boxes","u":"/docs/1.1/examples/","h":"#multiple-select-boxes","p":193},{"i":201,"t":"Live search","u":"/docs/1.1/examples/","h":"#live-search","p":193},{"i":203,"t":"Key words","u":"/docs/1.1/examples/","h":"#key-words","p":193},{"i":205,"t":"Tags-style live search with open options","u":"/docs/1.1/examples/","h":"#tags-style-live-search-with-open-options","p":193},{"i":207,"t":"List-style menu","u":"/docs/1.1/examples/","h":"#list-style-menu","p":193},{"i":209,"t":"Floating labels with visible tags","u":"/docs/1.1/examples/","h":"#floating-labels-with-visible-tags","p":193},{"i":211,"t":"Limit the number of selections","u":"/docs/1.1/examples/","h":"","p":193},{"i":213,"t":"Custom button text","u":"/docs/1.1/examples/","h":"","p":193},{"i":214,"t":"Placeholder","u":"/docs/1.1/examples/","h":"#placeholder","p":193},{"i":216,"t":"Selected text","u":"/docs/1.1/examples/","h":"#selected-text","p":193},{"i":218,"t":"Selected text format","u":"/docs/1.1/examples/","h":"#selected-text-format","p":193},{"i":220,"t":"Styling","u":"/docs/1.1/examples/","h":"","p":193},{"i":221,"t":"Button classes","u":"/docs/1.1/examples/","h":"#button-classes","p":193},{"i":223,"t":"Checkmark on selected option","u":"/docs/1.1/examples/","h":"#checkmark-on-selected-option","p":193},{"i":225,"t":"Menu arrow","u":"/docs/1.1/examples/","h":"#menu-arrow","p":193},{"i":227,"t":"Style individual options","u":"/docs/1.1/examples/","h":"#style-individual-options","p":193},{"i":229,"t":"Width","u":"/docs/1.1/examples/","h":"#width","p":193},{"i":231,"t":"Customize options","u":"/docs/1.1/examples/","h":"","p":193},{"i":232,"t":"Font Awesome icons","u":"/docs/1.1/examples/","h":"#font-awesome-icons","p":193},{"i":234,"t":"Custom content","u":"/docs/1.1/examples/","h":"#custom-content","p":193},{"i":236,"t":"Subtext","u":"/docs/1.1/examples/","h":"#subtext","p":193},{"i":238,"t":"Customize menu","u":"/docs/1.1/examples/","h":"","p":193},{"i":239,"t":"Menu size","u":"/docs/1.1/examples/","h":"#menu-size","p":193},{"i":241,"t":"Select/deselect all options","u":"/docs/1.1/examples/","h":"#selectdeselect-all-options","p":193},{"i":243,"t":"Divider","u":"/docs/1.1/examples/","h":"#divider","p":193},{"i":245,"t":"Menu header","u":"/docs/1.1/examples/","h":"#menu-header","p":193},{"i":247,"t":"Dropup menu","u":"/docs/1.1/examples/","h":"#dropup-menu","p":193},{"i":249,"t":"Disabled","u":"/docs/1.1/examples/","h":"","p":193},{"i":250,"t":"Disabled select box","u":"/docs/1.1/examples/","h":"#disabled-select-box","p":193},{"i":252,"t":"Disabled options","u":"/docs/1.1/examples/","h":"#disabled-options","p":193},{"i":254,"t":"Disabled option groups","u":"/docs/1.1/examples/","h":"#disabled-option-groups","p":193},{"i":258,"t":"Static methods","u":"/docs/1.1/methods/","h":"#static-methods","p":256},{"i":262,"t":"Tags-style live search and open options","u":"/docs/1.1/options/","h":"#tags-style-live-search-and-open-options","p":260},{"i":264,"t":"Default settings","u":"/docs/1.1/options/","h":"","p":260},{"i":266,"t":"Events","u":"/docs/1.1/options/","h":"","p":260},{"i":268,"t":"Sanitizer","u":"/docs/1.1/options/","h":"#sanitizer","p":260}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/182",[0,3.642,1,3.642]],["t/184",[2,3.077,3,3.077,4,3.077]],["t/186",[5,4.462]],["t/187",[6,2.615,7,3.077,8,2.615]],["t/189",[6,3.095,9,3.642]],["t/191",[10,1.804,11,1.516,12,2.664,13,2.664]],["t/195",[14,3.077,15,1.508,16,2.083]],["t/197",[15,1.508,16,2.083,17,3.077]],["t/199",[15,1.508,16,2.083,18,3.077]],["t/201",[19,2.735,20,2.735]],["t/203",[21,3.642,22,3.642]],["t/205",[10,1.422,11,1.195,19,1.577,20,1.577,23,1.785,24,1.029]],["t/207",[11,1.751,25,3.077,26,1.751]],["t/209",[10,1.804,27,2.664,28,2.664,29,2.664]],["t/211",[15,1.508,30,3.077,31,3.077]],["t/213",[32,2.083,33,2.615,34,2.311]],["t/214",[35,4.462]],["t/216",[15,1.785,34,2.735]],["t/218",[15,1.508,34,2.311,36,3.077]],["t/220",[11,2.538]],["t/221",[8,3.095,33,3.095]],["t/223",[15,1.508,24,1.508,37,3.077]],["t/225",[26,2.072,38,3.642]],["t/227",[11,1.751,24,1.508,39,3.077]],["t/229",[40,4.462]],["t/231",[24,1.785,32,2.466]],["t/232",[41,3.077,42,3.077,43,3.077]],["t/234",[32,2.466,44,3.642]],["t/236",[45,4.462]],["t/238",[26,2.072,32,2.466]],["t/239",[26,2.072,46,3.642]],["t/241",[24,1.785,47,3.642]],["t/243",[48,4.462]],["t/245",[26,2.072,49,3.642]],["t/247",[26,2.072,50,3.642]],["t/249",[51,3.02]],["t/250",[15,1.508,16,2.083,51,2.083]],["t/252",[24,1.785,51,2.466]],["t/254",[24,1.508,51,2.083,52,3.077]],["t/258",[53,3.642,54,3.642]],["t/262",[10,1.422,11,1.195,19,1.577,20,1.577,23,1.785,24,1.029]],["t/264",[55,3.642,56,3.642]],["t/266",[57,4.462]],["t/268",[58,4.462]]],"invertedIndex":[["arrow",{"_index":38,"t":{"225":{"position":[[5,5]]}}}],["awesom",{"_index":42,"t":{"232":{"position":[[5,7]]}}}],["box",{"_index":16,"t":{"195":{"position":[[16,5]]},"197":{"position":[[7,5]]},"199":{"position":[[16,5]]},"250":{"position":[[16,3]]}}}],["build",{"_index":4,"t":{"184":{"position":[[14,5]]}}}],["button",{"_index":33,"t":{"213":{"position":[[7,6]]},"221":{"position":[[0,6]]}}}],["cdn",{"_index":3,"t":{"184":{"position":[[10,3]]}}}],["checkmark",{"_index":37,"t":{"223":{"position":[[0,9]]}}}],["class",{"_index":8,"t":{"187":{"position":[[17,5]]},"221":{"position":[[7,7]]}}}],["content",{"_index":44,"t":{"234":{"position":[[7,7]]}}}],["custom",{"_index":32,"t":{"213":{"position":[[0,6]]},"231":{"position":[[0,9]]},"234":{"position":[[0,6]]},"238":{"position":[[0,9]]}}}],["default",{"_index":55,"t":{"264":{"position":[[0,7]]}}}],["disabl",{"_index":51,"t":{"249":{"position":[[0,8]]},"250":{"position":[[0,8]]},"252":{"position":[[0,8]]},"254":{"position":[[0,8]]}}}],["divid",{"_index":48,"t":{"243":{"position":[[0,7]]}}}],["dropup",{"_index":50,"t":{"247":{"position":[[0,6]]}}}],["editor",{"_index":12,"t":{"191":{"position":[[11,6]]}}}],["event",{"_index":57,"t":{"266":{"position":[[0,6]]}}}],["float",{"_index":27,"t":{"209":{"position":[[0,8]]}}}],["font",{"_index":41,"t":{"232":{"position":[[0,4]]}}}],["format",{"_index":36,"t":{"218":{"position":[[14,6]]}}}],["group",{"_index":52,"t":{"254":{"position":[[16,6]]}}}],["header",{"_index":49,"t":{"245":{"position":[[5,6]]}}}],["icon",{"_index":43,"t":{"232":{"position":[[13,5]]}}}],["individu",{"_index":39,"t":{"227":{"position":[[6,10]]}}}],["javascript",{"_index":9,"t":{"189":{"position":[[4,10]]}}}],["key",{"_index":21,"t":{"203":{"position":[[0,3]]}}}],["label",{"_index":28,"t":{"209":{"position":[[9,6]]}}}],["limit",{"_index":30,"t":{"211":{"position":[[0,5]]}}}],["list",{"_index":25,"t":{"207":{"position":[[0,4]]}}}],["live",{"_index":19,"t":{"201":{"position":[[0,4]]},"205":{"position":[[11,4]]},"262":{"position":[[11,4]]}}}],["menu",{"_index":26,"t":{"207":{"position":[[11,4]]},"225":{"position":[[0,4]]},"238":{"position":[[10,4]]},"239":{"position":[[0,4]]},"245":{"position":[[0,4]]},"247":{"position":[[7,4]]}}}],["method",{"_index":54,"t":{"258":{"position":[[7,7]]}}}],["multipl",{"_index":18,"t":{"199":{"position":[[0,8]]}}}],["number",{"_index":31,"t":{"211":{"position":[[10,6]]}}}],["open",{"_index":23,"t":{"205":{"position":[[28,4]]},"262":{"position":[[27,4]]}}}],["optgroup",{"_index":17,"t":{"197":{"position":[[18,9]]}}}],["option",{"_index":24,"t":{"205":{"position":[[33,7]]},"223":{"position":[[22,6]]},"227":{"position":[[17,7]]},"231":{"position":[[10,7]]},"241":{"position":[[20,7]]},"252":{"position":[[9,7]]},"254":{"position":[[9,6]]},"262":{"position":[[32,7]]}}}],["pattern",{"_index":13,"t":{"191":{"position":[[18,7]]}}}],["placehold",{"_index":35,"t":{"214":{"position":[[0,11]]}}}],["quick",{"_index":0,"t":{"182":{"position":[[0,5]]}}}],["sanit",{"_index":58,"t":{"268":{"position":[[0,9]]}}}],["search",{"_index":20,"t":{"201":{"position":[[5,6]]},"205":{"position":[[16,6]]},"262":{"position":[[16,6]]}}}],["select",{"_index":15,"t":{"195":{"position":[[9,6]]},"197":{"position":[[0,6]]},"199":{"position":[[9,6]]},"211":{"position":[[20,10]]},"216":{"position":[[0,8]]},"218":{"position":[[0,8]]},"223":{"position":[[13,8]]},"250":{"position":[[9,6]]}}}],["select/deselect",{"_index":47,"t":{"241":{"position":[[0,15]]}}}],["selectpick",{"_index":7,"t":{"187":{"position":[[4,12]]}}}],["set",{"_index":56,"t":{"264":{"position":[[8,8]]}}}],["size",{"_index":46,"t":{"239":{"position":[[5,4]]}}}],["standard",{"_index":14,"t":{"195":{"position":[[0,8]]}}}],["start",{"_index":1,"t":{"182":{"position":[[6,5]]}}}],["static",{"_index":53,"t":{"258":{"position":[[0,6]]}}}],["style",{"_index":11,"t":{"191":{"position":[[5,5]]},"205":{"position":[[5,5]]},"207":{"position":[[5,5]]},"220":{"position":[[0,7]]},"227":{"position":[[0,5]]},"262":{"position":[[5,5]]}}}],["subtext",{"_index":45,"t":{"236":{"position":[[0,7]]}}}],["tag",{"_index":10,"t":{"191":{"position":[[0,4]]},"205":{"position":[[0,4]]},"209":{"position":[[29,4]]},"262":{"position":[[0,4]]}}}],["text",{"_index":34,"t":{"213":{"position":[[14,4]]},"216":{"position":[[9,4]]},"218":{"position":[[9,4]]}}}],["us",{"_index":2,"t":{"184":{"position":[[0,5]]}}}],["usag",{"_index":5,"t":{"186":{"position":[[0,5]]}}}],["via",{"_index":6,"t":{"187":{"position":[[0,3]]},"189":{"position":[[0,3]]}}}],["visibl",{"_index":29,"t":{"209":{"position":[[21,7]]}}}],["width",{"_index":40,"t":{"229":{"position":[[0,5]]}}}],["word",{"_index":22,"t":{"203":{"position":[[4,5]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":180,"t":"Install and use the CrestApps bootstrap-select fork with Bootstrap 5+.","s":"Getting Started","u":"/docs/1.1/","p":180},{"i":193,"t":"Live bootstrap-select examples hosted by the Docusaurus docs site.","s":"Basic examples","u":"/docs/1.1/examples/","p":193},{"i":256,"t":"bootstrap-select instance and static methods.","s":"Methods","u":"/docs/1.1/methods/","p":256},{"i":260,"t":"bootstrap-select options, events, and sanitizer settings.","s":"Core options","u":"/docs/1.1/options/","p":260}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/180",[0,1.119,1,1.119,2,1.119,3,0.138,4,0.098,5,1.119,6,1.119]],["t/193",[3,0.098,4,0.098,7,1.119,8,1.119,9,1.119,10,1.119,11,1.119,12,1.119]],["t/256",[3,0.118,4,0.118,13,1.347,14,1.347,15,1.347]],["t/260",[3,0.11,4,0.11,16,1.261,17,1.261,18,1.261,19,1.261]]],"invertedIndex":[["5",{"_index":6,"t":{"180":{"position":[[67,3]]}}}],["bootstrap",{"_index":3,"t":{"180":{"position":[[30,9],[57,9]]},"193":{"position":[[5,9]]},"256":{"position":[[0,9]]},"260":{"position":[[0,9]]}}}],["crestapp",{"_index":2,"t":{"180":{"position":[[20,9]]}}}],["doc",{"_index":11,"t":{"193":{"position":[[56,4]]}}}],["docusauru",{"_index":10,"t":{"193":{"position":[[45,10]]}}}],["event",{"_index":17,"t":{"260":{"position":[[26,7]]}}}],["exampl",{"_index":8,"t":{"193":{"position":[[22,8]]}}}],["fork",{"_index":5,"t":{"180":{"position":[[47,4]]}}}],["host",{"_index":9,"t":{"193":{"position":[[31,6]]}}}],["instal",{"_index":0,"t":{"180":{"position":[[0,7]]}}}],["instanc",{"_index":13,"t":{"256":{"position":[[17,8]]}}}],["live",{"_index":7,"t":{"193":{"position":[[0,4]]}}}],["method",{"_index":15,"t":{"256":{"position":[[37,8]]}}}],["option",{"_index":16,"t":{"260":{"position":[[17,8]]}}}],["sanit",{"_index":18,"t":{"260":{"position":[[38,9]]}}}],["select",{"_index":4,"t":{"180":{"position":[[40,6]]},"193":{"position":[[15,6]]},"256":{"position":[[10,6]]},"260":{"position":[[10,6]]}}}],["set",{"_index":19,"t":{"260":{"position":[[48,9]]}}}],["site",{"_index":12,"t":{"193":{"position":[[61,5]]}}}],["static",{"_index":14,"t":{"256":{"position":[[30,6]]}}}],["us",{"_index":1,"t":{"180":{"position":[[12,3]]}}}]],"pipeline":["stemmer"]}},{"documents":[],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[],"invertedIndex":[],"pipeline":["stemmer"]}},{"documents":[{"i":181,"t":"CrestApps fork This is the CrestApps fork of snapappointments/bootstrap-select. It removes the jQuery dependency entirely, uses plain vanilla JavaScript, and supports Bootstrap 5+ only. Older Bootstrap and jQuery compatibility paths are intentionally out of scope so the library can stay small and forward-focused.","s":"Getting Started","u":"/docs/1.1/","h":"","p":180},{"i":183,"t":"bootstrap-select requires Bootstrap 5+ (CSS and JS, including its bundled Popper). jQuery is not required. Install with npm: npm install @crestapps/bootstrap-select bootstrap Load Bootstrap 5 first, then bootstrap-select's CSS and JS (after Bootstrap's JavaScript): ","s":"Quick start","u":"/docs/1.1/","h":"#quick-start","p":180},{"i":185,"t":"After the package is published to npm, it will also be available through jsDelivr. Prefer pinning an explicit package version in production: You can replace @1.1.0 with the version you want to consume. During development, @latest also works, but a fixed version is safer for production deployments. When loaded via a + + + + + + + + + + + + +
Version: Latest

Basic examples

+
CrestApps fork

The examples use the vanilla JavaScript / Bootstrap 5+ API: new Selectpicker(el) or the selectpicker class, which auto-initializes. jQuery is not required.

+

The main examples now live directly on this docs page so they inherit the docs theme, including light and dark mode. The standalone HTML files are still kept under docs/static/examples/ for quick smoke-testing outside Docusaurus.

+

Standard select boxes

+
+
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+ +

Select boxes with optgroups

+
+
<select class="selectpicker">
<optgroup label="Picnic">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Camping">
<option>Tent</option>
<option>Flashlight</option>
<option>Toilet Paper</option>
</optgroup>
</select>
+

Multiple select boxes

+
+
<select class="selectpicker" multiple>
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+ +

You can add a search input by passing data-live-search="true" attribute:

+
+

Key words

+

Add key words to options to improve their searchability using data-tokens.

+
+
<select class="selectpicker" data-live-search="true">
<option data-tokens="ketchup mustard">Hot Dog, Fries and a Soda</option>
<option data-tokens="mustard">Burger, Shake and a Smile</option>
<option data-tokens="frosting">Sugar, Spice and all things nice</option>
</select>
+

Tags-style live search with open options

+

Use showSelectedTags to keep selections visible as removable tags above the search box, while the button switches to a compact summary instead of repeating the same values.

+
+
<select
class="selectpicker"
multiple
data-icon-base="fa-solid"
data-tick-icon="fa-check"
data-live-search="true"
data-show-selected-tags="true"
data-open-options="true"
data-live-search-placeholder="Search or create tags"
placeholder="Search or create tags">
<option selected data-icon="fa-seedling">Orchard Core</option>
<option selected data-icon="fa-cubes">Bootstrap 5</option>
<option data-icon="fa-code">Vue</option>
<option data-icon="fa-tags">Taxonomy</option>
<option data-icon="fa-circle-plus">Open option</option>
<option data-icon="fa-wand-magic-sparkles">Editor UX</option>
</select>
+

If you prefer a Bootstrap-style checkbox instead of the floating checkmark, set selectionIndicator to checkbox:

+
+
<select
class="selectpicker"
multiple
data-live-search="true"
data-show-selected-tags="true"
data-selection-indicator="checkbox"
placeholder="Choose frameworks">
<option selected>Bootstrap 5</option>
<option>Vue</option>
<option>React</option>
<option>Svelte</option>
</select>
+

List-style menu

+

Set selectedItemsStyle to list to render the removable selections as a stacked Bootstrap list group:

+
+
<select
class="selectpicker"
multiple
data-live-search="true"
data-show-selected-tags="true"
data-selected-items-style="list">
<option selected>Orchard Core</option>
<option selected>Bootstrap 5</option>
<option>Vue</option>
</select>
+

Floating labels with visible tags

+

When a tags-style picker is placed inside a Bootstrap 5 form-floating wrapper, the selected tags stay visible inside the control after the menu closes, with balanced top and bottom spacing around the tags.

+
+
<div class="form-floating">
<select
id="floating-tags-example"
class="selectpicker"
multiple
data-live-search="true"
data-show-selected-tags="true"
data-open-options="true"
placeholder="Years">
<option selected>2026</option>
<option selected>2023</option>
<option selected>2021</option>
</select>
<label for="floating-tags-example">Years</label>
</div>
+

For remote-backed pickers, initialize with JavaScript and provide source.create(callback, searchValue) to save the new item before selecting it:

+
new Selectpicker('#tag-editor', {
liveSearch: true,
showSelectedTags: true,
openOptions: true,
source: {
data: function (callback) {
callback(existingTags);
},
search: function (callback, page, searchValue) {
callback(filterTags(searchValue));
},
create: function (callback, searchValue) {
saveTag(searchValue).then(function (tag) {
callback({
text: tag.displayText,
value: tag.id
});
});
}
}
});
+

Limit the number of selections

+

Limit the number of options that can be selected via the data-max-options attribute. It also works for option groups. Customize the message displayed when the limit is reached with maxOptionsText.

+
+
<select class="selectpicker" multiple data-max-options="2">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>

<select class="selectpicker" multiple>
<optgroup label="Condiments" data-max-options="2">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Breads" data-max-options="2">
<option>Plain</option>
<option>Steamed</option>
<option>Toasted</option>
</optgroup>
</select>
+

Custom button text

+
+

Placeholder

+

+

Use the placeholder attribute to set the default placeholder text when nothing is selected. This works for both multiple and standard select boxes:

+
+
<select class="selectpicker" multiple placeholder="Choose one of the following...">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Selected text

+

+

Set the title attribute on individual options to display alternative text when the option is selected:

+
+
<select class="selectpicker">
<option title="Combo 1">Hot Dog, Fries and a Soda</option>
<option title="Combo 2">Burger, Shake and a Smile</option>
<option title="Combo 3">Sugar, Spice and all things nice</option>
</select>
+

Selected text format

+

+

Specify how the selection is displayed with the data-selected-text-format attribute on a multiple select.

+

The supported values are:

+
    +
  • values: A comma delimited list of selected values (default)
  • +
  • count: If one item is selected, then the option value is shown. If more than one is selected then the number of selected items is displayed, e.g. 2 of 6 selected
  • +
  • count > x: Where x is the number of items selected when the display format changes from values to count
  • +
  • static: Always show the placeholder, regardless of selection
  • +
+
+
<select class="selectpicker" multiple data-selected-text-format="count">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+
+
<select class="selectpicker" multiple data-selected-text-format="count > 3">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
<option>Onions</option>
</select>
+

Styling

+
+

Button classes

+

You can set the button classes via the data-style attribute:

+
+
<select class="selectpicker" data-style="btn-primary">
...
</select>

<select class="selectpicker" data-style="btn-secondary">
...
</select>

<select class="selectpicker" data-style="btn-success">
...
</select>

<select class="selectpicker" data-style="btn-dark">
...
</select>

<select class="selectpicker" data-style="btn-light">
...
</select>

<select class="selectpicker" data-style="btn-danger">
...
</select>
+

Checkmark on selected option

+

You can also show the checkmark icon on standard select boxes with the show-tick class:

+
+
<select class="selectpicker show-tick">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+ +

The Bootstrap menu arrow can be added with the show-menu-arrow class:

+
+
<select class="selectpicker show-menu-arrow">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Style individual options

+

+

Classes and styles added to options are transferred to the select box:

+
+
<select class="selectpicker">
<option>Mustard</option>
<option class="special">Ketchup</option>
<option style="background: #5cb85c; color: #fff;">Relish</option>
</select>
+
.special {
font-weight: bold !important;
color: #fff !important;
background: #bc0000 !important;
text-transform: uppercase;
}
+

Width

+

+

Wrap selects in grid columns, or any custom parent element, to easily enforce desired widths.

+
+
<div class="row">
<div class="col-sm-3">
<div class="form-group">
<select class="selectpicker form-control">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
</div>
</div>
</div>
+

Customize options

+
+

Font Awesome icons

+

This example uses Font Awesome. Add an icon to an option or optgroup with the data-icon attribute:

+
Bootstrap 5 icons

Bootstrap 5 does not include an icon font. To use Font Awesome or another icon library, set iconBase and tickIcon to match that library.

+

The selected option renders its icon in the button, and the menu shows the icons for the remaining options as well.

+
+
<select class="selectpicker" data-icon-base="fa-solid" data-tick-icon="fa-check">
<option selected data-icon="fa-heart">Ketchup</option>
</select>
+

Custom content

+

Insert custom HTML into the option with the data-content attribute:

+
Custom content is sanitized

This feature inserts HTML into the DOM. By default, it is sanitized using our built-in sanitizer.

+
+
<select class="selectpicker">
<option data-content="<span class='badge text-bg-success'>Relish</span>">Relish</option>
</select>
+

Subtext

+

Add subtext to an option or optgroup with the data-subtext attribute:

+
+
<select class="selectpicker" data-size="5">
<option data-subtext="Heinz">Ketchup</option>
</select>
+

Customize menu

+
+ +

The size option is set to 'auto' by default. When size is set to 'auto', the menu always opens up to show as many items as the window will allow without being cut off. Set size to false to always show all items. The size of the menu can also be specifed using the data-size attribute.

+
+

+

Specify a number for data-size to choose the maximum number of items to show in the menu.

+
+
<select class="selectpicker" data-size="5">
...
</select>
+

Select/deselect all options

+

Adds two buttons to the top of the menu - Select All & Deselect All with data-actions-box="true".

+
+
<select class="selectpicker" multiple data-actions-box="true">
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Divider

+

Add data-divider="true" to an option to turn it into a divider.

+
+
<select class="selectpicker" data-size="5">
<option data-divider="true"></option>
</select>
+ +

Add a header to the dropdown menu, e.g. header: 'Select a condiment' or data-header="Select a condiment"

+
+
<select class="selectpicker" data-header="Select a condiment">
...
</select>
+

Dropup menu

+

dropupAuto is set to true by default, which automatically determines whether or not the menu should display above or below the select box. If dropupAuto is set to false, manually make the select a dropup menu by adding the .dropup class to the select.

+
+
<select class="selectpicker dropup" data-dropup-auto="false">
...
</select>
+

Disabled

+
+

Disabled select box

+
+
<select class="selectpicker" disabled>
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</select>
+

Disabled options

+
+
<select class="selectpicker">
<option>Mustard</option>
<option disabled>Ketchup</option>
<option>Relish</option>
</select>
+

Disabled option groups

+
+
<select class="selectpicker test">
<optgroup label="Picnic" disabled>
<option>Mustard</option>
<option>Ketchup</option>
<option>Relish</option>
</optgroup>
<optgroup label="Camping">
<option>Tent</option>
<option>Flashlight</option>
<option>Toilet Paper</option>
</optgroup>
</select>
+ + \ No newline at end of file diff --git a/docs/docs/index.html b/docs/docs/index.html new file mode 100644 index 00000000..93d7935c --- /dev/null +++ b/docs/docs/index.html @@ -0,0 +1,56 @@ + + + + + +Getting Started | bootstrap-select + + + + + + + + + + + + +
Version: Latest

Getting Started

+
CrestApps fork

This is the CrestApps fork of snapappointments/bootstrap-select. It removes the jQuery dependency entirely, uses plain vanilla JavaScript, and supports Bootstrap 5+ only. Older Bootstrap and jQuery compatibility paths are intentionally out of scope so the library can stay small and forward-focused.

+

Quick start

+

bootstrap-select requires Bootstrap 5+ (CSS and JS, including its bundled Popper). +jQuery is not required.

+

Install with npm:

+
npm install @crestapps/bootstrap-select bootstrap
+

Load Bootstrap 5 first, then bootstrap-select's CSS and JS (after Bootstrap's JavaScript):

+
<!-- Bootstrap 5 (includes Popper) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>

<!-- bootstrap-select -->
<link rel="stylesheet" href="dist/css/bootstrap-select.min.css">
<script src="dist/js/bootstrap-select.min.js"></script>

<!-- (Optional) translation files -->
<script src="dist/js/i18n/defaults-*.min.js"></script>
+

Using the CDN build

+

After the package is published to npm, it will also be available through jsDelivr. +Prefer pinning an explicit package version in production:

+
<!-- Bootstrap 5 (includes Popper) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"></script>

<!-- @crestapps/bootstrap-select from jsDelivr -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@crestapps/bootstrap-select@1.1.0/dist/css/bootstrap-select.min.css">
<script src="https://cdn.jsdelivr.net/npm/@crestapps/bootstrap-select@1.1.0/dist/js/bootstrap-select.min.js"></script>
+

You can replace @1.1.0 with the version you want to consume. During development, +@latest also works, but a fixed version is safer for production deployments.

+

When loaded via a <script> tag, the plugin exposes a global Selectpicker class. +Modern JavaScript can import the ES module entry:

+
import Selectpicker from '@crestapps/bootstrap-select';
+

Usage

+
+

Via selectpicker class

+

Add the selectpicker class to your select elements to auto-initialize bootstrap-select +once the DOM is ready.

+
<select class="selectpicker">
<option>Mustard</option>
<option>Ketchup</option>
<option>Barbecue</option>
</select>
+

Via JavaScript

+
// Initialize one select (accepts an element or a selector string)
new Selectpicker('#my-select', { liveSearch: true });
+

or

+
// Initialize several selects
document.querySelectorAll('.my-select').forEach(function (el) {
new Selectpicker(el);
});
+

If calling bootstrap-select via JavaScript, run your code after the elements exist — +either place the script at the bottom of the page (after the last <select>) or wrap +it in a DOMContentLoaded listener:

+
document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('select').forEach(function (el) {
new Selectpicker(el);
});
});
+

Tags-style editor pattern

+

For taxonomy-style experiences, combine live search, removable selected tags, and open-option creation so selections stay visible as tags without repeating the full list in the button:

+
new Selectpicker('#tag-editor', {
liveSearch: true,
showSelectedTags: true,
openOptions: true,
selectionIndicator: 'checkbox'
});
+

See Examples for a live demo and Options for the full source.create(callback, searchValue) flow used by remote-backed editors.

+ + \ No newline at end of file diff --git a/docs/docs/methods/index.html b/docs/docs/methods/index.html new file mode 100644 index 00000000..9d13f24e --- /dev/null +++ b/docs/docs/methods/index.html @@ -0,0 +1,99 @@ + + + + + +Methods | bootstrap-select + + + + + + + + + + + + +
Version: Latest

Methods

+

Interface with bootstrap-select.

+

In this fork, methods are called directly on the Selectpicker instance (there +is no jQuery $.fn.selectpicker). Obtain an instance with +Selectpicker.getInstance(elementOrSelector) (returns the existing instance) or +Selectpicker.getOrCreateInstance(elementOrSelector, options).

+
const picker = Selectpicker.getInstance('#my-select');
+
+

.val()

+

You can set the selected value by calling the val method on the instance.

+
Selectpicker.getInstance('#my-select').val('Mustard');
Selectpicker.getInstance('#my-select').val(['Mustard', 'Relish']);
+

This is different to setting value directly on the select element. If you set +value on the element directly, the bootstrap-select UI will not refresh (as the +change event only fires from user interaction). You will have to call the UI +render method yourself.

+
const select = document.querySelector('#my-select');
select.value = 'Mustard';
Selectpicker.getInstance(select).render();

// this is the equivalent of the above
Selectpicker.getInstance(select).val('Mustard');
+

Called with no argument, val() returns the current value (a string for single +selects, or an array of strings for multiple selects).

+
+

.selectAll()

+

This will select all items in a multi-select.

+
Selectpicker.getInstance('#my-select').selectAll();
+
+

.deselectAll()

+

This will deselect all items in a multi-select.

+
Selectpicker.getInstance('#my-select').deselectAll();
+
+

.render()

+

You can force a re-render of the bootstrap-select UI with the render method. +This is useful if you programmatically change any underlying values that affect +the layout of the element.

+
Selectpicker.getInstance('#my-select').render();
+
+

.mobile()

+

Enable mobile scrolling by calling mobile(). This enables the device's native +menu for select menus.

+

The method for detecting the browser is left up to the user.

+
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {
Selectpicker.getInstance('#my-select').mobile();
}
+
+

.setStyle()

+

Modify the class(es) associated with either the button itself or its container.

+

If changing the class on the container:

+
const select = document.querySelector('#my-select');
select.closest('.bootstrap-select').classList.add('col-lg-12');
Selectpicker.getInstance(select).setStyle();
+

If changing the class(es) on the button (altering data-style):

+
const picker = Selectpicker.getInstance('#my-select');

// Replace class
picker.setStyle('btn-danger');

// Add class
picker.setStyle('btn-lg', 'add');

// Remove class
picker.setStyle('btn-lg', 'remove');
+
+

.refresh()

+

To programmatically update a select with JavaScript, first manipulate the select, +then use the refresh method to update the UI to match the new state. This is +necessary when removing or adding options, or when disabling/enabling a select +via JavaScript.

+
Selectpicker.getInstance('#my-select').refresh();
+

For example, to remove an option then refresh:

+
document.querySelector('.rm-mustard').addEventListener('click', function () {
const select = document.querySelector('.remove-example');
const option = select.querySelector('[value="Mustard"]');
if (option) option.remove();
Selectpicker.getInstance(select).refresh();
});
+

Or to disable/enable a select:

+
const select = document.querySelector('.disable-example');

document.querySelector('.ex-disable').addEventListener('click', function () {
select.disabled = true;
Selectpicker.getInstance(select).refresh();
});

document.querySelector('.ex-enable').addEventListener('click', function () {
select.disabled = false;
Selectpicker.getInstance(select).refresh();
});
+
+

.toggle()

+

Programmatically toggles the bootstrap-select menu open/closed.

+
Selectpicker.getInstance('#my-select').toggle();
+

.open() and .close() are also available.

+
+

.hide()

+

To programmatically hide the bootstrap-select use the hide method (this only +affects the visibility of the bootstrap-select itself).

+
Selectpicker.getInstance('#my-select').hide();
+
+

.show()

+

To programmatically show the bootstrap-select use the show method (this only +affects the visibility of the bootstrap-select itself).

+
Selectpicker.getInstance('#my-select').show();
+
+

.destroy()

+

To programmatically destroy the bootstrap-select, use the destroy method. This +removes the generated UI and restores the original <select> element.

+
Selectpicker.getInstance('#my-select').destroy();
+
+

Static methods

+
MethodDescription
new Selectpicker(elementOrSelector, options)Create a new instance.
Selectpicker.getInstance(elementOrSelector)Return the existing instance for an element, or null.
Selectpicker.getOrCreateInstance(elementOrSelector, options)Return the existing instance, creating one if needed.
Selectpicker.setDefaults(options)Set global default options (used by the i18n translation files).
Selectpicker.VERSIONThe plugin version.
+ + \ No newline at end of file diff --git a/docs/docs/options/index.html b/docs/docs/options/index.html new file mode 100644 index 00000000..f011c399 --- /dev/null +++ b/docs/docs/options/index.html @@ -0,0 +1,433 @@ + + + + + +Options | bootstrap-select + + + + + + + + + + + + +
Version: Latest
CrestApps fork

The options and data attributes documented on this page are part of the current forward-only API. Initialize with new Selectpicker('#sel', options) or add the selectpicker class for automatic initialization. Global defaults are set with Selectpicker.setDefaults({ ... }).

+

Core options

+
+

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in +data-style="" or data-selected-text-format="count".

+
Data attributes

For security reasons, the sanitize, sanitizeFn, and whiteList options cannot be supplied using data attributes.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDefaultDescription
actionsBoxbooleanfalse +

When set to true, adds two buttons to the top of the dropdown menu (Select All & Deselect All).

+
countSelectedTextstring | functionfunction +

Sets the format for the text displayed when selectedTextFormat is count or count > #. {0} is the selected amount. {1} is total available for selection.

+

When set to a function, the first parameter is the number of selected options, and the second is the total number of + options. The function must return a string.

+
deselectAllTextstring'Deselect All' +

The text on the button that deselects all options when actionsBox is enabled.

+
dropdownAlignRightboolean | 'auto'false +

Align the menu to the right instead of the left. If set to 'auto', the menu will automatically align right if there isn't room for the menu's full width when aligned to the left.

+
dropupAutobooleantrue +

checks to see which has more room, above or below. If the dropup has enough room to fully open normally, but + there is more room above, the dropup still opens normally. Otherwise, it becomes a dropup. If dropupAuto is + set to false, dropups must be called manually.

+
headerstringfalse +

adds a header to the top of the menu; includes a close button by default

+
hideDisabledbooleanfalse +

removes disabled options and optgroups from the menu data-hide-disabled: true

+
iconBasestring'' +

Set the base class for an icon font such as Font Awesome. If changing iconBase, you might also want to change tickIcon, in case the icon font uses a different naming scheme.

+
liveSearchbooleanfalse +

When set to true, adds a search box to the top of the selectpicker dropdown.

+
liveSearchNormalizebooleanfalse +

Setting liveSearchNormalize to true allows for accent-insensitive searching.

+
liveSearchPlaceholderstringnull +

When set to a string, a placeholder attribute equal to the string will be added to the liveSearch input.

+
liveSearchStylestring | function'contains' +

When set to 'contains', searching will reveal options that contain the searched text. For example, searching for pl with return both Apple, Plum, and Plantain. When set to 'startsWith', searching for pl will return only Plum and Plantain. If a function is used, the arguments are the option string and the searched text and it must return true if the option matches or false.

+
openOptionsbooleanfalse +

When set to true, the live-search UI shows a Create action whenever the current search text does not exactly match an existing option.

+

If options.source.create(callback, searchValue) is supplied, it will be used to resolve the created option. Otherwise the control creates a local option using the search text for both text and value.

+
openOptionsTextstring'Create "{0}"' +

Sets the label for the open-option create action. {0} is replaced with the current search text.

+
maxOptionsinteger | falsefalse +

When set to an integer and in a multi-select, the number of selected options cannot exceed the given value.

+

This option can also exist as a data-attribute for an <optgroup>, in which case it only applies to that <optgroup>.

+
maxOptionsTextstring | array | functionfunction +

The text that is displayed when maxOptions is enabled and the maximum number of options for the given scenario have been selected.

+

If a function is used, it must return an array. array[0] is the text used when maxOptions is applied to the entire select element. array[1] is the text used when maxOptions is used on an optgroup. If a string is used, the same text is used for both the element and the optgroup.

+
multipleSeparatorstring', ' +

Set the character displayed in the button that separates selected options.

+
noneSelectedTextstring'Nothing selected' +

The text that is displayed when a multiple select has no selected options.

+
noneResultsTextstring'No results matched {0}' +

The text displayed when a search doesn't return any results.

+
selectAllTextstring'Select All' +

The text on the button that selects all options when actionsBox is enabled.

+
selectedTextFormat'values' | 'static' | 'count' | 'count > x' (where x is an integer)'values' +

Specifies how the selection is displayed with a multiple select.

+

+ 'values' displays a list of the selected options (separated by multipleSeparator). +
+ 'static' displays the configured placeholder text. +
+ 'count > x' behaves like 'values' until the number of selected options is greater than x; after that, it displays the total number of selected options. +
+ 'count' is an alias for 'count > 1'. +

+
selectOnTabbooleanfalse +

When set to true, treats the tab character like the enter or space characters within the selectpicker dropdown.

+
showContentbooleantrue +

When set to true, display custom HTML associated with selected option(s) in the button. When set to false, the option value will be displayed instead.

+
showIconbooleantrue +

When set to true, display icon(s) associated with selected option(s) in the button.

+
showSubtextbooleanfalse +

When set to true, display subtext associated with a selected option in the button.

+
showSelectedTagsbooleanfalse +

For live-search selects, shows the current selections as removable tags that stay visible on the control, similar to a taxonomy tags editor. The button uses a compact summary instead of repeating the selected values.

+
showTickbooleanfalse +

Show checkmark on selected option (for items without multiple attribute).

+
selectedItemsStyle'tags' | 'list''tags' +

Controls how removable selected items are rendered when showSelectedTags is enabled. Use 'list' to render them as a Bootstrap list group with a remove button aligned to the right.

+
selectedTagRemoveLabelstring'Remove' +

Accessible label prefix used for each removable selected item when showSelectedTags is enabled.

+
selectionIndicator'checkmark' | 'checkbox''checkmark' +

Controls how selected items are indicated in the dropdown. Use 'checkbox' to render a Bootstrap-style checkbox column instead of the default floating checkmark.

+
size'auto' | integer | false'auto' +

When set to 'auto', the menu always opens up to show as many items as the window will allow + without being cut off.

+

When set to an integer, the menu will show the given number of items, even if the dropdown is cut off.

+

When set to false, the menu will always show all items.

+
stylestring | null + 'btn-light' + +

When set to a string, add the value to the button's style.

+
tickIconstring'bs-ok-default' +

Set which icon to use to display as the "tick" next to selected options.

+
virtualScrollboolean | integer600 +

If enabled, the items in the dropdown will be rendered using virtualization (i.e. only the items that are within the viewport will be rendered). This drastically improves performance for selects with a large number of options. Set to an integer to only use virtualization if the select has at least that number of options.

+
sanitizebooleantrue +

Enable or disable the sanitization. If activated, 'data-content' on individual options will be sanitized.

+
whiteListobjectDefault value +

Object which contains allowed attributes and tags

+
sanitizeFnnull | functionnull +

Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization.

+
+
Bootstrap 5 runtime defaults

This Bootstrap 5 build no longer supports the legacy container, mobile, styleBase, width, or windowPadding options. Layout should follow normal Bootstrap sizing and grid utilities, and the picker now fills its container by default.

+

Tags-style live search and open options

+

The showSelectedTags and openOptions settings are intended for taxonomy-style editors where authors need to keep selected values visible while continuing to search.

+

When both are enabled on a multiple select:

+
    +
  1. Selected values stay visible as removable tags on the control while the search UI stays available.
  2. +
  3. Typing a value that does not exactly match an existing option shows a create action.
  4. +
  5. Choosing that action creates and selects the option immediately.
  6. +
+

Use data attributes when local in-browser creation is enough:

+
<select
class="selectpicker"
multiple
data-live-search="true"
data-show-selected-tags="true"
data-open-options="true"
placeholder="Search or create tags">
<option selected>Orchard Core</option>
<option>Vue</option>
<option>Taxonomy</option>
</select>
+

Use JavaScript when the picker is backed by a remote source and new terms must be saved first:

+
new Selectpicker('#tag-editor', {
liveSearch: true,
showSelectedTags: true,
openOptions: true,
openOptionsText: 'Create tag "{0}"',
selectedTagRemoveLabel: 'Remove tag',
selectionIndicator: 'checkbox',
source: {
data: function (callback) {
callback(existingTags);
},
search: function (callback, page, searchValue) {
callback(findMatchingTags(searchValue));
},
create: function (callback, searchValue) {
createTag(searchValue).then(function (tag) {
callback({
text: tag.displayText,
value: tag.id
});
});
}
}
});
+

source.create can return the created option synchronously, invoke the provided callback later, or resolve a Promise. In each case, the picker adds the returned option and selects it automatically.

+

Default settings

+
+

You can change the default settings for bootstrap-select by modifying its DEFAULTS object (or by calling Selectpicker.setDefaults({ … })):

+
Selectpicker.DEFAULTS.multipleSeparator = ' | ';
+

Events

+
+

Bootstrap-select exposes a few events for hooking into select functionality.

+

hide.bs.select, hidden.bs.select, show.bs.select, and shown.bs.select all have a relatedTarget property, whose value is the toggling anchor element.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Event TypeDescription
show.bs.selectThis event fires immediately when the show instance method is called.
shown.bs.selectThis event is fired when the dropdown has been made visible to the user (will wait for CSS transitions, to complete).
hide.bs.selectThis event is fired immediately when the hide instance method has been called.
hidden.bs.selectThis event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete).
loaded.bs.selectThis event fires after the select has been initialized.
rendered.bs.selectThis event fires after the render instance has been called.
refreshed.bs.selectThis event fires after the refresh instance has been called.
changed.bs.select +

This event fires after the select's value has been changed. The detail object passes clickedIndex, isSelected, and previousValue via event.detail.

+

previousValue is the value of the select prior to being changed. If the select's value has been changed either via the val(), selectAll(), or deselectAll() methods, clickedIndex and isSelected will be null.

+
+
document.querySelector('#mySelect').addEventListener('changed.bs.select', function (e) {
const { clickedIndex, isSelected, previousValue } = e.detail;
// do something...
});
+

Sanitizer

+
+

HTML added via the data-content attribute on individual options is sanitized using our built-in sanitizer.

+

The default whiteList value is the following:

+
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
var DefaultWhitelist = {
// Global attributes allowed on any supplied element below.
'*': ['class', 'dir', 'id', 'lang', 'role', 'tabindex', 'style', ARIA_ATTRIBUTE_PATTERN],
a: ['target', 'href', 'title', 'rel'],
area: [],
b: [],
br: [],
col: [],
code: [],
div: [],
em: [],
hr: [],
h1: [],
h2: [],
h3: [],
h4: [],
h5: [],
h6: [],
i: [],
img: ['src', 'alt', 'title', 'width', 'height'],
li: [],
ol: [],
p: [],
pre: [],
s: [],
small: [],
span: [],
sub: [],
sup: [],
strong: [],
u: [],
ul: []
}
+

If you want to add new values to this default whiteList you can do the following:

+
var myDefaultWhiteList = Selectpicker.DEFAULTS.whiteList;

// To allow table elements
myDefaultWhiteList.table = [];

// To allow td elements and data-option attributes on td elements
myDefaultWhiteList.td = ['data-option'];

// You can push your custom regex to validate your attributes.
// Be careful about your regular expressions being too lax
var myCustomRegex = /^data-my-app-[\w-]+/;
myDefaultWhiteList['*'].push(myCustomRegex);
+

If you want to bypass our sanitizer because you prefer to use a dedicated library, you should do the following:

+
new Selectpicker('#yourSelect', {
sanitizeFn: function (domNodes) {
return DOMPurify.sanitize(domNodes)
}
});
+

For performance reasons, our built-in sanitizer accepts an array of DOM nodes as its first argument, rather than an HTML string. Keep that in mind if deciding to use your own sanitizeFn.

+ + \ No newline at end of file diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index d48c8104..ee00b274 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -17,7 +17,7 @@ const config = { baseUrl: normalizedBaseUrl, organizationName: 'CrestApps', projectName: 'crestapps-bootstrap-select', - trailingSlash: false, + trailingSlash: true, onBrokenLinks: 'throw', markdown: { hooks: { @@ -68,6 +68,7 @@ const config = { /** @type {import('@docusaurus/preset-classic').Options} */ ({ docs: { + path: 'content', sidebarPath: require.resolve('./sidebars.js'), editUrl: 'https://github.com/CrestApps/crestapps-bootstrap-select/tree/main/docs/', lastVersion: 'current', diff --git a/docs/examples/basic.html b/docs/examples/basic.html new file mode 100644 index 00000000..e79cbf41 --- /dev/null +++ b/docs/examples/basic.html @@ -0,0 +1,23 @@ + + + + + + bootstrap-select basic example + + + + +
+

Basic selectpicker

+

This standalone page is served by the Docusaurus site and uses the local plugin build.

+ +
+ + + + diff --git a/docs/examples/live-search.html b/docs/examples/live-search.html new file mode 100644 index 00000000..ba1b35c8 --- /dev/null +++ b/docs/examples/live-search.html @@ -0,0 +1,23 @@ + + + + + + bootstrap-select live search example + + + + +
+

Live search

+

Search the hosted example to verify the local plugin build.

+ +
+ + + + diff --git a/docs/examples/multiple.html b/docs/examples/multiple.html new file mode 100644 index 00000000..f534f654 --- /dev/null +++ b/docs/examples/multiple.html @@ -0,0 +1,25 @@ + + + + + + bootstrap-select multiple example + + + + +
+

Multiple select

+

Use Select All and Deselect All to test multiselect behavior.

+ +
+ + + + diff --git a/docs/examples/tags-editor.html b/docs/examples/tags-editor.html new file mode 100644 index 00000000..30bd8c78 --- /dev/null +++ b/docs/examples/tags-editor.html @@ -0,0 +1,38 @@ + + + + + + bootstrap-select tags editor example + + + + + +
+

Tags editor

+

Search existing tags, remove selected ones inline, or create a new option when nothing matches.

+ +
+ + + + diff --git a/docs/img/logo.png b/docs/img/logo.png new file mode 100644 index 00000000..15fb05c1 Binary files /dev/null and b/docs/img/logo.png differ diff --git a/docs/img/logo.svg b/docs/img/logo.svg new file mode 100644 index 00000000..3c343057 --- /dev/null +++ b/docs/img/logo.svg @@ -0,0 +1,86 @@ + + CrestApps Package-ai + + + + + + + + + + + + + + + + + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..f7296151 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,21 @@ + + + + + +CrestApps bootstrap-select | bootstrap-select + + + + + + + + + + + + +

bootstrap-select for modern Bootstrap

A dependency-free, vanilla JavaScript fork of bootstrap-select for Bootstrap 5+.

Enhance native select elements with searchable menus, multiselects, custom text, sizing, and events while keeping jQuery out of your application.

Vanilla JavaScript

Use the Selectpicker class directly, with no jQuery dependency or legacy Bootstrap compatibility paths.

Bootstrap 5+

Built for modern Bootstrap projects and loaded alongside Bootstrap bundle assets in the docs examples.

Hosted examples

Exercise live selectpicker examples in the docs site or open standalone HTML examples served from the same Docusaurus app.

+ + \ No newline at end of file diff --git a/docs/js/chunk-recovery.js b/docs/js/chunk-recovery.js new file mode 100644 index 00000000..afc94853 --- /dev/null +++ b/docs/js/chunk-recovery.js @@ -0,0 +1,92 @@ +(function () { + if (typeof window === 'undefined') return; + + var retryKey = 'bootstrap-select-docs-chunk-retry'; + var retryTtlMs = 60000; + + function now () { + return Date.now(); + } + + function readRetryState () { + try { + var raw = window.sessionStorage.getItem(retryKey); + return raw ? JSON.parse(raw) : null; + } catch (error) { + return null; + } + } + + function writeRetryState () { + try { + window.sessionStorage.setItem(retryKey, JSON.stringify({ + path: window.location.pathname, + time: now() + })); + } catch (error) {} + } + + function canRetryCurrentPath () { + var state = readRetryState(); + + return !state || + state.path !== window.location.pathname || + now() - state.time > retryTtlMs; + } + + function cleanupRetryQuery () { + var url = new URL(window.location.href); + + if (!url.searchParams.has('__chunk_retry')) return; + + url.searchParams.delete('__chunk_retry'); + window.history.replaceState(window.history.state, document.title, url.toString()); + } + + function isAssetScriptEvent (event) { + var target = event && event.target; + return !!(target && + target.tagName === 'SCRIPT' && + typeof target.src === 'string' && + /\/assets\/js\/.+\.js(?:[?#].*)?$/.test(target.src)); + } + + function isChunkLoadError (error) { + if (!error) return false; + + var message = typeof error === 'string' + ? error + : error.message || ''; + + return error.name === 'ChunkLoadError' || + /Loading chunk [^ ]+ failed/i.test(message); + } + + function recoverFromChunkError () { + if (!canRetryCurrentPath()) return; + + writeRetryState(); + + var url = new URL(window.location.href); + url.searchParams.set('__chunk_retry', now().toString()); + window.location.replace(url.toString()); + } + + window.addEventListener('load', cleanupRetryQuery); + + window.addEventListener('error', function (event) { + if (isAssetScriptEvent(event) || isChunkLoadError(event.error)) { + recoverFromChunkError(); + } + }, true); + + window.addEventListener('unhandledrejection', function (event) { + if (!isChunkLoadError(event.reason)) return; + + if (typeof event.preventDefault === 'function') { + event.preventDefault(); + } + + recoverFromChunkError(); + }); +}()); diff --git a/docs/playground/5/index.html b/docs/playground/5/index.html new file mode 100644 index 00000000..1b34425d --- /dev/null +++ b/docs/playground/5/index.html @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/playground/index.html b/docs/playground/index.html new file mode 100644 index 00000000..7ae26e28 --- /dev/null +++ b/docs/playground/index.html @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/playground/plnkrOpener.js b/docs/playground/plnkrOpener.js new file mode 100644 index 00000000..22b319a6 --- /dev/null +++ b/docs/playground/plnkrOpener.js @@ -0,0 +1,87 @@ +document.addEventListener('DOMContentLoaded', function () { + function formPostData (url, fields) { + var form = document.createElement('form'); + form.style.display = 'none'; + form.method = 'post'; + form.action = url; + + Object.keys(fields).forEach(function (name) { + var input = document.createElement('input'); + input.type = 'hidden'; + input.name = name; + input.value = fields[name]; + form.appendChild(input); + }); + + document.body.appendChild(form); + form.submit(); + form.remove(); + } + + function getText (url) { + return fetch(url).then(function (response) { + if (!response.ok) throw new Error('Unable to load ' + url); + return response.text(); + }); + } + + function openPlayground () { + var opener = document.getElementById('plnkrOpener'); + var bootstrapVersion = opener.getAttribute('data-bootstrap-version') || '5'; + var name = 'bootstrap-select playground (Bootstrap ' + bootstrapVersion + ')'; + var assetBase = new URL('.', opener.src); + var postData = { + 'tags[0]': 'vanilla-js', + 'tags[1]': 'bootstrap-select', + 'private': true, + description: name + }; + + var files = [ + { + name: 'index.html', + content: '\n' + + '\n' + + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '\n' + + '\n' + + ' \n' + + ' ","s":"Quick start","u":"/docs/","h":"#quick-start","p":1},{"i":6,"t":"After the package is published to npm, it will also be available through jsDelivr. Prefer pinning an explicit package version in production: You can replace @1.1.0 with the version you want to consume. During development, @latest also works, but a fixed version is safer for production deployments. When loaded via a + + + + + + + + + +

Search the documentation

+ + \ No newline at end of file diff --git a/docs/sitemap.xml b/docs/sitemap.xml new file mode 100644 index 00000000..105a617f --- /dev/null +++ b/docs/sitemap.xml @@ -0,0 +1 @@ +https://bootstrap-select.crestapps.com/search/weekly0.5https://bootstrap-select.crestapps.com/docs/1.0/weekly0.5https://bootstrap-select.crestapps.com/docs/1.0/examples/weekly0.5https://bootstrap-select.crestapps.com/docs/1.0/methods/weekly0.5https://bootstrap-select.crestapps.com/docs/1.0/options/weekly0.5https://bootstrap-select.crestapps.com/docs/1.1/weekly0.5https://bootstrap-select.crestapps.com/docs/1.1/examples/weekly0.5https://bootstrap-select.crestapps.com/docs/1.1/methods/weekly0.5https://bootstrap-select.crestapps.com/docs/1.1/options/weekly0.5https://bootstrap-select.crestapps.com/docs/weekly0.5https://bootstrap-select.crestapps.com/docs/examples/weekly0.5https://bootstrap-select.crestapps.com/docs/methods/weekly0.5https://bootstrap-select.crestapps.com/docs/options/weekly0.5https://bootstrap-select.crestapps.com/weekly0.5 \ No newline at end of file diff --git a/docs/vendor/fontawesome/css/all.min.css b/docs/vendor/fontawesome/css/all.min.css new file mode 100644 index 00000000..b2da17dc --- /dev/null +++ b/docs/vendor/fontawesome/css/all.min.css @@ -0,0 +1,9 @@ +/*! + * Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2026 Fonticons, Inc. + */ +.fa,.fa-brands,.fa-classic,.fa-regular,.fa-solid,.fab,.far,.fas{--_fa-family:var(--fa-family,var(--fa-style-family,"Font Awesome 7 Free"));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:var(--fa-display,inline-block);font-family:var(--_fa-family);font-feature-settings:normal;font-style:normal;font-synthesis:none;font-variant:normal;font-weight:var(--fa-style,900);line-height:1;text-align:center;text-rendering:auto;width:var(--fa-width,1.25em)}:is(.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa-classic,.fa):before{content:var(--fa)/""}@supports not (content:""/""){:is(.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa-classic,.fa):before{content:var(--fa)}}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-width-auto{--fa-width:auto}.fa-fw,.fa-width-fixed{--fa-width:1.25em}.fa-ul{list-style-type:none;margin-inline-start:var(--fa-li-margin,2.5em);padding-inline-start:0}.fa-ul>li{position:relative}.fa-li{inset-inline-start:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.0625em) var(--fa-border-style,solid) var(--fa-border-color,#eee);box-sizing:var(--fa-border-box-sizing,content-box);padding:var(--fa-border-padding,.1875em .25em)}.fa-pull-left,.fa-pull-start{float:inline-start;margin-inline-end:var(--fa-pull-margin,.3em)}.fa-pull-end,.fa-pull-right{float:inline-end;margin-inline-start:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-name:fa-spin;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation:none!important;transition:none!important}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{--fa-width:100%;inset:0;position:absolute;text-align:center;width:var(--fa-width);z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)} + +.fa-0{--fa:"\30 "}.fa-1{--fa:"\31 "}.fa-2{--fa:"\32 "}.fa-3{--fa:"\33 "}.fa-4{--fa:"\34 "}.fa-5{--fa:"\35 "}.fa-6{--fa:"\36 "}.fa-7{--fa:"\37 "}.fa-8{--fa:"\38 "}.fa-9{--fa:"\39 "}.fa-exclamation{--fa:"\!"}.fa-hashtag{--fa:"\#"}.fa-dollar,.fa-dollar-sign,.fa-usd{--fa:"\$"}.fa-percent,.fa-percentage{--fa:"\%"}.fa-asterisk{--fa:"\*"}.fa-add,.fa-plus{--fa:"\+"}.fa-less-than{--fa:"\<"}.fa-equals{--fa:"\="}.fa-greater-than{--fa:"\>"}.fa-question{--fa:"\?"}.fa-at{--fa:"\@"}.fa-a{--fa:"A"}.fa-b{--fa:"B"}.fa-c{--fa:"C"}.fa-d{--fa:"D"}.fa-e{--fa:"E"}.fa-f{--fa:"F"}.fa-g{--fa:"G"}.fa-h{--fa:"H"}.fa-i{--fa:"I"}.fa-j{--fa:"J"}.fa-k{--fa:"K"}.fa-l{--fa:"L"}.fa-m{--fa:"M"}.fa-n{--fa:"N"}.fa-o{--fa:"O"}.fa-p{--fa:"P"}.fa-q{--fa:"Q"}.fa-r{--fa:"R"}.fa-s{--fa:"S"}.fa-t{--fa:"T"}.fa-u{--fa:"U"}.fa-v{--fa:"V"}.fa-w{--fa:"W"}.fa-x{--fa:"X"}.fa-y{--fa:"Y"}.fa-z{--fa:"Z"}.fa-faucet{--fa:"\e005"}.fa-faucet-drip{--fa:"\e006"}.fa-house-chimney-window{--fa:"\e00d"}.fa-house-signal{--fa:"\e012"}.fa-temperature-arrow-down,.fa-temperature-down{--fa:"\e03f"}.fa-temperature-arrow-up,.fa-temperature-up{--fa:"\e040"}.fa-trailer{--fa:"\e041"}.fa-bacteria{--fa:"\e059"}.fa-bacterium{--fa:"\e05a"}.fa-box-tissue{--fa:"\e05b"}.fa-hand-holding-medical{--fa:"\e05c"}.fa-hand-sparkles{--fa:"\e05d"}.fa-hands-bubbles,.fa-hands-wash{--fa:"\e05e"}.fa-handshake-alt-slash,.fa-handshake-simple-slash,.fa-handshake-slash{--fa:"\e060"}.fa-head-side-cough{--fa:"\e061"}.fa-head-side-cough-slash{--fa:"\e062"}.fa-head-side-mask{--fa:"\e063"}.fa-head-side-virus{--fa:"\e064"}.fa-house-chimney-user{--fa:"\e065"}.fa-house-laptop,.fa-laptop-house{--fa:"\e066"}.fa-lungs-virus{--fa:"\e067"}.fa-people-arrows,.fa-people-arrows-left-right{--fa:"\e068"}.fa-plane-slash{--fa:"\e069"}.fa-pump-medical{--fa:"\e06a"}.fa-pump-soap{--fa:"\e06b"}.fa-shield-virus{--fa:"\e06c"}.fa-sink{--fa:"\e06d"}.fa-soap{--fa:"\e06e"}.fa-stopwatch-20{--fa:"\e06f"}.fa-shop-slash,.fa-store-alt-slash{--fa:"\e070"}.fa-store-slash{--fa:"\e071"}.fa-toilet-paper-slash{--fa:"\e072"}.fa-users-slash{--fa:"\e073"}.fa-virus{--fa:"\e074"}.fa-virus-slash{--fa:"\e075"}.fa-viruses{--fa:"\e076"}.fa-vest{--fa:"\e085"}.fa-vest-patches{--fa:"\e086"}.fa-arrow-trend-down{--fa:"\e097"}.fa-arrow-trend-up{--fa:"\e098"}.fa-arrow-up-from-bracket{--fa:"\e09a"}.fa-austral-sign{--fa:"\e0a9"}.fa-baht-sign{--fa:"\e0ac"}.fa-bitcoin-sign{--fa:"\e0b4"}.fa-bolt-lightning{--fa:"\e0b7"}.fa-book-bookmark{--fa:"\e0bb"}.fa-camera-rotate{--fa:"\e0d8"}.fa-cedi-sign{--fa:"\e0df"}.fa-chart-column{--fa:"\e0e3"}.fa-chart-gantt{--fa:"\e0e4"}.fa-clapperboard{--fa:"\e131"}.fa-closed-captioning-slash{--fa:"\e135"}.fa-clover{--fa:"\e139"}.fa-code-compare{--fa:"\e13a"}.fa-code-fork{--fa:"\e13b"}.fa-code-pull-request{--fa:"\e13c"}.fa-colon-sign{--fa:"\e140"}.fa-cruzeiro-sign{--fa:"\e152"}.fa-display{--fa:"\e163"}.fa-dong-sign{--fa:"\e169"}.fa-elevator{--fa:"\e16d"}.fa-filter-circle-xmark{--fa:"\e17b"}.fa-florin-sign{--fa:"\e184"}.fa-folder-closed{--fa:"\e185"}.fa-franc-sign{--fa:"\e18f"}.fa-guarani-sign{--fa:"\e19a"}.fa-gun{--fa:"\e19b"}.fa-hands-clapping{--fa:"\e1a8"}.fa-home-user,.fa-house-user{--fa:"\e1b0"}.fa-indian-rupee,.fa-indian-rupee-sign,.fa-inr{--fa:"\e1bc"}.fa-kip-sign{--fa:"\e1c4"}.fa-lari-sign{--fa:"\e1c8"}.fa-litecoin-sign{--fa:"\e1d3"}.fa-manat-sign{--fa:"\e1d5"}.fa-mask-face{--fa:"\e1d7"}.fa-mill-sign{--fa:"\e1ed"}.fa-money-bills{--fa:"\e1f3"}.fa-naira-sign{--fa:"\e1f6"}.fa-notdef{--fa:"\e1fe"}.fa-panorama{--fa:"\e209"}.fa-peseta-sign{--fa:"\e221"}.fa-peso-sign{--fa:"\e222"}.fa-plane-up{--fa:"\e22d"}.fa-rupiah-sign{--fa:"\e23d"}.fa-stairs{--fa:"\e289"}.fa-timeline{--fa:"\e29c"}.fa-truck-front{--fa:"\e2b7"}.fa-try,.fa-turkish-lira,.fa-turkish-lira-sign{--fa:"\e2bb"}.fa-vault{--fa:"\e2c5"}.fa-magic-wand-sparkles,.fa-wand-magic-sparkles{--fa:"\e2ca"}.fa-wheat-alt,.fa-wheat-awn{--fa:"\e2cd"}.fa-wheelchair-alt,.fa-wheelchair-move{--fa:"\e2ce"}.fa-bangladeshi-taka-sign{--fa:"\e2e6"}.fa-bowl-rice{--fa:"\e2eb"}.fa-person-pregnant{--fa:"\e31e"}.fa-home-lg,.fa-house-chimney{--fa:"\e3af"}.fa-house-crack{--fa:"\e3b1"}.fa-house-medical{--fa:"\e3b2"}.fa-cent-sign{--fa:"\e3f5"}.fa-plus-minus{--fa:"\e43c"}.fa-sailboat{--fa:"\e445"}.fa-section{--fa:"\e447"}.fa-shrimp{--fa:"\e448"}.fa-brazilian-real-sign{--fa:"\e46c"}.fa-chart-simple{--fa:"\e473"}.fa-diagram-next{--fa:"\e476"}.fa-diagram-predecessor{--fa:"\e477"}.fa-diagram-successor{--fa:"\e47a"}.fa-earth-oceania,.fa-globe-oceania{--fa:"\e47b"}.fa-bug-slash{--fa:"\e490"}.fa-file-circle-plus{--fa:"\e494"}.fa-shop-lock{--fa:"\e4a5"}.fa-virus-covid{--fa:"\e4a8"}.fa-virus-covid-slash{--fa:"\e4a9"}.fa-anchor-circle-check{--fa:"\e4aa"}.fa-anchor-circle-exclamation{--fa:"\e4ab"}.fa-anchor-circle-xmark{--fa:"\e4ac"}.fa-anchor-lock{--fa:"\e4ad"}.fa-arrow-down-up-across-line{--fa:"\e4af"}.fa-arrow-down-up-lock{--fa:"\e4b0"}.fa-arrow-right-to-city{--fa:"\e4b3"}.fa-arrow-up-from-ground-water{--fa:"\e4b5"}.fa-arrow-up-from-water-pump{--fa:"\e4b6"}.fa-arrow-up-right-dots{--fa:"\e4b7"}.fa-arrows-down-to-line{--fa:"\e4b8"}.fa-arrows-down-to-people{--fa:"\e4b9"}.fa-arrows-left-right-to-line{--fa:"\e4ba"}.fa-arrows-spin{--fa:"\e4bb"}.fa-arrows-split-up-and-left{--fa:"\e4bc"}.fa-arrows-to-circle{--fa:"\e4bd"}.fa-arrows-to-dot{--fa:"\e4be"}.fa-arrows-to-eye{--fa:"\e4bf"}.fa-arrows-turn-right{--fa:"\e4c0"}.fa-arrows-turn-to-dots{--fa:"\e4c1"}.fa-arrows-up-to-line{--fa:"\e4c2"}.fa-bore-hole{--fa:"\e4c3"}.fa-bottle-droplet{--fa:"\e4c4"}.fa-bottle-water{--fa:"\e4c5"}.fa-bowl-food{--fa:"\e4c6"}.fa-boxes-packing{--fa:"\e4c7"}.fa-bridge{--fa:"\e4c8"}.fa-bridge-circle-check{--fa:"\e4c9"}.fa-bridge-circle-exclamation{--fa:"\e4ca"}.fa-bridge-circle-xmark{--fa:"\e4cb"}.fa-bridge-lock{--fa:"\e4cc"}.fa-bridge-water{--fa:"\e4ce"}.fa-bucket{--fa:"\e4cf"}.fa-bugs{--fa:"\e4d0"}.fa-building-circle-arrow-right{--fa:"\e4d1"}.fa-building-circle-check{--fa:"\e4d2"}.fa-building-circle-exclamation{--fa:"\e4d3"}.fa-building-circle-xmark{--fa:"\e4d4"}.fa-building-flag{--fa:"\e4d5"}.fa-building-lock{--fa:"\e4d6"}.fa-building-ngo{--fa:"\e4d7"}.fa-building-shield{--fa:"\e4d8"}.fa-building-un{--fa:"\e4d9"}.fa-building-user{--fa:"\e4da"}.fa-building-wheat{--fa:"\e4db"}.fa-burst{--fa:"\e4dc"}.fa-car-on{--fa:"\e4dd"}.fa-car-tunnel{--fa:"\e4de"}.fa-child-combatant,.fa-child-rifle{--fa:"\e4e0"}.fa-children{--fa:"\e4e1"}.fa-circle-nodes{--fa:"\e4e2"}.fa-clipboard-question{--fa:"\e4e3"}.fa-cloud-showers-water{--fa:"\e4e4"}.fa-computer{--fa:"\e4e5"}.fa-cubes-stacked{--fa:"\e4e6"}.fa-envelope-circle-check{--fa:"\e4e8"}.fa-explosion{--fa:"\e4e9"}.fa-ferry{--fa:"\e4ea"}.fa-file-circle-exclamation{--fa:"\e4eb"}.fa-file-circle-minus{--fa:"\e4ed"}.fa-file-circle-question{--fa:"\e4ef"}.fa-file-shield{--fa:"\e4f0"}.fa-fire-burner{--fa:"\e4f1"}.fa-fish-fins{--fa:"\e4f2"}.fa-flask-vial{--fa:"\e4f3"}.fa-glass-water{--fa:"\e4f4"}.fa-glass-water-droplet{--fa:"\e4f5"}.fa-group-arrows-rotate{--fa:"\e4f6"}.fa-hand-holding-hand{--fa:"\e4f7"}.fa-handcuffs{--fa:"\e4f8"}.fa-hands-bound{--fa:"\e4f9"}.fa-hands-holding-child{--fa:"\e4fa"}.fa-hands-holding-circle{--fa:"\e4fb"}.fa-heart-circle-bolt{--fa:"\e4fc"}.fa-heart-circle-check{--fa:"\e4fd"}.fa-heart-circle-exclamation{--fa:"\e4fe"}.fa-heart-circle-minus{--fa:"\e4ff"}.fa-heart-circle-plus{--fa:"\e500"}.fa-heart-circle-xmark{--fa:"\e501"}.fa-helicopter-symbol{--fa:"\e502"}.fa-helmet-un{--fa:"\e503"}.fa-hill-avalanche{--fa:"\e507"}.fa-hill-rockslide{--fa:"\e508"}.fa-house-circle-check{--fa:"\e509"}.fa-house-circle-exclamation{--fa:"\e50a"}.fa-house-circle-xmark{--fa:"\e50b"}.fa-house-fire{--fa:"\e50c"}.fa-house-flag{--fa:"\e50d"}.fa-house-flood-water{--fa:"\e50e"}.fa-house-flood-water-circle-arrow-right{--fa:"\e50f"}.fa-house-lock{--fa:"\e510"}.fa-house-medical-circle-check{--fa:"\e511"}.fa-house-medical-circle-exclamation{--fa:"\e512"}.fa-house-medical-circle-xmark{--fa:"\e513"}.fa-house-medical-flag{--fa:"\e514"}.fa-house-tsunami{--fa:"\e515"}.fa-jar{--fa:"\e516"}.fa-jar-wheat{--fa:"\e517"}.fa-jet-fighter-up{--fa:"\e518"}.fa-jug-detergent{--fa:"\e519"}.fa-kitchen-set{--fa:"\e51a"}.fa-land-mine-on{--fa:"\e51b"}.fa-landmark-flag{--fa:"\e51c"}.fa-laptop-file{--fa:"\e51d"}.fa-lines-leaning{--fa:"\e51e"}.fa-location-pin-lock{--fa:"\e51f"}.fa-locust{--fa:"\e520"}.fa-magnifying-glass-arrow-right{--fa:"\e521"}.fa-magnifying-glass-chart{--fa:"\e522"}.fa-mars-and-venus-burst{--fa:"\e523"}.fa-mask-ventilator{--fa:"\e524"}.fa-mattress-pillow{--fa:"\e525"}.fa-mobile-retro{--fa:"\e527"}.fa-money-bill-transfer{--fa:"\e528"}.fa-money-bill-trend-up{--fa:"\e529"}.fa-money-bill-wheat{--fa:"\e52a"}.fa-mosquito{--fa:"\e52b"}.fa-mosquito-net{--fa:"\e52c"}.fa-mound{--fa:"\e52d"}.fa-mountain-city{--fa:"\e52e"}.fa-mountain-sun{--fa:"\e52f"}.fa-oil-well{--fa:"\e532"}.fa-people-group{--fa:"\e533"}.fa-people-line{--fa:"\e534"}.fa-people-pulling{--fa:"\e535"}.fa-people-robbery{--fa:"\e536"}.fa-people-roof{--fa:"\e537"}.fa-person-arrow-down-to-line{--fa:"\e538"}.fa-person-arrow-up-from-line{--fa:"\e539"}.fa-person-breastfeeding{--fa:"\e53a"}.fa-person-burst{--fa:"\e53b"}.fa-person-cane{--fa:"\e53c"}.fa-person-chalkboard{--fa:"\e53d"}.fa-person-circle-check{--fa:"\e53e"}.fa-person-circle-exclamation{--fa:"\e53f"}.fa-person-circle-minus{--fa:"\e540"}.fa-person-circle-plus{--fa:"\e541"}.fa-person-circle-question{--fa:"\e542"}.fa-person-circle-xmark{--fa:"\e543"}.fa-person-dress-burst{--fa:"\e544"}.fa-person-drowning{--fa:"\e545"}.fa-person-falling{--fa:"\e546"}.fa-person-falling-burst{--fa:"\e547"}.fa-person-half-dress{--fa:"\e548"}.fa-person-harassing{--fa:"\e549"}.fa-person-military-pointing{--fa:"\e54a"}.fa-person-military-rifle{--fa:"\e54b"}.fa-person-military-to-person{--fa:"\e54c"}.fa-person-rays{--fa:"\e54d"}.fa-person-rifle{--fa:"\e54e"}.fa-person-shelter{--fa:"\e54f"}.fa-person-walking-arrow-loop-left{--fa:"\e551"}.fa-person-walking-arrow-right{--fa:"\e552"}.fa-person-walking-dashed-line-arrow-right{--fa:"\e553"}.fa-person-walking-luggage{--fa:"\e554"}.fa-plane-circle-check{--fa:"\e555"}.fa-plane-circle-exclamation{--fa:"\e556"}.fa-plane-circle-xmark{--fa:"\e557"}.fa-plane-lock{--fa:"\e558"}.fa-plate-wheat{--fa:"\e55a"}.fa-plug-circle-bolt{--fa:"\e55b"}.fa-plug-circle-check{--fa:"\e55c"}.fa-plug-circle-exclamation{--fa:"\e55d"}.fa-plug-circle-minus{--fa:"\e55e"}.fa-plug-circle-plus{--fa:"\e55f"}.fa-plug-circle-xmark{--fa:"\e560"}.fa-ranking-star{--fa:"\e561"}.fa-road-barrier{--fa:"\e562"}.fa-road-bridge{--fa:"\e563"}.fa-road-circle-check{--fa:"\e564"}.fa-road-circle-exclamation{--fa:"\e565"}.fa-road-circle-xmark{--fa:"\e566"}.fa-road-lock{--fa:"\e567"}.fa-road-spikes{--fa:"\e568"}.fa-rug{--fa:"\e569"}.fa-sack-xmark{--fa:"\e56a"}.fa-school-circle-check{--fa:"\e56b"}.fa-school-circle-exclamation{--fa:"\e56c"}.fa-school-circle-xmark{--fa:"\e56d"}.fa-school-flag{--fa:"\e56e"}.fa-school-lock{--fa:"\e56f"}.fa-sheet-plastic{--fa:"\e571"}.fa-shield-cat{--fa:"\e572"}.fa-shield-dog{--fa:"\e573"}.fa-shield-heart{--fa:"\e574"}.fa-square-nfi{--fa:"\e576"}.fa-square-person-confined{--fa:"\e577"}.fa-square-virus{--fa:"\e578"}.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius,.fa-staff-snake{--fa:"\e579"}.fa-sun-plant-wilt{--fa:"\e57a"}.fa-tarp{--fa:"\e57b"}.fa-tarp-droplet{--fa:"\e57c"}.fa-tent{--fa:"\e57d"}.fa-tent-arrow-down-to-line{--fa:"\e57e"}.fa-tent-arrow-left-right{--fa:"\e57f"}.fa-tent-arrow-turn-left{--fa:"\e580"}.fa-tent-arrows-down{--fa:"\e581"}.fa-tents{--fa:"\e582"}.fa-toilet-portable{--fa:"\e583"}.fa-toilets-portable{--fa:"\e584"}.fa-tower-cell{--fa:"\e585"}.fa-tower-observation{--fa:"\e586"}.fa-tree-city{--fa:"\e587"}.fa-trowel{--fa:"\e589"}.fa-trowel-bricks{--fa:"\e58a"}.fa-truck-arrow-right{--fa:"\e58b"}.fa-truck-droplet{--fa:"\e58c"}.fa-truck-field{--fa:"\e58d"}.fa-truck-field-un{--fa:"\e58e"}.fa-truck-plane{--fa:"\e58f"}.fa-users-between-lines{--fa:"\e591"}.fa-users-line{--fa:"\e592"}.fa-users-rays{--fa:"\e593"}.fa-users-rectangle{--fa:"\e594"}.fa-users-viewfinder{--fa:"\e595"}.fa-vial-circle-check{--fa:"\e596"}.fa-vial-virus{--fa:"\e597"}.fa-wheat-awn-circle-exclamation{--fa:"\e598"}.fa-worm{--fa:"\e599"}.fa-xmarks-lines{--fa:"\e59a"}.fa-child-dress{--fa:"\e59c"}.fa-child-reaching{--fa:"\e59d"}.fa-file-circle-check{--fa:"\e5a0"}.fa-file-circle-xmark{--fa:"\e5a1"}.fa-person-through-window{--fa:"\e5a9"}.fa-plant-wilt{--fa:"\e5aa"}.fa-stapler{--fa:"\e5af"}.fa-train-tram{--fa:"\e5b4"}.fa-table-cells-column-lock{--fa:"\e678"}.fa-table-cells-row-lock{--fa:"\e67a"}.fa-thumb-tack-slash,.fa-thumbtack-slash{--fa:"\e68f"}.fa-table-cells-row-unlock{--fa:"\e691"}.fa-chart-diagram{--fa:"\e695"}.fa-comment-nodes{--fa:"\e696"}.fa-file-fragment{--fa:"\e697"}.fa-file-half-dashed{--fa:"\e698"}.fa-hexagon-nodes{--fa:"\e699"}.fa-hexagon-nodes-bolt{--fa:"\e69a"}.fa-square-binary{--fa:"\e69b"}.fa-pentagon{--fa:"\e790"}.fa-non-binary{--fa:"\e807"}.fa-spiral{--fa:"\e80a"}.fa-picture-in-picture{--fa:"\e80b"}.fa-mobile-vibrate{--fa:"\e816"}.fa-single-quote-left{--fa:"\e81b"}.fa-single-quote-right{--fa:"\e81c"}.fa-bus-side{--fa:"\e81d"}.fa-heptagon,.fa-septagon{--fa:"\e820"}.fa-aquarius{--fa:"\e845"}.fa-aries{--fa:"\e846"}.fa-cancer{--fa:"\e847"}.fa-capricorn{--fa:"\e848"}.fa-gemini{--fa:"\e849"}.fa-leo{--fa:"\e84a"}.fa-libra{--fa:"\e84b"}.fa-pisces{--fa:"\e84c"}.fa-sagittarius{--fa:"\e84d"}.fa-scorpio{--fa:"\e84e"}.fa-taurus{--fa:"\e84f"}.fa-virgo{--fa:"\e850"}.fa-glass-martini,.fa-martini-glass-empty{--fa:"\f000"}.fa-music{--fa:"\f001"}.fa-magnifying-glass,.fa-search{--fa:"\f002"}.fa-heart{--fa:"\f004"}.fa-star{--fa:"\f005"}.fa-user,.fa-user-alt,.fa-user-large{--fa:"\f007"}.fa-film,.fa-film-alt,.fa-film-simple{--fa:"\f008"}.fa-table-cells-large,.fa-th-large{--fa:"\f009"}.fa-table-cells,.fa-th{--fa:"\f00a"}.fa-table-list,.fa-th-list{--fa:"\f00b"}.fa-check{--fa:"\f00c"}.fa-close,.fa-multiply,.fa-remove,.fa-times,.fa-xmark{--fa:"\f00d"}.fa-magnifying-glass-plus,.fa-search-plus{--fa:"\f00e"}.fa-magnifying-glass-minus,.fa-search-minus{--fa:"\f010"}.fa-power-off{--fa:"\f011"}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa:"\f012"}.fa-cog,.fa-gear{--fa:"\f013"}.fa-home,.fa-home-alt,.fa-home-lg-alt,.fa-house{--fa:"\f015"}.fa-clock,.fa-clock-four{--fa:"\f017"}.fa-road{--fa:"\f018"}.fa-download{--fa:"\f019"}.fa-inbox{--fa:"\f01c"}.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-arrow-rotate-right,.fa-redo{--fa:"\f01e"}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa:"\f021"}.fa-list-alt,.fa-rectangle-list{--fa:"\f022"}.fa-lock{--fa:"\f023"}.fa-flag{--fa:"\f024"}.fa-headphones,.fa-headphones-alt,.fa-headphones-simple{--fa:"\f025"}.fa-volume-off{--fa:"\f026"}.fa-volume-down,.fa-volume-low{--fa:"\f027"}.fa-volume-high,.fa-volume-up{--fa:"\f028"}.fa-qrcode{--fa:"\f029"}.fa-barcode{--fa:"\f02a"}.fa-tag{--fa:"\f02b"}.fa-tags{--fa:"\f02c"}.fa-book{--fa:"\f02d"}.fa-bookmark{--fa:"\f02e"}.fa-print{--fa:"\f02f"}.fa-camera,.fa-camera-alt{--fa:"\f030"}.fa-font{--fa:"\f031"}.fa-bold{--fa:"\f032"}.fa-italic{--fa:"\f033"}.fa-text-height{--fa:"\f034"}.fa-text-width{--fa:"\f035"}.fa-align-left{--fa:"\f036"}.fa-align-center{--fa:"\f037"}.fa-align-right{--fa:"\f038"}.fa-align-justify{--fa:"\f039"}.fa-list,.fa-list-squares{--fa:"\f03a"}.fa-dedent,.fa-outdent{--fa:"\f03b"}.fa-indent{--fa:"\f03c"}.fa-video,.fa-video-camera{--fa:"\f03d"}.fa-image{--fa:"\f03e"}.fa-location-pin,.fa-map-marker{--fa:"\f041"}.fa-adjust,.fa-circle-half-stroke{--fa:"\f042"}.fa-droplet,.fa-tint{--fa:"\f043"}.fa-edit,.fa-pen-to-square{--fa:"\f044"}.fa-arrows,.fa-arrows-up-down-left-right{--fa:"\f047"}.fa-backward-step,.fa-step-backward{--fa:"\f048"}.fa-backward-fast,.fa-fast-backward{--fa:"\f049"}.fa-backward{--fa:"\f04a"}.fa-play{--fa:"\f04b"}.fa-pause{--fa:"\f04c"}.fa-stop{--fa:"\f04d"}.fa-forward{--fa:"\f04e"}.fa-fast-forward,.fa-forward-fast{--fa:"\f050"}.fa-forward-step,.fa-step-forward{--fa:"\f051"}.fa-eject{--fa:"\f052"}.fa-chevron-left{--fa:"\f053"}.fa-chevron-right{--fa:"\f054"}.fa-circle-plus,.fa-plus-circle{--fa:"\f055"}.fa-circle-minus,.fa-minus-circle{--fa:"\f056"}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa:"\f057"}.fa-check-circle,.fa-circle-check{--fa:"\f058"}.fa-circle-question,.fa-question-circle{--fa:"\f059"}.fa-circle-info,.fa-info-circle{--fa:"\f05a"}.fa-crosshairs{--fa:"\f05b"}.fa-ban,.fa-cancel{--fa:"\f05e"}.fa-arrow-left{--fa:"\f060"}.fa-arrow-right{--fa:"\f061"}.fa-arrow-up{--fa:"\f062"}.fa-arrow-down{--fa:"\f063"}.fa-mail-forward,.fa-share{--fa:"\f064"}.fa-expand{--fa:"\f065"}.fa-compress{--fa:"\f066"}.fa-minus,.fa-subtract{--fa:"\f068"}.fa-circle-exclamation,.fa-exclamation-circle{--fa:"\f06a"}.fa-gift{--fa:"\f06b"}.fa-leaf{--fa:"\f06c"}.fa-fire{--fa:"\f06d"}.fa-eye{--fa:"\f06e"}.fa-eye-slash{--fa:"\f070"}.fa-exclamation-triangle,.fa-triangle-exclamation,.fa-warning{--fa:"\f071"}.fa-plane{--fa:"\f072"}.fa-calendar-alt,.fa-calendar-days{--fa:"\f073"}.fa-random,.fa-shuffle{--fa:"\f074"}.fa-comment{--fa:"\f075"}.fa-magnet{--fa:"\f076"}.fa-chevron-up{--fa:"\f077"}.fa-chevron-down{--fa:"\f078"}.fa-retweet{--fa:"\f079"}.fa-cart-shopping,.fa-shopping-cart{--fa:"\f07a"}.fa-folder,.fa-folder-blank{--fa:"\f07b"}.fa-folder-open{--fa:"\f07c"}.fa-arrows-up-down,.fa-arrows-v{--fa:"\f07d"}.fa-arrows-h,.fa-arrows-left-right{--fa:"\f07e"}.fa-bar-chart,.fa-chart-bar{--fa:"\f080"}.fa-camera-retro{--fa:"\f083"}.fa-key{--fa:"\f084"}.fa-cogs,.fa-gears{--fa:"\f085"}.fa-comments{--fa:"\f086"}.fa-star-half{--fa:"\f089"}.fa-arrow-right-from-bracket,.fa-sign-out{--fa:"\f08b"}.fa-thumb-tack,.fa-thumbtack{--fa:"\f08d"}.fa-arrow-up-right-from-square,.fa-external-link{--fa:"\f08e"}.fa-arrow-right-to-bracket,.fa-sign-in{--fa:"\f090"}.fa-trophy{--fa:"\f091"}.fa-upload{--fa:"\f093"}.fa-lemon{--fa:"\f094"}.fa-phone{--fa:"\f095"}.fa-phone-square,.fa-square-phone{--fa:"\f098"}.fa-unlock{--fa:"\f09c"}.fa-credit-card,.fa-credit-card-alt{--fa:"\f09d"}.fa-feed,.fa-rss{--fa:"\f09e"}.fa-hard-drive,.fa-hdd{--fa:"\f0a0"}.fa-bullhorn{--fa:"\f0a1"}.fa-certificate{--fa:"\f0a3"}.fa-hand-point-right{--fa:"\f0a4"}.fa-hand-point-left{--fa:"\f0a5"}.fa-hand-point-up{--fa:"\f0a6"}.fa-hand-point-down{--fa:"\f0a7"}.fa-arrow-circle-left,.fa-circle-arrow-left{--fa:"\f0a8"}.fa-arrow-circle-right,.fa-circle-arrow-right{--fa:"\f0a9"}.fa-arrow-circle-up,.fa-circle-arrow-up{--fa:"\f0aa"}.fa-arrow-circle-down,.fa-circle-arrow-down{--fa:"\f0ab"}.fa-globe{--fa:"\f0ac"}.fa-wrench{--fa:"\f0ad"}.fa-list-check,.fa-tasks{--fa:"\f0ae"}.fa-filter{--fa:"\f0b0"}.fa-briefcase{--fa:"\f0b1"}.fa-arrows-alt,.fa-up-down-left-right{--fa:"\f0b2"}.fa-users{--fa:"\f0c0"}.fa-chain,.fa-link{--fa:"\f0c1"}.fa-cloud{--fa:"\f0c2"}.fa-flask{--fa:"\f0c3"}.fa-cut,.fa-scissors{--fa:"\f0c4"}.fa-copy{--fa:"\f0c5"}.fa-paperclip{--fa:"\f0c6"}.fa-floppy-disk,.fa-save{--fa:"\f0c7"}.fa-square{--fa:"\f0c8"}.fa-bars,.fa-navicon{--fa:"\f0c9"}.fa-list-dots,.fa-list-ul{--fa:"\f0ca"}.fa-list-1-2,.fa-list-numeric,.fa-list-ol{--fa:"\f0cb"}.fa-strikethrough{--fa:"\f0cc"}.fa-underline{--fa:"\f0cd"}.fa-table{--fa:"\f0ce"}.fa-magic,.fa-wand-magic{--fa:"\f0d0"}.fa-truck{--fa:"\f0d1"}.fa-money-bill{--fa:"\f0d6"}.fa-caret-down{--fa:"\f0d7"}.fa-caret-up{--fa:"\f0d8"}.fa-caret-left{--fa:"\f0d9"}.fa-caret-right{--fa:"\f0da"}.fa-columns,.fa-table-columns{--fa:"\f0db"}.fa-sort,.fa-unsorted{--fa:"\f0dc"}.fa-sort-desc,.fa-sort-down{--fa:"\f0dd"}.fa-sort-asc,.fa-sort-up{--fa:"\f0de"}.fa-envelope{--fa:"\f0e0"}.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-arrow-rotate-left,.fa-undo{--fa:"\f0e2"}.fa-gavel,.fa-legal{--fa:"\f0e3"}.fa-bolt,.fa-zap{--fa:"\f0e7"}.fa-sitemap{--fa:"\f0e8"}.fa-umbrella{--fa:"\f0e9"}.fa-file-clipboard,.fa-paste{--fa:"\f0ea"}.fa-lightbulb{--fa:"\f0eb"}.fa-arrow-right-arrow-left,.fa-exchange{--fa:"\f0ec"}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa:"\f0ed"}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa:"\f0ee"}.fa-user-doctor,.fa-user-md{--fa:"\f0f0"}.fa-stethoscope{--fa:"\f0f1"}.fa-suitcase{--fa:"\f0f2"}.fa-bell{--fa:"\f0f3"}.fa-coffee,.fa-mug-saucer{--fa:"\f0f4"}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa:"\f0f8"}.fa-ambulance,.fa-truck-medical{--fa:"\f0f9"}.fa-medkit,.fa-suitcase-medical{--fa:"\f0fa"}.fa-fighter-jet,.fa-jet-fighter{--fa:"\f0fb"}.fa-beer,.fa-beer-mug-empty{--fa:"\f0fc"}.fa-h-square,.fa-square-h{--fa:"\f0fd"}.fa-plus-square,.fa-square-plus{--fa:"\f0fe"}.fa-angle-double-left,.fa-angles-left{--fa:"\f100"}.fa-angle-double-right,.fa-angles-right{--fa:"\f101"}.fa-angle-double-up,.fa-angles-up{--fa:"\f102"}.fa-angle-double-down,.fa-angles-down{--fa:"\f103"}.fa-angle-left{--fa:"\f104"}.fa-angle-right{--fa:"\f105"}.fa-angle-up{--fa:"\f106"}.fa-angle-down{--fa:"\f107"}.fa-laptop{--fa:"\f109"}.fa-tablet-button{--fa:"\f10a"}.fa-mobile-button{--fa:"\f10b"}.fa-quote-left,.fa-quote-left-alt{--fa:"\f10d"}.fa-quote-right,.fa-quote-right-alt{--fa:"\f10e"}.fa-spinner{--fa:"\f110"}.fa-circle{--fa:"\f111"}.fa-face-smile,.fa-smile{--fa:"\f118"}.fa-face-frown,.fa-frown{--fa:"\f119"}.fa-face-meh,.fa-meh{--fa:"\f11a"}.fa-gamepad{--fa:"\f11b"}.fa-keyboard{--fa:"\f11c"}.fa-flag-checkered{--fa:"\f11e"}.fa-terminal{--fa:"\f120"}.fa-code{--fa:"\f121"}.fa-mail-reply-all,.fa-reply-all{--fa:"\f122"}.fa-location-arrow{--fa:"\f124"}.fa-crop{--fa:"\f125"}.fa-code-branch{--fa:"\f126"}.fa-chain-broken,.fa-chain-slash,.fa-link-slash,.fa-unlink{--fa:"\f127"}.fa-info{--fa:"\f129"}.fa-superscript{--fa:"\f12b"}.fa-subscript{--fa:"\f12c"}.fa-eraser{--fa:"\f12d"}.fa-puzzle-piece{--fa:"\f12e"}.fa-microphone{--fa:"\f130"}.fa-microphone-slash{--fa:"\f131"}.fa-shield,.fa-shield-blank{--fa:"\f132"}.fa-calendar{--fa:"\f133"}.fa-fire-extinguisher{--fa:"\f134"}.fa-rocket{--fa:"\f135"}.fa-chevron-circle-left,.fa-circle-chevron-left{--fa:"\f137"}.fa-chevron-circle-right,.fa-circle-chevron-right{--fa:"\f138"}.fa-chevron-circle-up,.fa-circle-chevron-up{--fa:"\f139"}.fa-chevron-circle-down,.fa-circle-chevron-down{--fa:"\f13a"}.fa-anchor{--fa:"\f13d"}.fa-unlock-alt,.fa-unlock-keyhole{--fa:"\f13e"}.fa-bullseye{--fa:"\f140"}.fa-ellipsis,.fa-ellipsis-h{--fa:"\f141"}.fa-ellipsis-v,.fa-ellipsis-vertical{--fa:"\f142"}.fa-rss-square,.fa-square-rss{--fa:"\f143"}.fa-circle-play,.fa-play-circle{--fa:"\f144"}.fa-ticket{--fa:"\f145"}.fa-minus-square,.fa-square-minus{--fa:"\f146"}.fa-arrow-turn-up,.fa-level-up{--fa:"\f148"}.fa-arrow-turn-down,.fa-level-down{--fa:"\f149"}.fa-check-square,.fa-square-check{--fa:"\f14a"}.fa-pen-square,.fa-pencil-square,.fa-square-pen{--fa:"\f14b"}.fa-external-link-square,.fa-square-arrow-up-right{--fa:"\f14c"}.fa-share-from-square,.fa-share-square{--fa:"\f14d"}.fa-compass{--fa:"\f14e"}.fa-caret-square-down,.fa-square-caret-down{--fa:"\f150"}.fa-caret-square-up,.fa-square-caret-up{--fa:"\f151"}.fa-caret-square-right,.fa-square-caret-right{--fa:"\f152"}.fa-eur,.fa-euro,.fa-euro-sign{--fa:"\f153"}.fa-gbp,.fa-pound-sign,.fa-sterling-sign{--fa:"\f154"}.fa-rupee,.fa-rupee-sign{--fa:"\f156"}.fa-cny,.fa-jpy,.fa-rmb,.fa-yen,.fa-yen-sign{--fa:"\f157"}.fa-rouble,.fa-rub,.fa-ruble,.fa-ruble-sign{--fa:"\f158"}.fa-krw,.fa-won,.fa-won-sign{--fa:"\f159"}.fa-file{--fa:"\f15b"}.fa-file-alt,.fa-file-lines,.fa-file-text{--fa:"\f15c"}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa:"\f15d"}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa:"\f15e"}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa:"\f160"}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa:"\f161"}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa:"\f162"}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa:"\f163"}.fa-thumbs-up{--fa:"\f164"}.fa-thumbs-down{--fa:"\f165"}.fa-arrow-down-long,.fa-long-arrow-down{--fa:"\f175"}.fa-arrow-up-long,.fa-long-arrow-up{--fa:"\f176"}.fa-arrow-left-long,.fa-long-arrow-left{--fa:"\f177"}.fa-arrow-right-long,.fa-long-arrow-right{--fa:"\f178"}.fa-female,.fa-person-dress{--fa:"\f182"}.fa-male,.fa-person{--fa:"\f183"}.fa-sun{--fa:"\f185"}.fa-moon{--fa:"\f186"}.fa-archive,.fa-box-archive{--fa:"\f187"}.fa-bug{--fa:"\f188"}.fa-caret-square-left,.fa-square-caret-left{--fa:"\f191"}.fa-circle-dot,.fa-dot-circle{--fa:"\f192"}.fa-wheelchair{--fa:"\f193"}.fa-lira-sign{--fa:"\f195"}.fa-shuttle-space,.fa-space-shuttle{--fa:"\f197"}.fa-envelope-square,.fa-square-envelope{--fa:"\f199"}.fa-bank,.fa-building-columns,.fa-institution,.fa-museum,.fa-university{--fa:"\f19c"}.fa-graduation-cap,.fa-mortar-board{--fa:"\f19d"}.fa-language{--fa:"\f1ab"}.fa-fax{--fa:"\f1ac"}.fa-building{--fa:"\f1ad"}.fa-child{--fa:"\f1ae"}.fa-paw{--fa:"\f1b0"}.fa-cube{--fa:"\f1b2"}.fa-cubes{--fa:"\f1b3"}.fa-recycle{--fa:"\f1b8"}.fa-automobile,.fa-car{--fa:"\f1b9"}.fa-cab,.fa-taxi{--fa:"\f1ba"}.fa-tree{--fa:"\f1bb"}.fa-database{--fa:"\f1c0"}.fa-file-pdf{--fa:"\f1c1"}.fa-file-word{--fa:"\f1c2"}.fa-file-excel{--fa:"\f1c3"}.fa-file-powerpoint{--fa:"\f1c4"}.fa-file-image{--fa:"\f1c5"}.fa-file-archive,.fa-file-zipper{--fa:"\f1c6"}.fa-file-audio{--fa:"\f1c7"}.fa-file-video{--fa:"\f1c8"}.fa-file-code{--fa:"\f1c9"}.fa-life-ring{--fa:"\f1cd"}.fa-circle-notch{--fa:"\f1ce"}.fa-paper-plane{--fa:"\f1d8"}.fa-clock-rotate-left,.fa-history{--fa:"\f1da"}.fa-header,.fa-heading{--fa:"\f1dc"}.fa-paragraph{--fa:"\f1dd"}.fa-sliders,.fa-sliders-h{--fa:"\f1de"}.fa-share-alt,.fa-share-nodes{--fa:"\f1e0"}.fa-share-alt-square,.fa-square-share-nodes{--fa:"\f1e1"}.fa-bomb{--fa:"\f1e2"}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa:"\f1e3"}.fa-teletype,.fa-tty{--fa:"\f1e4"}.fa-binoculars{--fa:"\f1e5"}.fa-plug{--fa:"\f1e6"}.fa-newspaper{--fa:"\f1ea"}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa:"\f1eb"}.fa-calculator{--fa:"\f1ec"}.fa-bell-slash{--fa:"\f1f6"}.fa-trash{--fa:"\f1f8"}.fa-copyright{--fa:"\f1f9"}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa:"\f1fb"}.fa-paint-brush,.fa-paintbrush{--fa:"\f1fc"}.fa-birthday-cake,.fa-cake,.fa-cake-candles{--fa:"\f1fd"}.fa-area-chart,.fa-chart-area{--fa:"\f1fe"}.fa-chart-pie,.fa-pie-chart{--fa:"\f200"}.fa-chart-line,.fa-line-chart{--fa:"\f201"}.fa-toggle-off{--fa:"\f204"}.fa-toggle-on{--fa:"\f205"}.fa-bicycle{--fa:"\f206"}.fa-bus{--fa:"\f207"}.fa-closed-captioning{--fa:"\f20a"}.fa-ils,.fa-shekel,.fa-shekel-sign,.fa-sheqel,.fa-sheqel-sign{--fa:"\f20b"}.fa-cart-plus{--fa:"\f217"}.fa-cart-arrow-down{--fa:"\f218"}.fa-diamond{--fa:"\f219"}.fa-ship{--fa:"\f21a"}.fa-user-secret{--fa:"\f21b"}.fa-motorcycle{--fa:"\f21c"}.fa-street-view{--fa:"\f21d"}.fa-heart-pulse,.fa-heartbeat{--fa:"\f21e"}.fa-venus{--fa:"\f221"}.fa-mars{--fa:"\f222"}.fa-mercury{--fa:"\f223"}.fa-mars-and-venus{--fa:"\f224"}.fa-transgender,.fa-transgender-alt{--fa:"\f225"}.fa-venus-double{--fa:"\f226"}.fa-mars-double{--fa:"\f227"}.fa-venus-mars{--fa:"\f228"}.fa-mars-stroke{--fa:"\f229"}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa:"\f22a"}.fa-mars-stroke-h,.fa-mars-stroke-right{--fa:"\f22b"}.fa-neuter{--fa:"\f22c"}.fa-genderless{--fa:"\f22d"}.fa-server{--fa:"\f233"}.fa-user-plus{--fa:"\f234"}.fa-user-times,.fa-user-xmark{--fa:"\f235"}.fa-bed{--fa:"\f236"}.fa-train{--fa:"\f238"}.fa-subway,.fa-train-subway{--fa:"\f239"}.fa-battery,.fa-battery-5,.fa-battery-full{--fa:"\f240"}.fa-battery-4,.fa-battery-three-quarters{--fa:"\f241"}.fa-battery-3,.fa-battery-half{--fa:"\f242"}.fa-battery-2,.fa-battery-quarter{--fa:"\f243"}.fa-battery-0,.fa-battery-empty{--fa:"\f244"}.fa-arrow-pointer,.fa-mouse-pointer{--fa:"\f245"}.fa-i-cursor{--fa:"\f246"}.fa-object-group{--fa:"\f247"}.fa-object-ungroup{--fa:"\f248"}.fa-note-sticky,.fa-sticky-note{--fa:"\f249"}.fa-clone{--fa:"\f24d"}.fa-balance-scale,.fa-scale-balanced{--fa:"\f24e"}.fa-hourglass-1,.fa-hourglass-start{--fa:"\f251"}.fa-hourglass-2,.fa-hourglass-half{--fa:"\f252"}.fa-hourglass-3,.fa-hourglass-end{--fa:"\f253"}.fa-hourglass,.fa-hourglass-empty{--fa:"\f254"}.fa-hand-back-fist,.fa-hand-rock{--fa:"\f255"}.fa-hand,.fa-hand-paper{--fa:"\f256"}.fa-hand-scissors{--fa:"\f257"}.fa-hand-lizard{--fa:"\f258"}.fa-hand-spock{--fa:"\f259"}.fa-hand-pointer{--fa:"\f25a"}.fa-hand-peace{--fa:"\f25b"}.fa-trademark{--fa:"\f25c"}.fa-registered{--fa:"\f25d"}.fa-television,.fa-tv,.fa-tv-alt{--fa:"\f26c"}.fa-calendar-plus{--fa:"\f271"}.fa-calendar-minus{--fa:"\f272"}.fa-calendar-times,.fa-calendar-xmark{--fa:"\f273"}.fa-calendar-check{--fa:"\f274"}.fa-industry{--fa:"\f275"}.fa-map-pin{--fa:"\f276"}.fa-map-signs,.fa-signs-post{--fa:"\f277"}.fa-map{--fa:"\f279"}.fa-comment-alt,.fa-message{--fa:"\f27a"}.fa-circle-pause,.fa-pause-circle{--fa:"\f28b"}.fa-circle-stop,.fa-stop-circle{--fa:"\f28d"}.fa-bag-shopping,.fa-shopping-bag{--fa:"\f290"}.fa-basket-shopping,.fa-shopping-basket{--fa:"\f291"}.fa-universal-access{--fa:"\f29a"}.fa-blind,.fa-person-walking-with-cane{--fa:"\f29d"}.fa-audio-description{--fa:"\f29e"}.fa-phone-volume,.fa-volume-control-phone{--fa:"\f2a0"}.fa-braille{--fa:"\f2a1"}.fa-assistive-listening-systems,.fa-ear-listen{--fa:"\f2a2"}.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting,.fa-hands-asl-interpreting{--fa:"\f2a3"}.fa-deaf,.fa-deafness,.fa-ear-deaf,.fa-hard-of-hearing{--fa:"\f2a4"}.fa-hands,.fa-sign-language,.fa-signing{--fa:"\f2a7"}.fa-eye-low-vision,.fa-low-vision{--fa:"\f2a8"}.fa-handshake,.fa-handshake-alt,.fa-handshake-simple{--fa:"\f2b5"}.fa-envelope-open{--fa:"\f2b6"}.fa-address-book,.fa-contact-book{--fa:"\f2b9"}.fa-address-card,.fa-contact-card,.fa-vcard{--fa:"\f2bb"}.fa-circle-user,.fa-user-circle{--fa:"\f2bd"}.fa-id-badge{--fa:"\f2c1"}.fa-drivers-license,.fa-id-card{--fa:"\f2c2"}.fa-temperature-4,.fa-temperature-full,.fa-thermometer-4,.fa-thermometer-full{--fa:"\f2c7"}.fa-temperature-3,.fa-temperature-three-quarters,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa:"\f2c8"}.fa-temperature-2,.fa-temperature-half,.fa-thermometer-2,.fa-thermometer-half{--fa:"\f2c9"}.fa-temperature-1,.fa-temperature-quarter,.fa-thermometer-1,.fa-thermometer-quarter{--fa:"\f2ca"}.fa-temperature-0,.fa-temperature-empty,.fa-thermometer-0,.fa-thermometer-empty{--fa:"\f2cb"}.fa-shower{--fa:"\f2cc"}.fa-bath,.fa-bathtub{--fa:"\f2cd"}.fa-podcast{--fa:"\f2ce"}.fa-window-maximize{--fa:"\f2d0"}.fa-window-minimize{--fa:"\f2d1"}.fa-window-restore{--fa:"\f2d2"}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa:"\f2d3"}.fa-microchip{--fa:"\f2db"}.fa-snowflake{--fa:"\f2dc"}.fa-spoon,.fa-utensil-spoon{--fa:"\f2e5"}.fa-cutlery,.fa-utensils{--fa:"\f2e7"}.fa-rotate-back,.fa-rotate-backward,.fa-rotate-left,.fa-undo-alt{--fa:"\f2ea"}.fa-trash-alt,.fa-trash-can{--fa:"\f2ed"}.fa-rotate,.fa-sync-alt{--fa:"\f2f1"}.fa-stopwatch{--fa:"\f2f2"}.fa-right-from-bracket,.fa-sign-out-alt{--fa:"\f2f5"}.fa-right-to-bracket,.fa-sign-in-alt{--fa:"\f2f6"}.fa-redo-alt,.fa-rotate-forward,.fa-rotate-right{--fa:"\f2f9"}.fa-poo{--fa:"\f2fe"}.fa-images{--fa:"\f302"}.fa-pencil,.fa-pencil-alt{--fa:"\f303"}.fa-pen{--fa:"\f304"}.fa-pen-alt,.fa-pen-clip{--fa:"\f305"}.fa-octagon{--fa:"\f306"}.fa-down-long,.fa-long-arrow-alt-down{--fa:"\f309"}.fa-left-long,.fa-long-arrow-alt-left{--fa:"\f30a"}.fa-long-arrow-alt-right,.fa-right-long{--fa:"\f30b"}.fa-long-arrow-alt-up,.fa-up-long{--fa:"\f30c"}.fa-hexagon{--fa:"\f312"}.fa-file-edit,.fa-file-pen{--fa:"\f31c"}.fa-expand-arrows-alt,.fa-maximize{--fa:"\f31e"}.fa-clipboard{--fa:"\f328"}.fa-arrows-alt-h,.fa-left-right{--fa:"\f337"}.fa-arrows-alt-v,.fa-up-down{--fa:"\f338"}.fa-alarm-clock{--fa:"\f34e"}.fa-arrow-alt-circle-down,.fa-circle-down{--fa:"\f358"}.fa-arrow-alt-circle-left,.fa-circle-left{--fa:"\f359"}.fa-arrow-alt-circle-right,.fa-circle-right{--fa:"\f35a"}.fa-arrow-alt-circle-up,.fa-circle-up{--fa:"\f35b"}.fa-external-link-alt,.fa-up-right-from-square{--fa:"\f35d"}.fa-external-link-square-alt,.fa-square-up-right{--fa:"\f360"}.fa-exchange-alt,.fa-right-left{--fa:"\f362"}.fa-repeat{--fa:"\f363"}.fa-code-commit{--fa:"\f386"}.fa-code-merge{--fa:"\f387"}.fa-desktop,.fa-desktop-alt{--fa:"\f390"}.fa-gem{--fa:"\f3a5"}.fa-level-down-alt,.fa-turn-down{--fa:"\f3be"}.fa-level-up-alt,.fa-turn-up{--fa:"\f3bf"}.fa-lock-open{--fa:"\f3c1"}.fa-location-dot,.fa-map-marker-alt{--fa:"\f3c5"}.fa-microphone-alt,.fa-microphone-lines{--fa:"\f3c9"}.fa-mobile-alt,.fa-mobile-screen-button{--fa:"\f3cd"}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa:"\f3ce"}.fa-mobile-android-alt,.fa-mobile-screen{--fa:"\f3cf"}.fa-money-bill-1,.fa-money-bill-alt{--fa:"\f3d1"}.fa-phone-slash{--fa:"\f3dd"}.fa-image-portrait,.fa-portrait{--fa:"\f3e0"}.fa-mail-reply,.fa-reply{--fa:"\f3e5"}.fa-shield-alt,.fa-shield-halved{--fa:"\f3ed"}.fa-tablet-alt,.fa-tablet-screen-button{--fa:"\f3fa"}.fa-tablet,.fa-tablet-android{--fa:"\f3fb"}.fa-ticket-alt,.fa-ticket-simple{--fa:"\f3ff"}.fa-rectangle-times,.fa-rectangle-xmark,.fa-times-rectangle,.fa-window-close{--fa:"\f410"}.fa-compress-alt,.fa-down-left-and-up-right-to-center{--fa:"\f422"}.fa-expand-alt,.fa-up-right-and-down-left-from-center{--fa:"\f424"}.fa-baseball-bat-ball{--fa:"\f432"}.fa-baseball,.fa-baseball-ball{--fa:"\f433"}.fa-basketball,.fa-basketball-ball{--fa:"\f434"}.fa-bowling-ball{--fa:"\f436"}.fa-chess{--fa:"\f439"}.fa-chess-bishop{--fa:"\f43a"}.fa-chess-board{--fa:"\f43c"}.fa-chess-king{--fa:"\f43f"}.fa-chess-knight{--fa:"\f441"}.fa-chess-pawn{--fa:"\f443"}.fa-chess-queen{--fa:"\f445"}.fa-chess-rook{--fa:"\f447"}.fa-dumbbell{--fa:"\f44b"}.fa-football,.fa-football-ball{--fa:"\f44e"}.fa-golf-ball,.fa-golf-ball-tee{--fa:"\f450"}.fa-hockey-puck{--fa:"\f453"}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa:"\f458"}.fa-square-full{--fa:"\f45c"}.fa-ping-pong-paddle-ball,.fa-table-tennis,.fa-table-tennis-paddle-ball{--fa:"\f45d"}.fa-volleyball,.fa-volleyball-ball{--fa:"\f45f"}.fa-allergies,.fa-hand-dots{--fa:"\f461"}.fa-band-aid,.fa-bandage{--fa:"\f462"}.fa-box{--fa:"\f466"}.fa-boxes,.fa-boxes-alt,.fa-boxes-stacked{--fa:"\f468"}.fa-briefcase-medical{--fa:"\f469"}.fa-burn,.fa-fire-flame-simple{--fa:"\f46a"}.fa-capsules{--fa:"\f46b"}.fa-clipboard-check{--fa:"\f46c"}.fa-clipboard-list{--fa:"\f46d"}.fa-diagnoses,.fa-person-dots-from-line{--fa:"\f470"}.fa-dna{--fa:"\f471"}.fa-dolly,.fa-dolly-box{--fa:"\f472"}.fa-cart-flatbed,.fa-dolly-flatbed{--fa:"\f474"}.fa-file-medical{--fa:"\f477"}.fa-file-medical-alt,.fa-file-waveform{--fa:"\f478"}.fa-first-aid,.fa-kit-medical{--fa:"\f479"}.fa-circle-h,.fa-hospital-symbol{--fa:"\f47e"}.fa-id-card-alt,.fa-id-card-clip{--fa:"\f47f"}.fa-notes-medical{--fa:"\f481"}.fa-pallet{--fa:"\f482"}.fa-pills{--fa:"\f484"}.fa-prescription-bottle{--fa:"\f485"}.fa-prescription-bottle-alt,.fa-prescription-bottle-medical{--fa:"\f486"}.fa-bed-pulse,.fa-procedures{--fa:"\f487"}.fa-shipping-fast,.fa-truck-fast{--fa:"\f48b"}.fa-smoking{--fa:"\f48d"}.fa-syringe{--fa:"\f48e"}.fa-tablets{--fa:"\f490"}.fa-thermometer{--fa:"\f491"}.fa-vial{--fa:"\f492"}.fa-vials{--fa:"\f493"}.fa-warehouse{--fa:"\f494"}.fa-weight,.fa-weight-scale{--fa:"\f496"}.fa-x-ray{--fa:"\f497"}.fa-box-open{--fa:"\f49e"}.fa-comment-dots,.fa-commenting{--fa:"\f4ad"}.fa-comment-slash{--fa:"\f4b3"}.fa-couch{--fa:"\f4b8"}.fa-circle-dollar-to-slot,.fa-donate{--fa:"\f4b9"}.fa-dove{--fa:"\f4ba"}.fa-hand-holding{--fa:"\f4bd"}.fa-hand-holding-heart{--fa:"\f4be"}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa:"\f4c0"}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa:"\f4c1"}.fa-hands-holding{--fa:"\f4c2"}.fa-hands-helping,.fa-handshake-angle{--fa:"\f4c4"}.fa-parachute-box{--fa:"\f4cd"}.fa-people-carry,.fa-people-carry-box{--fa:"\f4ce"}.fa-piggy-bank{--fa:"\f4d3"}.fa-ribbon{--fa:"\f4d6"}.fa-route{--fa:"\f4d7"}.fa-seedling,.fa-sprout{--fa:"\f4d8"}.fa-sign,.fa-sign-hanging{--fa:"\f4d9"}.fa-face-smile-wink,.fa-smile-wink{--fa:"\f4da"}.fa-tape{--fa:"\f4db"}.fa-truck-loading,.fa-truck-ramp-box{--fa:"\f4de"}.fa-truck-moving{--fa:"\f4df"}.fa-video-slash{--fa:"\f4e2"}.fa-wine-glass{--fa:"\f4e3"}.fa-user-astronaut{--fa:"\f4fb"}.fa-user-check{--fa:"\f4fc"}.fa-user-clock{--fa:"\f4fd"}.fa-user-cog,.fa-user-gear{--fa:"\f4fe"}.fa-user-edit,.fa-user-pen{--fa:"\f4ff"}.fa-user-friends,.fa-user-group{--fa:"\f500"}.fa-user-graduate{--fa:"\f501"}.fa-user-lock{--fa:"\f502"}.fa-user-minus{--fa:"\f503"}.fa-user-ninja{--fa:"\f504"}.fa-user-shield{--fa:"\f505"}.fa-user-alt-slash,.fa-user-large-slash,.fa-user-slash{--fa:"\f506"}.fa-user-tag{--fa:"\f507"}.fa-user-tie{--fa:"\f508"}.fa-users-cog,.fa-users-gear{--fa:"\f509"}.fa-balance-scale-left,.fa-scale-unbalanced{--fa:"\f515"}.fa-balance-scale-right,.fa-scale-unbalanced-flip{--fa:"\f516"}.fa-blender{--fa:"\f517"}.fa-book-open{--fa:"\f518"}.fa-broadcast-tower,.fa-tower-broadcast{--fa:"\f519"}.fa-broom{--fa:"\f51a"}.fa-blackboard,.fa-chalkboard{--fa:"\f51b"}.fa-chalkboard-teacher,.fa-chalkboard-user{--fa:"\f51c"}.fa-church{--fa:"\f51d"}.fa-coins{--fa:"\f51e"}.fa-compact-disc{--fa:"\f51f"}.fa-crow{--fa:"\f520"}.fa-crown{--fa:"\f521"}.fa-dice{--fa:"\f522"}.fa-dice-five{--fa:"\f523"}.fa-dice-four{--fa:"\f524"}.fa-dice-one{--fa:"\f525"}.fa-dice-six{--fa:"\f526"}.fa-dice-three{--fa:"\f527"}.fa-dice-two{--fa:"\f528"}.fa-divide{--fa:"\f529"}.fa-door-closed{--fa:"\f52a"}.fa-door-open{--fa:"\f52b"}.fa-feather{--fa:"\f52d"}.fa-frog{--fa:"\f52e"}.fa-gas-pump{--fa:"\f52f"}.fa-glasses{--fa:"\f530"}.fa-greater-than-equal{--fa:"\f532"}.fa-helicopter{--fa:"\f533"}.fa-infinity{--fa:"\f534"}.fa-kiwi-bird{--fa:"\f535"}.fa-less-than-equal{--fa:"\f537"}.fa-memory{--fa:"\f538"}.fa-microphone-alt-slash,.fa-microphone-lines-slash{--fa:"\f539"}.fa-money-bill-wave{--fa:"\f53a"}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa:"\f53b"}.fa-money-check{--fa:"\f53c"}.fa-money-check-alt,.fa-money-check-dollar{--fa:"\f53d"}.fa-not-equal{--fa:"\f53e"}.fa-palette{--fa:"\f53f"}.fa-parking,.fa-square-parking{--fa:"\f540"}.fa-diagram-project,.fa-project-diagram{--fa:"\f542"}.fa-receipt{--fa:"\f543"}.fa-robot{--fa:"\f544"}.fa-ruler{--fa:"\f545"}.fa-ruler-combined{--fa:"\f546"}.fa-ruler-horizontal{--fa:"\f547"}.fa-ruler-vertical{--fa:"\f548"}.fa-school{--fa:"\f549"}.fa-screwdriver{--fa:"\f54a"}.fa-shoe-prints{--fa:"\f54b"}.fa-skull{--fa:"\f54c"}.fa-ban-smoking,.fa-smoking-ban{--fa:"\f54d"}.fa-store{--fa:"\f54e"}.fa-shop,.fa-store-alt{--fa:"\f54f"}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa:"\f550"}.fa-stroopwafel{--fa:"\f551"}.fa-toolbox{--fa:"\f552"}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa:"\f553"}.fa-person-walking,.fa-walking{--fa:"\f554"}.fa-wallet{--fa:"\f555"}.fa-angry,.fa-face-angry{--fa:"\f556"}.fa-archway{--fa:"\f557"}.fa-atlas,.fa-book-atlas{--fa:"\f558"}.fa-award{--fa:"\f559"}.fa-backspace,.fa-delete-left{--fa:"\f55a"}.fa-bezier-curve{--fa:"\f55b"}.fa-bong{--fa:"\f55c"}.fa-brush{--fa:"\f55d"}.fa-bus-alt,.fa-bus-simple{--fa:"\f55e"}.fa-cannabis{--fa:"\f55f"}.fa-check-double{--fa:"\f560"}.fa-cocktail,.fa-martini-glass-citrus{--fa:"\f561"}.fa-bell-concierge,.fa-concierge-bell{--fa:"\f562"}.fa-cookie{--fa:"\f563"}.fa-cookie-bite{--fa:"\f564"}.fa-crop-alt,.fa-crop-simple{--fa:"\f565"}.fa-digital-tachograph,.fa-tachograph-digital{--fa:"\f566"}.fa-dizzy,.fa-face-dizzy{--fa:"\f567"}.fa-compass-drafting,.fa-drafting-compass{--fa:"\f568"}.fa-drum{--fa:"\f569"}.fa-drum-steelpan{--fa:"\f56a"}.fa-feather-alt,.fa-feather-pointed{--fa:"\f56b"}.fa-file-contract{--fa:"\f56c"}.fa-file-arrow-down,.fa-file-download{--fa:"\f56d"}.fa-arrow-right-from-file,.fa-file-export{--fa:"\f56e"}.fa-arrow-right-to-file,.fa-file-import{--fa:"\f56f"}.fa-file-invoice{--fa:"\f570"}.fa-file-invoice-dollar{--fa:"\f571"}.fa-file-prescription{--fa:"\f572"}.fa-file-signature{--fa:"\f573"}.fa-file-arrow-up,.fa-file-upload{--fa:"\f574"}.fa-fill{--fa:"\f575"}.fa-fill-drip{--fa:"\f576"}.fa-fingerprint{--fa:"\f577"}.fa-fish{--fa:"\f578"}.fa-face-flushed,.fa-flushed{--fa:"\f579"}.fa-face-frown-open,.fa-frown-open{--fa:"\f57a"}.fa-glass-martini-alt,.fa-martini-glass{--fa:"\f57b"}.fa-earth-africa,.fa-globe-africa{--fa:"\f57c"}.fa-earth,.fa-earth-america,.fa-earth-americas,.fa-globe-americas{--fa:"\f57d"}.fa-earth-asia,.fa-globe-asia{--fa:"\f57e"}.fa-face-grimace,.fa-grimace{--fa:"\f57f"}.fa-face-grin,.fa-grin{--fa:"\f580"}.fa-face-grin-wide,.fa-grin-alt{--fa:"\f581"}.fa-face-grin-beam,.fa-grin-beam{--fa:"\f582"}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa:"\f583"}.fa-face-grin-hearts,.fa-grin-hearts{--fa:"\f584"}.fa-face-grin-squint,.fa-grin-squint{--fa:"\f585"}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa:"\f586"}.fa-face-grin-stars,.fa-grin-stars{--fa:"\f587"}.fa-face-grin-tears,.fa-grin-tears{--fa:"\f588"}.fa-face-grin-tongue,.fa-grin-tongue{--fa:"\f589"}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa:"\f58a"}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa:"\f58b"}.fa-face-grin-wink,.fa-grin-wink{--fa:"\f58c"}.fa-grid-horizontal,.fa-grip,.fa-grip-horizontal{--fa:"\f58d"}.fa-grid-vertical,.fa-grip-vertical{--fa:"\f58e"}.fa-headset{--fa:"\f590"}.fa-highlighter{--fa:"\f591"}.fa-hot-tub,.fa-hot-tub-person{--fa:"\f593"}.fa-hotel{--fa:"\f594"}.fa-joint{--fa:"\f595"}.fa-face-kiss,.fa-kiss{--fa:"\f596"}.fa-face-kiss-beam,.fa-kiss-beam{--fa:"\f597"}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa:"\f598"}.fa-face-laugh,.fa-laugh{--fa:"\f599"}.fa-face-laugh-beam,.fa-laugh-beam{--fa:"\f59a"}.fa-face-laugh-squint,.fa-laugh-squint{--fa:"\f59b"}.fa-face-laugh-wink,.fa-laugh-wink{--fa:"\f59c"}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa:"\f59d"}.fa-map-location,.fa-map-marked{--fa:"\f59f"}.fa-map-location-dot,.fa-map-marked-alt{--fa:"\f5a0"}.fa-marker{--fa:"\f5a1"}.fa-medal{--fa:"\f5a2"}.fa-face-meh-blank,.fa-meh-blank{--fa:"\f5a4"}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa:"\f5a5"}.fa-monument{--fa:"\f5a6"}.fa-mortar-pestle{--fa:"\f5a7"}.fa-paint-roller{--fa:"\f5aa"}.fa-passport{--fa:"\f5ab"}.fa-pen-fancy{--fa:"\f5ac"}.fa-pen-nib{--fa:"\f5ad"}.fa-pen-ruler,.fa-pencil-ruler{--fa:"\f5ae"}.fa-plane-arrival{--fa:"\f5af"}.fa-plane-departure{--fa:"\f5b0"}.fa-prescription{--fa:"\f5b1"}.fa-face-sad-cry,.fa-sad-cry{--fa:"\f5b3"}.fa-face-sad-tear,.fa-sad-tear{--fa:"\f5b4"}.fa-shuttle-van,.fa-van-shuttle{--fa:"\f5b6"}.fa-signature{--fa:"\f5b7"}.fa-face-smile-beam,.fa-smile-beam{--fa:"\f5b8"}.fa-solar-panel{--fa:"\f5ba"}.fa-spa{--fa:"\f5bb"}.fa-splotch{--fa:"\f5bc"}.fa-spray-can{--fa:"\f5bd"}.fa-stamp{--fa:"\f5bf"}.fa-star-half-alt,.fa-star-half-stroke{--fa:"\f5c0"}.fa-suitcase-rolling{--fa:"\f5c1"}.fa-face-surprise,.fa-surprise{--fa:"\f5c2"}.fa-swatchbook{--fa:"\f5c3"}.fa-person-swimming,.fa-swimmer{--fa:"\f5c4"}.fa-ladder-water,.fa-swimming-pool,.fa-water-ladder{--fa:"\f5c5"}.fa-droplet-slash,.fa-tint-slash{--fa:"\f5c7"}.fa-face-tired,.fa-tired{--fa:"\f5c8"}.fa-tooth{--fa:"\f5c9"}.fa-umbrella-beach{--fa:"\f5ca"}.fa-weight-hanging{--fa:"\f5cd"}.fa-wine-glass-alt,.fa-wine-glass-empty{--fa:"\f5ce"}.fa-air-freshener,.fa-spray-can-sparkles{--fa:"\f5d0"}.fa-apple-alt,.fa-apple-whole{--fa:"\f5d1"}.fa-atom{--fa:"\f5d2"}.fa-bone{--fa:"\f5d7"}.fa-book-open-reader,.fa-book-reader{--fa:"\f5da"}.fa-brain{--fa:"\f5dc"}.fa-car-alt,.fa-car-rear{--fa:"\f5de"}.fa-battery-car,.fa-car-battery{--fa:"\f5df"}.fa-car-burst,.fa-car-crash{--fa:"\f5e1"}.fa-car-side{--fa:"\f5e4"}.fa-charging-station{--fa:"\f5e7"}.fa-diamond-turn-right,.fa-directions{--fa:"\f5eb"}.fa-draw-polygon,.fa-vector-polygon{--fa:"\f5ee"}.fa-laptop-code{--fa:"\f5fc"}.fa-layer-group{--fa:"\f5fd"}.fa-location,.fa-location-crosshairs{--fa:"\f601"}.fa-lungs{--fa:"\f604"}.fa-microscope{--fa:"\f610"}.fa-oil-can{--fa:"\f613"}.fa-poop{--fa:"\f619"}.fa-shapes,.fa-triangle-circle-square{--fa:"\f61f"}.fa-star-of-life{--fa:"\f621"}.fa-dashboard,.fa-gauge,.fa-gauge-med,.fa-tachometer-alt-average{--fa:"\f624"}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa:"\f625"}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa:"\f629"}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa:"\f62a"}.fa-teeth{--fa:"\f62e"}.fa-teeth-open{--fa:"\f62f"}.fa-masks-theater,.fa-theater-masks{--fa:"\f630"}.fa-traffic-light{--fa:"\f637"}.fa-truck-monster{--fa:"\f63b"}.fa-truck-pickup{--fa:"\f63c"}.fa-ad,.fa-rectangle-ad{--fa:"\f641"}.fa-ankh{--fa:"\f644"}.fa-bible,.fa-book-bible{--fa:"\f647"}.fa-briefcase-clock,.fa-business-time{--fa:"\f64a"}.fa-city{--fa:"\f64f"}.fa-comment-dollar{--fa:"\f651"}.fa-comments-dollar{--fa:"\f653"}.fa-cross{--fa:"\f654"}.fa-dharmachakra{--fa:"\f655"}.fa-envelope-open-text{--fa:"\f658"}.fa-folder-minus{--fa:"\f65d"}.fa-folder-plus{--fa:"\f65e"}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa:"\f662"}.fa-gopuram{--fa:"\f664"}.fa-hamsa{--fa:"\f665"}.fa-bahai,.fa-haykal{--fa:"\f666"}.fa-jedi{--fa:"\f669"}.fa-book-journal-whills,.fa-journal-whills{--fa:"\f66a"}.fa-kaaba{--fa:"\f66b"}.fa-khanda{--fa:"\f66d"}.fa-landmark{--fa:"\f66f"}.fa-envelopes-bulk,.fa-mail-bulk{--fa:"\f674"}.fa-menorah{--fa:"\f676"}.fa-mosque{--fa:"\f678"}.fa-om{--fa:"\f679"}.fa-pastafarianism,.fa-spaghetti-monster-flying{--fa:"\f67b"}.fa-peace{--fa:"\f67c"}.fa-place-of-worship{--fa:"\f67f"}.fa-poll,.fa-square-poll-vertical{--fa:"\f681"}.fa-poll-h,.fa-square-poll-horizontal{--fa:"\f682"}.fa-person-praying,.fa-pray{--fa:"\f683"}.fa-hands-praying,.fa-praying-hands{--fa:"\f684"}.fa-book-quran,.fa-quran{--fa:"\f687"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa:"\f688"}.fa-magnifying-glass-location,.fa-search-location{--fa:"\f689"}.fa-socks{--fa:"\f696"}.fa-square-root-alt,.fa-square-root-variable{--fa:"\f698"}.fa-star-and-crescent{--fa:"\f699"}.fa-star-of-david{--fa:"\f69a"}.fa-synagogue{--fa:"\f69b"}.fa-scroll-torah,.fa-torah{--fa:"\f6a0"}.fa-torii-gate{--fa:"\f6a1"}.fa-vihara{--fa:"\f6a7"}.fa-volume,.fa-volume-medium{--fa:"\f6a8"}.fa-volume-mute,.fa-volume-times,.fa-volume-xmark{--fa:"\f6a9"}.fa-yin-yang{--fa:"\f6ad"}.fa-blender-phone{--fa:"\f6b6"}.fa-book-dead,.fa-book-skull{--fa:"\f6b7"}.fa-campground{--fa:"\f6bb"}.fa-cat{--fa:"\f6be"}.fa-chair{--fa:"\f6c0"}.fa-cloud-moon{--fa:"\f6c3"}.fa-cloud-sun{--fa:"\f6c4"}.fa-cow{--fa:"\f6c8"}.fa-dice-d20{--fa:"\f6cf"}.fa-dice-d6{--fa:"\f6d1"}.fa-dog{--fa:"\f6d3"}.fa-dragon{--fa:"\f6d5"}.fa-drumstick-bite{--fa:"\f6d7"}.fa-dungeon{--fa:"\f6d9"}.fa-file-csv{--fa:"\f6dd"}.fa-fist-raised,.fa-hand-fist{--fa:"\f6de"}.fa-ghost{--fa:"\f6e2"}.fa-hammer{--fa:"\f6e3"}.fa-hanukiah{--fa:"\f6e6"}.fa-hat-wizard{--fa:"\f6e8"}.fa-hiking,.fa-person-hiking{--fa:"\f6ec"}.fa-hippo{--fa:"\f6ed"}.fa-horse{--fa:"\f6f0"}.fa-house-chimney-crack,.fa-house-damage{--fa:"\f6f1"}.fa-hryvnia,.fa-hryvnia-sign{--fa:"\f6f2"}.fa-mask{--fa:"\f6fa"}.fa-mountain{--fa:"\f6fc"}.fa-network-wired{--fa:"\f6ff"}.fa-otter{--fa:"\f700"}.fa-ring{--fa:"\f70b"}.fa-person-running,.fa-running{--fa:"\f70c"}.fa-scroll{--fa:"\f70e"}.fa-skull-crossbones{--fa:"\f714"}.fa-slash{--fa:"\f715"}.fa-spider{--fa:"\f717"}.fa-toilet-paper,.fa-toilet-paper-alt,.fa-toilet-paper-blank{--fa:"\f71e"}.fa-tractor{--fa:"\f722"}.fa-user-injured{--fa:"\f728"}.fa-vr-cardboard{--fa:"\f729"}.fa-wand-sparkles{--fa:"\f72b"}.fa-wind{--fa:"\f72e"}.fa-wine-bottle{--fa:"\f72f"}.fa-cloud-meatball{--fa:"\f73b"}.fa-cloud-moon-rain{--fa:"\f73c"}.fa-cloud-rain{--fa:"\f73d"}.fa-cloud-showers-heavy{--fa:"\f740"}.fa-cloud-sun-rain{--fa:"\f743"}.fa-democrat{--fa:"\f747"}.fa-flag-usa{--fa:"\f74d"}.fa-hurricane{--fa:"\f751"}.fa-landmark-alt,.fa-landmark-dome{--fa:"\f752"}.fa-meteor{--fa:"\f753"}.fa-person-booth{--fa:"\f756"}.fa-poo-bolt,.fa-poo-storm{--fa:"\f75a"}.fa-rainbow{--fa:"\f75b"}.fa-republican{--fa:"\f75e"}.fa-smog{--fa:"\f75f"}.fa-temperature-high{--fa:"\f769"}.fa-temperature-low{--fa:"\f76b"}.fa-cloud-bolt,.fa-thunderstorm{--fa:"\f76c"}.fa-tornado{--fa:"\f76f"}.fa-volcano{--fa:"\f770"}.fa-check-to-slot,.fa-vote-yea{--fa:"\f772"}.fa-water{--fa:"\f773"}.fa-baby{--fa:"\f77c"}.fa-baby-carriage,.fa-carriage-baby{--fa:"\f77d"}.fa-biohazard{--fa:"\f780"}.fa-blog{--fa:"\f781"}.fa-calendar-day{--fa:"\f783"}.fa-calendar-week{--fa:"\f784"}.fa-candy-cane{--fa:"\f786"}.fa-carrot{--fa:"\f787"}.fa-cash-register{--fa:"\f788"}.fa-compress-arrows-alt,.fa-minimize{--fa:"\f78c"}.fa-dumpster{--fa:"\f793"}.fa-dumpster-fire{--fa:"\f794"}.fa-ethernet{--fa:"\f796"}.fa-gifts{--fa:"\f79c"}.fa-champagne-glasses,.fa-glass-cheers{--fa:"\f79f"}.fa-glass-whiskey,.fa-whiskey-glass{--fa:"\f7a0"}.fa-earth-europe,.fa-globe-europe{--fa:"\f7a2"}.fa-grip-lines{--fa:"\f7a4"}.fa-grip-lines-vertical{--fa:"\f7a5"}.fa-guitar{--fa:"\f7a6"}.fa-heart-broken,.fa-heart-crack{--fa:"\f7a9"}.fa-holly-berry{--fa:"\f7aa"}.fa-horse-head{--fa:"\f7ab"}.fa-icicles{--fa:"\f7ad"}.fa-igloo{--fa:"\f7ae"}.fa-mitten{--fa:"\f7b5"}.fa-mug-hot{--fa:"\f7b6"}.fa-radiation{--fa:"\f7b9"}.fa-circle-radiation,.fa-radiation-alt{--fa:"\f7ba"}.fa-restroom{--fa:"\f7bd"}.fa-satellite{--fa:"\f7bf"}.fa-satellite-dish{--fa:"\f7c0"}.fa-sd-card{--fa:"\f7c2"}.fa-sim-card{--fa:"\f7c4"}.fa-person-skating,.fa-skating{--fa:"\f7c5"}.fa-person-skiing,.fa-skiing{--fa:"\f7c9"}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa:"\f7ca"}.fa-sleigh{--fa:"\f7cc"}.fa-comment-sms,.fa-sms{--fa:"\f7cd"}.fa-person-snowboarding,.fa-snowboarding{--fa:"\f7ce"}.fa-snowman{--fa:"\f7d0"}.fa-snowplow{--fa:"\f7d2"}.fa-tenge,.fa-tenge-sign{--fa:"\f7d7"}.fa-toilet{--fa:"\f7d8"}.fa-screwdriver-wrench,.fa-tools{--fa:"\f7d9"}.fa-cable-car,.fa-tram{--fa:"\f7da"}.fa-fire-alt,.fa-fire-flame-curved{--fa:"\f7e4"}.fa-bacon{--fa:"\f7e5"}.fa-book-medical{--fa:"\f7e6"}.fa-bread-slice{--fa:"\f7ec"}.fa-cheese{--fa:"\f7ef"}.fa-clinic-medical,.fa-house-chimney-medical{--fa:"\f7f2"}.fa-clipboard-user{--fa:"\f7f3"}.fa-comment-medical{--fa:"\f7f5"}.fa-crutch{--fa:"\f7f7"}.fa-disease{--fa:"\f7fa"}.fa-egg{--fa:"\f7fb"}.fa-folder-tree{--fa:"\f802"}.fa-burger,.fa-hamburger{--fa:"\f805"}.fa-hand-middle-finger{--fa:"\f806"}.fa-hard-hat,.fa-hat-hard,.fa-helmet-safety{--fa:"\f807"}.fa-hospital-user{--fa:"\f80d"}.fa-hotdog{--fa:"\f80f"}.fa-ice-cream{--fa:"\f810"}.fa-laptop-medical{--fa:"\f812"}.fa-pager{--fa:"\f815"}.fa-pepper-hot{--fa:"\f816"}.fa-pizza-slice{--fa:"\f818"}.fa-sack-dollar{--fa:"\f81d"}.fa-book-tanakh,.fa-tanakh{--fa:"\f827"}.fa-bars-progress,.fa-tasks-alt{--fa:"\f828"}.fa-trash-arrow-up,.fa-trash-restore{--fa:"\f829"}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa:"\f82a"}.fa-user-nurse{--fa:"\f82f"}.fa-wave-square{--fa:"\f83e"}.fa-biking,.fa-person-biking{--fa:"\f84a"}.fa-border-all{--fa:"\f84c"}.fa-border-none{--fa:"\f850"}.fa-border-style,.fa-border-top-left{--fa:"\f853"}.fa-digging,.fa-person-digging{--fa:"\f85e"}.fa-fan{--fa:"\f863"}.fa-heart-music-camera-bolt,.fa-icons{--fa:"\f86d"}.fa-phone-alt,.fa-phone-flip{--fa:"\f879"}.fa-phone-square-alt,.fa-square-phone-flip{--fa:"\f87b"}.fa-photo-film,.fa-photo-video{--fa:"\f87c"}.fa-remove-format,.fa-text-slash{--fa:"\f87d"}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa:"\f881"}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa:"\f882"}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa:"\f884"}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa:"\f885"}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa:"\f886"}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa:"\f887"}.fa-spell-check{--fa:"\f891"}.fa-voicemail{--fa:"\f897"}.fa-hat-cowboy{--fa:"\f8c0"}.fa-hat-cowboy-side{--fa:"\f8c1"}.fa-computer-mouse,.fa-mouse{--fa:"\f8cc"}.fa-radio{--fa:"\f8d7"}.fa-record-vinyl{--fa:"\f8d9"}.fa-walkie-talkie{--fa:"\f8ef"}.fa-caravan{--fa:"\f8ff"} +:host,:root{--fa-family-brands:"Font Awesome 7 Brands";--fa-font-brands:normal 400 1em/1 var(--fa-family-brands)}@font-face{font-family:"Font Awesome 7 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2)}.fa-brands,.fa-classic.fa-brands,.fab{--fa-family:var(--fa-family-brands);--fa-style:400}.fa-firefox-browser{--fa:"\e007"}.fa-ideal{--fa:"\e013"}.fa-microblog{--fa:"\e01a"}.fa-pied-piper-square,.fa-square-pied-piper{--fa:"\e01e"}.fa-unity{--fa:"\e049"}.fa-dailymotion{--fa:"\e052"}.fa-instagram-square,.fa-square-instagram{--fa:"\e055"}.fa-mixer{--fa:"\e056"}.fa-shopify{--fa:"\e057"}.fa-deezer{--fa:"\e077"}.fa-edge-legacy{--fa:"\e078"}.fa-google-pay{--fa:"\e079"}.fa-rust{--fa:"\e07a"}.fa-tiktok{--fa:"\e07b"}.fa-unsplash{--fa:"\e07c"}.fa-cloudflare{--fa:"\e07d"}.fa-guilded{--fa:"\e07e"}.fa-hive{--fa:"\e07f"}.fa-42-group,.fa-innosoft{--fa:"\e080"}.fa-instalod{--fa:"\e081"}.fa-octopus-deploy{--fa:"\e082"}.fa-perbyte{--fa:"\e083"}.fa-uncharted{--fa:"\e084"}.fa-watchman-monitoring{--fa:"\e087"}.fa-wodu{--fa:"\e088"}.fa-wirsindhandwerk,.fa-wsh{--fa:"\e2d0"}.fa-bots{--fa:"\e340"}.fa-cmplid{--fa:"\e360"}.fa-bilibili{--fa:"\e3d9"}.fa-golang{--fa:"\e40f"}.fa-pix{--fa:"\e43a"}.fa-sitrox{--fa:"\e44a"}.fa-hashnode{--fa:"\e499"}.fa-meta{--fa:"\e49b"}.fa-padlet{--fa:"\e4a0"}.fa-nfc-directional{--fa:"\e530"}.fa-nfc-symbol{--fa:"\e531"}.fa-screenpal{--fa:"\e570"}.fa-space-awesome{--fa:"\e5ac"}.fa-square-font-awesome{--fa:"\e5ad"}.fa-gitlab-square,.fa-square-gitlab{--fa:"\e5ae"}.fa-odysee{--fa:"\e5c6"}.fa-stubber{--fa:"\e5c7"}.fa-debian{--fa:"\e60b"}.fa-shoelace{--fa:"\e60c"}.fa-threads{--fa:"\e618"}.fa-square-threads{--fa:"\e619"}.fa-square-x-twitter{--fa:"\e61a"}.fa-x-twitter{--fa:"\e61b"}.fa-opensuse{--fa:"\e62b"}.fa-letterboxd{--fa:"\e62d"}.fa-square-letterboxd{--fa:"\e62e"}.fa-mintbit{--fa:"\e62f"}.fa-google-scholar{--fa:"\e63b"}.fa-brave{--fa:"\e63c"}.fa-brave-reverse{--fa:"\e63d"}.fa-pixiv{--fa:"\e640"}.fa-upwork{--fa:"\e641"}.fa-webflow{--fa:"\e65c"}.fa-signal-messenger{--fa:"\e663"}.fa-bluesky{--fa:"\e671"}.fa-jxl{--fa:"\e67b"}.fa-square-upwork{--fa:"\e67c"}.fa-web-awesome{--fa:"\e682"}.fa-square-web-awesome{--fa:"\e683"}.fa-square-web-awesome-stroke{--fa:"\e684"}.fa-dart-lang{--fa:"\e693"}.fa-flutter{--fa:"\e694"}.fa-files-pinwheel{--fa:"\e69f"}.fa-css{--fa:"\e6a2"}.fa-square-bluesky{--fa:"\e6a3"}.fa-openai{--fa:"\e7cf"}.fa-square-linkedin{--fa:"\e7d0"}.fa-cash-app{--fa:"\e7d4"}.fa-disqus{--fa:"\e7d5"}.fa-11ty,.fa-eleventy{--fa:"\e7d6"}.fa-kakao-talk{--fa:"\e7d7"}.fa-linktree{--fa:"\e7d8"}.fa-notion{--fa:"\e7d9"}.fa-pandora{--fa:"\e7da"}.fa-pixelfed{--fa:"\e7db"}.fa-tidal{--fa:"\e7dc"}.fa-vsco{--fa:"\e7dd"}.fa-w3c{--fa:"\e7de"}.fa-lumon{--fa:"\e7e2"}.fa-lumon-drop{--fa:"\e7e3"}.fa-square-figma{--fa:"\e7e4"}.fa-tex{--fa:"\e7ff"}.fa-duolingo{--fa:"\e812"}.fa-supportnow{--fa:"\e833"}.fa-tor-browser{--fa:"\e838"}.fa-typescript{--fa:"\e840"}.fa-square-deskpro{--fa:"\e844"}.fa-circle-zulip{--fa:"\e851"}.fa-julia{--fa:"\e852"}.fa-zulip{--fa:"\e853"}.fa-unison{--fa:"\e854"}.fa-bgg,.fa-board-game-geek{--fa:"\e855"}.fa-ko-fi{--fa:"\e856"}.fa-kubernetes{--fa:"\e857"}.fa-postgresql{--fa:"\e858"}.fa-scaleway{--fa:"\e859"}.fa-venmo{--fa:"\e85a"}.fa-venmo-v{--fa:"\e85b"}.fa-unreal-engine{--fa:"\e85c"}.fa-globaleaks{--fa:"\e85d"}.fa-solana{--fa:"\e85e"}.fa-threema{--fa:"\e85f"}.fa-forgejo{--fa:"\e860"}.fa-claude{--fa:"\e861"}.fa-gitee{--fa:"\e863"}.fa-xmpp{--fa:"\e864"}.fa-fediverse{--fa:"\e865"}.fa-tailwind-css{--fa:"\e866"}.fa-arch-linux{--fa:"\e867"}.fa-svelte{--fa:"\e868"}.fa-hugging-face{--fa:"\e869"}.fa-leetcode{--fa:"\e86a"}.fa-openstreetmap{--fa:"\e86b"}.fa-ultralytics{--fa:"\e86d"}.fa-ultralytics-hub{--fa:"\e86e"}.fa-ultralytics-yolo{--fa:"\e86f"}.fa-obsidian{--fa:"\e879"}.fa-zoom{--fa:"\e87b"}.fa-vim{--fa:"\e88a"}.fa-symfonycasts{--fa:"\e8ab"}.fa-square-twitter,.fa-twitter-square{--fa:"\f081"}.fa-facebook-square,.fa-square-facebook{--fa:"\f082"}.fa-linkedin{--fa:"\f08c"}.fa-github-square,.fa-square-github{--fa:"\f092"}.fa-twitter{--fa:"\f099"}.fa-facebook{--fa:"\f09a"}.fa-github{--fa:"\f09b"}.fa-pinterest{--fa:"\f0d2"}.fa-pinterest-square,.fa-square-pinterest{--fa:"\f0d3"}.fa-google-plus-square,.fa-square-google-plus{--fa:"\f0d4"}.fa-google-plus-g{--fa:"\f0d5"}.fa-linkedin-in{--fa:"\f0e1"}.fa-github-alt{--fa:"\f113"}.fa-maxcdn{--fa:"\f136"}.fa-html5{--fa:"\f13b"}.fa-css3{--fa:"\f13c"}.fa-btc{--fa:"\f15a"}.fa-youtube{--fa:"\f167"}.fa-xing{--fa:"\f168"}.fa-square-xing,.fa-xing-square{--fa:"\f169"}.fa-dropbox{--fa:"\f16b"}.fa-stack-overflow{--fa:"\f16c"}.fa-instagram{--fa:"\f16d"}.fa-flickr{--fa:"\f16e"}.fa-adn{--fa:"\f170"}.fa-bitbucket{--fa:"\f171"}.fa-tumblr{--fa:"\f173"}.fa-square-tumblr,.fa-tumblr-square{--fa:"\f174"}.fa-apple{--fa:"\f179"}.fa-windows{--fa:"\f17a"}.fa-android{--fa:"\f17b"}.fa-linux{--fa:"\f17c"}.fa-dribbble{--fa:"\f17d"}.fa-skype{--fa:"\f17e"}.fa-foursquare{--fa:"\f180"}.fa-trello{--fa:"\f181"}.fa-gratipay{--fa:"\f184"}.fa-vk{--fa:"\f189"}.fa-weibo{--fa:"\f18a"}.fa-renren{--fa:"\f18b"}.fa-pagelines{--fa:"\f18c"}.fa-stack-exchange{--fa:"\f18d"}.fa-square-vimeo,.fa-vimeo-square{--fa:"\f194"}.fa-slack,.fa-slack-hash{--fa:"\f198"}.fa-wordpress{--fa:"\f19a"}.fa-openid{--fa:"\f19b"}.fa-yahoo{--fa:"\f19e"}.fa-google{--fa:"\f1a0"}.fa-reddit{--fa:"\f1a1"}.fa-reddit-square,.fa-square-reddit{--fa:"\f1a2"}.fa-stumbleupon-circle{--fa:"\f1a3"}.fa-stumbleupon{--fa:"\f1a4"}.fa-delicious{--fa:"\f1a5"}.fa-digg{--fa:"\f1a6"}.fa-pied-piper-pp{--fa:"\f1a7"}.fa-pied-piper-alt{--fa:"\f1a8"}.fa-drupal{--fa:"\f1a9"}.fa-joomla{--fa:"\f1aa"}.fa-behance{--fa:"\f1b4"}.fa-behance-square,.fa-square-behance{--fa:"\f1b5"}.fa-steam{--fa:"\f1b6"}.fa-square-steam,.fa-steam-square{--fa:"\f1b7"}.fa-spotify{--fa:"\f1bc"}.fa-deviantart{--fa:"\f1bd"}.fa-soundcloud{--fa:"\f1be"}.fa-vine{--fa:"\f1ca"}.fa-codepen{--fa:"\f1cb"}.fa-jsfiddle{--fa:"\f1cc"}.fa-rebel{--fa:"\f1d0"}.fa-empire{--fa:"\f1d1"}.fa-git-square,.fa-square-git{--fa:"\f1d2"}.fa-git{--fa:"\f1d3"}.fa-hacker-news{--fa:"\f1d4"}.fa-tencent-weibo{--fa:"\f1d5"}.fa-qq{--fa:"\f1d6"}.fa-weixin{--fa:"\f1d7"}.fa-slideshare{--fa:"\f1e7"}.fa-twitch{--fa:"\f1e8"}.fa-yelp{--fa:"\f1e9"}.fa-paypal{--fa:"\f1ed"}.fa-google-wallet{--fa:"\f1ee"}.fa-cc-visa{--fa:"\f1f0"}.fa-cc-mastercard{--fa:"\f1f1"}.fa-cc-discover{--fa:"\f1f2"}.fa-cc-amex{--fa:"\f1f3"}.fa-cc-paypal{--fa:"\f1f4"}.fa-cc-stripe{--fa:"\f1f5"}.fa-lastfm{--fa:"\f202"}.fa-lastfm-square,.fa-square-lastfm{--fa:"\f203"}.fa-ioxhost{--fa:"\f208"}.fa-angellist{--fa:"\f209"}.fa-buysellads{--fa:"\f20d"}.fa-connectdevelop{--fa:"\f20e"}.fa-dashcube{--fa:"\f210"}.fa-forumbee{--fa:"\f211"}.fa-leanpub{--fa:"\f212"}.fa-sellsy{--fa:"\f213"}.fa-shirtsinbulk{--fa:"\f214"}.fa-simplybuilt{--fa:"\f215"}.fa-skyatlas{--fa:"\f216"}.fa-pinterest-p{--fa:"\f231"}.fa-whatsapp{--fa:"\f232"}.fa-viacoin{--fa:"\f237"}.fa-medium,.fa-medium-m{--fa:"\f23a"}.fa-y-combinator{--fa:"\f23b"}.fa-optin-monster{--fa:"\f23c"}.fa-opencart{--fa:"\f23d"}.fa-expeditedssl{--fa:"\f23e"}.fa-cc-jcb{--fa:"\f24b"}.fa-cc-diners-club{--fa:"\f24c"}.fa-creative-commons{--fa:"\f25e"}.fa-gg{--fa:"\f260"}.fa-gg-circle{--fa:"\f261"}.fa-odnoklassniki{--fa:"\f263"}.fa-odnoklassniki-square,.fa-square-odnoklassniki{--fa:"\f264"}.fa-get-pocket{--fa:"\f265"}.fa-wikipedia-w{--fa:"\f266"}.fa-safari{--fa:"\f267"}.fa-chrome{--fa:"\f268"}.fa-firefox{--fa:"\f269"}.fa-opera{--fa:"\f26a"}.fa-internet-explorer{--fa:"\f26b"}.fa-contao{--fa:"\f26d"}.fa-500px{--fa:"\f26e"}.fa-amazon{--fa:"\f270"}.fa-houzz{--fa:"\f27c"}.fa-vimeo-v{--fa:"\f27d"}.fa-black-tie{--fa:"\f27e"}.fa-fonticons{--fa:"\f280"}.fa-reddit-alien{--fa:"\f281"}.fa-edge{--fa:"\f282"}.fa-codiepie{--fa:"\f284"}.fa-modx{--fa:"\f285"}.fa-fort-awesome{--fa:"\f286"}.fa-usb{--fa:"\f287"}.fa-product-hunt{--fa:"\f288"}.fa-mixcloud{--fa:"\f289"}.fa-scribd{--fa:"\f28a"}.fa-bluetooth{--fa:"\f293"}.fa-bluetooth-b{--fa:"\f294"}.fa-gitlab{--fa:"\f296"}.fa-wpbeginner{--fa:"\f297"}.fa-wpforms{--fa:"\f298"}.fa-envira{--fa:"\f299"}.fa-glide{--fa:"\f2a5"}.fa-glide-g{--fa:"\f2a6"}.fa-viadeo{--fa:"\f2a9"}.fa-square-viadeo,.fa-viadeo-square{--fa:"\f2aa"}.fa-snapchat,.fa-snapchat-ghost{--fa:"\f2ab"}.fa-snapchat-square,.fa-square-snapchat{--fa:"\f2ad"}.fa-pied-piper{--fa:"\f2ae"}.fa-first-order{--fa:"\f2b0"}.fa-yoast{--fa:"\f2b1"}.fa-themeisle{--fa:"\f2b2"}.fa-google-plus{--fa:"\f2b3"}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa:"\f2b4"}.fa-linode{--fa:"\f2b8"}.fa-quora{--fa:"\f2c4"}.fa-free-code-camp{--fa:"\f2c5"}.fa-telegram,.fa-telegram-plane{--fa:"\f2c6"}.fa-bandcamp{--fa:"\f2d5"}.fa-grav{--fa:"\f2d6"}.fa-etsy{--fa:"\f2d7"}.fa-imdb{--fa:"\f2d8"}.fa-ravelry{--fa:"\f2d9"}.fa-sellcast{--fa:"\f2da"}.fa-superpowers{--fa:"\f2dd"}.fa-wpexplorer{--fa:"\f2de"}.fa-meetup{--fa:"\f2e0"}.fa-font-awesome-alt,.fa-square-font-awesome-stroke{--fa:"\f35c"}.fa-accessible-icon{--fa:"\f368"}.fa-accusoft{--fa:"\f369"}.fa-adversal{--fa:"\f36a"}.fa-affiliatetheme{--fa:"\f36b"}.fa-algolia{--fa:"\f36c"}.fa-amilia{--fa:"\f36d"}.fa-angrycreative{--fa:"\f36e"}.fa-app-store{--fa:"\f36f"}.fa-app-store-ios{--fa:"\f370"}.fa-apper{--fa:"\f371"}.fa-asymmetrik{--fa:"\f372"}.fa-audible{--fa:"\f373"}.fa-avianex{--fa:"\f374"}.fa-aws{--fa:"\f375"}.fa-bimobject{--fa:"\f378"}.fa-bitcoin{--fa:"\f379"}.fa-bity{--fa:"\f37a"}.fa-blackberry{--fa:"\f37b"}.fa-blogger{--fa:"\f37c"}.fa-blogger-b{--fa:"\f37d"}.fa-buromobelexperte{--fa:"\f37f"}.fa-centercode{--fa:"\f380"}.fa-cloudscale{--fa:"\f383"}.fa-cloudsmith{--fa:"\f384"}.fa-cloudversify{--fa:"\f385"}.fa-cpanel{--fa:"\f388"}.fa-css3-alt{--fa:"\f38b"}.fa-cuttlefish{--fa:"\f38c"}.fa-d-and-d{--fa:"\f38d"}.fa-deploydog{--fa:"\f38e"}.fa-deskpro{--fa:"\f38f"}.fa-digital-ocean{--fa:"\f391"}.fa-discord{--fa:"\f392"}.fa-discourse{--fa:"\f393"}.fa-dochub{--fa:"\f394"}.fa-docker{--fa:"\f395"}.fa-draft2digital{--fa:"\f396"}.fa-dribbble-square,.fa-square-dribbble{--fa:"\f397"}.fa-dyalog{--fa:"\f399"}.fa-earlybirds{--fa:"\f39a"}.fa-erlang{--fa:"\f39d"}.fa-facebook-f{--fa:"\f39e"}.fa-facebook-messenger{--fa:"\f39f"}.fa-firstdraft{--fa:"\f3a1"}.fa-fonticons-fi{--fa:"\f3a2"}.fa-fort-awesome-alt{--fa:"\f3a3"}.fa-freebsd{--fa:"\f3a4"}.fa-gitkraken{--fa:"\f3a6"}.fa-gofore{--fa:"\f3a7"}.fa-goodreads{--fa:"\f3a8"}.fa-goodreads-g{--fa:"\f3a9"}.fa-google-drive{--fa:"\f3aa"}.fa-google-play{--fa:"\f3ab"}.fa-gripfire{--fa:"\f3ac"}.fa-grunt{--fa:"\f3ad"}.fa-gulp{--fa:"\f3ae"}.fa-hacker-news-square,.fa-square-hacker-news{--fa:"\f3af"}.fa-hire-a-helper{--fa:"\f3b0"}.fa-hotjar{--fa:"\f3b1"}.fa-hubspot{--fa:"\f3b2"}.fa-itunes{--fa:"\f3b4"}.fa-itunes-note{--fa:"\f3b5"}.fa-jenkins{--fa:"\f3b6"}.fa-joget{--fa:"\f3b7"}.fa-js{--fa:"\f3b8"}.fa-js-square,.fa-square-js{--fa:"\f3b9"}.fa-keycdn{--fa:"\f3ba"}.fa-kickstarter,.fa-square-kickstarter{--fa:"\f3bb"}.fa-kickstarter-k{--fa:"\f3bc"}.fa-laravel{--fa:"\f3bd"}.fa-line{--fa:"\f3c0"}.fa-lyft{--fa:"\f3c3"}.fa-magento{--fa:"\f3c4"}.fa-medapps{--fa:"\f3c6"}.fa-medrt{--fa:"\f3c8"}.fa-microsoft{--fa:"\f3ca"}.fa-mix{--fa:"\f3cb"}.fa-mizuni{--fa:"\f3cc"}.fa-monero{--fa:"\f3d0"}.fa-napster{--fa:"\f3d2"}.fa-node-js{--fa:"\f3d3"}.fa-npm{--fa:"\f3d4"}.fa-ns8{--fa:"\f3d5"}.fa-nutritionix{--fa:"\f3d6"}.fa-page4{--fa:"\f3d7"}.fa-palfed{--fa:"\f3d8"}.fa-patreon{--fa:"\f3d9"}.fa-periscope{--fa:"\f3da"}.fa-phabricator{--fa:"\f3db"}.fa-phoenix-framework{--fa:"\f3dc"}.fa-playstation{--fa:"\f3df"}.fa-pushed{--fa:"\f3e1"}.fa-python{--fa:"\f3e2"}.fa-red-river{--fa:"\f3e3"}.fa-rendact,.fa-wpressr{--fa:"\f3e4"}.fa-replyd{--fa:"\f3e6"}.fa-resolving{--fa:"\f3e7"}.fa-rocketchat{--fa:"\f3e8"}.fa-rockrms{--fa:"\f3e9"}.fa-schlix{--fa:"\f3ea"}.fa-searchengin{--fa:"\f3eb"}.fa-servicestack{--fa:"\f3ec"}.fa-sistrix{--fa:"\f3ee"}.fa-speakap{--fa:"\f3f3"}.fa-staylinked{--fa:"\f3f5"}.fa-steam-symbol{--fa:"\f3f6"}.fa-sticker-mule{--fa:"\f3f7"}.fa-studiovinari{--fa:"\f3f8"}.fa-supple{--fa:"\f3f9"}.fa-uber{--fa:"\f402"}.fa-uikit{--fa:"\f403"}.fa-uniregistry{--fa:"\f404"}.fa-untappd{--fa:"\f405"}.fa-ussunnah{--fa:"\f407"}.fa-vaadin{--fa:"\f408"}.fa-viber{--fa:"\f409"}.fa-vimeo{--fa:"\f40a"}.fa-vnv{--fa:"\f40b"}.fa-square-whatsapp,.fa-whatsapp-square{--fa:"\f40c"}.fa-whmcs{--fa:"\f40d"}.fa-wordpress-simple{--fa:"\f411"}.fa-xbox{--fa:"\f412"}.fa-yandex{--fa:"\f413"}.fa-yandex-international{--fa:"\f414"}.fa-apple-pay{--fa:"\f415"}.fa-cc-apple-pay{--fa:"\f416"}.fa-fly{--fa:"\f417"}.fa-node{--fa:"\f419"}.fa-osi{--fa:"\f41a"}.fa-react{--fa:"\f41b"}.fa-autoprefixer{--fa:"\f41c"}.fa-less{--fa:"\f41d"}.fa-sass{--fa:"\f41e"}.fa-vuejs{--fa:"\f41f"}.fa-angular{--fa:"\f420"}.fa-aviato{--fa:"\f421"}.fa-ember{--fa:"\f423"}.fa-gitter{--fa:"\f426"}.fa-hooli{--fa:"\f427"}.fa-strava{--fa:"\f428"}.fa-stripe{--fa:"\f429"}.fa-stripe-s{--fa:"\f42a"}.fa-typo3{--fa:"\f42b"}.fa-amazon-pay{--fa:"\f42c"}.fa-cc-amazon-pay{--fa:"\f42d"}.fa-ethereum{--fa:"\f42e"}.fa-korvue{--fa:"\f42f"}.fa-elementor{--fa:"\f430"}.fa-square-youtube,.fa-youtube-square{--fa:"\f431"}.fa-flipboard{--fa:"\f44d"}.fa-hips{--fa:"\f452"}.fa-php{--fa:"\f457"}.fa-quinscape{--fa:"\f459"}.fa-readme{--fa:"\f4d5"}.fa-java{--fa:"\f4e4"}.fa-pied-piper-hat{--fa:"\f4e5"}.fa-creative-commons-by{--fa:"\f4e7"}.fa-creative-commons-nc{--fa:"\f4e8"}.fa-creative-commons-nc-eu{--fa:"\f4e9"}.fa-creative-commons-nc-jp{--fa:"\f4ea"}.fa-creative-commons-nd{--fa:"\f4eb"}.fa-creative-commons-pd{--fa:"\f4ec"}.fa-creative-commons-pd-alt{--fa:"\f4ed"}.fa-creative-commons-remix{--fa:"\f4ee"}.fa-creative-commons-sa{--fa:"\f4ef"}.fa-creative-commons-sampling{--fa:"\f4f0"}.fa-creative-commons-sampling-plus{--fa:"\f4f1"}.fa-creative-commons-share{--fa:"\f4f2"}.fa-creative-commons-zero{--fa:"\f4f3"}.fa-ebay{--fa:"\f4f4"}.fa-keybase{--fa:"\f4f5"}.fa-mastodon{--fa:"\f4f6"}.fa-r-project{--fa:"\f4f7"}.fa-researchgate{--fa:"\f4f8"}.fa-teamspeak{--fa:"\f4f9"}.fa-first-order-alt{--fa:"\f50a"}.fa-fulcrum{--fa:"\f50b"}.fa-galactic-republic{--fa:"\f50c"}.fa-galactic-senate{--fa:"\f50d"}.fa-jedi-order{--fa:"\f50e"}.fa-mandalorian{--fa:"\f50f"}.fa-old-republic{--fa:"\f510"}.fa-phoenix-squadron{--fa:"\f511"}.fa-sith{--fa:"\f512"}.fa-trade-federation{--fa:"\f513"}.fa-wolf-pack-battalion{--fa:"\f514"}.fa-hornbill{--fa:"\f592"}.fa-mailchimp{--fa:"\f59e"}.fa-megaport{--fa:"\f5a3"}.fa-nimblr{--fa:"\f5a8"}.fa-rev{--fa:"\f5b2"}.fa-shopware{--fa:"\f5b5"}.fa-squarespace{--fa:"\f5be"}.fa-themeco{--fa:"\f5c6"}.fa-weebly{--fa:"\f5cc"}.fa-wix{--fa:"\f5cf"}.fa-ello{--fa:"\f5f1"}.fa-hackerrank{--fa:"\f5f7"}.fa-kaggle{--fa:"\f5fa"}.fa-markdown{--fa:"\f60f"}.fa-neos{--fa:"\f612"}.fa-zhihu{--fa:"\f63f"}.fa-alipay{--fa:"\f642"}.fa-the-red-yeti{--fa:"\f69d"}.fa-critical-role{--fa:"\f6c9"}.fa-d-and-d-beyond{--fa:"\f6ca"}.fa-dev{--fa:"\f6cc"}.fa-fantasy-flight-games{--fa:"\f6dc"}.fa-wizards-of-the-coast{--fa:"\f730"}.fa-think-peaks{--fa:"\f731"}.fa-reacteurope{--fa:"\f75d"}.fa-artstation{--fa:"\f77a"}.fa-atlassian{--fa:"\f77b"}.fa-canadian-maple-leaf{--fa:"\f785"}.fa-centos{--fa:"\f789"}.fa-confluence{--fa:"\f78d"}.fa-dhl{--fa:"\f790"}.fa-diaspora{--fa:"\f791"}.fa-fedex{--fa:"\f797"}.fa-fedora{--fa:"\f798"}.fa-figma{--fa:"\f799"}.fa-intercom{--fa:"\f7af"}.fa-invision{--fa:"\f7b0"}.fa-jira{--fa:"\f7b1"}.fa-mendeley{--fa:"\f7b3"}.fa-raspberry-pi{--fa:"\f7bb"}.fa-redhat{--fa:"\f7bc"}.fa-sketch{--fa:"\f7c6"}.fa-sourcetree{--fa:"\f7d3"}.fa-suse{--fa:"\f7d6"}.fa-ubuntu{--fa:"\f7df"}.fa-ups{--fa:"\f7e0"}.fa-usps{--fa:"\f7e1"}.fa-yarn{--fa:"\f7e3"}.fa-airbnb{--fa:"\f834"}.fa-battle-net{--fa:"\f835"}.fa-bootstrap{--fa:"\f836"}.fa-buffer{--fa:"\f837"}.fa-chromecast{--fa:"\f838"}.fa-evernote{--fa:"\f839"}.fa-itch-io{--fa:"\f83a"}.fa-salesforce{--fa:"\f83b"}.fa-speaker-deck{--fa:"\f83c"}.fa-symfony{--fa:"\f83d"}.fa-waze{--fa:"\f83f"}.fa-yammer{--fa:"\f840"}.fa-git-alt{--fa:"\f841"}.fa-stackpath{--fa:"\f842"}.fa-cotton-bureau{--fa:"\f89e"}.fa-buy-n-large{--fa:"\f8a6"}.fa-mdb{--fa:"\f8ca"}.fa-orcid{--fa:"\f8d2"}.fa-swift{--fa:"\f8e1"}.fa-umbraco{--fa:"\f8e8"}:host,:root{--fa-font-regular:normal 400 1em/1 var(--fa-family-classic)}@font-face{font-family:"Font Awesome 7 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2)}.far{--fa-family:var(--fa-family-classic)}.fa-regular,.far{--fa-style:400}:host,:root{--fa-family-classic:"Font Awesome 7 Free";--fa-font-solid:normal 900 1em/1 var(--fa-family-classic);--fa-style-family-classic:var(--fa-family-classic)}@font-face{font-family:"Font Awesome 7 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2)}.fas{--fa-style:900}.fa-classic,.fas{--fa-family:var(--fa-family-classic)}.fa-solid{--fa-style:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} \ No newline at end of file diff --git a/docs/vendor/fontawesome/webfonts/fa-brands-400.woff2 b/docs/vendor/fontawesome/webfonts/fa-brands-400.woff2 new file mode 100644 index 00000000..e8bd881b Binary files /dev/null and b/docs/vendor/fontawesome/webfonts/fa-brands-400.woff2 differ diff --git a/docs/vendor/fontawesome/webfonts/fa-regular-400.woff2 b/docs/vendor/fontawesome/webfonts/fa-regular-400.woff2 new file mode 100644 index 00000000..344b101a Binary files /dev/null and b/docs/vendor/fontawesome/webfonts/fa-regular-400.woff2 differ diff --git a/docs/vendor/fontawesome/webfonts/fa-solid-900.woff2 b/docs/vendor/fontawesome/webfonts/fa-solid-900.woff2 new file mode 100644 index 00000000..ea09c935 Binary files /dev/null and b/docs/vendor/fontawesome/webfonts/fa-solid-900.woff2 differ diff --git a/docs/vendor/fontawesome/webfonts/fa-v4compatibility.woff2 b/docs/vendor/fontawesome/webfonts/fa-v4compatibility.woff2 new file mode 100644 index 00000000..9ea71671 Binary files /dev/null and b/docs/vendor/fontawesome/webfonts/fa-v4compatibility.woff2 differ diff --git a/docs/versioned_docs/version-1.0/examples.mdx b/docs/versioned_docs/version-1.0/examples.mdx index 2a6a0ea2..939ee244 100644 --- a/docs/versioned_docs/version-1.0/examples.mdx +++ b/docs/versioned_docs/version-1.0/examples.mdx @@ -623,7 +623,7 @@ Bootstrap 5 does not include an icon font. To use Font Awesome or another icon l Insert custom HTML into the option with the `data-content` attribute: :::warning Custom content is sanitized -This feature inserts HTML into the DOM. By default, it is sanitized using our built-in [sanitizer](./options#sanitizer). +This feature inserts HTML into the DOM. By default, it is sanitized using our built-in [sanitizer](../options#sanitizer). :::