@maccesar/titools 2.2.4 → 2.2.8
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 +23 -23
- package/lib/commands/update.js +4 -12
- package/package.json +1 -1
- package/skills/alloy-guides/SKILL.md +31 -31
- package/skills/alloy-guides/references/CONCEPTS.md +3 -3
- package/skills/alloy-guides/references/CONTROLLERS.md +1 -1
- package/skills/alloy-guides/references/MODELS.md +6 -6
- package/skills/alloy-guides/references/VIEWS_WITHOUT_CONTROLLERS.md +1 -1
- package/skills/alloy-guides/references/VIEWS_XML.md +1 -1
- package/skills/alloy-guides/references/WIDGETS.md +1 -1
- package/skills/alloy-howtos/SKILL.md +27 -27
- package/skills/alloy-howtos/references/best_practices.md +9 -9
- package/skills/alloy-howtos/references/cli_reference.md +14 -14
- package/skills/alloy-howtos/references/config_files.md +16 -16
- package/skills/alloy-howtos/references/custom_tags.md +16 -16
- package/skills/alloy-howtos/references/debugging_troubleshooting.md +11 -15
- package/skills/alloy-howtos/references/samples.md +19 -19
- package/skills/purgetss/SKILL.md +11 -1
- package/skills/purgetss/references/animation-system.md +1 -1
- package/skills/purgetss/references/cli-commands.md +3 -3
- package/skills/purgetss/references/customization-deep-dive.md +1 -1
- package/skills/purgetss/references/dynamic-component-creation.md +1 -1
- package/skills/purgetss/references/icon-fonts.md +4 -0
- package/skills/purgetss/references/installation-setup.md +8 -1
- package/skills/purgetss/references/migration-guide.md +4 -0
- package/skills/purgetss/references/tikit-components.md +193 -204
- package/skills/purgetss/references/ui-ux-design.md +1 -1
- package/skills/ti-expert/SKILL.md +78 -118
- package/skills/ti-expert/references/alloy-builtins.md +18 -18
- package/skills/ti-expert/references/alloy-structure.md +21 -21
- package/skills/ti-expert/references/anti-patterns.md +15 -15
- package/skills/ti-expert/references/cli-expert.md +15 -15
- package/skills/ti-expert/references/code-conventions.md +38 -38
- package/skills/ti-expert/references/contracts.md +8 -8
- package/skills/ti-expert/references/controller-patterns.md +14 -14
- package/skills/ti-expert/references/error-handling.md +11 -11
- package/skills/ti-expert/references/examples.md +12 -12
- package/skills/ti-expert/references/migration-patterns.md +24 -24
- package/skills/ti-expert/references/patterns.md +10 -10
- package/skills/ti-expert/references/performance-listview.md +16 -16
- package/skills/ti-expert/references/performance-optimization.md +41 -41
- package/skills/ti-expert/references/security-device.md +22 -22
- package/skills/ti-expert/references/security-fundamentals.md +19 -19
- package/skills/ti-expert/references/state-management.md +33 -33
- package/skills/ti-expert/references/testing-e2e-ci.md +25 -25
- package/skills/ti-expert/references/testing-unit.md +24 -24
- package/skills/ti-expert/references/theming.md +15 -15
- package/skills/ti-guides/SKILL.md +58 -60
- package/skills/ti-guides/references/advanced-data-and-images.md +33 -33
- package/skills/ti-guides/references/android-manifest.md +15 -15
- package/skills/ti-guides/references/app-distribution.md +70 -166
- package/skills/ti-guides/references/application-frameworks.md +96 -114
- package/skills/ti-guides/references/cli-reference.md +294 -294
- package/skills/ti-guides/references/coding-best-practices.md +42 -33
- package/skills/ti-guides/references/commonjs-advanced.md +57 -51
- package/skills/ti-guides/references/hello-world.md +36 -36
- package/skills/ti-guides/references/hyperloop-native-access.md +66 -66
- package/skills/ti-guides/references/javascript-primer.md +83 -101
- package/skills/ti-guides/references/reserved-words.md +9 -9
- package/skills/ti-guides/references/resources.md +75 -83
- package/skills/ti-guides/references/style-and-conventions.md +35 -28
- package/skills/ti-guides/references/tiapp-config.md +110 -74
- package/skills/ti-howtos/SKILL.md +88 -92
- package/skills/ti-howtos/references/android-platform-deep-dives.md +104 -104
- package/skills/ti-howtos/references/automation-fastlane-appium.md +39 -39
- package/skills/ti-howtos/references/buffer-codec-streams.md +60 -60
- package/skills/ti-howtos/references/cross-platform-development.md +115 -136
- package/skills/ti-howtos/references/debugging-profiling.md +167 -181
- package/skills/ti-howtos/references/extending-titanium.md +121 -121
- package/skills/ti-howtos/references/google-maps-v2.md +84 -82
- package/skills/ti-howtos/references/ios-map-kit.md +65 -60
- package/skills/ti-howtos/references/ios-platform-deep-dives.md +123 -123
- package/skills/ti-howtos/references/local-data-sources.md +79 -78
- package/skills/ti-howtos/references/location-and-maps.md +116 -120
- package/skills/ti-howtos/references/media-apis.md +87 -86
- package/skills/ti-howtos/references/notification-services.md +250 -260
- package/skills/ti-howtos/references/remote-data-sources.md +98 -93
- package/skills/ti-howtos/references/tutorials.md +226 -216
- package/skills/ti-howtos/references/using-modules.md +73 -102
- package/skills/ti-howtos/references/web-content-integration.md +101 -103
- package/skills/ti-howtos/references/webpack-build-pipeline.md +52 -44
- package/skills/ti-ui/SKILL.md +85 -85
- package/skills/ti-ui/references/accessibility-deep-dive.md +57 -57
- package/skills/ti-ui/references/animation-and-matrices.md +79 -79
- package/skills/ti-ui/references/application-structures.md +96 -99
- package/skills/ti-ui/references/custom-fonts-styling.md +99 -99
- package/skills/ti-ui/references/event-handling.md +58 -58
- package/skills/ti-ui/references/gestures.md +62 -64
- package/skills/ti-ui/references/icons-and-splash-screens.md +88 -88
- package/skills/ti-ui/references/layouts-and-positioning.md +87 -97
- package/skills/ti-ui/references/listviews-and-performance.md +107 -107
- package/skills/ti-ui/references/orientation.md +87 -88
- package/skills/ti-ui/references/platform-ui-android.md +87 -81
- package/skills/ti-ui/references/platform-ui-ios.md +63 -61
- package/skills/ti-ui/references/scrolling-views.md +29 -29
- package/skills/ti-ui/references/tableviews.md +56 -56
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
## 1. Overview
|
|
4
4
|
|
|
5
|
-
TableView is a scrolling list component that displays rows of data.
|
|
5
|
+
TableView is a scrolling list component that displays rows of data. ListView is the recommended modern API for most cases, but TableView is still useful for:
|
|
6
6
|
- Complex row animations
|
|
7
7
|
- Direct child view access
|
|
8
8
|
- Legacy code compatibility
|
|
9
|
-
- UI patterns
|
|
9
|
+
- UI patterns that need direct row manipulation
|
|
10
10
|
|
|
11
11
|
## 2. TableView vs ListView
|
|
12
12
|
|
|
13
13
|
| Feature | TableView | ListView |
|
|
14
14
|
| ------------------- | ------------------------------- | ---------------------------- |
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
15
|
+
| Recommended for | Legacy apps, complex animations | New apps, large datasets |
|
|
16
|
+
| Data binding | Direct row object access | Template-based binding |
|
|
17
|
+
| Performance | Good for small datasets | Optimized for large datasets |
|
|
18
|
+
| Row access | Direct children access | Virtual, data-only updates |
|
|
19
|
+
| Animations | Full row animation support | Limited |
|
|
20
|
+
| Complexity | Simpler for basic needs | More setup required |
|
|
21
21
|
|
|
22
22
|
## 3. Creating a TableView
|
|
23
23
|
|
|
@@ -40,7 +40,7 @@ win.add(table);
|
|
|
40
40
|
...
|
|
41
41
|
## 4. Creating rows
|
|
42
42
|
|
|
43
|
-
### Object
|
|
43
|
+
### Object literal rows (simple)
|
|
44
44
|
|
|
45
45
|
```javascript
|
|
46
46
|
const data = [
|
|
@@ -56,7 +56,7 @@ const table = Ti.UI.createTableView({
|
|
|
56
56
|
win.add(table);
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
### Explicit TableViewRow
|
|
59
|
+
### Explicit TableViewRow objects
|
|
60
60
|
|
|
61
61
|
```javascript
|
|
62
62
|
const row = Ti.UI.createTableViewRow({
|
|
@@ -87,11 +87,11 @@ for (let i = 0; i < 100; i++) {
|
|
|
87
87
|
}
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
Best practice: use `setData()` for multiple rows. `appendRow()` is significantly slower.
|
|
91
91
|
|
|
92
|
-
## 5. Row
|
|
92
|
+
## 5. Row properties
|
|
93
93
|
|
|
94
|
-
### Built-in
|
|
94
|
+
### Built-in row properties
|
|
95
95
|
|
|
96
96
|
| Property | Description |
|
|
97
97
|
| ----------------- | --------------------------------- |
|
|
@@ -107,7 +107,7 @@ for (let i = 0; i < 100; i++) {
|
|
|
107
107
|
| `header` | Section header text |
|
|
108
108
|
| `footer` | Section footer text |
|
|
109
109
|
|
|
110
|
-
### Styled
|
|
110
|
+
### Styled rows example
|
|
111
111
|
|
|
112
112
|
```javascript
|
|
113
113
|
const data = [
|
|
@@ -119,7 +119,7 @@ const data = [
|
|
|
119
119
|
const table = Ti.UI.createTableView({ data: data });
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
### Row
|
|
122
|
+
### Row indicators
|
|
123
123
|
|
|
124
124
|
Row indicators provide visual cues:
|
|
125
125
|
|
|
@@ -134,9 +134,9 @@ Row indicators provide visual cues:
|
|
|
134
134
|
{ title: 'Selected', hasCheck: true } // checkmark
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
-
## 6. Custom
|
|
137
|
+
## 6. Custom rows
|
|
138
138
|
|
|
139
|
-
###
|
|
139
|
+
### Add child views
|
|
140
140
|
|
|
141
141
|
```javascript
|
|
142
142
|
const data = [];
|
|
@@ -175,13 +175,13 @@ for (let i = 0; i < 10; i++) {
|
|
|
175
175
|
const table = Ti.UI.createTableView({ data: data });
|
|
176
176
|
```
|
|
177
177
|
|
|
178
|
-
### Performance
|
|
178
|
+
### Performance warning
|
|
179
179
|
|
|
180
|
-
|
|
180
|
+
Warning: complex rows have performance costs. Each extra UI element multiplies resource use across rows. Test on device and simplify if needed.
|
|
181
181
|
|
|
182
|
-
## 7. Headers and
|
|
182
|
+
## 7. Headers and footers
|
|
183
183
|
|
|
184
|
-
### Table-
|
|
184
|
+
### Table-level headers and footers
|
|
185
185
|
|
|
186
186
|
```javascript
|
|
187
187
|
const table = Ti.UI.createTableView({
|
|
@@ -191,7 +191,7 @@ const table = Ti.UI.createTableView({
|
|
|
191
191
|
});
|
|
192
192
|
```
|
|
193
193
|
|
|
194
|
-
### Custom
|
|
194
|
+
### Custom header and footer views
|
|
195
195
|
|
|
196
196
|
```javascript
|
|
197
197
|
function createCustomView(title) {
|
|
@@ -217,7 +217,7 @@ const table = Ti.UI.createTableView({
|
|
|
217
217
|
});
|
|
218
218
|
```
|
|
219
219
|
|
|
220
|
-
### Section
|
|
220
|
+
### Section headers and footers
|
|
221
221
|
|
|
222
222
|
```javascript
|
|
223
223
|
const data = [
|
|
@@ -231,7 +231,7 @@ const data = [
|
|
|
231
231
|
const table = Ti.UI.createTableView({ data: data });
|
|
232
232
|
```
|
|
233
233
|
|
|
234
|
-
## 8. Grouped
|
|
234
|
+
## 8. Grouped table style (iOS)
|
|
235
235
|
|
|
236
236
|
```javascript
|
|
237
237
|
const data = [
|
|
@@ -248,7 +248,7 @@ const table = Ti.UI.createTableView({
|
|
|
248
248
|
});
|
|
249
249
|
```
|
|
250
250
|
|
|
251
|
-
## 9. Editing
|
|
251
|
+
## 9. Editing mode
|
|
252
252
|
|
|
253
253
|
```javascript
|
|
254
254
|
table.editing = true;
|
|
@@ -263,9 +263,9 @@ const data = [
|
|
|
263
263
|
];
|
|
264
264
|
```
|
|
265
265
|
|
|
266
|
-
## 10. TableView
|
|
266
|
+
## 10. TableView events
|
|
267
267
|
|
|
268
|
-
### Click
|
|
268
|
+
### Click event
|
|
269
269
|
|
|
270
270
|
```javascript
|
|
271
271
|
table.addEventListener('click', (e) => {
|
|
@@ -279,7 +279,7 @@ table.addEventListener('click', (e) => {
|
|
|
279
279
|
});
|
|
280
280
|
```
|
|
281
281
|
|
|
282
|
-
### Delete
|
|
282
|
+
### Delete event
|
|
283
283
|
|
|
284
284
|
```javascript
|
|
285
285
|
table.addEventListener('delete', (e) => {
|
|
@@ -287,7 +287,7 @@ table.addEventListener('delete', (e) => {
|
|
|
287
287
|
});
|
|
288
288
|
```
|
|
289
289
|
|
|
290
|
-
### Scroll
|
|
290
|
+
### Scroll events
|
|
291
291
|
|
|
292
292
|
```javascript
|
|
293
293
|
table.addEventListener('scroll', (e) => {
|
|
@@ -314,9 +314,9 @@ const table = Ti.UI.createTableView({
|
|
|
314
314
|
});
|
|
315
315
|
```
|
|
316
316
|
|
|
317
|
-
## 12. Updating
|
|
317
|
+
## 12. Updating table data
|
|
318
318
|
|
|
319
|
-
###
|
|
319
|
+
### Append rows
|
|
320
320
|
|
|
321
321
|
```javascript
|
|
322
322
|
table.appendRow({ title: 'New Row' });
|
|
@@ -328,14 +328,14 @@ table.appendRow([
|
|
|
328
328
|
]);
|
|
329
329
|
```
|
|
330
330
|
|
|
331
|
-
###
|
|
331
|
+
### Insert rows
|
|
332
332
|
|
|
333
333
|
```javascript
|
|
334
334
|
table.insertRowBefore(2, { title: 'Inserted at index 2' });
|
|
335
335
|
table.insertRowAfter(5, { title: 'Inserted after index 5' });
|
|
336
336
|
```
|
|
337
337
|
|
|
338
|
-
###
|
|
338
|
+
### Delete rows
|
|
339
339
|
|
|
340
340
|
```javascript
|
|
341
341
|
table.deleteRow(3); // Delete row at index 3
|
|
@@ -346,7 +346,7 @@ table.setData([]);
|
|
|
346
346
|
// Use table.setData([]) or table.data = [] to clear
|
|
347
347
|
```
|
|
348
348
|
|
|
349
|
-
###
|
|
349
|
+
### Update a specific row
|
|
350
350
|
|
|
351
351
|
```javascript
|
|
352
352
|
const data = table.data;
|
|
@@ -354,9 +354,9 @@ data[2].title = 'Updated Title';
|
|
|
354
354
|
table.setData(data);
|
|
355
355
|
```
|
|
356
356
|
|
|
357
|
-
## 13. TableView
|
|
357
|
+
## 13. TableView sections
|
|
358
358
|
|
|
359
|
-
###
|
|
359
|
+
### Create sections
|
|
360
360
|
|
|
361
361
|
```javascript
|
|
362
362
|
const section1 = Ti.UI.createTableViewSection({
|
|
@@ -378,7 +378,7 @@ const table = Ti.UI.createTableView({
|
|
|
378
378
|
});
|
|
379
379
|
```
|
|
380
380
|
|
|
381
|
-
### Custom
|
|
381
|
+
### Custom section headers
|
|
382
382
|
|
|
383
383
|
```javascript
|
|
384
384
|
const section = Ti.UI.createTableViewSection({
|
|
@@ -386,7 +386,7 @@ const section = Ti.UI.createTableViewSection({
|
|
|
386
386
|
});
|
|
387
387
|
```
|
|
388
388
|
|
|
389
|
-
## 14. Performance
|
|
389
|
+
## 14. Performance optimization
|
|
390
390
|
|
|
391
391
|
### Use className
|
|
392
392
|
|
|
@@ -404,26 +404,26 @@ const row2 = Ti.UI.createTableViewRow({
|
|
|
404
404
|
});
|
|
405
405
|
```
|
|
406
406
|
|
|
407
|
-
`className`
|
|
407
|
+
`className` lets the OS reuse scrolled-out rows for faster rendering.
|
|
408
408
|
|
|
409
|
-
### Avoid
|
|
409
|
+
### Avoid too many rows
|
|
410
410
|
|
|
411
411
|
If you have thousands of rows, consider:
|
|
412
412
|
- Pagination
|
|
413
413
|
- ListView instead
|
|
414
|
-
- Filtering
|
|
414
|
+
- Filtering
|
|
415
415
|
- Drill-down interface
|
|
416
416
|
|
|
417
|
-
### Optimize
|
|
417
|
+
### Optimize custom rows
|
|
418
418
|
|
|
419
419
|
- Test on device
|
|
420
420
|
- Use simple layouts
|
|
421
421
|
- Minimize child views per row
|
|
422
422
|
- Avoid nested ScrollViews
|
|
423
423
|
|
|
424
|
-
## 15. Common
|
|
424
|
+
## 15. Common patterns
|
|
425
425
|
|
|
426
|
-
### Detail
|
|
426
|
+
### Detail view navigation
|
|
427
427
|
|
|
428
428
|
```javascript
|
|
429
429
|
table.addEventListener('click', (e) => {
|
|
@@ -441,12 +441,12 @@ table.addEventListener('click', (e) => {
|
|
|
441
441
|
});
|
|
442
442
|
```
|
|
443
443
|
|
|
444
|
-
### Row
|
|
444
|
+
### Row actions (swipe to delete)
|
|
445
445
|
|
|
446
446
|
```javascript
|
|
447
447
|
table.setEditable(true);
|
|
448
448
|
|
|
449
|
-
table.addEventListener('delete', (
|
|
449
|
+
table.addEventListener('delete', () => {
|
|
450
450
|
// Confirm deletion
|
|
451
451
|
const dialog = Ti.UI.createAlertDialog({
|
|
452
452
|
title: 'Delete',
|
|
@@ -465,7 +465,7 @@ table.addEventListener('delete', (e) => {
|
|
|
465
465
|
});
|
|
466
466
|
```
|
|
467
467
|
|
|
468
|
-
### Refresh
|
|
468
|
+
### Refresh control
|
|
469
469
|
|
|
470
470
|
```javascript
|
|
471
471
|
const table = Ti.UI.createTableView({
|
|
@@ -482,7 +482,7 @@ table.refreshControl.addEventListener('refreshstart', () => {
|
|
|
482
482
|
});
|
|
483
483
|
```
|
|
484
484
|
|
|
485
|
-
## 16. Platform
|
|
485
|
+
## 16. Platform differences
|
|
486
486
|
|
|
487
487
|
### iOS
|
|
488
488
|
- Supports `GROUPED` style
|
|
@@ -500,7 +500,7 @@ table.refreshControl.addEventListener('refreshstart', () => {
|
|
|
500
500
|
|
|
501
501
|
When to migrate:
|
|
502
502
|
- New app development
|
|
503
|
-
- Large datasets (
|
|
503
|
+
- Large datasets (more than 100 rows)
|
|
504
504
|
- Performance issues
|
|
505
505
|
- Need modern features (templates, binding)
|
|
506
506
|
|
|
@@ -508,11 +508,11 @@ Key differences:
|
|
|
508
508
|
- TableView: `data` property with row objects
|
|
509
509
|
- ListView: `sections` property with templates
|
|
510
510
|
|
|
511
|
-
## Best
|
|
511
|
+
## Best practices
|
|
512
512
|
|
|
513
|
-
1.
|
|
514
|
-
2.
|
|
515
|
-
3.
|
|
516
|
-
4.
|
|
517
|
-
5.
|
|
518
|
-
6.
|
|
513
|
+
1. Use ListView for new apps - better performance and features
|
|
514
|
+
2. Use className to enable row reuse
|
|
515
|
+
3. Batch updates with `setData()` instead of many `appendRow()` calls
|
|
516
|
+
4. Test on device; simulator performance differs
|
|
517
|
+
5. Limit row complexity; fewer children means better scrolling
|
|
518
|
+
6. Consider pagination; avoid showing thousands of rows at once
|