plutonium 0.16.0 → 0.16.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.
@@ -29,7 +29,7 @@ module Pu
29
29
  end
30
30
 
31
31
  def install_dependencies
32
- run "yarn add @radioactive-labs/plutonium flowbite @tailwindcss/forms @tailwindcss/typography flowbite-typography postcss-cli cssnano"
32
+ run "yarn add @radioactive-labs/plutonium flowbite @tailwindcss/forms @tailwindcss/typography flowbite-typography postcss-cli cssnano marked"
33
33
  end
34
34
 
35
35
  def configure_application
@@ -18,6 +18,7 @@ module Plutonium
18
18
  color: "flex items-center text-md text-gray-900 dark:text-white mb-1 whitespace-pre-line",
19
19
  color_indicator: "w-10 h-10 rounded-full mr-2", # max-h-fit
20
20
  email: "flex items-center text-md text-primary-600 dark:text-primary-500 mb-1 whitespace-pre-line",
21
+ phone: "flex items-center text-md text-primary-600 dark:text-primary-500 mb-1 whitespace-pre-line",
21
22
  json: "text-sm text-gray-900 dark:text-white mb-1 whitespace-pre font-mono shadow-inner p-4",
22
23
  prefixed_icon: "w-8 h-8 mr-2",
23
24
  markdown: "format dark:format-invert format-primary"
@@ -30,8 +30,13 @@ module Plutonium
30
30
  end
31
31
 
32
32
  def flatpickr_tag(**, &)
33
- create_component(Plutonium::UI::Form::Components::Flatpickr, :flatpickr, **, &)
33
+ create_component(Components::Flatpickr, :flatpickr, **, &)
34
34
  end
35
+
36
+ def int_tel_input_tag(**, &)
37
+ create_component(Components::IntlTelInput, :int_tel_input, **, &)
38
+ end
39
+ alias_method :phone_tag, :int_tel_input_tag
35
40
  end
36
41
 
37
42
  private
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Plutonium
4
+ module UI
5
+ module Form
6
+ module Components
7
+ class IntlTelInput < Phlexi::Form::Components::Input
8
+ def view_template
9
+ div(data_controller: "intl-tel-input") {
10
+ super
11
+ }
12
+ end
13
+
14
+ private
15
+
16
+ def build_input_attributes
17
+ super
18
+ attributes[:data_intl_tel_input_target] = tokens(attributes[:data_intl_tel_input_target], :input)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -42,7 +42,12 @@ module Plutonium
42
42
  flatpickr: :input,
43
43
  valid_flatpickr: :valid_input,
44
44
  invalid_flatpickr: :invalid_input,
45
- neutral_flatpickr: :neutral_input
45
+ neutral_flatpickr: :neutral_input,
46
+ # int_tel_input
47
+ int_tel_input: :input,
48
+ valid_int_tel_input: :valid_input,
49
+ invalid_int_tel_input: :invalid_input,
50
+ neutral_int_tel_input: :neutral_input
46
51
  })
47
52
  end
48
53
  end
@@ -132,6 +132,12 @@ module Plutonium
132
132
  integrity: "sha384-RkASv+6KfBMW9eknReJIJ6b3UnjKOKC5bOUaNgIY778NFbQ8MtWq9Lr/khUgqtTt",
133
133
  crossorigin: "anonymous"
134
134
  )
135
+ link(
136
+ rel: "stylesheet",
137
+ href: "https://cdn.jsdelivr.net/npm/intl-tel-input@24.8.1/build/css/intlTelInput.min.css",
138
+ integrity: "sha384-oE0RVGDyNw9goP8V3wYWC9+3GYojVc/LhhKmLT9J5k+L+oGHPa1gRF3FomvOCOFs",
139
+ crossorigin: "anonymous"
140
+ )
135
141
  end
136
142
 
137
143
  def render_scripts
@@ -157,6 +163,11 @@ module Plutonium
157
163
  integrity: "sha384-5JqMv4L/Xa0hfvtF06qboNdhvuYXUku9ZrhZh3bSk8VXF0A/RuSLHpLsSV9Zqhl6",
158
164
  crossorigin: "anonymous"
159
165
  )
166
+ script(
167
+ src: "https://cdn.jsdelivr.net/npm/intl-tel-input@24.8.1/build/js/intlTelInput.min.js",
168
+ integrity: "sha384-oCoRbvnGGnM56vTrLX0f7cgRy2aqLchemkQhvfBT7J+b6km6CSuWz/89IpPnTq9j",
169
+ crossorigin: "anonymous"
170
+ )
160
171
  end
161
172
 
162
173
  def render_body_scripts
@@ -12,6 +12,7 @@ module Plutonium
12
12
  color: "flex items-center",
13
13
  color_indicator: "w-10 h-10 rounded-full mr-2",
14
14
  email: "flex items-center text-primary-600 dark:text-primary-500 whitespace-nowrap",
15
+ phone: "flex items-center text-primary-600 dark:text-primary-500 whitespace-nowrap",
15
16
  json: " whitespace-pre font-mono shadow-inner p-4"
16
17
  })
17
18
  end
@@ -1,5 +1,5 @@
1
1
  module Plutonium
2
- VERSION = "0.16.0"
2
+ VERSION = "0.16.3"
3
3
  NEXT_MAJOR_VERSION = VERSION.split(".").tap { |v|
4
4
  v[1] = v[1].to_i + 1
5
5
  v[2] = 0
data/package-lock.json CHANGED
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "name": "@radioactive-labs/plutonium",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@radioactive-labs/plutonium",
9
- "version": "0.1.15",
9
+ "version": "0.1.16",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@hotwired/stimulus": "^3.2.2",
13
13
  "@hotwired/turbo": "^8.0.4",
14
14
  "dompurify": "^3.2.2",
15
15
  "flowbite": "^2.3.0",
16
- "lodash.debounce": "^4.0.8"
16
+ "lodash.debounce": "^4.0.8",
17
+ "marked": "^15.0.3"
17
18
  },
18
19
  "devDependencies": {
19
20
  "@tailwindcss/forms": "^0.5.7",
@@ -4514,10 +4515,9 @@
4514
4515
  "license": "MIT"
4515
4516
  },
4516
4517
  "node_modules/marked": {
4517
- "version": "13.0.3",
4518
- "resolved": "https://registry.npmjs.org/marked/-/marked-13.0.3.tgz",
4519
- "integrity": "sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==",
4520
- "dev": true,
4518
+ "version": "15.0.3",
4519
+ "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.3.tgz",
4520
+ "integrity": "sha512-Ai0cepvl2NHnTcO9jYDtcOEtVBNVYR31XnEA3BndO7f5As1wzpcOceSUM8FDkNLJNIODcLpDTWay/qQhqbuMvg==",
4521
4521
  "license": "MIT",
4522
4522
  "bin": {
4523
4523
  "marked": "bin/marked.js"
@@ -4600,6 +4600,19 @@
4600
4600
  "dev": true,
4601
4601
  "license": "(MPL-2.0 OR Apache-2.0)"
4602
4602
  },
4603
+ "node_modules/mermaid/node_modules/marked": {
4604
+ "version": "13.0.3",
4605
+ "resolved": "https://registry.npmjs.org/marked/-/marked-13.0.3.tgz",
4606
+ "integrity": "sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==",
4607
+ "dev": true,
4608
+ "license": "MIT",
4609
+ "bin": {
4610
+ "marked": "bin/marked.js"
4611
+ },
4612
+ "engines": {
4613
+ "node": ">= 18"
4614
+ }
4615
+ },
4603
4616
  "node_modules/micromark-util-character": {
4604
4617
  "version": "2.1.0",
4605
4618
  "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@radioactive-labs/plutonium",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "description": "Core assets for the Plutonium gem",
5
5
  "type": "module",
6
6
  "main": "src/js/core.js",
@@ -22,7 +22,8 @@
22
22
  "@hotwired/turbo": "^8.0.4",
23
23
  "dompurify": "^3.2.2",
24
24
  "flowbite": "^2.3.0",
25
- "lodash.debounce": "^4.0.8"
25
+ "lodash.debounce": "^4.0.8",
26
+ "marked": "^15.0.3"
26
27
  },
27
28
  "devDependencies": {
28
29
  "@tailwindcss/forms": "^0.5.7",
@@ -6,13 +6,13 @@ import { marked } from 'marked';
6
6
  export default class extends Controller {
7
7
  connect() {
8
8
  console.log(`easymde connected: ${this.element}`)
9
- self.easyMDE = new EasyMDE(this.#buildOptions())
9
+ this.easyMDE = new EasyMDE(this.#buildOptions())
10
10
  this.element.setAttribute("data-action", "turbo:morph-element->easymde#reconnect")
11
11
  }
12
12
 
13
13
  disconnect() {
14
- self.easyMDE.toTextArea()
15
- self.easyMDE = null
14
+ this.easyMDE.toTextArea()
15
+ this.easyMDE = null
16
16
  }
17
17
 
18
18
  reconnect() {
@@ -4,13 +4,13 @@ import { Controller } from "@hotwired/stimulus"
4
4
  export default class extends Controller {
5
5
  connect() {
6
6
  console.log(`flatpickr connected: ${this.element}`)
7
- self.picker = new flatpickr(this.element, this.#buildOptions())
7
+ this.picker = new flatpickr(this.element, this.#buildOptions())
8
8
  this.element.setAttribute("data-action", "turbo:morph-element->flatpickr#reconnect")
9
9
  }
10
10
 
11
11
  disconnect() {
12
- self.picker.destroy()
13
- self.picker = null
12
+ this.picker.destroy()
13
+ this.picker = null
14
14
  }
15
15
 
16
16
  reconnect() {
@@ -0,0 +1,39 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+
3
+ // Connects to data-controller="intl-tel-input"
4
+ export default class extends Controller {
5
+ static targets = ["input"]
6
+
7
+ connect() {
8
+ console.log(`intl-tel-input connected: ${this.element}`)
9
+ }
10
+
11
+ disconnect() {
12
+ this.inputTargetDisconnected()
13
+ }
14
+
15
+ inputTargetConnected() {
16
+ if (!this.hasInputTarget) return;
17
+
18
+ this.iti = window.intlTelInput(this.inputTarget, this.#buildOptions())
19
+ this.inputTarget.setAttribute("data-action", "turbo:morph-element->intl-tel-input#reconnect")
20
+ }
21
+
22
+ inputTargetDisconnected() {
23
+ if (this.iti) this.iti.destroy()
24
+ this.iti = null
25
+ }
26
+
27
+ reconnect() {
28
+ this.inputTargetDisconnected()
29
+ this.inputTargetConnected()
30
+ }
31
+
32
+ #buildOptions() {
33
+ return {
34
+ strictMode: true,
35
+ hiddenInput: () => ({ phone: this.inputTarget.attributes.name.value }),
36
+ loadUtilsOnInit: "https://cdn.jsdelivr.net/npm/intl-tel-input@24.8.1/build/js/utils.js",
37
+ }
38
+ }
39
+ }
@@ -24,6 +24,7 @@ import ColorModeController from "./color_mode_controller.js"
24
24
  import EasyMDEController from "./easymde_controller.js"
25
25
  import SlimSelectController from "./slim_select_controller.js"
26
26
  import FlatpickrController from "./flatpickr_controller.js"
27
+ import IntlTelInputController from "./intl_tel_input_controller.js"
27
28
 
28
29
  export default function (application) {
29
30
  // Register controllers here
@@ -52,4 +53,5 @@ export default function (application) {
52
53
  application.register("easymde", EasyMDEController)
53
54
  application.register("slim-select", SlimSelectController)
54
55
  application.register("flatpickr", FlatpickrController)
56
+ application.register("intl-tel-input", IntlTelInputController)
55
57
  }
@@ -4,15 +4,15 @@ import { Controller } from "@hotwired/stimulus"
4
4
  export default class extends Controller {
5
5
  connect() {
6
6
  console.log(`slim-select connected: ${this.element}`)
7
- self.slimSelect = new SlimSelect({
7
+ this.slimSelect = new SlimSelect({
8
8
  select: this.element
9
9
  })
10
10
  this.element.setAttribute("data-action", "turbo:morph-element->slim-select#reconnect")
11
11
  }
12
12
 
13
13
  disconnect() {
14
- self.slimSelect.destroy()
15
- self.slimSelect = null
14
+ this.slimSelect.destroy()
15
+ this.slimSelect = null
16
16
  }
17
17
 
18
18
  reconnect() {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plutonium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.0
4
+ version: 0.16.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Froelich
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-02 00:00:00.000000000 Z
11
+ date: 2024-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -1412,6 +1412,7 @@ files:
1412
1412
  - lib/plutonium/ui/form/components/easymde.rb
1413
1413
  - lib/plutonium/ui/form/components/flatpickr.rb
1414
1414
  - lib/plutonium/ui/form/components/has_many.rb
1415
+ - lib/plutonium/ui/form/components/intl_tel_input.rb
1415
1416
  - lib/plutonium/ui/form/concerns/renders_nested_resource_fields.rb
1416
1417
  - lib/plutonium/ui/form/interaction.rb
1417
1418
  - lib/plutonium/ui/form/options/inferred_types.rb
@@ -1470,6 +1471,7 @@ files:
1470
1471
  - src/js/controllers/has_many_panel_controller.js
1471
1472
  - src/js/controllers/header_controller.js
1472
1473
  - src/js/controllers/interactive_action_form_controller.js
1474
+ - src/js/controllers/intl_tel_input_controller.js
1473
1475
  - src/js/controllers/nav_grid_menu_controller.js
1474
1476
  - src/js/controllers/nav_grid_menu_item_controller.js
1475
1477
  - src/js/controllers/nav_user_controller.js