@xenknight/framework7 0.0.8 → 0.0.10

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 (45) hide show
  1. package/components/navbar-new/navbar-ios.less +135 -135
  2. package/components/navbar-new/navbar-md.less +105 -105
  3. package/components/navbar-new/navbar-vars.less +78 -78
  4. package/components/navbar-new/navbar.d.ts +77 -77
  5. package/components/navbar-new/navbar.less +268 -268
  6. package/components/page/page.less +4 -2
  7. package/components/searchbar-new/searchbar-ios.less +131 -131
  8. package/components/searchbar-new/searchbar-md.less +154 -153
  9. package/components/searchbar-new/searchbar-new-class.js +32 -20
  10. package/components/searchbar-new/searchbar-vars.less +75 -75
  11. package/components/searchbar-new/searchbar.less +336 -331
  12. package/components/subnavbar-new/subnavbar-new-ios.less +67 -0
  13. package/components/subnavbar-new/subnavbar-new-md.less +48 -0
  14. package/components/subnavbar-new/subnavbar-new-vars.less +42 -0
  15. package/components/subnavbar-new/subnavbar-new.d.ts +12 -0
  16. package/components/subnavbar-new/subnavbar-new.js +20 -0
  17. package/components/subnavbar-new/subnavbar-new.less +151 -0
  18. package/components/toolbar-new/tabbar-highlight.js +29 -9
  19. package/components/toolbar-new/toolbar-ios.less +193 -193
  20. package/components/toolbar-new/toolbar-md.less +152 -152
  21. package/components/toolbar-new/toolbar-vars.less +77 -77
  22. package/components/toolbar-new/toolbar.less +261 -261
  23. package/framework7-bundle-rtl.css +260 -9
  24. package/framework7-bundle-rtl.min.css +5 -5
  25. package/framework7-bundle.css +260 -9
  26. package/framework7-bundle.esm.js +5 -3
  27. package/framework7-bundle.js +84 -32
  28. package/framework7-bundle.js.map +1 -1
  29. package/framework7-bundle.less +3 -2
  30. package/framework7-bundle.min.css +5 -5
  31. package/framework7-bundle.min.js +3 -3
  32. package/framework7-bundle.min.js.map +1 -1
  33. package/framework7-lite-bundle.esm.js +5 -3
  34. package/framework7-lite.esm.js +5 -3
  35. package/framework7-lite.js +3 -1
  36. package/framework7-rtl.css +260 -9
  37. package/framework7-rtl.min.css +5 -5
  38. package/framework7-types.d.ts +5 -1
  39. package/framework7.css +260 -9
  40. package/framework7.d.ts +4 -0
  41. package/framework7.esm.js +5 -3
  42. package/framework7.js +3 -1
  43. package/framework7.less +3 -2
  44. package/framework7.min.css +5 -5
  45. package/package.json +1 -1
@@ -0,0 +1,67 @@
1
+ .ios {
2
+ .subnavbar-new {
3
+ height: calc(var(--f7-subnavbar-new-height) + 1px);
4
+ margin-top: -1px;
5
+ padding-top: 1px;
6
+ border-radius: var(--f7-subnavbar-new-height);
7
+ box-shadow: var(--f7-glass-shadow);
8
+ .ios-glass-backdrop();
9
+ --f7-segmented-strong-bg-color: transparent;
10
+
11
+ &:has(> .searchbar-new) {
12
+ background: transparent;
13
+ backdrop-filter: none;
14
+ box-shadow: none;
15
+ }
16
+
17
+ .subnavbar-new-inner {
18
+ border-radius: inherit;
19
+ }
20
+
21
+ .title {
22
+ align-self: flex-start;
23
+ flex-shrink: 10;
24
+ }
25
+ .ltr({
26
+ .left, .right {
27
+ a + a {
28
+ margin-left: 16px;
29
+ }
30
+ }
31
+ .left {
32
+ margin-right: 10px;
33
+ }
34
+ .right {
35
+ margin-left: 10px;
36
+ }
37
+ .right:first-child {
38
+ right: 8px;
39
+ }
40
+ });
41
+ .rtl({
42
+ .left, .right {
43
+ a + a {
44
+ margin-right: 16px;
45
+ }
46
+ }
47
+ .left {
48
+ margin-left: 10px;
49
+ }
50
+ .right {
51
+ margin-right: 10px;
52
+ }
53
+ .right:first-child {
54
+ left: 8px;
55
+ }
56
+ });
57
+
58
+ a.link {
59
+ justify-content: flex-start;
60
+ }
61
+ a.icon-only {
62
+ justify-content: center;
63
+ margin: 0;
64
+ }
65
+ }
66
+ }
67
+
@@ -0,0 +1,48 @@
1
+ .md {
2
+ .subnavbar-new {
3
+ height: var(--f7-subnavbar-new-height);
4
+ .ltr({
5
+ .right {
6
+ margin-left: auto;
7
+ }
8
+ .right:first-child {
9
+ right: 16px;
10
+ }
11
+ });
12
+ .rtl({
13
+ .right {
14
+ margin-right: auto;
15
+ }
16
+ .right:first-child {
17
+ left: 16px;
18
+ }
19
+ });
20
+ a.link {
21
+ justify-content: center;
22
+ padding: 0 12px;
23
+ }
24
+ a.icon-only {
25
+ flex-shrink: 0;
26
+ padding: 0 12px;
27
+ }
28
+ }
29
+ .subnavbar-new-inner {
30
+ .ltr({
31
+ > a.link:first-child {
32
+ margin-left: calc(-1 * var(--f7-subnavbar-new-inner-padding-left));
33
+ }
34
+ > a.link:last-child {
35
+ margin-right: calc(-1 * var(--f7-subnavbar-new-inner-padding-right));
36
+ }
37
+ });
38
+ .rtl({
39
+ > a.link:first-child {
40
+ margin-right: calc(-1 * var(--f7-subnavbar-new-inner-padding-right));
41
+ }
42
+ > a.link:last-child {
43
+ margin-left: calc(-1 * var(--f7-subnavbar-new-inner-padding-left));
44
+ }
45
+ });
46
+ }
47
+ }
48
+
@@ -0,0 +1,42 @@
1
+ :root {
2
+ /*
3
+ --f7-subnavbar-new-bg-color: var(--f7-bars-bg-color);
4
+ --f7-subnavbar-new-bg-color-rgb: var(--f7-bars-bg-color-rgb);
5
+ --f7-subnavbar-new-border-color: var(--f7-bars-border-color);
6
+ --f7-subnavbar-new-link-color: var(--f7-bars-link-color);
7
+ --f7-subnavbar-new-text-color: var(--f7-bars-text-color);
8
+ */
9
+ --f7-subnavbar-new-title-line-height: 1.2;
10
+ }
11
+ .ios-vars({
12
+ --f7-subnavbar-new-height: 44px;
13
+ --f7-subnavbar-new-offset-left: calc(16px + var(--f7-safe-area-left));
14
+ --f7-subnavbar-new-offset-right: calc(16px + var(--f7-safe-area-right));
15
+ --f7-subnavbar-new-inner-padding-left: 5px;
16
+ --f7-subnavbar-new-inner-padding-right: 5px;
17
+ --f7-subnavbar-new-title-font-size: 24px;
18
+ --f7-subnavbar-new-title-font-weight: 700;
19
+ --f7-subnavbar-new-title-letter-spacing: -0.03em;
20
+ --f7-subnavbar-new-title-margin-left: 8px;
21
+ --f7-subnavbar-new-bg-color: var(--f7-glass-bg-color);
22
+ /*
23
+ --f7-subnavbar-new-link-height: var(--f7-subnavbar-new-height);
24
+ --f7-subnavbar-new-link-line-height: var(--f7-subnavbar-new-height);
25
+ */
26
+ });
27
+ .md-vars({
28
+ --f7-subnavbar-new-height: 64px;
29
+ --f7-subnavbar-new-offset-left: 0;
30
+ --f7-subnavbar-new-offset-right: 0;
31
+ --f7-subnavbar-new-inner-padding-left: calc(16px + var(--f7-safe-area-left));
32
+ --f7-subnavbar-new-inner-padding-right: calc(16px + var(--f7-safe-area-right));
33
+ --f7-subnavbar-new-title-font-size: 22px;
34
+ --f7-subnavbar-new-title-font-weight: 400;
35
+ --f7-subnavbar-new-title-letter-spacing: 0;
36
+ --f7-subnavbar-new-title-margin-left: 0px;
37
+ /*
38
+ --f7-subnavbar-new-link-height: var(--f7-subnavbar-new-height);
39
+ --f7-subnavbar-new-link-line-height: var(--f7-subnavbar-new-height);
40
+ */
41
+ });
42
+
@@ -0,0 +1,12 @@
1
+ import { Framework7Plugin } from '../app/app-class.js';
2
+
3
+ export namespace SubnavbarNew {
4
+ interface AppMethods {}
5
+ interface AppParams {}
6
+ interface AppEvents {}
7
+ }
8
+
9
+ declare const SubnavbarNewComponent: Framework7Plugin;
10
+
11
+ export default SubnavbarNewComponent;
12
+
@@ -0,0 +1,20 @@
1
+ import $ from '../../shared/dom7.js';
2
+ export default {
3
+ name: 'subnavbar-new',
4
+ on: {
5
+ pageInit(page) {
6
+ if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar-new').length) {
7
+ page.$el.addClass('page-with-subnavbar-new');
8
+ }
9
+ if (page.$navbarNewEl && page.$navbarNewEl.length && page.$navbarNewEl.find('.subnavbar-new').length) {
10
+ page.$el.addClass('page-with-subnavbar-new');
11
+ }
12
+ const $innerSubnavbars = page.$el.find('.subnavbar-new').filter(subnavbarEl => {
13
+ return $(subnavbarEl).parents('.page')[0] === page.$el[0];
14
+ });
15
+ if ($innerSubnavbars.length) {
16
+ page.$el.addClass('page-with-subnavbar-new');
17
+ }
18
+ }
19
+ }
20
+ };
@@ -0,0 +1,151 @@
1
+ /* === Subnavbar New === */
2
+ @import './subnavbar-new-vars.less';
3
+ .subnavbar-new {
4
+ position: absolute;
5
+ left: var(--f7-subnavbar-new-offset-left);
6
+ right: var(--f7-subnavbar-new-offset-right);
7
+ top: 0;
8
+ z-index: 600;
9
+ box-sizing: border-box;
10
+ display: flex;
11
+ justify-content: space-between;
12
+ align-items: center;
13
+ background-color: var(--f7-subnavbar-new-bg-color, var(--f7-bars-bg-color));
14
+ color: var(--f7-subnavbar-new-text-color, var(--f7-bars-text-color));
15
+ .ios-translucent-bars(var(--f7-subnavbar-new-bg-color-rgb, var(--f7-bars-bg-color-rgb)));
16
+ .subnavbar-new-title {
17
+ position: relative;
18
+ overflow: hidden;
19
+ text-overflow: ellpsis;
20
+ white-space: nowrap;
21
+ font-size: var(--f7-subnavbar-new-title-font-size);
22
+ font-weight: var(--f7-subnavbar-new-title-font-weight);
23
+ text-align: left;
24
+ display: inline-block;
25
+ line-height: var(--f7-subnavbar-new-title-line-height);
26
+ letter-spacing: var(--f7-subnavbar-new-title-letter-spacing);
27
+ .ltr({
28
+ margin-left: var(--f7-subnavbar-new-title-margin-left);
29
+ });
30
+ .rtl({
31
+ margin-right: var(--f7-subnavbar-new-title-margin-left);
32
+ });
33
+ }
34
+ .left,
35
+ .right {
36
+ flex-shrink: 0;
37
+ display: flex;
38
+ justify-content: flex-start;
39
+ align-items: center;
40
+ }
41
+ .right:first-child {
42
+ position: absolute;
43
+ height: 100%;
44
+ }
45
+ a {
46
+ color: var(--f7-subnavbar-new-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));
47
+ }
48
+ a.link {
49
+ line-height: var(--f7-subnavbar-new-link-line-height, var(--f7-subnavbar-new-height));
50
+ height: var(--f7-subnavbar-new-link-height, var(--f7-subnavbar-new-height));
51
+ }
52
+ a.icon-only {
53
+ min-width: var(--f7-subnavbar-new-height);
54
+ }
55
+ &.no-outline {
56
+ &:after {
57
+ display: none !important;
58
+ }
59
+ }
60
+ &.navbar-hidden {
61
+ &:before {
62
+ display: none !important;
63
+ }
64
+ }
65
+ &:after,
66
+ &:before {
67
+ backface-visibility: hidden;
68
+ }
69
+ .hairline(bottom, var(--f7-subnavbar-new-border-color, transparent));
70
+ }
71
+ .subnavbar-new-inner {
72
+ width: 100%;
73
+ height: 100%;
74
+ display: flex;
75
+ align-items: center;
76
+ box-sizing: border-box;
77
+ justify-content: space-between;
78
+ overflow: hidden;
79
+ padding: 0 var(--f7-subnavbar-new-inner-padding-left) 0
80
+ var(--f7-subnavbar-new-inner-padding-right);
81
+ }
82
+ .navbar .subnavbar-new,
83
+ .navbar-new .subnavbar-new {
84
+ top: 100%;
85
+ }
86
+
87
+ .views,
88
+ .view,
89
+ .page {
90
+ > .subnavbar-new {
91
+ position: absolute;
92
+ }
93
+ }
94
+ .navbar-new ~ * .subnavbar-new,
95
+ .navbars-new ~ * .subnavbar-new,
96
+ .page-with-subnavbar-new .navbar-new ~ .subnavbar-new,
97
+ .page-with-subnavbar-new .navbar-new ~ * .subnavbar-new,
98
+ .navbar-new ~ .page-with-subnavbar-new:not(.no-navbar) .subnavbar-new,
99
+ .navbar-new ~ .subnavbar-new,
100
+ .navbars-new ~ .page-with-subnavbar-new:not(.no-navbar) .subnavbar-new,
101
+ .navbars-new ~ .subnavbar-new {
102
+ top: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));
103
+ }
104
+
105
+ .navbar ~ .page-with-navbar-large:not(.no-navbar) .subnavbar-new,
106
+ .navbars ~ .page-with-navbar-large:not(.no-navbar) .subnavbar-new,
107
+ .navbar-new ~ .page-with-navbar-new-large:not(.no-navbar) .subnavbar-new,
108
+ .navbars-new ~ .page-with-navbar-new-large:not(.no-navbar) .subnavbar-new,
109
+ .page-with-subnavbar-new.page-with-navbar-large .navbar ~ .subnavbar-new,
110
+ .page-with-subnavbar-new.page-with-navbar-large .navbar ~ * .subnavbar-new,
111
+ .page-with-subnavbar-new.page-with-navbar-new-large .navbar-new ~ .subnavbar-new,
112
+ .page-with-subnavbar-new.page-with-navbar-new-large .navbar-new ~ * .subnavbar-new,
113
+ .navbar .title-large ~ .subnavbar-new,
114
+ .navbar-new .title-large ~ .subnavbar-new {
115
+ top: calc(
116
+ var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top)
117
+ );
118
+ transform: translate3d(
119
+ 0,
120
+ calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)),
121
+ 0
122
+ );
123
+ }
124
+
125
+ .navbar-new ~ .page-with-navbar-new-large:not(.no-navbar) .subnavbar-new,
126
+ .navbars-new ~ .page-with-navbar-new-large:not(.no-navbar) .subnavbar-new,
127
+ .page-with-subnavbar-new.page-with-navbar-new-large .navbar-new ~ .subnavbar-new,
128
+ .page-with-subnavbar-new.page-with-navbar-new-large .navbar-new ~ * .subnavbar-new,
129
+ .navbar-new .title-large ~ .subnavbar-new {
130
+ top: calc(
131
+ var(--f7-navbar-new-height) + var(--f7-navbar-new-large-title-height) + var(--f7-safe-area-top)
132
+ );
133
+ transform: translate3d(
134
+ 0,
135
+ calc(
136
+ -1 * var(--f7-navbar-new-large-collapse-progress) * var(--f7-navbar-new-large-title-height)
137
+ ),
138
+ 0
139
+ );
140
+ }
141
+ .page-with-subnavbar-new,
142
+ .subnavbar-new ~ * {
143
+ --f7-page-subnavbar-new-offset: var(--f7-subnavbar-new-height);
144
+ }
145
+
146
+ .if-ios-theme({
147
+ @import './subnavbar-new-ios.less';
148
+ });
149
+ .if-md-theme({
150
+ @import './subnavbar-new-md.less';
151
+ });
@@ -51,9 +51,10 @@ const unsetHighlightOnTouch = data => {
51
51
  const {
52
52
  activeIndex,
53
53
  newActiveIndex,
54
- linkEls
54
+ linkEls,
55
+ isMouse
55
56
  } = data;
56
- if (activeIndex !== newActiveIndex) {
57
+ if (activeIndex !== newActiveIndex && !isMouse) {
57
58
  linkEls[newActiveIndex].click();
58
59
  }
59
60
  highlightEl.style.transform = `translateX(${newActiveIndex * 100}%)`;
@@ -83,12 +84,13 @@ export const initTabbarNewHighlight = el => {
83
84
  if (e.type === 'touchstart') {
84
85
  e.preventDefault();
85
86
  }
86
- if (e.pointerType !== 'touch') return;
87
+ if (e.pointerType !== 'touch' && e.pointerType !== 'mouse') return;
87
88
  if (!el) return;
88
89
  if (e.type === 'pointerdown') {
89
90
  data.linkEls = el.querySelectorAll('.tab-link');
90
91
  data.rect = toolbarPaneEl.getBoundingClientRect();
91
92
  data.touched = true;
93
+ data.isMouse = e.pointerType === 'mouse';
92
94
  setHighlightOnTouch(data, e);
93
95
  startAnimation(data);
94
96
  }
@@ -105,17 +107,29 @@ export const initTabbarNewHighlight = el => {
105
107
  stopAnimation(data);
106
108
  }
107
109
  };
110
+ el.f7ToolbarNewOnPointerMove = e => {
111
+ const highlightData = el.f7ToolbarNewHighlightData;
112
+ if (e.pointerType === 'mouse' && highlightData && highlightData.touched) {
113
+ el.f7ToolbarNewOnPointer(e);
114
+ }
115
+ };
116
+ el.f7ToolbarNewOnPointerUp = e => {
117
+ const highlightData = el.f7ToolbarNewHighlightData;
118
+ if (e.pointerType === 'mouse' && highlightData && highlightData.touched) {
119
+ el.f7ToolbarNewOnPointer(e);
120
+ }
121
+ };
108
122
  el.addEventListener('touchstart', el.f7ToolbarNewOnPointer, {
109
123
  passive: false
110
124
  });
111
125
  el.addEventListener('pointerdown', el.f7ToolbarNewOnPointer, {
112
126
  passive: false
113
127
  });
114
- document.addEventListener('pointermove', el.f7ToolbarNewOnPointer, {
115
- passive: false
128
+ document.addEventListener('pointermove', el.f7ToolbarNewOnPointerMove, {
129
+ passive: true
116
130
  });
117
- document.addEventListener('pointerup', el.f7ToolbarNewOnPointer, {
118
- passive: false
131
+ document.addEventListener('pointerup', el.f7ToolbarNewOnPointerUp, {
132
+ passive: true
119
133
  });
120
134
  document.addEventListener('pointercancel', el.f7ToolbarNewOnPointer, {
121
135
  passive: false
@@ -126,9 +140,15 @@ export const destroyTabbarNewHighlight = el => {
126
140
  const document = getDocument();
127
141
  el.removeEventListener('touchstart', el.f7ToolbarNewOnPointer);
128
142
  el.removeEventListener('pointerdown', el.f7ToolbarNewOnPointer);
129
- document.removeEventListener('pointermove', el.f7ToolbarNewOnPointer);
130
- document.removeEventListener('pointerup', el.f7ToolbarNewOnPointer);
143
+ if (el.f7ToolbarNewOnPointerMove) {
144
+ document.removeEventListener('pointermove', el.f7ToolbarNewOnPointerMove);
145
+ }
146
+ if (el.f7ToolbarNewOnPointerUp) {
147
+ document.removeEventListener('pointerup', el.f7ToolbarNewOnPointerUp);
148
+ }
131
149
  document.removeEventListener('pointercancel', el.f7ToolbarNewOnPointer);
132
150
  el.f7ToolbarNewOnPointer = null;
151
+ el.f7ToolbarNewOnPointerMove = null;
152
+ el.f7ToolbarNewOnPointerUp = null;
133
153
  el.f7ToolbarNewHighlightData = null;
134
154
  };