@rdlabo/ionic-theme-ios27 1.0.4 → 1.1.0-beta.pr224.shac63de393e27b

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 (96) hide show
  1. package/dist/css/components/ion-toggle.css +1 -1
  2. package/dist/css/ionic-theme-ios27.css +1 -1
  3. package/dist/native/components/searchable-tabs.d.ts.map +1 -1
  4. package/dist/native/components/searchable-tabs.js +2 -0
  5. package/dist/native/runtime.d.ts.map +1 -1
  6. package/dist/native/runtime.js +73 -7
  7. package/dist/native/shared/crossfade.d.ts +2 -2
  8. package/dist/native/shared/crossfade.d.ts.map +1 -1
  9. package/dist/native/shared/crossfade.js +3 -3
  10. package/dist/segment/index.d.ts.map +1 -1
  11. package/dist/segment/index.js +7 -0
  12. package/docs/animation.md +2 -2
  13. package/docs/native-ui-shell.md +2 -0
  14. package/package.json +2 -5
  15. package/src/native/components/searchable-tabs.ts +3 -0
  16. package/src/native/runtime.ts +81 -6
  17. package/src/native/shared/crossfade.ts +4 -3
  18. package/src/segment/index.ts +11 -0
  19. package/src/styles/components/ion-toggle.scss +8 -2
  20. package/src/tab-bar-searchable/index.ts +1 -1
  21. package/node_modules/@rdlabo/ionic-theme-utils/LICENSE +0 -21
  22. package/node_modules/@rdlabo/ionic-theme-utils/README.md +0 -28
  23. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.d.ts +0 -3
  24. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.d.ts.map +0 -1
  25. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.js +0 -13
  26. package/node_modules/@rdlabo/ionic-theme-utils/dist/dom.js.map +0 -1
  27. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.d.ts +0 -6
  28. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.d.ts.map +0 -1
  29. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.js +0 -37
  30. package/node_modules/@rdlabo/ionic-theme-utils/dist/focus-controller.js.map +0 -1
  31. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.d.ts +0 -13
  32. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.d.ts.map +0 -1
  33. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.js +0 -11
  34. package/node_modules/@rdlabo/ionic-theme-utils/dist/index.js.map +0 -1
  35. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.enter.d.ts +0 -3
  36. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.enter.d.ts.map +0 -1
  37. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.enter.js +0 -196
  38. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.enter.js.map +0 -1
  39. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.leave.d.ts +0 -3
  40. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.leave.d.ts.map +0 -1
  41. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.leave.js +0 -80
  42. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/animations/ios.leave.js.map +0 -1
  43. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/callout-surface.d.ts +0 -2
  44. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/callout-surface.d.ts.map +0 -1
  45. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/callout-surface.js +0 -45
  46. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/callout-surface.js.map +0 -1
  47. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/popover-interface.d.ts +0 -38
  48. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/popover-interface.d.ts.map +0 -1
  49. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/popover-interface.js +0 -2
  50. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/popover-interface.js.map +0 -1
  51. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/utils.d.ts +0 -38
  52. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/utils.d.ts.map +0 -1
  53. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/utils.js +0 -378
  54. package/node_modules/@rdlabo/ionic-theme-utils/dist/popover/utils.js.map +0 -1
  55. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.d.ts +0 -16
  56. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.d.ts.map +0 -1
  57. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.js +0 -2
  58. package/node_modules/@rdlabo/ionic-theme-utils/dist/sheets-of-glass.js.map +0 -1
  59. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/interfaces.d.ts +0 -41
  60. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/interfaces.d.ts.map +0 -1
  61. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/interfaces.js +0 -6
  62. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/interfaces.js.map +0 -1
  63. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/utils.d.ts +0 -12
  64. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/utils.d.ts.map +0 -1
  65. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/utils.js +0 -61
  66. package/node_modules/@rdlabo/ionic-theme-utils/dist/tab-bar-searchable/utils.js.map +0 -1
  67. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.d.ts +0 -15
  68. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.d.ts.map +0 -1
  69. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.js +0 -49
  70. package/node_modules/@rdlabo/ionic-theme-utils/dist/theme.js.map +0 -1
  71. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.d.ts +0 -18
  72. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.d.ts.map +0 -1
  73. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.js +0 -412
  74. package/node_modules/@rdlabo/ionic-theme-utils/dist/transition/ios.transition.js.map +0 -1
  75. package/node_modules/@rdlabo/ionic-theme-utils/package.json +0 -68
  76. package/node_modules/@rdlabo/ionic-theme-utils/scripts/copy-structured-list.mjs +0 -17
  77. package/node_modules/@rdlabo/ionic-theme-utils/src/dom.spec.ts +0 -19
  78. package/node_modules/@rdlabo/ionic-theme-utils/src/dom.ts +0 -16
  79. package/node_modules/@rdlabo/ionic-theme-utils/src/focus-controller.ts +0 -38
  80. package/node_modules/@rdlabo/ionic-theme-utils/src/index.ts +0 -59
  81. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/animations/ios.enter.ts +0 -259
  82. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/animations/ios.leave.ts +0 -99
  83. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/callout-surface.ts +0 -54
  84. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/popover-interface.ts +0 -44
  85. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/utils.spec.ts +0 -58
  86. package/node_modules/@rdlabo/ionic-theme-utils/src/popover/utils.ts +0 -698
  87. package/node_modules/@rdlabo/ionic-theme-utils/src/sheets-of-glass.ts +0 -17
  88. package/node_modules/@rdlabo/ionic-theme-utils/src/styles/index.scss +0 -1
  89. package/node_modules/@rdlabo/ionic-theme-utils/src/styles/md-ion-list-inset.scss +0 -20
  90. package/node_modules/@rdlabo/ionic-theme-utils/src/styles/structured-list.scss +0 -310
  91. package/node_modules/@rdlabo/ionic-theme-utils/src/tab-bar-searchable/interfaces.ts +0 -28
  92. package/node_modules/@rdlabo/ionic-theme-utils/src/tab-bar-searchable/utils.spec.ts +0 -56
  93. package/node_modules/@rdlabo/ionic-theme-utils/src/tab-bar-searchable/utils.ts +0 -75
  94. package/node_modules/@rdlabo/ionic-theme-utils/src/theme.ts +0 -51
  95. package/node_modules/@rdlabo/ionic-theme-utils/src/transition/ios.transition.spec.ts +0 -52
  96. package/node_modules/@rdlabo/ionic-theme-utils/src/transition/ios.transition.ts +0 -542
@@ -1,18 +0,0 @@
1
- import type { Animation } from '@ionic/core';
2
- export interface IosTransitionAnimationOptions {
3
- enteringEl: HTMLElement;
4
- leavingEl?: HTMLElement;
5
- direction?: string;
6
- duration?: number;
7
- easing?: string;
8
- progressCallback?: (ani: Animation | undefined) => void;
9
- }
10
- export interface IosTransitionAnimationConfig {
11
- offLeftPercent: number;
12
- radius?: number;
13
- getIonPageElement: (element: HTMLElement) => Element;
14
- connectNativeUIShellTransition?: (animation: Animation, entering: HTMLElement, leaving?: HTMLElement) => void;
15
- }
16
- export declare const shadow: <T extends Element>(el: T) => ShadowRoot | T;
17
- export declare const createIosTransitionAnimation: <TOpts extends IosTransitionAnimationOptions>(config: IosTransitionAnimationConfig) => ((navEl: HTMLElement, opts: TOpts) => Animation);
18
- //# sourceMappingURL=ios.transition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ios.transition.d.ts","sourceRoot":"","sources":["../../src/transition/ios.transition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;CACzD;AAGD,MAAM,WAAW,4BAA4B;IAK3C,cAAc,EAAE,MAAM,CAAC;IAEvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,iBAAiB,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;IAKrD,8BAA8B,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;CAC/G;AAQD,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,OAAO,EAAE,IAAI,CAAC,KAAG,UAAU,GAAG,CAE9D,CAAC;AA6GF,eAAO,MAAM,4BAA4B,GAAI,KAAK,SAAS,6BAA6B,EACtF,QAAQ,4BAA4B,KACnC,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAuYjD,CAAC"}
@@ -1,412 +0,0 @@
1
- import { createAnimation } from '@ionic/core';
2
- const DURATION = 540;
3
- const getClonedElement = (tagName) => {
4
- return document.querySelector(`${tagName}.ion-cloned-element`);
5
- };
6
- export const shadow = (el) => {
7
- return el.shadowRoot || el;
8
- };
9
- const animateFixedBackButton = (root, navEl, page, entering, interactive, otherPage) => {
10
- const button = page.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled) ion-back-button:not(.ios-theme-disabled, .ios26-disabled)');
11
- if (!button || button.offsetWidth === 0) {
12
- return;
13
- }
14
- const otherButton = otherPage?.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled) ion-back-button:not(.ios-theme-disabled, .ios26-disabled)');
15
- const persistent = !!otherButton && otherButton.offsetWidth > 0;
16
- const buttons = [button, ...(persistent ? [otherButton] : [])].map((element) => ({
17
- element,
18
- visibility: element.style.visibility,
19
- }));
20
- const rect = button.getBoundingClientRect();
21
- const width = button.offsetWidth;
22
- const height = button.offsetHeight;
23
- const clone = getClonedElement('ion-back-button');
24
- if (!clone) {
25
- return;
26
- }
27
- const cloneParent = clone.parentNode;
28
- const cloneNextSibling = clone.nextSibling;
29
- const cloneStyle = clone.getAttribute('style');
30
- clone.icon = button.icon;
31
- clone.text = button.text;
32
- clone.mode = button.mode;
33
- clone.color = button.color;
34
- clone.disabled = button.disabled;
35
- const icon = shadow(clone).querySelector('ion-icon');
36
- const animation = createAnimation().addElement(clone);
37
- const fadeStart = !entering && interactive ? 0.8 : 0.4;
38
- const fadeEnd = entering ? 0.96 : interactive ? 1 : 0.95;
39
- if (persistent) {
40
- animation.fromTo('transform', 'scale(1)', 'scale(1)').fromTo('opacity', 1, 1);
41
- }
42
- else if (entering) {
43
- animation.keyframes([
44
- { offset: 0, transform: 'scale(1.2)', opacity: 0 },
45
- { offset: fadeStart, transform: 'scale(1.2)', opacity: 0 },
46
- { offset: 0.65, transform: 'scale(1.12)', opacity: 0.15 },
47
- { offset: 0.9, transform: 'scale(1.02)', opacity: 0.75 },
48
- { offset: fadeEnd, transform: 'scale(1)', opacity: 1 },
49
- { offset: 1, transform: 'scale(1)', opacity: 1 },
50
- ]);
51
- }
52
- else {
53
- animation.keyframes([
54
- { offset: 0, transform: 'scale(1)', opacity: 1 },
55
- { offset: fadeStart, transform: 'scale(1)', opacity: 1 },
56
- { offset: fadeEnd, transform: 'scale(1.2)', opacity: 0 },
57
- { offset: 1, transform: 'scale(1.2)', opacity: 0 },
58
- ]);
59
- }
60
- if (icon && !persistent) {
61
- const from = entering ? 'blur(4px)' : 'blur(0px)';
62
- const to = entering ? 'blur(0px)' : 'blur(4px)';
63
- animation.addAnimation(createAnimation()
64
- .addElement(icon)
65
- .keyframes([
66
- { offset: 0, filter: from },
67
- { offset: fadeStart, filter: from },
68
- { offset: fadeEnd, filter: to },
69
- { offset: 1, filter: to },
70
- ]));
71
- }
72
- root.beforeAddWrite(() => {
73
- Object.assign(clone.style, {
74
- position: 'fixed',
75
- left: `${rect.left + (rect.width - width) / 2}px`,
76
- top: `${rect.top + (rect.height - height) / 2}px`,
77
- width: `${width}px`,
78
- height: `${height}px`,
79
- margin: '0',
80
- pointerEvents: 'none',
81
- visibility: 'visible',
82
- display: getComputedStyle(button).display,
83
- zIndex: '1000',
84
- });
85
- navEl.appendChild(clone);
86
- buttons.forEach(({ element }) => (element.style.visibility = 'hidden'));
87
- });
88
- root.afterAddWrite(() => {
89
- buttons.forEach(({ element, visibility }) => (element.style.visibility = visibility));
90
- cloneParent.insertBefore(clone, cloneNextSibling);
91
- if (cloneStyle === null) {
92
- clone.removeAttribute('style');
93
- }
94
- else {
95
- clone.setAttribute('style', cloneStyle);
96
- }
97
- });
98
- root.addAnimation(animation);
99
- };
100
- export const createIosTransitionAnimation = (config) => {
101
- const { offLeftPercent, getIonPageElement, connectNativeUIShellTransition } = config;
102
- return (navEl, opts) => {
103
- try {
104
- const EASING = 'cubic-bezier(0.32,0.72,0,1)';
105
- const OPACITY = 'opacity';
106
- const TRANSFORM = 'transform';
107
- const CENTER = '0%';
108
- const OFF_OPACITY = 0.8;
109
- const isRTL = navEl.ownerDocument.dir === 'rtl';
110
- const OFF_RIGHT = isRTL ? '-99.5%' : '99.5%';
111
- const OFF_LEFT = isRTL ? `${offLeftPercent}%` : `-${offLeftPercent}%`;
112
- const enteringEl = opts.enteringEl;
113
- const leavingEl = opts.leavingEl;
114
- const backDirection = opts.direction === 'back';
115
- const contentEl = enteringEl.querySelector(':scope > ion-content');
116
- const headerEls = enteringEl.querySelectorAll(':scope > ion-header > *:not(ion-toolbar), :scope > ion-footer > *');
117
- const enteringToolBarEls = enteringEl.querySelectorAll(':scope > ion-header > ion-toolbar');
118
- const rootAnimation = createAnimation();
119
- const enteringContentAnimation = createAnimation();
120
- rootAnimation
121
- .addElement(enteringEl)
122
- .duration((opts.duration ?? 0) || DURATION)
123
- .easing(opts.easing || EASING)
124
- .fill('both')
125
- .beforeRemoveClass('ion-page-invisible');
126
- const topPage = backDirection ? leavingEl : enteringEl;
127
- const translucentTop = topPage?.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled)');
128
- if (topPage && translucentTop) {
129
- const shade = navEl.ownerDocument.createElement('div');
130
- shade.className = 'ios-transition-shade';
131
- shade.setAttribute('aria-hidden', 'true');
132
- const clipPath = topPage.style.clipPath;
133
- const corner = config.radius ?? 0;
134
- Object.assign(shade.style, {
135
- position: 'absolute',
136
- inset: '0',
137
- zIndex: topPage.style.zIndex,
138
- pointerEvents: 'none',
139
- background: 'rgba(0, 0, 0, 0.1)',
140
- });
141
- rootAnimation.beforeAddWrite(() => {
142
- topPage.before(shade);
143
- if (corner > 0) {
144
- topPage.style.clipPath = `inset(0 round ${corner}px)`;
145
- }
146
- });
147
- rootAnimation.afterAddWrite(() => {
148
- shade.remove();
149
- topPage.style.clipPath = clipPath;
150
- });
151
- rootAnimation.addAnimation(createAnimation()
152
- .addElement(shade)
153
- .fromTo(OPACITY, backDirection ? 1 : 0, backDirection ? 0 : 1));
154
- }
155
- if (leavingEl && navEl !== null && navEl !== undefined) {
156
- const navDecorAnimation = createAnimation();
157
- navDecorAnimation.addElement(navEl);
158
- rootAnimation.addAnimation(navDecorAnimation);
159
- }
160
- if (enteringEl.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
161
- enteringContentAnimation.addElement(enteringEl);
162
- }
163
- else if (!contentEl && enteringToolBarEls.length === 0 && headerEls.length === 0) {
164
- enteringContentAnimation.addElement(enteringEl.querySelector(':scope > .ion-page, :scope > ion-nav, :scope > ion-tabs'));
165
- }
166
- else {
167
- enteringContentAnimation.addElement(contentEl);
168
- enteringContentAnimation.addElement(headerEls);
169
- }
170
- rootAnimation.addAnimation(enteringContentAnimation);
171
- if (backDirection) {
172
- enteringContentAnimation
173
- .beforeClearStyles([OPACITY])
174
- .fromTo('transform', `translateX(${OFF_LEFT})`, `translateX(${CENTER})`)
175
- .fromTo(OPACITY, translucentTop ? 1 : OFF_OPACITY, 1);
176
- }
177
- else {
178
- enteringContentAnimation.beforeClearStyles([OPACITY]).fromTo('transform', `translateX(${OFF_RIGHT})`, `translateX(${CENTER})`);
179
- }
180
- if (contentEl && !enteringEl.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
181
- const enteringTransitionEffectEl = shadow(contentEl).querySelector('.transition-effect');
182
- if (enteringTransitionEffectEl) {
183
- const enteringTransitionCoverEl = enteringTransitionEffectEl.querySelector('.transition-cover');
184
- const enteringTransitionShadowEl = enteringTransitionEffectEl.querySelector('.transition-shadow');
185
- const enteringTransitionEffect = createAnimation();
186
- const enteringTransitionCover = createAnimation();
187
- const enteringTransitionShadow = createAnimation();
188
- enteringTransitionEffect
189
- .addElement(enteringTransitionEffectEl)
190
- .beforeStyles({ opacity: '1', display: 'block' })
191
- .afterStyles({ opacity: '', display: '' });
192
- enteringTransitionCover
193
- .addElement(enteringTransitionCoverEl)
194
- .beforeClearStyles([OPACITY])
195
- .fromTo(OPACITY, 0, 0.1);
196
- enteringTransitionShadow
197
- .addElement(enteringTransitionShadowEl)
198
- .beforeClearStyles([OPACITY])
199
- .fromTo(OPACITY, 0.03, 0.7);
200
- enteringTransitionEffect.addAnimation([enteringTransitionCover, enteringTransitionShadow]);
201
- enteringContentAnimation.addAnimation([enteringTransitionEffect]);
202
- }
203
- }
204
- if (topPage) {
205
- animateFixedBackButton(rootAnimation, navEl, topPage, !backDirection, opts.progressCallback !== undefined, backDirection ? enteringEl : leavingEl);
206
- }
207
- const enteringContentHasLargeTitle = enteringEl.querySelector('ion-header.header-collapse-condense');
208
- enteringToolBarEls.forEach((enteringToolBarEl) => {
209
- if (enteringToolBarEl.closest('ion-header')?.matches('.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
210
- return;
211
- }
212
- const enteringToolBar = createAnimation();
213
- enteringToolBar.addElement(enteringToolBarEl);
214
- rootAnimation.addAnimation(enteringToolBar);
215
- const enteringTitle = createAnimation();
216
- enteringTitle.addElement(enteringToolBarEl.querySelector('ion-title'));
217
- const enteringToolBarButtons = createAnimation();
218
- const buttons = Array.from(enteringToolBarEl.querySelectorAll('ion-buttons,[menuToggle]'));
219
- const parentHeader = enteringToolBarEl.closest('ion-header');
220
- const inactiveHeader = parentHeader?.classList.contains('header-collapse-condense-inactive');
221
- let buttonsToAnimate;
222
- if (backDirection) {
223
- buttonsToAnimate = buttons.filter((button) => {
224
- const isCollapseButton = button.classList.contains('buttons-collapse');
225
- return (isCollapseButton && !inactiveHeader) || !isCollapseButton;
226
- });
227
- }
228
- else {
229
- buttonsToAnimate = buttons.filter((button) => !button.classList.contains('buttons-collapse'));
230
- }
231
- enteringToolBarButtons.addElement(buttonsToAnimate);
232
- const enteringToolBarItems = createAnimation();
233
- enteringToolBarItems.addElement(enteringToolBarEl.querySelectorAll(':scope > *:not(ion-title):not(ion-buttons):not([menuToggle])'));
234
- const enteringToolBarBg = createAnimation();
235
- enteringToolBarBg.addElement(shadow(enteringToolBarEl).querySelector('.toolbar-background'));
236
- const enteringBackButton = createAnimation();
237
- const backButtonEl = enteringToolBarEl.querySelector('ion-back-button');
238
- if (backButtonEl) {
239
- enteringBackButton.addElement(backButtonEl);
240
- }
241
- enteringToolBar.addAnimation([enteringTitle, enteringToolBarButtons, enteringToolBarItems, enteringToolBarBg, enteringBackButton]);
242
- enteringToolBarButtons.fromTo(OPACITY, 0.01, 1);
243
- enteringToolBarItems.fromTo(OPACITY, 0.01, 1);
244
- if (backDirection) {
245
- if (!inactiveHeader) {
246
- enteringTitle.fromTo('transform', `translateX(${OFF_LEFT})`, `translateX(${CENTER})`).fromTo(OPACITY, 0.01, 1);
247
- }
248
- enteringToolBarItems.fromTo('transform', `translateX(${OFF_LEFT})`, `translateX(${CENTER})`);
249
- enteringBackButton.fromTo(OPACITY, 0.01, 1);
250
- }
251
- else {
252
- if (!enteringContentHasLargeTitle) {
253
- enteringTitle.fromTo('transform', `translateX(${OFF_RIGHT})`, `translateX(${CENTER})`).fromTo(OPACITY, 0.01, 1);
254
- }
255
- enteringToolBarItems.fromTo('transform', `translateX(${OFF_RIGHT})`, `translateX(${CENTER})`);
256
- enteringToolBarBg.beforeClearStyles([OPACITY, 'transform']);
257
- const translucentHeader = parentHeader?.translucent;
258
- if (!translucentHeader) {
259
- enteringToolBarBg.fromTo(OPACITY, 0.01, 'var(--opacity)');
260
- }
261
- else {
262
- enteringToolBarBg.fromTo('transform', isRTL ? 'translateX(-100%)' : 'translateX(100%)', 'translateX(0px)');
263
- }
264
- enteringBackButton.fromTo(OPACITY, 0.01, 1);
265
- if (backButtonEl) {
266
- const enteringBackBtnText = createAnimation();
267
- enteringBackBtnText
268
- .addElement(shadow(backButtonEl).querySelector('.button-text'))
269
- .fromTo(`transform`, isRTL ? 'translateX(-100px)' : 'translateX(100px)', 'translateX(0px)');
270
- enteringToolBar.addAnimation(enteringBackBtnText);
271
- }
272
- }
273
- });
274
- if (leavingEl) {
275
- const leavingContent = createAnimation();
276
- const leavingContentEl = leavingEl.querySelector(':scope > ion-content');
277
- const leavingToolBarEls = leavingEl.querySelectorAll(':scope > ion-header > ion-toolbar');
278
- const leavingHeaderEls = leavingEl.querySelectorAll(':scope > ion-header > *:not(ion-toolbar), :scope > ion-footer > *');
279
- if (leavingEl.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
280
- leavingContent.addElement(leavingEl);
281
- }
282
- else if (!leavingContentEl && leavingToolBarEls.length === 0 && leavingHeaderEls.length === 0) {
283
- leavingContent.addElement(leavingEl.querySelector(':scope > .ion-page, :scope > ion-nav, :scope > ion-tabs'));
284
- }
285
- else {
286
- leavingContent.addElement(leavingContentEl);
287
- leavingContent.addElement(leavingHeaderEls);
288
- }
289
- rootAnimation.addAnimation(leavingContent);
290
- if (backDirection) {
291
- leavingContent
292
- .beforeClearStyles([OPACITY])
293
- .fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)');
294
- const leavingPage = getIonPageElement(leavingEl);
295
- rootAnimation.afterAddWrite(() => {
296
- if (rootAnimation.getDirection() === 'normal') {
297
- leavingPage.style.setProperty('display', 'none');
298
- }
299
- });
300
- }
301
- else {
302
- leavingContent
303
- .fromTo('transform', `translateX(${CENTER})`, `translateX(${OFF_LEFT})`)
304
- .fromTo(OPACITY, 1, translucentTop ? 1 : OFF_OPACITY);
305
- }
306
- if (leavingContentEl &&
307
- !leavingEl.querySelector(':scope > ion-header.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
308
- const leavingTransitionEffectEl = shadow(leavingContentEl).querySelector('.transition-effect');
309
- if (leavingTransitionEffectEl) {
310
- const leavingTransitionCoverEl = leavingTransitionEffectEl.querySelector('.transition-cover');
311
- const leavingTransitionShadowEl = leavingTransitionEffectEl.querySelector('.transition-shadow');
312
- const leavingTransitionEffect = createAnimation();
313
- const leavingTransitionCover = createAnimation();
314
- const leavingTransitionShadow = createAnimation();
315
- leavingTransitionEffect
316
- .addElement(leavingTransitionEffectEl)
317
- .beforeStyles({ opacity: '1', display: 'block' })
318
- .afterStyles({ opacity: '', display: '' });
319
- leavingTransitionCover
320
- .addElement(leavingTransitionCoverEl)
321
- .beforeClearStyles([OPACITY])
322
- .fromTo(OPACITY, 0.1, 0);
323
- leavingTransitionShadow
324
- .addElement(leavingTransitionShadowEl)
325
- .beforeClearStyles([OPACITY])
326
- .fromTo(OPACITY, 0.7, 0.03);
327
- leavingTransitionEffect.addAnimation([leavingTransitionCover, leavingTransitionShadow]);
328
- leavingContent.addAnimation([leavingTransitionEffect]);
329
- }
330
- }
331
- leavingToolBarEls.forEach((leavingToolBarEl) => {
332
- if (leavingToolBarEl.closest('ion-header')?.matches('.header-translucent:not(.ios-theme-disabled, .ios26-disabled)')) {
333
- return;
334
- }
335
- const leavingToolBar = createAnimation();
336
- leavingToolBar.addElement(leavingToolBarEl);
337
- const leavingTitle = createAnimation();
338
- leavingTitle.addElement(leavingToolBarEl.querySelector('ion-title'));
339
- const leavingToolBarButtons = createAnimation();
340
- const buttons = leavingToolBarEl.querySelectorAll('ion-buttons,[menuToggle]');
341
- const parentHeader = leavingToolBarEl.closest('ion-header');
342
- const inactiveHeader = parentHeader?.classList.contains('header-collapse-condense-inactive');
343
- const buttonsToAnimate = Array.from(buttons).filter((button) => {
344
- const isCollapseButton = button.classList.contains('buttons-collapse');
345
- return (isCollapseButton && !inactiveHeader) || !isCollapseButton;
346
- });
347
- leavingToolBarButtons.addElement(buttonsToAnimate);
348
- const leavingToolBarItems = createAnimation();
349
- const leavingToolBarItemEls = leavingToolBarEl.querySelectorAll(':scope > *:not(ion-title):not(ion-buttons):not([menuToggle])');
350
- if (leavingToolBarItemEls.length > 0) {
351
- leavingToolBarItems.addElement(leavingToolBarItemEls);
352
- }
353
- const leavingToolBarBg = createAnimation();
354
- leavingToolBarBg.addElement(shadow(leavingToolBarEl).querySelector('.toolbar-background'));
355
- const leavingBackButton = createAnimation();
356
- const backButtonEl = leavingToolBarEl.querySelector('ion-back-button');
357
- if (backButtonEl) {
358
- leavingBackButton.addElement(backButtonEl);
359
- }
360
- leavingToolBar.addAnimation([leavingTitle, leavingToolBarButtons, leavingToolBarItems, leavingBackButton, leavingToolBarBg]);
361
- rootAnimation.addAnimation(leavingToolBar);
362
- leavingBackButton.fromTo(OPACITY, 0.99, 0);
363
- leavingToolBarButtons.fromTo(OPACITY, 0.99, 0);
364
- leavingToolBarItems.fromTo(OPACITY, 0.99, 0);
365
- if (backDirection) {
366
- if (!inactiveHeader) {
367
- leavingTitle
368
- .fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)')
369
- .fromTo(OPACITY, 0.99, 0);
370
- }
371
- leavingToolBarItems.fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)');
372
- leavingToolBarBg.beforeClearStyles([OPACITY, 'transform']);
373
- const translucentHeader = parentHeader?.translucent;
374
- if (!translucentHeader) {
375
- leavingToolBarBg.fromTo(OPACITY, 'var(--opacity)', 0);
376
- }
377
- else {
378
- leavingToolBarBg.fromTo('transform', 'translateX(0px)', isRTL ? 'translateX(-100%)' : 'translateX(100%)');
379
- }
380
- if (backButtonEl) {
381
- const leavingBackBtnText = createAnimation();
382
- leavingBackBtnText
383
- .addElement(shadow(backButtonEl).querySelector('.button-text'))
384
- .fromTo('transform', `translateX(${CENTER})`, `translateX(${(isRTL ? -124 : 124) + 'px'})`);
385
- leavingToolBar.addAnimation(leavingBackBtnText);
386
- }
387
- }
388
- else {
389
- if (!inactiveHeader) {
390
- leavingTitle
391
- .fromTo('transform', `translateX(${CENTER})`, `translateX(${OFF_LEFT})`)
392
- .fromTo(OPACITY, 0.99, 0)
393
- .afterClearStyles([TRANSFORM, OPACITY]);
394
- }
395
- leavingToolBarItems
396
- .fromTo('transform', `translateX(${CENTER})`, `translateX(${OFF_LEFT})`)
397
- .afterClearStyles([TRANSFORM, OPACITY]);
398
- leavingBackButton.afterClearStyles([OPACITY]);
399
- leavingTitle.afterClearStyles([OPACITY]);
400
- leavingToolBarButtons.afterClearStyles([OPACITY]);
401
- }
402
- });
403
- }
404
- connectNativeUIShellTransition?.(rootAnimation, enteringEl, leavingEl);
405
- return rootAnimation;
406
- }
407
- catch (err) {
408
- throw err;
409
- }
410
- };
411
- };
412
- //# sourceMappingURL=ios.transition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ios.transition.js","sourceRoot":"","sources":["../../src/transition/ios.transition.ts"],"names":[],"mappings":"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"}
@@ -1,68 +0,0 @@
1
- {
2
- "name": "@rdlabo/ionic-theme-utils",
3
- "private": false,
4
- "version": "0.1.0",
5
- "description": "Shared utilities for Rdlabo Ionic themes",
6
- "type": "module",
7
- "main": "./dist/index.js",
8
- "module": "./dist/index.js",
9
- "types": "./dist/index.d.ts",
10
- "bin": {
11
- "rdlabo-copy-structured-list": "./scripts/copy-structured-list.mjs"
12
- },
13
- "exports": {
14
- ".": {
15
- "types": "./dist/index.d.ts",
16
- "import": "./dist/index.js"
17
- },
18
- "./styles": "./src/styles/index.scss",
19
- "./styles/md-ion-list-inset": "./src/styles/md-ion-list-inset.scss",
20
- "./styles/*": "./src/styles/*.scss"
21
- },
22
- "files": [
23
- "dist",
24
- "src",
25
- "scripts/copy-structured-list.mjs",
26
- "package.json",
27
- "README.md",
28
- "LICENSE"
29
- ],
30
- "scripts": {
31
- "build": "tsc",
32
- "test": "vitest run",
33
- "fmt:check": "prettier --check \"./**/*.{js,json,md,scss,ts,yml}\"",
34
- "lint": "eslint .",
35
- "fmt": "prettier --write \"./**/*.{js,json,md,scss,ts,yml}\"",
36
- "prepublishOnly": "npm run build",
37
- "prepare": "npm run build"
38
- },
39
- "repository": {
40
- "type": "git",
41
- "url": "git+ssh://git@github.com/rdlabo-dev/ionic-theme-utils.git"
42
- },
43
- "keywords": [
44
- "ionic",
45
- "framework",
46
- "theme",
47
- "utilities"
48
- ],
49
- "author": "Masahiko Sakakibara <sakakibara@rdlabo.jp>",
50
- "license": "MIT",
51
- "bugs": {
52
- "url": "https://github.com/rdlabo-dev/ionic-theme-utils/issues"
53
- },
54
- "homepage": "https://github.com/rdlabo-dev/ionic-theme-utils#readme",
55
- "peerDependencies": {
56
- "@ionic/core": ">=8.8.1 <10"
57
- },
58
- "devDependencies": {
59
- "@eslint/js": "^9.39.5",
60
- "@ionic/core": "^9.0.0",
61
- "eslint": "^9.39.5",
62
- "jsdom": "^26.1.0",
63
- "prettier": "^3.6.2",
64
- "typescript": "^5.9.3",
65
- "typescript-eslint": "^8.70.0",
66
- "vitest": "^4.1.11"
67
- }
68
- }
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { copyFile, mkdir } from 'node:fs/promises';
4
- import { dirname, resolve } from 'node:path';
5
- import process from 'node:process';
6
- import { URL } from 'node:url';
7
-
8
- const destination = process.argv[2];
9
-
10
- if (!destination) {
11
- throw new Error('Usage: rdlabo-copy-structured-list <destination>');
12
- }
13
-
14
- const destinationPath = resolve(destination);
15
-
16
- await mkdir(dirname(destinationPath), { recursive: true });
17
- await copyFile(new URL('../src/styles/structured-list.scss', import.meta.url), destinationPath);
@@ -1,19 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
-
3
- import { getElementRoot } from './dom';
4
-
5
- describe('getElementRoot', () => {
6
- it('returns the shadow root when one exists', () => {
7
- const element = document.createElement('div');
8
- const root = element.attachShadow({ mode: 'open' });
9
-
10
- expect(getElementRoot(element)).toBe(root);
11
- });
12
-
13
- it('returns the supplied fallback without a shadow root', () => {
14
- const element = document.createElement('div');
15
- const fallback = document.createElement('main');
16
-
17
- expect(getElementRoot(element, fallback)).toBe(fallback);
18
- });
19
- });
@@ -1,16 +0,0 @@
1
- declare const __zone_symbol__requestAnimationFrame: any;
2
- declare const requestAnimationFrame: any;
3
-
4
- export const getElementRoot = (el: HTMLElement, fallback: HTMLElement = el) => {
5
- return el.shadowRoot || fallback;
6
- };
7
-
8
- export const raf = (h: FrameRequestCallback) => {
9
- if (typeof __zone_symbol__requestAnimationFrame === 'function') {
10
- return __zone_symbol__requestAnimationFrame(h);
11
- }
12
- if (typeof requestAnimationFrame === 'function') {
13
- return requestAnimationFrame(h);
14
- }
15
- return setTimeout(h);
16
- };
@@ -1,38 +0,0 @@
1
- import { config } from './theme';
2
-
3
- const LAST_FOCUS = 'ion-last-focus';
4
- const moveFocus = (element: HTMLElement) => {
5
- element.tabIndex = -1;
6
- element.focus();
7
- };
8
- const isVisible = (element: HTMLElement) => element.offsetParent !== null;
9
-
10
- export interface FocusController {
11
- saveViewFocus(referenceEl?: HTMLElement): void;
12
- setViewFocus(referenceEl: HTMLElement): void;
13
- }
14
-
15
- export const createFocusController = (): FocusController => ({
16
- saveViewFocus: (referenceEl) => {
17
- if (!config.get('focusManagerPriority', false)) return;
18
- const activeEl = document.activeElement;
19
- if (activeEl && referenceEl?.contains(activeEl)) activeEl.setAttribute(LAST_FOCUS, 'true');
20
- },
21
- setViewFocus: (referenceEl) => {
22
- const priorities = config.get<unknown>('focusManagerPriority', false);
23
- if (!Array.isArray(priorities) || referenceEl.contains(document.activeElement)) return;
24
- const lastFocus = referenceEl.querySelector<HTMLElement>(`[${LAST_FOCUS}]`);
25
- if (lastFocus && isVisible(lastFocus)) return moveFocus(lastFocus);
26
- const selectors: Record<string, string> = {
27
- content: 'main, [role="main"]',
28
- heading: 'h1, [role="heading"][aria-level="1"]',
29
- banner: 'header, [role="banner"]',
30
- };
31
- for (const priority of priorities) {
32
- const selector = selectors[String(priority)];
33
- const candidate = selector ? referenceEl.querySelector<HTMLElement>(selector) : null;
34
- if (candidate && isVisible(candidate)) return moveFocus(candidate);
35
- }
36
- moveFocus(referenceEl);
37
- },
38
- });