voom-presenters 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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