bootstrap-rn 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/lib/commonjs/Provider.js +3 -0
  2. package/lib/commonjs/Provider.js.map +1 -1
  3. package/lib/commonjs/components/Caret.js +1 -1
  4. package/lib/commonjs/components/badge/Badge.js +1 -1
  5. package/lib/commonjs/components/buttons/Button.js +3 -3
  6. package/lib/commonjs/components/close/CloseButton.js +2 -2
  7. package/lib/commonjs/components/dropdown/DropdownItem.js +1 -1
  8. package/lib/commonjs/components/dropdown/useToggleDropdown.js +1 -0
  9. package/lib/commonjs/components/dropdown/useToggleDropdown.js.map +1 -1
  10. package/lib/commonjs/components/forms/FormCheckInput.js +1 -1
  11. package/lib/commonjs/components/list-group/ListGroupItem.js +1 -1
  12. package/lib/commonjs/components/modal/Modal.js +3 -8
  13. package/lib/commonjs/components/modal/Modal.js.map +1 -1
  14. package/lib/commonjs/components/modal/useModal.js +13 -1
  15. package/lib/commonjs/components/modal/useModal.js.map +1 -1
  16. package/lib/commonjs/components/navbar/NavbarToggler.js +1 -1
  17. package/lib/commonjs/components/offcanvas/Offcanvas.js +1 -6
  18. package/lib/commonjs/components/offcanvas/Offcanvas.js.map +1 -1
  19. package/lib/commonjs/components/offcanvas/useOffcanvas.js +13 -1
  20. package/lib/commonjs/components/offcanvas/useOffcanvas.js.map +1 -1
  21. package/lib/commonjs/components/toasts/Toast.js +1 -1
  22. package/lib/commonjs/components/toasts/ToastContainer.js +1 -1
  23. package/lib/commonjs/hooks/useScrollbarEffects.js +48 -41
  24. package/lib/commonjs/hooks/useScrollbarEffects.js.map +1 -1
  25. package/lib/commonjs/theme/utilities.js +8 -8
  26. package/lib/commonjs/theme/utilities.js.map +1 -1
  27. package/lib/module/Provider.js +3 -0
  28. package/lib/module/Provider.js.map +1 -1
  29. package/lib/module/components/Caret.js +1 -1
  30. package/lib/module/components/badge/Badge.js +1 -1
  31. package/lib/module/components/buttons/Button.js +3 -3
  32. package/lib/module/components/close/CloseButton.js +2 -2
  33. package/lib/module/components/dropdown/DropdownItem.js +1 -1
  34. package/lib/module/components/dropdown/useToggleDropdown.js +1 -0
  35. package/lib/module/components/dropdown/useToggleDropdown.js.map +1 -1
  36. package/lib/module/components/forms/FormCheckInput.js +1 -1
  37. package/lib/module/components/list-group/ListGroupItem.js +1 -1
  38. package/lib/module/components/modal/Modal.js +3 -8
  39. package/lib/module/components/modal/Modal.js.map +1 -1
  40. package/lib/module/components/modal/useModal.js +13 -2
  41. package/lib/module/components/modal/useModal.js.map +1 -1
  42. package/lib/module/components/navbar/NavbarToggler.js +1 -1
  43. package/lib/module/components/offcanvas/Offcanvas.js +1 -6
  44. package/lib/module/components/offcanvas/Offcanvas.js.map +1 -1
  45. package/lib/module/components/offcanvas/useOffcanvas.js +13 -2
  46. package/lib/module/components/offcanvas/useOffcanvas.js.map +1 -1
  47. package/lib/module/components/toasts/Toast.js +1 -1
  48. package/lib/module/components/toasts/ToastContainer.js +1 -1
  49. package/lib/module/hooks/useScrollbarEffects.js +49 -41
  50. package/lib/module/hooks/useScrollbarEffects.js.map +1 -1
  51. package/lib/module/theme/utilities.js +8 -8
  52. package/lib/module/theme/utilities.js.map +1 -1
  53. package/package.json +69 -69
  54. package/src/Provider.js +63 -59
  55. package/src/components/Caret.js +127 -127
  56. package/src/components/badge/Badge.js +52 -52
  57. package/src/components/buttons/Button.js +381 -381
  58. package/src/components/close/CloseButton.js +146 -146
  59. package/src/components/dropdown/DropdownItem.js +151 -151
  60. package/src/components/dropdown/useToggleDropdown.js +1 -0
  61. package/src/components/forms/FormCheckInput.js +247 -247
  62. package/src/components/list-group/ListGroupItem.js +1 -1
  63. package/src/components/modal/Modal.js +235 -241
  64. package/src/components/modal/useModal.js +25 -10
  65. package/src/components/navbar/NavbarToggler.js +132 -132
  66. package/src/components/offcanvas/Offcanvas.js +252 -258
  67. package/src/components/offcanvas/useOffcanvas.js +20 -5
  68. package/src/components/toasts/Toast.js +1 -1
  69. package/src/components/toasts/ToastContainer.js +43 -43
  70. package/src/hooks/useScrollbarEffects.js +82 -62
  71. package/src/theme/utilities.js +4 -4
@@ -1,62 +1,82 @@
1
- import { useRef, useEffect, useContext } from 'react';
2
- import { Platform, findNodeHandle } from 'react-native';
3
- import Context from '../Context';
4
-
5
- const computeScrollbarWidth = () => {
6
- const documentWidth = document.documentElement.clientWidth;
7
- return Math.abs(window.innerWidth - documentWidth);
8
- };
9
-
10
- export default function useScrollbarEffects({ keepBodyScroll, visible }) {
11
- if (Platform.OS !== 'web' || keepBodyScroll) {
12
- return;
13
- }
14
-
15
- const context = useContext(Context);
16
-
17
- const scrollbarWidth = useRef();
18
-
19
- useEffect(() => {
20
- if (!visible) {
21
- return undefined;
22
- }
23
-
24
- if (!scrollbarWidth.current) {
25
- scrollbarWidth.current = computeScrollbarWidth();
26
- }
27
-
28
- const rect = document.body.getBoundingClientRect();
29
- const isBodyOverflowing = rect.left + rect.right < window.innerWidth;
30
-
31
- // Set body and fixed elements padding adjustments.
32
- const fixedElements = context.fixed
33
- .filter((ref) => ref.current)
34
- .map((ref) => findNodeHandle(ref.current));
35
- const elements = [document.body, ...fixedElements];
36
-
37
- const originalWidths = elements.map((el) => el.style.width || '');
38
-
39
- const originalBodyOverflow = document.body.style.overflow || '';
40
-
41
- if (isBodyOverflowing) {
42
- elements.forEach((el) => {
43
- // eslint-disable-next-line no-param-reassign
44
- el.style.width = `calc(100% - ${scrollbarWidth.current}px)`;
45
- });
46
- }
47
-
48
- // Add "overflow: hidden" to body element.
49
- document.body.style.overflow = 'hidden';
50
-
51
- return () => {
52
- // Reset body padding adjustments.
53
- elements.forEach((el, key) => {
54
- // eslint-disable-next-line no-param-reassign
55
- el.style.width = originalWidths[key] || '';
56
- });
57
-
58
- // Remove "overflow: hidden" from body element.
59
- document.body.style.overflow = originalBodyOverflow;
60
- };
61
- }, [visible]);
62
- }
1
+ import { useRef, useMemo } from 'react';
2
+ import { Platform, findNodeHandle } from 'react-native';
3
+
4
+ const computeScrollbarWidth = () => {
5
+ const documentWidth = document.documentElement.clientWidth;
6
+ return Math.abs(window.innerWidth - documentWidth);
7
+ };
8
+
9
+ export default function useScrollbarEffects(elements) {
10
+ if (Platform.OS !== 'web') {
11
+ return useMemo(
12
+ () => ({
13
+ hide() {},
14
+ show() {},
15
+ }),
16
+ [],
17
+ );
18
+ }
19
+
20
+ const state = useRef({
21
+ counter: 0,
22
+ elements: [],
23
+ originalWidths: [],
24
+ originalBodyOverflow: '',
25
+ });
26
+
27
+ return useMemo(
28
+ () => ({
29
+ hide() {
30
+ state.current.counter += 1;
31
+
32
+ if (state.current.counter !== 1) {
33
+ return;
34
+ }
35
+
36
+ const rect = document.body.getBoundingClientRect();
37
+ const isBodyOverflowing = rect.left + rect.right < window.innerWidth;
38
+
39
+ // Set body and fixed elements padding adjustments.
40
+ const fixedElements = elements
41
+ .filter((ref) => ref.current)
42
+ .map((ref) => findNodeHandle(ref.current));
43
+ state.current.elements = [document.body, ...fixedElements];
44
+
45
+ state.current.originalWidths = state.current.elements.map(
46
+ (el) => el.style.width || '',
47
+ );
48
+
49
+ state.current.originalBodyOverflow = document.body.style.overflow || '';
50
+
51
+ if (isBodyOverflowing) {
52
+ const scrollbarWidth = computeScrollbarWidth();
53
+
54
+ state.current.elements.forEach((el) => {
55
+ // eslint-disable-next-line no-param-reassign
56
+ el.style.width = `calc(100% - ${scrollbarWidth}px)`;
57
+ });
58
+ }
59
+
60
+ // Add "overflow: hidden" to body element.
61
+ document.body.style.overflow = 'hidden';
62
+ },
63
+ show() {
64
+ state.current.counter -= 1;
65
+
66
+ if (state.current.counter !== 0) {
67
+ return;
68
+ }
69
+
70
+ // Remove "overflow: hidden" from body element.
71
+ document.body.style.overflow = state.current.originalBodyOverflow;
72
+
73
+ // Reset body padding adjustments.
74
+ state.current.elements.forEach((el, key) => {
75
+ // eslint-disable-next-line no-param-reassign
76
+ el.style.width = state.current.originalWidths[key] || '';
77
+ });
78
+ },
79
+ }),
80
+ [],
81
+ );
82
+ }
@@ -635,22 +635,22 @@ const utilities = {
635
635
  gradient: 'var(--#{$variable-prefix}gradient))',
636
636
  },
637
637
  }, */
638
- /* userSelect: {
638
+ userSelect: {
639
639
  property: 'user-select',
640
640
  values: {
641
641
  all: 'all',
642
642
  auto: 'auto',
643
643
  none: 'none',
644
644
  },
645
- }, */
646
- /* pointerEvents: {
645
+ },
646
+ pointerEvents: {
647
647
  property: 'pointer-events',
648
648
  class: 'pe',
649
649
  values: {
650
650
  none: 'none',
651
651
  auto: 'auto',
652
652
  },
653
- }, */
653
+ },
654
654
  rounded: {
655
655
  property: 'border-radius',
656
656
  class: 'rounded',