Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2011-2025 The Bootstrap Authors
Copyright (c) 2011-2026 The Bootstrap Authors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -227,4 +227,4 @@ Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com

## Copyright and license

Code and documentation copyright 2011-2025 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors). Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/).
Code and documentation copyright 2011-2026 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors). Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/).
2 changes: 1 addition & 1 deletion build/build-plugins.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

/*!
* Script to build our plugins to use them separately.
* Copyright 2020-2025 The Bootstrap Authors
* Copyright 2020-2026 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

Expand Down
2 changes: 1 addition & 1 deletion build/change-version.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

/*!
* Script to update version number references in the project.
* Copyright 2017-2025 The Bootstrap Authors
* Copyright 2017-2026 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

Expand Down
2 changes: 1 addition & 1 deletion build/generate-sri.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* Remember to use the same vendor files as the CDN ones,
* otherwise the hashes won't match!
*
* Copyright 2017-2025 The Bootstrap Authors
* Copyright 2017-2026 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

Expand Down
2 changes: 1 addition & 1 deletion build/html-validate.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
* - Easy to configure with rule-based system
* - Better integration with Node.js build tools
*
* Copyright 2017-2025 The Bootstrap Authors
* Copyright 2017-2026 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

Expand Down
2 changes: 1 addition & 1 deletion build/zip-examples.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/*!
* Script to create the built examples zip archive;
* requires the `zip` command to be present!
* Copyright 2020-2025 The Bootstrap Authors
* Copyright 2020-2026 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/

Expand Down
50 changes: 25 additions & 25 deletions js/tests/unit/datepicker.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -408,7 +408,7 @@ describe('Datepicker', () => {

const inputEl = fixtureEl.querySelector('input')
const datepicker = new Datepicker(inputEl)
const dates = ['2025-01-15']
const dates = ['2026-01-15']

datepicker.setSelectedDates(dates)

Expand All @@ -420,12 +420,12 @@ describe('Datepicker', () => {

const inputEl = fixtureEl.querySelector('input')
const datepicker = new Datepicker(inputEl)
const dates = ['2025-01-15']
const dates = ['2026-01-15']

datepicker.setSelectedDates(dates)

const result = datepicker.getSelectedDates()
result.push('2025-01-20')
result.push('2026-01-20')

expect(datepicker.getSelectedDates()).toEqual(dates)
})
Expand Down Expand Up @@ -462,21 +462,21 @@ describe('Datepicker', () => {

describe('options', () => {
it('should respect dateMin option', () => {
fixtureEl.innerHTML = '<input type="text" data-bs-toggle="datepicker" data-bs-date-min="2025-01-01">'
fixtureEl.innerHTML = '<input type="text" data-bs-toggle="datepicker" data-bs-date-min="2026-01-01">'

const inputEl = fixtureEl.querySelector('input')
const datepicker = new Datepicker(inputEl)

expect(datepicker._config.dateMin).toEqual('2025-01-01')
expect(datepicker._config.dateMin).toEqual('2026-01-01')
})

it('should respect dateMax option', () => {
fixtureEl.innerHTML = '<input type="text" data-bs-toggle="datepicker" data-bs-date-max="2025-12-31">'
fixtureEl.innerHTML = '<input type="text" data-bs-toggle="datepicker" data-bs-date-max="2026-12-31">'

const inputEl = fixtureEl.querySelector('input')
const datepicker = new Datepicker(inputEl)

expect(datepicker._config.dateMax).toEqual('2025-12-31')
expect(datepicker._config.dateMax).toEqual('2026-12-31')
})

it('should respect selectionMode option', () => {
Expand Down Expand Up @@ -684,7 +684,7 @@ describe('Datepicker', () => {
const inputEl = fixtureEl.querySelector('input')
const datepicker = new Datepicker(inputEl)

const result = datepicker._formatDate('2025-01-15')
const result = datepicker._formatDate('2026-01-15')

// Should be a string (format varies by system locale)
expect(typeof result).toEqual('string')
Expand All @@ -700,9 +700,9 @@ describe('Datepicker', () => {
locale: 'en-US'
})

const result = datepicker._formatDate('2025-01-15')
const result = datepicker._formatDate('2026-01-15')

expect(result).toEqual('Jan 15, 2025')
expect(result).toEqual('Jan 15, 2026')
})

it('should format date with custom function', () => {
Expand All @@ -713,9 +713,9 @@ describe('Datepicker', () => {
dateFormat: date => `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`
})

const result = datepicker._formatDate('2025-01-15')
const result = datepicker._formatDate('2026-01-15')

expect(result).toEqual('2025-1-15')
expect(result).toEqual('2026-1-15')
})

it('should use en-dash for date ranges', () => {
Expand All @@ -726,7 +726,7 @@ describe('Datepicker', () => {
locale: 'en-US'
})

const result = datepicker._formatDateForInput(['2025-01-15', '2025-01-20'])
const result = datepicker._formatDateForInput(['2026-01-15', '2026-01-20'])

expect(result).toContain(' – ')
})
Expand All @@ -739,7 +739,7 @@ describe('Datepicker', () => {
locale: 'en-US'
})

const result = datepicker._formatDateForInput(['2025-01-15', '2025-01-20'])
const result = datepicker._formatDateForInput(['2026-01-15', '2026-01-20'])

expect(result).toContain(', ')
})
Expand Down Expand Up @@ -920,7 +920,7 @@ describe('Datepicker', () => {

describe('input value parsing', () => {
it('should parse initial input value', () => {
fixtureEl.innerHTML = '<input type="text" data-bs-toggle="datepicker" value="2025-01-15">'
fixtureEl.innerHTML = '<input type="text" data-bs-toggle="datepicker" value="2026-01-15">'

const inputEl = fixtureEl.querySelector('input')
const datepicker = new Datepicker(inputEl)
Expand Down Expand Up @@ -981,7 +981,7 @@ describe('Datepicker', () => {

// Simulate VCP date click callback
datepicker._handleDateClick({
context: { selectedDates: ['2025-01-15'] }
context: { selectedDates: ['2026-01-15'] }
}, new Event('click'))
})
})
Expand All @@ -993,7 +993,7 @@ describe('Datepicker', () => {
const datepicker = new Datepicker(inputEl)

datepicker._handleDateClick({
context: { selectedDates: ['2025-01-15'] }
context: { selectedDates: ['2026-01-15'] }
}, new Event('click'))

expect(inputEl.value).not.toEqual('')
Expand All @@ -1011,7 +1011,7 @@ describe('Datepicker', () => {
const datepicker = new Datepicker(buttonEl)

datepicker._handleDateClick({
context: { selectedDates: ['2025-01-15'] }
context: { selectedDates: ['2026-01-15'] }
}, new Event('click'))

expect(displayEl.textContent).not.toEqual('Select date')
Expand All @@ -1029,10 +1029,10 @@ describe('Datepicker', () => {
const datepicker = new Datepicker(divEl)

datepicker._handleDateClick({
context: { selectedDates: ['2025-01-15'] }
context: { selectedDates: ['2026-01-15'] }
}, new Event('click'))

expect(hiddenInput.value).toEqual('2025-01-15')
expect(hiddenInput.value).toEqual('2026-01-15')
})

it('should auto-hide after single date selection', () => {
Expand All @@ -1045,7 +1045,7 @@ describe('Datepicker', () => {
const hideSpy = spyOn(datepicker, 'hide')

datepicker._handleDateClick({
context: { selectedDates: ['2025-01-15'] }
context: { selectedDates: ['2026-01-15'] }
}, new Event('click'))

setTimeout(() => {
Expand All @@ -1065,7 +1065,7 @@ describe('Datepicker', () => {
const hideSpy = spyOn(datepicker, 'hide')

datepicker._handleDateClick({
context: { selectedDates: ['2025-01-15', '2025-01-20'] }
context: { selectedDates: ['2026-01-15', '2026-01-20'] }
}, new Event('click'))

setTimeout(() => {
Expand All @@ -1085,7 +1085,7 @@ describe('Datepicker', () => {
const hideSpy = spyOn(datepicker, 'hide')

datepicker._handleDateClick({
context: { selectedDates: ['2025-01-15'] }
context: { selectedDates: ['2026-01-15'] }
}, new Event('click'))

setTimeout(() => {
Expand All @@ -1105,7 +1105,7 @@ describe('Datepicker', () => {
const hideSpy = spyOn(datepicker, 'hide')

datepicker._handleDateClick({
context: { selectedDates: ['2025-01-15'] }
context: { selectedDates: ['2026-01-15'] }
}, new Event('click'))

setTimeout(() => {
Expand Down Expand Up @@ -1144,7 +1144,7 @@ describe('Datepicker', () => {

const hideSpy = spyOn(datepicker, 'hide')

datepicker._maybeHideAfterSelection(['2025-01-15'])
datepicker._maybeHideAfterSelection(['2026-01-15'])

setTimeout(() => {
expect(hideSpy).not.toHaveBeenCalled()
Expand Down
6 changes: 3 additions & 3 deletions js/tests/visual/datepicker.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ <h2>Basic Input Datepicker</h2>
<h2>With Min/Max Dates</h2>
<div class="row mb-4">
<div class="col-md-6">
<label for="minMaxDatepicker" class="form-label">Only dates in 2025</label>
<input type="text" class="form-control" id="minMaxDatepicker" data-bs-toggle="datepicker" data-bs-date-min="2025-01-01" data-bs-date-max="2025-12-31" placeholder="Select a date in 2025">
<label for="minMaxDatepicker" class="form-label">Only dates in 2026</label>
<input type="text" class="form-control" id="minMaxDatepicker" data-bs-toggle="datepicker" data-bs-date-min="2026-01-01" data-bs-date-max="2026-12-31" placeholder="Select a date in 2026">
</div>
</div>

Expand Down Expand Up @@ -119,7 +119,7 @@ <h2>Events Test</h2>
const jsDatepickerEl = document.getElementById('jsDatepicker')
const jsDatepicker = new bootstrap.Datepicker(jsDatepickerEl, {
firstWeekday: 1,
selectedDates: ['2025-01-15']
selectedDates: ['2026-01-15']
})

document.getElementById('showBtn').addEventListener('click', () => {
Expand Down
2 changes: 1 addition & 1 deletion nuget/bootstrap.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<repository type="git" url="https://github.com/twbs/bootstrap.git" branch="main" />
<icon>bootstrap.png</icon>
<license type="expression">MIT</license>
<copyright>Copyright 2011-2025</copyright>
<copyright>Copyright 2011-2026</copyright>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<tags>css mobile-first responsive front-end framework web</tags>
<contentFiles>
Expand Down
2 changes: 1 addition & 1 deletion nuget/bootstrap.sass.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<repository type="git" url="https://github.com/twbs/bootstrap.git" branch="main" />
<icon>bootstrap.png</icon>
<license type="expression">MIT</license>
<copyright>Copyright 2011-2025</copyright>
<copyright>Copyright 2011-2026</copyright>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<tags>css sass mobile-first responsive front-end framework web</tags>
<contentFiles>
Expand Down
2 changes: 1 addition & 1 deletion scss/_banner.scss
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ $file: "" !default;

/*!
* Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Copyright 2011-2026 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
2 changes: 1 addition & 1 deletion scss/mixins/_banner.scss
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@mixin bsBanner($file) {
/*!
* Bootstrap #{$file} v6.0.0-alpha1 (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Copyright 2011-2026 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
}
2 changes: 1 addition & 1 deletion site/src/assets/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

/*!
* JavaScript for Bootstrap's docs (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Copyright 2011-2026 The Bootstrap Authors
* Licensed under the Creative Commons Attribution 3.0 Unported License.
* For details, see https://creativecommons.org/licenses/by/3.0/.
*/
Expand Down
2 changes: 1 addition & 1 deletion site/src/assets/partials/sidebar.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

/*
* JavaScript for Bootstrap's docs (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Copyright 2011-2026 The Bootstrap Authors
* Licensed under the Creative Commons Attribution 3.0 Unported License.
* For details, see https://creativecommons.org/licenses/by/3.0/.
*/
Expand Down
2 changes: 1 addition & 1 deletion site/src/assets/partials/snippets.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

/*
* JavaScript for Bootstrap's docs (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Copyright 2011-2026 The Bootstrap Authors
* Licensed under the Creative Commons Attribution 3.0 Unported License.
* For details, see https://creativecommons.org/licenses/by/3.0/.
*/
Expand Down
2 changes: 1 addition & 1 deletion site/src/assets/partials/sticky.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

/*
* JavaScript for Bootstrap's docs (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Copyright 2011-2026 The Bootstrap Authors
* Licensed under the Creative Commons Attribution 3.0 Unported License.
* For details, see https://creativecommons.org/licenses/by/3.0/.
*/
Expand Down
2 changes: 1 addition & 1 deletion site/src/assets/search.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

/*!
* JavaScript for Bootstrap's docs (https://getbootstrap.com/)
* Copyright 2024-2025 The Bootstrap Authors
* Copyright 2024-2026 The Bootstrap Authors
* Licensed under the Creative Commons Attribution 3.0 Unported License.
* For details, see https://creativecommons.org/licenses/by/3.0/.
*/
Expand Down
2 changes: 1 addition & 1 deletion site/src/assets/snippets.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
* JavaScript for Bootstrap's docs (https://getbootstrap.com/)
* Copyright 2011-2025 The Bootstrap Authors
* Copyright 2011-2026 The Bootstrap Authors
* Licensed under the Creative Commons Attribution 3.0 Unported License.
* For details, see https://creativecommons.org/licenses/by/3.0/.
*/
Expand Down
2 changes: 1 addition & 1 deletion site/src/assets/stackblitz.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

/*!
* JavaScript for Bootstrap's docs (https://getbootstrap.com/)
* Copyright 2024-2025 The Bootstrap Authors
* Copyright 2024-2026 The Bootstrap Authors
* Licensed under the Creative Commons Attribution 3.0 Unported License.
* For details, see https://creativecommons.org/licenses/by/3.0/.
*/
Expand Down
2 changes: 1 addition & 1 deletion site/src/content/docs/components/breadcrumb.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Use an ordered list with `.breadcrumb-item` for each page and `.breadcrumb-divid
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 16" width="6" height="12"><path d="M2 2l4 6-4 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
</li>
<li class="breadcrumb-item" aria-current="page">
<a class="breadcrumb-link active" href="#">2025</a>
<a class="breadcrumb-link active" href="#">2026</a>
</li>
</ol>
</nav>`} />
Expand Down
Loading