turbo_material 0.2.6 → 0.2.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e7bbed44ed9064ad71ffcbf477fd9cd7f1f3280b3cf299826424165bce6d2a6
4
- data.tar.gz: 2abd0a679e2bb51f2e233ce1867344acc9a066daa8ffa8b9b273d8b0005b65c4
3
+ metadata.gz: 6acc440d7f51220ea594251511c1427dc12bfdfcd3089535a6f8c5865301348e
4
+ data.tar.gz: fd4bab6abf129e3bc7451a885bab1792fa9ef0bd1da1b94230926ab9a5850ff0
5
5
  SHA512:
6
- metadata.gz: 864e6a811042ebc6f5e5d623a9ecdca174562b28c87abf627c613e3d26569225185ebae5cb477dce980070235dc2d44d589d78e42c18dd480d1c18f3020abad5
7
- data.tar.gz: cb5c7c8bd7b6ceccbae90c674f65e5aad0e644ecad2410cdecd6667cc99b6b52b6c8ebb5681c94b0ae8625bdfc5a72359c46e8ff2c0a6a727d8bf2ab6d870158
6
+ metadata.gz: a8bf8d52a2d46cbf0cbd50e980b75b2895fc0dfd63f7e8f1bed6d379a3f6708ec86f411ec2f48f8f3417526aa546b768d5f7a65d49d2e3d48610d729c6339262
7
+ data.tar.gz: 1460bdf2047d84584c08c870bf58570991c3142f42a726ceb3a779d4a765853eb5b1b2dafa5c22cd6f43d36920d34a23df9d2f5b11dc2b87c8274a1bbc488c1d
@@ -1,24 +1,28 @@
1
- import { Controller } from "@hotwired/stimulus";
2
- import { get } from "@rails/request.js";
3
- import { useClickOutside } from 'stimulus-use';
1
+ import {Controller} from "@hotwired/stimulus";
2
+ import {get} from "@rails/request.js";
3
+ import {useClickOutside} from 'stimulus-use';
4
4
 
5
5
  export default class extends Controller {
6
6
  opened = false;
7
- static targets = [ "input", "hidden", "field", "panel" ];
8
- static outlets = [ "material-list" ];
7
+ static targets = ["input", "hidden", "field", "panel"];
8
+ static outlets = ["material-list"];
9
9
 
10
10
  static values = {
11
11
  url: String,
12
12
  suffix: String,
13
- name: String
13
+ name: String,
14
+ prefetch: Boolean,
15
+ additionalQueryParams: Object,
14
16
  }
15
17
 
16
-
17
18
  connect() {
18
19
  this.inputEl = this.element.querySelector(".mdc-text-field");
19
20
  this.chipsetEl = this.element.querySelector(".mdc-chip-set");
20
- mdc.textField.MDCTextField.attachTo(this.inputEl);
21
+ this.input = mdc.textField.MDCTextField.attachTo(this.inputEl);
21
22
  this.chips = mdc.chips.MDCChipSet.attachTo(this.chipsetEl);
23
+ if (this.prefetchValue) {
24
+ this.search();
25
+ }
22
26
  useClickOutside(this);
23
27
  }
24
28
 
@@ -44,9 +48,10 @@ export default class extends Controller {
44
48
  event.stopPropagation();
45
49
  event.preventDefault();
46
50
  const chip = this.element.querySelector(`.mdc-chip[data-value="${event.target.dataset.value}"]`);
47
- this.chipsetEl.removeChild(chip);
48
- if (this.chipsetEl.children.length === 0) {
49
- this.inputEl.foundation.adapter.floatLabel(false);
51
+ const chipIndex = this.chips.foundation.adapter.getIndexOfChipById(chip.id);
52
+ this.chips.foundation.adapter.removeChipAtIndex(chipIndex);
53
+ if (this.chips.foundation.adapter.getChipListCount() === 0) {
54
+ this.input.foundation.adapter.floatLabel(false);
50
55
  }
51
56
  this.hiddenTarget.value = this.chips.chipsList.map((chip) => chip.root.dataset.value).join(',');
52
57
  this.search();
@@ -72,7 +77,7 @@ export default class extends Controller {
72
77
 
73
78
  this.opened = false;
74
79
  this.panelTarget.classList.remove("mdc-menu-surface--open");
75
- if(event) {
80
+ if (event) {
76
81
  event.preventDefault();
77
82
  event.stopPropagation();
78
83
  }
@@ -97,7 +102,7 @@ export default class extends Controller {
97
102
  if (!this.opened) return;
98
103
 
99
104
  this.materialListOutlet.focusNext();
100
- if(event) {
105
+ if (event) {
101
106
  event.preventDefault();
102
107
  event.stopPropagation();
103
108
  }
@@ -107,7 +112,7 @@ export default class extends Controller {
107
112
  if (!this.opened) return;
108
113
 
109
114
  this.materialListOutlet.focusPrevious();
110
- if(event) {
115
+ if (event) {
111
116
  event.preventDefault();
112
117
  event.stopPropagation();
113
118
  }
@@ -117,7 +122,7 @@ export default class extends Controller {
117
122
  if (!this.opened) return;
118
123
 
119
124
  this.select(this.materialListOutlet.list.listElements[event.detail.index]);
120
- if(event) {
125
+ if (event) {
121
126
  event.preventDefault();
122
127
  event.stopPropagation();
123
128
  }
@@ -133,6 +138,9 @@ export default class extends Controller {
133
138
  params.append("name", this.nameValue);
134
139
  params.append("opened", this.opened);
135
140
  params.append("exclude", this.hiddenTarget.value);
141
+ Object.keys(this.additionalQueryParamsValue).forEach((param) => {
142
+ params.append(param, this.additionalQueryParamsValue[param]);
143
+ });
136
144
  get(`${this.urlValue}?${params.toString()}`, {
137
145
  responseKind: "turbo-stream",
138
146
  });
@@ -0,0 +1,7 @@
1
+ module TurboMaterial
2
+ module ChipsInputOptionsHelper
3
+ def material_chips_input_options(kwargs = {})
4
+ render "components/chips_input_options", **kwargs
5
+ end
6
+ end
7
+ end
@@ -1,9 +1,11 @@
1
- <%# locals: (form:, disabled: false, required: false, name:, label: nil, id:, frame: nil, suffix: nil, type: 'text', url: nil, selected: [], options: [], value: nil, fixed: false) %>
1
+ <%# locals: (form:, disabled: false, required: false, name:, label: nil, id:, frame: nil, suffix: nil, type: 'text', url: nil, selected: [], options: [], value: nil, fixed: false, prefetch: false, additional_query_params: {}) %>
2
2
  <%- id = [name, suffix].compact_blank.join('-') -%>
3
3
  <div data-controller="material-chips-input"
4
4
  data-material-chips-input-url-value="<%= url %>"
5
5
  data-material-chips-input-name-value="<%= name %>"
6
6
  data-material-chips-input-material-list-outlet="#<%= "#{id}-list" %>"
7
+ data-material-chips-input-prefetch-value="<%= prefetch.to_s %>"
8
+ data-material-chips-input-additional-query-params-value="<%= additional_query_params.to_json %>"
7
9
  <% if suffix.present? %>data-material-chips-input-suffix-value="<%= suffix %>"<% end %>
8
10
  data-action="keydown.esc->material-chips-input#close keydown.enter->prevent-default country-select-focus->material-chips-input#confirmSelection"
9
11
  >
@@ -31,6 +33,6 @@
31
33
  <span class="mdc-line-ripple"></span>
32
34
  </label>
33
35
  <div class="mdc-menu-surface--anchor">
34
- <%= render partial: 'components/chips_input_options', locals: { options: options, suffix: suffix, name: name, label: label, fixed: fixed } %>
36
+ <%= material_chips_input_options options: options, suffix: suffix, name: name, label: label, fixed: fixed %>
35
37
  </div>
36
38
  </div>
@@ -1,7 +1,7 @@
1
1
  <%# locals: (suffix:, options: [], label:, name:, opened: 'false', fixed: false) %>
2
2
  <%- id = [name, suffix].compact_blank.join('-') -%>
3
3
  <div id="<%= "#{id}-panel" %>"
4
- class="mdc-menu-surface <%= (opened != 'true' || options.size.zero?) ? '' : 'mdc-menu-surface--open' %> !z-100 <%= fixed ? 'mdc-menu-surface--fixed' : 'mdc-menu-surface--fullwidth' %>"
4
+ class="mdc-menu-surface <%= ((opened != 'true') || options.size.zero?) ? '' : 'mdc-menu-surface--open' %> !z-100 <%= fixed ? 'mdc-menu-surface--fixed' : 'mdc-menu-surface--fullwidth' %>"
5
5
  data-controller="material-menu-surface"
6
6
  data-material-chips-input-target="panel" data-size="<%= options.size %>">
7
7
  <ul class="mdc-deprecated-list max-h-64 overflow-y-auto"
@@ -1,9 +1,9 @@
1
1
  <%# locals: (form:, custom_controller: nil, custom_css: nil, disabled: false, required: false, name:, label: nil, id:, checked: false, frame: nil, provide_hidden: false, value: nil, type: 'text', data: {}, min: nil, max: nil, helper: nil, parent: nil, style: 'filled') %>
2
- <label class="mdc-text-field <%= style == 'filled' ? 'mdc-text-field--filled' : 'mdc-text-field--outlined' %> w-full <%= custom_css %>"
2
+ <label class="mdc-text-field rounded-none <%= style == 'filled' ? 'mdc-text-field--filled' : 'mdc-text-field--outlined' %> <%= value || form&.object&.[](name.to_sym) ? 'mdc-text-field--label-floating' : '' %> w-full <%= custom_css %>"
3
3
  data-controller="<%= custom_controller || 'material-input' %>" <% if frame %>data-frame="<%= frame %>"<% end %>>
4
4
  <%- if style == 'filled' -%>
5
5
  <span class="mdc-text-field__ripple"></span>
6
- <span class="mdc-floating-label" id="<%= id %>-label">
6
+ <span class="mdc-floating-label <%= value || form&.object&.[](name.to_sym) ? 'mdc-floating-label--float-above' : '' %>" id="<%= id %>-label">
7
7
  <%= label || name.capitalize %>
8
8
  </span>
9
9
  <%- else -%>
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "importmap-rails"
2
4
 
3
5
  module TurboMaterial
@@ -11,6 +13,7 @@ module TurboMaterial
11
13
  helper TurboMaterial::CheckboxHelper
12
14
  helper TurboMaterial::ChipSetHelper
13
15
  helper TurboMaterial::ChipsInputHelper
16
+ helper TurboMaterial::ChipsInputOptionsHelper
14
17
  helper TurboMaterial::ChipsSelectHelper
15
18
  helper TurboMaterial::DataTableHelper
16
19
  helper TurboMaterial::MenuButtonHelper
@@ -1,3 +1,3 @@
1
1
  module TurboMaterial
2
- VERSION = "0.2.6"
2
+ VERSION = "0.2.8"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turbo_material
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Moiseev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-16 00:00:00.000000000 Z
11
+ date: 2024-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -114,6 +114,7 @@ files:
114
114
  - app/helpers/turbo_material/checkbox_helper.rb
115
115
  - app/helpers/turbo_material/chip_set_helper.rb
116
116
  - app/helpers/turbo_material/chips_input_helper.rb
117
+ - app/helpers/turbo_material/chips_input_options_helper.rb
117
118
  - app/helpers/turbo_material/chips_select_helper.rb
118
119
  - app/helpers/turbo_material/data_table_helper.rb
119
120
  - app/helpers/turbo_material/input_helper.rb