@maccesar/titools 4.1.0 → 4.3.0
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.
- package/README.md +22 -5
- package/bin/titools.js +4 -4
- package/commands/ti-audit.md +13 -0
- package/commands/ti-check.md +15 -0
- package/commands/ti-new-screen.md +18 -0
- package/lib/claude-plugin.js +105 -0
- package/lib/cleanup.js +18 -0
- package/lib/commands/doctor.js +75 -3
- package/lib/commands/skills.js +66 -6
- package/lib/commands/uninstall.js +32 -2
- package/lib/commands/update.js +15 -0
- package/lib/config.js +37 -0
- package/lib/installer.js +85 -1
- package/lib/symlink.js +40 -3
- package/package.json +2 -1
- package/skills/alloy-guides/references/MODELS.md +23 -0
- package/skills/alloy-guides/references/MODELS_ADVANCED.md +19 -0
- package/skills/alloy-guides/references/VIEWS_STYLES.md +12 -0
- package/skills/alloy-guides/references/VIEWS_XML.md +18 -0
- package/skills/purgetss/references/EXAMPLES.md +24 -0
- package/skills/purgetss/references/animation-advanced.md +12 -0
- package/skills/purgetss/references/animation-system.md +23 -0
- package/skills/purgetss/references/app-branding.md +23 -0
- package/skills/purgetss/references/apply-directive.md +17 -0
- package/skills/purgetss/references/arbitrary-values.md +13 -0
- package/skills/purgetss/references/class-index-properties.md +11 -0
- package/skills/purgetss/references/cli-commands.md +27 -0
- package/skills/purgetss/references/customization-deep-dive.md +15 -0
- package/skills/purgetss/references/dynamic-component-creation.md +16 -0
- package/skills/purgetss/references/migration-guide.md +20 -0
- package/skills/purgetss/references/multi-density-images.md +27 -0
- package/skills/purgetss/references/semantic-colors.md +15 -0
- package/skills/purgetss/references/tikit-components.md +17 -0
- package/skills/purgetss/references/titanium-resets.md +16 -0
- package/skills/purgetss/references/ui-ux-design.md +20 -0
- package/skills/ti-api/references/api-android.md +23 -0
- package/skills/ti-api/references/api-app-platform.md +24 -0
- package/skills/ti-api/references/api-core.md +24 -0
- package/skills/ti-api/references/api-data-network.md +21 -0
- package/skills/ti-api/references/api-media.md +15 -1
- package/skills/ti-api/references/api-modules-ble-bluetooth.md +26 -0
- package/skills/ti-api/references/api-modules-coremotion-urlsession.md +18 -0
- package/skills/ti-api/references/api-modules-map.md +21 -2
- package/skills/ti-api/references/api-modules-nfc.md +34 -0
- package/skills/ti-api/references/api-modules-social-misc.md +22 -0
- package/skills/ti-api/references/api-services.md +21 -1
- package/skills/ti-api/references/api-ui-android.md +18 -0
- package/skills/ti-api/references/api-ui-extras.md +19 -1
- package/skills/ti-api/references/api-ui-ios-animator.md +14 -0
- package/skills/ti-api/references/api-ui-ios.md +42 -0
- package/skills/ti-api/references/api-ui-lists.md +14 -2
- package/skills/ti-api/references/api-ui-text-input.md +15 -0
- package/skills/ti-api/references/api-ui-views.md +19 -0
- package/skills/ti-api/references/api-ui-windows-navigation.md +13 -0
- package/skills/ti-api/references/api-xml-global.md +31 -0
- package/skills/ti-expert/references/adaptive-layouts.md +14 -0
- package/skills/ti-expert/references/alloy-builtins.md +15 -0
- package/skills/ti-expert/references/alloy-structure.md +15 -0
- package/skills/ti-expert/references/code-conventions.md +19 -0
- package/skills/ti-expert/references/controller-patterns.md +18 -0
- package/skills/ti-expert/references/error-handling.md +16 -0
- package/skills/ti-expert/references/examples.md +17 -0
- package/skills/ti-expert/references/migration-patterns.md +15 -0
- package/skills/ti-expert/references/patterns.md +16 -0
- package/skills/ti-expert/references/performance-optimization.md +17 -0
- package/skills/ti-expert/references/security-device.md +13 -0
- package/skills/ti-expert/references/state-management.md +16 -0
- package/skills/ti-expert/references/testing-e2e-ci.md +17 -0
- package/skills/ti-expert/references/testing-unit.md +20 -0
- package/skills/ti-expert/references/theming.md +20 -0
- package/skills/ti-guides/references/app-distribution.md +34 -0
- package/skills/ti-guides/references/application-frameworks.md +13 -0
- package/skills/ti-guides/references/cli-reference.md +16 -0
- package/skills/ti-guides/references/hyperloop-native-access.md +21 -0
- package/skills/ti-guides/references/javascript-primer.md +12 -0
- package/skills/ti-guides/references/tiapp-config.md +15 -0
- package/skills/ti-howtos/references/android-platform-deep-dives.md +15 -0
- package/skills/ti-howtos/references/cross-platform-development.md +16 -0
- package/skills/ti-howtos/references/debugging-profiling.md +15 -0
- package/skills/ti-howtos/references/extending-titanium.md +14 -0
- package/skills/ti-howtos/references/ios-platform-deep-dives.md +16 -0
- package/skills/ti-howtos/references/local-data-sources.md +32 -0
- package/skills/ti-howtos/references/notification-services.md +12 -0
- package/skills/ti-howtos/references/remote-data-sources.md +15 -0
- package/skills/ti-howtos/references/tutorials.md +13 -0
- package/skills/ti-ui/references/animation-and-matrices.md +17 -0
- package/skills/ti-ui/references/application-structures.md +19 -0
- package/skills/ti-ui/references/custom-fonts-styling.md +18 -0
- package/skills/ti-ui/references/event-handling.md +16 -0
- package/skills/ti-ui/references/gestures.md +17 -0
- package/skills/ti-ui/references/icons-and-splash-screens.md +17 -0
- package/skills/ti-ui/references/layouts-and-positioning.md +16 -0
- package/skills/ti-ui/references/listviews-and-performance.md +21 -0
- package/skills/ti-ui/references/orientation.md +20 -0
- package/skills/ti-ui/references/platform-ui-android.md +20 -0
- package/skills/ti-ui/references/platform-ui-ios.md +17 -0
- package/skills/ti-ui/references/tableviews.md +24 -0
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Ti.UI Extras API Reference
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Ti.UI.Animation](#tiuianimation)
|
|
7
|
+
- [Ti.UI.Matrix2D](#tiuimatrix2d)
|
|
8
|
+
- [Ti.UI.Matrix3D](#tiuimatrix3d)
|
|
9
|
+
- [Ti.UI.WebView](#tiuiwebview)
|
|
10
|
+
- [Ti.UI.Toolbar](#tiuitoolbar)
|
|
11
|
+
- [Ti.UI.ButtonBar](#tiuibuttonbar)
|
|
12
|
+
- [Ti.UI.TabbedBar](#tiuitabbedbar)
|
|
13
|
+
- [Ti.UI.OptionBar](#tiuioptionbar)
|
|
14
|
+
- [Ti.UI.Shortcut](#tiuishortcut)
|
|
15
|
+
- [Ti.UI.ShortcutItem](#tiuishortcutitem)
|
|
16
|
+
- [Ti.UI.EmailDialog](#tiuiemaildialog)
|
|
17
|
+
- [Ti.UI.DashboardView](#tiuidashboardview)
|
|
18
|
+
- [Ti.UI.DashboardItem](#tiuidashboarditem)
|
|
19
|
+
|
|
20
|
+
<!-- TOC-END -->
|
|
21
|
+
|
|
3
22
|
## Ti.UI.Animation
|
|
4
23
|
> The `Animation` object defines an animation that can be applied to a view.
|
|
5
24
|
> Extends Ti.Proxy
|
|
@@ -523,7 +542,6 @@ Google documents how to add static shortcuts
|
|
|
523
542
|
[here](https://developer.android.com/guide/topics/ui/shortcuts/creating-shortcuts#static).
|
|
524
543
|
|
|
525
544
|
In the `tiapp.xml` file, you will need to add a shortcuts `<meta-data/>` element to your main activity.
|
|
526
|
-
``` xml
|
|
527
545
|
|
|
528
546
|
### Properties (unique: 6/9)
|
|
529
547
|
| Property | Type | Default | Platform | Description |
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Ti.UI.iOS Animator & Physics API Reference
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Ti.UI.iOS.AnchorAttachmentBehavior](#tiuiiosanchorattachmentbehavior)
|
|
7
|
+
- [Ti.UI.iOS.Animator](#tiuiiosanimator)
|
|
8
|
+
- [Ti.UI.iOS.CollisionBehavior](#tiuiioscollisionbehavior)
|
|
9
|
+
- [Ti.UI.iOS.DynamicItemBehavior](#tiuiiosdynamicitembehavior)
|
|
10
|
+
- [Ti.UI.iOS.GravityBehavior](#tiuiiosgravitybehavior)
|
|
11
|
+
- [Ti.UI.iOS.PushBehavior](#tiuiiospushbehavior)
|
|
12
|
+
- [Ti.UI.iOS.SnapBehavior](#tiuiiossnapbehavior)
|
|
13
|
+
- [Ti.UI.iOS.ViewAttachmentBehavior](#tiuiiosviewattachmentbehavior)
|
|
14
|
+
|
|
15
|
+
<!-- TOC-END -->
|
|
16
|
+
|
|
3
17
|
## Ti.UI.iOS.AnchorAttachmentBehavior
|
|
4
18
|
> Dynamic behavior to support connections between an anchor point and an item.
|
|
5
19
|
> Extends Ti.Proxy
|
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Ti.UI.iOS API Reference
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Ti.UI.iOS](#tiuiios)
|
|
7
|
+
- [Ti.UI.iOS.AlertDialogStyle](#tiuiiosalertdialogstyle)
|
|
8
|
+
- [Ti.UI.iOS.AnimationStyle](#tiuiiosanimationstyle)
|
|
9
|
+
- [Ti.UI.iOS.ApplicationShortcuts](#tiuiiosapplicationshortcuts)
|
|
10
|
+
- [Ti.UI.iOS.BlurView](#tiuiiosblurview)
|
|
11
|
+
- [Ti.UI.iOS.ButtonConfiguration](#tiuiiosbuttonconfiguration)
|
|
12
|
+
- [Ti.UI.iOS.CoverFlowView](#tiuiioscoverflowview)
|
|
13
|
+
- [Ti.UI.iOS.DocumentViewer](#tiuiiosdocumentviewer)
|
|
14
|
+
- [Ti.UI.iOS.FeedbackGenerator](#tiuiiosfeedbackgenerator)
|
|
15
|
+
- [Ti.UI.iOS.ListViewCellSelectionStyle](#tiuiioslistviewcellselectionstyle)
|
|
16
|
+
- [Ti.UI.iOS.ListViewScrollPosition](#tiuiioslistviewscrollposition)
|
|
17
|
+
- [Ti.UI.iOS.ListViewStyle](#tiuiioslistviewstyle)
|
|
18
|
+
- [Ti.UI.iOS.LivePhoto](#tiuiioslivephoto)
|
|
19
|
+
- [Ti.UI.iOS.LivePhotoView](#tiuiioslivephotoview)
|
|
20
|
+
- [Ti.UI.iOS.MenuPopup](#tiuiiosmenupopup)
|
|
21
|
+
- [Ti.UI.iOS.NavigationWindow](#tiuiiosnavigationwindow)
|
|
22
|
+
- [Ti.UI.iOS.PreviewAction](#tiuiiospreviewaction)
|
|
23
|
+
- [Ti.UI.iOS.PreviewActionGroup](#tiuiiospreviewactiongroup)
|
|
24
|
+
- [Ti.UI.iOS.PreviewContext](#tiuiiospreviewcontext)
|
|
25
|
+
- [Ti.UI.iOS.ProgressBarStyle](#tiuiiosprogressbarstyle)
|
|
26
|
+
- [Ti.UI.iOS.RowAnimationStyle](#tiuiiosrowanimationstyle)
|
|
27
|
+
- [Ti.UI.iOS.ScrollIndicatorStyle](#tiuiiosscrollindicatorstyle)
|
|
28
|
+
- [Ti.UI.iOS.SplitWindow](#tiuiiossplitwindow)
|
|
29
|
+
- [Ti.UI.iOS.StatusBar](#tiuiiosstatusbar)
|
|
30
|
+
- [Ti.UI.iOS.Stepper](#tiuiiosstepper)
|
|
31
|
+
- [Ti.UI.iOS.SystemButton](#tiuiiossystembutton)
|
|
32
|
+
- [Ti.UI.iOS.SystemIcon](#tiuiiossystemicon)
|
|
33
|
+
- [Ti.UI.iOS.TabbedBar](#tiuiiostabbedbar)
|
|
34
|
+
- [Ti.UI.iOS.TableViewCellSelectionStyle](#tiuiiostableviewcellselectionstyle)
|
|
35
|
+
- [Ti.UI.iOS.TableViewScrollPosition](#tiuiiostableviewscrollposition)
|
|
36
|
+
- [Ti.UI.iOS.TableViewStyle](#tiuiiostableviewstyle)
|
|
37
|
+
- [Ti.UI.iOS.Toolbar](#tiuiiostoolbar)
|
|
38
|
+
- [Ti.UI.iOS.TransitionAnimation](#tiuiiostransitionanimation)
|
|
39
|
+
- [Ti.UI.iOS.WebViewConfiguration](#tiuiioswebviewconfiguration)
|
|
40
|
+
- [Ti.UI.iOS.WebViewDecisionHandler](#tiuiioswebviewdecisionhandler)
|
|
41
|
+
- [Ti.UI.iOS.WebViewProcessPool](#tiuiioswebviewprocesspool)
|
|
42
|
+
|
|
43
|
+
<!-- TOC-END -->
|
|
44
|
+
|
|
3
45
|
## Ti.UI.iOS
|
|
4
46
|
> Apple iOS specific UI capabilities. All properties, methods and events in this namespace will only work on Apple iOS devices.
|
|
5
47
|
> Extends Ti.Module
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Ti.UI Lists & Tables API Reference
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Ti.UI.ListView](#tiuilistview)
|
|
7
|
+
- [Ti.UI.ListItem](#tiuilistitem)
|
|
8
|
+
- [Ti.UI.ListSection](#tiuilistsection)
|
|
9
|
+
- [Ti.UI.ListViewScrollPosition](#tiuilistviewscrollposition)
|
|
10
|
+
- [Ti.UI.TableView](#tiuitableview)
|
|
11
|
+
- [Ti.UI.TableViewRow](#tiuitableviewrow)
|
|
12
|
+
- [Ti.UI.TableViewSection](#tiuitableviewsection)
|
|
13
|
+
- [Ti.UI.TableViewScrollPosition](#tiuitableviewscrollposition)
|
|
14
|
+
|
|
15
|
+
<!-- TOC-END -->
|
|
16
|
+
|
|
3
17
|
## Ti.UI.ListView
|
|
4
18
|
> A list view is used to present information, organized in to sections and items, in a vertically-scrolling view.
|
|
5
19
|
> Extends Ti.UI.View
|
|
@@ -15,7 +29,6 @@ A `ListView` object is a container for [ListSection](Titanium.UI.ListSection)
|
|
|
15
29
|
objects that are, in turn, containers for [ListItem](Titanium.UI.ListItem) objects. This is
|
|
16
30
|
easily visualized as an Alloy view:
|
|
17
31
|
|
|
18
|
-
``` xml
|
|
19
32
|
|
|
20
33
|
### Properties (unique: 54/122)
|
|
21
34
|
| Property | Type | Default | Platform | Description |
|
|
@@ -155,7 +168,6 @@ Alloy applications can use **`<ListItem>`** elements to create `ListItem` object
|
|
|
155
168
|
must be nested inside a **`<ListSection>`** element, which itself is nested in a `<ListView>` element,
|
|
156
169
|
as shown below:
|
|
157
170
|
|
|
158
|
-
``` xml
|
|
159
171
|
|
|
160
172
|
### Properties (unique: 26/28)
|
|
161
173
|
| Property | Type | Default | Platform | Description |
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Ti.UI Text & Input API Reference
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Ti.UI.TextField](#tiuitextfield)
|
|
7
|
+
- [Ti.UI.TextArea](#tiuitextarea)
|
|
8
|
+
- [Ti.UI.SearchBar](#tiuisearchbar)
|
|
9
|
+
- [Ti.UI.AttributedString](#tiuiattributedstring)
|
|
10
|
+
- [Ti.UI.Color](#tiuicolor)
|
|
11
|
+
- [Ti.UI.Clipboard](#tiuiclipboard)
|
|
12
|
+
- [Ti.UI.Picker](#tiuipicker)
|
|
13
|
+
- [Ti.UI.PickerColumn](#tiuipickercolumn)
|
|
14
|
+
- [Ti.UI.PickerRow](#tiuipickerrow)
|
|
15
|
+
|
|
16
|
+
<!-- TOC-END -->
|
|
17
|
+
|
|
3
18
|
## Ti.UI.TextField
|
|
4
19
|
> A single line text field.
|
|
5
20
|
> Extends Ti.UI.View
|
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Ti.UI Core Views API Reference
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Ti.UI.View](#tiuiview)
|
|
7
|
+
- [Ti.UI.Label](#tiuilabel)
|
|
8
|
+
- [Ti.UI.Button](#tiuibutton)
|
|
9
|
+
- [Ti.UI.ImageView](#tiuiimageview)
|
|
10
|
+
- [Ti.UI.ScrollView](#tiuiscrollview)
|
|
11
|
+
- [Ti.UI.ScrollableView](#tiuiscrollableview)
|
|
12
|
+
- [Ti.UI.ActivityIndicator](#tiuiactivityindicator)
|
|
13
|
+
- [Ti.UI.ActivityIndicatorStyle](#tiuiactivityindicatorstyle)
|
|
14
|
+
- [Ti.UI.ProgressBar](#tiuiprogressbar)
|
|
15
|
+
- [Ti.UI.Slider](#tiuislider)
|
|
16
|
+
- [Ti.UI.Switch](#tiuiswitch)
|
|
17
|
+
- [Ti.UI.MaskedImage](#tiuimaskedimage)
|
|
18
|
+
- [Ti.UI.RefreshControl](#tiuirefreshcontrol)
|
|
19
|
+
|
|
20
|
+
<!-- TOC-END -->
|
|
21
|
+
|
|
3
22
|
## Ti.UI.View
|
|
4
23
|
> An empty drawing surface or container
|
|
5
24
|
> Extends Ti.Proxy
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Ti.UI Windows & Navigation API Reference
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Ti.UI.Window](#tiuiwindow)
|
|
7
|
+
- [Ti.UI.NavigationWindow](#tiuinavigationwindow)
|
|
8
|
+
- [Ti.UI.TabGroup](#tiuitabgroup)
|
|
9
|
+
- [Ti.UI.Tab](#tiuitab)
|
|
10
|
+
- [Ti.UI.AlertDialog](#tiuialertdialog)
|
|
11
|
+
- [Ti.UI.OptionDialog](#tiuioptiondialog)
|
|
12
|
+
- [Ti.UI.Notification](#tiuinotification)
|
|
13
|
+
|
|
14
|
+
<!-- TOC-END -->
|
|
15
|
+
|
|
3
16
|
## Ti.UI.Window
|
|
4
17
|
> The Window is an empty drawing surface or container.
|
|
5
18
|
> Extends Ti.UI.View
|
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# Ti.XML & Global API Reference
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Ti.XML](#tixml)
|
|
7
|
+
- [Ti.XML.Attr](#tixmlattr)
|
|
8
|
+
- [Ti.XML.CDATASection](#tixmlcdatasection)
|
|
9
|
+
- [Ti.XML.CharacterData](#tixmlcharacterdata)
|
|
10
|
+
- [Ti.XML.Comment](#tixmlcomment)
|
|
11
|
+
- [Ti.XML.DOMImplementation](#tixmldomimplementation)
|
|
12
|
+
- [Ti.XML.Document](#tixmldocument)
|
|
13
|
+
- [Ti.XML.DocumentFragment](#tixmldocumentfragment)
|
|
14
|
+
- [Ti.XML.DocumentType](#tixmldocumenttype)
|
|
15
|
+
- [Ti.XML.Element](#tixmlelement)
|
|
16
|
+
- [Ti.XML.Entity](#tixmlentity)
|
|
17
|
+
- [Ti.XML.EntityReference](#tixmlentityreference)
|
|
18
|
+
- [Ti.XML.NamedNodeMap](#tixmlnamednodemap)
|
|
19
|
+
- [Ti.XML.Node](#tixmlnode)
|
|
20
|
+
- [Ti.XML.NodeList](#tixmlnodelist)
|
|
21
|
+
- [Ti.XML.Notation](#tixmlnotation)
|
|
22
|
+
- [Ti.XML.ProcessingInstruction](#tixmlprocessinginstruction)
|
|
23
|
+
- [Ti.XML.Text](#tixmltext)
|
|
24
|
+
- [Global](#global)
|
|
25
|
+
- [Global.Console](#globalconsole)
|
|
26
|
+
- [Global.Intl](#globalintl)
|
|
27
|
+
- [Global.Intl.Collator](#globalintlcollator)
|
|
28
|
+
- [Global.Intl.DateTimeFormat](#globalintldatetimeformat)
|
|
29
|
+
- [Global.Intl.NumberFormat](#globalintlnumberformat)
|
|
30
|
+
- [Global.String](#globalstring)
|
|
31
|
+
|
|
32
|
+
<!-- TOC-END -->
|
|
33
|
+
|
|
3
34
|
## Ti.XML
|
|
4
35
|
> The top level XML module. The XML module is used for parsing and processing XML-based content.
|
|
5
36
|
> Extends Ti.Module
|
|
@@ -4,6 +4,20 @@ Patterns for building responsive Titanium apps that work across phones, tablets,
|
|
|
4
4
|
|
|
5
5
|
This reference is NOT derived from official Titanium documentation. It addresses Google's Android 17 resizability requirements and provides reusable patterns for adaptive UI in Titanium/Alloy apps.
|
|
6
6
|
|
|
7
|
+
<!-- TOC-START -->
|
|
8
|
+
## Contents
|
|
9
|
+
|
|
10
|
+
- [1. Context: Android 17 resizability requirements](#1-context-android-17-resizability-requirements)
|
|
11
|
+
- [2. Detecting window size](#2-detecting-window-size)
|
|
12
|
+
- [3. Layout strategy](#3-layout-strategy)
|
|
13
|
+
- [4. Controller pattern](#4-controller-pattern)
|
|
14
|
+
- [5. Grid simulation](#5-grid-simulation)
|
|
15
|
+
- [6. Anti-patterns](#6-anti-patterns)
|
|
16
|
+
- [7. tiapp.xml configuration](#7-tiappxml-configuration)
|
|
17
|
+
- [8. Quick reference](#8-quick-reference)
|
|
18
|
+
|
|
19
|
+
<!-- TOC-END -->
|
|
20
|
+
|
|
7
21
|
## 1. Context: Android 17 resizability requirements
|
|
8
22
|
|
|
9
23
|
Starting with Android 17 (API 37), on devices with screens >= 600dp (tablets, foldables, desktop mode), Google ignores these manifest attributes:
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Alloy builtins & globals
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Compiler directives](#compiler-directives)
|
|
7
|
+
- [Alloy.Globals](#alloyglobals)
|
|
8
|
+
- [Alloy.CFG](#alloycfg)
|
|
9
|
+
- [Alloy.isTablet / Alloy.isHandheld](#alloyistablet-alloyishandheld)
|
|
10
|
+
- [$.args , controller arguments](#args-controller-arguments)
|
|
11
|
+
- [Alloy.createController / Alloy.createWidget](#alloycreatecontroller-alloycreatewidget)
|
|
12
|
+
- [Alloy.createModel / Alloy.createCollection](#alloycreatemodel-alloycreatecollection)
|
|
13
|
+
- [Conditional code in XML](#conditional-code-in-xml)
|
|
14
|
+
- [Quick reference](#quick-reference)
|
|
15
|
+
|
|
16
|
+
<!-- TOC-END -->
|
|
17
|
+
|
|
3
18
|
## Compiler directives
|
|
4
19
|
|
|
5
20
|
Alloy provides compile-time constants that are replaced with `true`/`false` during build. Use them for platform-specific code without runtime cost.
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Alloy MVC structure reference
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Standard project structure](#standard-project-structure)
|
|
7
|
+
- [Organization strategy](#organization-strategy)
|
|
8
|
+
- [lib/ folder and module require paths](#lib-folder-and-module-require-paths)
|
|
9
|
+
- [Data layer: two approaches](#data-layer-two-approaches)
|
|
10
|
+
- [Controller rules](#controller-rules)
|
|
11
|
+
- [Navigation & cleanup pattern](#navigation-cleanup-pattern)
|
|
12
|
+
- [i18n and accessibility rules](#i18n-and-accessibility-rules)
|
|
13
|
+
- [Widget structure](#widget-structure)
|
|
14
|
+
- [config.json reference](#configjson-reference)
|
|
15
|
+
|
|
16
|
+
<!-- TOC-END -->
|
|
17
|
+
|
|
3
18
|
## Standard project structure
|
|
4
19
|
|
|
5
20
|
```
|
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# TSS styling & code conventions
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Module system: CommonJS (NOT ES6 modules)](#module-system-commonjs-not-es6-modules)
|
|
7
|
+
- [ES6+ features (Non-Module)](#es6-features-non-module)
|
|
8
|
+
- [No semicolons](#no-semicolons)
|
|
9
|
+
- [Styling with TSS](#styling-with-tss)
|
|
10
|
+
- [Platform & device modifiers](#platform-device-modifiers)
|
|
11
|
+
- [applyProperties() pattern](#applyproperties-pattern)
|
|
12
|
+
- [ListView templates](#listview-templates)
|
|
13
|
+
- [Memory cleanup](#memory-cleanup)
|
|
14
|
+
- [i18n and accessibility (a11y)](#i18n-and-accessibility-a11y)
|
|
15
|
+
- [Percentage-based layouts](#percentage-based-layouts)
|
|
16
|
+
- [Naming conventions](#naming-conventions)
|
|
17
|
+
- [Import/Export patterns](#importexport-patterns)
|
|
18
|
+
- [Async/Promise patterns](#asyncpromise-patterns)
|
|
19
|
+
|
|
20
|
+
<!-- TOC-END -->
|
|
21
|
+
|
|
3
22
|
## Module system: CommonJS (NOT ES6 modules)
|
|
4
23
|
|
|
5
24
|
Titanium uses **CommonJS** for modules. Do NOT use ES6 `import`/`export`:
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Alloy controller patterns
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Titanium layout rules](#titanium-layout-rules)
|
|
7
|
+
- [Animation usage](#animation-usage)
|
|
8
|
+
- [Dynamic styling](#dynamic-styling)
|
|
9
|
+
- [Percentage-based layouts](#percentage-based-layouts)
|
|
10
|
+
- [Controller lifecycle patterns](#controller-lifecycle-patterns)
|
|
11
|
+
- [Form handling patterns](#form-handling-patterns)
|
|
12
|
+
- [Loading state patterns](#loading-state-patterns)
|
|
13
|
+
- [Modal and dialog patterns](#modal-and-dialog-patterns)
|
|
14
|
+
- [Tabgroup pattern](#tabgroup-pattern)
|
|
15
|
+
- [Navigationwindow pattern (iOS)](#navigationwindow-pattern-ios)
|
|
16
|
+
- [Searchbar with ListView](#searchbar-with-listview)
|
|
17
|
+
- [Pull-to-refresh pattern](#pull-to-refresh-pattern)
|
|
18
|
+
|
|
19
|
+
<!-- TOC-END -->
|
|
20
|
+
|
|
3
21
|
## Titanium layout rules
|
|
4
22
|
|
|
5
23
|
- Use `layout: 'horizontal'` for left-to-right
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Error handling & logging guide
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Apperror classes](#apperror-classes)
|
|
7
|
+
- [Logger service](#logger-service)
|
|
8
|
+
- [Error handler service](#error-handler-service)
|
|
9
|
+
- [Using the logger](#using-the-logger)
|
|
10
|
+
- [API client error handling](#api-client-error-handling)
|
|
11
|
+
- [Controller error handling pattern](#controller-error-handling-pattern)
|
|
12
|
+
- [Global error handler](#global-error-handler)
|
|
13
|
+
- [Crash reporting integration](#crash-reporting-integration)
|
|
14
|
+
- [Validation helper](#validation-helper)
|
|
15
|
+
- [Logging best practices](#logging-best-practices)
|
|
16
|
+
|
|
17
|
+
<!-- TOC-END -->
|
|
18
|
+
|
|
3
19
|
## Apperror classes
|
|
4
20
|
|
|
5
21
|
```javascript
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Alloy implementation examples
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [API client service](#api-client-service)
|
|
7
|
+
- [Native module wrapper service](#native-module-wrapper-service)
|
|
8
|
+
- [i18n helper](#i18n-helper)
|
|
9
|
+
- [Model with SQL adapter](#model-with-sql-adapter)
|
|
10
|
+
- [Fully styled & accessible view](#fully-styled-accessible-view)
|
|
11
|
+
- [Cleanup pattern in controller](#cleanup-pattern-in-controller)
|
|
12
|
+
- [Animation usage](#animation-usage)
|
|
13
|
+
- [Complete crud example](#complete-crud-example)
|
|
14
|
+
- [ListView with search and filter](#listview-with-search-and-filter)
|
|
15
|
+
- [Form with validation example](#form-with-validation-example)
|
|
16
|
+
- [Tab-based navigation example](#tab-based-navigation-example)
|
|
17
|
+
|
|
18
|
+
<!-- TOC-END -->
|
|
19
|
+
|
|
3
20
|
## API client service
|
|
4
21
|
Standard logic for network requests.
|
|
5
22
|
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Migration patterns for legacy Titanium apps
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Assessment checklist](#assessment-checklist)
|
|
7
|
+
- [Phase 1: TSS organization](#phase-1-tss-organization)
|
|
8
|
+
- [Phase 2: service layer extraction](#phase-2-service-layer-extraction)
|
|
9
|
+
- [Phase 3: event system migration](#phase-3-event-system-migration)
|
|
10
|
+
- [Phase 4: navigation service](#phase-4-navigation-service)
|
|
11
|
+
- [Phase 5: state management](#phase-5-state-management)
|
|
12
|
+
- [Migration order](#migration-order)
|
|
13
|
+
- [Rollback strategy](#rollback-strategy)
|
|
14
|
+
- [Common migration pitfalls](#common-migration-pitfalls)
|
|
15
|
+
|
|
16
|
+
<!-- TOC-END -->
|
|
17
|
+
|
|
3
18
|
## Assessment checklist
|
|
4
19
|
|
|
5
20
|
Before migrating, evaluate the current codebase:
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Architectural patterns for Titanium + Alloy
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [1. Native module abstraction (Wrapper)](#1-native-module-abstraction-wrapper)
|
|
7
|
+
- [2. Repository pattern for data](#2-repository-pattern-for-data)
|
|
8
|
+
- [3. Service layer pattern](#3-service-layer-pattern)
|
|
9
|
+
- [4. Event bus for decoupling](#4-event-bus-for-decoupling)
|
|
10
|
+
- [5. Factory pattern for dynamic views](#5-factory-pattern-for-dynamic-views)
|
|
11
|
+
- [6. Navigation service pattern](#6-navigation-service-pattern)
|
|
12
|
+
- [7. Collection binding pattern](#7-collection-binding-pattern)
|
|
13
|
+
- [8. Cleanup pattern](#8-cleanup-pattern)
|
|
14
|
+
- [9. Singleton service pattern](#9-singleton-service-pattern)
|
|
15
|
+
|
|
16
|
+
<!-- TOC-END -->
|
|
17
|
+
|
|
3
18
|
## 1. Native module abstraction (Wrapper)
|
|
4
19
|
|
|
5
20
|
**Use when:** Using native modules like Maps, Biometrics, or specialized Media players.
|
|
@@ -446,3 +461,4 @@ class AnalyticsService {
|
|
|
446
461
|
}
|
|
447
462
|
|
|
448
463
|
exports.Analytics = new AnalyticsService()
|
|
464
|
+
```
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Performance optimization: bridge, memory, animation & timing
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Bridge optimization](#bridge-optimization)
|
|
7
|
+
- [Memory management](#memory-management)
|
|
8
|
+
- [Image memory management](#image-memory-management)
|
|
9
|
+
- [Lazy loading pattern](#lazy-loading-pattern)
|
|
10
|
+
- [Database performance](#database-performance)
|
|
11
|
+
- [Performance monitoring](#performance-monitoring)
|
|
12
|
+
- [Animation performance](#animation-performance)
|
|
13
|
+
- [Hardware-accelerated properties](#hardware-accelerated-properties)
|
|
14
|
+
- [Animation cleanup](#animation-cleanup)
|
|
15
|
+
- [Debouncing and throttling](#debouncing-and-throttling)
|
|
16
|
+
- [Performance checklist](#performance-checklist)
|
|
17
|
+
|
|
18
|
+
<!-- TOC-END -->
|
|
19
|
+
|
|
3
20
|
## Bridge optimization
|
|
4
21
|
|
|
5
22
|
### Minimize bridge crossings
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Device security: biometrics, deep links & integrity
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Biometric authentication](#biometric-authentication)
|
|
7
|
+
- [Biometric login flow](#biometric-login-flow)
|
|
8
|
+
- [Deep link security](#deep-link-security)
|
|
9
|
+
- [Registering deep link handler](#registering-deep-link-handler)
|
|
10
|
+
- [Jailbreak/Root detection](#jailbreakroot-detection)
|
|
11
|
+
- [Integrating security checks](#integrating-security-checks)
|
|
12
|
+
- [Security checklist](#security-checklist)
|
|
13
|
+
|
|
14
|
+
<!-- TOC-END -->
|
|
15
|
+
|
|
3
16
|
## Biometric authentication
|
|
4
17
|
|
|
5
18
|
### Using ti.identity module
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# State management patterns
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [The problem](#the-problem)
|
|
7
|
+
- [Solution: centralized state store](#solution-centralized-state-store)
|
|
8
|
+
- [State store usage](#state-store-usage)
|
|
9
|
+
- [Service layer state caching](#service-layer-state-caching)
|
|
10
|
+
- [Collections vs state store](#collections-vs-state-store)
|
|
11
|
+
- [State synchronization pattern](#state-synchronization-pattern)
|
|
12
|
+
- [Anti-patterns](#anti-patterns)
|
|
13
|
+
- [Persistence strategies](#persistence-strategies)
|
|
14
|
+
- [State middleware](#state-middleware)
|
|
15
|
+
- [State debugging](#state-debugging)
|
|
16
|
+
|
|
17
|
+
<!-- TOC-END -->
|
|
18
|
+
|
|
3
19
|
## The problem
|
|
4
20
|
|
|
5
21
|
As apps grow, state gets scattered:
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# End-to-end testing & CI/CD
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Appium setup](#appium-setup)
|
|
7
|
+
- [Appium configuration](#appium-configuration)
|
|
8
|
+
- [Webdriverio integration](#webdriverio-integration)
|
|
9
|
+
- [E2E test example](#e2e-test-example)
|
|
10
|
+
- [Adding accessibility IDs for testing](#adding-accessibility-ids-for-testing)
|
|
11
|
+
- [Page object pattern](#page-object-pattern)
|
|
12
|
+
- [CI/CD integration](#cicd-integration)
|
|
13
|
+
- [Fastlane integration](#fastlane-integration)
|
|
14
|
+
- [Package.json scripts](#packagejson-scripts)
|
|
15
|
+
- [Branch protection rules](#branch-protection-rules)
|
|
16
|
+
- [Testing best practices summary](#testing-best-practices-summary)
|
|
17
|
+
|
|
18
|
+
<!-- TOC-END -->
|
|
19
|
+
|
|
3
20
|
## Appium setup
|
|
4
21
|
|
|
5
22
|
```bash
|
|
@@ -5,6 +5,26 @@
|
|
|
5
5
|
> Testing is useful for teams practicing CI/CD, projects with complex business logic, or refactoring confidence.
|
|
6
6
|
> If you prefer manual testing on device, you can safely skip this guide.
|
|
7
7
|
|
|
8
|
+
<!-- TOC-START -->
|
|
9
|
+
## Contents
|
|
10
|
+
|
|
11
|
+
- [What can be tested (Without Compiling)](#what-can-be-tested-without-compiling)
|
|
12
|
+
- [What cannot be easily tested](#what-cannot-be-easily-tested)
|
|
13
|
+
- [Testing philosophy](#testing-philosophy)
|
|
14
|
+
- [Project structure](#project-structure)
|
|
15
|
+
- [Writing testable code](#writing-testable-code)
|
|
16
|
+
- [Unit testing services](#unit-testing-services)
|
|
17
|
+
- [Unit testing helpers](#unit-testing-helpers)
|
|
18
|
+
- [Integration testing controllers](#integration-testing-controllers)
|
|
19
|
+
- [Mock factory](#mock-factory)
|
|
20
|
+
- [Test helper functions](#test-helper-functions)
|
|
21
|
+
- [Test setup configuration](#test-setup-configuration)
|
|
22
|
+
- [Running tests](#running-tests)
|
|
23
|
+
- [Anti-patterns to avoid](#anti-patterns-to-avoid)
|
|
24
|
+
- [Test checklist](#test-checklist)
|
|
25
|
+
|
|
26
|
+
<!-- TOC-END -->
|
|
27
|
+
|
|
8
28
|
## What can be tested (Without Compiling)
|
|
9
29
|
|
|
10
30
|
**Pure JavaScript Logic:**
|
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Theming & dark mode
|
|
2
2
|
|
|
3
|
+
<!-- TOC-START -->
|
|
4
|
+
## Contents
|
|
5
|
+
|
|
6
|
+
- [Alloy theme system](#alloy-theme-system)
|
|
7
|
+
- [Theme folder structure](#theme-folder-structure)
|
|
8
|
+
- [Activating a theme](#activating-a-theme)
|
|
9
|
+
- [Theme cascade](#theme-cascade)
|
|
10
|
+
- [Dynamic theming with Alloy.Globals](#dynamic-theming-with-alloyglobals)
|
|
11
|
+
- [Step 1: define color palette](#step-1-define-color-palette)
|
|
12
|
+
- [Step 2: use in TSS with Alloy.Globals](#step-2-use-in-tss-with-alloyglobals)
|
|
13
|
+
- [Step 3: theme switching service](#step-3-theme-switching-service)
|
|
14
|
+
- [Step 4: respond to theme changes in controllers](#step-4-respond-to-theme-changes-in-controllers)
|
|
15
|
+
- [System dark mode detection](#system-dark-mode-detection)
|
|
16
|
+
- [iOS 13+ / Android 10+](#ios-13-android-10)
|
|
17
|
+
- [Semantic colors (Cross-Platform)](#semantic-colors-cross-platform)
|
|
18
|
+
- [Reusable style classes pattern](#reusable-style-classes-pattern)
|
|
19
|
+
- [Using style classes in views](#using-style-classes-in-views)
|
|
20
|
+
|
|
21
|
+
<!-- TOC-END -->
|
|
22
|
+
|
|
3
23
|
## Alloy theme system
|
|
4
24
|
|
|
5
25
|
Alloy has a built-in theme system via the `app/themes/` folder. Themes override views, styles, and assets without modifying originals.
|
|
@@ -2,6 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
Guide for distributing Titanium apps to Google Play (Android) and the App Store (iOS).
|
|
4
4
|
|
|
5
|
+
<!-- TOC-START -->
|
|
6
|
+
## Contents
|
|
7
|
+
|
|
8
|
+
- [Android distribution](#android-distribution)
|
|
9
|
+
- [1. Generate keystore and certificate](#1-generate-keystore-and-certificate)
|
|
10
|
+
- [2. Verify keystore](#2-verify-keystore)
|
|
11
|
+
- [3. Build for Google Play](#3-build-for-google-play)
|
|
12
|
+
- [4. Verify APK signing](#4-verify-apk-signing)
|
|
13
|
+
- [5. Deploy to device for testing](#5-deploy-to-device-for-testing)
|
|
14
|
+
- [6. Google Play submission requirements](#6-google-play-submission-requirements)
|
|
15
|
+
- [7. SD card installation](#7-sd-card-installation)
|
|
16
|
+
- [iOS distribution](#ios-distribution)
|
|
17
|
+
- [1. Distribution types](#1-distribution-types)
|
|
18
|
+
- [2. Create distribution certificate](#2-create-distribution-certificate)
|
|
19
|
+
- [3. Create distribution provisioning profile](#3-create-distribution-provisioning-profile)
|
|
20
|
+
- [4. Create App ID on App Store Connect](#4-create-app-id-on-app-store-connect)
|
|
21
|
+
- [5. Build and package](#5-build-and-package)
|
|
22
|
+
- [6. Upload to App Store Connect](#6-upload-to-app-store-connect)
|
|
23
|
+
- [7. Ad Hoc distribution](#7-ad-hoc-distribution)
|
|
24
|
+
- [Mac Catalyst distribution (Mac App Store)](#mac-catalyst-distribution-mac-app-store)
|
|
25
|
+
- [1. Enable Mac Catalyst for your App ID](#1-enable-mac-catalyst-for-your-app-id)
|
|
26
|
+
- [2. Create Mac App Store Distribution Certificate](#2-create-mac-app-store-distribution-certificate)
|
|
27
|
+
- [3. Mac Catalyst build targets](#3-mac-catalyst-build-targets)
|
|
28
|
+
- [4. Build for Mac Catalyst (Development)](#4-build-for-mac-catalyst-development)
|
|
29
|
+
- [5. Build for Mac App Store (Distribution)](#5-build-for-mac-app-store-distribution)
|
|
30
|
+
- [6. Upload to Mac App Store Connect](#6-upload-to-mac-app-store-connect)
|
|
31
|
+
- [7. Create app listing in App Store Connect](#7-create-app-listing-in-app-store-connect)
|
|
32
|
+
- [8. Mac Catalyst entitlements](#8-mac-catalyst-entitlements)
|
|
33
|
+
- [9. Common issues](#9-common-issues)
|
|
34
|
+
- [10. Versioning](#10-versioning)
|
|
35
|
+
- [11. Testing on Mac](#11-testing-on-mac)
|
|
36
|
+
|
|
37
|
+
<!-- TOC-END -->
|
|
38
|
+
|
|
5
39
|
## Android distribution
|
|
6
40
|
|
|
7
41
|
### 1. Generate keystore and certificate
|
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
Framework options and architecture patterns for Titanium applications.
|
|
4
4
|
|
|
5
|
+
<!-- TOC-START -->
|
|
6
|
+
## Contents
|
|
7
|
+
|
|
8
|
+
- [Alloy framework](#alloy-framework)
|
|
9
|
+
- [Classic Titanium](#classic-titanium)
|
|
10
|
+
- [Choosing a framework](#choosing-a-framework)
|
|
11
|
+
- [Architecture patterns](#architecture-patterns)
|
|
12
|
+
- [Framework interoperability](#framework-interoperability)
|
|
13
|
+
- [Best practices](#best-practices)
|
|
14
|
+
- [Resources](#resources)
|
|
15
|
+
|
|
16
|
+
<!-- TOC-END -->
|
|
17
|
+
|
|
5
18
|
## Alloy framework
|
|
6
19
|
|
|
7
20
|
Alloy is the official MVC framework for Titanium. It was developed by Appcelerator and is now maintained by TiDev.
|