@@ -1,3 +1,10 @@
+0.40060 Wed Jun 24, 2015
+ Field validation can use Type::Tiny subclasses
+ Replace NoTabTests and EOLTests
+ switch from List::AllUtils+List::MoreUtils to List::Util (in core)
+ add render_elementx and renderx methods to allow setting attributes at render time
+ Warning if Date field is html5 and not ISO
+
0.40059 Thu Feb 25, 2015
Remove clear->item_id that snaked in via merge error
Pass subfield name to repeatable element wrapper
@@ -194,6 +194,7 @@ share/templates/wrapper/none.tt
share/templates/wrapper/simple.tt
share/templates/wrapper/wrap_label.tt
t/01app.t
+t/author-eol.t
t/basic.t
t/blocks/basic.t
t/blocks/block_list.t
@@ -288,7 +289,6 @@ t/moose/composed.t
t/moose/field_traits.t
t/moose/no_extend.t
t/moose/subclass_roles.t
-t/release-eol.t
t/release-no-tabs.t
t/render/actions.t
t/render/array.t
@@ -326,6 +326,7 @@ t/render/util.t
t/render/widget_loading.t
t/render/widget_tags.t
t/render/widgets.t
+t/render/with_class.t
t/render/withtt.t
t/repeatable/defaults.t
t/repeatable/empty.t
@@ -22,7 +22,8 @@
},
"develop" : {
"requires" : {
- "Test::More" : "0",
+ "Test::EOL" : "0",
+ "Test::More" : "0.88",
"Test::NoTabs" : "0"
}
},
@@ -38,7 +39,7 @@
"File::Spec" : "0",
"HTML::TreeBuilder" : "3.23",
"JSON" : "0",
- "List::AllUtils" : "0.07",
+ "List::Util" : "1.33",
"Locale::Maketext" : "1.09",
"Moose" : "2.0007",
"MooseX::Getopt" : "0.16",
@@ -58,7 +59,8 @@
"Test::Differences" : "0",
"Test::Exception" : "0",
"Test::Memory::Cycle" : "1.04",
- "Test::More" : "0.94"
+ "Test::More" : "0.94",
+ "Test::Warn" : "0"
}
}
},
@@ -73,6 +75,6 @@
"web" : "http://github.com/gshank/html-formhandler"
}
},
- "version" : "0.40059"
+ "version" : "0.40060"
}
@@ -8,6 +8,7 @@ build_requires:
Test::Exception: 0
Test::Memory::Cycle: 1.04
Test::More: 0.94
+ Test::Warn: 0
configure_requires:
ExtUtils::MakeMaker: 6.30
File::ShareDir::Install: 0.03
@@ -29,7 +30,7 @@ requires:
File::Spec: 0
HTML::TreeBuilder: 3.23
JSON: 0
- List::AllUtils: 0.07
+ List::Util: 1.33
Locale::Maketext: 1.09
Moose: 2.0007
MooseX::Getopt: 0.16
@@ -44,4 +45,4 @@ requires:
resources:
bugtracker: http://github.com/gshank/html-formhandler/issues
repository: git://github.com/gshank/html-formhandler.git
-version: 0.40059
+version: 0.40060
@@ -33,7 +33,7 @@ my %WriteMakefileArgs = (
"File::Spec" => 0,
"HTML::TreeBuilder" => "3.23",
"JSON" => 0,
- "List::AllUtils" => "0.07",
+ "List::Util" => "1.33",
"Locale::Maketext" => "1.09",
"Moose" => "2.0007",
"MooseX::Getopt" => "0.16",
@@ -51,9 +51,10 @@ my %WriteMakefileArgs = (
"Test::Differences" => 0,
"Test::Exception" => 0,
"Test::Memory::Cycle" => "1.04",
- "Test::More" => "0.94"
+ "Test::More" => "0.94",
+ "Test::Warn" => 0
},
- "VERSION" => "0.40059",
+ "VERSION" => "0.40060",
"test" => {
"TESTS" => "t/*.t t/blocks/*.t t/bootstrap/*.t t/bootstrap3/*.t t/compound/*.t t/errors/*.t t/field_setup/*.t t/fields/*.t t/form_setup/*.t t/infl_defl/*.t t/moose/*.t t/render/*.t t/repeatable/*.t t/result/*.t t/validation/*.t t/wizard/*.t"
}
@@ -71,7 +72,7 @@ my %FallbackPrereqs = (
"File::Spec" => 0,
"HTML::TreeBuilder" => "3.23",
"JSON" => 0,
- "List::AllUtils" => "0.07",
+ "List::Util" => "1.33",
"Locale::Maketext" => "1.09",
"Moose" => "2.0007",
"MooseX::Getopt" => "0.16",
@@ -85,6 +86,7 @@ my %FallbackPrereqs = (
"Test::Exception" => 0,
"Test::Memory::Cycle" => "1.04",
"Test::More" => "0.94",
+ "Test::Warn" => 0,
"Try::Tiny" => 0,
"aliased" => 0,
"namespace::autoclean" => "0.09"
@@ -1,7 +1,7 @@
This archive contains the distribution HTML-FormHandler,
-version 0.40059:
+version 0.40060:
HTML forms using Moose
@@ -14,169 +14,169 @@ not run its Makefile.PL or Build.PL.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
-SHA1 9bfe534236ac4dc4c532337c0718e912171e979c Changes
+SHA1 1e191898a4146acc90f7d363d5b42710676773b4 Changes
SHA1 2972c49b6d6e4d8bcc3360a734ee629ac16c6d8c INSTALL
SHA1 b371bb7c182cf84dcc932ebdf50da8c1b810da89 LICENSE
-SHA1 9ffab4201429950f1d95f749118edf6260a284a9 MANIFEST
-SHA1 4811d19fad701537aaa02987d6fc0c3ae22e66e2 META.json
-SHA1 0249304205c09a0b37df2da346d555df82aa7c04 META.yml
-SHA1 a82f8d97b8a63df0448093143c84a45b65c384ef Makefile.PL
-SHA1 42b8bd473c09523064f295250a52caf63b94db8d README
+SHA1 056f546a599d3b66e2624a31ec85174ebc5dfdd8 MANIFEST
+SHA1 f54f5ec4ad0719959616cc3bb59efd280e55e55b META.json
+SHA1 714a537e57cce6e1ff68d507b7cba231f70f2819 META.yml
+SHA1 d9a7a51244f3773d3e265037fc2b68a2d0445f65 Makefile.PL
+SHA1 07df3f2d31e693a967ee804176d021145c9cc5de README
SHA1 d764cc72a4d6465a03e8d04bdbf58096068c619d TODO
-SHA1 61a758355e956ba154e689bf83629ca5b4df9e05 dist.ini
-SHA1 88b0a0eeaf18e1fa19aa2c46d98a8e9e0e06e933 lib/HTML/FormHandler.pm
-SHA1 b15ace8a93bafdb5e37cde679397432cc4a93bbd lib/HTML/FormHandler/Base.pm
-SHA1 de2836871349f66b06107026567c63046b0c1051 lib/HTML/FormHandler/Blocks.pm
-SHA1 228a549b811976b567d068f985f6c7298a91bed0 lib/HTML/FormHandler/BuildFields.pm
-SHA1 8adc3f5c43045248e4fe86799902e7d22e054571 lib/HTML/FormHandler/BuildPages.pm
-SHA1 9b1e0cebdd26611fc7358885ea3595ee755a0812 lib/HTML/FormHandler/Field.pm
-SHA1 0a8a6eaf82fb0ce0a3765df6eff7e75aacaa422c lib/HTML/FormHandler/Field/AddElement.pm
-SHA1 454c79e3bb2ff2276c0f9e0170b5e2b68b8d8ca9 lib/HTML/FormHandler/Field/BoolSelect.pm
-SHA1 a74d701daf732ee8e286c42e9e957afcb458a3cc lib/HTML/FormHandler/Field/Boolean.pm
-SHA1 e08a9763daba96027aa58cd6395040218809fe35 lib/HTML/FormHandler/Field/Button.pm
-SHA1 164ee0dc859e6e09864e19e08de3ddfaf34872c2 lib/HTML/FormHandler/Field/Captcha.pm
-SHA1 9a1b828df83f87e7a19eb4f2e0c5187224bf69a0 lib/HTML/FormHandler/Field/Checkbox.pm
-SHA1 8af098be42225660204f630205331d73a17ee194 lib/HTML/FormHandler/Field/Compound.pm
-SHA1 643b8bc2af1086a89e75556c475660e9040fc4bb lib/HTML/FormHandler/Field/Date.pm
-SHA1 da602ee61f0d6fd03d40d5b5cafff36856ec41e6 lib/HTML/FormHandler/Field/DateMDY.pm
-SHA1 6d4fe1ed3c45365bb8d776f43e94753e63b7b86c lib/HTML/FormHandler/Field/DateTime.pm
-SHA1 cce028a9c1a5be70ce623af9bf18dd8dc6b795fc lib/HTML/FormHandler/Field/Display.pm
-SHA1 2b0720934459a22646bda528a90624ef1b23d527 lib/HTML/FormHandler/Field/Duration.pm
-SHA1 b8681974b8fc568ffdb907e5571ba03e7c4a0f76 lib/HTML/FormHandler/Field/Email.pm
-SHA1 efa16e26f8553be1b06ff482b1262a46949fd223 lib/HTML/FormHandler/Field/File.pm
-SHA1 ec7bfdd221786943eae0ee087678ccfd4e999010 lib/HTML/FormHandler/Field/Float.pm
-SHA1 f912bece264478d3f7a939ff73ba3e922b0d5d8d lib/HTML/FormHandler/Field/Hidden.pm
-SHA1 d42d37834890233f9aa393ba0f20c16a5cc4fb5a lib/HTML/FormHandler/Field/Hour.pm
-SHA1 52c01c7da570ac088db64ea2a8443b4ce9f8fbfb lib/HTML/FormHandler/Field/IntRange.pm
-SHA1 39c003a3212ca7abaa31a729de9156e0377d9cf6 lib/HTML/FormHandler/Field/Integer.pm
-SHA1 6a1b3469b7df06ef68c4ea310bd3f1db8f2f3990 lib/HTML/FormHandler/Field/Minute.pm
-SHA1 ff2b59b4092c0d1ec067d246d5b15f2103d405a7 lib/HTML/FormHandler/Field/Money.pm
-SHA1 8d3c84d79662a46242ba10d5c2f20d8ca7af16e8 lib/HTML/FormHandler/Field/Month.pm
-SHA1 fbb2f3e7eca2d625ef0b6336c62d0ce825cd644e lib/HTML/FormHandler/Field/MonthDay.pm
-SHA1 a44b8f4e8f99d51dfa400c8c9d6e5026f163754a lib/HTML/FormHandler/Field/MonthName.pm
-SHA1 4ed876b4f01ec88b3671a798dc46b6fad597e11e lib/HTML/FormHandler/Field/Multiple.pm
-SHA1 8fb7df8b436c64e347cd9455fb0df38fddd9ecd1 lib/HTML/FormHandler/Field/Nested.pm
-SHA1 34c55106f0ac7286a04ecffbbae58ddbb8b10c52 lib/HTML/FormHandler/Field/NoValue.pm
-SHA1 810aea4fbffd5252cf203bb6c18793324d642323 lib/HTML/FormHandler/Field/NonEditable.pm
-SHA1 55c45a0768a88b6465d6f04cb2e65f3f55119a34 lib/HTML/FormHandler/Field/Password.pm
-SHA1 0d053e0357fc3816a4dfcc379a08c94ae7f3352e lib/HTML/FormHandler/Field/PasswordConf.pm
-SHA1 073dfb43bfa0e254cb4166ed6a72b5b18a5b8ab9 lib/HTML/FormHandler/Field/PosInteger.pm
-SHA1 0beba368569ddf51f1144e4dc02c5c00b41fef93 lib/HTML/FormHandler/Field/PrimaryKey.pm
-SHA1 556540c3788dbd5d8f293b1add0111ce0fbe1ad7 lib/HTML/FormHandler/Field/Repeatable.pm
-SHA1 afa7ab54b48d102eed96374798b6b948b37e80f3 lib/HTML/FormHandler/Field/Repeatable/Instance.pm
-SHA1 713986aa3ce4b858ad60d7dab58b7554ce8cc029 lib/HTML/FormHandler/Field/Reset.pm
-SHA1 f250aa7d27fd39393defd0bd3bf232357e00d6be lib/HTML/FormHandler/Field/Result.pm
-SHA1 ccf22e5513f4584b3bd92a31e8284f26a752e0ad lib/HTML/FormHandler/Field/RmElement.pm
-SHA1 93799675f116a458a5ffd2cbe69319bae4f6498f lib/HTML/FormHandler/Field/Second.pm
-SHA1 1731f7ba8cbab4a17539ca2addcc2f469a34e089 lib/HTML/FormHandler/Field/Select.pm
-SHA1 a8718a24603b4d3c00425ba64a5efae3c8832817 lib/HTML/FormHandler/Field/SelectCSV.pm
-SHA1 8e3b912b39d8abec5f07c4d6c7906cca053edb3c lib/HTML/FormHandler/Field/Submit.pm
-SHA1 7e4a139c1b1bb3b4998231c1832ba50240bb7eb5 lib/HTML/FormHandler/Field/Text.pm
-SHA1 0c86dd283205003885bde03a1e8a04fff54975df lib/HTML/FormHandler/Field/TextArea.pm
-SHA1 712576a080e4c390fe2fbc979d2c32f94f4eb3a6 lib/HTML/FormHandler/Field/TextCSV.pm
-SHA1 9990b119db27bdd553ebdb1bf8deec3086db8b5b lib/HTML/FormHandler/Field/Upload.pm
-SHA1 e7caff6d6c1433fa806df72efa41581519c9855e lib/HTML/FormHandler/Field/Weekday.pm
-SHA1 357ce932238b0232184c0da6ee46cdd16bc944d2 lib/HTML/FormHandler/Field/Year.pm
-SHA1 83f4a774c327f81199834f6c8d194fa24d6e8254 lib/HTML/FormHandler/Fields.pm
-SHA1 c4224ada3d5b77a64a2b3d137e298015917f277b lib/HTML/FormHandler/Foo.pm
-SHA1 f11ad1d1b8d4ecd665fac8f99ec44dcdd88eb1fc lib/HTML/FormHandler/I18N.pm
-SHA1 8677ec5c41da041e8a4971043f64cef06557b678 lib/HTML/FormHandler/I18N/ar_kw.pm
-SHA1 75fd2afdebd4caa389f2c3ac95f0958bca658d28 lib/HTML/FormHandler/I18N/bg_bg.pm
-SHA1 38aab8444d1a19faece031a733021fac8c7e6867 lib/HTML/FormHandler/I18N/cs_cz.pm
-SHA1 c908aae51a9a65e75a3260b931f01eb62d206e60 lib/HTML/FormHandler/I18N/de_de.pm
-SHA1 4d6dfec119a1c729ec3ec08b11e4587b18451fdb lib/HTML/FormHandler/I18N/en_us.pm
-SHA1 8ba08b94c46450ee7730e626bf2c38dee5ddfe6e lib/HTML/FormHandler/I18N/hu_hu.pm
-SHA1 e6e4bc9d6f02a5c1f54286b6f499e98d2374e3ab lib/HTML/FormHandler/I18N/it_it.pm
-SHA1 4da37c0ac610bbe02c86803232055bb19a6b7a33 lib/HTML/FormHandler/I18N/ja_jp.pm
-SHA1 2f61b66ff15225795a91c8b2427e5c7bf9317767 lib/HTML/FormHandler/I18N/pt_br.pm
-SHA1 46057f917839e639c92f4fa9a18659101989e25a lib/HTML/FormHandler/I18N/ru_ru.pm
-SHA1 8e603a8b341f4f21094ae9fbe14c45570256f248 lib/HTML/FormHandler/I18N/sv_se.pm
-SHA1 a6b82e30b69d59490421d3027aba51a1f0f95306 lib/HTML/FormHandler/I18N/tr_tr.pm
-SHA1 c9aeaa4595919a965aca11e247f13fa082c80b6f lib/HTML/FormHandler/I18N/ua_ua.pm
-SHA1 8fcd80ef89bd9ccc641a0651c1a1b884d4426068 lib/HTML/FormHandler/InitResult.pm
-SHA1 3e2e3ae6c1d35cc15de241b2f61628a7f35bfb1b lib/HTML/FormHandler/Manual.pod
-SHA1 6cd177d32b2f31c8927e3a49460c48bd73e12968 lib/HTML/FormHandler/Manual/Catalyst.pod
-SHA1 8d1ef6fe384917b1bbb8dcbf580f738ba6135a60 lib/HTML/FormHandler/Manual/Cookbook.pod
-SHA1 c88b75d8f28369fbfa6b771d2209af98a024d8a4 lib/HTML/FormHandler/Manual/Database.pod
-SHA1 f830618bef0b6ae48c363a3413e34980f7f959f7 lib/HTML/FormHandler/Manual/Defaults.pod
-SHA1 7cf51e09e15963ef6475ece56e04c43e60832500 lib/HTML/FormHandler/Manual/Errors.pod
-SHA1 3c9a3abb5ab9cb8fadb16a5e9e223560fb813ddb lib/HTML/FormHandler/Manual/Fields.pod
-SHA1 bda9d6bf546ddb6d6239b47fd535d622896da24c lib/HTML/FormHandler/Manual/FromDFV.pod
-SHA1 c0633b30e2523d4aa67f0b2e9bc4b01cb1a67ae5 lib/HTML/FormHandler/Manual/FromFF.pod
-SHA1 0af1fdff8df3b17424116284955dd6f478f9e7c2 lib/HTML/FormHandler/Manual/InflationDeflation.pod
-SHA1 7b84f26ef32ed9ea53a561b59d508898284eb5b6 lib/HTML/FormHandler/Manual/Intro.pod
-SHA1 5c0a4576d6c8cba619a094ca5c047dd8a238d884 lib/HTML/FormHandler/Manual/Reference.pod
-SHA1 3387e02d0f8a70c2733040260337338630b1944f lib/HTML/FormHandler/Manual/Rendering.pod
-SHA1 d896ba8651623de04e01d3f60fc83bb974e579c3 lib/HTML/FormHandler/Manual/RenderingCookbook.pod
-SHA1 5e075c2d086b6876e01ac2312888a91745b69004 lib/HTML/FormHandler/Manual/Templates.pod
-SHA1 34a295e29171d4752695d6b20736880778bab0ca lib/HTML/FormHandler/Manual/Testing.pod
-SHA1 3abbeab3aacaf22e6c5326ee14b824e53d0cf282 lib/HTML/FormHandler/Manual/Tutorial.pod
-SHA1 9541fd26a4b73365d604b318527ce878d7cf7245 lib/HTML/FormHandler/Manual/Validation.pod
-SHA1 08c568e1b1cde1922102f4b4b54eeb1d174e93d0 lib/HTML/FormHandler/Merge.pm
-SHA1 b99d4d1cbc13cad2471dec6a1270765f49209b2b lib/HTML/FormHandler/Meta/Role.pm
-SHA1 34368969b70681e1b88b9550758915fecda4996b lib/HTML/FormHandler/Model.pm
-SHA1 7ea6b16e99693d9963786e99b867dd7f3f8c5021 lib/HTML/FormHandler/Model/CDBI.pm
-SHA1 f166939f95e7f086c90b9ce293038e6242136798 lib/HTML/FormHandler/Model/Object.pm
-SHA1 f99650964a701fae0d01ac33927ea02b15d783b3 lib/HTML/FormHandler/Moose.pm
-SHA1 2c8f765917d796934a1f392ccc7d4c09679a3fb1 lib/HTML/FormHandler/Moose/Role.pm
-SHA1 a6e0f789e16c40974d0685c08ecd2a4912c35e33 lib/HTML/FormHandler/Page.pm
-SHA1 edd292e891173ad4f6501904ba327f9a4dfda648 lib/HTML/FormHandler/Page/Simple.pm
-SHA1 08970b06435be4effb8ecdb0529b3fbc00d13b35 lib/HTML/FormHandler/Pages.pm
-SHA1 534f997e4285d60e04276416b704ed60cc7a1ea4 lib/HTML/FormHandler/Params.pm
-SHA1 9a794a8428fb867ffc0487be53e634dd1d967b39 lib/HTML/FormHandler/Render/RepeatableJs.pm
-SHA1 6fce2039a1483d3c582a712218328039c87d3fc2 lib/HTML/FormHandler/Render/Simple.pm
-SHA1 392731ff9848f539ab3768e7253964127f085d5d lib/HTML/FormHandler/Render/Table.pm
-SHA1 0f1261885eda19f814bbfc1b859cec953140b086 lib/HTML/FormHandler/Render/Util.pm
-SHA1 04ee2388d2ab48116e3d09eee2d1ee1206d5bb75 lib/HTML/FormHandler/Render/WithTT.pm
-SHA1 6a95a8134ca98f103c3b23127d38b2d6a3de85de lib/HTML/FormHandler/Result.pm
-SHA1 2d773e7768e481b4b61b9762e0fd1bd08e35f142 lib/HTML/FormHandler/Result/Role.pm
-SHA1 eab7819ee7eb6ddb9a49bea842b415dae6f0575f lib/HTML/FormHandler/Test.pm
-SHA1 956f64c94567403805f7496f310bfe669622df6f lib/HTML/FormHandler/TraitFor/Captcha.pm
-SHA1 4593c6b469ad2e82c0560d0e7adcfc2bbafaa085 lib/HTML/FormHandler/TraitFor/I18N.pm
-SHA1 bbb94604f6ee74781cd625dbecb84c6ebeb1026c lib/HTML/FormHandler/TraitFor/Types.pm
-SHA1 e6c205b0cb96d1ebba89e3e6a24c2fddf4e201ed lib/HTML/FormHandler/Traits.pm
-SHA1 347e8a9756cda7857f85892d2e708d71234289ae lib/HTML/FormHandler/Types.pm
-SHA1 42fc15bfd47b9bb81cca4fa8b23dcb09e1b77a77 lib/HTML/FormHandler/Validate.pm
-SHA1 1d7e420308934a316a1f3fdf3120cf72ce6b0b4b lib/HTML/FormHandler/Widget/ApplyRole.pm
-SHA1 e90685054d1d409489d376e2d61a2c4d84b4bedc lib/HTML/FormHandler/Widget/Block.pm
-SHA1 5fd35d3b3d6427a24e852eadb5f24091bda73ac4 lib/HTML/FormHandler/Widget/Block/Bootstrap.pm
-SHA1 1f2958e9ef9abc9e4ef39a3b2fa8ca081359e858 lib/HTML/FormHandler/Widget/Field/Button.pm
-SHA1 9e1a13227d7c384aaed98a02cc8b9b3741eb927b lib/HTML/FormHandler/Widget/Field/ButtonTag.pm
-SHA1 25c5d068ded2160e9f86ccef3c37054434fed4bf lib/HTML/FormHandler/Widget/Field/Captcha.pm
-SHA1 2860cdaf6d28820bddde440a2a53f43c223f99c3 lib/HTML/FormHandler/Widget/Field/Checkbox.pm
-SHA1 e8d698cd418e2e17b3e014797174e7ebcd567a6f lib/HTML/FormHandler/Widget/Field/CheckboxGroup.pm
-SHA1 f78b5b8d9a745cfa72c1b76d58aa72c174a030ef lib/HTML/FormHandler/Widget/Field/Compound.pm
-SHA1 09b3a825d2ec05427f5931998938cb57b9746d40 lib/HTML/FormHandler/Widget/Field/Hidden.pm
-SHA1 41efdf5c818aaf1535fc214e58a58ebf7c3b2749 lib/HTML/FormHandler/Widget/Field/HorizCheckboxGroup.pm
-SHA1 a3a50ad3979fbaebae3ad031a5a5c5313376e11b lib/HTML/FormHandler/Widget/Field/NoRender.pm
-SHA1 495bcd187eeb998077061152b870afab7a082b6f lib/HTML/FormHandler/Widget/Field/Password.pm
-SHA1 cbe4c4f0ac1791d4f0be0541eb1199d3f058fe1b lib/HTML/FormHandler/Widget/Field/RadioGroup.pm
-SHA1 6008329a97355bfbfd610d59612a3f848c4c8250 lib/HTML/FormHandler/Widget/Field/Repeatable.pm
-SHA1 baba4715644f32da565343df7c3ca1a14d211211 lib/HTML/FormHandler/Widget/Field/Reset.pm
-SHA1 f8792cd602127ff8e99b0dbde4931f20482c116e lib/HTML/FormHandler/Widget/Field/Role/HTMLAttributes.pm
-SHA1 5b3242ddb3116675f04b5cf24a0dba89a255da2a lib/HTML/FormHandler/Widget/Field/Role/SelectedOption.pm
-SHA1 139adbfebd0118213c553ea80cb619a0dbdccb47 lib/HTML/FormHandler/Widget/Field/Select.pm
-SHA1 dcd6893520a5ad7cf24ce055fbb63d72e4b8467f lib/HTML/FormHandler/Widget/Field/Span.pm
-SHA1 2c5d54c76f794d533b9210441718e885aa87f77e lib/HTML/FormHandler/Widget/Field/Submit.pm
-SHA1 1c73845225162d4b938b12fd7218ef8d9c671d78 lib/HTML/FormHandler/Widget/Field/Text.pm
-SHA1 a01435d0e9093bde9a3a05980aa93b204bcbb916 lib/HTML/FormHandler/Widget/Field/Textarea.pm
-SHA1 6e464c312429da6808f4af6d0aec4125e39c5282 lib/HTML/FormHandler/Widget/Field/Upload.pm
-SHA1 6486786af2cb1775a7628fa8b3fd6c509136690a lib/HTML/FormHandler/Widget/Form/Role/HTMLAttributes.pm
-SHA1 5c20093e40e3fc38130ff28c5bbd48e879b072a4 lib/HTML/FormHandler/Widget/Form/Simple.pm
-SHA1 14385388375eb12283e69c610fb1e029393801fe lib/HTML/FormHandler/Widget/Form/Table.pm
-SHA1 0ae86b08cb8ef9f3840a9dd1286d6ec987daa85f lib/HTML/FormHandler/Widget/Theme/Bootstrap.pm
-SHA1 b2955ba37584c61e0dcd77a26ea64c1347443c25 lib/HTML/FormHandler/Widget/Theme/Bootstrap3.pm
-SHA1 245b20f26b52e9d8a90e52b4046c0e8d0f9493de lib/HTML/FormHandler/Widget/Theme/BootstrapFormMessages.pm
-SHA1 75e6edd1d22ec0dd103e662853fb9d61453e4c98 lib/HTML/FormHandler/Widget/Wrapper/Base.pm
-SHA1 6f6dcd5cf2ed20f3917fd92d9cc7b3bd8e01c217 lib/HTML/FormHandler/Widget/Wrapper/Bootstrap.pm
-SHA1 a0152936ba4d8583619c87ca1b1ba9a8d598e03b lib/HTML/FormHandler/Widget/Wrapper/Bootstrap3.pm
-SHA1 5ec75b723dc4cfe55af17dff0eb43adab5421733 lib/HTML/FormHandler/Widget/Wrapper/Fieldset.pm
-SHA1 2c777db0b80b3908c0604b928dfcdf11593dc2b3 lib/HTML/FormHandler/Widget/Wrapper/None.pm
-SHA1 1d38905dce1b4567bf124153bfda9f07286b73e9 lib/HTML/FormHandler/Widget/Wrapper/Simple.pm
-SHA1 d1da4521056cc36fa518981c7037419bcc6e66f7 lib/HTML/FormHandler/Widget/Wrapper/SimpleInline.pm
-SHA1 a99ae8b39130ba2419ab9a4fd25a445132c8ef0f lib/HTML/FormHandler/Widget/Wrapper/Table.pm
-SHA1 b464b0fe44baf973dbaaedd5cbf33d7bdad7b12d lib/HTML/FormHandler/Widget/Wrapper/TableInline.pm
-SHA1 87119476fa02d3e3fdb88f70bfb354deb5aa70f9 lib/HTML/FormHandler/Wizard.pm
+SHA1 e34a97bbd642758786eb30768da1eee6b7818cc4 dist.ini
+SHA1 28485d004124ff470777791f645d64b334302e78 lib/HTML/FormHandler.pm
+SHA1 88c5b9122f9d8bf268b56453c1d758fda0b1b7b6 lib/HTML/FormHandler/Base.pm
+SHA1 ea5e7885619e4ce1e9fa26de1ee15dad6f7aa319 lib/HTML/FormHandler/Blocks.pm
+SHA1 9f1c0930a8ecba9423c5788655ef6be3ca534e1a lib/HTML/FormHandler/BuildFields.pm
+SHA1 0272f63bfdff3c39a22b9426fc4f1232165c5c51 lib/HTML/FormHandler/BuildPages.pm
+SHA1 ca547f3666851f78fdd1a15cc8eb2a6080df5065 lib/HTML/FormHandler/Field.pm
+SHA1 ca91cf43608f47e9db22c306ba732270036a0117 lib/HTML/FormHandler/Field/AddElement.pm
+SHA1 732071791eb010a1a4d30cf42a75e8eaadf3bd1f lib/HTML/FormHandler/Field/BoolSelect.pm
+SHA1 f1c00db7255f5f0cf762f3bd46d2642de7bd2b29 lib/HTML/FormHandler/Field/Boolean.pm
+SHA1 759e46dfe708b871f40592c9ec4b907ab33a16b4 lib/HTML/FormHandler/Field/Button.pm
+SHA1 7b6d3e7fc8c9d999f1c1daccdcf571ac0ad45d55 lib/HTML/FormHandler/Field/Captcha.pm
+SHA1 9771f31afa5675aef37d3a831840b463445dcaf0 lib/HTML/FormHandler/Field/Checkbox.pm
+SHA1 9539671bcae2386cfbf88daf8a4bdc3148c835ec lib/HTML/FormHandler/Field/Compound.pm
+SHA1 c5b1f0ca9b64916a28cb86146e80cc97038d5940 lib/HTML/FormHandler/Field/Date.pm
+SHA1 950fa6820e20d2fca01b4884b49e3dd7cb758dde lib/HTML/FormHandler/Field/DateMDY.pm
+SHA1 ab48ac1fa096a620dc9dfbd13f1e198dd1c80cf3 lib/HTML/FormHandler/Field/DateTime.pm
+SHA1 dab5af501a343575d31af1a8618cd1b583acba72 lib/HTML/FormHandler/Field/Display.pm
+SHA1 2fa6082f9aad0e2fe5393c039a352eefcd09e523 lib/HTML/FormHandler/Field/Duration.pm
+SHA1 1b2184a611a41f994c501af1fd3f7ce4375920d3 lib/HTML/FormHandler/Field/Email.pm
+SHA1 fcef752e10a2dba3499d89e2d10b837fc117293a lib/HTML/FormHandler/Field/File.pm
+SHA1 b4fb843c7794ebc8fcfe9a14896d87cf09348401 lib/HTML/FormHandler/Field/Float.pm
+SHA1 35eec03b59ea76b8eddee3726dd8d6ae77204a6f lib/HTML/FormHandler/Field/Hidden.pm
+SHA1 fe268767c620cdc54386f72bf57c3ed583c948d7 lib/HTML/FormHandler/Field/Hour.pm
+SHA1 304db9bb4cfe85b8ca956b4000095c174314e04b lib/HTML/FormHandler/Field/IntRange.pm
+SHA1 09742ff1dec32c07262cef1f8d0e9f5d4132a5e4 lib/HTML/FormHandler/Field/Integer.pm
+SHA1 ef7d866cc4088fbdae111aecedbad88b454adb29 lib/HTML/FormHandler/Field/Minute.pm
+SHA1 10806d176e05d54a582fbdd3a04c7ec8705c69d0 lib/HTML/FormHandler/Field/Money.pm
+SHA1 63bccf2aa557ce569fd72b5b8bffd31a04db2ba5 lib/HTML/FormHandler/Field/Month.pm
+SHA1 2c52809ad72b9b489de85ed219a8492093a058b5 lib/HTML/FormHandler/Field/MonthDay.pm
+SHA1 950f372ce6c285a2d57d010291850a834b032091 lib/HTML/FormHandler/Field/MonthName.pm
+SHA1 89e92494373369256128995b53b539fe6e0aae5b lib/HTML/FormHandler/Field/Multiple.pm
+SHA1 0049de6c80007b090cd0d2c09df7e4bc273a985c lib/HTML/FormHandler/Field/Nested.pm
+SHA1 42e3e32faab3c76a79b3700dc469ba7b71c601bc lib/HTML/FormHandler/Field/NoValue.pm
+SHA1 b29536fb765b0daa8cf265a74d113cef8f10774d lib/HTML/FormHandler/Field/NonEditable.pm
+SHA1 a0a072183f2ee54f9f26155fddf7e568943c143c lib/HTML/FormHandler/Field/Password.pm
+SHA1 aa2765d4d6cafc3828d2309c40d991b450148efa lib/HTML/FormHandler/Field/PasswordConf.pm
+SHA1 9084831d32c3f1faebdeb6fcae68eb6309958d56 lib/HTML/FormHandler/Field/PosInteger.pm
+SHA1 30a8029233e2c91057a17093d21160ffa8fa38d2 lib/HTML/FormHandler/Field/PrimaryKey.pm
+SHA1 f2ddfa7cea87fdbbe2cdf2b9f591bc51d859953e lib/HTML/FormHandler/Field/Repeatable.pm
+SHA1 d8632a50f733cbf1107f6160133e781514c17b04 lib/HTML/FormHandler/Field/Repeatable/Instance.pm
+SHA1 1e67b29d9a912d84d4ad9da15dbe546e7419000b lib/HTML/FormHandler/Field/Reset.pm
+SHA1 68a71f9a8f65e1a1fd09541516f0e47fefddac59 lib/HTML/FormHandler/Field/Result.pm
+SHA1 56350080f78b7a19b37f3ce9934cfa704f2ba67b lib/HTML/FormHandler/Field/RmElement.pm
+SHA1 67c4c489baf72f477af8b45cc83283ef3ce95326 lib/HTML/FormHandler/Field/Second.pm
+SHA1 31655eba91a79573db755f6f4303f04480ab03a2 lib/HTML/FormHandler/Field/Select.pm
+SHA1 5d6b18560ad69e17eb50bcf04f29f60fd81dfd81 lib/HTML/FormHandler/Field/SelectCSV.pm
+SHA1 fc8b186f69c470c1a5a50dbe88ee7fb34865238c lib/HTML/FormHandler/Field/Submit.pm
+SHA1 9e9199ed858d9581bb5ae212270dab1e121288c5 lib/HTML/FormHandler/Field/Text.pm
+SHA1 d0b0a30bad5bf58e4532d9577d4bf100c888af18 lib/HTML/FormHandler/Field/TextArea.pm
+SHA1 b10c9f8c996422a7e0b2daf3f189726abe3ea3fb lib/HTML/FormHandler/Field/TextCSV.pm
+SHA1 6e4a6f6c44414287969fd814bce9cc96267261c2 lib/HTML/FormHandler/Field/Upload.pm
+SHA1 8972de512e7df2a6aed46ba38472e105493e127d lib/HTML/FormHandler/Field/Weekday.pm
+SHA1 8fee7bcf4b141f920d26b34a025227b63477d446 lib/HTML/FormHandler/Field/Year.pm
+SHA1 14fa357390c2a629b12a92173dee89d72150b10f lib/HTML/FormHandler/Fields.pm
+SHA1 e8d18f29e9628c12eac94771fe34d0db26b5ccf3 lib/HTML/FormHandler/Foo.pm
+SHA1 b3b12bc98af43a951205116a3f62256cd6aac914 lib/HTML/FormHandler/I18N.pm
+SHA1 23d07de9cc81806cbceb9e13b447ec60d27f75e2 lib/HTML/FormHandler/I18N/ar_kw.pm
+SHA1 cd4c0b2ee688718f9f94cfb9a72ae8add571b309 lib/HTML/FormHandler/I18N/bg_bg.pm
+SHA1 878f3552b69baeabd28e13435f49bdc98d43674d lib/HTML/FormHandler/I18N/cs_cz.pm
+SHA1 4bd7bb049282eda222e1c93fb8e627127d9b9e2d lib/HTML/FormHandler/I18N/de_de.pm
+SHA1 1294fa2febdacb2bbb8a27fbbff09ede9e7df4ca lib/HTML/FormHandler/I18N/en_us.pm
+SHA1 a75e8a88252f25cd698662b6332bb703f5f6ed36 lib/HTML/FormHandler/I18N/hu_hu.pm
+SHA1 42bdf598a410ab7f0ddd6ec5b210aeb24c2efbe6 lib/HTML/FormHandler/I18N/it_it.pm
+SHA1 364f3b7c263cb0b1ef41438650deab4fdafce724 lib/HTML/FormHandler/I18N/ja_jp.pm
+SHA1 8b987e559798469a8a6a08d4bbb7a53253cb6ba9 lib/HTML/FormHandler/I18N/pt_br.pm
+SHA1 6b4bb2855b4652d0e36c5f6699354dd87e455692 lib/HTML/FormHandler/I18N/ru_ru.pm
+SHA1 11f329300dcd4f8fb065ebfcc87066b304c03511 lib/HTML/FormHandler/I18N/sv_se.pm
+SHA1 9c7a1b8c5934a42ebacb2704c3cf0b1c4f8c7d3d lib/HTML/FormHandler/I18N/tr_tr.pm
+SHA1 34106fa9ff6419f9a6db2ca8ae1736cce5bf8075 lib/HTML/FormHandler/I18N/ua_ua.pm
+SHA1 0bd4743d9c9d622a1fdc11e19e1dffaea8e88836 lib/HTML/FormHandler/InitResult.pm
+SHA1 939d0067a8dd0600c79aafb25d15d1a5f509ea57 lib/HTML/FormHandler/Manual.pod
+SHA1 3d7960ad445e85dd135ae2675b1389859129df24 lib/HTML/FormHandler/Manual/Catalyst.pod
+SHA1 951bff14f90026f663474415f4d42d90530d20b6 lib/HTML/FormHandler/Manual/Cookbook.pod
+SHA1 48f79ea2e6470b700ffaa1799953bb186cd42d45 lib/HTML/FormHandler/Manual/Database.pod
+SHA1 4de43ff73bb6cf3fce5ddc2ed3465bd3c129d812 lib/HTML/FormHandler/Manual/Defaults.pod
+SHA1 02935e6657795b8964b5983fff36b38a05f25e6a lib/HTML/FormHandler/Manual/Errors.pod
+SHA1 0a14804347cfccd6cb32d6e39ad5dae7b2d9864b lib/HTML/FormHandler/Manual/Fields.pod
+SHA1 994041e2429c326ffd4205ac186041a3ad34f5fa lib/HTML/FormHandler/Manual/FromDFV.pod
+SHA1 fc590936c32a4b31a64714a93946e18027333241 lib/HTML/FormHandler/Manual/FromFF.pod
+SHA1 931987f83fc563ee47b83e37f43817cf3bf297b9 lib/HTML/FormHandler/Manual/InflationDeflation.pod
+SHA1 5370649b23e8242da4ea8527eac6085b84f7f96f lib/HTML/FormHandler/Manual/Intro.pod
+SHA1 8843e7a9be7c94defc14a282555e009cb0ff85b7 lib/HTML/FormHandler/Manual/Reference.pod
+SHA1 f775a754a8344697d83316be90cc1f6f9b8f4f77 lib/HTML/FormHandler/Manual/Rendering.pod
+SHA1 659e493ede3b2d818e15a9f395fbae974d6f5b55 lib/HTML/FormHandler/Manual/RenderingCookbook.pod
+SHA1 51142a3ea7a1cfbd584da69751d4bd1e612983be lib/HTML/FormHandler/Manual/Templates.pod
+SHA1 b1ed051b5ae80002d72ff09d245e1dd469008df0 lib/HTML/FormHandler/Manual/Testing.pod
+SHA1 73c1de5bca23c5865258160c4b4616e3ac346dcb lib/HTML/FormHandler/Manual/Tutorial.pod
+SHA1 2e60fa6ab9a4cdd34195b15361f7fba3c1b2aa20 lib/HTML/FormHandler/Manual/Validation.pod
+SHA1 fed1a4d8791a7d65001dae110cb426fa2d6e77a2 lib/HTML/FormHandler/Merge.pm
+SHA1 78c35b7fd38d443b4c1e430948da49f2e9936fee lib/HTML/FormHandler/Meta/Role.pm
+SHA1 e3553def494cf07765ce48a7d526329ffd25d4a6 lib/HTML/FormHandler/Model.pm
+SHA1 e08269d1836f61862074356bfcf09fdffd6babff lib/HTML/FormHandler/Model/CDBI.pm
+SHA1 f224259bf4a6d511cb9e202b0c65650ec5810769 lib/HTML/FormHandler/Model/Object.pm
+SHA1 dd913987e671d23e606bb0038d1780c699e3579a lib/HTML/FormHandler/Moose.pm
+SHA1 2180c5b334a3206e44f04bbc34bd75b6b0e070c0 lib/HTML/FormHandler/Moose/Role.pm
+SHA1 bd09780eef40552c9b175d4134166484725cfd20 lib/HTML/FormHandler/Page.pm
+SHA1 3ef90fd25c9b02fe6a3ee069a991375559e81077 lib/HTML/FormHandler/Page/Simple.pm
+SHA1 4064469e4d015ab9afbdeb9530529e54fb9d3bcf lib/HTML/FormHandler/Pages.pm
+SHA1 4eed50d367fdd0d252e7012f4d14e9f90030a2c7 lib/HTML/FormHandler/Params.pm
+SHA1 fb5791fab3c1190da2c6e2b54d7fd6aa2a86c8cd lib/HTML/FormHandler/Render/RepeatableJs.pm
+SHA1 7cce2cc2418e1e46d9f29009c588037691d534e7 lib/HTML/FormHandler/Render/Simple.pm
+SHA1 024826305da0702967c348e94204785759340436 lib/HTML/FormHandler/Render/Table.pm
+SHA1 641c50954654b7555a15c6617ed3dfae26ac0884 lib/HTML/FormHandler/Render/Util.pm
+SHA1 8eda8d8de74ab5b199d45fba5bed04d44efdbb6b lib/HTML/FormHandler/Render/WithTT.pm
+SHA1 bfd934d41dd17c6b450014f1d311d137626b92fc lib/HTML/FormHandler/Result.pm
+SHA1 5a6c104a260a3e940d199b4c35e3613f0a15fdee lib/HTML/FormHandler/Result/Role.pm
+SHA1 e8aaf694b78de99d6e4d9bc738002dd44f80d8e8 lib/HTML/FormHandler/Test.pm
+SHA1 7eae51abe92d248e1a177f2708be694e3b546fd5 lib/HTML/FormHandler/TraitFor/Captcha.pm
+SHA1 3b3cf8236b4cb6bd2e1d01f20445c9b24c42e748 lib/HTML/FormHandler/TraitFor/I18N.pm
+SHA1 870e4ee21a3829f91794bb6c5463c517f0e86657 lib/HTML/FormHandler/TraitFor/Types.pm
+SHA1 c90cbe24dd0cba82bfe2112be4d7354a128a585a lib/HTML/FormHandler/Traits.pm
+SHA1 8696449bf3e82803a47f572173e4099e5705917b lib/HTML/FormHandler/Types.pm
+SHA1 094167487e94e71ef6b89cb8adcb91e2723938dc lib/HTML/FormHandler/Validate.pm
+SHA1 6483e2115cacbeb47657c1e97f3c54c7f7d2dd1a lib/HTML/FormHandler/Widget/ApplyRole.pm
+SHA1 40f48e0cbc39a76a6bd4b65738360a8338d9e9d5 lib/HTML/FormHandler/Widget/Block.pm
+SHA1 4aa1d5e3977b14f699f3674141fbfb52e3d2bbb9 lib/HTML/FormHandler/Widget/Block/Bootstrap.pm
+SHA1 39a51d71a4e73eb58f920edcd115f9681befcf90 lib/HTML/FormHandler/Widget/Field/Button.pm
+SHA1 0d581f10cf39bd29102c938aa3dadbe2ee502e66 lib/HTML/FormHandler/Widget/Field/ButtonTag.pm
+SHA1 e02b1e17eae1cd9ac7d673082ff050108f6aa89f lib/HTML/FormHandler/Widget/Field/Captcha.pm
+SHA1 bef5f5f0b5df2ea3dad396c3ffcb233e486544e3 lib/HTML/FormHandler/Widget/Field/Checkbox.pm
+SHA1 5adfcad5d3de53343c6fee85d4572b33bee946d1 lib/HTML/FormHandler/Widget/Field/CheckboxGroup.pm
+SHA1 ab5a566b38ee460e71d7f5745d0469db1e632eb1 lib/HTML/FormHandler/Widget/Field/Compound.pm
+SHA1 f4cd7b457dd58ce157e0b15947f43895077a5d2d lib/HTML/FormHandler/Widget/Field/Hidden.pm
+SHA1 4292208b8570f50c6e7e18b97d3148b35d49ed48 lib/HTML/FormHandler/Widget/Field/HorizCheckboxGroup.pm
+SHA1 f912e9d9e02223fb26d31b61f61c45097d2f387b lib/HTML/FormHandler/Widget/Field/NoRender.pm
+SHA1 bab974c85a7c35f8c76880281f55736830a2709c lib/HTML/FormHandler/Widget/Field/Password.pm
+SHA1 2a4f189880dc249fcd643bad2a3b3bda2c31f5b8 lib/HTML/FormHandler/Widget/Field/RadioGroup.pm
+SHA1 a6fa4fa5d45cc992eafd0b86f9d4baf3c2958f9b lib/HTML/FormHandler/Widget/Field/Repeatable.pm
+SHA1 c44536a59599478c6253d4daefd818890d1c034a lib/HTML/FormHandler/Widget/Field/Reset.pm
+SHA1 56f6999a110720c806492b0367e3a1ba1406ba4b lib/HTML/FormHandler/Widget/Field/Role/HTMLAttributes.pm
+SHA1 2ef5aeed43b187627a91f7728b351b73f28a8f0d lib/HTML/FormHandler/Widget/Field/Role/SelectedOption.pm
+SHA1 10a8fbf0ee5eb96c8b801b442bce58481c9a848c lib/HTML/FormHandler/Widget/Field/Select.pm
+SHA1 6a4a60fe5d3218e25d622778fd6bba95edeff3ff lib/HTML/FormHandler/Widget/Field/Span.pm
+SHA1 73a1bbb378bb0b2f02ff5356c705e5641d496984 lib/HTML/FormHandler/Widget/Field/Submit.pm
+SHA1 86a660b9d608ebdc9d0a8abfea53ab74e1bc91a6 lib/HTML/FormHandler/Widget/Field/Text.pm
+SHA1 0d6646e1313af6262a3d58d961dc60dc4dcd0770 lib/HTML/FormHandler/Widget/Field/Textarea.pm
+SHA1 beed205e5b8ac7943cd398d4854becfe608ac535 lib/HTML/FormHandler/Widget/Field/Upload.pm
+SHA1 98128f4fb7e36526fa7ec874d392431e7b80f214 lib/HTML/FormHandler/Widget/Form/Role/HTMLAttributes.pm
+SHA1 6a6099658223c53f0f469c64ea33c93a854e658c lib/HTML/FormHandler/Widget/Form/Simple.pm
+SHA1 b6d80b4ea450482fffb4cc4eaa7925c614e8b7f0 lib/HTML/FormHandler/Widget/Form/Table.pm
+SHA1 93b00d5a0585cf8c7a16d1cae8c6d8aa3a3bb5fa lib/HTML/FormHandler/Widget/Theme/Bootstrap.pm
+SHA1 86bb4ba36e277af59ef5bfca285947f174651c0d lib/HTML/FormHandler/Widget/Theme/Bootstrap3.pm
+SHA1 d09862dd1ccc68ca81ed28bd10f29f612608f6b4 lib/HTML/FormHandler/Widget/Theme/BootstrapFormMessages.pm
+SHA1 c679f293468dd782c3c8095c251e40d3da51d0fc lib/HTML/FormHandler/Widget/Wrapper/Base.pm
+SHA1 e26a823067d849c1bfdfef78ac77dbe6faeaa32f lib/HTML/FormHandler/Widget/Wrapper/Bootstrap.pm
+SHA1 28304e4fa9de2aa981b4bc49582b8f6bc73f2dc9 lib/HTML/FormHandler/Widget/Wrapper/Bootstrap3.pm
+SHA1 fe04a32331e0e546c0291818db2ac8893c755c8a lib/HTML/FormHandler/Widget/Wrapper/Fieldset.pm
+SHA1 03470528ddfda141ae170ed838bb2ccad2670d48 lib/HTML/FormHandler/Widget/Wrapper/None.pm
+SHA1 be74aae957f7f900b5fb3b70d722bbc6de5ac768 lib/HTML/FormHandler/Widget/Wrapper/Simple.pm
+SHA1 829d8b745b6e7fa4dd1cb56f82a052d5f00b1068 lib/HTML/FormHandler/Widget/Wrapper/SimpleInline.pm
+SHA1 6d2732a2ab168ae4eec6ec1751083647dbac8664 lib/HTML/FormHandler/Widget/Wrapper/Table.pm
+SHA1 36deb5faa41dab391badb46520f3cc8635fc91b9 lib/HTML/FormHandler/Widget/Wrapper/TableInline.pm
+SHA1 3fc0b663d11a4e89fa24c7acc40830558cd0a451 lib/HTML/FormHandler/Wizard.pm
SHA1 794da1f2f7c41af8edd5fc53e766a33072c10c91 share/templates/field/button.tt
SHA1 3681fc90aef0523ca43663e10a2e2798d7a413ab share/templates/field/checkbox.tt
SHA1 acc9394577fdda7a1408ee052792c70f00340c34 share/templates/field/checkbox_group.tt
@@ -209,6 +209,7 @@ SHA1 475346c385a4f2fdd668aab9f6b0e1f8d63522d0 share/templates/wrapper/none.tt
SHA1 96b3d105205e2bde31af480ae3774c6c58c1589d share/templates/wrapper/simple.tt
SHA1 edbdd55a879e452a4bbd0efad463c2be27dcb80d share/templates/wrapper/wrap_label.tt
SHA1 d55b2da9ebb18c4da78ae398a555d19728397acd t/01app.t
+SHA1 bfb37c69d78c2bfac5cd878ebf732f2282b74d32 t/author-eol.t
SHA1 aa37030336d4a2357da8f818de5d7026cd892506 t/basic.t
SHA1 9ccc83343d981613ac0c71f941a206b9d50223e4 t/blocks/basic.t
SHA1 d164545e6a42ed3cc2e8323abe759ace1b2f8765 t/blocks/block_list.t
@@ -227,7 +228,7 @@ SHA1 b7f3d404d5ae0aa94c1b5f61f7e5582beb983a45 t/bootstrap3/basic.t
SHA1 92a3debdfe48e00d87861cccdff30a218084484d t/bootstrap3/controls.t
SHA1 fbac5e409e361615cd723635299cf7e06132b01c t/bootstrap3/horiz.t
SHA1 cfc7b730c83305dd93946678c4289cb4e401de08 t/bootstrap3/horiz_checkboxgroup.t
-SHA1 cd29163c8653ce41f7a5523e7a2d03b178884585 t/bootstrap3/inlinecheckboxes.t
+SHA1 0718779ad9787d39230aa12efdb0ecf3d0cee275 t/bootstrap3/inlinecheckboxes.t
SHA1 aa4a34c0a641d66ca56140cbcc732b5942d34b79 t/bootstrap3/layout_classes.t
SHA1 99db89ba2029b09d8aceebe7ca3a0d2a4bc3804e t/compound/basic.t
SHA1 076f5508b176cc8df148e3c54f8c02506c61ebfc t/compound/default.t
@@ -251,7 +252,7 @@ SHA1 e5e246a2d74b0cf478c859fa7f5d59f26e4886ac t/field_setup/missing.t
SHA1 99b4bed094f697439910d0106e1018a4688f209f t/field_setup/plus_field.t
SHA1 5ef5f0dca7f29790083872ded07fbdaddba5b4b5 t/field_setup/update_fields.t
SHA1 ee3294fdd0643d1a13fdf0f813f6b75b5c1762fa t/field_setup/update_subfields.t
-SHA1 736af8c2271f385972bae40175143bd807abd45c t/fields/dates.t
+SHA1 c79522cffc29aa7a10f478a7a2cf206a8d5bdc98 t/fields/dates.t
SHA1 b49610114fcca34d34b2d3a302efeb7a4499c8fe t/fields/display.t
SHA1 4e7421c927b94f2c8a49f3cffbe20526a7ed26b5 t/fields/fields.t
SHA1 32ffb3e7403b82fd033326ed8dfa1950330f8f99 t/fields/float.t
@@ -303,8 +304,7 @@ SHA1 9489e970b3d3f5bd0ca82ba7704a0589546d278c t/moose/composed.t
SHA1 7ad31d0a34a696fc1b05aca77302b050abeb189a t/moose/field_traits.t
SHA1 1908e358a05fb889f1d3e76bc462df747766f5eb t/moose/no_extend.t
SHA1 2fcb1cf1667bbf821cac0eba3389357dec953857 t/moose/subclass_roles.t
-SHA1 a032c41ef6887fab1b900669c2d304fab46680e2 t/release-eol.t
-SHA1 59c5da2e18670e34ce83da61f0af30ff9079edda t/release-no-tabs.t
+SHA1 8dadea30332c117551e86c50765f5ee34c29e86c t/release-no-tabs.t
SHA1 d69dcbcff41cd0df28bf36527ddb37d447754932 t/render/actions.t
SHA1 c1191d24fc2785ef40103d2191e87dfe92ee71e9 t/render/array.t
SHA1 5a953cb7108e91b26087649ce7aa7cf9d213b650 t/render/basic.t
@@ -320,7 +320,7 @@ SHA1 34169ac2fd52733922c55e3b1371ac47d3d49d9c t/render/ff.t
SHA1 ae10e2cea31a74caae799668c2742e9596dc2a85 t/render/filter.t
SHA1 baee60bf749cdd64dbe05404b5fbb97f9246f07b t/render/form_errors.t
SHA1 10c270e17ff97aebde06110159bb3662ccdfc7b5 t/render/get_tag.t
-SHA1 491b6ac9c0a8ba35a6259cc4843b746700ef44cb t/render/html5_attributes.t
+SHA1 782a804a2ed9a197f983ef954a31babd316a35c7 t/render/html5_attributes.t
SHA1 ae53d67a44b13e3c1da6fcc79bca8c9221c974f0 t/render/html_attr.t
SHA1 93a47fa99029371cca018337acd5a56911a90064 t/render/html_attributes.t
SHA1 429398d9de168ed3f03b6d4ce01ab1bdccc787e6 t/render/inline.t
@@ -341,6 +341,7 @@ SHA1 d977f8cecf28d424cde917093535cbfc6fb27ea3 t/render/util.t
SHA1 f4e53913e5882a765e13e93d84d5a498a03569fa t/render/widget_loading.t
SHA1 98dcba91ccb83597ef0170ad045291bded439c41 t/render/widget_tags.t
SHA1 93033625a3a956991cfb3e5354141a3e924aab0d t/render/widgets.t
+SHA1 7d5d0825b48ea1047f5de81e696daebca856df32 t/render/with_class.t
SHA1 23ea3683a53943fcba024599cbba28761cb5b8e4 t/render/withtt.t
SHA1 fe4e8b94c36d1707101b3d329069172536e4aa6e t/repeatable/defaults.t
SHA1 2778a516f22e0b0d8d14db468304821fa262e3ab t/repeatable/empty.t
@@ -366,7 +367,7 @@ SHA1 c8b2d029acdc6c58ff0e44a25404549ac6c6680f t/validation/constraints.t
SHA1 a7469a1fb8a0e7b3e1af9e5dfd9674eae54e8d7f t/validation/dependency.t
SHA1 fa54bae035104eac9559c449aa0d80ba8e2649d3 t/validation/filters.t
SHA1 8bebaf81f0a777a646972ea49a0e07b0d700effe t/validation/reqwhen.t
-SHA1 2106330e1f793d9013ce23a6f76a34f777d24470 t/validation/types.t
+SHA1 994209d3b4af7c1388aa7671ace70edacdee1392 t/validation/types.t
SHA1 60761cd04a6350433097c91e438bef74f5ca53b7 t/validation/validate_coderef.t
SHA1 bc0b36210f8c7fcc56c9fb9b805cbc993c4394bf t/validation/when.t
SHA1 8e040ebd13ce2e819310418baeca2b44c46eadf0 t/var/form1.pl
@@ -408,7 +409,7 @@ SHA1 11cfd9ee49b356722fc0b09c75b5110fed8759c2 xt/upload.t
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
-iF4EAREIAAYFAlTvRx8ACgkQlX0ZOkgCucj3IAD8COwIRt3yuOrb8H74inq7HqFp
-tJ64DSjKzSzy8R+lpPYA/Aw+ouPyWVYG4NQL8EcCLMf8wSWKyqYXe/ox8LKm0bg7
-=F9EB
+iF4EAREIAAYFAlWLArcACgkQlX0ZOkgCucjdXAD9E7TdL3QahDp91hQVKELhTjCq
+NxD+uJgx+9g4nkMZ9gUA+QGuSWU+gK3m/IHxuopBkHo2HshWQ6OR0HnWYEYg0yWv
+=kOMm
-----END PGP SIGNATURE-----
@@ -7,7 +7,7 @@ license = Perl_5
copyright_holder = Gerda Shank
copyright_year = 2014
-version = 0.40059
+version = 0.40060
[@Git]
tag_format = %v
@@ -26,8 +26,8 @@ repository.type = git
; You have to have Dist::Zilla::Plugin::<Name> for these to work
[PodWeaver]
-[NoTabsTests]
-[EOLTests]
+[Test::NoTabs]
+[Test::EOL]
[Signature]
[CheckChangeLog]
@@ -53,12 +53,13 @@ HTML::TreeBuilder = 3.23
Sub::Name = 0
Data::Clone = 0
JSON = 0
-List::AllUtils = 0.07
+List::Util = 1.33
[Prereqs / TestRequires]
Test::More = 0.94
Test::Differences = 0
Test::Exception = 0
Test::Memory::Cycle = 1.04
+Test::Warn = 0
PadWalker = 0
@@ -25,7 +25,7 @@ HTML::FormHandler::Base - stub
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -147,7 +147,7 @@ HTML::FormHandler::Blocks - arrange form layout using blocks
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -460,7 +460,7 @@ HTML::FormHandler::BuildFields - role to build field array
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -234,7 +234,7 @@ HTML::FormHandler::BuildPages - used in Wizard
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -43,7 +43,7 @@ HTML::FormHandler::Field::AddElement - Field to support repeatable javascript ad
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -29,7 +29,7 @@ HTML::FormHandler::Field::BoolSelect - Boolean select field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -30,7 +30,7 @@ HTML::FormHandler::Field::Boolean - a true or false field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -25,7 +25,7 @@ HTML::FormHandler::Field::Button - button field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -108,7 +108,7 @@ HTML::FormHandler::Field::Captcha - captcha field with GD::SecurityImage
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -35,7 +35,7 @@ HTML::FormHandler::Field::Checkbox - a checkbox field type
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -91,7 +91,7 @@ HTML::FormHandler::Field::Compound - field consisting of subfields
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -104,6 +104,20 @@ sub get_strf_format {
return $format;
}
+before 'get_tag' => sub {
+ my $self = shift;
+
+ if (
+ $self->form
+ && $self->form->is_html5
+ && not( $self->format =~ /^(yy|%Y)-(mm|%m)-(dd|%d)$/ )
+ ) {
+ warn "Form is HTML5, but date field '" . $self->full_name
+ . "' has a format other than %Y-%m-%d, which HTML5 requires for date "
+ . "fields. Either correct the date format or set the is_html5 flag to false.";
+ }
+};
+
__PACKAGE__->meta->make_immutable;
use namespace::autoclean;
1;
@@ -120,7 +134,7 @@ HTML::FormHandler::Field::Date - a date field with formats
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SUMMARY
@@ -162,8 +176,26 @@ Customize error messages 'date_early' and 'date_late':
messages => { date_early => 'Pick a later date',
date_late => 'Pick an earlier date', } );
-If form has 'is_html5' flag active it will render <input type="date" ... />
-instead of type="text"
+=head2 Using with HTML5
+
+If the field's form has its 'is_html5' flag active, then the field's rendering
+behavior changes in two ways:
+
+=over
+
+=item *
+
+It will render as <input type="date" ... /> instead of type="text".
+
+=item *
+
+If the field's format is set to anything other than ISO date format
+(%Y-%m-%d), then attempting to render the field will result in a warning.
+
+(Note that the default value for the field's format attribute is, in fact,
+the ISO date format.)
+
+=back
=head1 AUTHOR
@@ -23,7 +23,7 @@ HTML::FormHandler::Field::DateMDY - m/d/y date field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -74,7 +74,7 @@ HTML::FormHandler::Field::DateTime - compound DateTime field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -58,7 +58,7 @@ HTML::FormHandler::Field::Display - display only field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -54,7 +54,7 @@ HTML::FormHandler::Field::Duration - DateTime::Duration from HTML form values
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SubFields
@@ -74,7 +74,7 @@ HTML::FormHandler::Field::Email - validates email using Email::Valid
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -23,7 +23,7 @@ HTML::FormHandler::Field::File - simple file field; does no processing
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -96,7 +96,7 @@ HTML::FormHandler::Field::Float - validate a float value
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -26,7 +26,7 @@ HTML::FormHandler::Field::Hidden - hidden field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -25,7 +25,7 @@ HTML::FormHandler::Field::Hour - accept integer from 0 to 23
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -45,7 +45,7 @@ HTML::FormHandler::Field::IntRange - integer range in select list
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -57,7 +57,7 @@ HTML::FormHandler::Field::Integer - validate an integer value
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -26,7 +26,7 @@ HTML::FormHandler::Field::Minute - input range from 0 to 59
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -63,7 +63,7 @@ HTML::FormHandler::Field::Money - US currency-like values
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -25,7 +25,7 @@ HTML::FormHandler::Field::Month - select list 1 to 12
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -25,7 +25,7 @@ HTML::FormHandler::Field::MonthDay - select list 1 to 31
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -41,7 +41,7 @@ HTML::FormHandler::Field::MonthName - select list with month names
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -39,7 +39,7 @@ HTML::FormHandler::Field::Multiple - multiple select list
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -23,7 +23,7 @@ HTML::FormHandler::Field::Nested - for nested elements of compound fields
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -67,7 +67,7 @@ HTML::FormHandler::Field::NoValue - base class for submit field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -23,7 +23,7 @@ HTML::FormHandler::Field::NonEditable - reset field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -69,7 +69,7 @@ HTML::FormHandler::Field::Password - password field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -57,7 +57,7 @@ HTML::FormHandler::Field::PasswordConf - password confirmation
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -46,7 +46,7 @@ HTML::FormHandler::Field::PosInteger - positive integer field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -38,7 +38,7 @@ HTML::FormHandler::Field::PrimaryKey - primary key field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -35,7 +35,7 @@ HTML::FormHandler::Field::Repeatable::Instance - used internally by repeatable f
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -300,7 +300,7 @@ HTML::FormHandler::Field::Repeatable - repeatable (array) field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -27,7 +27,7 @@ HTML::FormHandler::Field::Reset - reset field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -68,7 +68,7 @@ HTML::FormHandler::Field::Result - result class for fields
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -41,7 +41,7 @@ HTML::FormHandler::Field::RmElement - field to support repeatable javascript rem
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -25,7 +25,7 @@ HTML::FormHandler::Field::Second - select list 0 to 59
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -367,7 +367,7 @@ HTML::FormHandler::Field::Select - select fields
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -48,7 +48,7 @@ HTML::FormHandler::Field::SelectCSV - Multiple select field from CSV value
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -35,7 +35,7 @@ HTML::FormHandler::Field::Submit - submit field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -74,7 +74,7 @@ HTML::FormHandler::Field::Text - text field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -27,7 +27,7 @@ HTML::FormHandler::Field::TextArea - textarea input
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 Summary
@@ -52,7 +52,7 @@ HTML::FormHandler::Field::TextCSV - CSV Text field from multiple
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -91,7 +91,7 @@ HTML::FormHandler::Field::Upload - file upload field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -36,7 +36,7 @@ HTML::FormHandler::Field::Weekday - select list day of week strings
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -36,7 +36,7 @@ HTML::FormHandler::Field::Year - year selection list
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -1037,7 +1037,7 @@ HTML::FormHandler::Field - base class for fields
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -233,7 +233,7 @@ HTML::FormHandler::Fields - internal role for form and compound fields
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -68,7 +68,7 @@ HTML::FormHandler::Foo - Experiment in loading form from config file
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -115,7 +115,7 @@ HTML::FormHandler::I18N::ar_kw - Arabic message translations
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 NAME
@@ -110,7 +110,7 @@ HTML::FormHandler::I18N::bg_bg - Bulgarian message file
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 NAME
@@ -108,7 +108,7 @@ HTML::FormHandler::I18N::cs_cz - Czech message translations
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 NAME
@@ -108,7 +108,7 @@ HTML::FormHandler::I18N::de_de - German message translations
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -24,7 +24,7 @@ HTML::FormHandler::I18N::en_us - base message file
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -112,7 +112,7 @@ HTML::FormHandler::I18N::hu_hu - Hungarian message file
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -116,7 +116,7 @@ HTML::FormHandler::I18N::it_it - Italian message translations - traduzione itali
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 NAME
@@ -109,7 +109,7 @@ HTML::FormHandler::I18N::ja_jp - Japanese message file
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -111,7 +111,7 @@ HTML::FormHandler::I18N::pt_br - Brazilian Portuguese message file
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 NAME
@@ -111,7 +111,7 @@ HTML::FormHandler::I18N::ru_ru - Russian message file
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -108,7 +108,7 @@ HTML::FormHandler::I18N::sv_se - Swedish message translations
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -118,7 +118,7 @@ HTML::FormHandler::I18N::tr_tr - Turkish message file
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 NAME
@@ -111,7 +111,7 @@ HTML::FormHandler::I18N::ua_ua - Ukrainian message file
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -35,7 +35,7 @@ HTML::FormHandler::I18N - internationalization
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -182,7 +182,7 @@ HTML::FormHandler::InitResult - internal code
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Catalyst - using HFH forms in Catalyst
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Cookbook - FormHandler use recipes
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Database - FormHandler use recipes
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Defaults - form defaults documentation
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Errors - FormHandler error methods
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Fields - brief documentation of available fields
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::FromDFV - converting from Data::FormValidator
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::FromFF - converting from HTML::FormFu
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::InflationDeflation - inflation and deflation of field
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Intro - introduction to using FormHandler
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Reference - concise reference
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -207,9 +207,9 @@ L<HTML::FormHandler::Render::Simple>, and in the individual field classes.
size Text & select fields.
render Widget method to render the field ($field->render)
+ renderx "" plus set attributes ($field->render( element_class => '...' ))
render_element Widget method to render unwrapped field ($field->render_element)
-
- render_field Method used by Render::Simple to render field
+ render_elementx "" plus set attributes ($field->render_elementx( element_class => '...'))
=head2 Field attributes managed by FormHandler
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Rendering - how to render with FormHandler
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -93,13 +93,13 @@ default FormHandler output with the following CSS rule (not supported in interne
} /* make sure the parent element is sized appropriately. 700px is a good width */
Going a little bit farther in using FormHandler rendering, you can render
-each of the fields individually:
+each of the fields individually, using 'render' or 'renderx':
<form id="myform" action="/edit/example" method="post">
<fieldset><legend>My Foo</legend>
[% form.field('foo').render %]
</fieldset>
- [% form.field('bar').render %]
+ [% form.field('bar').renderx(element_class => 'cb33') %]
[% form.field('save').render %]
</form>
@@ -114,15 +114,18 @@ embedded:
[% form.field('foo').render %]
</div>
<div class="another_class">
- [% form.field('bar').render %]
+ [% form.field('bar').renderx(element_class => 'cb33') %]
</div>
-You can also use the 'render_element' method, if you want to leave the
+You can also use the 'render_element' or 'render_elementx' methodx, if you want to leave the
wrapper in place, but sometimes render 'bare' html elements:
<div class="my_class">
[% form.field('foo').render_element %]
</div>
+ <div class="my_class">
+ [% form.field('foo').render_elementx(element_class => 'cb33') %]
+ </div>
If you wish to loop through the fields yourself, use the 'sorted_fields'
method, since it skips inactive fields and handles the 'order' attribute.
@@ -141,6 +144,8 @@ See also L<HTML::FormHandler::Manual::Templates>.
If you take all the defaults, you can simply render a form with C<< $form->render >>.
[% form.render %]
+ or
+ [% form.renderx( form_element_class => ['xxx'] ) %]
This uses the L<HTML::FormHandler::Widget::Form::Simple> role, which is applied to
the form by default. You can use a different form rendering role by including
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::RenderingCookbook - rendering recipes
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Templates - using templates
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Testing - testing forms
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Tutorial - how to use FormHandler with Catalyst
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -13,7 +13,7 @@ HTML::FormHandler::Manual::Validation - validating fields
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -175,7 +175,7 @@ If the conditions get too complicated to easily fit into a when condition, you
can always create a validation method instead.
See also L<HTML::FormHandler::Field> and L<HTML::FormHandler::Validate>.
-See L<HTML::FormHandler::Manual::Inflation::Deflation> for information
+See L<HTML::FormHandler::Manual::InflationDeflation> for information
on inflation and deflation.
=head2 Moose types
@@ -16,7 +16,7 @@ HTML::FormHandler::Manual - index of the manual
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -73,7 +73,7 @@ HTML::FormHandler::Merge - internal hash merging
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -70,7 +70,7 @@ HTML::FormHandler::Meta::Role - field_list and apply_list
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -296,7 +296,7 @@ HTML::FormHandler::Model::CDBI - Class::DBI model class (non-functioning)
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -30,7 +30,7 @@ HTML::FormHandler::Model::Object - stub for Object model
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -66,7 +66,7 @@ HTML::FormHandler::Model - default model base class
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -54,7 +54,7 @@ HTML::FormHandler::Moose::Role - to add sugar to roles
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -76,7 +76,7 @@ HTML::FormHandler::Moose - to add FormHandler sugar
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -18,7 +18,7 @@ HTML::FormHandler::Page::Simple - used by Wizard
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -49,7 +49,7 @@ HTML::FormHandler::Page - used in Wizard
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -79,7 +79,7 @@ HTML::FormHandler::Pages - used in Wizard
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -137,7 +137,7 @@ HTML::FormHandler::Params - params handling
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -79,7 +79,7 @@ HTML::FormHandler::Render::RepeatableJs - role providing method to construct rep
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -300,7 +300,7 @@ HTML::FormHandler::Render::Simple - simple rendering role
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -83,7 +83,7 @@ HTML::FormHandler::Render::Table - render a form with a table layout
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -67,7 +67,7 @@ HTML::FormHandler::Render::Util - rendering utility
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -100,7 +100,7 @@ HTML::FormHandler::Render::WithTT - tt rendering
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -136,7 +136,7 @@ HTML::FormHandler::Result::Role - role with common code for form & field results
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -82,7 +82,7 @@ HTML::FormHandler::Result - form result object
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -42,7 +42,7 @@ HTML::FormHandler::Test - provides is_html method used in tests
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -45,7 +45,7 @@ HTML::FormHandler::TraitFor::Captcha - generate and validate captchas
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -57,7 +57,7 @@ HTML::FormHandler::TraitFor::I18N - localization
=head1 VERSION
-version 0.40059
+version 0.40060
=head3 language_handle, _build_language_handle
@@ -46,7 +46,7 @@ HTML::FormHandler::TraitFor::Types - types used internally in FormHandler
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -120,7 +120,7 @@ HTML::FormHandler::Traits - customized replacement for MooseX::Traits
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -179,7 +179,7 @@ HTML::FormHandler::Types - Moose type constraints
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -167,13 +167,19 @@ sub _apply_actions {
$error_message = $error;
return 1;
};
+
+ my $is_type = sub {
+ my $class = blessed shift or return;
+ return $class eq 'MooseX::Types::TypeDecorator' || $class->isa('Type::Tiny');
+ };
+
for my $action ( @{ $self->actions || [] } ) {
$error_message = undef;
# the first time through value == input
my $value = $self->value;
my $new_value = $value;
# Moose constraints
- if ( !ref $action || ref $action eq 'MooseX::Types::TypeDecorator' || ref $action eq 'Type::Tiny' ) {
+ if ( !ref $action || $is_type->($action) ) {
$action = { type => $action };
}
if ( my $when = $action->{when} ) {
@@ -181,7 +187,7 @@ sub _apply_actions {
}
if ( exists $action->{type} ) {
my $tobj;
- if ( ref $action->{type} eq 'MooseX::Types::TypeDecorator' || ref $action->{type} eq 'Type::Tiny' ) {
+ if ( $is_type->($action->{type}) ) {
$tobj = $action->{type};
}
else {
@@ -303,7 +309,7 @@ HTML::FormHandler::Validate - validation role (internal)
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -66,7 +66,7 @@ HTML::FormHandler::Widget::ApplyRole - role to apply widgets
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -34,7 +34,7 @@ HTML::FormHandler::Widget::Block::Bootstrap - block to format bare form element
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -157,7 +157,7 @@ HTML::FormHandler::Widget::Block - base block renderer
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -40,7 +40,7 @@ HTML::FormHandler::Widget::Field::Button - button field rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -43,7 +43,7 @@ HTML::FormHandler::Widget::Field::ButtonTag - button field rendering widget, usi
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -40,7 +40,7 @@ HTML::FormHandler::Widget::Field::Captcha - Captcha field rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -42,7 +42,7 @@ HTML::FormHandler::Widget::Field::Checkbox - HTML attributes field role
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -104,7 +104,7 @@ HTML::FormHandler::Widget::Field::CheckboxGroup - checkbox group field role
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -46,7 +46,7 @@ HTML::FormHandler::Widget::Field::Compound - compound field widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -45,7 +45,7 @@ HTML::FormHandler::Widget::Field::Hidden - hidden field rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -107,7 +107,7 @@ HTML::FormHandler::Widget::Field::HorizCheckboxGroup - checkbox group field role
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -20,7 +20,7 @@ HTML::FormHandler::Widget::Field::NoRender - no rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -42,7 +42,7 @@ HTML::FormHandler::Widget::Field::Password - password rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -122,7 +122,7 @@ HTML::FormHandler::Widget::Field::RadioGroup - radio group rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -43,7 +43,7 @@ HTML::FormHandler::Widget::Field::Repeatable - repeatable field widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -40,7 +40,7 @@ HTML::FormHandler::Widget::Field::Reset - reset field rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -25,7 +25,7 @@ HTML::FormHandler::Widget::Field::Role::HTMLAttributes - apply HTML attributes
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -32,7 +32,7 @@ HTML::FormHandler::Widget::Field::Role::SelectedOption - allow setting options f
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -119,7 +119,7 @@ HTML::FormHandler::Widget::Field::Select - select field rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -41,7 +41,7 @@ HTML::FormHandler::Widget::Field::Span - button field rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -40,7 +40,7 @@ HTML::FormHandler::Widget::Field::Submit - submit field rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -43,7 +43,7 @@ HTML::FormHandler::Widget::Field::Text - text field rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -43,7 +43,7 @@ HTML::FormHandler::Widget::Field::Textarea - textarea rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -40,7 +40,7 @@ HTML::FormHandler::Widget::Field::Upload - update field rendering widget
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -53,7 +53,7 @@ HTML::FormHandler::Widget::Form::Role::HTMLAttributes - set HTML attributes on t
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -8,6 +8,20 @@ with 'HTML::FormHandler::Widget::Form::Role::HTMLAttributes';
our $VERSION = 0.01;
+sub renderx {
+ my ($self, %args) = @_;
+
+ if ( keys %args > 0 ) {
+ while ( my ( $key, $value ) = each %args ) {
+ confess "invalid attribute '$key' passed to renderx"
+ unless $self->can($key);
+ $self->$key($value);
+ }
+ }
+ $self->render;
+}
+
+
sub render {
my ($self) = @_;
@@ -152,7 +166,7 @@ HTML::FormHandler::Widget::Form::Simple - widget to render a form with divs
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -48,7 +48,7 @@ HTML::FormHandler::Widget::Form::Table - render a form with a table layout
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -27,7 +27,7 @@ HTML::FormHandler::Widget::Theme::Bootstrap - sample bootstrap theme
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -29,7 +29,7 @@ HTML::FormHandler::Widget::Theme::Bootstrap3 - sample Bootstrap3 theme
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -7,6 +7,8 @@ use Moose::Role;
sub render_form_messages {
my ( $self, $result ) = @_;
+ return '' if $self->get_tag('no_form_message_div');
+
$result ||= $self->result;
my $output = '';
if ( $result->has_form_errors || $result->has_errors ) {
@@ -54,7 +56,7 @@ HTML::FormHandler::Widget::Theme::BootstrapFormMessages - role to render form me
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -157,6 +157,34 @@ sub render_class {
return process_attrs($self->wrapper_attributes($result));
}
+sub render_elementx {
+ my ($self, %args) = @_;
+ my $result ||= $self->result;
+
+ if ( keys %args > 0 ) {
+ while ( my ( $key, $value ) = each %args ) {
+ confess "invalid attribute '$key' passed to render_elementx"
+ unless $self->can($key);
+ $self->$key($value);
+ }
+ }
+ $self->render_element($result);
+}
+
+sub renderx {
+ my ($self, %args) = @_;
+ my $result ||= $self->result;
+
+ if ( keys %args > 0 ) {
+ while ( my ( $key, $value ) = each %args ) {
+ confess "invalid attribute '$key' passed to renderx"
+ unless $self->can($key);
+ $self->$key($value);
+ }
+ }
+ $self->render($result);
+}
+
use namespace::autoclean;
1;
@@ -172,7 +200,7 @@ HTML::FormHandler::Widget::Wrapper::Base - common methods for widget wrappers
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -105,7 +105,7 @@ HTML::FormHandler::Widget::Wrapper::Bootstrap - Twitter Bootstrap 2.0 field wrap
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -4,7 +4,7 @@ package HTML::FormHandler::Widget::Wrapper::Bootstrap3;
use Moose::Role;
use namespace::autoclean;
use HTML::FormHandler::Render::Util ('process_attrs');
-use List::AllUtils ('any');
+use List::Util 1.33 ('any');
with 'HTML::FormHandler::Widget::Wrapper::Base';
@@ -189,7 +189,7 @@ HTML::FormHandler::Widget::Wrapper::Bootstrap3 - Twitter Bootstrap 3.0 field wra
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -38,7 +38,7 @@ HTML::FormHandler::Widget::Wrapper::Fieldset - fieldset field wrapper
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -21,7 +21,7 @@ HTML::FormHandler::Widget::Wrapper::None - wrapper that doesn't wrap
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 DESCRIPTION
@@ -88,7 +88,7 @@ HTML::FormHandler::Widget::Wrapper::Simple - simple field wrapper
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -50,7 +50,7 @@ HTML::FormHandler::Widget::Wrapper::SimpleInline - simple field wrapper
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -43,7 +43,7 @@ HTML::FormHandler::Widget::Wrapper::Table - wrapper class for table layout
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -37,7 +37,7 @@ HTML::FormHandler::Widget::Wrapper::TableInline - wrapper class for table layout
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 AUTHOR
@@ -113,7 +113,7 @@ HTML::FormHandler::Wizard - create a multi-page form
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -25,7 +25,7 @@ use Data::Clone;
use 5.008;
# always use 5 digits after decimal because of toolchain issues
-our $VERSION = '0.40059';
+our $VERSION = '0.40060';
# for consistency in api with field nodes
@@ -820,7 +820,7 @@ HTML::FormHandler - HTML forms using Moose
=head1 VERSION
-version 0.40059
+version 0.40060
=head1 SYNOPSIS
@@ -0,0 +1,339 @@
+
+BEGIN {
+ unless ($ENV{AUTHOR_TESTING}) {
+ require Test::More;
+ Test::More::plan(skip_all => 'these tests are for testing by the author');
+ }
+}
+
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::EOL 0.18
+
+use Test::More 0.88;
+use Test::EOL;
+
+my @files = (
+ 'lib/HTML/FormHandler.pm',
+ 'lib/HTML/FormHandler/Base.pm',
+ 'lib/HTML/FormHandler/Blocks.pm',
+ 'lib/HTML/FormHandler/BuildFields.pm',
+ 'lib/HTML/FormHandler/BuildPages.pm',
+ 'lib/HTML/FormHandler/Field.pm',
+ 'lib/HTML/FormHandler/Field/AddElement.pm',
+ 'lib/HTML/FormHandler/Field/BoolSelect.pm',
+ 'lib/HTML/FormHandler/Field/Boolean.pm',
+ 'lib/HTML/FormHandler/Field/Button.pm',
+ 'lib/HTML/FormHandler/Field/Captcha.pm',
+ 'lib/HTML/FormHandler/Field/Checkbox.pm',
+ 'lib/HTML/FormHandler/Field/Compound.pm',
+ 'lib/HTML/FormHandler/Field/Date.pm',
+ 'lib/HTML/FormHandler/Field/DateMDY.pm',
+ 'lib/HTML/FormHandler/Field/DateTime.pm',
+ 'lib/HTML/FormHandler/Field/Display.pm',
+ 'lib/HTML/FormHandler/Field/Duration.pm',
+ 'lib/HTML/FormHandler/Field/Email.pm',
+ 'lib/HTML/FormHandler/Field/File.pm',
+ 'lib/HTML/FormHandler/Field/Float.pm',
+ 'lib/HTML/FormHandler/Field/Hidden.pm',
+ 'lib/HTML/FormHandler/Field/Hour.pm',
+ 'lib/HTML/FormHandler/Field/IntRange.pm',
+ 'lib/HTML/FormHandler/Field/Integer.pm',
+ 'lib/HTML/FormHandler/Field/Minute.pm',
+ 'lib/HTML/FormHandler/Field/Money.pm',
+ 'lib/HTML/FormHandler/Field/Month.pm',
+ 'lib/HTML/FormHandler/Field/MonthDay.pm',
+ 'lib/HTML/FormHandler/Field/MonthName.pm',
+ 'lib/HTML/FormHandler/Field/Multiple.pm',
+ 'lib/HTML/FormHandler/Field/Nested.pm',
+ 'lib/HTML/FormHandler/Field/NoValue.pm',
+ 'lib/HTML/FormHandler/Field/NonEditable.pm',
+ 'lib/HTML/FormHandler/Field/Password.pm',
+ 'lib/HTML/FormHandler/Field/PasswordConf.pm',
+ 'lib/HTML/FormHandler/Field/PosInteger.pm',
+ 'lib/HTML/FormHandler/Field/PrimaryKey.pm',
+ 'lib/HTML/FormHandler/Field/Repeatable.pm',
+ 'lib/HTML/FormHandler/Field/Repeatable/Instance.pm',
+ 'lib/HTML/FormHandler/Field/Reset.pm',
+ 'lib/HTML/FormHandler/Field/Result.pm',
+ 'lib/HTML/FormHandler/Field/RmElement.pm',
+ 'lib/HTML/FormHandler/Field/Second.pm',
+ 'lib/HTML/FormHandler/Field/Select.pm',
+ 'lib/HTML/FormHandler/Field/SelectCSV.pm',
+ 'lib/HTML/FormHandler/Field/Submit.pm',
+ 'lib/HTML/FormHandler/Field/Text.pm',
+ 'lib/HTML/FormHandler/Field/TextArea.pm',
+ 'lib/HTML/FormHandler/Field/TextCSV.pm',
+ 'lib/HTML/FormHandler/Field/Upload.pm',
+ 'lib/HTML/FormHandler/Field/Weekday.pm',
+ 'lib/HTML/FormHandler/Field/Year.pm',
+ 'lib/HTML/FormHandler/Fields.pm',
+ 'lib/HTML/FormHandler/Foo.pm',
+ 'lib/HTML/FormHandler/I18N.pm',
+ 'lib/HTML/FormHandler/I18N/ar_kw.pm',
+ 'lib/HTML/FormHandler/I18N/bg_bg.pm',
+ 'lib/HTML/FormHandler/I18N/cs_cz.pm',
+ 'lib/HTML/FormHandler/I18N/de_de.pm',
+ 'lib/HTML/FormHandler/I18N/en_us.pm',
+ 'lib/HTML/FormHandler/I18N/hu_hu.pm',
+ 'lib/HTML/FormHandler/I18N/it_it.pm',
+ 'lib/HTML/FormHandler/I18N/ja_jp.pm',
+ 'lib/HTML/FormHandler/I18N/pt_br.pm',
+ 'lib/HTML/FormHandler/I18N/ru_ru.pm',
+ 'lib/HTML/FormHandler/I18N/sv_se.pm',
+ 'lib/HTML/FormHandler/I18N/tr_tr.pm',
+ 'lib/HTML/FormHandler/I18N/ua_ua.pm',
+ 'lib/HTML/FormHandler/InitResult.pm',
+ 'lib/HTML/FormHandler/Manual.pod',
+ 'lib/HTML/FormHandler/Manual/Catalyst.pod',
+ 'lib/HTML/FormHandler/Manual/Cookbook.pod',
+ 'lib/HTML/FormHandler/Manual/Database.pod',
+ 'lib/HTML/FormHandler/Manual/Defaults.pod',
+ 'lib/HTML/FormHandler/Manual/Errors.pod',
+ 'lib/HTML/FormHandler/Manual/Fields.pod',
+ 'lib/HTML/FormHandler/Manual/FromDFV.pod',
+ 'lib/HTML/FormHandler/Manual/FromFF.pod',
+ 'lib/HTML/FormHandler/Manual/InflationDeflation.pod',
+ 'lib/HTML/FormHandler/Manual/Intro.pod',
+ 'lib/HTML/FormHandler/Manual/Reference.pod',
+ 'lib/HTML/FormHandler/Manual/Rendering.pod',
+ 'lib/HTML/FormHandler/Manual/RenderingCookbook.pod',
+ 'lib/HTML/FormHandler/Manual/Templates.pod',
+ 'lib/HTML/FormHandler/Manual/Testing.pod',
+ 'lib/HTML/FormHandler/Manual/Tutorial.pod',
+ 'lib/HTML/FormHandler/Manual/Validation.pod',
+ 'lib/HTML/FormHandler/Merge.pm',
+ 'lib/HTML/FormHandler/Meta/Role.pm',
+ 'lib/HTML/FormHandler/Model.pm',
+ 'lib/HTML/FormHandler/Model/CDBI.pm',
+ 'lib/HTML/FormHandler/Model/Object.pm',
+ 'lib/HTML/FormHandler/Moose.pm',
+ 'lib/HTML/FormHandler/Moose/Role.pm',
+ 'lib/HTML/FormHandler/Page.pm',
+ 'lib/HTML/FormHandler/Page/Simple.pm',
+ 'lib/HTML/FormHandler/Pages.pm',
+ 'lib/HTML/FormHandler/Params.pm',
+ 'lib/HTML/FormHandler/Render/RepeatableJs.pm',
+ 'lib/HTML/FormHandler/Render/Simple.pm',
+ 'lib/HTML/FormHandler/Render/Table.pm',
+ 'lib/HTML/FormHandler/Render/Util.pm',
+ 'lib/HTML/FormHandler/Render/WithTT.pm',
+ 'lib/HTML/FormHandler/Result.pm',
+ 'lib/HTML/FormHandler/Result/Role.pm',
+ 'lib/HTML/FormHandler/Test.pm',
+ 'lib/HTML/FormHandler/TraitFor/Captcha.pm',
+ 'lib/HTML/FormHandler/TraitFor/I18N.pm',
+ 'lib/HTML/FormHandler/TraitFor/Types.pm',
+ 'lib/HTML/FormHandler/Traits.pm',
+ 'lib/HTML/FormHandler/Types.pm',
+ 'lib/HTML/FormHandler/Validate.pm',
+ 'lib/HTML/FormHandler/Widget/ApplyRole.pm',
+ 'lib/HTML/FormHandler/Widget/Block.pm',
+ 'lib/HTML/FormHandler/Widget/Block/Bootstrap.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Button.pm',
+ 'lib/HTML/FormHandler/Widget/Field/ButtonTag.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Captcha.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Checkbox.pm',
+ 'lib/HTML/FormHandler/Widget/Field/CheckboxGroup.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Compound.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Hidden.pm',
+ 'lib/HTML/FormHandler/Widget/Field/HorizCheckboxGroup.pm',
+ 'lib/HTML/FormHandler/Widget/Field/NoRender.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Password.pm',
+ 'lib/HTML/FormHandler/Widget/Field/RadioGroup.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Repeatable.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Reset.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Role/HTMLAttributes.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Role/SelectedOption.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Select.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Span.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Submit.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Text.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Textarea.pm',
+ 'lib/HTML/FormHandler/Widget/Field/Upload.pm',
+ 'lib/HTML/FormHandler/Widget/Form/Role/HTMLAttributes.pm',
+ 'lib/HTML/FormHandler/Widget/Form/Simple.pm',
+ 'lib/HTML/FormHandler/Widget/Form/Table.pm',
+ 'lib/HTML/FormHandler/Widget/Theme/Bootstrap.pm',
+ 'lib/HTML/FormHandler/Widget/Theme/Bootstrap3.pm',
+ 'lib/HTML/FormHandler/Widget/Theme/BootstrapFormMessages.pm',
+ 'lib/HTML/FormHandler/Widget/Wrapper/Base.pm',
+ 'lib/HTML/FormHandler/Widget/Wrapper/Bootstrap.pm',
+ 'lib/HTML/FormHandler/Widget/Wrapper/Bootstrap3.pm',
+ 'lib/HTML/FormHandler/Widget/Wrapper/Fieldset.pm',
+ 'lib/HTML/FormHandler/Widget/Wrapper/None.pm',
+ 'lib/HTML/FormHandler/Widget/Wrapper/Simple.pm',
+ 'lib/HTML/FormHandler/Widget/Wrapper/SimpleInline.pm',
+ 'lib/HTML/FormHandler/Widget/Wrapper/Table.pm',
+ 'lib/HTML/FormHandler/Widget/Wrapper/TableInline.pm',
+ 'lib/HTML/FormHandler/Wizard.pm',
+ 't/01app.t',
+ 't/author-eol.t',
+ 't/basic.t',
+ 't/blocks/basic.t',
+ 't/blocks/block_list.t',
+ 't/blocks/blocktags.t',
+ 't/blocks/loading.t',
+ 't/blocks/nested.t',
+ 't/blocks/render_units.t',
+ 't/bootstrap/basic.t',
+ 't/bootstrap/control_states.t',
+ 't/bootstrap/controls.t',
+ 't/bootstrap/ext_controls.t',
+ 't/bootstrap/inline.t',
+ 't/bootstrap/other.t',
+ 't/bootstrap/search.t',
+ 't/bootstrap3/basic.t',
+ 't/bootstrap3/controls.t',
+ 't/bootstrap3/horiz.t',
+ 't/bootstrap3/horiz_checkboxgroup.t',
+ 't/bootstrap3/inlinecheckboxes.t',
+ 't/bootstrap3/layout_classes.t',
+ 't/compound/basic.t',
+ 't/compound/default.t',
+ 't/compound/empty.t',
+ 't/compound/include.t',
+ 't/compound/select.t',
+ 't/errors/basic.t',
+ 't/errors/compound.t',
+ 't/errors/form_messages.t',
+ 't/errors/messages.t',
+ 't/errors/req_message.t',
+ 't/field_setup/checkbox.t',
+ 't/field_setup/compound_update_fields.t',
+ 't/field_setup/defaults.t',
+ 't/field_setup/disabled.t',
+ 't/field_setup/id.t',
+ 't/field_setup/inactive.t',
+ 't/field_setup/init_object.t',
+ 't/field_setup/input_param.t',
+ 't/field_setup/missing.t',
+ 't/field_setup/plus_field.t',
+ 't/field_setup/update_fields.t',
+ 't/field_setup/update_subfields.t',
+ 't/fields/dates.t',
+ 't/fields/display.t',
+ 't/fields/fields.t',
+ 't/fields/float.t',
+ 't/fields/formhandlerx.t',
+ 't/fields/novalue.t',
+ 't/fields/password.t',
+ 't/fields/repeatable.t',
+ 't/fields/select.t',
+ 't/fields/select2.t',
+ 't/fields/selectcsv.t',
+ 't/fields/textcsv.t',
+ 't/form_setup/api.t',
+ 't/form_setup/clone.t',
+ 't/form_setup/compound_field_list.t',
+ 't/form_setup/config.t',
+ 't/form_setup/dynamic.t',
+ 't/form_setup/include.t',
+ 't/form_setup/init_obj.t',
+ 't/form_setup/no_update.t',
+ 't/form_setup/posted.t',
+ 't/form_setup/render_roles.t',
+ 't/infl_defl/comp_field.t',
+ 't/infl_defl/default.t',
+ 't/infl_defl/defl_lives.t',
+ 't/infl_defl/infl_defl.t',
+ 't/infl_defl/infl_transform.t',
+ 't/infl_defl/variations.t',
+ 't/lib/BookDB/Form/Upload.pm',
+ 't/lib/Field/Address.pm',
+ 't/lib/Field/AltText.pm',
+ 't/lib/Field/MyField.pm',
+ 't/lib/Form/Address.pm',
+ 't/lib/Form/AddressRole.pm',
+ 't/lib/Form/Multiple.pm',
+ 't/lib/Form/MultipleRole.pm',
+ 't/lib/Form/NoExtForm.pm',
+ 't/lib/Form/Person.pm',
+ 't/lib/Form/PersonRole.pm',
+ 't/lib/Form/Test.pm',
+ 't/lib/Form/Two.pm',
+ 't/lib/MyApp/Component/Section.pm',
+ 't/lib/MyApp/I18N/abc_de.pm',
+ 't/lib/Widget/Block/Test.pm',
+ 't/lib/Widget/Field/Omega.pm',
+ 't/lib/Widget/Field/TestWidget.pm',
+ 't/memory_cycles.t',
+ 't/moose/build_id.t',
+ 't/moose/composed.t',
+ 't/moose/field_traits.t',
+ 't/moose/no_extend.t',
+ 't/moose/subclass_roles.t',
+ 't/release-no-tabs.t',
+ 't/render/actions.t',
+ 't/render/array.t',
+ 't/render/basic.t',
+ 't/render/checkbox.t',
+ 't/render/checkbox_group.t',
+ 't/render/classes.t',
+ 't/render/compound.t',
+ 't/render/compound2.t',
+ 't/render/display.t',
+ 't/render/errors.t',
+ 't/render/escaping.t',
+ 't/render/ff.t',
+ 't/render/filter.t',
+ 't/render/form_errors.t',
+ 't/render/get_tag.t',
+ 't/render/html5_attributes.t',
+ 't/render/html_attr.t',
+ 't/render/html_attributes.t',
+ 't/render/inline.t',
+ 't/render/label.t',
+ 't/render/noneditable.t',
+ 't/render/optgroup.t',
+ 't/render/radio_group.t',
+ 't/render/rep_fieldset.t',
+ 't/render/rep_wrapper.t',
+ 't/render/repeatable.t',
+ 't/render/result.t',
+ 't/render/select.t',
+ 't/render/simple.t',
+ 't/render/submit.t',
+ 't/render/table.t',
+ 't/render/tags.t',
+ 't/render/util.t',
+ 't/render/widget_loading.t',
+ 't/render/widget_tags.t',
+ 't/render/widgets.t',
+ 't/render/with_class.t',
+ 't/render/withtt.t',
+ 't/repeatable/defaults.t',
+ 't/repeatable/empty.t',
+ 't/repeatable/has_many.t',
+ 't/repeatable/hash.t',
+ 't/repeatable/js.t',
+ 't/repeatable/list.t',
+ 't/repeatable/nested.t',
+ 't/repeatable/nested2.t',
+ 't/repeatable/num_extra.t',
+ 't/repeatable/reload.t',
+ 't/repeatable/set_methods.t',
+ 't/repeatable/subfield.t',
+ 't/result/basic.t',
+ 't/result/blocks.t',
+ 't/result/compound.t',
+ 't/result/errors.t',
+ 't/result/repeatable.t',
+ 't/structured.t',
+ 't/template.t',
+ 't/validation/apply.t',
+ 't/validation/constraints.t',
+ 't/validation/dependency.t',
+ 't/validation/filters.t',
+ 't/validation/reqwhen.t',
+ 't/validation/types.t',
+ 't/validation/validate_coderef.t',
+ 't/validation/when.t',
+ 't/var/form1.pl',
+ 't/var/form1.yml',
+ 't/wizard/basic.t'
+);
+
+eol_unix_ok($_, { trailing_whitespace => 1 }) foreach @files;
+done_testing;
@@ -9,36 +9,36 @@ use HTML::FormHandler::Test;
extends 'HTML::FormHandler';
has '+widget_wrapper' => ( default => 'Bootstrap3');
- sub build_form_tags {{
- 'layout_classes' => {
- label_class => ['col-lg-2'],
- element_wrapper_class => ['col-lg-10'],
- no_label_element_wrapper_class => ['col-lg-offset-2'],
- },
+ sub build_form_tags {{
+ 'layout_classes' => {
+ label_class => ['col-lg-2'],
+ element_wrapper_class => ['col-lg-10'],
+ no_label_element_wrapper_class => ['col-lg-offset-2'],
+ },
}}
- has_field 'Checkboxes' => (
+ has_field 'Checkboxes' => (
type => 'Compound',
do_wrapper => 1,
do_label => 1,
- );
- has_field 'Checkboxes.option1' => (
+ );
+ has_field 'Checkboxes.option1' => (
type => 'Checkbox',
do_wrapper => 0,
do_label => 0,
tags => { 'inline' => 1 },
- );
- has_field 'Checkboxes.option2' => (
+ );
+ has_field 'Checkboxes.option2' => (
type => 'Checkbox',
do_wrapper => 0,
do_label => 0,
tags => { 'inline' => 1 },
- );
- has_field 'Checkboxes.option3' => (
+ );
+ has_field 'Checkboxes.option3' => (
type => 'Checkbox',
do_wrapper => 0,
do_label => 0,
tags => { 'inline' => 1 },
- );
+ );
}
my $form = MyApp::Form::Test->new;
@@ -46,21 +46,21 @@ $form->process;
my $expected = '
<div class="form-group" id="Checkboxes">
- <label class="col-lg-2 control-label" for="Checkboxes">Checkboxes</label>
- <div class="col-lg-10">
- <label class="checkbox-inline" for="Checkboxes.option1">
- <input type="checkbox" name="Checkboxes.option1" id="Checkboxes.option1" value="1" />
- Option1
- </label>
- <label class="checkbox-inline" for="Checkboxes.option2">
- <input type="checkbox" name="Checkboxes.option2" id="Checkboxes.option2" value="1" />
- Option2
- </label>
- <label class="checkbox-inline" for="Checkboxes.option3">
- <input type="checkbox" name="Checkboxes.option3" id="Checkboxes.option3" value="1" />
- Option3
- </label>
- </div>
+ <label class="col-lg-2 control-label" for="Checkboxes">Checkboxes</label>
+ <div class="col-lg-10">
+ <label class="checkbox-inline" for="Checkboxes.option1">
+ <input type="checkbox" name="Checkboxes.option1" id="Checkboxes.option1" value="1" />
+ Option1
+ </label>
+ <label class="checkbox-inline" for="Checkboxes.option2">
+ <input type="checkbox" name="Checkboxes.option2" id="Checkboxes.option2" value="1" />
+ Option2
+ </label>
+ <label class="checkbox-inline" for="Checkboxes.option3">
+ <input type="checkbox" name="Checkboxes.option3" id="Checkboxes.option3" value="1" />
+ Option3
+ </label>
+ </div>
</div>
';
@@ -1,6 +1,7 @@
use strict;
use warnings;
use Test::More;
+use Test::Warn;
use HTML::FormHandler::I18N;
@@ -181,4 +182,46 @@ $form->process( params => $fif );
ok( $form->validated, 'form validated' );
is( $form->field('my_date')->value->mdy, '02-15-2010', 'right value for my_date' );
+#
+# HTML5 date-format restrictions
+#
+{
+ package Test::Date::HTML5;
+ use HTML::FormHandler::Moose;
+ extends 'HTML::FormHandler';
+ with 'HTML::FormHandler::Render::Simple';
+
+ has '+is_html5' => ( default => 1 );
+ has_field 'date' => ( type => 'Date', format => 'mm/dd/yy');
+}
+
+$form = Test::Date::HTML5->new;
+
+warnings_like { $form->render } [qr/HTML5/, qr/HTML5/],
+ "Warning when rendering an HTML5 form with a non-ISO date format";
+
+{
+ package Test::Date::HTML5;
+ has_field '+date' => ( format => 'yy-mm-dd' );
+}
+
+ok(
+ sub { $form = Test::Date::HTML5->new; $form->render; },
+ "HTML5 renders fine with ISO date format",
+);
+
+{
+ package Test::Date::HTML5::WithDefault;
+ use HTML::FormHandler::Moose;
+ extends 'HTML::FormHandler';
+ with 'HTML::FormHandler::Render::Simple';
+
+ has_field 'date' => ( type => 'Date' );
+}
+
+ok(
+ sub { $form = Test::Date::HTML5::WithDefault->new; $form->render; },
+ "HTML5 renders fine with default date format",
+);
+
done_testing;
@@ -1,16 +0,0 @@
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-use strict;
-use warnings;
-use Test::More;
-
-eval 'use Test::EOL';
-plan skip_all => 'Test::EOL required' if $@;
-
-all_perl_files_ok({ trailing_whitespace => 1 });
@@ -9,7 +9,7 @@ BEGIN {
use strict;
use warnings;
-# this test was generated with Dist::Zilla::Plugin::NoTabsTests 0.05
+# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.05
use Test::More 0.88;
use Test::NoTabs;
@@ -22,7 +22,7 @@ use_ok('HTML::FormHandler::Render::Table');
has_field 'foo' => ( element_class => 'schoen', style => 'bunt', title => 'MyTitle', required => 1, maxlength=> 10 );
has_field 'bar' => ( element_attr => { arbitrary => 'something', title => 'AltTitle' } );
- has_field 'range' => ( type => "Integer", range_start => 5, range_end => 10 );
+ has_field 'range' => ( type => "Integer", range_start => 5, range_end => 10, html5_type_attr => 'tel' );
has_field 'email' => ( type => "Email");
has_field 'date' => ( type => "Date");
has_field 'money' => ( type => "Money");
@@ -82,7 +82,7 @@ while ( my ( $key, $res ) = each %results ) {
like( $res, qr/input type="number" name="money"/, "$key Form got the html5 type" );
like( $res, qr/input type="date" name="date"/, "$key Form got the html5 type" );
like( $res, qr/input type="email" name="email"/, "$key Form got the html5 type" );
- like( $res, qr/input type="number" name="range"/, "$key Form got the html5 type" );
+ like( $res, qr/input type="tel" name="range"/, "$key Form got the html5 type" );
like( $res, qr/max="10"/, "$key Form got the html5 max attribute" );
like( $res, qr/min="5"/, "$key Form got the html5 min attribute" );
@@ -0,0 +1,54 @@
+use strict;
+use warnings;
+use Test::More;
+use HTML::FormHandler::Test;
+
+{
+ package MyApp::Form::Test;
+ use HTML::FormHandler::Moose;
+ extends 'HTML::FormHandler';
+
+ has '+name' => ( default => 'test-form' );
+ has_field 'foo';
+ has_field 'bar';
+
+}
+
+my $form = MyApp::Form::Test->new;
+ok( $form );
+
+$form->process( params => {} );
+
+my $rendered = $form->field('foo')->render_elementx( element_class => ['ex111', 'cg33'] );
+
+my $expected = '
+<input class="ex111 cg33" id="foo" name="foo" type="text" value="" />
+';
+
+$rendered = $form->field('bar')->renderx( element_class => ['ex113', 'cg34'] );
+$expected = '
+<div>
+ <label for="bar">Bar</label>
+ <input class="ex113 cg34" id="bar" name="bar" type="text" value="" />
+</div>
+';
+
+is_html( $rendered, $expected );
+
+$rendered = $form->renderx( form_element_class => ['ggg', 'www'] );
+$expected = '
+<form class="ggg www" id="test-form" method="post">
+<div class="form_messages"></div>
+<div>
+ <label for="foo">Foo</label>
+ <input class="ex111 cg33" id="foo" name="foo" type="text" value="" />
+</div>
+ <div><label for="bar">Bar</label>
+ <input class="ex113 cg34" id="bar" name="bar" type="text" value="" />
+</div>
+</form>
+';
+is_html( $rendered, $expected );
+
+done_testing;
+
@@ -86,15 +86,15 @@ is( $field->errors->[0], 'Email is not valid', 'error from Email' );
my @test = (
IPAddress => \&IPAddress =>
- [qw(0.0.0.0 01.001.0.00 198.168.0.101 255.255.255.255)],
- [qw(1 2.33 4.56.789 198.300.0.101 0.-1.13.255)],
+ [qw(0.0.0.0 01.001.0.00 198.168.0.101 255.255.255.255)],
+ [qw(1 2.33 4.56.789 198.300.0.101 0.-1.13.255)],
'Not a valid IP address',
NoSpaces => \&NoSpaces =>
- [qw(a 1 _+~ *), '#'], ['a b', "x\ny", "foo\tbar"],
+ [qw(a 1 _+~ *), '#'], ['a b', "x\ny", "foo\tbar"],
'Must not contain spaces',
WordChars => \&WordChars =>
- [qw(abc 8 ___ 90_i 0)],
- ['a b', "x\ny", "foo\tbar", 'c++', 'C#', '$1,000,000'],
+ [qw(abc 8 ___ 90_i 0)],
+ ['a b', "x\ny", "foo\tbar", 'c++', 'C#', '$1,000,000'],
'Must be made up of letters, digits, and underscores',
NotAllDigits => \&NotAllDigits =>
[qw(a 1a . a=1 1.23), 'a 1'], [qw(0 1 12 03450)],
@@ -125,9 +125,9 @@ while (my ($name, $type, $good, $bad, $error_msg) = splice @test, 0, 5) {
@test = (
Lower => \&Lower =>
- [A => 'a', AB => 'ab', Abc => 'abc', abc => 'abc', 'A-z' => 'a-z', '1 + X' => '1 + x'],
+ [A => 'a', AB => 'ab', Abc => 'abc', abc => 'abc', 'A-z' => 'a-z', '1 + X' => '1 + x'],
Upper => \&Upper =>
- [a => 'A', ab => 'AB', Abc => 'ABC', ABC => 'ABC', 'A-z' => 'A-Z', '1 + x' => '1 + X'],
+ [a => 'A', ab => 'AB', Abc => 'ABC', ABC => 'ABC', 'A-z' => 'A-Z', '1 + x' => '1 + X'],
);
while (my ($name, $type, $trans) = splice @test, 0, 3) {
@@ -135,16 +135,16 @@ while (my ($name, $type, $trans) = splice @test, 0, 3) {
$field = HTML::FormHandler::Field->new(name => 'Test', apply => [&$type]);
$field->build_result;
while (my ($from, $to) = splice @trans, 0, 2) {
- $field->_set_input($from);
- ok($field->validate_field, "$name validated");
- is($field->value, $to , "$name field transformation");
+ $field->_set_input($from);
+ ok($field->validate_field, "$name validated");
+ is($field->value, $to , "$name field transformation");
}
}
SKIP: {
eval { require Type::Tiny };
- skip "Type::Tiny not installed", 9 if $@;
+ skip "Type::Tiny not installed", 15 if $@;
{
package Test::Form::Type::Tiny;
@@ -152,6 +152,13 @@ SKIP: {
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
+ use Type::Tiny::Enum;
+ my $ENUM = Type::Tiny::Enum->new(
+ name => "Meta",
+ values => [qw( foo bar )],
+ message => sub { "$_ ain't meta" },
+ );
+
my $NUM = Type::Tiny->new(
name => "Number",
constraint => sub { $_ =~ /^\d+$/ },
@@ -160,6 +167,8 @@ SKIP: {
has_field 'test_a' => ( apply => [ $NUM ] );
has_field 'test_b' => ( apply => [ { type => $NUM } ] );
+ has_field 'test_c' => ( apply => [ $ENUM ] );
+ has_field 'test_d' => ( apply => [ { type => $ENUM } ] );
}
my $form = Test::Form::Type::Tiny->new;
@@ -169,22 +178,32 @@ SKIP: {
my $params = {
test_a => 'str1',
test_b => 'str2',
+ test_c => 'str3',
+ test_d => 'str4',
};
$form->process($params);
ok( !$form->validated, 'form did not validate' );
ok( $form->field('test_a')->has_errors, 'errors on Type::Tiny type');
ok( $form->field('test_b')->has_errors, 'errors on Type::Tiny type');
+ ok( $form->field('test_c')->has_errors, 'errors on Type::Tiny::Enum type');
+ ok( $form->field('test_d')->has_errors, 'errors on Type::Tiny::Enum type');
is( $form->field('test_a')->errors->[0], "str1 ain't a number", 'error from Type::Tiny' );
is( $form->field('test_b')->errors->[0], "str2 ain't a number", 'error from Type::Tiny' );
+ is( $form->field('test_c')->errors->[0], "str3 ain't meta", 'error from Type::Tiny::Enum' );
+ is( $form->field('test_d')->errors->[0], "str4 ain't meta", 'error from Type::Tiny::Enum' );
$params = {
test_a => '123',
test_b => '456',
+ test_c => 'foo',
+ test_d => 'bar',
};
$form->process($params);
ok( $form->validated, 'form validated' );
ok( !$form->field('test_a')->has_errors, 'no errors on Type::Tiny type');
ok( !$form->field('test_b')->has_errors, 'no errors on Type::Tiny type');
+ ok( !$form->field('test_c')->has_errors, 'no errors on Type::Tiny::Enum type');
+ ok( !$form->field('test_d')->has_errors, 'no errors on Type::Tiny::Enum type');
}
done_testing;