formstrap 0.3.2 → 0.3.3

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: 98d133e0c15d72418662dbe8a98e296a3c701bc97aa9bec3620fa3f0a346ffec
4
- data.tar.gz: f50c6dc41f0809c54e6522e14a718b0a6842a419fc3068928a64e156df771408
3
+ metadata.gz: dc7c89e02028fbd50ff04f97b36ad9ef3bcbc3a1e270d025a664a721a9755e7d
4
+ data.tar.gz: 2375b43a0db037bcb58be9bac12d47079d7f4e5baaa03b08a5ea839053a3aaad
5
5
  SHA512:
6
- metadata.gz: f540f4053664dc2095dd165f5e4d6c2c5a7257a7fe810bed486834b3477d5c0888ca4ee9bfc5f0e9ac8685d86e0f97039e5bde5795013a1e80350246580a35d3
7
- data.tar.gz: 7318bdcee8bb2ac4a84a079374fb15b8385e1032186e8ce14cbe00b449b7d33e2f012b887ad5fa35773eebf9ad718a58c5cacb43188300dc59f27486804882b0
6
+ metadata.gz: c888b852f01b98134dae97d0a5573ac695c4525020a9fef792af903b9c7a894c5b85dce0172633246e78a0e5ed2825c89659ecf2ff2a663f5aea9b10d844002b
7
+ data.tar.gz: 30ae20de2ddf908f64a82ca167bbc62fa6c0c6b744403e48ff053a9b6e1f293a323f3070947f3d29dd5e4509ef7cee20d42ec9db18d76adb53c8eddb79ee65aa
@@ -126,12 +126,15 @@ export default class extends Controller {
126
126
  const formData = new FormData()
127
127
 
128
128
  // Replace all occurrences of "page[blocks_attributes][0]" with "block"
129
- const regex = /\w+\[([^\]]+)s_attributes\]\[\d+\]/g
129
+ const regex = /\w+\[([^\]]+)s_attributes]\[\d+]/g
130
130
  const formElements = fields.querySelectorAll('input[name]:not([name$="[id]"]), select[name]:not([name$="[id]"]), textarea[name]:not([name$="[id]"]), button[name]:not([name$="[id]"])')
131
- formElements.forEach(function (element) {
131
+ formElements.forEach((element) => {
132
132
  const currentName = element.getAttribute('name')
133
133
  const newName = currentName.replace(regex, '$1')
134
- formData.append(newName, element.value)
134
+ const values = this.readValues(element)
135
+ values.forEach((value) => {
136
+ formData.append(newName, value)
137
+ })
135
138
  })
136
139
 
137
140
  // Add authenticity token
@@ -140,6 +143,15 @@ export default class extends Controller {
140
143
  return formData
141
144
  }
142
145
 
146
+ readValues (element) {
147
+ // Check if the element is a select with multiple selection
148
+ if (element.tagName.toLowerCase() === 'select' && element.multiple) {
149
+ return [...element.selectedOptions].map(option => option.value)
150
+ } else {
151
+ return [element.value]
152
+ }
153
+ }
154
+
143
155
  // Prepare the iFrame for rendering
144
156
  // Objective: render the iframe content at the scale of the browser window, but resize it to fit the preview container
145
157
  prepareIframe () {
@@ -11380,16 +11380,26 @@ var nested_preview_controller_default = class extends Controller {
11380
11380
  buildFormData() {
11381
11381
  const fields = this.fieldsTarget;
11382
11382
  const formData = new FormData();
11383
- const regex = /\w+\[([^\]]+)s_attributes\]\[\d+\]/g;
11383
+ const regex = /\w+\[([^\]]+)s_attributes]\[\d+]/g;
11384
11384
  const formElements = fields.querySelectorAll('input[name]:not([name$="[id]"]), select[name]:not([name$="[id]"]), textarea[name]:not([name$="[id]"]), button[name]:not([name$="[id]"])');
11385
- formElements.forEach(function(element) {
11385
+ formElements.forEach((element) => {
11386
11386
  const currentName = element.getAttribute("name");
11387
11387
  const newName = currentName.replace(regex, "$1");
11388
- formData.append(newName, element.value);
11388
+ const values = this.readValues(element);
11389
+ values.forEach((value) => {
11390
+ formData.append(newName, value);
11391
+ });
11389
11392
  });
11390
11393
  formData.append("authenticity_token", this.getAuthenticityToken());
11391
11394
  return formData;
11392
11395
  }
11396
+ readValues(element) {
11397
+ if (element.tagName.toLowerCase() === "select" && element.multiple) {
11398
+ return [...element.selectedOptions].map((option2) => option2.value);
11399
+ } else {
11400
+ return [element.value];
11401
+ }
11402
+ }
11393
11403
  prepareIframe() {
11394
11404
  const scaleFactor = this.scaleFactor();
11395
11405
  const style = `
@@ -1,3 +1,3 @@
1
1
  module Formstrap
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jef Vlamings
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-20 00:00:00.000000000 Z
11
+ date: 2024-04-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: An extensive Bootstrap form library to power your Ruby On Rails application.
14
14
  email:
@@ -211,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
211
  - !ruby/object:Gem::Version
212
212
  version: '0'
213
213
  requirements: []
214
- rubygems_version: 3.4.22
214
+ rubygems_version: 3.5.6
215
215
  signing_key:
216
216
  specification_version: 4
217
217
  summary: Bootstrap-powered Form Helpers