proscenium 0.15.0.beta.3-aarch64-linux → 0.15.0.beta.4-aarch64-linux

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: a07aa012b420a35a64e434c897f769a5f11122b0f7e10a7b9873b3c701e31738
4
- data.tar.gz: 1735206fd225e663d56aa78bfc4401a6cc5d8054062567a48a6719a3087591e1
3
+ metadata.gz: 98ba1cf47000b7710c392df93abea47f68cbf699920d33e6b34301404e3e122c
4
+ data.tar.gz: fd4595195e4e3942b3b045a826da4212e06beb9615bbacd5033ed10bf16267ec
5
5
  SHA512:
6
- metadata.gz: 99389ab3c7a1fc73bdde2bcccbead3525a74f97db9947b43efe6eae702a41a3c61582d7e279cac40a1c10cfe7d02750319c97a2bee449b5f12d9bb6c6f93796d
7
- data.tar.gz: ea200f1d73081e33bb13600cbadd68f6efa767e0393525e1b670703256e3cfac1016ca94186d42ac84df09738b93d2db3e8b9643228ed1fdd1b7fb1c55c60a35
6
+ metadata.gz: 0c88d5450c899cc1b8d6819220bdbeed9e045d0e3d795059078bd74a45f05eb4e03478a8e5188e7b92e2bd432ece02141c982d872951074b4b56a51349b01852
7
+ data.tar.gz: b4d45b249de0e08a678c34fc801eaa20cf3cf961da5cda077145516cb78deea4ad9d2fc326a9267636e97a7c9b54150b269610dc68096b65296c049ac169f95b
@@ -8,12 +8,28 @@ module Proscenium
8
8
  class Rewriter < RubyNext::Language::Rewriters::Text
9
9
  NAME = 'proscenium-css-module'
10
10
 
11
- def safe_rewrite(source)
12
- source.gsub(/:@([\w_]+)/) do |_|
13
- context.track! self
11
+ def rewrite(source)
12
+ source = source.gsub(/%i\[((@[\w@ ]+)|([\w@ ]+ @[\w@ ]+))\]/) do |_|
13
+ arr = ::Regexp.last_match(1).split.map do |x|
14
+ x.start_with?('@') ? css_module_string(x[1..]) : ":#{x}"
15
+ end
16
+ "[#{arr.join(',')}]"
17
+ end
18
+
19
+ source.gsub(/:@([\w]+)/) do |_|
20
+ context.track!(self)
21
+ css_module_string(::Regexp.last_match(1))
22
+ end
23
+ end
24
+
25
+ private
14
26
 
15
- match = ::Regexp.last_match(1)
16
- "Proscenium::CssModule::Name.new(:@#{match}, css_module(:#{match}))"
27
+ def css_module_string(name)
28
+ if (path = Pathname.new(context.path).sub_ext('.module.css')).exist?
29
+ tname = Transformer.new(path).class_name!(name, name.dup).first
30
+ "Proscenium::CssModule::Name.new(:@#{name}, '#{tname}')"
31
+ else
32
+ "Proscenium::CssModule::Name.new(:@#{name}, css_module(:#{name}))"
17
33
  end
18
34
  end
19
35
  end
Binary file
@@ -0,0 +1,17 @@
1
+ import DataConfirm from "./data_confirm";
2
+ import DataDisableWith from "./data_disable_with";
3
+
4
+ export default class UJS {
5
+ constructor() {
6
+ const dc = new DataConfirm();
7
+ const ddw = new DataDisableWith();
8
+
9
+ document.body.addEventListener(
10
+ "submit",
11
+ (event) => {
12
+ dc.onSubmit(event) && ddw.onSubmit(event);
13
+ },
14
+ { capture: true }
15
+ );
16
+ }
17
+ }
@@ -0,0 +1,16 @@
1
+ export default class DataConfirm {
2
+ onSubmit = event => {
3
+ if (!event.target.matches('[data-turbo=true]') && 'confirm' in event.submitter.dataset) {
4
+ const v = event.submitter.dataset.confirm
5
+
6
+ if (v !== 'false' && !confirm(v === 'true' || v === '' ? 'Are you sure?' : v)) {
7
+ event.preventDefault()
8
+ event.stopPropagation()
9
+ event.stopImmediatePropagation()
10
+ return false
11
+ }
12
+ }
13
+
14
+ return true
15
+ }
16
+ }
@@ -0,0 +1,68 @@
1
+ export default class DataDisableWith {
2
+ onSubmit = event => {
3
+ const target = event.target
4
+ const formId = target.id
5
+
6
+ if (target.matches('[data-turbo=true]')) return
7
+
8
+ const submitElements = Array.from(
9
+ target.querySelectorAll(
10
+ ['input[type=submit][data-disable-with]', 'button[type=submit][data-disable-with]'].join(
11
+ ', '
12
+ )
13
+ )
14
+ )
15
+
16
+ submitElements.push(
17
+ ...Array.from(
18
+ document.querySelectorAll(
19
+ [
20
+ `input[type=submit][data-disable-with][form='${formId}']`,
21
+ `button[type=submit][data-disable-with][form='${formId}']`
22
+ ].join(', ')
23
+ )
24
+ )
25
+ )
26
+
27
+ for (const ele of submitElements) {
28
+ if (ele.hasAttribute('form') && ele.getAttribute('form') !== target.id) continue
29
+
30
+ this.#disableButton(ele)
31
+ }
32
+ }
33
+
34
+ #disableButton(ele) {
35
+ const defaultTextValue = 'Please wait...'
36
+ let textValue = ele.dataset.disableWith || defaultTextValue
37
+ if (textValue === 'false') return
38
+ if (textValue === 'true') {
39
+ textValue = defaultTextValue
40
+ }
41
+
42
+ ele.disabled = true
43
+
44
+ if (ele.matches('button')) {
45
+ ele.dataset.valueBeforeDisabled = ele.innerHTML
46
+ ele.innerHTML = textValue
47
+ } else {
48
+ ele.dataset.valueBeforeDisabled = ele.value
49
+ ele.value = textValue
50
+ }
51
+
52
+ if (ele.resetDisableWith === undefined) {
53
+ // This function can be called on the element to reset the disabled state. Useful for when
54
+ // form submission fails, and the button should be re-enabled.
55
+ ele.resetDisableWith = function () {
56
+ this.disabled = false
57
+
58
+ if (this.matches('button')) {
59
+ this.innerHTML = this.dataset.valueBeforeDisabled
60
+ } else {
61
+ this.value = this.dataset.valueBeforeDisabled
62
+ }
63
+
64
+ delete this.dataset.valueBeforeDisabled
65
+ }
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,9 @@
1
+ export default async () => {
2
+ window.Proscenium = window.Proscenium || {};
3
+
4
+ if (!window.Proscenium.UJS) {
5
+ const classPath = "/@proscenium/ujs/class.js";
6
+ const module = await import(classPath);
7
+ window.Proscenium.UJS = new module.default();
8
+ }
9
+ };
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Proscenium
4
- VERSION = '0.15.0.beta.3'
4
+ VERSION = '0.15.0.beta.4'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proscenium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0.beta.3
4
+ version: 0.15.0.beta.4
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Joel Moss
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-18 00:00:00.000000000 Z
11
+ date: 2024-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -118,6 +118,10 @@ files:
118
118
  - lib/proscenium/libs/react-manager/react.js
119
119
  - lib/proscenium/libs/stimulus-loading.js
120
120
  - lib/proscenium/libs/test.js
121
+ - lib/proscenium/libs/ujs/class.js
122
+ - lib/proscenium/libs/ujs/data_confirm.js
123
+ - lib/proscenium/libs/ujs/data_disable_with.js
124
+ - lib/proscenium/libs/ujs/index.js
121
125
  - lib/proscenium/log_subscriber.rb
122
126
  - lib/proscenium/middleware.rb
123
127
  - lib/proscenium/middleware/base.rb