formstrap 0.4.3 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50b7aa8b45373a4b43cd424293b56eeb64590fc55c065a9b651e5158109535fe
4
- data.tar.gz: 7d1a6a62da8d0f14ff326b3613378b3f7c0f55362944923d2fab8a2d9e8668bc
3
+ metadata.gz: '0379b9b80ad9551b56d07884264fcc37132b72d5539976ec4034800a09adaeb2'
4
+ data.tar.gz: bbd8d0892fce51fa07375b3e6a414e169344825f5da142c5a06ab87a7696424b
5
5
  SHA512:
6
- metadata.gz: e9b5821af79d4065266e3a9e61e74fadc07588f04079ee00d273ddc722f8b2a6ecd31db3012019de739006bbcc90cb219f95fc2f9cb9ca215a8a0677d4bc66d5
7
- data.tar.gz: e90836b7abe84b63a3cf7df7bb17df0e48ba9cdad8b7eb52b58e8304d19cbba459c12451f950df889035548432260b20a3306dd7b65533fc979266c9dc695acf
6
+ metadata.gz: '0788d10916489c6fabe8798a87ffa10a75d46a4e57a2cd8c73455cc64630414ebbdbcfe213041437b22d108df2a3fa986e3692e8ea46ba25fdc28bb068142a42'
7
+ data.tar.gz: 3fba876a0ce0c7be868100726d60af6b1b5aae1b8af675e4861b9ba016405920b1ff35f537a12ce9aa10865fb1e599662170446d999a9bc6e69752f9cf2dc252
@@ -3,6 +3,10 @@ import TomSelect from 'tom-select'
3
3
  import I18n from '../config/i18n'
4
4
 
5
5
  export default class extends Controller {
6
+ static values = {
7
+ selected: Array
8
+ }
9
+
6
10
  connect () {
7
11
  if (this.element.hasAttribute('multiple') || this.element.dataset.tomSelect === 'true') {
8
12
  this.initTomSelect()
@@ -45,7 +49,10 @@ export default class extends Controller {
45
49
 
46
50
  initTomSelect () {
47
51
  const defaultOptions = this.defaultOptions()
48
- const options = { create: this.hasTags() }
52
+ const options = {
53
+ create: this.hasTags(),
54
+ items: this.selectedValue
55
+ }
49
56
 
50
57
  /* eslint-disable no-new */
51
58
  new TomSelect(this.element, { ...defaultOptions, ...options })
@@ -31,11 +31,13 @@ Redactor.add('plugin', 'linkstyles', {
31
31
  }
32
32
  },
33
33
  'link.change': function (e) {
34
- const link = e.params.element.nodes[0]
34
+ let link = e.params.element.nodes[0]
35
+ link = this.ensureValidProtocol(link)
35
36
  this.applyStylingToLink(link)
36
37
  },
37
38
  'link.add': function (e) {
38
- const link = e.params.element.nodes[0]
39
+ let link = e.params.element.nodes[0]
40
+ link = this.ensureValidProtocol(link)
39
41
  this.applyStylingToLink(link)
40
42
  }
41
43
  },
@@ -47,6 +49,7 @@ Redactor.add('plugin', 'linkstyles', {
47
49
  const stack = this.app.modal.getStack()
48
50
 
49
51
  const item = stack.getFormItem('url')
52
+
50
53
  const box = this.dom('<div>').addClass('rx-form-item')
51
54
 
52
55
  // Add a select
@@ -69,6 +72,18 @@ Redactor.add('plugin', 'linkstyles', {
69
72
  link.classList.add(className)
70
73
  })
71
74
  },
75
+ ensureValidProtocol (link) {
76
+ let url = link.getAttribute('href')
77
+
78
+ // Match valid protocols
79
+ const regex = /^(https?:\/\/|mailto:|ftp:\/\/)/i
80
+ if (!regex.test(url)) {
81
+ url = `https://${url}`
82
+ }
83
+
84
+ link.setAttribute('href', url)
85
+ return link
86
+ },
72
87
  buildSelect () {
73
88
  // Create a select node
74
89
  const select = this.dom('<select>').addClass('rx-form-select')
@@ -13435,10 +13435,16 @@ var select_controller_default = class extends Controller {
13435
13435
  }
13436
13436
  initTomSelect() {
13437
13437
  const defaultOptions = this.defaultOptions();
13438
- const options = { create: this.hasTags() };
13438
+ const options = {
13439
+ create: this.hasTags(),
13440
+ items: this.selectedValue
13441
+ };
13439
13442
  new import_tom_select.default(this.element, { ...defaultOptions, ...options });
13440
13443
  }
13441
13444
  };
13445
+ __publicField(select_controller_default, "values", {
13446
+ selected: Array
13447
+ });
13442
13448
 
13443
13449
  // app/assets/javascripts/formstrap/controllers/textarea_controller.js
13444
13450
  var textarea_controller_default = class extends Controller {
@@ -14456,11 +14462,13 @@ Redactor.add("plugin", "linkstyles", {
14456
14462
  }
14457
14463
  },
14458
14464
  "link.change": function(e) {
14459
- const link = e.params.element.nodes[0];
14465
+ let link = e.params.element.nodes[0];
14466
+ link = this.ensureValidProtocol(link);
14460
14467
  this.applyStylingToLink(link);
14461
14468
  },
14462
14469
  "link.add": function(e) {
14463
- const link = e.params.element.nodes[0];
14470
+ let link = e.params.element.nodes[0];
14471
+ link = this.ensureValidProtocol(link);
14464
14472
  this.applyStylingToLink(link);
14465
14473
  }
14466
14474
  },
@@ -14484,6 +14492,15 @@ Redactor.add("plugin", "linkstyles", {
14484
14492
  link.classList.add(className);
14485
14493
  });
14486
14494
  },
14495
+ ensureValidProtocol(link) {
14496
+ let url = link.getAttribute("href");
14497
+ const regex = /^(https?:\/\/|mailto:|ftp:\/\/)/i;
14498
+ if (!regex.test(url)) {
14499
+ url = `https://${url}`;
14500
+ }
14501
+ link.setAttribute("href", url);
14502
+ return link;
14503
+ },
14487
14504
  buildSelect() {
14488
14505
  const select = this.dom("<select>").addClass("rx-form-select");
14489
14506
  const items = this.opts.get("linkstyles.items");
@@ -47,7 +47,8 @@ module Formstrap
47
47
  class: [form_control_class, validation_class],
48
48
  data: {
49
49
  tags: tags,
50
- controller: "select"
50
+ controller: "select",
51
+ "select_selected_value": select_options[:selected]
51
52
  },
52
53
  multiple: tags,
53
54
  placeholder: placeholder
@@ -0,0 +1,3 @@
1
+ <%= link_to url, options do %>
2
+ <%= yield %>
3
+ <% end %>
@@ -11,15 +11,15 @@ module Formstrap
11
11
  render_input(:association, attribute, options)
12
12
  end
13
13
 
14
- def preview_button(value = nil, options = {}, &block)
14
+ def preview_button(url = nil, options = {}, &block)
15
15
  default_options = {
16
16
  data: {
17
17
  controller: "preview",
18
- "preview-url-value": options[:url]
19
- },
20
- type: nil
18
+ preview_url_value: url
19
+ }
21
20
  }
22
- button value, default_options.deep_merge(options.except(:url)), &block
21
+
22
+ @template.render("formstrap/link", form: self, url: url, options: default_options.deep_merge(options), &block)
23
23
  end
24
24
 
25
25
  def checkbox(attribute, formstrap: true, **options)
@@ -1,3 +1,3 @@
1
1
  module Formstrap
2
- VERSION = "0.4.3"
2
+ VERSION = "0.4.5"
3
3
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontierdotbe/formstrap",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Bootstrap-powered Form Helpers",
5
5
  "module": "app/assets/javascripts/formstrap.js",
6
6
  "main": "app/assets/javascripts/formstrap.js",
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.4.3
4
+ version: 0.4.5
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-07-08 00:00:00.000000000 Z
11
+ date: 2024-11-21 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:
@@ -142,6 +142,7 @@ files:
142
142
  - app/views/formstrap/_hint.html.erb
143
143
  - app/views/formstrap/_input_group.html.erb
144
144
  - app/views/formstrap/_label.html.erb
145
+ - app/views/formstrap/_link.html.erb
145
146
  - app/views/formstrap/_media.html.erb
146
147
  - app/views/formstrap/_number.html.erb
147
148
  - app/views/formstrap/_password.html.erb