@tamagui/core 1.2.2 → 1.2.4
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/dist/cjs/createComponent.js +21 -19
- package/dist/cjs/createComponent.js.map +2 -2
- package/dist/cjs/helpers/createPropMapper.js +44 -32
- package/dist/cjs/helpers/createPropMapper.js.map +3 -3
- package/dist/esm/createComponent.js +21 -19
- package/dist/esm/createComponent.js.map +2 -2
- package/dist/esm/helpers/createPropMapper.js +44 -32
- package/dist/esm/helpers/createPropMapper.js.map +3 -3
- package/package.json +11 -11
- package/src/createComponent.tsx +34 -29
- package/src/helpers/createPropMapper.ts +51 -33
- package/types/createComponent.d.ts.map +1 -1
package/src/createComponent.tsx
CHANGED
|
@@ -497,7 +497,9 @@ export function createComponent<
|
|
|
497
497
|
} as any)
|
|
498
498
|
}
|
|
499
499
|
|
|
500
|
-
|
|
500
|
+
// TODO move into getSplitStyles inital `if (process.env.TAMAGUI_TARGET === 'web')` block
|
|
501
|
+
|
|
502
|
+
if (viewProps.href !== undefined && hrefAttrs !== undefined) {
|
|
501
503
|
const { download, rel, target } = hrefAttrs
|
|
502
504
|
if (download != null) {
|
|
503
505
|
viewProps.download = download
|
|
@@ -512,39 +514,42 @@ export function createComponent<
|
|
|
512
514
|
|
|
513
515
|
// FOCUS
|
|
514
516
|
// "focusable" indicates that an element may be a keyboard tab-stop.
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
if (
|
|
521
|
-
// These native elements are focusable by default
|
|
522
|
-
elementType === 'a' ||
|
|
523
|
-
elementType === 'button' ||
|
|
524
|
-
elementType === 'input' ||
|
|
525
|
-
elementType === 'select' ||
|
|
526
|
-
elementType === 'textarea'
|
|
527
|
-
) {
|
|
528
|
-
if (_focusable === false || accessibilityDisabled === true) {
|
|
517
|
+
// ported from RNW: TODO move into getSplitStyles
|
|
518
|
+
if (!viewProps.tabIndex) {
|
|
519
|
+
const _focusable = focusable !== undefined ? focusable : accessible
|
|
520
|
+
const role = viewProps.role
|
|
521
|
+
if (_focusable === false) {
|
|
529
522
|
viewProps.tabIndex = '-1'
|
|
530
523
|
}
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
524
|
+
if (
|
|
525
|
+
// These native elements are focusable by default
|
|
526
|
+
elementType === 'a' ||
|
|
527
|
+
elementType === 'button' ||
|
|
528
|
+
elementType === 'input' ||
|
|
529
|
+
elementType === 'select' ||
|
|
530
|
+
elementType === 'textarea'
|
|
531
|
+
) {
|
|
532
|
+
if (_focusable === false || accessibilityDisabled === true) {
|
|
533
|
+
viewProps.tabIndex = '-1'
|
|
534
|
+
}
|
|
535
|
+
} else if (
|
|
536
|
+
// These roles are made focusable by default
|
|
537
|
+
role === 'button' ||
|
|
538
|
+
role === 'checkbox' ||
|
|
539
|
+
role === 'link' ||
|
|
540
|
+
role === 'radio' ||
|
|
541
|
+
role === 'textbox' ||
|
|
542
|
+
role === 'switch'
|
|
543
|
+
) {
|
|
544
|
+
if (_focusable !== false) {
|
|
545
|
+
viewProps.tabIndex = '0'
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
// Everything else must explicitly set the prop
|
|
549
|
+
if (_focusable === true) {
|
|
541
550
|
viewProps.tabIndex = '0'
|
|
542
551
|
}
|
|
543
552
|
}
|
|
544
|
-
// Everything else must explicitly set the prop
|
|
545
|
-
if (_focusable === true) {
|
|
546
|
-
viewProps.tabIndex = '0'
|
|
547
|
-
}
|
|
548
553
|
} else {
|
|
549
554
|
viewProps = nonTamaguiProps
|
|
550
555
|
}
|
|
@@ -286,37 +286,49 @@ const resolveTokensAndVariants: StyleResolver = (
|
|
|
286
286
|
const fKey = conf.shorthands[rKey] || rKey
|
|
287
287
|
const val = value[rKey]
|
|
288
288
|
|
|
289
|
-
if (
|
|
290
|
-
res[fKey] = !isWeb || returnVariablesAs === 'value' ? val.val : val.variable
|
|
291
|
-
} else if (variants[fKey]) {
|
|
289
|
+
if (fKey in variants) {
|
|
292
290
|
// avoids infinite loop if variant is matching a style prop
|
|
293
291
|
// eg: { variants: { flex: { true: { flex: 2 } } } }
|
|
294
|
-
if (parentVariantKey === key) {
|
|
292
|
+
if (parentVariantKey && parentVariantKey === key) {
|
|
295
293
|
res[fKey] = val
|
|
296
294
|
} else {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
languageContext,
|
|
313
|
-
avoidDefaultProps,
|
|
314
|
-
debug
|
|
315
|
-
)
|
|
316
|
-
)
|
|
295
|
+
const variantOut = resolveVariants(
|
|
296
|
+
fKey,
|
|
297
|
+
val,
|
|
298
|
+
props,
|
|
299
|
+
defaultProps,
|
|
300
|
+
theme,
|
|
301
|
+
variants,
|
|
302
|
+
fontFamily,
|
|
303
|
+
conf,
|
|
304
|
+
returnVariablesAs,
|
|
305
|
+
staticConfig,
|
|
306
|
+
key,
|
|
307
|
+
languageContext,
|
|
308
|
+
avoidDefaultProps,
|
|
309
|
+
debug
|
|
317
310
|
)
|
|
311
|
+
|
|
312
|
+
const { pressStyle, hoverStyle, focusStyle, enterStyle, exitStyle, ...rest } =
|
|
313
|
+
Object.fromEntries(variantOut)
|
|
314
|
+
const subs = { pressStyle, hoverStyle, focusStyle, enterStyle, exitStyle }
|
|
315
|
+
Object.assign(res, rest)
|
|
316
|
+
for (const key in subs) {
|
|
317
|
+
if (subs[key]) {
|
|
318
|
+
res[key] ??= {}
|
|
319
|
+
Object.assign(res[key], subs[key])
|
|
320
|
+
}
|
|
321
|
+
}
|
|
318
322
|
}
|
|
319
|
-
|
|
323
|
+
continue
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
if (isVariable(val)) {
|
|
327
|
+
res[fKey] = !isWeb || returnVariablesAs === 'value' ? val.val : val.variable
|
|
328
|
+
continue
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
if (typeof val === 'string') {
|
|
320
332
|
const fVal =
|
|
321
333
|
val[0] === '$'
|
|
322
334
|
? getToken(
|
|
@@ -331,10 +343,15 @@ const resolveTokensAndVariants: StyleResolver = (
|
|
|
331
343
|
)
|
|
332
344
|
: val
|
|
333
345
|
res[fKey] = fVal
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
346
|
+
continue
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
if (isObj(val)) {
|
|
350
|
+
// sub-objects: media queries, pseudos, shadowOffset
|
|
351
|
+
res[fKey] ??= {}
|
|
352
|
+
Object.assign(
|
|
353
|
+
res[fKey],
|
|
354
|
+
resolveTokensAndVariants(
|
|
338
355
|
fKey,
|
|
339
356
|
val,
|
|
340
357
|
props,
|
|
@@ -350,11 +367,12 @@ const resolveTokensAndVariants: StyleResolver = (
|
|
|
350
367
|
avoidDefaultProps,
|
|
351
368
|
debug
|
|
352
369
|
)
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
370
|
+
)
|
|
371
|
+
} else {
|
|
372
|
+
// nullish values cant be tokens, need no extra parsing
|
|
373
|
+
res[fKey] = val
|
|
357
374
|
}
|
|
375
|
+
|
|
358
376
|
if (process.env.NODE_ENV === 'development') {
|
|
359
377
|
if (debug) {
|
|
360
378
|
if (res[fKey]?.[0] === '$') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAeA,OAAO,KAWN,MAAM,OAAO,CAAA;AAkBd,OAAO,EACL,SAAS,EACT,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EAErB,cAAc,EAIf,MAAM,SAAS,CAAA;AAoBhB,eAAO,MAAM,qBAAqB,EAAE,qBAMnC,CAAA;AAeD,eAAO,MAAM,QAAQ,eAAsB,CAAA;AAkC3C,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,GAAG,EAAE,EACtC,GAAG,GAAG,cAAc,EACpB,SAAS,GAAG,KAAK,EAEjB,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,kBAAkB,EACpD,eAAe,CAAC,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAeA,OAAO,KAWN,MAAM,OAAO,CAAA;AAkBd,OAAO,EACL,SAAS,EACT,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EAErB,cAAc,EAIf,MAAM,SAAS,CAAA;AAoBhB,eAAO,MAAM,qBAAqB,EAAE,qBAMnC,CAAA;AAeD,eAAO,MAAM,QAAQ,eAAsB,CAAA;AAkC3C,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,GAAG,EAAE,EACtC,GAAG,GAAG,cAAc,EACpB,SAAS,GAAG,KAAK,EAEjB,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,kBAAkB,EACpD,eAAe,CAAC,EAAE,iBAAiB,4DAw3BpC;AAGD,eAAO,MAAM,QAAQ;YAAW;QAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAE;;CAEjD,CAAA;AAMD,eAAO,MAAM,MAAM,0DA8CjB,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAA;IACnC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,mBAiGxD"}
|