@@ -367,10 +367,14 @@ defmodule Phoenix.HTML.Form do
367
367
"""
368
368
@ spec input_id ( t | atom , field ) :: String . t ( )
369
369
def input_id ( % { id: nil } , _field ) , do: nil
370
- def input_id ( % { id: id } , field ) when is_atom ( field ) or is_binary ( field ) , do: "#{ id } _#{ field } "
371
370
372
- def input_id ( name , field ) when ( is_atom ( name ) and is_atom ( field ) ) or is_binary ( field ) ,
373
- do: "#{ name } _#{ field } "
371
+ def input_id ( % { id: id } , field ) when is_atom ( field ) or is_binary ( field ) do
372
+ "#{ id } _#{ field } "
373
+ end
374
+
375
+ def input_id ( name , field ) when ( is_atom ( name ) and is_atom ( field ) ) or is_binary ( field ) do
376
+ "#{ name } _#{ field } "
377
+ end
374
378
375
379
@ doc """
376
380
Returns an id of a corresponding form field and value attached to it.
@@ -1263,7 +1267,7 @@ defmodule Phoenix.HTML.Form do
1263
1267
"""
1264
1268
def date_select ( form , field , opts \\ [ ] ) do
1265
1269
value = Keyword . get ( opts , :value , input_value ( form , field ) || Keyword . get ( opts , :default ) )
1266
- builder = Keyword . get ( opts , :builder ) || & date_builder ( & 1 , opts )
1270
+ builder = Keyword . get ( opts , :builder ) || ( & date_builder ( & 1 , opts ) )
1267
1271
builder . ( datetime_builder ( form , field , date_value ( value ) , nil , opts ) )
1268
1272
end
1269
1273
@@ -1290,7 +1294,7 @@ defmodule Phoenix.HTML.Form do
1290
1294
"""
1291
1295
def time_select ( form , field , opts \\ [ ] ) do
1292
1296
value = Keyword . get ( opts , :value , input_value ( form , field ) || Keyword . get ( opts , :default ) )
1293
- builder = Keyword . get ( opts , :builder ) || & time_builder ( & 1 , opts )
1297
+ builder = Keyword . get ( opts , :builder ) || ( & time_builder ( & 1 , opts ) )
1294
1298
builder . ( datetime_builder ( form , field , nil , time_value ( value ) , opts ) )
1295
1299
end
1296
1300
@@ -1401,6 +1405,34 @@ defmodule Phoenix.HTML.Form do
1401
1405
@ doc """
1402
1406
Generates a label tag.
1403
1407
1408
+ Useful when wrapping another input inside a label.
1409
+
1410
+ ## Examples
1411
+
1412
+ label do
1413
+ radio_button :user, :choice, "Choice"
1414
+ end
1415
+ #=> <label class="control-label">...</label>
1416
+
1417
+ label class: "control-label" do
1418
+ radio_button :user, :choice, "Choice"
1419
+ end
1420
+ #=> <label class="control-label">...</label>
1421
+
1422
+ """
1423
+ def label ( do_block )
1424
+
1425
+ def label ( do: block ) do
1426
+ content_tag ( :label , block , [ ] )
1427
+ end
1428
+
1429
+ def label ( opts , do: block ) when is_list ( opts ) do
1430
+ content_tag ( :label , block , opts )
1431
+ end
1432
+
1433
+ @ doc """
1434
+ Generates a label tag for the given field.
1435
+
1404
1436
The form should either be a `Phoenix.HTML.Form` emitted
1405
1437
by `form_for` or an atom.
1406
1438
@@ -1409,6 +1441,8 @@ defmodule Phoenix.HTML.Form do
1409
1441
be overriden if you pass a value to the `for` option.
1410
1442
Text content would be inferred from `field` if not specified.
1411
1443
1444
+ To wrap a label around an input, see `label/1`.
1445
+
1412
1446
## Examples
1413
1447
1414
1448
# Assuming form contains a User schema
@@ -1433,14 +1467,17 @@ defmodule Phoenix.HTML.Form do
1433
1467
"E-mail Address"
1434
1468
end
1435
1469
#=> <label class="control-label" for="user_email">E-mail Address</label>
1470
+
1436
1471
"""
1437
- def label ( form , field ) do
1472
+ def label ( form , field ) when is_atom ( field ) or is_binary ( field ) do
1438
1473
label ( form , field , humanize ( field ) , [ ] )
1439
1474
end
1440
1475
1441
1476
@ doc """
1442
1477
See `label/2`.
1443
1478
"""
1479
+ def label ( form , field , text_or_do_block_or_attributes )
1480
+
1444
1481
def label ( form , field , text ) when is_binary ( text ) do
1445
1482
label ( form , field , text , [ ] )
1446
1483
end
@@ -1456,14 +1493,16 @@ defmodule Phoenix.HTML.Form do
1456
1493
@ doc """
1457
1494
See `label/2`.
1458
1495
"""
1496
+ def label ( form , field , text , do_block_or_attributes )
1497
+
1459
1498
def label ( form , field , text , opts ) when is_binary ( text ) and is_list ( opts ) do
1460
1499
opts = Keyword . put_new ( opts , :for , input_id ( form , field ) )
1461
1500
content_tag ( :label , text , opts )
1462
1501
end
1463
1502
1464
- def label ( form , field , opts , do: block ) do
1503
+ def label ( form , field , opts , do: block ) when is_list ( opts ) do
1465
1504
opts = Keyword . put_new ( opts , :for , input_id ( form , field ) )
1466
- content_tag ( :label , opts , do: block )
1505
+ content_tag ( :label , block , opts )
1467
1506
end
1468
1507
1469
1508
# Normalize field name to string version
0 commit comments