Commit Graph

241 Commits

Author SHA1 Message Date
GeoSot d3c6f25fd0 Add `isShown` method and reuse it 2021-07-22 17:54:48 +03:00
XhmikosR 688bce4fa6
Release v5.0.2 (#34276)
* Bump version to v5.0.2.

* Dist
2021-06-22 21:29:16 +03:00
GeoSot c98657b830
Add `getOrCreateInstance` method in base-component (#33276)
Co-authored-by: Rohit Sharma <rohit2sharma95@gmail.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-06-03 18:53:27 +03:00
alpadev b39b665072
Automatically select an item in the dropdown when using arrow keys (#34052) 2021-05-22 10:58:52 +03:00
GeoSot df72a21fa8
Add `getNextActiveElement` helper function to utils, replacing custom implementation through components (#33608) 2021-05-19 01:23:52 +03:00
XhmikosR 58b1be927f
Release v5.0.1 (#33972)
* Bump version to 5.0.1.

* Dist
2021-05-13 19:22:20 +03:00
GeoSot 6e1c9096f0
Move get element functionality to a helper (#33327)
Looking around on js components I found out many checks, different expressed but with same purpose.
Some of them are trying to parse string to element, others, jQuery element to js simple nodeElement etc

With this Pr, I am trying to give a standard way to parse an element

So this pr:

* Creates `getElement` helper that tries to parse an argument to element or null
* Changes `isElement` to make  explicit checks and return Boolean 
* fixes tests deficiencies
2021-05-13 18:17:20 +03:00
GeoSot 9fe36edf68
Extract static `DATA_KEY` & `EVENT_KEY` to base-component (#33635)
* Force each plugin that extends base-components to implement a static method `NAME()`
* Remove redundant `NAME` argument from 'Utils.defineJQueryPlugin' & fix test
2021-05-11 10:49:30 +03:00
alpadev 7647b8fe5b
Fix: Click on input outside of dropdown-menu prevents dropdown from closing (#33920)
* test: add test if user clicks on input not contained within dropdown-menu

* fix: click on inputs that are not contained within dropdown-menu prevent dropdown from closing
2021-05-11 09:09:00 +03:00
GeoSot 03842b5f25
Refactor: move disposing properties into the base class (#33740)
Moves more functionality to `base-component`, transferring the responsibility of disposal to parent class.
Each component, dusting disposal, sets its protected properties to `null`. So the same can be done in one place for all children components .
2021-05-11 09:04:42 +03:00
XhmikosR bf09367486
Release v5.0.0 (#33647)
* Bump version to 5.0.0

* Fix npm tag

* Dist
2021-05-05 22:32:12 +03:00
Rohit Sharma b59b75bc55
Dropdown — Add option to make the dropdown menu clickable (#33389) 2021-04-20 08:19:57 +03:00
alpadev 6d312b37c2
fix: clicking an item in navbar dropdown collapses the dropdown in firefox (#33643) 2021-04-18 09:01:23 +03:00
Rohit Sharma 7eadf73f03 Change `toggle` method to `remove`
Since the class `.show` must be removed
2021-04-18 08:47:50 +03:00
Rohit Sharma bce4684d34 Use context properties 2021-04-18 08:47:50 +03:00
Rohit Sharma 38a79ec64c Refactor dropdown's hide functionality 2021-04-18 08:47:50 +03:00
alpadev ad10f00d5e
refactor: make static `selectMenuItem` method private (#33589) 2021-04-11 18:34:46 +03:00
GeoSot 566451230f
Remove element event listeners through base component (#33429)
After some research, I found out that EventHandler saves all the custom events per element using namespace, and is capable of removing handlers using only the element and its namespace (`DATA_KEY`).

So, probably is better to utilize the base-component to do the same job.
2021-04-11 09:54:48 +03:00
Rohit Sharma 5f946d3a86 Dropdown — Don't use event delegation 2021-04-11 09:42:52 +03:00
Rohit Sharma b2bc159d72 Use cached `noop` function everywhere 2021-04-11 09:42:52 +03:00
Rohit Sharma 20cfbdff79
Add missing things in `hide` method of dropdown (#33451)
* Update `aria-expanded` attribute in `hide` method

* Remove empty mouseover listeners added for iOS
2021-04-01 21:51:55 +03:00
alpadev f36f834453
Fix dropdown escape propagation (#33479) 2021-04-01 21:44:04 +03:00
GeoSot 8c3e6ebc6e
Use our `isDisabled` util on dropdown (#33456) 2021-03-30 07:42:23 +03:00
XhmikosR 220139a89f
Release v5.0.0-beta3 (#33439) 2021-03-23 18:26:54 +02:00
Casey Holzer 16bc47da3c Allow data-toggle="dropdown" and form click events to bubble
* remove stopPropagation from button click event

* test for delegated click events

* ensure button children can open menu

* test to ensure clicking button opens the menu

* check current element and parents

* allow dropdown form click events to bubble
2021-03-23 15:56:28 +02:00
Rohit Sharma b9e51dc3c4
Dropdown — Drop `flip` option (#33198) 2021-03-02 17:27:13 +02:00
alpadev 48a95f7280
refactor: use a Map instead of an Object in dom/data (#32180)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Rohit Sharma <rohit2sharma95@gmail.com>
2021-03-02 16:55:44 +02:00
XhmikosR 92434fa30f
util: change `isRTL` to a function (#32446)
This allows the bundler to tree-shake the function.
2021-02-16 10:14:05 +02:00
Kyle Tsang 02dbd87ffa
Fix event handler removal in dropdown/carousel dispose (#33000)
* Fix event handler removal in carousel dispose

* Fix event handler removal in dropdown dispose

* Test event handlers in scrollspy dispose

* Test event handlers in toast dispose

* Test event handlers in tooltip dispose

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Rohit Sharma <rohit2sharma95@gmail.com>
2021-02-12 07:51:34 +02:00
XhmikosR e50c11b8c6
Release v5.0.0-beta2 (#32467)
* Bump version to 5.0.0-beta2

* Dist
2021-02-10 18:14:51 +02:00
Rohit Sharma f7088e5d28
Add function type for `popperConfig` option (#32882)
* Add function type for `popperConfig` option

* Update .bundlewatch.config.json

* copy edits

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: Mark Otto <markdotto@gmail.com>
2021-02-09 21:16:13 +02:00
Rohit Sharma 29e0c9dfa1
Dropdown — Change the selector to check the use of Popper (#33003)
* Create the popper instance first

Make sure that popper instance has been created first and then apply the
styling on the dropdown(menu)

* Use `data-bs-popper` attibute to check popper

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-02-09 21:04:23 +02:00
Mark Otto 8f1c882545 Remove .dropdown-menu[style] reset and adjust .dropdown-menu-* modifiers
- Removes the &[style] selector that was used for resetting Popper styles
- Separate Popper-based alignment from static alignment with `data-bs-popover` attribute that separates the --bs-position and custom right/left properties

Co-Authored-By: Rohit Sharma <rohit2sharma95@gmail.com>
2021-02-09 14:34:27 +02:00
Rohit Sharma 0eaa6c05cf
Remove custom `fallbackPlacements` from dropdown (#32843) 2021-02-09 07:55:17 +02:00
Kyle Tsang d63a922436
Fix Popper preventOverflow boundary config (#32845)
Currently, the boundary config is being assigned to the wrong var (`rootBoundary`) in the popper config.  It should be assigned to the `boundary` var in popper's config.

Ref: https://popper.js.org/docs/v2/utils/detect-overflow/#boundary
2021-02-04 06:55:25 +02:00
Siju Samson b376a3d80d
Fix dropdown keys to open menu (#32750)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-02-03 22:03:21 +02:00
Rohit Sharma 3770b7b9e3
Dropdown — Emit events on the `.dropdown-toggle` button (#32625)
* Emit events on the dropdown button

Emit the events on `.dropdown-toggle` button and then bubble up

* Add migration note for events

* Update the docs for events

* Add unit test to check the event bubbling

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-02-03 21:51:19 +02:00
Rohit Sharma 217d84d6b2
Remove the initial margin from dropdown/popover in favor of Popper (#32524)
* Remove the margin from dropdown in favor of Popper

- Set the default margin to 0 for dropdowns (To remove the Popper's  warning)
- Set the required offset in dropdown's defaults

* Remove the margin from the popover component

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-02-03 21:37:25 +02:00
joke2k 881f43a3b9 Restore offset option for dropdown component 2021-01-28 12:23:33 +02:00
Rohit Sharma c9cd741aff
Throw a `TypeError` instead of the generic `Error` (#32585)
* Change from Error to TypeError

* Convert the `NAME` to upper case to make the consistency in the error message

* Update the remaining tests to be stricter

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-01-13 22:13:30 +02:00
Nils K 2d46e47464
Support Popper virtual elements (#32376)
Adds the ability to use objects implementing the virtual element interface as the value for the reference option of a dropdown config.

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2020-12-21 14:32:11 +02:00
Martijn Cuppens f132400865 Add fallback behaviour 2020-12-09 13:34:51 -08:00
alpadev 85208ae557
Refactor components to use a utility function to define jQuery plugins (#32285)
* refactor: use an utility function to define jQuery plugins

* test: add spec for defineJQueryPlugin utility function

* Update .bundlewatch.config.json

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2020-12-08 08:16:50 +02:00
XhmikosR 8dc85c657e Prepare v5.0.0-beta1. 2020-12-07 18:18:16 +02:00
XhmikosR 4eea630d16 Be explicit with `element.closest()`'s return value 2020-12-06 18:42:40 +02:00
Martijn Cuppens d8f247392d Fix conflict with Bootstrap CSS 2020-12-06 18:42:40 +02:00
Johann-S adfdf7160b Update to popper.js v2.x 2020-12-06 18:42:40 +02:00
Gaël Poupard 9488978fb5 feat(RTL): implement RTL
Using RTLCSS directives, renaming things to use logical names and following best practices.
2020-12-04 07:52:03 +02:00
XhmikosR 701c6c6e77
Unbreak lines. (#32304) 2020-12-02 06:45:15 +02:00
Rohit Sharma 04674f88b0 Remove setData from construtors (#32264) 2020-11-29 20:58:26 +02:00
Rohit Sharma f6a8733741 Move `VERSION` to BaseComponent (#32254) 2020-11-29 20:58:26 +02:00
Johann-S 9eb9d02084 add dispose in base component 2020-11-29 20:58:26 +02:00
Johann-S 9f6b342dc7 create a base component 2020-11-29 20:58:26 +02:00
XhmikosR f4457bca02
Be consistent with Popper's name. (#32224)
The npm package is named "popper.js" but the project is named "Popper", so use the latter consistently.
2020-11-21 16:22:08 +02:00
Rohit Sharma 418f17ee2b Add `bs` in data attributes
- Add `bs` in data APIs everywhere
- Update unit tests
2020-11-14 07:09:15 +02:00
XhmikosR 384eccbfaf
Prepare v5.0.0-alpha3 (#32122) 2020-11-11 19:07:37 +02:00
XhmikosR b864973a94
dropdown.js: simplify code (#32055) 2020-11-03 16:43:20 +02:00
XhmikosR 421e2482e2
Streamline jQuery comment. (#32016) 2020-11-01 15:49:51 +02:00
Sascha c21506d499
Fix TypeError when Bootstrap is included in `head` (#32024)
* extend jquery after domContentLoaded event is fired

* add unittest for util onDOMContentLoaded

* wait for trigger jquery event after domContentLoaded

* remove domcontentready from eventHandler

* move istanbul ignore statements to correct line

Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2020-11-01 15:32:36 +02:00
XhmikosR 0c1651ee9d
Remove `Manipulator.toggleClass` (#31842)
It's only used in one place so it makes more sense to remove it for the time being.
2020-10-05 18:07:49 +03:00
XhmikosR b083c9639f
Prepare v5.0.0-alpha2. (#31748) 2020-09-29 18:33:00 +03:00
XhmikosR 6d86b140f9 Add parentheses around multiple spread conditions 2020-07-12 15:52:25 +03:00
XhmikosR f15af45c6e Unbreak lines. 2020-07-12 15:52:25 +03:00
XhmikosR 94a5d87e15 Unbreak short lines 2020-06-17 16:58:56 +03:00
XhmikosR c28934cb18
Rename "master" to "main". (#31050) 2020-06-16 21:41:47 +03:00
XhmikosR 38ec7c4df7
Bump version to 5.0.0-alpha1 (#29925)
Also add v4.5.0 in versions and keep README.md pointing to v4.5.0 so that there are no broken stuff.
2020-05-13 22:36:00 +03:00
Martijn Cuppens c8d68fbec7
Drop closest from SelectorEngine (#30653)
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2020-04-28 22:17:23 +03:00
Tanguy Krotoff 7787f642b9 Fix crash when pressing ArrowUp the first time 2020-04-17 18:22:15 +03:00
Tanguy Krotoff dcd99aa7d1 Replace event.which with event.key and event.button 2020-04-17 18:22:15 +03:00
Johann-S 26d86fce2a
fix: remove make array util function (#30430) 2020-03-25 16:35:02 +02:00
Martijn Cuppens 2e150e722a Use next dropdown menu instead of first of the parent 2020-03-23 15:35:07 +01:00
XhmikosR 38333feda5 Switch to strings constants.
This allows the minifier to mangle the constants. It also allows the linter to find unused strings properly.

While at it, remove a few unused properties.

File                        Before      After       Diff
--------------------------------------------------------
bootstrap.bundle.min.js     23.61 kB    22.61 kB    -1.00 kB (-4.23 %)
bootstrap.min.js            17.04 kB    16.08 kB    -0.96 kB (-5.63 %)
2020-03-18 12:58:54 +02:00
Sparks c47547cd09
Improvement: harmonize usage of constants (#30285) 2020-03-09 17:26:29 +02:00
Jeremy Jackson c1ee395f80 Skip hidden dropdowns while focusing (#29523) 2019-10-17 18:01:44 +03:00
Johann-S 3d12b541c4 return to the original file structure to avoid breaking modularity 2019-10-03 09:55:57 +02:00
Johann-S 6a59c58480 rewrite dropdown unit tests 2019-07-23 14:23:50 +02:00
Patrick H. Lauke f0f75379f6 Closing dropdown with ESC correctly sets focus to toggle (#28928)
Just firing the focus event isn't enough ... need to actually call the proper `focus()` method for it to actually do it...
2019-06-19 12:23:41 +03:00
XhmikosR 438e01b61c Rename `eventHandler` and `selectorEngine` files. 2019-05-08 17:26:37 +03:00
XhmikosR dd0239d169 Remove more unused properties. 2019-03-11 17:01:28 +02:00
XhmikosR 46c037410b Comply to the new rules. 2019-03-11 17:01:28 +02:00
Johann-S 8a37045b79 move util in a util folder with the sanitizer 2019-02-26 13:04:04 +02:00
Johann-S fee11fd7ae use our selector engine instead of native api 2019-02-20 22:05:45 +02:00
XhmikosR 68e6de42ec Use `Util.makeArray()`. 2019-02-20 22:05:45 +02:00
XhmikosR 4b7c058a25 Remove unneeded ESLint suppression. 2019-02-20 22:05:45 +02:00
Johann-S a2f1d79045 Refactor util plugin and some tests 2019-02-20 22:05:45 +02:00
Johann-S c44db783bf chore(update): bump to 4.1.3 2019-02-20 22:05:45 +02:00
Johann-S 467dd113c5 fix(plugins): save instance in constructor 2019-02-20 22:05:45 +02:00
Johann-S 6b0808354d fix(unit-test): dropdown, collapse and carousel 2019-02-20 22:05:45 +02:00
Johann-S 64591b3722 fix(manipulator): increase coverage for manipulator 2019-02-20 22:05:45 +02:00
Johann-S 2b78078779 fix(data): do not use data object in our unit tests 2019-02-20 22:05:45 +02:00
Johann-S 7eddee286e remove old references to jquery and some fixes 2019-02-20 22:05:45 +02:00
Johann-S 90261b484c Dropdown without jQuery 2019-02-20 22:05:45 +02:00
XhmikosR 8fa0d30101
Release v4.3.1. (#28252) 2019-02-13 18:01:40 +02:00
Mark Otto 1ded0d6a4e
Release v4.3.0 (#28228)
* Prep for v4.3.0

* More updates for v4.3.0.

* rerun to build docs source map
2019-02-11 11:15:34 -08:00
Jason Golieb e44d0475e0 Move dropdown offset function logic into private function. (#28138) 2019-02-05 10:31:18 +02:00
Mark Otto 9e4e94747b
Bump to v4.2.1 (#27892) 2018-12-21 10:55:28 -08:00
Mark Otto eda851ee76 Prep for v4.2.0 release
- Move 4.1 docs to 4.2
- Update versions everywhere to 4.1.3 with release script
- Manually bump the shorthand version in package.json
- Add 4.2 to the versions docs page
- Update some redirects
- Fix tests asset URLs
- Bump Nuget and more
2018-12-21 09:03:29 -08:00
Patrick H. Lauke c70b043a76 Remove nonsensical boolean check (#27787)
...as it always evaluates to true
2018-12-06 13:30:12 +02:00
Johann-S 9201a80510 some cleaning and changes for readability 2018-11-14 10:54:50 +01:00
XhmikosR 0a3755b30a
Fix typo in the Popper.js checks. (#27488) 2018-10-21 11:51:20 +03:00