alchemy-form 0.1.12 → 0.2.0

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 (88) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/assets/stylesheets/form/alchemy_form.scss +2 -16
  3. package/assets/stylesheets/form/elements/_button.scss +52 -0
  4. package/assets/stylesheets/form/{alchemy_code_input.scss → elements/_code_input.scss} +1 -1
  5. package/assets/stylesheets/form/{alchemy_feedback_input.scss → elements/_feedback_input.scss} +6 -8
  6. package/assets/stylesheets/form/{alchemy_field.scss → elements/_field.scss} +1 -1
  7. package/assets/stylesheets/form/{alchemy_field_array.scss → elements/_field_array.scss} +2 -2
  8. package/assets/stylesheets/form/{alchemy_field_translatable.scss → elements/_field_translatable.scss} +1 -1
  9. package/assets/stylesheets/form/elements/_form.scss +16 -0
  10. package/assets/stylesheets/form/{alchemy_pager.scss → elements/_pager.scss} +1 -1
  11. package/assets/stylesheets/form/{query_builder.scss → elements/_query_builder.scss} +7 -7
  12. package/assets/stylesheets/form/{alchemy_select.scss → elements/_select.scss} +2 -2
  13. package/assets/stylesheets/form/elements/_state.scss +8 -0
  14. package/assets/stylesheets/form/{alchemy_table.scss → elements/_table.scss} +2 -2
  15. package/assets/stylesheets/form/elements/_tabs.scss +47 -0
  16. package/assets/stylesheets/form/{alchemy_toggle.scss → elements/_toggle.scss} +1 -1
  17. package/assets/stylesheets/form/elements/index.scss +14 -0
  18. package/element/00_form_base.js +16 -8
  19. package/element/05_feedback_input.js +4 -13
  20. package/element/10_alchemy_field_custom.js +13 -15
  21. package/element/10_dataprovider.js +282 -0
  22. package/element/15_alchemy_field_entry.js +8 -10
  23. package/element/20_query_builder_base.js +4 -13
  24. package/element/25_query_builder_data.js +2 -2
  25. package/element/30_tab_base.js +29 -0
  26. package/element/40_stateful.js +125 -0
  27. package/element/al_button.js +109 -0
  28. package/element/{code_input.js → al_code_input.js} +1 -10
  29. package/element/{alchemy_field.js → al_field.js} +15 -24
  30. package/element/{alchemy_field_array.js → al_field_array.js} +7 -18
  31. package/element/{alchemy_field_array_entry.js → al_field_array_entry.js} +7 -9
  32. package/element/{alchemy_field_schema.js → al_field_schema.js} +3 -3
  33. package/element/{alchemy_field_translatable.js → al_field_translatable.js} +6 -17
  34. package/element/{alchemy_field_translatable_entry.js → al_field_translatable_entry.js} +2 -4
  35. package/element/{alchemy_form.js → al_form.js} +7 -16
  36. package/element/{alchemy_label.js → al_label.js} +1 -10
  37. package/element/{number_input.js → al_number_input.js} +2 -2
  38. package/element/{alchemy_pager.js → al_pager.js} +49 -41
  39. package/element/{alchemy_password_input.js → al_password_input.js} +0 -0
  40. package/element/{query_builder.js → al_query_builder.js} +3 -12
  41. package/element/{query_builder_entry.js → al_query_builder_entry.js} +2 -2
  42. package/element/{query_builder_group.js → al_query_builder_group.js} +7 -7
  43. package/element/{query_builder_value.js → al_query_builder_value.js} +2 -2
  44. package/element/{query_builder_variable.js → al_query_builder_variable.js} +1 -1
  45. package/element/{alchemy_select.js → al_select.js} +35 -108
  46. package/element/{alchemy_select_item.js → al_select_item.js} +15 -9
  47. package/element/al_state.js +26 -0
  48. package/element/{string_input.js → al_string_input.js} +2 -2
  49. package/element/al_tab_button.js +138 -0
  50. package/element/al_tab_context.js +102 -0
  51. package/element/al_tab_list.js +66 -0
  52. package/element/al_tab_panel.js +44 -0
  53. package/element/{alchemy_table.js → al_table.js} +187 -174
  54. package/element/{alchemy_toggle.js → al_toggle.js} +1 -10
  55. package/helper/form_actions/00_form_action.js +15 -4
  56. package/helper/form_actions/url_action.js +3 -2
  57. package/helper/query_builder_variable_definition/boolean_variable_definition.js +1 -1
  58. package/helper_field/query_builder_field.js +2 -2
  59. package/package.json +2 -2
  60. package/view/form/elements/alchemy_button.hwk +1 -0
  61. package/view/form/elements/alchemy_field.hwk +4 -4
  62. package/view/form/elements/alchemy_field_array.hwk +2 -2
  63. package/view/form/elements/alchemy_field_schema.hwk +2 -2
  64. package/view/form/elements/alchemy_field_translatable.hwk +2 -2
  65. package/view/form/elements/alchemy_field_translatable_entry.hwk +2 -2
  66. package/view/form/elements/query_builder.hwk +1 -1
  67. package/view/form/elements/query_builder_entry.hwk +6 -6
  68. package/view/form/elements/query_builder_value.hwk +2 -2
  69. package/view/form/elements/query_builder_variable.hwk +2 -2
  70. package/view/form/inputs/edit/belongs_to.hwk +2 -2
  71. package/view/form/inputs/edit/boolean.hwk +2 -2
  72. package/view/form/inputs/edit/enum.hwk +2 -2
  73. package/view/form/inputs/edit/has_and_belongs_to_many.hwk +2 -2
  74. package/view/form/inputs/edit/html.hwk +2 -2
  75. package/view/form/inputs/edit/query_builder.hwk +2 -2
  76. package/view/form/inputs/edit/query_builder_assignment.hwk +2 -2
  77. package/view/form/inputs/edit/query_builder_value.hwk +2 -2
  78. package/view/form/inputs/edit/query_builder_variable.hwk +2 -2
  79. package/view/form/inputs/edit/schema.hwk +2 -2
  80. package/view/form/inputs/edit/sourcecode.hwk +2 -2
  81. package/view/form/inputs/edit_inline/boolean.hwk +2 -2
  82. package/view/form/inputs/view/string.hwk +6 -1
  83. package/view/form/inputs/view_inline/datetime.hwk +8 -4
  84. package/view/form/inputs/view_inline/string.hwk +6 -1
  85. package/view/form/wrappers/default/default.hwk +2 -2
  86. package/helper/widgets/alchemy_field_widget.js +0 -112
  87. package/helper/widgets/alchemy_form_widget.js +0 -183
  88. package/helper/widgets/alchemy_table_widget.js +0 -67
@@ -226,15 +226,26 @@ FormAction.setMethod(function constructElement(renderer) {
226
226
  *
227
227
  * @author Jelle De Loecker <jelle@elevenways.be>
228
228
  * @since 0.1.6
229
- * @version 0.1.6
229
+ * @version 0.2.0
230
230
  *
231
231
  * @return {HTMLElement}
232
232
  */
233
233
  FormAction.setMethod(function _constructElement(renderer) {
234
234
 
235
- let span = renderer.createElement('span');
236
- span.textContent = this.title;
237
- return span;
235
+ let button = renderer.createElement('al-button');
236
+ button.action_instance = this;
237
+
238
+ if (this.icon) {
239
+ let icon = renderer.createElement('al-icon');
240
+ icon.icon_name = this.icon;
241
+ button.append(icon);
242
+ }
243
+
244
+ if (this.title) {
245
+ button.append(this.title);
246
+ }
247
+
248
+ return button;
238
249
  });
239
250
 
240
251
  /**
@@ -23,7 +23,7 @@ UrlAction.addConfigProperty('url');
23
23
  *
24
24
  * @author Jelle De Loecker <jelle@elevenways.be>
25
25
  * @since 0.1.6
26
- * @version 0.1.11
26
+ * @version 0.2.0
27
27
  *
28
28
  * @return {HTMLElement}
29
29
  */
@@ -34,7 +34,7 @@ UrlAction.setMethod(function _constructElement(renderer) {
34
34
  anchor.dataset.name = this.name;
35
35
 
36
36
  if (this.icon) {
37
- let alico = renderer.createElement('al-ico');
37
+ let alico = renderer.createElement('al-icon');
38
38
  alico.setIcon(this.icon);
39
39
  anchor.append(alico);
40
40
  } else {
@@ -42,6 +42,7 @@ UrlAction.setMethod(function _constructElement(renderer) {
42
42
  }
43
43
 
44
44
  anchor.setAttribute('href', this.url);
45
+ anchor.setAttribute('title', this.title || this.name);
45
46
 
46
47
  return anchor;
47
48
  });
@@ -19,6 +19,6 @@ const BooleanDefinition = Function.inherits('Alchemy.QueryBuilder.VariableDefini
19
19
  * @param {Hawkejs.Renderer}
20
20
  */
21
21
  BooleanDefinition.setMethod(function createValueInput(renderer) {
22
- let toggle = renderer.createElement('alchemy-toggle');
22
+ let toggle = renderer.createElement('al-toggle');
23
23
  return toggle;
24
24
  });
@@ -50,7 +50,7 @@ QueryBuilderField.setMethod(function cast(value, to_datasource) {
50
50
  *
51
51
  * @author Jelle De Loecker <jelle@elevenways.be>
52
52
  * @since 0.1.6
53
- * @version 0.1.12
53
+ * @version 0.2.0
54
54
  *
55
55
  * @param {Object} config
56
56
  * @param {HTMLElement} element
@@ -70,7 +70,7 @@ QueryBuilderField.setMethod(function loadData(config, element) {
70
70
  };
71
71
 
72
72
  if (element) {
73
- form = element.queryParents('alchemy-form');
73
+ form = element.queryParents('al-form');
74
74
 
75
75
  if (add_form_value && form) {
76
76
  body.form_value = form.value;
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "alchemy-form",
3
3
  "description": "Form plugin for Alchemy",
4
- "version": "0.1.12",
4
+ "version": "0.2.0",
5
5
  "repository": {
6
6
  "type" : "git",
7
7
  "url" : "https://github.com/11ways/alchemy-form.git"
8
8
  },
9
9
  "peerDependencies": {
10
10
  "alchemymvc" : ">=1.2.0",
11
- "alchemy-media" : "~0.6.3"
11
+ "alchemy-media" : "~0.7.0"
12
12
  },
13
13
  "license": "MIT",
14
14
  "engines": {
@@ -0,0 +1 @@
1
+ <div class="apb-content"><% Hawkejs.replaceChildren($0, child_nodes) %></div>
@@ -15,15 +15,15 @@ variables = {
15
15
 
16
16
  <% if (wrapper_files) start('field') %>
17
17
  <% if (self.is_translatable) { %>
18
- <alchemy-field-translatable
18
+ <al-field-translatable
19
19
  #field_context=<% self %>
20
20
  #alchemy_field=<% self %>
21
- ></alchemy-field-translatable>
21
+ ></al-field-translatable>
22
22
  <% } else if (self.is_array) { %>
23
- <alchemy-field-array
23
+ <al-field-array
24
24
  #field_context=<% self %>
25
25
  #alchemy_field=<% self %>
26
- ></alchemy-field-array>
26
+ ></al-field-array>
27
27
  <% } else if (view_files && view_files.length) { %>
28
28
  <div class="field">
29
29
  <% include(view_files, variables); %>
@@ -9,14 +9,14 @@
9
9
  <div class="entries">
10
10
  {% with values as value %}
11
11
  {% each %}
12
- <alchemy-field-array-entry
12
+ <al-field-array-entry
13
13
  #alchemy_field_array=<% self %>
14
14
  #field_context=<% self %>
15
15
  #alchemy_field=<% alchemy_field %>
16
16
 
17
17
  #value=<% value %>
18
18
  index=<% $index %>
19
- ></alchemy-field-array-entry>
19
+ ></al-field-array-entry>
20
20
  {% /each %}
21
21
  {% /with %}
22
22
  </div>
@@ -1,7 +1,7 @@
1
1
  {% each self.sub_fields as sub_field %}
2
- <alchemy-field
2
+ <al-field
3
3
  #alchemy_field_schema=<% self %>
4
4
  #schema=<% self.schema %>
5
5
  field-name=<% sub_field.name %>
6
- ></alchemy-field>
6
+ ></al-field>
7
7
  {% /each %}
@@ -21,14 +21,14 @@
21
21
  <% index = 0 %>
22
22
  <% for (prefix in prefixes) { %>
23
23
 
24
- <alchemy-field-translatable-entry
24
+ <al-field-translatable-entry
25
25
  #alchemy_field_translatable=<% self %>
26
26
  #field_context=<% self %>
27
27
  #alchemy_field=<% alchemy_field %>
28
28
 
29
29
  #value=<% values[prefix] %>
30
30
  prefix=<% prefix %>
31
- ><% if (index > 0) $0.hidden = true; %></alchemy-field-translatable-entry>
31
+ ><% if (index > 0) $0.hidden = true; %></al-field-translatable-entry>
32
32
 
33
33
  <% index++ %>
34
34
  <% } %>
@@ -9,10 +9,10 @@
9
9
 
10
10
  <div class="field">
11
11
  <% if (alchemy_field.is_array) { %>
12
- <alchemy-field-array
12
+ <al-field-array
13
13
  #field_context=<% self %>
14
14
  #alchemy_field=<% alchemy_field %>
15
- ></alchemy-field-array>
15
+ ></al-field-array>
16
16
  <% } else { %>
17
17
  <% include(view_files, variables) %>
18
18
  <% } %>
@@ -1 +1 @@
1
- <alchemy-query-builder-group></alchemy-query-builder-group>
1
+ <al-query-builder-group></al-query-builder-group>
@@ -1,26 +1,26 @@
1
1
  <div class="qb-field-wrapper">
2
- <alchemy-select
2
+ <al-select
3
3
  class="qb-field"
4
4
  #dataprovider={% self %}
5
5
  value-item-template="form/select/qb_item"
6
6
  option-item-template="form/select/qb_item"
7
- ></alchemy-select>
7
+ ></al-select>
8
8
  </div>
9
9
  <div class="qb-operator-wrapper">
10
- <alchemy-select
10
+ <al-select
11
11
  class="qb-operator"
12
12
  #dataprovider={% self %}
13
13
  value-item-template="form/select/qb_item"
14
14
  option-item-template="form/select/qb_item"
15
- ></alchemy-select>
15
+ ></al-select>
16
16
  </div>
17
17
  <div class="qb-value-wrapper">
18
- <alchemy-select
18
+ <al-select
19
19
  class="qb-value-type"
20
20
  #dataprovider={% self %}
21
21
  value-item-template="form/select/qb_item"
22
22
  option-item-template="form/select/qb_item"
23
- ></alchemy-select>
23
+ ></al-select>
24
24
 
25
25
  <div class="qb-value-input-wrapper">
26
26
 
@@ -1,9 +1,9 @@
1
- <alchemy-select
1
+ <al-select
2
2
  class="qb-source-type"
3
3
  #dataprovider={% self %}
4
4
  value-item-template="form/select/qb_item"
5
5
  option-item-template="form/select/qb_item"
6
- ></alchemy-select>
6
+ ></al-select>
7
7
 
8
8
  <div class="qb-value-input-wrapper">
9
9
 
@@ -1,6 +1,6 @@
1
- <alchemy-select
1
+ <al-select
2
2
  class="qb-variable"
3
3
  #dataprovider={% self %}
4
4
  value-item-template="form/select/qb_item"
5
5
  option-item-template="form/select/qb_item"
6
- ></alchemy-select>
6
+ ></al-select>
@@ -1,7 +1,7 @@
1
- <alchemy-select
1
+ <al-select
2
2
  class="alchemy-field-value"
3
3
  ><%
4
4
  $0.dataprovider = alchemy_field;
5
5
  $0.name = path;
6
6
  $0.value = value;
7
- %></alchemy-select>
7
+ %></al-select>
@@ -1,4 +1,4 @@
1
- <alchemy-toggle
1
+ <al-toggle
2
2
  class="alchemy-field-value"
3
3
  #value=<% value %>
4
- ></alchemy-toggle>
4
+ ></al-toggle>
@@ -1,7 +1,7 @@
1
- <alchemy-select
1
+ <al-select
2
2
  class="alchemy-field-value"
3
3
  ><%
4
4
  $0.values = vars.alchemy_field.config.options.values;
5
5
  $0.value = value;
6
6
  $0.name = path;
7
- %></alchemy-select>
7
+ %></al-select>
@@ -1,8 +1,8 @@
1
- <alchemy-select
1
+ <al-select
2
2
  class="alchemy-field-value"
3
3
  multiple
4
4
  ><%
5
5
  $0.dataprovider = alchemy_field;
6
6
  $0.value = value;
7
7
  $0.name = path;
8
- %></alchemy-select>
8
+ %></al-select>
@@ -1,5 +1,5 @@
1
- <alchemy-code-input
1
+ <al-code-input
2
2
  class="alchemy-field-value"
3
3
  form=<% form_id %>
4
4
  name=<% path %>
5
- >{{ value }}</alchemy-code-input>
5
+ >{{ value }}</al-code-input>
@@ -1,5 +1,5 @@
1
- <alchemy-query-builder
1
+ <al-query-builder
2
2
  class="alchemy-field-value"
3
3
  #value={% value %}
4
4
  #dataprovider={% alchemy_field %}
5
- ></alchemy-query-builder>
5
+ ></al-query-builder>
@@ -1,6 +1,6 @@
1
- <alchemy-query-builder-entry
1
+ <al-query-builder-entry
2
2
  class="alchemy-field-value"
3
3
  type="assignment"
4
4
  #value={% value %}
5
5
  #dataprovider={% alchemy_field %}
6
- ></alchemy-query-builder-entry>
6
+ ></al-query-builder-entry>
@@ -2,10 +2,10 @@
2
2
  options = alchemy_field.config.options || {};
3
3
  %>
4
4
 
5
- <alchemy-query-builder-value
5
+ <al-query-builder-value
6
6
  class="alchemy-field-value"
7
7
  #value={% value %}
8
8
  #dataprovider={% alchemy_field %}
9
9
  variable-types={% options.variable_types %}
10
10
  source-types={% options.source_types %}
11
- ></alchemy-query-builder-value>
11
+ ></al-query-builder-value>
@@ -2,9 +2,9 @@
2
2
  options = alchemy_field.config.options || {};
3
3
  %>
4
4
 
5
- <alchemy-query-builder-variable
5
+ <al-query-builder-variable
6
6
  class="alchemy-field-value"
7
7
  #value={% value %}
8
8
  #dataprovider={% alchemy_field %}
9
9
  variable-types={% options.variable_types %}
10
- ></alchemy-query-builder-variable>
10
+ ></al-query-builder-variable>
@@ -1,4 +1,4 @@
1
- <alchemy-field-schema
1
+ <al-field-schema
2
2
  #alchemy_field=<% alchemy_field %>
3
3
  #field_context=<% field_context %>
4
- ></alchemy-field-schema>
4
+ ></al-field-schema>
@@ -1,5 +1,5 @@
1
- <alchemy-code-input
1
+ <al-code-input
2
2
  class="alchemy-field-value"
3
3
  form=<% form_id %>
4
4
  name=<% path %>
5
- >{{ value }}</alchemy-code-input>
5
+ >{{ value }}</al-code-input>
@@ -1,4 +1,4 @@
1
- <alchemy-toggle
1
+ <al-toggle
2
2
  class="alchemy-field-value"
3
3
  #value=<% value %>
4
- ></alchemy-toggle>
4
+ ></al-toggle>
@@ -1 +1,6 @@
1
- <span class="alchemy-field-value">{{ value }}</span>
1
+ <div>
2
+ <span class="alchemy-field-value">{{ value }}</span>
3
+ {% if alchemy_field.config.options.suffix %}
4
+ <span class="alchemy-field-suffix">{{ alchemy_field.config.options.suffix }}</span>
5
+ {% /if %}
6
+ </div>
@@ -1,4 +1,8 @@
1
- <time
2
- class="alchemy-field-value"
3
- datetime={% value.toISOString() %}
4
- >{{ value.format('Y‑m‑d H:i') }}</time>
1
+ {% if alchemy_field.config.options.time_ago %}
2
+ <time-ago date={% value %}></time-ago>
3
+ {% else %}
4
+ <time
5
+ class="alchemy-field-value"
6
+ datetime={% value.toISOString() %}
7
+ >{{ value.format('Y‑m‑d H:i') }}</time>
8
+ {% /if %}
@@ -1 +1,6 @@
1
- <span class="alchemy-field-value">{{ value }}</span>
1
+ <div>
2
+ <span class="alchemy-field-value">{{ value }}</span>
3
+ {% if alchemy_field.config.options.suffix %}
4
+ <span class="alchemy-field-suffix">{{ alchemy_field.config.options.suffix }}</span>
5
+ {% /if %}
6
+ </div>
@@ -1,5 +1,5 @@
1
1
  <div class="form-field-info">
2
- <alchemy-label>
2
+ <al-label>
3
3
  <span
4
4
  data-he-name="field-title"
5
5
  data-he-slot="field-title"
@@ -8,7 +8,7 @@
8
8
  data-he-name="field-description"
9
9
  data-he-slot="field-description"
10
10
  ><%= alchemy_field.field_description %></small>
11
- </alchemy-label>
11
+ </al-label>
12
12
  </div>
13
13
  <div data-he-name="field"></div>
14
14
  <div class="validation-feedback">
@@ -1,112 +0,0 @@
1
- /**
2
- * The Field Widget class
3
- *
4
- * @constructor
5
- *
6
- * @author Jelle De Loecker <jelle@elevenways.be>
7
- * @since 0.1.0
8
- * @version 0.1.0
9
- *
10
- * @param {Object} data
11
- */
12
- const AlchemyField = Function.inherits('Alchemy.Widget', 'AlchemyField');
13
-
14
- /**
15
- * Prepare the schema
16
- *
17
- * @author Jelle De Loecker <jelle@elevenways.be>
18
- * @since 0.1.0
19
- * @version 0.1.12
20
- */
21
- AlchemyField.constitute(function prepareSchema() {
22
-
23
- this.setAddChecker(function(widget_element) {
24
- return false;
25
- });
26
- });
27
-
28
- /**
29
- * Find the alchemy-form parent
30
- *
31
- * @author Jelle De Loecker <jelle@elevenways.be>
32
- * @since 0.1.4
33
- * @version 0.1.4
34
- */
35
- AlchemyField.enforceProperty(function alchemy_form(new_value) {
36
-
37
- if (!new_value && this.config && this.config.alchemy_form) {
38
- new_value = this.config.alchemy_form;
39
- }
40
-
41
- if (!new_value) {
42
-
43
- let parent = this.parent_instance;
44
-
45
- while (parent) {
46
-
47
- new_value = parent.alchemy_form;
48
-
49
- if (new_value) {
50
- break;
51
- }
52
-
53
- if (parent.element) {
54
- new_value = parent.element.querySelector('alchemy-form');
55
-
56
- if (new_value) {
57
- break;
58
- }
59
- }
60
-
61
- parent = parent.parent_instance;
62
- }
63
- }
64
-
65
- return new_value;
66
- });
67
-
68
- /**
69
- * Populate the widget
70
- *
71
- * @author Jelle De Loecker <jelle@elevenways.be>
72
- * @since 0.1.0
73
- * @version 0.1.12
74
- */
75
- AlchemyField.setMethod(function populateWidget() {
76
-
77
- let config = this.config;
78
-
79
- let alchemy_form = this.alchemy_form;
80
-
81
- let field_el = this.createElement('alchemy-field');
82
-
83
- if (alchemy_form) {
84
- field_el.alchemy_form = alchemy_form;
85
- }
86
-
87
- field_el.field_name = config.field;
88
-
89
- field_el.applyOptions(config);
90
-
91
- this.element.append(field_el);
92
- });
93
-
94
- /**
95
- * Get the config of this widget
96
- *
97
- * @author Jelle De Loecker <jelle@elevenways.be>
98
- * @since 0.1.0
99
- * @version 0.1.0
100
- *
101
- * @return {Object}
102
- */
103
- AlchemyField.setMethod(function syncConfig() {
104
-
105
- let config = this.config;
106
-
107
- if (!config) {
108
- config = this.config = {};
109
- }
110
-
111
- return this.config;
112
- });