GeoSot
c44d99f55c
Dropdown: use destructured variables in dataApyKeydownHandler
2022-02-01 08:58:46 +02:00
GeoSot
c14fc989df
Dropdown: dropdown doesn't document data-bs-target option & parentNode is ALWAYS the wrapper for toggle & menu
2022-02-01 08:58:46 +02:00
GeoSot
d105439235
Dropdown: merge instance identification in dataApiKeydownHandler
...
As we use the `dataApiKeydownHandler` only for events that are triggered on `[data-bs-toggle="dropdown"]` or on `.dropdown-menu`, we can ensure that their `parentNode` will ALWAYS be the `.dropdown` wrapper
2022-02-01 08:58:46 +02:00
GeoSot
7f04f84bf8
Dropdown: use only one check for shown state
2022-01-30 18:01:09 +02:00
GeoSot
5f1c542d67
Dropdown: get dropdown's parent in one place
2022-01-30 18:01:09 +02:00
GeoSot
74f24cdf24
More tooltip refactoring ( #35546 )
...
* Tooltip.js: move `shown` check to method
* Tooltip.js: move Popper's creation to method
* Tooltip.js: merge checks before `hide`
* Tooltip.js: minor refactoring on `toggle` method
2022-01-30 17:39:03 +02:00
GeoSot
882185bbde
Change selector-engine.js parents method to utilize better js native methods ( #35684 )
...
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2022-01-30 16:24:03 +02:00
GeoSot
28c9002573
Modal: handle click event from backdrop callback
2022-01-30 15:39:34 +02:00
GeoSot
d092817059
Event handler: merge new Event with new CustomEvent
2022-01-30 14:15:17 +02:00
GeoSot
fa93995123
Event handler: replace deprecated initEvent
2022-01-30 14:15:17 +02:00
XhmikosR
0840105d7f
SelectorEngine: remove moot space
2022-01-29 13:25:30 +02:00
XhmikosR
558002f3dc
Return early in more places
2022-01-29 13:25:30 +02:00
XhmikosR
7d3bc44bb0
dropdown: Move constant
2022-01-29 13:25:30 +02:00
GeoSot
a8887ea8a8
collapse: merge class toggling
2022-01-29 13:25:30 +02:00
XhmikosR
b5147ec218
event-handler.js: use for...of
2022-01-29 13:25:30 +02:00
XhmikosR
62d86c07f8
Rename variables
2022-01-29 13:25:30 +02:00
XhmikosR
3ac4451d47
backdrop.js: cache _getElement calls
2022-01-29 13:25:30 +02:00
XhmikosR
0c3dfe104b
Remove a few unneeded variables
2022-01-29 13:25:30 +02:00
Ryan Berliner
14c7dc1e88
Fix: isVisible function behavior in case of a <details> element, on chrome 97 ( #35682 )
2022-01-13 10:55:05 +02:00
Patrick H. Lauke
0d054bb0f1
Remove explicit use of aria-hidden for offcanvas when closed ( #35589 )
...
Remove explicit use of aria-hidden & visibility for offcanvas when closed, handling it with css
Co-authored-by: GeoSot <geo.sotis@gmail.com>
Co-authored-by: Gaël Poupard <ffoodd@users.noreply.github.com>
2022-01-05 19:20:15 +02:00
GeoSot
0d4213bde3
Carousel: move repeated code to a method
2021-12-21 17:37:24 +02:00
GeoSot
b8ee68cfa0
Carousel: remove always true visibilityState check
...
According to https://developer.mozilla.org/en-US/docs/Web/API/Document/visibilityState `visibilityState` is always a string, so the check was always true
2021-12-21 17:37:24 +02:00
GeoSot
ff4bf4a458
Carousel: move carousel default interval to _getConfig() and simplify it
2021-12-21 17:37:24 +02:00
GeoSot
6f79721c82
Carousel: return early and drop a loop.
...
We can achieve the same thing by querying the specific selector directly
2021-12-21 17:37:24 +02:00
GeoSot
d60f146507
Carousel: add a helper to get the active element
2021-12-21 17:37:24 +02:00
GeoSot
65cf77ae3e
Popover/Tooltip: Fix vertical alignment on arrow of tip elements ( #35527 )
...
Regression of #32692
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-21 17:19:29 +02:00
Phil E. Taylor
c2db7108c2
Fix typo in comment ( #35564 )
...
s/moddal/modal
2021-12-18 07:58:31 +02:00
GeoSot
e0960b08e0
Tooltip: remove extraneous call to _getConfig() ( #35540 )
...
BaseClass already initializes the config
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-15 10:47:32 +02:00
GeoSot
d40fae456e
Popover.js: Accept empty content through data-bs-content ( #35514 )
...
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-15 10:41:31 +02:00
XhmikosR
cd04fe015f
Scrollspy: minor refactoring ( #35512 )
...
* reorder variables
* join lines
* use `filter(Boolean)` since it's clearer
* use `for...of`
2021-12-15 09:38:06 +02:00
GeoSot
886b940796
Extract Component config functionality to a separate class ( #33872 )
...
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-10 18:18:18 +02:00
XhmikosR
63d38b1974
Tab: minor refactoring ( #35511 )
...
* remove unneeded parentheses
* move variable
2021-12-10 07:51:57 +02:00
XhmikosR
871c8bdd3f
util/index.js: minor refactoring ( #35510 )
...
* rename variables
* remove an unused variable
* be more explicit
* reuse variable
2021-12-10 07:48:04 +02:00
XhmikosR
eaa801c899
Toast: join multiple classList calls ( #35507 )
2021-12-10 07:42:08 +02:00
GeoSot
28a5a72ed5
Scrollbar - remove margin/padding properties properly ( #35388 )
...
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-09 15:49:28 +02:00
GeoSot
c376cb0763
Dropdown: fix toggle focus after dropdown is hidden using the ESC button ( #35500 )
2021-12-09 15:34:17 +02:00
GeoSot
4fd5539c75
ScrollBar.js. Minor refactoring and add test ( #35492 )
2021-12-09 15:05:50 +02:00
GeoSot
328f723008
Tooltip: remove title attribute before show & add tests ( #35456 )
2021-12-07 15:51:56 +02:00
GeoSot
385fea49e8
Tooltip/Popover: add underscore prefix to protected functions
2021-12-01 18:00:36 +02:00
GeoSot
bd79d69a73
Tooltip: a simple code-block position change
2021-12-01 18:00:36 +02:00
GeoSot
1f7b83203d
Tooltip: simplify popper check
2021-12-01 18:00:36 +02:00
GeoSot
9b9372e8dd
Tooltip: refactor _hoverState to Boolean to achieve better control
2021-12-01 18:00:36 +02:00
GeoSot
8eacbaa08b
Tooltip: merge timeout functionality
2021-12-01 18:00:36 +02:00
GeoSot
c69ccba08c
Tooltip: Change _enter & _leave to work without arguments
2021-12-01 18:00:36 +02:00
GeoSot
a20e4203fe
Tooltip: Remove redundant config.delay check
...
`config.delay` is always an object after initialization
2021-12-01 18:00:36 +02:00
GeoSot
724663b3cd
Tooltip: Remove Data.set usage for dynamically created tip
...
This is not used any further, so we were just setting it.
2021-12-01 18:00:36 +02:00
GeoSot
3baeb0a5c1
Tooltip: merge isAnimated checks
2021-12-01 18:00:36 +02:00
GeoSot
53c77c0203
Tooltip: refactor jQueryInterface
2021-12-01 18:00:36 +02:00
GeoSot
dd07c1ff9e
Dropdown: clearMenus is always an event callback
2021-12-01 17:10:39 +02:00
GeoSot
f71640f048
Dropdown: Clean more
2021-12-01 17:10:39 +02:00
GeoSot
21e5618ba7
Dropdown: rename vars
2021-12-01 17:10:39 +02:00
GeoSot
0686fa00f0
Dropdown: Remove redundant Space check
2021-12-01 17:10:39 +02:00
GeoSot
a14a552d83
Dropdown: Deduplicate complex check
2021-12-01 17:10:39 +02:00
GeoSot
bff95d55af
Dropdown: Remove redundant check since the show method already does it
2021-12-01 17:10:39 +02:00
GeoSot
2d32802f53
Dropdown: Change constant to the way we use it
2021-12-01 17:10:39 +02:00
GeoSot
fb5921dec4
Dropdown: Merge display='static' & isNavbar functionality activating static popper with no styles attached
2021-12-01 17:10:39 +02:00
GeoSot
137b324930
Dropdown: Remove static method used once
2021-12-01 17:10:39 +02:00
GeoSot
cab62af2e6
Fix popover arrow & tooltip template after the setContent addition ( #35441 )
2021-12-01 15:10:10 +02:00
GeoSot
44a6cd724c
Tooltip: remove leftover method ( #35440 )
...
Remove a leftover after #32692
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-12-01 14:53:56 +02:00
GeoSot
6f077ff7bc
Clean tooltip component unneeded functionality ( #32692 )
2021-11-25 20:08:11 +02:00
GeoSot
374eeecfbc
tooltip.js: use array.includes instead of for iteration ( #35127 )
2021-11-25 19:39:13 +02:00
GeoSot
91ad255e07
Change adjustDialog's if conditions to improve readability
2021-11-25 19:23:49 +02:00
GeoSot
0f9fd75d6c
Respect modal's initial overflowY
2021-11-25 19:23:49 +02:00
GeoSot
cc3e5789ec
Remove some uncovered code that seems to be unused
2021-11-25 19:23:49 +02:00
GeoSot
92e664c921
Change check for dynamic modal
2021-11-25 19:23:49 +02:00
GeoSot
fc33ce4b46
Tweak methods
...
Name them to be more descriptive and have agnostic functionality
2021-11-25 19:23:49 +02:00
GeoSot
79e01c3bad
Some refactoring on modal, to improve readability and generic functionality
2021-11-25 19:23:49 +02:00
GeoSot
94a596fbcb
Add a template factory helper to handle all template cases ( #34519 )
...
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-11-25 19:14:02 +02:00
GeoSot
9640e2d5dd
Change the way collapse handles its children on opening
2021-10-13 16:38:27 +03:00
GeoSot
1eea132866
collapse: extract duplicate code to a function
2021-10-13 16:38:27 +03:00
XhmikosR
e8f702666f
JS: minor refactoring ( #35183 )
...
* add missing comments
* shorten block comments
* reorder constants
* reorder public/private methods
* sort exports alphabetically in util/index.js
* fix a couple of typos
2021-10-13 15:19:28 +03:00
GeoSot
db44392bda
Swipe: add test to ensure that it ignores pinch events ( #35161 )
2021-10-12 15:48:19 +03:00
GeoSot
8ec6c94522
Extract Carousel's swipe functionality to a separate Class ( #32999 )
2021-10-11 17:04:43 +03:00
XhmikosR
24e3ca2474
tooltip.js: ignore a LGTM error ( #35147 )
...
The code on this line is either sanitized or the user chose to not sanitize it.
2021-10-10 14:49:41 +03:00
XhmikosR
c44d64ed71
Merge remote-tracking branch 'remotes/origin/v513'
2021-10-09 18:28:28 +03:00
XhmikosR
1a6fdfae6b
Bump version to 5.1.3.
2021-10-09 09:43:19 +03:00
XhmikosR
eb0f705621
scrollspy.js: chain functions ( #35139 )
2021-10-08 12:28:05 +03:00
XhmikosR
64e13162fa
Sanitizer: fix logic and add a test. ( #35133 )
...
This was broken in 2596c97 inadvertently.
Added a test so that we don't hit this in the future.
2021-10-07 17:48:36 +03:00
XhmikosR
2596c97034
util/sanitizer.js: use Array.every() ( #35120 )
2021-10-06 00:23:14 +03:00
XhmikosR
3afe4b8c7d
Enable unicorn/numeric-separators-style rule.
...
This is taken care of by babel via @babel/plugin-proposal-numeric-separator
2021-10-05 19:52:11 +03:00
XhmikosR
567a41347e
Fix a unicorn/no-array-callback-reference issue
2021-10-05 19:52:11 +03:00
XhmikosR
666fe596bf
Enable unicorn/no-array-for-each rule
2021-10-05 19:52:11 +03:00
XhmikosR
2b4d0d166b
Enable unicorn/no-for-loop rule
2021-10-05 19:52:11 +03:00
XhmikosR
9f1579aa04
Enable unicorn/prefer-prototype-methods rule
2021-10-05 19:52:11 +03:00
XhmikosR
5ecef8ac01
Release v5.1.2 ( #35114 )
2021-10-05 18:50:18 +03:00
XhmikosR
759fc89f4b
sanitizer: add sms in the SAFE_URL_PATTERN ( #35074 )
2021-09-29 07:41:06 +03:00
GeoSot
bdfb4cc54d
Fix Collapse regression of handling toggling between sibling chilldren ( #34951 )
2021-09-15 15:33:19 +03:00
XhmikosR
8f2e678424
Minor refactoring ( #34980 )
...
Rename variables and remove a temporary one
2021-09-15 14:34:24 +03:00
XhmikosR
c5d03d93fc
Rename e to event ( #34979 )
2021-09-15 14:27:46 +03:00
Julien Déramond
499485589f
Remove remaining "master" branch references ( #34932 )
2021-09-08 17:58:50 +03:00
XhmikosR
0d81d3cbc1
Release v5.1.1 ( #34869 )
...
* Prepare v5.1.1.
* Dist
2021-09-07 18:37:44 +03:00
GeoSot
51afe026ca
Fix tooltip data-bs-original-title issue ( #34842 )
2021-08-31 16:11:22 +03:00
XhmikosR
4a4b61f082
Update eslint-plugin-unicorn to v35.0.0
2021-08-30 15:51:44 +03:00
GeoSot
c1fc1dbbee
Collapse on toggle, should not hide descendant tabpanels ( #34835 )
2021-08-30 15:29:02 +03:00
Sébastien ALFAIATE
91295c2187
alert.js: Add missing newline ( #34785 )
2021-08-20 18:30:08 +03:00
GeoSot
1e5e655670
Fix modal when is triggered by bs-toggle, to hide other open instances ( #34701 )
2021-08-10 17:55:34 +03:00
XhmikosR
418fe8113e
carousel: move common checks to a function ( #34621 )
2021-08-10 17:50:32 +03:00
XhmikosR
f20fece3a8
Prepare v5.1.0. ( #34674 )
2021-08-04 18:41:51 +03:00
GeoSot
a6a2d1e2df
Regression on tooltip template creation process. ( #34628 )
...
* Regression on tooltip template creation process.
* check if template content does not exist, or given argument is empty
* call `setContent()` once.
2021-08-03 11:59:33 +03:00
XhmikosR
742269a734
tooltip: move repeated strings to constants ( #34619 )
2021-07-30 00:32:07 +02:00
XhmikosR
6d707f4801
Enable a few eslint-config-xo rules ( #34620 )
...
* unicorn/prefer-dom-node-append
* unicorn/prefer-dom-node-remove
2021-07-30 00:23:00 +02:00
GeoSot
2bf32ad180
transfer interface inside jQueryInterface
2021-07-29 16:30:02 +03:00
GeoSot
e5b606d242
simplify initialization on data-toggle click
2021-07-29 16:30:02 +03:00
GeoSot
6f17e634ce
keep parent only as element
2021-07-29 16:30:02 +03:00
GeoSot
4c1f7bb051
remove duplicated Selector.find
2021-07-29 16:30:02 +03:00
GeoSot
7a71703fd3
Simplify check for children
2021-07-29 16:30:02 +03:00
GeoSot
8fc4f3aaf3
initialize variable properly
2021-07-29 16:30:02 +03:00
GeoSot
1947ca033e
Refactor internal function to use it in more cases.
...
Also, remove a few redundant checks since we already check for it in `_addAriaAndCollapsedClass()`.
2021-07-29 16:30:02 +03:00
GeoSot
5882d5dbe8
Add a helper function to check for showing
...
Also, remove the `isTransitioning()` helper.
2021-07-29 16:30:02 +03:00
GeoSot
4961ad0c63
Remove redundant check on data-toggle click.
...
Previously, it was assumed that the trigger element would have its own separate config than the collapse element itself.
2021-07-29 16:30:02 +03:00
GeoSot
2ad0a4a9fd
streamline _getConfig & interface
2021-07-29 16:30:02 +03:00
GeoSot
4bfd8a2cbc
Use a streamlined way to trigger component dismiss ( #34170 )
...
* use a streamlined way to trigger component dismiss
* add documentation
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-07-28 17:39:32 +03:00
alpadev
047145e808
Fix Manipulator.offset() ( #33603 )
...
* test: add more test cases for Manipulator.offset()
* fix: Manipulator.offset() is using obsolete properties to get scroll position
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Co-authored-by: GeoSot <geo.sotis@gmail.com>
2021-07-28 17:23:32 +03:00
Ryan Berliner
7646f6bd33
Add shift-tab keyboard support for dialogs (modal & Offcanvas components) ( #33865 )
...
* consolidate dialog focus trap logic
* add shift-tab support to focustrap
* remove redundant null check of trap element
Co-authored-by: GeoSot <geo.sotis@gmail.com>
* remove area support forom focusableChildren
* fix no expectations warning in focustrap tests
Co-authored-by: GeoSot <geo.sotis@gmail.com>
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-07-27 08:01:04 +03:00
GeoSot
41292a5257
Toasts: Change showing timings and classes to keep toast display:none by default ( #33610 )
2021-07-22 18:13:13 +03:00
GeoSot
e85a6ed77c
make dataApiKeydownHandler to handle specific instance, avoiding extra manipulations
2021-07-22 17:54:48 +03:00
GeoSot
9916191311
extract createPopper method
2021-07-22 17:54:48 +03:00
GeoSot
b1dad0943f
handle click event in one place, remove undocumented click listener on element in case of not having the proper markup
2021-07-22 17:54:48 +03:00
GeoSot
d01a08547d
use classList add instead of toggle on show
2021-07-22 17:54:48 +03:00
GeoSot
d130b00cad
simplify toggle
2021-07-22 17:54:48 +03:00
GeoSot
3533e2d637
Merge dropdownInterface to jQueryInterface
2021-07-22 17:54:48 +03:00
GeoSot
d3c6f25fd0
Add isShown method and reuse it
2021-07-22 17:54:48 +03:00
GeoSot
da2db218ed
Use on private method to set content & cleanup template
2021-07-22 17:20:38 +03:00
GeoSot
9c3ceaa25b
popover: Move common code in tooltip's getTipElement()
2021-07-22 17:20:38 +03:00
GeoSot
a97fd1cd24
use one private method to resolve string or function
2021-07-22 17:20:38 +03:00
GeoSot
3716603dbc
Use getOrCreateInstance on _initializeOnDelegatedTarget
2021-07-22 17:20:38 +03:00
GeoSot
92c7056619
_getDelegateConfig(): add a comment and remove an unneeded config check
2021-07-22 17:20:38 +03:00
GeoSot
c4e189df40
use a class private getter to decouple same methods usage
2021-07-22 17:20:38 +03:00
Ryan Berliner
119cfc3dfe
Remove whitespace at beginning of util/index.js ( #34545 )
2021-07-21 07:49:55 +03:00
GeoSot
5541179b38
Fix Util.reflow function and add documentation ( #34543 )
...
* add documentation to reflow function
* refactor to void as it should be
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-07-20 17:20:43 +03:00
GeoSot
dfafb9a60c
modal: change data-dismiss so that it can be outside of a modal using bs-target ( #33403 )
...
* change data-dismiss, so can be outside modal, using a bs-target
* Update site/content/docs/5.0/components/modal.md
Co-authored-by: Gaël Poupard <ffoodd@users.noreply.github.com>
2021-07-19 16:56:05 +03:00
GeoSot
e45b25e08e
util.js: remove Selector.findOne() dependency ( #34441 )
...
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-07-14 09:08:10 +03:00
Mark Otto
359ed099e5
Add horizontal collapse support
2021-07-05 17:22:29 -10:00
Jeremy Jackson
d314466a4d
Accept argument of different types in the getInstance method ( #34333 )
2021-06-29 17:45:45 +03:00
GeoSot
70dd7f6ff5
Changes to Alert component to match the others ( #33402 )
...
Alert.js: Refactor code to match the other components
* Use this._element
* Remove handleDismiss method and keep its functionality on event
* Change JqueryInterface to be more generic
* Correct docs to be aligned with code, and add undocumented functionality
* Update alerts.md
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-06-28 16:34:47 +03:00
Mark Otto
45d26de728
Variablize backdrop for modal and offcanvas
2021-06-25 13:41:15 -07:00
GeoSot
f94f497ad5
ScrollSpy: Make Proper use of the SelectorEngine
...
* avoid extra work, creating ids
* simplify selectors and constrain search inside `config.target`
2021-06-22 19:50:21 -07:00
XhmikosR
688bce4fa6
Release v5.0.2 ( #34276 )
...
* Bump version to v5.0.2.
* Dist
2021-06-22 21:29:16 +03:00
alpadev
4927388197
Register only one DOMContentLoaded event listener in onDOMContentLoaded ( #34158 )
...
* refactor: reuse one DOMContentLoaded event listener in onDOMContentLoaded function
Instead of adding an event listener everytime the utility function is called, cache the callbacks and execute them all at once.
* refactor: drop iife for onDOMContentLoaded
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
2021-06-22 20:19:55 +03:00
alpadev
290b9ee2cd
fix(carousel): arrow keys break animation if carousel sliding ( #34307 )
2021-06-22 13:11:03 +03:00
alpadev
d62ba935ef
Fix carousel buttons ( #34266 )
...
* test(carousel): add test to check if next/prev button work as intended
* fix(carousel): merge passed config with instance config in carouselInterface
2021-06-16 07:48:23 +03:00
GeoSot
cb47b8c964
Refactor scrollbar.js to be used as a Class ( #33947 )
2021-06-06 09:26:36 +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
4a5029ea29
Fix handling of transitionend events dispatched by nested elements( #33845 )
...
Fix handling of transitionend events dispatched by nested elements
Properly handle events from nested elements
Change `emulateTransitionEnd` to `executeAfterTransition` &&
2021-06-03 14:44:16 +03:00
Ryan Weaver
0cb70e214f
Changing Backdrop rootElement to default to a string ( #34092 )
...
The current config can cause the "body" to become stale. Specifically,
if the entire body element is swapped out for a new body element, then
the backdrop will continue to append itself to the original body element,
since it's stored in memory as a reference on this object.
This also no longer allows an explicit null to be passed to Backdrop's rootElement
This still accomplishes the laziness of "not finding the rootElement
until the Backdrop is created" to avoid problems of the JavaScript
being included inside <head> (so, before body is available).
2021-05-31 12:35:59 +03:00
GeoSot
544d9ac3cf
Change element.parentNode.removeChild(element) to element.remove() ( #34071 )
2021-05-25 18:30:38 +03:00
alpadev
b513a19003
Fix prevented show event disables modals with fade class from being displayed again ( #34085 )
...
Fix modal, in case is faded, a prevented show event can cause show method to not be executed again.
2021-05-24 18:52:36 +03:00
alpadev
b39b665072
Automatically select an item in the dropdown when using arrow keys ( #34052 )
2021-05-22 10:58:52 +03:00
Ryan Weaver
a2b5901efc
Fix bug where backdrop calls method on null if it is already removed from the body ( #34014 )
...
Co-authored-by: Rohit Sharma <rohit2sharma95@gmail.com>
2021-05-22 01:16:05 +03:00
Ryan Berliner
4ac711b5b4
Refactor isVisible helper, fixing false positives from deep nesting or alternate means ( #33960 )
2021-05-20 16:50:53 +03:00