├── .gitignore ├── LICENSE ├── README.md ├── aem_touch_ui_validation_screenshot.png ├── clientlib-touch-ui-validation ├── .content.xml ├── LICENSE ├── css.txt ├── css │ ├── autocomplete.css │ ├── colorpicker.css │ ├── multifield.css │ ├── pathbrowser.css │ └── radiogroup.css ├── js.txt └── js │ ├── autocomplete.js │ ├── colorpicker.js │ ├── customEvents.js │ ├── multifield.js │ ├── pathbrowser.js │ ├── radiogroup.js │ ├── textfield.js │ └── utils.js ├── demo ├── pom.xml ├── ui.apps │ ├── pom.xml │ ├── src │ │ └── main │ │ │ └── content │ │ │ ├── META-INF │ │ │ └── vault │ │ │ │ ├── config.xml │ │ │ │ ├── filter.xml │ │ │ │ └── settings.xml │ │ │ └── jcr_root │ │ │ ├── apps │ │ │ ├── .content.xml │ │ │ └── aem-touch-ui-validation │ │ │ │ ├── components │ │ │ │ ├── content │ │ │ │ │ ├── colctrl │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ └── clientlib │ │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ │ ├── css.txt │ │ │ │ │ │ │ └── style.css │ │ │ │ │ ├── colorpicker │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── colorpicker.html │ │ │ │ │ │ └── dialog.xml │ │ │ │ │ ├── multifield │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── multifield.html │ │ │ │ │ ├── password │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── password.html │ │ │ │ │ ├── pathbrowser │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── pathbrowser.html │ │ │ │ │ ├── radiogroup │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── radiogroup.html │ │ │ │ │ ├── textarea │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── textarea.html │ │ │ │ │ ├── textfield │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── textfield.html │ │ │ │ │ ├── title │ │ │ │ │ │ └── .content.xml │ │ │ │ │ └── userpicker │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── userpicker.html │ │ │ │ └── structure │ │ │ │ │ ├── logo │ │ │ │ │ └── .content.xml │ │ │ │ │ ├── page │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── clientlib │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── css.txt │ │ │ │ │ │ └── style.css │ │ │ │ │ ├── page.html │ │ │ │ │ └── partials │ │ │ │ │ │ ├── footlibs.html │ │ │ │ │ │ ├── head.html │ │ │ │ │ │ ├── head.js │ │ │ │ │ │ ├── headlibs.html │ │ │ │ │ │ ├── main.html │ │ │ │ │ │ └── main.js │ │ │ │ │ └── topnav │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── clientlib │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── css.txt │ │ │ │ │ └── style.css │ │ │ │ │ ├── topnav.html │ │ │ │ │ └── topnav.js │ │ │ │ ├── i18n │ │ │ │ ├── .content.xml │ │ │ │ └── fr.xml │ │ │ │ └── templates │ │ │ │ ├── page-content │ │ │ │ └── .content.xml │ │ │ │ └── page-home │ │ │ │ └── .content.xml │ │ │ └── etc │ │ │ └── designs │ │ │ └── aem-touch-ui-validation │ │ │ ├── .content.xml │ │ │ ├── _jcr_content │ │ │ └── page │ │ │ │ └── logo │ │ │ │ ├── image │ │ │ │ └── image.dir │ │ │ │ └── .content.xml │ │ │ ├── clientlib-all │ │ │ ├── .content.xml │ │ │ ├── README.md │ │ │ ├── css.txt │ │ │ └── js.txt │ │ │ ├── clientlib-site │ │ │ ├── .content.xml │ │ │ ├── README.md │ │ │ ├── css.txt │ │ │ ├── js.txt │ │ │ ├── script.js │ │ │ └── style.css │ │ │ ├── clientlib-touch-ui-validation │ │ │ ├── .content.xml │ │ │ ├── LICENSE │ │ │ ├── css.txt │ │ │ ├── css │ │ │ │ ├── autocomplete.css │ │ │ │ ├── colorpicker.css │ │ │ │ ├── multifield.css │ │ │ │ ├── pathbrowser.css │ │ │ │ └── radiogroup.css │ │ │ ├── js.txt │ │ │ └── js │ │ │ │ ├── autocomplete.js │ │ │ │ ├── colorpicker.js │ │ │ │ ├── customEvents.js │ │ │ │ ├── multifield.js │ │ │ │ ├── pathbrowser.js │ │ │ │ ├── radiogroup.js │ │ │ │ ├── textfield.js │ │ │ │ └── utils.js │ │ │ └── favicon.ico │ └── target │ │ ├── aem-touch-ui-validation.ui.apps-1.0-SNAPSHOT.zip │ │ ├── classes │ │ ├── apps │ │ │ ├── .content.xml │ │ │ └── aem-touch-ui-validation │ │ │ │ ├── components │ │ │ │ ├── content │ │ │ │ │ ├── colctrl │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ └── clientlib │ │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ │ ├── css.txt │ │ │ │ │ │ │ └── style.css │ │ │ │ │ ├── colorpicker │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── colorpicker.html │ │ │ │ │ │ └── dialog.xml │ │ │ │ │ ├── multifield │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── multifield.html │ │ │ │ │ ├── password │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── password.html │ │ │ │ │ ├── pathbrowser │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── pathbrowser.html │ │ │ │ │ ├── radiogroup │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── radiogroup.html │ │ │ │ │ ├── textarea │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── textarea.html │ │ │ │ │ ├── textfield │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── textfield.html │ │ │ │ │ ├── title │ │ │ │ │ │ └── .content.xml │ │ │ │ │ └── userpicker │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── _cq_dialog │ │ │ │ │ │ └── .content.xml │ │ │ │ │ │ ├── dialog.xml │ │ │ │ │ │ └── userpicker.html │ │ │ │ └── structure │ │ │ │ │ ├── logo │ │ │ │ │ └── .content.xml │ │ │ │ │ ├── page │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── clientlib │ │ │ │ │ │ ├── .content.xml │ │ │ │ │ │ ├── css.txt │ │ │ │ │ │ └── style.css │ │ │ │ │ ├── page.html │ │ │ │ │ └── partials │ │ │ │ │ │ ├── footlibs.html │ │ │ │ │ │ ├── head.html │ │ │ │ │ │ ├── head.js │ │ │ │ │ │ ├── headlibs.html │ │ │ │ │ │ ├── main.html │ │ │ │ │ │ └── main.js │ │ │ │ │ └── topnav │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── clientlib │ │ │ │ │ ├── .content.xml │ │ │ │ │ ├── css.txt │ │ │ │ │ └── style.css │ │ │ │ │ ├── topnav.html │ │ │ │ │ └── topnav.js │ │ │ │ ├── i18n │ │ │ │ ├── .content.xml │ │ │ │ └── fr.xml │ │ │ │ └── templates │ │ │ │ ├── page-content │ │ │ │ └── .content.xml │ │ │ │ └── page-home │ │ │ │ └── .content.xml │ │ └── etc │ │ │ └── designs │ │ │ └── aem-touch-ui-validation │ │ │ ├── .content.xml │ │ │ ├── _jcr_content │ │ │ └── page │ │ │ │ └── logo │ │ │ │ ├── image │ │ │ │ └── image.dir │ │ │ │ └── .content.xml │ │ │ ├── clientlib-all │ │ │ ├── .content.xml │ │ │ ├── README.md │ │ │ ├── css.txt │ │ │ └── js.txt │ │ │ ├── clientlib-site │ │ │ ├── .content.xml │ │ │ ├── README.md │ │ │ ├── css.txt │ │ │ ├── js.txt │ │ │ ├── script.js │ │ │ └── style.css │ │ │ ├── clientlib-touch-ui-validation │ │ │ ├── .content.xml │ │ │ ├── css.txt │ │ │ ├── css │ │ │ │ ├── autocomplete.css │ │ │ │ ├── colorpicker.css │ │ │ │ ├── multifield.css │ │ │ │ ├── pathbrowser.css │ │ │ │ └── radiogroup.css │ │ │ ├── js.txt │ │ │ └── js │ │ │ │ ├── autocomplete.js │ │ │ │ ├── colorpicker.js │ │ │ │ ├── customEvents.js │ │ │ │ ├── multifield.js │ │ │ │ ├── pathbrowser.js │ │ │ │ ├── radiogroup.js │ │ │ │ ├── textfield.js │ │ │ │ └── utils.js │ │ │ └── favicon.ico │ │ ├── maven-archiver │ │ └── pom.properties │ │ └── vault-work │ │ └── META-INF │ │ └── vault │ │ ├── config.xml │ │ ├── definition │ │ ├── .content.xml │ │ └── thumbnail.png │ │ ├── filter-plugin-generated.xml │ │ ├── filter.xml │ │ ├── properties.xml │ │ └── settings.xml └── ui.content │ ├── pom.xml │ ├── src │ └── main │ │ └── content │ │ ├── META-INF │ │ └── vault │ │ │ ├── config.xml │ │ │ ├── filter.xml │ │ │ └── settings.xml │ │ └── jcr_root │ │ └── content │ │ ├── aem-touch-ui-validation │ │ ├── .content.xml │ │ ├── _jcr_content │ │ │ └── image │ │ │ │ ├── file │ │ │ │ └── file.dir │ │ │ │ ├── .content.xml │ │ │ │ └── _jcr_content │ │ │ │ └── _dam_thumbnails │ │ │ │ └── _dam_thumbnail_319.png │ │ ├── en │ │ │ └── .content.xml │ │ └── fr │ │ │ ├── .content.xml │ │ │ └── _jcr_content │ │ │ └── image │ │ │ ├── file │ │ │ └── file.dir │ │ │ ├── .content.xml │ │ │ └── _jcr_content │ │ │ └── _dam_thumbnails │ │ │ └── _dam_thumbnail_319.png │ │ └── dam │ │ ├── .content.xml │ │ └── aem-touch-ui-validation │ │ ├── .content.xml │ │ ├── _jcr_content │ │ └── folderThumbnail │ │ └── asset.jpg │ │ ├── .content.xml │ │ └── _jcr_content │ │ └── renditions │ │ ├── cq5dam.thumbnail.140.100.png │ │ ├── cq5dam.thumbnail.319.319.png │ │ ├── cq5dam.thumbnail.48.48.png │ │ ├── cq5dam.web.1280.1280.jpeg │ │ ├── original │ │ └── original.dir │ │ └── .content.xml │ └── target │ ├── aem-touch-ui-validation.ui.content-1.0-SNAPSHOT.zip │ ├── classes │ └── content │ │ ├── aem-touch-ui-validation │ │ ├── .content.xml │ │ ├── _jcr_content │ │ │ └── image │ │ │ │ ├── file │ │ │ │ └── file.dir │ │ │ │ ├── .content.xml │ │ │ │ └── _jcr_content │ │ │ │ └── _dam_thumbnails │ │ │ │ └── _dam_thumbnail_319.png │ │ ├── en │ │ │ └── .content.xml │ │ └── fr │ │ │ ├── .content.xml │ │ │ └── _jcr_content │ │ │ └── image │ │ │ ├── file │ │ │ └── file.dir │ │ │ ├── .content.xml │ │ │ └── _jcr_content │ │ │ └── _dam_thumbnails │ │ │ └── _dam_thumbnail_319.png │ │ └── dam │ │ ├── .content.xml │ │ └── aem-touch-ui-validation │ │ ├── .content.xml │ │ ├── _jcr_content │ │ └── folderThumbnail │ │ └── asset.jpg │ │ ├── .content.xml │ │ └── _jcr_content │ │ └── renditions │ │ ├── cq5dam.thumbnail.140.100.png │ │ ├── cq5dam.thumbnail.319.319.png │ │ ├── cq5dam.thumbnail.48.48.png │ │ ├── cq5dam.web.1280.1280.jpeg │ │ ├── original │ │ └── original.dir │ │ └── .content.xml │ ├── maven-archiver │ └── pom.properties │ └── vault-work │ └── META-INF │ └── vault │ ├── config.xml │ ├── definition │ ├── .content.xml │ └── thumbnail.png │ ├── filter-plugin-generated.xml │ ├── filter.xml │ ├── properties.xml │ └── settings.xml └── package └── aem-touch-ui-validation-1.1.zip /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | **/target 3 | -------------------------------------------------------------------------------- /aem_touch_ui_validation_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/aem_touch_ui_validation_screenshot.png -------------------------------------------------------------------------------- /clientlib-touch-ui-validation/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /clientlib-touch-ui-validation/css.txt: -------------------------------------------------------------------------------- 1 | #base=css 2 | 3 | autocomplete.css 4 | colorpicker.css 5 | multifield.css 6 | pathbrowser.css 7 | radiogroup.css 8 | autocomplete.css 9 | -------------------------------------------------------------------------------- /clientlib-touch-ui-validation/css/autocomplete.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | .js-coral-Autocomplete-textfield.is-invalid ~ .coral-InputGroup-button > .coral-Button { 19 | border: solid 1px #e14132; 20 | } 21 | -------------------------------------------------------------------------------- /clientlib-touch-ui-validation/css/colorpicker.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | .coral-ColorPicker .marker-colorpicker { 19 | display: none; 20 | } 21 | 22 | .coral-ColorPicker.is-invalid button { 23 | border: solid 1px #e14132; 24 | } 25 | -------------------------------------------------------------------------------- /clientlib-touch-ui-validation/css/multifield.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | .coral-Multifield.is-invalid { 19 | border: solid 1px #e14132; 20 | } 21 | 22 | .coral-Multifield .marker-multifield { 23 | display: none; 24 | } 25 | -------------------------------------------------------------------------------- /clientlib-touch-ui-validation/css/pathbrowser.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | .js-coral-pathbrowser-input.is-invalid + .coral-InputGroup-button > .coral-Button { 19 | border: solid 1px #e14132; 20 | } 21 | -------------------------------------------------------------------------------- /clientlib-touch-ui-validation/css/radiogroup.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | .coral-RadioGroup.is-invalid { 19 | border: solid 1px #e14132; 20 | } 21 | 22 | .coral-RadioGroup .marker { 23 | display: none; 24 | } 25 | -------------------------------------------------------------------------------- /clientlib-touch-ui-validation/js.txt: -------------------------------------------------------------------------------- 1 | #base=js 2 | 3 | customEvents.js 4 | utils.js 5 | autocomplete.js 6 | colorpicker.js 7 | multifield.js 8 | pathbrowser.js 9 | radiogroup.js 10 | textfield.js 11 | -------------------------------------------------------------------------------- /clientlib-touch-ui-validation/js/autocomplete.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Validation for Granite Touch UI autocomplete and userPicker. 21 | * 22 | * Additional properties for granite/ui/components/foundation/form/userPicker 23 | * are: 24 | * 25 | * {Boolean}required 26 | * Is field required 27 | * defaults to false 28 | * 29 | * 35 | */ 36 | (function(ns, window, document, $, Granite, undefined) { 37 | 'use strict'; 38 | 39 | var USER_PICKER_SELECTOR = '.coral-Autocomplete'; 40 | 41 | $.validator.register({ 42 | selector: '.marker-userpicker', 43 | validate: function(el) { 44 | var required, 45 | value; 46 | 47 | required = el.attr('aria-required'); 48 | value = el.val(); 49 | 50 | if (required && !value) { 51 | return Granite.I18n.get('Please fill out this field.'); 52 | } else { 53 | el.setCustomValidity(null); 54 | el.updateErrorUI(); 55 | } 56 | } 57 | }); 58 | 59 | /** 60 | * Copy required attribute from the container to the form element and create a 61 | * click event handler when a Granite UI dialog loads. 62 | */ 63 | $(document).on('foundation-contentloaded', function(e) { 64 | var $dialog, 65 | $userPickers; 66 | 67 | $dialog = $(e.target); 68 | $userPickers = $dialog.find(USER_PICKER_SELECTOR); 69 | 70 | $userPickers.each(function() { 71 | var $userPicker, 72 | $input, 73 | required; 74 | 75 | $userPicker = $(this); 76 | $input = $userPicker.find('input[type="text"]'); 77 | required = ns.utils.getAttribute($userPicker, 'aria-required', false); 78 | 79 | if (required) { 80 | $input.attr('aria-required', 'true') 81 | .addClass('marker-userpicker'); 82 | 83 | /* Revalidate on autocomplete selection */ 84 | $input.closest('.coral-Form-field') 85 | .click(function(){ 86 | $input.checkValidity(); 87 | }); 88 | } 89 | }); 90 | }); 91 | 92 | })(window.aemTouchUIValidation = window.aemTouchUIValidation || {}, window, document, Granite.$, Granite); 93 | -------------------------------------------------------------------------------- /clientlib-touch-ui-validation/js/customEvents.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Trigger jQuery event 'stylechange' when a jQuery object's style attribute 21 | * changes. 22 | */ 23 | (function() { 24 | var originalCss= $.fn.css; 25 | 26 | $.fn.css = function() { 27 | var event = new $.Event('stylechange'); 28 | $(this).trigger(event); 29 | return originalCss.apply(this, arguments); 30 | } 31 | })(); 32 | -------------------------------------------------------------------------------- /clientlib-touch-ui-validation/js/utils.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * AEM Touch UI Validation library common utilities 21 | */ 22 | (function(ns, window, document, $, Granite, undefined) { 23 | 'use strict'; 24 | 25 | ns.utils = { 26 | /** 27 | * Is a string not null, undefined, blank or empty 28 | * 29 | * @param {String} The string to test 30 | * @return {Boolean} Is string not null, undefined, blank or empty 31 | * @function 32 | */ 33 | isNotBlank: function(str) { 34 | return typeof str !== 'undefined' && str !== null && str.trim() !== ''; 35 | }, 36 | 37 | /** 38 | * Get a data attribute from a jQuery object 39 | * 40 | * If the data attribute is undefined, return the default value. 41 | * 42 | * @param {jQuery} A jQuery object 43 | * @param {String} Data attribute to retrieve from the jQuery object 44 | * @param {String} Default value if data attribute is undefined 45 | * @return {String|Number} The data attribute or default value 46 | * @function 47 | */ 48 | getDataAttribute: function($el, property, defaultVal) { 49 | var value = $el.data(property); 50 | 51 | return value === undefined ? defaultVal : value; 52 | }, 53 | 54 | /** 55 | * Get a attribute from a jQuery object 56 | * 57 | * If the attribute is undefined, return the default value. 58 | * 59 | * @param {jQuery} A jQuery object 60 | * @param {String} Attribute to retrieve from the jQuery object 61 | * @param {String} Default value if attribute is undefined 62 | * @return {String|Number} The attribute or default value 63 | * @function 64 | */ 65 | getAttribute: function($el, property, defaultVal) { 66 | var value = $el.attr(property); 67 | 68 | return value === undefined ? defaultVal : value; 69 | }, 70 | 71 | /** 72 | * Get the validation error HTML as a jQuery object 73 | * 74 | * @return {jQuery} The validation error HTML as a jQuery object 75 | * @function 76 | */ 77 | getFieldErrorEl: function() { 78 | return $("").clone(); 79 | } 80 | }; 81 | 82 | })(window.aemTouchUIValidation = window.aemTouchUIValidation || {}, window, document, Granite.$, Granite); 83 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/META-INF/vault/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 17 | 18 | 19 | 23 | 24 | 25 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/META-INF/vault/filter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/META-INF/vault/settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/colctrl/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/colctrl/clientlib/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/colctrl/clientlib/css.txt: -------------------------------------------------------------------------------- 1 | style.css -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/colctrl/clientlib/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /* Column Control component */ 18 | @media (min-width: 600px) { 19 | .parsys_column { 20 | margin: 0; 21 | } 22 | .cq-colctrl-lt0-c0, 23 | .cq-colctrl-lt0-c1 { 24 | float: left; 25 | width: 48%; 26 | } 27 | .cq-colctrl-lt0-c0 { 28 | margin-right: 2%; 29 | } 30 | .cq-colctrl-lt0-c1 { 31 | margin-left: 2%; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/colorpicker/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/colorpicker/_cq_dialog/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | 12 | 13 | 16 | 17 | 22 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/colorpicker/colorpicker.html: -------------------------------------------------------------------------------- 1 |

ColorPicker validation sample

2 | 3 |
 4 |     <colorpickerA
 5 |         jcr:primaryType="nt:unstructured"
 6 |         sling:resourceType="granite/ui/components/foundation/form/colorpicker"
 7 |         fieldLabel="No validation"
 8 |         name="./colorpickerA"/>
 9 |     <colorpickerB
10 |         jcr:primaryType="nt:unstructured"
11 |         sling:resourceType="granite/ui/components/foundation/form/colorpicker"
12 |         fieldLabel="Required"
13 |         name="./colorpickerB"
14 |         required="{Boolean}true"/>
15 | 
-------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/colorpicker/dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/multifield/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/multifield/_cq_dialog/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | 12 | 13 | 16 | 17 | 21 | 25 | 26 | 33 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/multifield/dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/multifield/multifield.html: -------------------------------------------------------------------------------- 1 |

Multifield validation sample

2 | 3 |
 4 |     <multifieldA
 5 |         jcr:primaryType="nt:unstructured"
 6 |         sling:resourceType="granite/ui/components/foundation/form/multifield"
 7 |         fieldLabel="No validation">
 8 |         <field
 9 |             jcr:primaryType="nt:unstructured"
10 |             sling:resourceType="granite/ui/components/foundation/form/textfield"
11 |             name="./multifieldA" />
12 |     </multifieldA>
13 |     <multifieldB
14 |         jcr:primaryType="nt:unstructured"
15 |         sling:resourceType="granite/ui/components/foundation/form/multifield"
16 |         fieldLabel="Min and Max limits"
17 |         fieldDescription="Validates less than 2 items and limits at 5."
18 |         min="{Long}2"
19 |         max="{Long}5">
20 |         <field
21 |             jcr:primaryType="nt:unstructured"
22 |             sling:resourceType="granite/ui/components/foundation/form/textfield"
23 |             name="./multifieldB" />
24 |     </multifieldB>
25 | 
-------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/password/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/password/dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/password/password.html: -------------------------------------------------------------------------------- 1 |

Password validation sample

2 | 3 |
 4 |     <passwordA
 5 |         jcr:primaryType="nt:unstructured"
 6 |         sling:resourceType="granite/ui/components/foundation/form/password"
 7 |         fieldLabel="No validation"
 8 |         fieldDescription="No validation"
 9 |         name="./passwordA"/>
10 |     <passwordB
11 |         jcr:primaryType="nt:unstructured"
12 |         sling:resourceType="granite/ui/components/foundation/form/password"
13 |         fieldLabel="Required, Min & Max length"
14 |         fieldDescription="Required, Min & Max length"
15 |         required="{Boolean}true"
16 |         minlength="{Long}6"
17 |         maxlength="{Long}10"
18 |         name="./passwordB"/>
19 |     <passwordC
20 |         jcr:primaryType="nt:unstructured"
21 |         sling:resourceType="granite/ui/components/foundation/form/password"
22 |         fieldLabel="Email"
23 |         fieldDescription="Email"
24 |         required="{Boolean}true"
25 |         pattern="email"
26 |         name="./passwordC"/>
27 |     <passwordD
28 |         jcr:primaryType="nt:unstructured"
29 |         sling:resourceType="granite/ui/components/foundation/form/password"
30 |         fieldLabel="Custom Regex"
31 |         fieldDescription="Custom Regex for social security number must match ^\\d{3}-\\d{2}-\\d{4}$"
32 |         required="{Boolean}true"
33 |         pattern="^\\d{3}-\\d{2}-\\d{4}$"
34 |         name="./passwordD"/>
35 |     <passwordE
36 |         jcr:primaryType="nt:unstructured"
37 |         sling:resourceType="granite/ui/components/foundation/form/password"
38 |         fieldLabel="URL with active validation"
39 |         fieldDescription="Start typeing "http://www.adobe.com" and notice the validation happens on keypress rather than on blur."
40 |         required="{Boolean}true"
41 |         activeValidation="{Boolean}true"
42 |         pattern="url"
43 |         name="./passwordE"/>
44 | 
-------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/pathbrowser/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/pathbrowser/_cq_dialog/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | 12 | 13 | 16 | 17 | 23 | 30 | 39 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/pathbrowser/dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/pathbrowser/pathbrowser.html: -------------------------------------------------------------------------------- 1 |

PathBrowser validation sample

2 | 3 |
 4 |     <pathbrowserA
 5 |         jcr:primaryType="nt:unstructured"
 6 |         sling:resourceType="granite/ui/components/foundation/form/pathbrowser"
 7 |         fieldLabel="No validation"
 8 |         rootPath="/content/aem-touch-ui-validation"
 9 |         name="./pathbrowserA"/>
10 |     <pathbrowserB
11 |         jcr:primaryType="nt:unstructured"
12 |         sling:resourceType="granite/ui/components/foundation/form/pathbrowser"
13 |         fieldLabel="Required"
14 |         rootPath="/content/aem-touch-ui-validation"
15 |         required="{Boolean}true"
16 |         name="./pathbrowserB"/>
17 |     <pathbrowserC
18 |         jcr:primaryType="nt:unstructured"
19 |         sling:resourceType="granite/ui/components/foundation/form/pathbrowser"
20 |         fieldLabel="Required and allow non root path"
21 |         fieldDescription="Try entering a valid JCR path other than /content/aem-touch-ui-validation"
22 |         rootPath="/content/aem-touch-ui-validation"
23 |         required="{Boolean}true"
24 |         allowNonRootPath="{Boolean}true"
25 |         name="./pathbrowserC"/>
26 |     <pathbrowserD
27 |         jcr:primaryType="nt:unstructured"
28 |         sling:resourceType="granite/ui/components/foundation/form/pathbrowser"
29 |         fieldLabel="Required and allow non existing path"
30 |         fieldDescription="Try entering an external URL"
31 |         rootPath="/content/aem-touch-ui-validation"
32 |         required="{Boolean}true"
33 |         allowNonRootPath="{Boolean}true"
34 |         allowNonExistingPath="{Boolean}true"
35 |         name="./pathbrowserD"/>
36 | 
-------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/radiogroup/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/radiogroup/dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/radiogroup/radiogroup.html: -------------------------------------------------------------------------------- 1 |

RadioGroup validation sample

2 | 3 |
 4 |     <radiogroupA
 5 |         jcr:primaryType="nt:unstructured"
 6 |         sling:resourceType="granite/ui/components/foundation/form/radiogroup"
 7 |         fieldLabel="No validation">
 8 |         <items jcr:primaryType="nt:unstructured">
 9 |             <option1
10 |                 jcr:primaryType="nt:unstructured"
11 |                 sling:resourceType="granite/ui/components/foundation/form/radio"
12 |                 name="./radiogroupA"
13 |                 text="Alpha"
14 |                 value="alpha"/>
15 |             <option2
16 |                 jcr:primaryType="nt:unstructured"
17 |                 sling:resourceType="granite/ui/components/foundation/form/radio"
18 |                 name="./radiogroupA"
19 |                 text="Bravo"
20 |                 value="bravo"/>
21 |             <option3
22 |                 jcr:primaryType="nt:unstructured"
23 |                 sling:resourceType="granite/ui/components/foundation/form/radio"
24 |                 name="./radiogroupA"
25 |                 text="Charlie"
26 |                 value="charlie"/>
27 |         </items>
28 |     </radiogroupA>
29 |     <radiogroupB
30 |         jcr:primaryType="nt:unstructured"
31 |         sling:resourceType="granite/ui/components/foundation/form/radiogroup"
32 |         fieldLabel="Required"
33 |         required="{Boolean}true">
34 |         <items jcr:primaryType="nt:unstructured">
35 |             <option1
36 |                 jcr:primaryType="nt:unstructured"
37 |                 sling:resourceType="granite/ui/components/foundation/form/radio"
38 |                 name="./radiogroupB"
39 |                 text="Alpha"
40 |                 value="alpha"/>
41 |             <option2
42 |                 jcr:primaryType="nt:unstructured"
43 |                 sling:resourceType="granite/ui/components/foundation/form/radio"
44 |                 name="./radiogroupB"
45 |                 text="Bravo"
46 |                 value="bravo"/>
47 |             <option3
48 |                 jcr:primaryType="nt:unstructured"
49 |                 sling:resourceType="granite/ui/components/foundation/form/radio"
50 |                 name="./radiogroupB"
51 |                 text="Charlie"
52 |                 value="charlie"/>
53 |         </items>
54 |     </radiogroupB>
55 | 
-------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/textarea/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/textarea/dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/textarea/textarea.html: -------------------------------------------------------------------------------- 1 |

Textarea validation sample

2 | 3 |
 4 |     <textareaA
 5 |         jcr:primaryType="nt:unstructured"
 6 |         sling:resourceType="granite/ui/components/foundation/form/textarea"
 7 |         fieldLabel="No validation"
 8 |         name="./textareaA"/>
 9 |     <textareaB
10 |         jcr:primaryType="nt:unstructured"
11 |         sling:resourceType="granite/ui/components/foundation/form/textarea"
12 |         fieldLabel="Required, Min & Max length"
13 |         fieldDescription="Required, Min & Max length"
14 |         required="{Boolean}true"
15 |         minlength="{Long}4"
16 |         maxlength="{Long}10"
17 |         pattern="alpha"
18 |         name="./textareaB"/>
19 |     <textareaC
20 |         jcr:primaryType="nt:unstructured"
21 |         sling:resourceType="granite/ui/components/foundation/form/textarea"
22 |         fieldLabel="Required and pattern "alpha""
23 |         fieldDescription="Required and pattern "alpha""
24 |         required="{Boolean}true"
25 |         pattern="alpha"
26 |         name="./textareaC"/>
27 |     <textareaD
28 |         jcr:primaryType="nt:unstructured"
29 |         sling:resourceType="granite/ui/components/foundation/form/textarea"
30 |         fieldLabel="Custom Regex"
31 |         fieldDescription="Custom Regex for social security number must match ^\\d{3}-\\d{2}-\\d{4}$"
32 |         required="{Boolean}true"
33 |         pattern="^\\d{3}-\\d{2}-\\d{4}$"
34 |         name="./textareaD"/>
35 |     <textareaE
36 |         jcr:primaryType="nt:unstructured"
37 |         sling:resourceType="granite/ui/components/foundation/form/textarea"
38 |         fieldLabel="URL with active validation"
39 |         fieldDescription="Start typeing "http://www.adobe.com" and notice the validation happens on keypress rather than on blur."
40 |         required="{Boolean}true"
41 |         activeValidation="{Boolean}true"
42 |         pattern="url"
43 |         name="./textareaE"/>
44 | 
-------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/textfield/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/textfield/_cq_dialog/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | 12 | 13 | 16 | 17 | 23 | 32 | 40 | 48 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/textfield/dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/textfield/textfield.html: -------------------------------------------------------------------------------- 1 |

Textfield validation sample

2 | 3 |
 4 |     <textA
 5 |         jcr:primaryType="nt:unstructured"
 6 |         sling:resourceType="granite/ui/components/foundation/form/textfield"
 7 |         fieldLabel="No validation"
 8 |         fieldDescription="No validation"
 9 |         name="./textA"/>
10 |     <textB
11 |         jcr:primaryType="nt:unstructured"
12 |         sling:resourceType="granite/ui/components/foundation/form/textfield"
13 |         fieldLabel="Required, Min & Max length"
14 |         fieldDescription="Required, Min & Max length"
15 |         required="{Boolean}true"
16 |         minlength="{Long}6"
17 |         maxlength="{Long}10"
18 |         name="./textB"/>
19 |     <textC
20 |         jcr:primaryType="nt:unstructured"
21 |         sling:resourceType="granite/ui/components/foundation/form/textfield"
22 |         fieldLabel="Email"
23 |         fieldDescription="Email"
24 |         pattern="email"
25 |         required="{Boolean}true"
26 |         name="./textC"/>
27 |     <textD
28 |         jcr:primaryType="nt:unstructured"
29 |         sling:resourceType="granite/ui/components/foundation/form/textfield"
30 |         fieldLabel="Custom Regex"
31 |         fieldDescription="Custom Regex for social security number must match ^\\d{3}-\\d{2}-\\d{4}$"
32 |         pattern="^\\d{3}-\\d{2}-\\d{4}$"
33 |         required="{Boolean}true"
34 |         name="./textD"/>
35 |     <textE
36 |         jcr:primaryType="nt:unstructured"
37 |         sling:resourceType="granite/ui/components/foundation/form/textfield"
38 |         fieldLabel="URL with active validation"
39 |         fieldDescription="Start typeing "http://www.adobe.com" and notice the validation happens on keypress rather than on blur."
40 |         required="{Boolean}true"
41 |         activeValidation="{Boolean}true"
42 |         pattern="url"
43 |         name="./textE"/>
44 | 
-------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/title/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/userpicker/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/userpicker/_cq_dialog/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | 12 | 13 | 16 | 17 | 22 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/userpicker/dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/content/userpicker/userpicker.html: -------------------------------------------------------------------------------- 1 |

UserPicker validation sample

2 | 3 |
 4 |     <userpickerA
 5 |         jcr:primaryType="nt:unstructured"
 6 |         sling:resourceType="granite/ui/components/foundation/form/userpicker"
 7 |         fieldLabel="No validation"
 8 |         name="./userpickerA"/>
 9 |     <userpickerB
10 |         jcr:primaryType="nt:unstructured"
11 |         sling:resourceType="granite/ui/components/foundation/form/userpicker"
12 |         fieldLabel="Required"
13 |         name="./userpickerB"
14 |         required="{Boolean}true"/>
15 | 
-------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/logo/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/page/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/page/clientlib/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/page/clientlib/css.txt: -------------------------------------------------------------------------------- 1 | 2 | style.css 3 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/page/clientlib/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | .page__main { 18 | position: relative; 19 | max-width: 940px; 20 | margin: 0 auto; 21 | padding: 0 1em 1em; 22 | background-color: #fff; 23 | box-shadow: 0 0 9px 1px rgba(0,0,0,.2); 24 | -moz-box-shadow: 0 0 9px 1px -moz-rgba(0,0,0,.2); 25 | -webkit-box-shadow: 0 0 9px 1px rgba(0,0,0,.2); 26 | zoom: 100%; 27 | } 28 | 29 | .page__logo { 30 | display: inline-block; 31 | } 32 | 33 | .page__topnav { 34 | position: absolute; 35 | top: 20px; 36 | right: 1em; 37 | } 38 | 39 | .page__title h1 { 40 | color: #025c1f; 41 | text-transform: uppercase; 42 | } 43 | 44 | /* Scale down too wide images from the parsys */ 45 | .page__par img { 46 | max-width: 100%; 47 | } 48 | 49 | .page__copyright { 50 | margin-bottom: 0; 51 | } 52 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/page/page.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/page/partials/footlibs.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/page/partials/head.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | ${currentPage.title || currentPage.name} 18 | 19 | 20 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/page/partials/head.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // Server-side JavaScript for the head.html logic 18 | use(function () { 19 | var WCMUtils = Packages.com.day.cq.wcm.commons.WCMUtils; 20 | var resourceResolver = resource.getResourceResolver(); 21 | 22 | return { 23 | keywords: WCMUtils.getKeywords(currentPage, false), 24 | favIcon: resourceResolver.getResource(currentDesign.getPath() + "/favicon.ico") 25 | }; 26 | }); -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/page/partials/headlibs.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/page/partials/main.html: -------------------------------------------------------------------------------- 1 | 16 |
17 | 21 | 22 |
23 |
24 | 25 |
26 | 27 |
28 |
-------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/page/partials/main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // Server-side JavaScript for the main.html logic 18 | use(function () { 19 | var Calendar = Packages.java.util.Calendar; 20 | var currentYear = Calendar.getInstance().get(Calendar.YEAR); 21 | 22 | return { 23 | year: currentYear 24 | }; 25 | }); -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/topnav/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/topnav/clientlib/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/topnav/clientlib/css.txt: -------------------------------------------------------------------------------- 1 | 2 | style.css 3 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/topnav/clientlib/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | .topnav { 18 | float: right; 19 | list-style: none; 20 | } 21 | .topnav__item { 22 | float: left; 23 | margin-left: 15px; 24 | } 25 | .topnav__item--selected { 26 | font-weight: bold; 27 | } 28 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/topnav/topnav.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/components/structure/topnav/topnav.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // Server-side JavaScript for the topnav logic 18 | use(function () { 19 | var items = []; 20 | var root = currentPage.getAbsoluteParent(1); 21 | var currentNavPath = currentPage.getAbsoluteParent(2).getPath(); 22 | var it = root.listChildren(new Packages.com.day.cq.wcm.api.PageFilter()); 23 | 24 | while (it.hasNext()) { 25 | var page = it.next(); 26 | 27 | // No strict comparison, because the types returned from the Java APIs 28 | // don't strictly match the JavaScript types 29 | var selected = (page.getPath() == currentNavPath); 30 | 31 | items.push({ 32 | page: page, 33 | selected : selected 34 | }); 35 | } 36 | 37 | return { 38 | items: items 39 | }; 40 | }); -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/i18n/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/i18n/fr.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/templates/page-content/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 14 | 17 | <topnav 18 | jcr:primaryType="nt:unstructured" 19 | sling:resourceType="aem-touch-ui-validation/components/structure/topnav"/> 20 | <par 21 | jcr:primaryType="nt:unstructured" 22 | sling:resourceType="wcm/foundation/components/parsys"> 23 | <text 24 | jcr:primaryType="nt:unstructured" 25 | sling:resourceType="aem-touch-ui-validation/components/content/text" 26 | text="<p>This is a content page</p>" 27 | textIsRich="true"/> 28 | </par> 29 | </jcr:content> 30 | </jcr:root> 31 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/apps/aem-touch-ui-validation/templates/page-home/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:description="Template for initial or main page of the site." 4 | jcr:primaryType="cq:Template" 5 | jcr:title="aem-touch-ui-validation Home Page" 6 | allowedPaths="[/content/aem-touch-ui-validation]" 7 | ranking="{Long}100"> 8 | <jcr:content 9 | jcr:primaryType="cq:PageContent" 10 | sling:resourceType="aem-touch-ui-validation/components/structure/page"> 11 | <logo 12 | jcr:primaryType="nt:unstructured" 13 | sling:resourceType="aem-touch-ui-validation/components/structure/logo"/> 14 | <title 15 | jcr:primaryType="nt:unstructured" 16 | sling:resourceType="aem-touch-ui-validation/components/content/title"/> 17 | <topnav 18 | jcr:primaryType="nt:unstructured" 19 | sling:resourceType="aem-touch-ui-validation/components/structure/topnav"/> 20 | <par 21 | jcr:primaryType="nt:unstructured" 22 | sling:resourceType="wcm/foundation/components/parsys"> 23 | <text 24 | jcr:primaryType="nt:unstructured" 25 | sling:resourceType="aem-touch-ui-validation/components/content/text" 26 | text="<p>This is a home page</p>" 27 | textIsRich="true"/> 28 | </par> 29 | </jcr:content> 30 | </jcr:root> 31 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="cq:Page"> 4 | <jcr:content 5 | jcr:primaryType="nt:unstructured" 6 | jcr:title="aem-touch-ui-validation Design" 7 | sling:resourceType="wcm/core/components/designer"> 8 | <page jcr:primaryType="nt:unstructured"> 9 | <par 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="wcm/foundation/components/parsys" 12 | components="[group:aem-touch-ui-validation]"> 13 | <colctrl 14 | jcr:primaryType="nt:unstructured" 15 | sling:resourceType="aem-touch-ui-validation/components/content/colctrl" 16 | layouts="2;cq-colctrl-lt0 2 Columns (50%, 50%)"/> 17 | <cq:authoring 18 | jcr:primaryType="nt:unstructured"> 19 | <assetToComponentMapping jcr:primaryType="nt:unstructured"> 20 | <image 21 | jcr:primaryType="nt:unstructured" 22 | assetGroup="media" 23 | assetMimetype="image/*" 24 | droptarget="image" 25 | resourceType="aem-touch-ui-validation/components/content/image" 26 | type="Images"/> 27 | </assetToComponentMapping> 28 | </cq:authoring> 29 | </par> 30 | <logo 31 | jcr:primaryType="nt:unstructured" 32 | sling:resourceType="aem-touch-ui-validation/components/structure/logo" 33 | absParent="2"> 34 | <image/> 35 | </logo> 36 | </page> 37 | </jcr:content> 38 | </jcr:root> 39 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/_jcr_content/page/logo/image: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/_jcr_content/page/logo/image -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/_jcr_content/page/logo/image.dir/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:file"> 4 | <jcr:content 5 | jcr:lastModifiedBy="admin" 6 | jcr:mimeType="image/png" 7 | jcr:primaryType="nt:resource"/> 8 | </jcr:root> 9 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-all/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:ClientLibraryFolder" 4 | categories="[aem-touch-ui-validation.all]" 5 | embed="[aem-touch-ui-validation.site,aem-touch-ui-validation.page,aem-touch-ui-validation.topnav,aem-touch-ui-validation.colctrl,aem-touch-ui-validation.textimage]"/> 6 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-all/README.md: -------------------------------------------------------------------------------- 1 | 2 | This client library should be left empty: it's purpose is to list all client libraries that the site requires. This allows to manage flexibly what is to be included in which order, as well as to accelerate the site by concatenating everything into one file. 3 | 4 | Another reason why this client library is playing an essential role is that in production, access to /apps should be blocked by the dispatcher, therefore no client library located under /apps can be directly accessed anymore. 5 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-all/css.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-all/css.txt -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-all/js.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-all/js.txt -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-site/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:ClientLibraryFolder" 4 | categories="[aem-touch-ui-validation.site]"/> 5 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-site/README.md: -------------------------------------------------------------------------------- 1 | 2 | This client library should contain general styles and scripts. Everything specific to components should be placed in client libraries below the corresponding components. 3 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-site/css.txt: -------------------------------------------------------------------------------- 1 | 2 | style.css 3 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-site/js.txt: -------------------------------------------------------------------------------- 1 | 2 | script.js 3 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-site/script.js: -------------------------------------------------------------------------------- 1 | /** a JS file that shall be included */ -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-site/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | body { 18 | margin: 0; 19 | padding: 0; 20 | font-family: sans-serif; 21 | font-size: 0.875em; 22 | line-height: 1.2; 23 | background-color: #d3d3d3; 24 | } 25 | 26 | a { 27 | text-decoration: none; 28 | color: #025c1f; 29 | } 30 | a:hover { 31 | text-decoration: underline; 32 | } 33 | 34 | img { 35 | vertical-align: top; 36 | } 37 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:ClientLibraryFolder" 4 | categories="[cq.authoring.dialog]"/> 5 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css.txt: -------------------------------------------------------------------------------- 1 | #base=css 2 | 3 | autocomplete.css 4 | colorpicker.css 5 | multifield.css 6 | pathbrowser.css 7 | radiogroup.css 8 | autocomplete.css 9 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css/autocomplete.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | .js-coral-Autocomplete-textfield.is-invalid ~ .coral-InputGroup-button > .coral-Button { 19 | border: solid 1px #e14132; 20 | } 21 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css/colorpicker.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | .coral-ColorPicker .marker-colorpicker { 19 | display: none; 20 | } 21 | 22 | .coral-ColorPicker.is-invalid button { 23 | border: solid 1px #e14132; 24 | } 25 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css/multifield.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | .coral-Multifield.is-invalid { 19 | border: solid 1px #e14132; 20 | } 21 | 22 | .coral-Multifield .marker-multifield { 23 | display: none; 24 | } 25 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css/pathbrowser.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | .js-coral-pathbrowser-input.is-invalid + .coral-InputGroup-button > .coral-Button { 19 | border: solid 1px #e14132; 20 | } 21 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css/radiogroup.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | .coral-RadioGroup.is-invalid { 19 | border: solid 1px #e14132; 20 | } 21 | 22 | .coral-RadioGroup .marker { 23 | display: none; 24 | } 25 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/js.txt: -------------------------------------------------------------------------------- 1 | #base=js 2 | 3 | customEvents.js 4 | utils.js 5 | autocomplete.js 6 | colorpicker.js 7 | multifield.js 8 | pathbrowser.js 9 | radiogroup.js 10 | textfield.js 11 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/js/autocomplete.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Validation for Granite Touch UI autocomplete and userPicker. 21 | * 22 | * Additional properties for granite/ui/components/foundation/form/userPicker 23 | * are: 24 | * 25 | * {Boolean}required 26 | * Is field required 27 | * defaults to false 28 | * 29 | * <myUserPicker 30 | * jcr:primaryType="nt:unstructured" 31 | * sling:resourceType="granite/ui/components/foundation/form/userpicker" 32 | * fieldLabel="My userpicker" 33 | * name="./myUserPicker" 34 | * required="{Boolean}true"/> 35 | */ 36 | (function(ns, window, document, $, Granite, undefined) { 37 | 'use strict'; 38 | 39 | var USER_PICKER_SELECTOR = '.coral-Autocomplete'; 40 | 41 | $.validator.register({ 42 | selector: '.marker-userpicker', 43 | validate: function(el) { 44 | var required, 45 | value; 46 | 47 | required = el.attr('aria-required'); 48 | value = el.val(); 49 | 50 | if (required && !value) { 51 | return Granite.I18n.get('Please fill out this field.'); 52 | } else { 53 | el.setCustomValidity(null); 54 | el.updateErrorUI(); 55 | } 56 | } 57 | }); 58 | 59 | /** 60 | * Copy required attribute from the container to the form element and create a 61 | * click event handler when a Granite UI dialog loads. 62 | */ 63 | $(document).on('foundation-contentloaded', function(e) { 64 | var $dialog, 65 | $userPickers; 66 | 67 | $dialog = $(e.target); 68 | $userPickers = $dialog.find(USER_PICKER_SELECTOR); 69 | 70 | $userPickers.each(function() { 71 | var $userPicker, 72 | $input, 73 | required; 74 | 75 | $userPicker = $(this); 76 | $input = $userPicker.find('input[type="text"]'); 77 | required = ns.utils.getAttribute($userPicker, 'aria-required', false); 78 | 79 | if (required) { 80 | $input.attr('aria-required', 'true') 81 | .addClass('marker-userpicker'); 82 | 83 | /* Revalidate on autocomplete selection */ 84 | $input.closest('.coral-Form-field') 85 | .click(function(){ 86 | $input.checkValidity(); 87 | }); 88 | } 89 | }); 90 | }); 91 | 92 | })(window.aemTouchUIValidation = window.aemTouchUIValidation || {}, window, document, Granite.$, Granite); 93 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/js/customEvents.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * Trigger jQuery event 'stylechange' when a jQuery object's style attribute 21 | * changes. 22 | */ 23 | (function() { 24 | var originalCss= $.fn.css; 25 | 26 | $.fn.css = function() { 27 | var event = new $.Event('stylechange'); 28 | $(this).trigger(event); 29 | return originalCss.apply(this, arguments); 30 | } 31 | })(); 32 | -------------------------------------------------------------------------------- /demo/ui.apps/src/main/content/jcr_root/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/js/utils.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016 Nate Yolles 3 | * 4 | * https://github.com/nateyolles/aem-touch-ui-validation 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the "License"); 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | /** 20 | * AEM Touch UI Validation library common utilities 21 | */ 22 | (function(ns, window, document, $, Granite, undefined) { 23 | 'use strict'; 24 | 25 | ns.utils = { 26 | /** 27 | * Is a string not null, undefined, blank or empty 28 | * 29 | * @param {String} The string to test 30 | * @return {Boolean} Is string not null, undefined, blank or empty 31 | * @function 32 | */ 33 | isNotBlank: function(str) { 34 | return typeof str !== 'undefined' && str !== null && str.trim() !== ''; 35 | }, 36 | 37 | /** 38 | * Get a data attribute from a jQuery object 39 | * 40 | * If the data attribute is undefined, return the default value. 41 | * 42 | * @param {jQuery} A jQuery object 43 | * @param {String} Data attribute to retrieve from the jQuery object 44 | * @param {String} Default value if data attribute is undefined 45 | * @return {String|Number} The data attribute or default value 46 | * @function 47 | */ 48 | getDataAttribute: function($el, property, defaultVal) { 49 | var value = $el.data(property); 50 | 51 | return value === undefined ? defaultVal : value; 52 | }, 53 | 54 | /** 55 | * Get a attribute from a jQuery object 56 | * 57 | * If the attribute is undefined, return the default value. 58 | * 59 | * @param {jQuery} A jQuery object 60 | * @param {String} Attribute to retrieve from the jQuery object 61 | * @param {String} Default value if attribute is undefined 62 | * @return {String|Number} The attribute or default value 63 | * @function 64 | */ 65 | getAttribute: function($el, property, defaultVal) { 66 | var value = $el.attr(property); 67 | 68 | return value === undefined ? defaultVal : value; 69 | }, 70 | 71 | /** 72 | * Get the validation error HTML as a jQuery object 73 | * 74 | * @return {jQuery} The validation error HTML as a jQuery object 75 | * @function 76 | */ 77 | getFieldErrorEl: function() { 78 | return $("<span class='coral-Form-fielderror coral-Icon coral-Icon--alert coral-Icon--sizeS' data-init='quicktip' data-quicktip-type='error' />").clone(); 79 | } 80 | }; 81 | 82 | })(window.aemTouchUIValidation = window.aemTouchUIValidation || {}, window, document, Granite.$, Granite); 83 | -------------------------------------------------------------------------------- /demo/ui.apps/target/aem-touch-ui-validation.ui.apps-1.0-SNAPSHOT.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.apps/target/aem-touch-ui-validation.ui.apps-1.0-SNAPSHOT.zip -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:rep="internal" 3 | jcr:mixinTypes="[rep:AccessControllable]" 4 | jcr:primaryType="nt:folder"/> 5 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/colctrl/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="Columns" 5 | sling:resourceSuperType="wcm/foundation/components/parsys/colctrl" 6 | componentGroup="aem-touch-ui-validation"/> 7 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/colctrl/clientlib/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:ClientLibraryFolder" 4 | categories="[aem-touch-ui-validation.colctrl]"/> 5 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/colctrl/clientlib/css.txt: -------------------------------------------------------------------------------- 1 | style.css -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/colctrl/clientlib/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /* Column Control component */ 18 | @media (min-width: 600px) { 19 | .parsys_column { 20 | margin: 0; 21 | } 22 | .cq-colctrl-lt0-c0, 23 | .cq-colctrl-lt0-c1 { 24 | float: left; 25 | width: 48%; 26 | } 27 | .cq-colctrl-lt0-c0 { 28 | margin-right: 2%; 29 | } 30 | .cq-colctrl-lt0-c1 { 31 | margin-left: 2%; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/colorpicker/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="colorpicker" 5 | componentGroup="aem-touch-ui-validation"/> 6 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/colorpicker/_cq_dialog/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:unstructured" 4 | jcr:title="ColorPicker validation demonstration" 5 | sling:resourceType="cq/gui/components/authoring/dialog"> 6 | <content 7 | jcr:primaryType="nt:unstructured" 8 | sling:resourceType="granite/ui/components/foundation/container"> 9 | <layout 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"/> 12 | <items jcr:primaryType="nt:unstructured"> 13 | <column 14 | jcr:primaryType="nt:unstructured" 15 | sling:resourceType="granite/ui/components/foundation/container"> 16 | <items jcr:primaryType="nt:unstructured"> 17 | <colorpickerA 18 | jcr:primaryType="nt:unstructured" 19 | sling:resourceType="granite/ui/components/foundation/form/colorpicker" 20 | fieldLabel="No validation" 21 | name="./colorpickerA"/> 22 | <colorpickerB 23 | jcr:primaryType="nt:unstructured" 24 | sling:resourceType="granite/ui/components/foundation/form/colorpicker" 25 | fieldLabel="Required" 26 | name="./colorpickerB" 27 | required="{Boolean}true"/> 28 | </items> 29 | </column> 30 | </items> 31 | </content> 32 | </jcr:root> 33 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/colorpicker/colorpicker.html: -------------------------------------------------------------------------------- 1 | <h3>ColorPicker validation sample</h3> 2 | 3 | <pre> 4 | <colorpickerA 5 | jcr:primaryType="nt:unstructured" 6 | sling:resourceType="granite/ui/components/foundation/form/colorpicker" 7 | fieldLabel="No validation" 8 | name="./colorpickerA"/> 9 | <colorpickerB 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="granite/ui/components/foundation/form/colorpicker" 12 | fieldLabel="Required" 13 | name="./colorpickerB" 14 | required="{Boolean}true"/> 15 | </pre> -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/colorpicker/dialog.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Dialog" 4 | title="demonstration" 5 | xtype="panel"> 6 | <items jcr:primaryType="cq:WidgetCollection"> 7 | <info 8 | jcr:primaryType="cq:Widget" 9 | fieldLabel="Info" 10 | fieldDescription="This demonstration component is made for Touch UI only." 11 | name="./info" 12 | xtype="displayfield"/> 13 | </items> 14 | </jcr:root> 15 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/multifield/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="multifield" 5 | componentGroup="aem-touch-ui-validation"/> 6 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/multifield/_cq_dialog/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:unstructured" 4 | jcr:title="Multifield validation demonstration" 5 | sling:resourceType="cq/gui/components/authoring/dialog"> 6 | <content 7 | jcr:primaryType="nt:unstructured" 8 | sling:resourceType="granite/ui/components/foundation/container"> 9 | <layout 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"/> 12 | <items jcr:primaryType="nt:unstructured"> 13 | <column 14 | jcr:primaryType="nt:unstructured" 15 | sling:resourceType="granite/ui/components/foundation/container"> 16 | <items jcr:primaryType="nt:unstructured"> 17 | <multifieldA 18 | jcr:primaryType="nt:unstructured" 19 | sling:resourceType="granite/ui/components/foundation/form/multifield" 20 | fieldLabel="No validation"> 21 | <field 22 | jcr:primaryType="nt:unstructured" 23 | sling:resourceType="granite/ui/components/foundation/form/textfield" 24 | name="./multifieldA" /> 25 | </multifieldA> 26 | <multifieldB 27 | jcr:primaryType="nt:unstructured" 28 | sling:resourceType="granite/ui/components/foundation/form/multifield" 29 | fieldLabel="Min and Max limits" 30 | fieldDescription="Validates less than 2 items and limits at 5." 31 | min="{Long}2" 32 | max="{Long}5"> 33 | <field 34 | jcr:primaryType="nt:unstructured" 35 | sling:resourceType="granite/ui/components/foundation/form/textfield" 36 | name="./multifieldB" /> 37 | </multifieldB> 38 | </items> 39 | </column> 40 | </items> 41 | </content> 42 | </jcr:root> 43 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/multifield/dialog.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Dialog" 4 | title="demonstration" 5 | xtype="panel"> 6 | <items jcr:primaryType="cq:WidgetCollection"> 7 | <info 8 | jcr:primaryType="cq:Widget" 9 | fieldLabel="Info" 10 | fieldDescription="This demonstration component is made for Touch UI only." 11 | name="./info" 12 | xtype="displayfield"/> 13 | </items> 14 | </jcr:root> 15 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/multifield/multifield.html: -------------------------------------------------------------------------------- 1 | <h3>Multifield validation sample</h3> 2 | 3 | <pre> 4 | <multifieldA 5 | jcr:primaryType="nt:unstructured" 6 | sling:resourceType="granite/ui/components/foundation/form/multifield" 7 | fieldLabel="No validation"> 8 | <field 9 | jcr:primaryType="nt:unstructured" 10 | sling:resourceType="granite/ui/components/foundation/form/textfield" 11 | name="./multifieldA" /> 12 | </multifieldA> 13 | <multifieldB 14 | jcr:primaryType="nt:unstructured" 15 | sling:resourceType="granite/ui/components/foundation/form/multifield" 16 | fieldLabel="Min and Max limits" 17 | fieldDescription="Validates less than 2 items and limits at 5." 18 | min="{Long}2" 19 | max="{Long}5"> 20 | <field 21 | jcr:primaryType="nt:unstructured" 22 | sling:resourceType="granite/ui/components/foundation/form/textfield" 23 | name="./multifieldB" /> 24 | </multifieldB> 25 | </pre> -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/password/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="password" 5 | componentGroup="aem-touch-ui-validation"/> 6 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/password/dialog.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Dialog" 4 | title="demonstration" 5 | xtype="panel"> 6 | <items jcr:primaryType="cq:WidgetCollection"> 7 | <info 8 | jcr:primaryType="cq:Widget" 9 | fieldLabel="Info" 10 | fieldDescription="This demonstration component is made for Touch UI only." 11 | name="./info" 12 | xtype="displayfield"/> 13 | </items> 14 | </jcr:root> 15 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/password/password.html: -------------------------------------------------------------------------------- 1 | <h3>Password validation sample</h3> 2 | 3 | <pre> 4 | <passwordA 5 | jcr:primaryType="nt:unstructured" 6 | sling:resourceType="granite/ui/components/foundation/form/password" 7 | fieldLabel="No validation" 8 | fieldDescription="No validation" 9 | name="./passwordA"/> 10 | <passwordB 11 | jcr:primaryType="nt:unstructured" 12 | sling:resourceType="granite/ui/components/foundation/form/password" 13 | fieldLabel="Required, Min & Max length" 14 | fieldDescription="Required, Min & Max length" 15 | required="{Boolean}true" 16 | minlength="{Long}6" 17 | maxlength="{Long}10" 18 | name="./passwordB"/> 19 | <passwordC 20 | jcr:primaryType="nt:unstructured" 21 | sling:resourceType="granite/ui/components/foundation/form/password" 22 | fieldLabel="Email" 23 | fieldDescription="Email" 24 | required="{Boolean}true" 25 | pattern="email" 26 | name="./passwordC"/> 27 | <passwordD 28 | jcr:primaryType="nt:unstructured" 29 | sling:resourceType="granite/ui/components/foundation/form/password" 30 | fieldLabel="Custom Regex" 31 | fieldDescription="Custom Regex for social security number must match ^\\d{3}-\\d{2}-\\d{4}$" 32 | required="{Boolean}true" 33 | pattern="^\\d{3}-\\d{2}-\\d{4}$" 34 | name="./passwordD"/> 35 | <passwordE 36 | jcr:primaryType="nt:unstructured" 37 | sling:resourceType="granite/ui/components/foundation/form/password" 38 | fieldLabel="URL with active validation" 39 | fieldDescription="Start typeing "http://www.adobe.com" and notice the validation happens on keypress rather than on blur." 40 | required="{Boolean}true" 41 | activeValidation="{Boolean}true" 42 | pattern="url" 43 | name="./passwordE"/> 44 | </pre> -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/pathbrowser/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="pathbrowser" 5 | componentGroup="aem-touch-ui-validation"/> 6 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/pathbrowser/_cq_dialog/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:unstructured" 4 | jcr:title="PathBrowser validation demonstration" 5 | sling:resourceType="cq/gui/components/authoring/dialog"> 6 | <content 7 | jcr:primaryType="nt:unstructured" 8 | sling:resourceType="granite/ui/components/foundation/container"> 9 | <layout 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"/> 12 | <items jcr:primaryType="nt:unstructured"> 13 | <column 14 | jcr:primaryType="nt:unstructured" 15 | sling:resourceType="granite/ui/components/foundation/container"> 16 | <items jcr:primaryType="nt:unstructured"> 17 | <pathbrowserA 18 | jcr:primaryType="nt:unstructured" 19 | sling:resourceType="granite/ui/components/foundation/form/pathbrowser" 20 | fieldLabel="No validation" 21 | rootPath="/content/aem-touch-ui-validation" 22 | name="./pathbrowserA"/> 23 | <pathbrowserB 24 | jcr:primaryType="nt:unstructured" 25 | sling:resourceType="granite/ui/components/foundation/form/pathbrowser" 26 | fieldLabel="Required" 27 | rootPath="/content/aem-touch-ui-validation" 28 | required="{Boolean}true" 29 | name="./pathbrowserB"/> 30 | <pathbrowserC 31 | jcr:primaryType="nt:unstructured" 32 | sling:resourceType="granite/ui/components/foundation/form/pathbrowser" 33 | fieldLabel="Required and allow non root path" 34 | fieldDescription="Try entering a valid JCR path other than /content/aem-touch-ui-validation" 35 | rootPath="/content/aem-touch-ui-validation" 36 | required="{Boolean}true" 37 | allowNonRootPath="{Boolean}true" 38 | name="./pathbrowserC"/> 39 | <pathbrowserD 40 | jcr:primaryType="nt:unstructured" 41 | sling:resourceType="granite/ui/components/foundation/form/pathbrowser" 42 | fieldLabel="Required and allow non existing path" 43 | fieldDescription="Try entering an external URL" 44 | rootPath="/content/aem-touch-ui-validation" 45 | required="{Boolean}true" 46 | allowNonRootPath="{Boolean}true" 47 | allowNonExistingPath="{Boolean}true" 48 | name="./pathbrowserD"/> 49 | </items> 50 | </column> 51 | </items> 52 | </content> 53 | </jcr:root> 54 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/pathbrowser/dialog.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Dialog" 4 | title="demonstration" 5 | xtype="panel"> 6 | <items jcr:primaryType="cq:WidgetCollection"> 7 | <info 8 | jcr:primaryType="cq:Widget" 9 | fieldLabel="Info" 10 | fieldDescription="This demonstration component is made for Touch UI only." 11 | name="./info" 12 | xtype="displayfield"/> 13 | </items> 14 | </jcr:root> 15 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/pathbrowser/pathbrowser.html: -------------------------------------------------------------------------------- 1 | <h3>PathBrowser validation sample</h3> 2 | 3 | <pre> 4 | <pathbrowserA 5 | jcr:primaryType="nt:unstructured" 6 | sling:resourceType="granite/ui/components/foundation/form/pathbrowser" 7 | fieldLabel="No validation" 8 | rootPath="/content/aem-touch-ui-validation" 9 | name="./pathbrowserA"/> 10 | <pathbrowserB 11 | jcr:primaryType="nt:unstructured" 12 | sling:resourceType="granite/ui/components/foundation/form/pathbrowser" 13 | fieldLabel="Required" 14 | rootPath="/content/aem-touch-ui-validation" 15 | required="{Boolean}true" 16 | name="./pathbrowserB"/> 17 | <pathbrowserC 18 | jcr:primaryType="nt:unstructured" 19 | sling:resourceType="granite/ui/components/foundation/form/pathbrowser" 20 | fieldLabel="Required and allow non root path" 21 | fieldDescription="Try entering a valid JCR path other than /content/aem-touch-ui-validation" 22 | rootPath="/content/aem-touch-ui-validation" 23 | required="{Boolean}true" 24 | allowNonRootPath="{Boolean}true" 25 | name="./pathbrowserC"/> 26 | <pathbrowserD 27 | jcr:primaryType="nt:unstructured" 28 | sling:resourceType="granite/ui/components/foundation/form/pathbrowser" 29 | fieldLabel="Required and allow non existing path" 30 | fieldDescription="Try entering an external URL" 31 | rootPath="/content/aem-touch-ui-validation" 32 | required="{Boolean}true" 33 | allowNonRootPath="{Boolean}true" 34 | allowNonExistingPath="{Boolean}true" 35 | name="./pathbrowserD"/> 36 | </pre> -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/radiogroup/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="radiogroup" 5 | componentGroup="aem-touch-ui-validation"/> 6 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/radiogroup/dialog.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Dialog" 4 | title="demonstration" 5 | xtype="panel"> 6 | <items jcr:primaryType="cq:WidgetCollection"> 7 | <info 8 | jcr:primaryType="cq:Widget" 9 | fieldLabel="Info" 10 | fieldDescription="This demonstration component is made for Touch UI only." 11 | name="./info" 12 | xtype="displayfield"/> 13 | </items> 14 | </jcr:root> 15 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/radiogroup/radiogroup.html: -------------------------------------------------------------------------------- 1 | <h3>RadioGroup validation sample</h3> 2 | 3 | <pre> 4 | <radiogroupA 5 | jcr:primaryType="nt:unstructured" 6 | sling:resourceType="granite/ui/components/foundation/form/radiogroup" 7 | fieldLabel="No validation"> 8 | <items jcr:primaryType="nt:unstructured"> 9 | <option1 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="granite/ui/components/foundation/form/radio" 12 | name="./radiogroupA" 13 | text="Alpha" 14 | value="alpha"/> 15 | <option2 16 | jcr:primaryType="nt:unstructured" 17 | sling:resourceType="granite/ui/components/foundation/form/radio" 18 | name="./radiogroupA" 19 | text="Bravo" 20 | value="bravo"/> 21 | <option3 22 | jcr:primaryType="nt:unstructured" 23 | sling:resourceType="granite/ui/components/foundation/form/radio" 24 | name="./radiogroupA" 25 | text="Charlie" 26 | value="charlie"/> 27 | </items> 28 | </radiogroupA> 29 | <radiogroupB 30 | jcr:primaryType="nt:unstructured" 31 | sling:resourceType="granite/ui/components/foundation/form/radiogroup" 32 | fieldLabel="Required" 33 | required="{Boolean}true"> 34 | <items jcr:primaryType="nt:unstructured"> 35 | <option1 36 | jcr:primaryType="nt:unstructured" 37 | sling:resourceType="granite/ui/components/foundation/form/radio" 38 | name="./radiogroupB" 39 | text="Alpha" 40 | value="alpha"/> 41 | <option2 42 | jcr:primaryType="nt:unstructured" 43 | sling:resourceType="granite/ui/components/foundation/form/radio" 44 | name="./radiogroupB" 45 | text="Bravo" 46 | value="bravo"/> 47 | <option3 48 | jcr:primaryType="nt:unstructured" 49 | sling:resourceType="granite/ui/components/foundation/form/radio" 50 | name="./radiogroupB" 51 | text="Charlie" 52 | value="charlie"/> 53 | </items> 54 | </radiogroupB> 55 | </pre> -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/textarea/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="textarea" 5 | componentGroup="aem-touch-ui-validation"/> 6 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/textarea/dialog.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Dialog" 4 | title="demonstration" 5 | xtype="panel"> 6 | <items jcr:primaryType="cq:WidgetCollection"> 7 | <info 8 | jcr:primaryType="cq:Widget" 9 | fieldLabel="Info" 10 | fieldDescription="This demonstration component is made for Touch UI only." 11 | name="./info" 12 | xtype="displayfield"/> 13 | </items> 14 | </jcr:root> 15 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/textarea/textarea.html: -------------------------------------------------------------------------------- 1 | <h3>Textarea validation sample</h3> 2 | 3 | <pre> 4 | <textareaA 5 | jcr:primaryType="nt:unstructured" 6 | sling:resourceType="granite/ui/components/foundation/form/textarea" 7 | fieldLabel="No validation" 8 | name="./textareaA"/> 9 | <textareaB 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="granite/ui/components/foundation/form/textarea" 12 | fieldLabel="Required, Min & Max length" 13 | fieldDescription="Required, Min & Max length" 14 | required="{Boolean}true" 15 | minlength="{Long}4" 16 | maxlength="{Long}10" 17 | pattern="alpha" 18 | name="./textareaB"/> 19 | <textareaC 20 | jcr:primaryType="nt:unstructured" 21 | sling:resourceType="granite/ui/components/foundation/form/textarea" 22 | fieldLabel="Required and pattern "alpha"" 23 | fieldDescription="Required and pattern "alpha"" 24 | required="{Boolean}true" 25 | pattern="alpha" 26 | name="./textareaC"/> 27 | <textareaD 28 | jcr:primaryType="nt:unstructured" 29 | sling:resourceType="granite/ui/components/foundation/form/textarea" 30 | fieldLabel="Custom Regex" 31 | fieldDescription="Custom Regex for social security number must match ^\\d{3}-\\d{2}-\\d{4}$" 32 | required="{Boolean}true" 33 | pattern="^\\d{3}-\\d{2}-\\d{4}$" 34 | name="./textareaD"/> 35 | <textareaE 36 | jcr:primaryType="nt:unstructured" 37 | sling:resourceType="granite/ui/components/foundation/form/textarea" 38 | fieldLabel="URL with active validation" 39 | fieldDescription="Start typeing "http://www.adobe.com" and notice the validation happens on keypress rather than on blur." 40 | required="{Boolean}true" 41 | activeValidation="{Boolean}true" 42 | pattern="url" 43 | name="./textareaE"/> 44 | </pre> -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/textfield/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="textfield" 5 | componentGroup="aem-touch-ui-validation"/> 6 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/textfield/_cq_dialog/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:unstructured" 4 | jcr:title="textfield validation demonstration" 5 | sling:resourceType="cq/gui/components/authoring/dialog"> 6 | <content 7 | jcr:primaryType="nt:unstructured" 8 | sling:resourceType="granite/ui/components/foundation/container"> 9 | <layout 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"/> 12 | <items jcr:primaryType="nt:unstructured"> 13 | <column 14 | jcr:primaryType="nt:unstructured" 15 | sling:resourceType="granite/ui/components/foundation/container"> 16 | <items jcr:primaryType="nt:unstructured"> 17 | <textA 18 | jcr:primaryType="nt:unstructured" 19 | sling:resourceType="granite/ui/components/foundation/form/textfield" 20 | fieldLabel="No validation" 21 | fieldDescription="No validation" 22 | name="./textA"/> 23 | <textB 24 | jcr:primaryType="nt:unstructured" 25 | sling:resourceType="granite/ui/components/foundation/form/textfield" 26 | fieldLabel="Required, Min & Max length" 27 | fieldDescription="Required, Min & Max length" 28 | required="{Boolean}true" 29 | minlength="{Long}6" 30 | maxlength="{Long}10" 31 | name="./textB"/> 32 | <textC 33 | jcr:primaryType="nt:unstructured" 34 | sling:resourceType="granite/ui/components/foundation/form/textfield" 35 | fieldLabel="Email" 36 | fieldDescription="Email" 37 | required="{Boolean}true" 38 | pattern="email" 39 | name="./textC"/> 40 | <textD 41 | jcr:primaryType="nt:unstructured" 42 | sling:resourceType="granite/ui/components/foundation/form/textfield" 43 | fieldLabel="Custom Regex" 44 | fieldDescription="Custom Regex for social security number must match ^\\d{3}-\\d{2}-\\d{4}$" 45 | required="{Boolean}true" 46 | pattern="^\\d{3}-\\d{2}-\\d{4}$" 47 | name="./textD"/> 48 | <textE 49 | jcr:primaryType="nt:unstructured" 50 | sling:resourceType="granite/ui/components/foundation/form/textfield" 51 | fieldLabel="URL with active validation" 52 | fieldDescription="Start typeing "http://www.adobe.com" and notice the validation happens on keypress rather than on blur." 53 | required="{Boolean}true" 54 | activeValidation="{Boolean}true" 55 | pattern="url" 56 | name="./textE"/> 57 | </items> 58 | </column> 59 | </items> 60 | </content> 61 | </jcr:root> 62 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/textfield/dialog.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Dialog" 4 | title="demonstration" 5 | xtype="panel"> 6 | <items jcr:primaryType="cq:WidgetCollection"> 7 | <info 8 | jcr:primaryType="cq:Widget" 9 | fieldLabel="Info" 10 | fieldDescription="This demonstration component is made for Touch UI only." 11 | name="./info" 12 | xtype="displayfield"/> 13 | </items> 14 | </jcr:root> 15 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/textfield/textfield.html: -------------------------------------------------------------------------------- 1 | <h3>Textfield validation sample</h3> 2 | 3 | <pre> 4 | <textA 5 | jcr:primaryType="nt:unstructured" 6 | sling:resourceType="granite/ui/components/foundation/form/textfield" 7 | fieldLabel="No validation" 8 | fieldDescription="No validation" 9 | name="./textA"/> 10 | <textB 11 | jcr:primaryType="nt:unstructured" 12 | sling:resourceType="granite/ui/components/foundation/form/textfield" 13 | fieldLabel="Required, Min & Max length" 14 | fieldDescription="Required, Min & Max length" 15 | required="{Boolean}true" 16 | minlength="{Long}6" 17 | maxlength="{Long}10" 18 | name="./textB"/> 19 | <textC 20 | jcr:primaryType="nt:unstructured" 21 | sling:resourceType="granite/ui/components/foundation/form/textfield" 22 | fieldLabel="Email" 23 | fieldDescription="Email" 24 | pattern="email" 25 | required="{Boolean}true" 26 | name="./textC"/> 27 | <textD 28 | jcr:primaryType="nt:unstructured" 29 | sling:resourceType="granite/ui/components/foundation/form/textfield" 30 | fieldLabel="Custom Regex" 31 | fieldDescription="Custom Regex for social security number must match ^\\d{3}-\\d{2}-\\d{4}$" 32 | pattern="^\\d{3}-\\d{2}-\\d{4}$" 33 | required="{Boolean}true" 34 | name="./textD"/> 35 | <textE 36 | jcr:primaryType="nt:unstructured" 37 | sling:resourceType="granite/ui/components/foundation/form/textfield" 38 | fieldLabel="URL with active validation" 39 | fieldDescription="Start typeing "http://www.adobe.com" and notice the validation happens on keypress rather than on blur." 40 | required="{Boolean}true" 41 | activeValidation="{Boolean}true" 42 | pattern="url" 43 | name="./textE"/> 44 | </pre> -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/title/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="Title" 5 | sling:resourceSuperType="wcm/foundation/components/title" 6 | componentGroup="aem-touch-ui-validation"/> 7 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/userpicker/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="userpicker" 5 | componentGroup="aem-touch-ui-validation"/> 6 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/userpicker/_cq_dialog/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:unstructured" 4 | jcr:title="UserPicker validation demonstration" 5 | sling:resourceType="cq/gui/components/authoring/dialog"> 6 | <content 7 | jcr:primaryType="nt:unstructured" 8 | sling:resourceType="granite/ui/components/foundation/container"> 9 | <layout 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"/> 12 | <items jcr:primaryType="nt:unstructured"> 13 | <column 14 | jcr:primaryType="nt:unstructured" 15 | sling:resourceType="granite/ui/components/foundation/container"> 16 | <items jcr:primaryType="nt:unstructured"> 17 | <userpickerA 18 | jcr:primaryType="nt:unstructured" 19 | sling:resourceType="granite/ui/components/foundation/form/userpicker" 20 | fieldLabel="No validation" 21 | name="./userpickerA"/> 22 | <userpickerB 23 | jcr:primaryType="nt:unstructured" 24 | sling:resourceType="granite/ui/components/foundation/form/userpicker" 25 | fieldLabel="Required" 26 | name="./userpickerB" 27 | required="{Boolean}true"/> 28 | </items> 29 | </column> 30 | </items> 31 | </content> 32 | </jcr:root> 33 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/userpicker/dialog.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Dialog" 4 | title="demonstration" 5 | xtype="panel"> 6 | <items jcr:primaryType="cq:WidgetCollection"> 7 | <info 8 | jcr:primaryType="cq:Widget" 9 | fieldLabel="Info" 10 | fieldDescription="This demonstration component is made for Touch UI only." 11 | name="./info" 12 | xtype="displayfield"/> 13 | </items> 14 | </jcr:root> 15 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/content/userpicker/userpicker.html: -------------------------------------------------------------------------------- 1 | <h3>UserPicker validation sample</h3> 2 | 3 | <pre> 4 | <userpickerA 5 | jcr:primaryType="nt:unstructured" 6 | sling:resourceType="granite/ui/components/foundation/form/userpicker" 7 | fieldLabel="No validation" 8 | name="./userpickerA"/> 9 | <userpickerB 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="granite/ui/components/foundation/form/userpicker" 12 | fieldLabel="Required" 13 | name="./userpickerB" 14 | required="{Boolean}true"/> 15 | </pre> -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/logo/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="Logo" 5 | sling:resourceSuperType="foundation/components/logo" 6 | componentGroup=".hidden"/> 7 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/page/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:Component" 4 | jcr:title="aem-touch-ui-validation Page" 5 | sling:resourceSuperType="wcm/foundation/components/page" 6 | componentGroup=".hidden"/> 7 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/page/clientlib/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:ClientLibraryFolder" 4 | categories="[aem-touch-ui-validation.page]"/> 5 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/page/clientlib/css.txt: -------------------------------------------------------------------------------- 1 | 2 | style.css 3 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/page/clientlib/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | .page__main { 18 | position: relative; 19 | max-width: 940px; 20 | margin: 0 auto; 21 | padding: 0 1em 1em; 22 | background-color: #fff; 23 | box-shadow: 0 0 9px 1px rgba(0,0,0,.2); 24 | -moz-box-shadow: 0 0 9px 1px -moz-rgba(0,0,0,.2); 25 | -webkit-box-shadow: 0 0 9px 1px rgba(0,0,0,.2); 26 | zoom: 100%; 27 | } 28 | 29 | .page__logo { 30 | display: inline-block; 31 | } 32 | 33 | .page__topnav { 34 | position: absolute; 35 | top: 20px; 36 | right: 1em; 37 | } 38 | 39 | .page__title h1 { 40 | color: #025c1f; 41 | text-transform: uppercase; 42 | } 43 | 44 | /* Scale down too wide images from the parsys */ 45 | .page__par img { 46 | max-width: 100%; 47 | } 48 | 49 | .page__copyright { 50 | margin-bottom: 0; 51 | } 52 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/page/page.html: -------------------------------------------------------------------------------- 1 | <!--/* 2 | Copyright 2015 Adobe Systems Incorporated 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */--> 16 | <!doctype html> 17 | <html lang="en"> 18 | <head> 19 | <sly data-sly-include="partials/head.html" data-sly-unwrap/> 20 | <sly data-sly-include="partials/headlibs.html" data-sly-unwrap/> 21 | </head> 22 | <body class="page ${currentPage.template.name}"> 23 | <sly data-sly-include="partials/main.html" data-sly-unwrap/> 24 | <sly data-sly-include="partials/footlibs.html" data-sly-unwrap/> 25 | </body> 26 | </html> 27 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/page/partials/footlibs.html: -------------------------------------------------------------------------------- 1 | <!--/* 2 | Copyright 2015 Adobe Systems Incorporated 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */--> 16 | <!--/* Include the site client libraries (loading only the JS in the footer, CSS was loaded in the header) */--> 17 | <sly data-sly-use.clientLib="/libs/granite/sightly/templates/clientlib.html" data-sly-call="${clientLib.js @ categories='aem-touch-ui-validation.all'}" data-sly-unwrap/> 18 | 19 | <!--/* Include Adobe Dynamic Tag Management libraries for the footer */--> 20 | <sly data-sly-resource="${@ resourceType='cq/cloudserviceconfigs/components/servicecomponents'}" data-sly-unwrap/> -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/page/partials/head.html: -------------------------------------------------------------------------------- 1 | <!--/* 2 | Copyright 2015 Adobe Systems Incorporated 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */--> 16 | <meta charset="utf-8" data-sly-use.head="head.js"> 17 | <title>${currentPage.title || currentPage.name} 18 | 19 | 20 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/page/partials/head.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // Server-side JavaScript for the head.html logic 18 | use(function () { 19 | var WCMUtils = Packages.com.day.cq.wcm.commons.WCMUtils; 20 | var resourceResolver = resource.getResourceResolver(); 21 | 22 | return { 23 | keywords: WCMUtils.getKeywords(currentPage, false), 24 | favIcon: resourceResolver.getResource(currentDesign.getPath() + "/favicon.ico") 25 | }; 26 | }); -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/page/partials/headlibs.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/page/partials/main.html: -------------------------------------------------------------------------------- 1 | 16 |
17 | 21 | 22 |
23 |
24 | 25 |
26 | 27 |
28 |
-------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/page/partials/main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // Server-side JavaScript for the main.html logic 18 | use(function () { 19 | var Calendar = Packages.java.util.Calendar; 20 | var currentYear = Calendar.getInstance().get(Calendar.YEAR); 21 | 22 | return { 23 | year: currentYear 24 | }; 25 | }); -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/topnav/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/topnav/clientlib/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/topnav/clientlib/css.txt: -------------------------------------------------------------------------------- 1 | 2 | style.css 3 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/topnav/clientlib/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | .topnav { 18 | float: right; 19 | list-style: none; 20 | } 21 | .topnav__item { 22 | float: left; 23 | margin-left: 15px; 24 | } 25 | .topnav__item--selected { 26 | font-weight: bold; 27 | } 28 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/topnav/topnav.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/components/structure/topnav/topnav.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // Server-side JavaScript for the topnav logic 18 | use(function () { 19 | var items = []; 20 | var root = currentPage.getAbsoluteParent(1); 21 | var currentNavPath = currentPage.getAbsoluteParent(2).getPath(); 22 | var it = root.listChildren(new Packages.com.day.cq.wcm.api.PageFilter()); 23 | 24 | while (it.hasNext()) { 25 | var page = it.next(); 26 | 27 | // No strict comparison, because the types returned from the Java APIs 28 | // don't strictly match the JavaScript types 29 | var selected = (page.getPath() == currentNavPath); 30 | 31 | items.push({ 32 | page: page, 33 | selected : selected 34 | }); 35 | } 36 | 37 | return { 38 | items: items 39 | }; 40 | }); -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/i18n/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/i18n/fr.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/templates/page-content/.content.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 14 | 17 | <topnav 18 | jcr:primaryType="nt:unstructured" 19 | sling:resourceType="aem-touch-ui-validation/components/structure/topnav"/> 20 | <par 21 | jcr:primaryType="nt:unstructured" 22 | sling:resourceType="wcm/foundation/components/parsys"> 23 | <text 24 | jcr:primaryType="nt:unstructured" 25 | sling:resourceType="aem-touch-ui-validation/components/content/text" 26 | text="<p>This is a content page</p>" 27 | textIsRich="true"/> 28 | </par> 29 | </jcr:content> 30 | </jcr:root> 31 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/apps/aem-touch-ui-validation/templates/page-home/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:description="Template for initial or main page of the site." 4 | jcr:primaryType="cq:Template" 5 | jcr:title="aem-touch-ui-validation Home Page" 6 | allowedPaths="[/content/aem-touch-ui-validation]" 7 | ranking="{Long}100"> 8 | <jcr:content 9 | jcr:primaryType="cq:PageContent" 10 | sling:resourceType="aem-touch-ui-validation/components/structure/page"> 11 | <logo 12 | jcr:primaryType="nt:unstructured" 13 | sling:resourceType="aem-touch-ui-validation/components/structure/logo"/> 14 | <title 15 | jcr:primaryType="nt:unstructured" 16 | sling:resourceType="aem-touch-ui-validation/components/content/title"/> 17 | <topnav 18 | jcr:primaryType="nt:unstructured" 19 | sling:resourceType="aem-touch-ui-validation/components/structure/topnav"/> 20 | <par 21 | jcr:primaryType="nt:unstructured" 22 | sling:resourceType="wcm/foundation/components/parsys"> 23 | <text 24 | jcr:primaryType="nt:unstructured" 25 | sling:resourceType="aem-touch-ui-validation/components/content/text" 26 | text="<p>This is a home page</p>" 27 | textIsRich="true"/> 28 | </par> 29 | </jcr:content> 30 | </jcr:root> 31 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="cq:Page"> 4 | <jcr:content 5 | jcr:primaryType="nt:unstructured" 6 | jcr:title="aem-touch-ui-validation Design" 7 | sling:resourceType="wcm/core/components/designer"> 8 | <page jcr:primaryType="nt:unstructured"> 9 | <par 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="wcm/foundation/components/parsys" 12 | components="[group:aem-touch-ui-validation]"> 13 | <colctrl 14 | jcr:primaryType="nt:unstructured" 15 | sling:resourceType="aem-touch-ui-validation/components/content/colctrl" 16 | layouts="2;cq-colctrl-lt0 2 Columns (50%, 50%)"/> 17 | <cq:authoring 18 | jcr:primaryType="nt:unstructured"> 19 | <assetToComponentMapping jcr:primaryType="nt:unstructured"> 20 | <image 21 | jcr:primaryType="nt:unstructured" 22 | assetGroup="media" 23 | assetMimetype="image/*" 24 | droptarget="image" 25 | resourceType="aem-touch-ui-validation/components/content/image" 26 | type="Images"/> 27 | </assetToComponentMapping> 28 | </cq:authoring> 29 | </par> 30 | <logo 31 | jcr:primaryType="nt:unstructured" 32 | sling:resourceType="aem-touch-ui-validation/components/structure/logo" 33 | absParent="2"> 34 | <image/> 35 | </logo> 36 | </page> 37 | </jcr:content> 38 | </jcr:root> 39 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/_jcr_content/page/logo/image: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/_jcr_content/page/logo/image -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/_jcr_content/page/logo/image.dir/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:file"> 4 | <jcr:content 5 | jcr:lastModifiedBy="admin" 6 | jcr:mimeType="image/png" 7 | jcr:primaryType="nt:resource"/> 8 | </jcr:root> 9 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-all/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:ClientLibraryFolder" 4 | categories="[aem-touch-ui-validation.all]" 5 | embed="[aem-touch-ui-validation.site,aem-touch-ui-validation.page,aem-touch-ui-validation.topnav,aem-touch-ui-validation.colctrl,aem-touch-ui-validation.textimage]"/> 6 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-all/README.md: -------------------------------------------------------------------------------- 1 | 2 | This client library should be left empty: it's purpose is to list all client libraries that the site requires. This allows to manage flexibly what is to be included in which order, as well as to accelerate the site by concatenating everything into one file. 3 | 4 | Another reason why this client library is playing an essential role is that in production, access to /apps should be blocked by the dispatcher, therefore no client library located under /apps can be directly accessed anymore. 5 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-all/css.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-all/css.txt -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-all/js.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-all/js.txt -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-site/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:ClientLibraryFolder" 4 | categories="[aem-touch-ui-validation.site]"/> 5 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-site/README.md: -------------------------------------------------------------------------------- 1 | 2 | This client library should contain general styles and scripts. Everything specific to components should be placed in client libraries below the corresponding components. 3 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-site/css.txt: -------------------------------------------------------------------------------- 1 | 2 | style.css 3 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-site/js.txt: -------------------------------------------------------------------------------- 1 | 2 | script.js 3 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-site/script.js: -------------------------------------------------------------------------------- 1 | /** a JS file that shall be included */ -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-site/style.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Adobe Systems Incorporated 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | body { 18 | margin: 0; 19 | padding: 0; 20 | font-family: sans-serif; 21 | font-size: 0.875em; 22 | line-height: 1.2; 23 | background-color: #d3d3d3; 24 | } 25 | 26 | a { 27 | text-decoration: none; 28 | color: #025c1f; 29 | } 30 | a:hover { 31 | text-decoration: underline; 32 | } 33 | 34 | img { 35 | vertical-align: top; 36 | } 37 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 3 | jcr:primaryType="cq:ClientLibraryFolder" 4 | categories="[cq.authoring.dialog]"/> 5 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css.txt: -------------------------------------------------------------------------------- 1 | #base=css 2 | 3 | autocomplete.css 4 | colorpicker.css 5 | multifield.css 6 | pathbrowser.css 7 | radiogroup.css 8 | autocomplete.css 9 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css/autocomplete.css: -------------------------------------------------------------------------------- 1 | .js-coral-Autocomplete-textfield.is-invalid ~ .coral-InputGroup-button > .coral-Button { 2 | border: solid 1px #e14132; 3 | } 4 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css/colorpicker.css: -------------------------------------------------------------------------------- 1 | .coral-ColorPicker .marker-colorpicker { 2 | display: none; 3 | } 4 | 5 | .coral-ColorPicker.is-invalid button { 6 | border: solid 1px #e14132; 7 | } 8 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css/multifield.css: -------------------------------------------------------------------------------- 1 | .coral-Multifield.is-invalid { 2 | border: solid 1px #e14132; 3 | } 4 | 5 | .coral-Multifield .marker-multifield { 6 | display: none; 7 | } 8 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css/pathbrowser.css: -------------------------------------------------------------------------------- 1 | .js-coral-pathbrowser-input.is-invalid + .coral-InputGroup-button > .coral-Button { 2 | border: solid 1px #e14132; 3 | } 4 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/css/radiogroup.css: -------------------------------------------------------------------------------- 1 | .coral-RadioGroup.is-invalid { 2 | border: solid 1px #e14132; 3 | } 4 | 5 | .coral-RadioGroup .marker { 6 | display: none; 7 | } 8 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/js.txt: -------------------------------------------------------------------------------- 1 | #base=js 2 | 3 | customEvents.js 4 | utils.js 5 | autocomplete.js 6 | colorpicker.js 7 | multifield.js 8 | pathbrowser.js 9 | radiogroup.js 10 | textfield.js 11 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/js/autocomplete.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Validation for Granite Touch UI autocomplete and userPicker. 3 | * 4 | * Additional properties for granite/ui/components/foundation/form/userPicker 5 | * are: 6 | * 7 | * {Boolean}required 8 | * Is field required 9 | * defaults to false 10 | * 11 | * <myUserPicker 12 | * jcr:primaryType="nt:unstructured" 13 | * sling:resourceType="granite/ui/components/foundation/form/userpicker" 14 | * fieldLabel="My userpicker" 15 | * name="./myUserPicker" 16 | * required="{Boolean}true"/> 17 | */ 18 | (function(ns, window, document, $, Granite, undefined) { 19 | 'use strict'; 20 | 21 | var USER_PICKER_SELECTOR = '.coral-Autocomplete'; 22 | 23 | $.validator.register({ 24 | selector: '.marker-userpicker', 25 | validate: function(el) { 26 | var required, 27 | value; 28 | 29 | required = el.attr('aria-required'); 30 | value = el.val(); 31 | 32 | if (required && !value) { 33 | return Granite.I18n.get('Please fill out this field.'); 34 | } else { 35 | el.setCustomValidity(null); 36 | el.updateErrorUI(); 37 | } 38 | } 39 | }); 40 | 41 | /** 42 | * Copy required attribute from the container to the form element and create a 43 | * click event handler when a Granite UI dialog loads. 44 | */ 45 | $(document).on('foundation-contentloaded', function(e) { 46 | var $dialog, 47 | $userPickers; 48 | 49 | $dialog = $(e.target); 50 | $userPickers = $dialog.find(USER_PICKER_SELECTOR); 51 | 52 | $userPickers.each(function() { 53 | var $userPicker, 54 | $input, 55 | required; 56 | 57 | $userPicker = $(this); 58 | $input = $userPicker.find('input[type="text"]'); 59 | required = ns.utils.getAttribute($userPicker, 'aria-required', false); 60 | 61 | if (required) { 62 | $input.attr('aria-required', 'true') 63 | .addClass('marker-userpicker'); 64 | 65 | /* Revalidate on autocomplete selection */ 66 | $input.closest('.coral-Form-field') 67 | .click(function(){ 68 | $input.checkValidity(); 69 | }); 70 | } 71 | }); 72 | }); 73 | 74 | })(window.aemTouchUIValidation = window.aemTouchUIValidation || {}, window, document, Granite.$, Granite); 75 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/js/customEvents.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Trigger jQuery event 'stylechange' when a jQuery object's style attribute 3 | * changes. 4 | */ 5 | (function() { 6 | var originalCss= $.fn.css; 7 | 8 | $.fn.css = function() { 9 | var event = new $.Event('stylechange'); 10 | originalCss.apply(this, arguments); 11 | $(this).trigger(event); 12 | } 13 | })(); 14 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/js/radiogroup.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Validation for Granite Touch UI radiogroup. 3 | * 4 | * Additional properties for granite/ui/components/foundation/form/radiogroup 5 | * are: 6 | * 7 | * {Boolean}required 8 | * Is field required 9 | * defaults to false 10 | * 11 | * <myRadioGroup 12 | * jcr:primaryType="nt:unstructured" 13 | * sling:resourceType="granite/ui/components/foundation/form/radiogroup" 14 | * fieldLabel="My radiogroup" 15 | * required="{Boolean}true"> 16 | * <items jcr:primaryType="nt:unstructured"> 17 | * ... 18 | * </items> 19 | * </myRadioGroup> 20 | */ 21 | (function(ns, window, document, $, Granite, undefined) { 22 | 'use strict'; 23 | 24 | var RADIOGROUP_SELECTOR = '.coral-RadioGroup'; 25 | 26 | $.validator.register({ 27 | selector: '.marker', 28 | show: function (el, message) { 29 | var fieldErrorEl, 30 | field, 31 | error, 32 | arrow; 33 | 34 | fieldErrorEl = ns.utils.getFieldErrorEl(); 35 | field = el.closest('.coral-Form-field'); 36 | 37 | el.add(field) 38 | .attr('aria-invalid', 'true') 39 | .toggleClass('is-invalid', true); 40 | 41 | field.nextAll('.coral-Form-fieldinfo') 42 | .addClass('u-coral-screenReaderOnly'); 43 | 44 | error = field.nextAll('.coral-Form-fielderror'); 45 | 46 | if (error.length === 0) { 47 | arrow = field.closest('form').hasClass('coral-Form--vertical') ? 'right' : 'top'; 48 | fieldErrorEl.clone() 49 | .attr('data-quicktip-arrow', arrow) 50 | .attr('data-quicktip-content', message) 51 | .insertAfter(field); 52 | } else { 53 | error.data('quicktipContent', message); 54 | } 55 | }, 56 | clear: function(el) { 57 | var field = el.closest('.coral-Form-field'); 58 | 59 | el.add(field) 60 | .removeAttr('aria-invalid') 61 | .removeClass('is-invalid'); 62 | 63 | field.nextAll('.coral-Form-fielderror').tooltip('hide').remove(); 64 | field.nextAll('.coral-Form-fieldinfo').removeClass('u-coral-screenReaderOnly'); 65 | } 66 | }); 67 | 68 | /** 69 | * Create hidden field to validate against and click event handler when a 70 | * Granite UI dialog loads. 71 | */ 72 | $(document).on('foundation-contentloaded', function(e) { 73 | var $dialog, 74 | $radioGroups; 75 | 76 | $dialog = $(e.target); 77 | $radioGroups = $dialog.find(RADIOGROUP_SELECTOR); 78 | 79 | $radioGroups.each(function() { 80 | var $radioGroup, 81 | required, 82 | $marker, 83 | $items; 84 | 85 | $radioGroup = $(this); 86 | required = $radioGroup.data('required'); 87 | 88 | if (required) { 89 | $marker = $('<input type="text" class="marker" aria-required="true">'); 90 | $items = $radioGroup.find('input[type="radio"]'); 91 | 92 | $radioGroup.prepend($marker); 93 | 94 | $items.click(function() { 95 | $marker 96 | .val($(this).is(':checked') ? 'checked' : null) 97 | .change(); 98 | }); 99 | } 100 | }); 101 | }); 102 | 103 | })(window.aemTouchUIValidation = window.aemTouchUIValidation || {}, window, document, Granite.$, Granite); 104 | -------------------------------------------------------------------------------- /demo/ui.apps/target/classes/etc/designs/aem-touch-ui-validation/clientlib-touch-ui-validation/js/utils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * AEM Touch UI Validation library common utilities 3 | */ 4 | (function(ns, window, document, $, Granite, undefined) { 5 | 'use strict'; 6 | 7 | ns.utils = { 8 | /** 9 | * Is a string not null, undefined, blank or empty 10 | * 11 | * @param {String} The string to test 12 | * @return {Boolean} Is string not null, undefined, blank or empty 13 | * @function 14 | */ 15 | isNotBlank: function(str) { 16 | return typeof str !== 'undefined' && str !== null && str.trim() !== ''; 17 | }, 18 | 19 | /** 20 | * Get a data attribute from a jQuery object 21 | * 22 | * If the data attribute is undefined, return the default value. 23 | * 24 | * @param {jQuery} A jQuery object 25 | * @param {String} Data attribute to retrieve from the jQuery object 26 | * @param {String} Default value if data attribute is undefined 27 | * @return {String|Number} The data attribute or default value 28 | * @function 29 | */ 30 | getDataAttribute: function($el, property, defaultVal) { 31 | var value = $el.data(property); 32 | 33 | return value === undefined ? defaultVal : value; 34 | }, 35 | 36 | /** 37 | * Get a attribute from a jQuery object 38 | * 39 | * If the attribute is undefined, return the default value. 40 | * 41 | * @param {jQuery} A jQuery object 42 | * @param {String} Attribute to retrieve from the jQuery object 43 | * @param {String} Default value if attribute is undefined 44 | * @return {String|Number} The attribute or default value 45 | * @function 46 | */ 47 | getAttribute: function($el, property, defaultVal) { 48 | var value = $el.attr(property); 49 | 50 | return value === undefined ? defaultVal : value; 51 | }, 52 | 53 | /** 54 | * Get the validation error HTML as a jQuery object 55 | * 56 | * @return {jQuery} The validation error HTML as a jQuery object 57 | * @function 58 | */ 59 | getFieldErrorEl: function() { 60 | return $("<span class='coral-Form-fielderror coral-Icon coral-Icon--alert coral-Icon--sizeS' data-init='quicktip' data-quicktip-type='error' />").clone(); 61 | } 62 | }; 63 | 64 | })(window.aemTouchUIValidation = window.aemTouchUIValidation || {}, window, document, Granite.$, Granite); 65 | -------------------------------------------------------------------------------- /demo/ui.apps/target/maven-archiver/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven 2 | #Tue Feb 23 20:52:36 PST 2016 3 | version=1.0-SNAPSHOT 4 | groupId=com.nateyolles.aem 5 | artifactId=aem-touch-ui-validation.ui.apps 6 | -------------------------------------------------------------------------------- /demo/ui.apps/target/vault-work/META-INF/vault/config.xml: -------------------------------------------------------------------------------- 1 | <vaultfs version="1.1"> 2 | <!-- 3 | Defines the content aggregation. The order of the defined aggregates 4 | is important for finding the correct aggregator. 5 | --> 6 | <aggregates> 7 | <!-- 8 | Defines an aggregate that handles nt:file and nt:resource nodes. 9 | --> 10 | <aggregate type="file" title="File Aggregate"/> 11 | 12 | <!-- 13 | Defines an aggregate that handles file/folder like nodes. It matches 14 | all nt:hierarchyNode nodes that have or define a jcr:content 15 | child node and excludes child nodes that are nt:hierarchyNodes. 16 | --> 17 | <aggregate type="filefolder" title="File/Folder Aggregate"/> 18 | 19 | <!-- 20 | Defines an aggregate that handles nt:nodeType nodes and serializes 21 | them into .cnd notation. 22 | --> 23 | <aggregate type="nodetype" title="Node Type Aggregate" /> 24 | 25 | <!-- 26 | Defines an aggregate that defines full coverage for certain node 27 | types that cannot be covered by the default aggregator. 28 | --> 29 | <aggregate type="full" title="Full Coverage Aggregate"> 30 | <matches> 31 | <include nodeType="rep:AccessControl" respectSupertype="true" /> 32 | <include nodeType="rep:Policy" respectSupertype="true" /> 33 | <include nodeType="cq:Widget" respectSupertype="true" /> 34 | <include nodeType="cq:EditConfig" respectSupertype="true" /> 35 | <include nodeType="cq:WorkflowModel" respectSupertype="true" /> 36 | <include nodeType="vlt:FullCoverage" respectSupertype="true" /> 37 | <include nodeType="mix:language" respectSupertype="true" /> 38 | <include nodeType="sling:OsgiConfig" respectSupertype="true" /> 39 | </matches> 40 | </aggregate> 41 | 42 | <!-- 43 | Defines an aggregate that handles nt:folder like nodes. 44 | --> 45 | <aggregate type="generic" title="Folder Aggregate"> 46 | <matches> 47 | <include nodeType="nt:folder" respectSupertype="true" /> 48 | </matches> 49 | <contains> 50 | <exclude isNode="true" /> 51 | </contains> 52 | </aggregate> 53 | 54 | <!-- 55 | Defines the default aggregate 56 | --> 57 | <aggregate type="generic" title="Default Aggregator" isDefault="true"> 58 | <matches> 59 | <!-- all --> 60 | </matches> 61 | <contains> 62 | <exclude nodeType="nt:hierarchyNode" respectSupertype="true" /> 63 | </contains> 64 | </aggregate> 65 | 66 | </aggregates> 67 | 68 | <!-- 69 | defines the input handlers 70 | --> 71 | <handlers> 72 | <handler type="folder"/> 73 | <handler type="file"/> 74 | <handler type="nodetype"/> 75 | <handler type="generic"/> 76 | </handlers> 77 | </vaultfs> 78 | -------------------------------------------------------------------------------- /demo/ui.apps/target/vault-work/META-INF/vault/definition/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!-- 3 | Copyright 2012 Adobe Systems Incorporated 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | --> 17 | <jcr:root xmlns:vlt="http://www.day.com/jcr/vault/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 18 | jcr:primaryType="vlt:PackageDefinition"> 19 | <thumbnail.png/> 20 | </jcr:root> -------------------------------------------------------------------------------- /demo/ui.apps/target/vault-work/META-INF/vault/definition/thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.apps/target/vault-work/META-INF/vault/definition/thumbnail.png -------------------------------------------------------------------------------- /demo/ui.apps/target/vault-work/META-INF/vault/filter-plugin-generated.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <workspaceFilter version="1.0" /> -------------------------------------------------------------------------------- /demo/ui.apps/target/vault-work/META-INF/vault/filter.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <workspaceFilter version="1.0"> 3 | <filter root="/apps/aem-touch-ui-validation"> 4 | <exclude pattern="/apps/aem-touch-ui-validation/install" /> 5 | </filter> 6 | <filter root="/apps/sling" /> 7 | <filter root="/etc/designs/aem-touch-ui-validation"/> 8 | </workspaceFilter> 9 | -------------------------------------------------------------------------------- /demo/ui.apps/target/vault-work/META-INF/vault/properties.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 | <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 3 | <properties> 4 | <comment>aem-touch-ui-validation - UI apps</comment> 5 | <entry key="createdBy">yolles</entry> 6 | <entry key="name">aem-touch-ui-validation.ui.apps</entry> 7 | <entry key="created">2016-02-23T20:52:36.472-0800</entry> 8 | <entry key="groupId">com.nateyolles.aem</entry> 9 | <entry key="version">1.0-SNAPSHOT</entry> 10 | <entry key="requiresRoot">false</entry> 11 | <entry key="group">aem-touch-ui-validation</entry> 12 | <entry key="description">UI apps package for aem-touch-ui-validation</entry> 13 | <entry key="artifactId">aem-touch-ui-validation.ui.apps</entry> 14 | <entry key="path">/etc/packages/aem-touch-ui-validation/aem-touch-ui-validation.ui.apps.zip</entry> 15 | </properties> 16 | -------------------------------------------------------------------------------- /demo/ui.apps/target/vault-work/META-INF/vault/settings.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <vault version="1.0"> 3 | <ignore name=".svn"/> 4 | <ignore name=".git"/> 5 | </vault> 6 | -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/META-INF/vault/config.xml: -------------------------------------------------------------------------------- 1 | <vaultfs version="1.1"> 2 | <!-- 3 | Defines the content aggregation. The order of the defined aggregates 4 | is important for finding the correct aggregator. 5 | --> 6 | <aggregates> 7 | <!-- 8 | Defines an aggregate that handles nt:file and nt:resource nodes. 9 | --> 10 | <aggregate type="file" title="File Aggregate"/> 11 | 12 | <!-- 13 | Defines an aggregate that handles file/folder like nodes. It matches 14 | all nt:hierarchyNode nodes that have or define a jcr:content 15 | child node and excludes child nodes that are nt:hierarchyNodes. 16 | --> 17 | <aggregate type="filefolder" title="File/Folder Aggregate"/> 18 | 19 | <!-- 20 | Defines an aggregate that handles nt:nodeType nodes and serializes 21 | them into .cnd notation. 22 | --> 23 | <aggregate type="nodetype" title="Node Type Aggregate" /> 24 | 25 | <!-- 26 | Defines an aggregate that defines full coverage for certain node 27 | types that cannot be covered by the default aggregator. 28 | --> 29 | <aggregate type="full" title="Full Coverage Aggregate"> 30 | <matches> 31 | <include nodeType="rep:AccessControl" respectSupertype="true" /> 32 | <include nodeType="rep:Policy" respectSupertype="true" /> 33 | <include nodeType="cq:Widget" respectSupertype="true" /> 34 | <include nodeType="cq:EditConfig" respectSupertype="true" /> 35 | <include nodeType="cq:WorkflowModel" respectSupertype="true" /> 36 | <include nodeType="vlt:FullCoverage" respectSupertype="true" /> 37 | <include nodeType="mix:language" respectSupertype="true" /> 38 | <include nodeType="sling:OsgiConfig" respectSupertype="true" /> 39 | </matches> 40 | </aggregate> 41 | 42 | <!-- 43 | Defines an aggregate that handles nt:folder like nodes. 44 | --> 45 | <aggregate type="generic" title="Folder Aggregate"> 46 | <matches> 47 | <include nodeType="nt:folder" respectSupertype="true" /> 48 | </matches> 49 | <contains> 50 | <exclude isNode="true" /> 51 | </contains> 52 | </aggregate> 53 | 54 | <!-- 55 | Defines the default aggregate 56 | --> 57 | <aggregate type="generic" title="Default Aggregator" isDefault="true"> 58 | <matches> 59 | <!-- all --> 60 | </matches> 61 | <contains> 62 | <exclude nodeType="nt:hierarchyNode" respectSupertype="true" /> 63 | </contains> 64 | </aggregate> 65 | 66 | </aggregates> 67 | 68 | <!-- 69 | defines the input handlers 70 | --> 71 | <handlers> 72 | <handler type="folder"/> 73 | <handler type="file"/> 74 | <handler type="nodetype"/> 75 | <handler type="generic"/> 76 | </handlers> 77 | </vaultfs> 78 | -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/META-INF/vault/filter.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <workspaceFilter version="1.0"> 3 | <filter root="/content/aem-touch-ui-validation"/> 4 | <filter root="/content/dam/aem-touch-ui-validation"/> 5 | </workspaceFilter> 6 | -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/META-INF/vault/settings.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <vault version="1.0"> 3 | <ignore name=".svn"/> 4 | <ignore name=".git"/> 5 | </vault> 6 | -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="cq:Page"> 4 | <jcr:content 5 | cq:designPath="/etc/designs/aem-touch-ui-validation" 6 | cq:deviceGroups="[/etc/mobile/groups/responsive]" 7 | jcr:primaryType="nt:unstructured" 8 | jcr:title="aem-touch-ui-validation" 9 | sling:redirect="{Boolean}true" 10 | sling:redirectStatus="{Long}302" 11 | sling:resourceType="foundation/components/redirect" 12 | redirectTarget="/content/aem-touch-ui-validation/en"> 13 | <image jcr:primaryType="nt:unstructured"> 14 | <file/> 15 | </image> 16 | </jcr:content> 17 | </jcr:root> 18 | -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/_jcr_content/image/file: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/_jcr_content/image/file -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/_jcr_content/image/file.dir/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:dam="http://www.day.com/dam/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:file"> 4 | <jcr:content 5 | jcr:lastModifiedBy="admin" 6 | jcr:mimeType="image/png" 7 | jcr:mixinTypes="[dam:Thumbnails]" 8 | jcr:primaryType="nt:resource"/> 9 | </jcr:root> 10 | -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/_jcr_content/image/file.dir/_jcr_content/_dam_thumbnails/_dam_thumbnail_319.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/_jcr_content/image/file.dir/_jcr_content/_dam_thumbnails/_dam_thumbnail_319.png -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/en/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="cq:Page"> 4 | <jcr:content 5 | jcr:primaryType="nt:unstructured" 6 | jcr:title="English" 7 | pageTitle="AEM Touch UI Validation Library Demo" 8 | sling:resourceType="aem-touch-ui-validation/components/structure/page"> 9 | <logo 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="aem-touch-ui-validation/components/structure/logo"/> 12 | <title 13 | jcr:primaryType="nt:unstructured" 14 | sling:resourceType="aem-touch-ui-validation/components/content/title"/> 15 | <topnav 16 | jcr:primaryType="nt:unstructured" 17 | sling:resourceType="aem-touch-ui-validation/components/structure/topnav"/> 18 | <par 19 | jcr:primaryType="nt:unstructured" 20 | sling:resourceType="wcm/foundation/components/parsys"> 21 | <multifield 22 | jcr:primaryType="nt:unstructured" 23 | sling:resourceType="aem-touch-ui-validation/components/content/multifield"/> 24 | <pathbrowser 25 | jcr:primaryType="nt:unstructured" 26 | sling:resourceType="aem-touch-ui-validation/components/content/pathbrowser"/> 27 | <radiogroup 28 | jcr:primaryType="nt:unstructured" 29 | sling:resourceType="aem-touch-ui-validation/components/content/radiogroup"/> 30 | <userpicker 31 | jcr:primaryType="nt:unstructured" 32 | sling:resourceType="aem-touch-ui-validation/components/content/userpicker"/> 33 | <colorpicker 34 | jcr:primaryType="nt:unstructured" 35 | sling:resourceType="aem-touch-ui-validation/components/content/colorpicker"/> 36 | <textfield 37 | jcr:primaryType="nt:unstructured" 38 | sling:resourceType="aem-touch-ui-validation/components/content/textfield"/> 39 | <password 40 | jcr:primaryType="nt:unstructured" 41 | sling:resourceType="aem-touch-ui-validation/components/content/password"/> 42 | <textarea 43 | jcr:primaryType="nt:unstructured" 44 | sling:resourceType="aem-touch-ui-validation/components/content/textarea"/> 45 | </par> 46 | </jcr:content> 47 | </jcr:root> 48 | -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/fr/_jcr_content/image/file: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/fr/_jcr_content/image/file -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/fr/_jcr_content/image/file.dir/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:dam="http://www.day.com/dam/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:file"> 4 | <jcr:content 5 | jcr:mimeType="image/png" 6 | jcr:mixinTypes="[dam:Thumbnails]" 7 | jcr:primaryType="nt:resource"/> 8 | </jcr:root> 9 | -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/fr/_jcr_content/image/file.dir/_jcr_content/_dam_thumbnails/_dam_thumbnail_319.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/src/main/content/jcr_root/content/aem-touch-ui-validation/fr/_jcr_content/image/file.dir/_jcr_content/_dam_thumbnails/_dam_thumbnail_319.png -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/dam/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:rep="internal" 3 | jcr:mixinTypes="[mix:lockable,rep:AccessControllable]" 4 | jcr:primaryType="sling:OrderedFolder"> 5 | <rep:policy/> 6 | <__contentFolderName__/> 7 | </jcr:root> 8 | -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="sling:OrderedFolder"> 4 | <jcr:content 5 | jcr:primaryType="nt:unstructured" 6 | jcr:title="aem-touch-ui-validation"> 7 | <folderThumbnail/> 8 | </jcr:content> 9 | <asset.jpg/> 10 | </jcr:root> 11 | -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/_jcr_content/folderThumbnail: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/_jcr_content/folderThumbnail -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.140.100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.140.100.png -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.319.319.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.319.319.png -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.48.48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.48.48.png -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/original: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/original -------------------------------------------------------------------------------- /demo/ui.content/src/main/content/jcr_root/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/original.dir/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:file"> 4 | <jcr:content 5 | jcr:lastModifiedBy="admin" 6 | jcr:mimeType="image/jpeg" 7 | jcr:primaryType="nt:resource"/> 8 | </jcr:root> 9 | -------------------------------------------------------------------------------- /demo/ui.content/target/aem-touch-ui-validation.ui.content-1.0-SNAPSHOT.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/target/aem-touch-ui-validation.ui.content-1.0-SNAPSHOT.zip -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/aem-touch-ui-validation/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="cq:Page"> 4 | <jcr:content 5 | cq:designPath="/etc/designs/aem-touch-ui-validation" 6 | cq:deviceGroups="[/etc/mobile/groups/responsive]" 7 | jcr:primaryType="nt:unstructured" 8 | jcr:title="aem-touch-ui-validation" 9 | sling:redirect="{Boolean}true" 10 | sling:redirectStatus="{Long}302" 11 | sling:resourceType="foundation/components/redirect" 12 | redirectTarget="/content/aem-touch-ui-validation/en"> 13 | <image jcr:primaryType="nt:unstructured"> 14 | <file/> 15 | </image> 16 | </jcr:content> 17 | </jcr:root> 18 | -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/aem-touch-ui-validation/_jcr_content/image/file: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/target/classes/content/aem-touch-ui-validation/_jcr_content/image/file -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/aem-touch-ui-validation/_jcr_content/image/file.dir/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:dam="http://www.day.com/dam/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:file"> 4 | <jcr:content 5 | jcr:lastModifiedBy="admin" 6 | jcr:mimeType="image/png" 7 | jcr:mixinTypes="[dam:Thumbnails]" 8 | jcr:primaryType="nt:resource"/> 9 | </jcr:root> 10 | -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/aem-touch-ui-validation/_jcr_content/image/file.dir/_jcr_content/_dam_thumbnails/_dam_thumbnail_319.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/target/classes/content/aem-touch-ui-validation/_jcr_content/image/file.dir/_jcr_content/_dam_thumbnails/_dam_thumbnail_319.png -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/aem-touch-ui-validation/en/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="cq:Page"> 4 | <jcr:content 5 | jcr:primaryType="nt:unstructured" 6 | jcr:title="English" 7 | pageTitle="AEM Touch UI Validation Library Demo" 8 | sling:resourceType="aem-touch-ui-validation/components/structure/page"> 9 | <logo 10 | jcr:primaryType="nt:unstructured" 11 | sling:resourceType="aem-touch-ui-validation/components/structure/logo"/> 12 | <title 13 | jcr:primaryType="nt:unstructured" 14 | sling:resourceType="aem-touch-ui-validation/components/content/title"/> 15 | <topnav 16 | jcr:primaryType="nt:unstructured" 17 | sling:resourceType="aem-touch-ui-validation/components/structure/topnav"/> 18 | <par 19 | jcr:primaryType="nt:unstructured" 20 | sling:resourceType="wcm/foundation/components/parsys"> 21 | <multifield 22 | jcr:primaryType="nt:unstructured" 23 | sling:resourceType="aem-touch-ui-validation/components/content/multifield"/> 24 | <pathbrowser 25 | jcr:primaryType="nt:unstructured" 26 | sling:resourceType="aem-touch-ui-validation/components/content/pathbrowser"/> 27 | <radiogroup 28 | jcr:primaryType="nt:unstructured" 29 | sling:resourceType="aem-touch-ui-validation/components/content/radiogroup"/> 30 | <userpicker 31 | jcr:primaryType="nt:unstructured" 32 | sling:resourceType="aem-touch-ui-validation/components/content/userpicker"/> 33 | <colorpicker 34 | jcr:primaryType="nt:unstructured" 35 | sling:resourceType="aem-touch-ui-validation/components/content/colorpicker"/> 36 | <textfield 37 | jcr:primaryType="nt:unstructured" 38 | sling:resourceType="aem-touch-ui-validation/components/content/textfield"/> 39 | <password 40 | jcr:primaryType="nt:unstructured" 41 | sling:resourceType="aem-touch-ui-validation/components/content/password"/> 42 | <textarea 43 | jcr:primaryType="nt:unstructured" 44 | sling:resourceType="aem-touch-ui-validation/components/content/textarea"/> 45 | </par> 46 | </jcr:content> 47 | </jcr:root> 48 | -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/aem-touch-ui-validation/fr/_jcr_content/image/file: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/target/classes/content/aem-touch-ui-validation/fr/_jcr_content/image/file -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/aem-touch-ui-validation/fr/_jcr_content/image/file.dir/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:dam="http://www.day.com/dam/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:file"> 4 | <jcr:content 5 | jcr:mimeType="image/png" 6 | jcr:mixinTypes="[dam:Thumbnails]" 7 | jcr:primaryType="nt:resource"/> 8 | </jcr:root> 9 | -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/aem-touch-ui-validation/fr/_jcr_content/image/file.dir/_jcr_content/_dam_thumbnails/_dam_thumbnail_319.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/target/classes/content/aem-touch-ui-validation/fr/_jcr_content/image/file.dir/_jcr_content/_dam_thumbnails/_dam_thumbnail_319.png -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/dam/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:rep="internal" 3 | jcr:mixinTypes="[mix:lockable,rep:AccessControllable]" 4 | jcr:primaryType="sling:OrderedFolder"> 5 | <rep:policy/> 6 | <__contentFolderName__/> 7 | </jcr:root> 8 | -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="sling:OrderedFolder"> 4 | <jcr:content 5 | jcr:primaryType="nt:unstructured" 6 | jcr:title="aem-touch-ui-validation"> 7 | <folderThumbnail/> 8 | </jcr:content> 9 | <asset.jpg/> 10 | </jcr:root> 11 | -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/_jcr_content/folderThumbnail: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/_jcr_content/folderThumbnail -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.140.100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.140.100.png -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.319.319.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.319.319.png -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.48.48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/cq5dam.thumbnail.48.48.png -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/original: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/original -------------------------------------------------------------------------------- /demo/ui.content/target/classes/content/dam/aem-touch-ui-validation/asset.jpg/_jcr_content/renditions/original.dir/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" 3 | jcr:primaryType="nt:file"> 4 | <jcr:content 5 | jcr:lastModifiedBy="admin" 6 | jcr:mimeType="image/jpeg" 7 | jcr:primaryType="nt:resource"/> 8 | </jcr:root> 9 | -------------------------------------------------------------------------------- /demo/ui.content/target/maven-archiver/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven 2 | #Tue Feb 23 20:52:37 PST 2016 3 | version=1.0-SNAPSHOT 4 | groupId=com.nateyolles.aem 5 | artifactId=aem-touch-ui-validation.ui.content 6 | -------------------------------------------------------------------------------- /demo/ui.content/target/vault-work/META-INF/vault/config.xml: -------------------------------------------------------------------------------- 1 | <vaultfs version="1.1"> 2 | <!-- 3 | Defines the content aggregation. The order of the defined aggregates 4 | is important for finding the correct aggregator. 5 | --> 6 | <aggregates> 7 | <!-- 8 | Defines an aggregate that handles nt:file and nt:resource nodes. 9 | --> 10 | <aggregate type="file" title="File Aggregate"/> 11 | 12 | <!-- 13 | Defines an aggregate that handles file/folder like nodes. It matches 14 | all nt:hierarchyNode nodes that have or define a jcr:content 15 | child node and excludes child nodes that are nt:hierarchyNodes. 16 | --> 17 | <aggregate type="filefolder" title="File/Folder Aggregate"/> 18 | 19 | <!-- 20 | Defines an aggregate that handles nt:nodeType nodes and serializes 21 | them into .cnd notation. 22 | --> 23 | <aggregate type="nodetype" title="Node Type Aggregate" /> 24 | 25 | <!-- 26 | Defines an aggregate that defines full coverage for certain node 27 | types that cannot be covered by the default aggregator. 28 | --> 29 | <aggregate type="full" title="Full Coverage Aggregate"> 30 | <matches> 31 | <include nodeType="rep:AccessControl" respectSupertype="true" /> 32 | <include nodeType="rep:Policy" respectSupertype="true" /> 33 | <include nodeType="cq:Widget" respectSupertype="true" /> 34 | <include nodeType="cq:EditConfig" respectSupertype="true" /> 35 | <include nodeType="cq:WorkflowModel" respectSupertype="true" /> 36 | <include nodeType="vlt:FullCoverage" respectSupertype="true" /> 37 | <include nodeType="mix:language" respectSupertype="true" /> 38 | <include nodeType="sling:OsgiConfig" respectSupertype="true" /> 39 | </matches> 40 | </aggregate> 41 | 42 | <!-- 43 | Defines an aggregate that handles nt:folder like nodes. 44 | --> 45 | <aggregate type="generic" title="Folder Aggregate"> 46 | <matches> 47 | <include nodeType="nt:folder" respectSupertype="true" /> 48 | </matches> 49 | <contains> 50 | <exclude isNode="true" /> 51 | </contains> 52 | </aggregate> 53 | 54 | <!-- 55 | Defines the default aggregate 56 | --> 57 | <aggregate type="generic" title="Default Aggregator" isDefault="true"> 58 | <matches> 59 | <!-- all --> 60 | </matches> 61 | <contains> 62 | <exclude nodeType="nt:hierarchyNode" respectSupertype="true" /> 63 | </contains> 64 | </aggregate> 65 | 66 | </aggregates> 67 | 68 | <!-- 69 | defines the input handlers 70 | --> 71 | <handlers> 72 | <handler type="folder"/> 73 | <handler type="file"/> 74 | <handler type="nodetype"/> 75 | <handler type="generic"/> 76 | </handlers> 77 | </vaultfs> 78 | -------------------------------------------------------------------------------- /demo/ui.content/target/vault-work/META-INF/vault/definition/.content.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <!-- 3 | Copyright 2012 Adobe Systems Incorporated 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | --> 17 | <jcr:root xmlns:vlt="http://www.day.com/jcr/vault/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" 18 | jcr:primaryType="vlt:PackageDefinition"> 19 | <thumbnail.png/> 20 | </jcr:root> -------------------------------------------------------------------------------- /demo/ui.content/target/vault-work/META-INF/vault/definition/thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/demo/ui.content/target/vault-work/META-INF/vault/definition/thumbnail.png -------------------------------------------------------------------------------- /demo/ui.content/target/vault-work/META-INF/vault/filter-plugin-generated.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <workspaceFilter version="1.0" /> -------------------------------------------------------------------------------- /demo/ui.content/target/vault-work/META-INF/vault/filter.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <workspaceFilter version="1.0"> 3 | <filter root="/content/aem-touch-ui-validation"/> 4 | <filter root="/content/dam/aem-touch-ui-validation"/> 5 | </workspaceFilter> 6 | -------------------------------------------------------------------------------- /demo/ui.content/target/vault-work/META-INF/vault/properties.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 | <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 3 | <properties> 4 | <comment>aem-touch-ui-validation - UI content</comment> 5 | <entry key="createdBy">yolles</entry> 6 | <entry key="name">aem-touch-ui-validation.ui.content</entry> 7 | <entry key="created">2016-02-23T20:52:37.053-0800</entry> 8 | <entry key="groupId">com.nateyolles.aem</entry> 9 | <entry key="version">1.0-SNAPSHOT</entry> 10 | <entry key="requiresRoot">false</entry> 11 | <entry key="group">aem-touch-ui-validation</entry> 12 | <entry key="description">UI content package for aem-touch-ui-validation</entry> 13 | <entry key="artifactId">aem-touch-ui-validation.ui.content</entry> 14 | <entry key="path">/etc/packages/aem-touch-ui-validation/aem-touch-ui-validation.ui.content.zip</entry> 15 | </properties> 16 | -------------------------------------------------------------------------------- /demo/ui.content/target/vault-work/META-INF/vault/settings.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <vault version="1.0"> 3 | <ignore name=".svn"/> 4 | <ignore name=".git"/> 5 | </vault> 6 | -------------------------------------------------------------------------------- /package/aem-touch-ui-validation-1.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nateyolles/aem-touch-ui-validation/8e72da05b403c348250b10b695dac7553228d268/package/aem-touch-ui-validation-1.1.zip --------------------------------------------------------------------------------