voom-presenters 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +4 -1
  3. data/Gemfile +1 -0
  4. data/Gemfile.lock +8 -0
  5. data/README.md +12 -0
  6. data/app/demo/components/date_fields.pom +96 -0
  7. data/app/demo/components/datetime_fields.pom +106 -0
  8. data/app/demo/components/nav/drawer.pom +1 -1
  9. data/app/demo/components/nav/menu.pom +1 -1
  10. data/app/demo/components/time_fields.pom +59 -0
  11. data/app/demo/components/toggles.pom +28 -1
  12. data/app/demo/events/actions/autocomplete.pom +32 -0
  13. data/app/demo/events/actions/deletes.pom +24 -0
  14. data/app/demo/events/actions/dialog.pom +19 -0
  15. data/app/demo/{event/actions/dialog → events/actions/dialogs}/show_dialog.pom +0 -0
  16. data/app/demo/{event/actions/dialog → events/actions/dialogs}/trigger.pom +0 -0
  17. data/app/demo/events/actions/loads.pom +19 -0
  18. data/app/demo/events/actions/posts.pom +23 -0
  19. data/app/demo/{event/new_text.pom → events/actions/replace_text.pom} +0 -0
  20. data/app/demo/events/actions/replaces.pom +21 -0
  21. data/app/demo/events/actions/snackbar.pom +19 -0
  22. data/app/demo/events/actions/toggle_visiblity.pom +21 -0
  23. data/app/demo/events/actions/updates.pom +24 -0
  24. data/app/demo/events/field_level.pom +20 -0
  25. data/app/demo/events/form_level.pom +24 -0
  26. data/app/demo/events/nav/drawer.pom +21 -0
  27. data/app/demo/events.pom +8 -77
  28. data/app/demo/formatting_tokens.pom +125 -0
  29. data/app/demo/index.pom +12 -5
  30. data/app/demo/markdown.pom +33 -40
  31. data/app/demo/shared/context_list.pom +2 -2
  32. data/app/demo/styles.pom +1 -0
  33. data/config.ru +9 -0
  34. data/lib/voom/presenters/dsl/components/base.rb +5 -0
  35. data/lib/voom/presenters/dsl/components/card.rb +2 -0
  36. data/lib/voom/presenters/dsl/components/content.rb +2 -0
  37. data/lib/voom/presenters/dsl/components/date_field.rb +21 -0
  38. data/lib/voom/presenters/dsl/components/datetime_base.rb +48 -0
  39. data/lib/voom/presenters/dsl/components/datetime_field.rb +23 -0
  40. data/lib/voom/presenters/dsl/components/expansion_panel.rb +1 -0
  41. data/lib/voom/presenters/dsl/components/form.rb +2 -0
  42. data/lib/voom/presenters/dsl/components/grid.rb +2 -0
  43. data/lib/voom/presenters/dsl/components/mixins/date_time_fields.rb +29 -0
  44. data/lib/voom/presenters/dsl/components/mixins/text_fields.rb +0 -6
  45. data/lib/voom/presenters/dsl/components/table.rb +1 -1
  46. data/lib/voom/presenters/dsl/components/time_field.rb +21 -0
  47. data/lib/voom/presenters/dsl/user_interface.rb +3 -0
  48. data/lib/voom/presenters/helpers/rails/currency.rb +16 -0
  49. data/lib/voom/presenters/helpers/rails/model_table.rb +52 -0
  50. data/lib/voom/presenters/helpers/rails.rb +4 -34
  51. data/lib/voom/presenters/settings.rb +14 -0
  52. data/lib/voom/presenters/version.rb +1 -1
  53. data/lib/voom/presenters/web_client/app.rb +8 -0
  54. data/public/bundle.css +676 -0
  55. data/public/bundle.js +3314 -1151
  56. data/views/mdc/assets/js/components/datetime.js +36 -0
  57. data/views/mdc/assets/js/components/events/base.js +5 -5
  58. data/views/mdc/assets/js/components/forms.js +2 -2
  59. data/views/mdc/assets/js/components/initialize.js +2 -2
  60. data/views/mdc/assets/js/components/switches.js +1 -1
  61. data/views/mdc/assets/js/components/text-fields.js +2 -4
  62. data/views/mdc/assets/scss/components/datetime.scss +19 -0
  63. data/views/mdc/assets/scss/components/textfield.scss +7 -0
  64. data/views/mdc/assets/scss/components/vendor/flatpickr.min.css +13 -0
  65. data/views/mdc/components/date.erb +1 -0
  66. data/views/mdc/components/{date_time.erb → datetime.erb} +13 -8
  67. data/views/mdc/components/icon.erb +2 -0
  68. data/views/mdc/components/text_field.erb +3 -2
  69. data/views/mdc/components/time.erb +1 -0
  70. data/views/mdc/layout.erb +1 -0
  71. data/views/mdc/package-lock.json +5 -0
  72. data/views/mdc/package.json +1 -1
  73. metadata +33 -18
  74. data/LICENSE.txt +0 -21
  75. data/app/demo/event/actions/nav/drawer.pom +0 -5
  76. data/app/demo/event/actions/nav/menu.pom +0 -19
  77. data/app/demo/event/actions.rb +0 -86
  78. data/app/demo/event/autocomplete.pom +0 -27
  79. data/app/demo/event/field_level.pom +0 -22
  80. data/app/demo/event/form_level.pom +0 -26
  81. data/app/demo/event/nav/drawer.pom +0 -5
  82. data/app/demo/event/nav/menu.pom +0 -14
  83. data/lib/voom/presenters/dsl/components/date_time.rb +0 -17
  84. data/lib/voom/presenters/helpers/currency.rb +0 -14
  85. data/views/mdc/assets/js/components/date-time.js +0 -6
@@ -0,0 +1,36 @@
1
+ import flatpickr from "flatpickr";
2
+ import {VTextField} from './text-fields';
3
+ import {MDCTextField} from '@material/textfield';
4
+
5
+
6
+ export function initDateTime() {
7
+ console.log('\tDateTime');
8
+ let components = document.querySelectorAll('.v-datetime');
9
+ for (let i = 0; i < components.length; i++) {
10
+ let component = components[i];
11
+ if (!component.vComponent) {
12
+ component.vComponent = new VDateTime(component, new MDCTextField(component));
13
+ }
14
+ }
15
+ }
16
+
17
+
18
+ export class VDateTime extends VTextField {
19
+ constructor(element, mdcComponent) {
20
+ super(element, mdcComponent);
21
+ let config = JSON.parse(element.dataset.config);
22
+ config.altInput = true;
23
+ let type = element.dataset.type;
24
+
25
+ if(type==='datetime'){
26
+ config.enableTime = true;
27
+ }else if(type==='time'){
28
+ config.enableTime=true;
29
+ config.noCalendar=true;
30
+ }
31
+ flatpickr(this.input, config);
32
+ }
33
+ }
34
+
35
+
36
+
@@ -16,9 +16,9 @@ export class VBase extends VUrls {
16
16
  }
17
17
 
18
18
  inputValues(form) {
19
- var params = [];
19
+ let params = [];
20
20
  // Let input component push parameters
21
- var vComp = this.component();
21
+ let vComp = this.component();
22
22
  if (vComp) {
23
23
  vComp.prepareSubmit(form, params);
24
24
  }
@@ -27,12 +27,12 @@ export class VBase extends VUrls {
27
27
 
28
28
  component() {
29
29
  let parent = this.parentElement();
30
- return parent ? this.parentElement().vComponent : null;
30
+ return parent ? parent.vComponent : null;
31
31
  }
32
32
 
33
33
  validate() {
34
- var errors = [];
35
- var comp = this.component();
34
+ let errors = [];
35
+ let comp = this.component();
36
36
  if (comp) {
37
37
  errors = comp.validate();
38
38
  }
@@ -24,7 +24,7 @@ export class VForm {
24
24
  console.log("Form validate", form, params);
25
25
  var errors = [];
26
26
  for (let input of this.inputs()) {
27
- if (input.vComponent) {
27
+ if (input.vComponent && input.vComponent.validate) {
28
28
  var result = input.vComponent.validate(form, params);
29
29
  if (result !== true) {
30
30
  errors.push(result);
@@ -41,7 +41,7 @@ export class VForm {
41
41
  // Called to collect data for submission
42
42
  prepareSubmit(form, params) {
43
43
  for (let input of this.inputs()) {
44
- if (input.vComponent) {
44
+ if (input.vComponent && input.vComponent.prepareSubmit) {
45
45
  input.vComponent.prepareSubmit(form, params);
46
46
  }
47
47
  }
@@ -1,5 +1,6 @@
1
1
  import {initButtons} from './button';
2
2
  import {initDialogs} from './dialogs';
3
+ import {initDateTime} from './datetime';
3
4
  import {initTextFields} from './text-fields';
4
5
  import {initEvents} from './events';
5
6
  import {initLists} from './lists';
@@ -11,13 +12,13 @@ import {initCards} from './cards';
11
12
  import {initForms} from './forms';
12
13
  import {initSnackbar} from './snackbar';
13
14
  import {initCheckboxes} from './checkboxes';
14
- import {initDateTime} from './date-time';
15
15
  import {initSwitches} from './switches';
16
16
 
17
17
  export function initialize(){
18
18
  console.log('Initializing');
19
19
  initButtons();
20
20
  initDialogs();
21
+ initDateTime();// MUST BE BEFORE initTextFields
21
22
  initTextFields();
22
23
  initLists();
23
24
  initIconToggles();
@@ -28,7 +29,6 @@ export function initialize(){
28
29
  initForms();
29
30
  initSnackbar();
30
31
  initCheckboxes();
31
- initDateTime();
32
32
  initSwitches();
33
33
  // This needs to be last, because it relies on the components installed above.
34
34
  initEvents();
@@ -30,7 +30,7 @@ export class VSwitch extends eventHandlerMixin(VBaseComponent) {
30
30
 
31
31
  prepareSubmit(form, params) {
32
32
  if (!form) {
33
- params.push([this.input.name, this.input.value]);
33
+ params.push([this.input.name, this.input.checked]);
34
34
  }
35
35
  }
36
36
  }
@@ -9,10 +9,7 @@ export function initTextFields() {
9
9
  for (var i = 0; i < textFields.length; i++) {
10
10
  var textField = textFields[i];
11
11
  if (!textField.vComponent) {
12
- var vTextField = new VTextField(textField, new MDCTextField(textField));
13
- var input = textField.querySelector('input');
14
- input.vComponent = vTextField;
15
- textField.vComponent = vTextField;
12
+ textField.vComponent = new VTextField(textField, new MDCTextField(textField));
16
13
  }
17
14
  }
18
15
  }
@@ -21,6 +18,7 @@ export class VTextField extends eventHandlerMixin(VBaseComponent) {
21
18
  constructor(element, mdcComponent) {
22
19
  super(element);
23
20
  this.input = element.querySelector('input');
21
+ this.input.vComponent = this;
24
22
  this.mdcComponent = mdcComponent;
25
23
  }
26
24
 
@@ -0,0 +1,19 @@
1
+ @import "vendor/flatpickr.min";
2
+
3
+ .mdc-text-field__icon.v-datetime--clear {
4
+ right: 15px;
5
+ left: initial;
6
+ }
7
+
8
+ // Fixes the follwing bug: https://github.com/material-components/material-components-web/issues/2044
9
+ .v-datetime.mdc-text-field--fullwidth:not(.mdc-text-field--textarea) .mdc-text-field__input {
10
+ padding-right: 48px;
11
+ .mdc-text-field--with-leading-icon {
12
+ padding-left: 48px;
13
+ }
14
+ }
15
+
16
+ .v-datetime.mdc-text-field--fullwidth:not(.mdc-text-field--textarea).mdc-text-field--with-leading-icon .mdc-text-field__input {
17
+ padding-right: 48px;
18
+ padding-left: 48px;
19
+ }
@@ -1 +1,8 @@
1
1
  @import "@material/textfield/mdc-text-field";
2
+
3
+
4
+ .mdc-text-field__input {
5
+ .v-text-field {
6
+ padding: inherit;
7
+ }
8
+ }
@@ -0,0 +1,13 @@
1
+ .flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px);}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.rightMost:after{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:28px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;line-height:16px;height:28px;padding:10px;z-index:3;}.flatpickr-months .flatpickr-prev-month.disabled,.flatpickr-months .flatpickr-next-month.disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*
2
+ /*rtl:begin:ignore*/left:0;/*
3
+ /*rtl:end:ignore*/}/*
4
+ /*rtl:begin:ignore*/
5
+ /*
6
+ /*rtl:end:ignore*/
7
+ .flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*
8
+ /*rtl:begin:ignore*/right:0;/*
9
+ /*rtl:end:ignore*/}/*
10
+ /*rtl:begin:ignore*/
11
+ /*
12
+ /*rtl:end:ignore*/
13
+ .flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9;}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px;}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto;}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%;}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box;}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0;}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%;}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto;}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05);}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:6.16px 0 0 0;line-height:1;height:28px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0;}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block;}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px;}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px;}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9;}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.disabled,.flatpickr-day.disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.disabled,.flatpickr-day.disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{display:inline-block;float:left;}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left;}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;cursor:pointer;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;display:inline-block;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400;}.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time .flatpickr-am-pm:focus{background:#f0f0f0}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}
@@ -0,0 +1 @@
1
+ <%= erb :"components/datetime", :locals => {comp: comp} %>
@@ -1,29 +1,34 @@
1
1
  <%
2
- time_val = comp.value ? comp.value.strftime("%Y-%m-%dT%H:%M:%S.%L") : nil
2
+ time_val = comp.value ? Array(comp.value).map{ |v| v.respond_to?(:strftime) ? v.strftime("%Y-%m-%dT%H:%M:%S.%L") : v}.join(', ') : nil
3
3
  %>
4
4
  <div id="<%= comp.id %>"
5
- class="mdc-text-field
6
- <%= 'mdc-text-field--with-trailing-icon' if comp.icon %>
5
+ class="mdc-text-field v-datetime
6
+ <%= comp.icon ? 'mdc-text-field--with-leading-icon' : 'mdc-text-field--with-trailing-icon' %>
7
7
  <%= 'mdc-text-field--fullwidth' if comp.full_width %>
8
- <%= 'is-invalid is-dirty' if comp.error %>">
9
- <%= erb :"components/icon", :locals => {comp: comp.icon, class_name: 'mdc-text-field__icon', parent_id: "#{comp.id}-input"} %>
8
+ <%= 'is-invalid is-dirty' if comp.error %>"
9
+ data-config='<%= snake_to_camel(comp.config, except: %i(time_24hr)).to_json %>'
10
+ data-type='<%= comp.type %>'>
11
+ <%= erb :"components/icon", :locals => {comp: comp.icon, class_name: 'mdc-text-field__icon',
12
+ parent_id: "#{comp.id}-input"} %>
10
13
  <input id="<%= comp.id %>-input"
11
14
  name="<%= comp.name %>"
12
- type="datetime-local"
15
+ type="text"
13
16
  value="<%= time_val %>"
14
17
  class="mdc-text-field__input"
15
18
  aria-controls="<%= comp.id %>-input-helper-text"
19
+ data-input
16
20
  <%= 'required' if comp.required %>
17
21
  <%= 'invalid' if comp.error %>
18
22
  <%= "pattern='#{comp.pattern}'" if comp.pattern %>
19
23
  <%= 'readonly' if comp.readonly %>
20
24
  list="<%= comp.id %>-list"
21
- <%= erb :"components/event", :locals => {events: comp.events, parent_id: "#{comp.id}-input"} %>>
25
+ <%= erb :"components/event", :locals => {events: comp.events, parent_id: "#{comp.id}-input"} %>>
22
26
  <label class='mdc-floating-label mdc-floating-label--float-above' for="<%= comp.id %>"><%= comp.label %></label>
23
27
  <div class="mdc-line-ripple"></div>
24
28
  <datalist id="<%= comp.id %>-list">
25
29
  </datalist>
26
-
30
+ <%= erb :"components/icon", :locals => {comp: comp.clear_icon, class_name: 'v-datetime--clear mdc-text-field__icon',
31
+ parent_id: "#{comp.id}-input"} %>
27
32
  </div>
28
33
  <p id="<%= comp.id %>-input-helper-text" class="mdc-text-field-helper-text" aria-hidden="true">
29
34
  <%= comp.error || comp.hint %>
@@ -1,4 +1,5 @@
1
1
  <% class_name = '' unless local_variables.include? :class_name
2
+ data = nil unless local_variables.include? :data
2
3
  %>
3
4
  <% if comp
4
5
  parent_id = comp.event_parent_id unless locals.include? :parent_id
@@ -20,6 +21,7 @@
20
21
  class="<%= class_name %> <%= icon_class_name %>
21
22
  <%= 'v-actionable' if comp.events %>
22
23
  <%= color_classname(comp) %>"
24
+ <%= "data-#{data}" if data %>
23
25
  style = "<%= color_style(comp) %>
24
26
  <%= "font-size: #{comp.size}" if comp.size %>"
25
27
  <%= 'tabindex="1"' if class_name.include?('mdc-text-field__icon') && comp.events %>
@@ -1,5 +1,5 @@
1
1
  <div id="<%= comp.id %>"
2
- class="mdc-text-field
2
+ class="mdc-text-field v-text-field
3
3
  <%= 'mdc-text-field--with-trailing-icon' if comp.icon %>
4
4
  <%= 'mdc-text-field--fullwidth' if comp.full_width %>
5
5
  <%= 'is-invalid is-dirty' if comp.error %>">
@@ -8,7 +8,8 @@
8
8
  name="<%= comp.name %>"
9
9
  type="<%= comp.password ? 'password' : 'text' %>"
10
10
  value="<%= comp.value %>"
11
- class="mdc-text-field__input"
11
+ class="mdc-text-field__input
12
+ <%= 'mdc-text-field--trailing' if comp.icon %>"
12
13
  aria-controls="<%= comp.id %>-input-helper-text"
13
14
  <%= 'required' if comp.required %>
14
15
  <%= 'invalid' if comp.error %>
@@ -0,0 +1 @@
1
+ <%= erb :"components/datetime", :locals => {comp: comp} %>
data/views/mdc/layout.erb CHANGED
@@ -14,6 +14,7 @@
14
14
  <!-- Place favicon.ico in the root directory -->
15
15
  <!--MDC-->
16
16
  <link rel="stylesheet" href="<%= env['SCRIPT_NAME'] %>/bundle.css">
17
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
17
18
  <script src="<%= env['SCRIPT_NAME'] %>/bundle.js"></script>
18
19
 
19
20
  </head>
@@ -3098,6 +3098,11 @@
3098
3098
  "pinkie-promise": "2.0.1"
3099
3099
  }
3100
3100
  },
3101
+ "flatpickr": {
3102
+ "version": "4.4.6",
3103
+ "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.4.6.tgz",
3104
+ "integrity": "sha512-5b4aJtMBiyXyg5paf3lZ872t1Qjt7Qv4SNqChKh2AvP+OYaC1jrutty0goW6WvvkASoamzeFEFbPJIBdHqxNRA=="
3105
+ },
3101
3106
  "flatten": {
3102
3107
  "version": "1.0.2",
3103
3108
  "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
@@ -3,7 +3,6 @@
3
3
  "start": "webpack"
4
4
  },
5
5
  "devDependencies": {
6
- "@material/button": "^0.34.1",
7
6
  "css-loader": "^0.28.11",
8
7
  "extract-loader": "^2.0.1",
9
8
  "l": "^0.6.0",
@@ -34,6 +33,7 @@
34
33
  "@material/textfield": "^0.34.1",
35
34
  "@material/toolbar": "^0.34.1",
36
35
  "@material/typography": "^0.34.0",
36
+ "flatpickr": "^4.4.6",
37
37
  "material-design-lite": "^1.3.0"
38
38
  }
39
39
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voom-presenters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Russell Edens
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-09 00:00:00.000000000 Z
11
+ date: 2018-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ice_nine
@@ -219,7 +219,6 @@ files:
219
219
  - Gemfile
220
220
  - Gemfile.lock
221
221
  - LICENSE
222
- - LICENSE.txt
223
222
  - README.md
224
223
  - ROADMAP.md
225
224
  - Rakefile
@@ -229,6 +228,8 @@ files:
229
228
  - app/demo/components/buttons.pom
230
229
  - app/demo/components/cards.pom
231
230
  - app/demo/components/chips.pom
231
+ - app/demo/components/date_fields.pom
232
+ - app/demo/components/datetime_fields.pom
232
233
  - app/demo/components/dialogs.pom
233
234
  - app/demo/components/drawers.pom
234
235
  - app/demo/components/expansion_panels.pom
@@ -250,20 +251,26 @@ files:
250
251
  - app/demo/components/tables.pom
251
252
  - app/demo/components/text_areas.pom
252
253
  - app/demo/components/text_fields.pom
254
+ - app/demo/components/time_fields.pom
253
255
  - app/demo/components/toggles.pom
254
256
  - app/demo/components/tooltips.pom
255
- - app/demo/event/actions.rb
256
- - app/demo/event/actions/dialog/show_dialog.pom
257
- - app/demo/event/actions/dialog/trigger.pom
258
- - app/demo/event/actions/nav/drawer.pom
259
- - app/demo/event/actions/nav/menu.pom
260
- - app/demo/event/autocomplete.pom
261
- - app/demo/event/field_level.pom
262
- - app/demo/event/form_level.pom
263
- - app/demo/event/nav/drawer.pom
264
- - app/demo/event/nav/menu.pom
265
- - app/demo/event/new_text.pom
266
257
  - app/demo/events.pom
258
+ - app/demo/events/actions/autocomplete.pom
259
+ - app/demo/events/actions/deletes.pom
260
+ - app/demo/events/actions/dialog.pom
261
+ - app/demo/events/actions/dialogs/show_dialog.pom
262
+ - app/demo/events/actions/dialogs/trigger.pom
263
+ - app/demo/events/actions/loads.pom
264
+ - app/demo/events/actions/posts.pom
265
+ - app/demo/events/actions/replace_text.pom
266
+ - app/demo/events/actions/replaces.pom
267
+ - app/demo/events/actions/snackbar.pom
268
+ - app/demo/events/actions/toggle_visiblity.pom
269
+ - app/demo/events/actions/updates.pom
270
+ - app/demo/events/field_level.pom
271
+ - app/demo/events/form_level.pom
272
+ - app/demo/events/nav/drawer.pom
273
+ - app/demo/formatting_tokens.pom
267
274
  - app/demo/helpers/indented_grid.rb
268
275
  - app/demo/index.pom
269
276
  - app/demo/markdown.pom
@@ -299,7 +306,9 @@ files:
299
306
  - lib/voom/presenters/dsl/components/checkbox.rb
300
307
  - lib/voom/presenters/dsl/components/chip.rb
301
308
  - lib/voom/presenters/dsl/components/content.rb
302
- - lib/voom/presenters/dsl/components/date_time.rb
309
+ - lib/voom/presenters/dsl/components/date_field.rb
310
+ - lib/voom/presenters/dsl/components/datetime_base.rb
311
+ - lib/voom/presenters/dsl/components/datetime_field.rb
303
312
  - lib/voom/presenters/dsl/components/dialog.rb
304
313
  - lib/voom/presenters/dsl/components/drawer.rb
305
314
  - lib/voom/presenters/dsl/components/event.rb
@@ -327,6 +336,7 @@ files:
327
336
  - lib/voom/presenters/dsl/components/mixins/chips.rb
328
337
  - lib/voom/presenters/dsl/components/mixins/common.rb
329
338
  - lib/voom/presenters/dsl/components/mixins/content.rb
339
+ - lib/voom/presenters/dsl/components/mixins/date_time_fields.rb
330
340
  - lib/voom/presenters/dsl/components/mixins/dialogs.rb
331
341
  - lib/voom/presenters/dsl/components/mixins/event.rb
332
342
  - lib/voom/presenters/dsl/components/mixins/expansion_panels.rb
@@ -350,6 +360,7 @@ files:
350
360
  - lib/voom/presenters/dsl/components/table.rb
351
361
  - lib/voom/presenters/dsl/components/text_area.rb
352
362
  - lib/voom/presenters/dsl/components/text_field.rb
363
+ - lib/voom/presenters/dsl/components/time_field.rb
353
364
  - lib/voom/presenters/dsl/components/toggle_base.rb
354
365
  - lib/voom/presenters/dsl/components/tooltip.rb
355
366
  - lib/voom/presenters/dsl/components/typography.rb
@@ -361,11 +372,12 @@ files:
361
372
  - lib/voom/presenters/errors/parameter_validation.rb
362
373
  - lib/voom/presenters/errors/unprocessable.rb
363
374
  - lib/voom/presenters/helpers.rb
364
- - lib/voom/presenters/helpers/currency.rb
365
375
  - lib/voom/presenters/helpers/date.rb
366
376
  - lib/voom/presenters/helpers/errors.rb
367
377
  - lib/voom/presenters/helpers/inflector.rb
368
378
  - lib/voom/presenters/helpers/rails.rb
379
+ - lib/voom/presenters/helpers/rails/currency.rb
380
+ - lib/voom/presenters/helpers/rails/model_table.rb
369
381
  - lib/voom/presenters/helpers/route.rb
370
382
  - lib/voom/presenters/helpers/time.rb
371
383
  - lib/voom/presenters/settings.rb
@@ -404,7 +416,7 @@ files:
404
416
  - views/mdc/assets/js/components/cards.js
405
417
  - views/mdc/assets/js/components/checkboxes.js
406
418
  - views/mdc/assets/js/components/chips.js
407
- - views/mdc/assets/js/components/date-time.js
419
+ - views/mdc/assets/js/components/datetime.js
408
420
  - views/mdc/assets/js/components/dialogs.js
409
421
  - views/mdc/assets/js/components/events.js
410
422
  - views/mdc/assets/js/components/events/autocomplete.js
@@ -453,6 +465,7 @@ files:
453
465
  - views/mdc/assets/scss/components/table-pagination.scss
454
466
  - views/mdc/assets/scss/components/textfield.scss
455
467
  - views/mdc/assets/scss/components/typography.scss
468
+ - views/mdc/assets/scss/components/vendor/flatpickr.min.css
456
469
  - views/mdc/assets/scss/material.blue_grey-orange.min.css
457
470
  - views/mdc/assets/scss/styles.scss
458
471
  - views/mdc/assets/scss/theme.scss
@@ -475,7 +488,8 @@ files:
475
488
  - views/mdc/components/checkbox.erb
476
489
  - views/mdc/components/chip.erb
477
490
  - views/mdc/components/content.erb
478
- - views/mdc/components/date_time.erb
491
+ - views/mdc/components/date.erb
492
+ - views/mdc/components/datetime.erb
479
493
  - views/mdc/components/dialog.erb
480
494
  - views/mdc/components/display.erb
481
495
  - views/mdc/components/event.erb
@@ -518,6 +532,7 @@ files:
518
532
  - views/mdc/components/table/row.erb
519
533
  - views/mdc/components/text_area.erb
520
534
  - views/mdc/components/text_field.erb
535
+ - views/mdc/components/time.erb
521
536
  - views/mdc/components/title.erb
522
537
  - views/mdc/components/tooltip.erb
523
538
  - views/mdc/components/typography.erb
data/LICENSE.txt DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2016 Russell Edens
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
@@ -1,5 +0,0 @@
1
- Voom::Presenters.define(:event_actions_drawer) do
2
- drawer 'Presenters Demo' do
3
- attach :event_actions_menu
4
- end
5
- end
@@ -1,19 +0,0 @@
1
- Voom::Presenters.define(:event_actions_menu) do
2
- helpers Voom::Presenters::Helpers::Inflector
3
- menu side: :left do
4
- item 'Back', icon: :back do
5
- event :click do
6
- loads :events
7
- end
8
- end
9
- %i(dialog).sort.each do |action|
10
- item titleize(action) do
11
- event :click do
12
- loads "trigger_#{action}"
13
- end
14
- end
15
- end
16
- end
17
- end
18
-
19
-
@@ -1,86 +0,0 @@
1
- Voom::Presenters.define(:event_actions) do
2
- attach :top_nav
3
- attach :events_drawer
4
-
5
- grid do
6
- column 1
7
- column 11 do
8
- heading 'Events'
9
-
10
- subheading 'Dialog'
11
- button 'dialog' do
12
- event :click do
13
- dialog :my_dialog
14
- end
15
- end
16
- attach :show_dialog
17
-
18
- subheading 'Replaces'
19
- button 'replaces' do
20
- event :click do
21
- replaces :replace_me, :replace_text, text: "I was replaced"
22
- end
23
- end
24
- attach :replace_text
25
-
26
- subheading 'Toggle Visibility'
27
- button 'toggle visiblity' do
28
- event :click do
29
- toggle_visiblity :toggle_me
30
- end
31
- end
32
- heading 'Sometimes I appear', id: :toggle_me
33
-
34
- subheading 'Snackbar'
35
- button 'snackbar' do
36
- event :click do
37
- snackbar 'I want a snack!'
38
- end
39
- end
40
-
41
- subheading context['reloaded'] ? "Reloaded" : 'Loads'
42
- button 'loads' do
43
- event :click do
44
- loads :events, reloaded: true
45
- end
46
- end
47
- heading context['reloaded'] ? "Reloaded" : 'Loaded'
48
-
49
- title "A Note on errors:"
50
- body ['These will display an error. Errors are displayed in four locations.',
51
- '1. Field/input level errors will display on the field/input.',
52
- '2. By default all content blocks will display errors. Use `show_errors=false` to turn this off on a block',
53
- '3. At the top of all forms.',
54
- '4. At the top of the page'], level: 2
55
-
56
- subheading 'Update'
57
- body 'issues a PUT to the passed path'
58
- content do
59
- button 'updates' do
60
- event :click do
61
- updates 'updatepath', {optional: :params}
62
- end
63
- end
64
- end
65
-
66
- subheading 'Delete'
67
- body 'issues a DELETE to the passed path'
68
- content do
69
- button 'deletes' do
70
- event :click do
71
- deletes 'deletepath', {optional: :params}
72
- end
73
- end
74
- subheading 'Posts'
75
- body "issues a POST to the passed path\nAlias: creates"
76
- content shows_errors: false do
77
- button 'posts' do
78
- event :click do
79
- posts 'postpath', {optional: :params}
80
- end
81
- end
82
- end
83
- end
84
- end
85
- end
86
- end
@@ -1,27 +0,0 @@
1
- Voom::Presenters.define(:autocomplete) do
2
- helpers Demo::Helpers::IndentedGrid
3
- attach :top_nav
4
-
5
- indented_grid do
6
- heading 'Search'
7
-
8
- content id: :search_field do
9
- text_field name: :search, full_width: false do
10
- label 'Find waldo'
11
- # icon :close do
12
- # event :click do
13
- # replaces :search_field, :search_field
14
- # end
15
- # end
16
- event :input do
17
- autocomplete '/_search_'
18
- end
19
- event :change do
20
- replaces :context_list, :context_list, title: 'Search Results'
21
- end
22
- end
23
- end
24
- attach :context_list, title: 'Search Results'
25
- end
26
-
27
- end