glimmer-dsl-web 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +98 -102
- data/VERSION +1 -1
- data/glimmer-dsl-web.gemspec +6 -5
- data/lib/glimmer/dsl/web/dsl.rb +1 -0
- data/lib/glimmer/dsl/web/style_expression.rb +27 -0
- data/lib/glimmer/helpers/glimmer_helper.rb +9 -6
- data/lib/glimmer/web/element_proxy.rb +1 -1
- data/lib/glimmer-dsl-web/samples/hello/hello_component.rb +6 -8
- data/lib/glimmer-dsl-web/samples/hello/hello_content_data_binding.rb +12 -14
- data/lib/glimmer-dsl-web/samples/hello/hello_data_binding.rb +8 -8
- data/lib/glimmer-dsl-web/samples/hello/hello_form.rb +1 -0
- data/lib/glimmer-dsl-web/samples/hello/hello_glimmer_component_helper/address_form.rb +6 -8
- data/lib/glimmer-dsl-web/samples/hello/hello_input_date_time.rb +9 -11
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 429afe58eb54b98a9aa229faeecbe09ceefb82ebae7e240ef3dd68ce63110164
|
4
|
+
data.tar.gz: '03469f3f04757d5b95aab910b1469047e467481aeaf6169ed69a33a8ab900b6f'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93b2b65475f2609476997bb7139e2078f8851b88e881d123af4298df2f293a8a2537eecf3f697d734d09e0a8d5ad87771b32899873b9161b74f3e5387e86df00
|
7
|
+
data.tar.gz: 7a37b8b255486545016a982522a52ee3cf00c8238557d396a874e38da8d5689fda9e8a8b021cb698f380f641e68d341b9b9e2ea10e035692192e534693cfac21
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.2.0
|
4
|
+
|
5
|
+
- Support `style` element content as Glimmer DSL for CSS syntax (Ruby Programmable CSS) as an alternative to a CSS `String`
|
6
|
+
|
7
|
+
## 0.1.1
|
8
|
+
|
9
|
+
- Upgrade to opal-jquery 0.5.1 (adds `# backtick_javascript: true` where needed to satisfy new Opal requirement)
|
10
|
+
- Upgrade to opal-async 1.4.1 (adds `# backtick_javascript: true` where needed to satisfy new Opal requirement)
|
11
|
+
- Update setup instructions to NOT disable Hotwire files, to allow running Hotwire/Turbo side by side with Glimmer DSL for Web (but not in the same pages)
|
12
|
+
|
3
13
|
## 0.1.0
|
4
14
|
|
5
15
|
- Update rendering system to render HTML elements immediately instead of waiting for complete components to be rendered all at once.
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for Web 0.
|
1
|
+
# [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for Web 0.2.0 (Beta)
|
2
2
|
## Ruby in the Browser Web GUI Frontend Library
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/glimmer-dsl-web.svg)](http://badge.fury.io/rb/glimmer-dsl-web)
|
4
4
|
[![Join the chat at https://gitter.im/AndyObtiva/glimmer](https://badges.gitter.im/AndyObtiva/glimmer.svg)](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
@@ -131,6 +131,7 @@ Document.ready? do
|
|
131
131
|
|
132
132
|
# CSS Styles
|
133
133
|
style {
|
134
|
+
# CSS can be included as a String as done below, or as Glimmer DSL for CSS syntax (Ruby code) as done in other samples
|
134
135
|
<<~CSS
|
135
136
|
input {
|
136
137
|
margin: 5px;
|
@@ -392,15 +393,15 @@ Document.ready? do
|
|
392
393
|
}
|
393
394
|
}
|
394
395
|
|
396
|
+
# Programmable CSS using Glimmer DSL for CSS
|
395
397
|
style {
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
CSS
|
398
|
+
# `r` is an alias for `rule`, generating a CSS rule
|
399
|
+
r("#{address_div.selector} *") {
|
400
|
+
margin '5px'
|
401
|
+
}
|
402
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
403
|
+
grid_column '2'
|
404
|
+
}
|
404
405
|
}
|
405
406
|
}
|
406
407
|
|
@@ -528,20 +529,18 @@ Document.ready? do
|
|
528
529
|
}
|
529
530
|
|
530
531
|
style {
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
}
|
544
|
-
CSS
|
532
|
+
r(address_div.selector) {
|
533
|
+
margin '10px 0'
|
534
|
+
}
|
535
|
+
r("#{address_div.selector} *") {
|
536
|
+
margin '5px'
|
537
|
+
}
|
538
|
+
r("#{address_div.selector} label") {
|
539
|
+
grid_column '1'
|
540
|
+
}
|
541
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
542
|
+
grid_column '2'
|
543
|
+
}
|
545
544
|
}
|
546
545
|
}
|
547
546
|
}
|
@@ -708,14 +707,12 @@ class AddressForm
|
|
708
707
|
}
|
709
708
|
|
710
709
|
style {
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
}
|
718
|
-
CSS
|
710
|
+
r("#{address_div.selector} *") {
|
711
|
+
margin '5px'
|
712
|
+
}
|
713
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
714
|
+
grid_column '2'
|
715
|
+
}
|
719
716
|
}
|
720
717
|
}
|
721
718
|
|
@@ -957,14 +954,12 @@ class AddressForm
|
|
957
954
|
}
|
958
955
|
|
959
956
|
style {
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
}
|
967
|
-
CSS
|
957
|
+
r("#{address_div.selector} *") {
|
958
|
+
margin '5px'
|
959
|
+
}
|
960
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
961
|
+
grid_column '2'
|
962
|
+
}
|
968
963
|
}
|
969
964
|
}
|
970
965
|
|
@@ -1146,7 +1141,7 @@ rails new glimmer_app_server
|
|
1146
1141
|
Add the following to `Gemfile`:
|
1147
1142
|
|
1148
1143
|
```
|
1149
|
-
gem 'glimmer-dsl-web', '~> 0.
|
1144
|
+
gem 'glimmer-dsl-web', '~> 0.2.0'
|
1150
1145
|
```
|
1151
1146
|
|
1152
1147
|
Run:
|
@@ -1191,26 +1186,28 @@ rails db:migrate
|
|
1191
1186
|
Add the following to `config/routes.rb` inside the `Rails.application.routes.draw` block:
|
1192
1187
|
|
1193
1188
|
```ruby
|
1194
|
-
mount Glimmer::Engine => "/glimmer" # add on top
|
1195
1189
|
root to: 'welcomes#index'
|
1196
1190
|
```
|
1197
1191
|
|
1198
1192
|
Clear the file `app/views/welcomes/index.html.erb` completely from all content.
|
1199
1193
|
|
1200
|
-
|
1194
|
+
Rename `app/assets/javascript/application.js.rb` file to `app/assets/javascript/opal_application.rb`.
|
1201
1195
|
|
1202
1196
|
Rename `app/assets/javascript` directory to `app/assets/opal`.
|
1203
1197
|
|
1204
|
-
|
1198
|
+
Edit `app/assets/config/manifest.js` and update `//= link_directory ../javascript .js` to `//= link_directory ../opal .js`:
|
1205
1199
|
|
1206
1200
|
```js
|
1207
|
-
//= link_tree ../../opal .js
|
1208
1201
|
//= link_directory ../opal .js
|
1209
1202
|
```
|
1210
1203
|
|
1211
|
-
|
1204
|
+
Edit `app/views/layouts/application.html.erb` and update `<%= javascript_include_tag "application", "data-turbolinks-track": "reload" %>` to `<%= javascript_include_tag "opal_application", "data-turbolinks-track": "reload" %>`:
|
1205
|
+
|
1206
|
+
```erb
|
1207
|
+
<%= javascript_include_tag "opal_application", "data-turbolinks-track": "reload" %>
|
1208
|
+
```
|
1212
1209
|
|
1213
|
-
Edit and replace `app/assets/opal/
|
1210
|
+
Edit and replace `app/assets/opal/opal_application.rb` content with code below (optionally including a require statement for one of the [samples](#samples) below):
|
1214
1211
|
|
1215
1212
|
```ruby
|
1216
1213
|
require 'glimmer-dsl-web' # brings opal and other dependencies automatically
|
@@ -1317,6 +1314,7 @@ That produces:
|
|
1317
1314
|
</div>
|
1318
1315
|
...
|
1319
1316
|
```
|
1317
|
+
|
1320
1318
|
You may insert a Glimmer component anywhere into a Rails View using `glimmer_component(component_path, *args)` Rails helper. Add `include GlimmerHelper` to `ApplicationHelper` or another Rails helper, and use `<%= glimmer_component("path/to/component", *args) %>` in Views.
|
1321
1319
|
|
1322
1320
|
To use `glimmer_component`, edit `app/helpers/application_helper.rb` in your Rails application, add `require 'glimmer/helpers/glimmer_helper'` on top and `include GlimmerHelper` inside `module`.
|
@@ -1333,6 +1331,8 @@ module ApplicationHelper
|
|
1333
1331
|
end
|
1334
1332
|
```
|
1335
1333
|
|
1334
|
+
Note that Turbo is disabled on Glimmer elements/components. You can still use Turbo/Hotwire side by side with Glimmer DSL for Web by using one of the two technologies in every page. But, mixing them in the same pages is not recommended at the moment, so any pages loaded with Glimmer DSL for Web must be loaded without Turbo (e.g. by putting "data-turbo"="false" on anchor "a" tag links to Glimmer pages).
|
1335
|
+
|
1336
1336
|
If you run into any issues in setup, refer to the [Sample Glimmer DSL for Web Rails 7 App](https://github.com/AndyObtiva/sample-glimmer-dsl-web-rails7-app) project (in case I forgot to include some setup steps by mistake).
|
1337
1337
|
|
1338
1338
|
Otherwise, if you still cannot setup successfully (even with the help of the sample project, or if the sample project stops working), please do not hesitate to report an [Issue request](https://github.com/AndyObtiva/glimmer-dsl-web/issues) or fix and submit a [Pull Request](https://github.com/AndyObtiva/glimmer-dsl-web/pulls).
|
@@ -1362,7 +1362,7 @@ Disable the `webpacker` gem line in `Gemfile`:
|
|
1362
1362
|
Add the following to `Gemfile`:
|
1363
1363
|
|
1364
1364
|
```ruby
|
1365
|
-
gem 'glimmer-dsl-web', '~> 0.
|
1365
|
+
gem 'glimmer-dsl-web', '~> 0.2.0'
|
1366
1366
|
```
|
1367
1367
|
|
1368
1368
|
Run:
|
@@ -1407,10 +1407,8 @@ rails db:migrate
|
|
1407
1407
|
Add the following to `config/routes.rb` inside the `Rails.application.routes.draw` block:
|
1408
1408
|
|
1409
1409
|
```ruby
|
1410
|
-
mount Glimmer::Engine => "/glimmer" # add on top
|
1411
1410
|
root to: 'welcomes#index'
|
1412
1411
|
```
|
1413
|
-
```
|
1414
1412
|
|
1415
1413
|
Also, delete the following line:
|
1416
1414
|
|
@@ -1420,18 +1418,23 @@ Also, delete the following line:
|
|
1420
1418
|
|
1421
1419
|
Clear the file `app/views/welcomes/index.html.erb` completely from all content.
|
1422
1420
|
|
1421
|
+
Rename `app/assets/javascript/application.js.rb` file to `app/assets/javascript/opal_application.rb`.
|
1422
|
+
|
1423
1423
|
Rename `app/assets/javascript` directory to `app/assets/opal`.
|
1424
1424
|
|
1425
|
-
|
1425
|
+
Edit `app/assets/config/manifest.js` and update `//= link_directory ../javascript .js` to `//= link_directory ../opal .js`:
|
1426
1426
|
|
1427
1427
|
```js
|
1428
|
-
//= link_tree ../../opal .js
|
1429
1428
|
//= link_directory ../opal .js
|
1430
1429
|
```
|
1431
1430
|
|
1432
|
-
|
1431
|
+
Edit `app/views/layouts/application.html.erb` and update `<%= javascript_include_tag "application", "data-turbolinks-track": "reload" %>` to `<%= javascript_include_tag "opal_application", "data-turbolinks-track": "reload" %>`:
|
1433
1432
|
|
1434
|
-
|
1433
|
+
```erb
|
1434
|
+
<%= javascript_include_tag "opal_application", "data-turbolinks-track": "reload" %>
|
1435
|
+
```
|
1436
|
+
|
1437
|
+
Edit and replace `app/assets/opal/opal_application.rb` content with code below (optionally including a require statement for one of the [samples](#samples) below):
|
1435
1438
|
|
1436
1439
|
```ruby
|
1437
1440
|
require 'glimmer-dsl-web' # brings opal and other dependencies automatically
|
@@ -1508,6 +1511,8 @@ module ApplicationHelper
|
|
1508
1511
|
end
|
1509
1512
|
```
|
1510
1513
|
|
1514
|
+
Note that Turbo is disabled on Glimmer elements/components. You can still use Turbo/Hotwire side by side with Glimmer DSL for Web by using one of the two technologies in every page. But, mixing them in the same pages is not recommended at the moment, so any pages loaded with Glimmer DSL for Web must be loaded without Turbo (e.g. by putting "data-turbo"="false" on anchor "a" tag links to Glimmer pages).
|
1515
|
+
|
1511
1516
|
**NOT RELEASED OR SUPPORTED YET**
|
1512
1517
|
|
1513
1518
|
If you run into any issues in setup, refer to the [Sample Glimmer DSL for Web Rails 6 App](https://github.com/AndyObtiva/sample-glimmer-dsl-web-rails6-app) project (in case I forgot to include some setup steps by mistake).
|
@@ -1754,6 +1759,7 @@ Document.ready? do
|
|
1754
1759
|
|
1755
1760
|
# CSS Styles
|
1756
1761
|
style {
|
1762
|
+
# CSS can be included as a String as done below, or as Glimmer DSL for CSS syntax (Ruby code) as done in other samples
|
1757
1763
|
<<~CSS
|
1758
1764
|
input {
|
1759
1765
|
margin: 5px;
|
@@ -2072,14 +2078,12 @@ Document.ready? do
|
|
2072
2078
|
}
|
2073
2079
|
|
2074
2080
|
style {
|
2075
|
-
|
2076
|
-
|
2077
|
-
|
2078
|
-
|
2079
|
-
|
2080
|
-
|
2081
|
-
}
|
2082
|
-
CSS
|
2081
|
+
r("#{address_div.selector} *") {
|
2082
|
+
margin '5px'
|
2083
|
+
}
|
2084
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
2085
|
+
grid_column '2'
|
2086
|
+
}
|
2083
2087
|
}
|
2084
2088
|
}
|
2085
2089
|
|
@@ -2207,20 +2211,18 @@ Document.ready? do
|
|
2207
2211
|
}
|
2208
2212
|
|
2209
2213
|
style {
|
2210
|
-
|
2211
|
-
|
2212
|
-
|
2213
|
-
|
2214
|
-
|
2215
|
-
|
2216
|
-
|
2217
|
-
|
2218
|
-
|
2219
|
-
|
2220
|
-
|
2221
|
-
|
2222
|
-
}
|
2223
|
-
CSS
|
2214
|
+
r(address_div.selector) {
|
2215
|
+
margin '10px 0'
|
2216
|
+
}
|
2217
|
+
r("#{address_div.selector} *") {
|
2218
|
+
margin '5px'
|
2219
|
+
}
|
2220
|
+
r("#{address_div.selector} label") {
|
2221
|
+
grid_column '1'
|
2222
|
+
}
|
2223
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
2224
|
+
grid_column '2'
|
2225
|
+
}
|
2224
2226
|
}
|
2225
2227
|
}
|
2226
2228
|
}
|
@@ -2387,14 +2389,12 @@ class AddressForm
|
|
2387
2389
|
}
|
2388
2390
|
|
2389
2391
|
style {
|
2390
|
-
|
2391
|
-
|
2392
|
-
|
2393
|
-
|
2394
|
-
|
2395
|
-
|
2396
|
-
}
|
2397
|
-
CSS
|
2392
|
+
r("#{address_div.selector} *") {
|
2393
|
+
margin '5px'
|
2394
|
+
}
|
2395
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
2396
|
+
grid_column '2'
|
2397
|
+
}
|
2398
2398
|
}
|
2399
2399
|
}
|
2400
2400
|
|
@@ -2636,14 +2636,12 @@ class AddressForm
|
|
2636
2636
|
}
|
2637
2637
|
|
2638
2638
|
style {
|
2639
|
-
|
2640
|
-
|
2641
|
-
|
2642
|
-
|
2643
|
-
|
2644
|
-
|
2645
|
-
}
|
2646
|
-
CSS
|
2639
|
+
r("#{address_div.selector} *") {
|
2640
|
+
margin '5px'
|
2641
|
+
}
|
2642
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
2643
|
+
grid_column '2'
|
2644
|
+
}
|
2647
2645
|
}
|
2648
2646
|
}
|
2649
2647
|
|
@@ -2840,17 +2838,15 @@ Document.ready? do
|
|
2840
2838
|
}
|
2841
2839
|
|
2842
2840
|
style {
|
2843
|
-
|
2844
|
-
|
2845
|
-
|
2846
|
-
|
2847
|
-
|
2848
|
-
|
2849
|
-
|
2850
|
-
|
2851
|
-
|
2852
|
-
}
|
2853
|
-
CSS
|
2841
|
+
r("#{container_div.selector} *") {
|
2842
|
+
margin '5px'
|
2843
|
+
}
|
2844
|
+
r("#{container_div.selector} label") {
|
2845
|
+
grid_column '1'
|
2846
|
+
}
|
2847
|
+
r("#{container_div.selector} input") {
|
2848
|
+
grid_column '2'
|
2849
|
+
}
|
2854
2850
|
}
|
2855
2851
|
}
|
2856
2852
|
}
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/glimmer-dsl-web.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: glimmer-dsl-web 0.
|
5
|
+
# stub: glimmer-dsl-web 0.2.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "glimmer-dsl-web".freeze
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.2.0".freeze
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
@@ -58,6 +58,7 @@ Gem::Specification.new do |s|
|
|
58
58
|
"lib/glimmer/dsl/web/property_expression.rb",
|
59
59
|
"lib/glimmer/dsl/web/select_expression.rb",
|
60
60
|
"lib/glimmer/dsl/web/shine_data_binding_expression.rb",
|
61
|
+
"lib/glimmer/dsl/web/style_expression.rb",
|
61
62
|
"lib/glimmer/helpers/glimmer_helper.rb",
|
62
63
|
"lib/glimmer/util/proc_tracker.rb",
|
63
64
|
"lib/glimmer/web.rb",
|
@@ -76,11 +77,11 @@ Gem::Specification.new do |s|
|
|
76
77
|
|
77
78
|
s.add_runtime_dependency(%q<glimmer>.freeze, ["~> 2.7.6".freeze])
|
78
79
|
s.add_runtime_dependency(%q<glimmer-dsl-xml>.freeze, ["~> 1.3.2".freeze])
|
79
|
-
s.add_runtime_dependency(%q<glimmer-dsl-css>.freeze, ["~> 1.2.
|
80
|
+
s.add_runtime_dependency(%q<glimmer-dsl-css>.freeze, ["~> 1.2.3".freeze])
|
80
81
|
s.add_runtime_dependency(%q<opal>.freeze, ["= 1.8.2".freeze])
|
81
82
|
s.add_runtime_dependency(%q<opal-rails>.freeze, ["= 2.0.3".freeze])
|
82
|
-
s.add_runtime_dependency(%q<opal-async>.freeze, ["~> 1.4.
|
83
|
-
s.add_runtime_dependency(%q<opal-jquery>.freeze, ["~> 0.5.
|
83
|
+
s.add_runtime_dependency(%q<opal-async>.freeze, ["~> 1.4.1".freeze])
|
84
|
+
s.add_runtime_dependency(%q<opal-jquery>.freeze, ["~> 0.5.1".freeze])
|
84
85
|
s.add_runtime_dependency(%q<to_collection>.freeze, [">= 2.0.1".freeze, "< 3.0.0".freeze])
|
85
86
|
s.add_development_dependency(%q<puts_debuggerer>.freeze, [">= 0".freeze])
|
86
87
|
s.add_development_dependency(%q<rake>.freeze, [">= 10.1.0".freeze, "< 14.0.0".freeze])
|
data/lib/glimmer/dsl/web/dsl.rb
CHANGED
@@ -26,6 +26,7 @@ require 'glimmer/dsl/web/listener_expression'
|
|
26
26
|
require 'glimmer/dsl/web/property_expression'
|
27
27
|
require 'glimmer/dsl/web/p_expression'
|
28
28
|
require 'glimmer/dsl/web/select_expression'
|
29
|
+
require 'glimmer/dsl/web/style_expression'
|
29
30
|
require 'glimmer/dsl/web/bind_expression'
|
30
31
|
require 'glimmer/dsl/web/data_binding_expression'
|
31
32
|
require 'glimmer/dsl/web/content_data_binding_expression'
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'glimmer/dsl/static_expression'
|
2
|
+
require 'glimmer/dsl/web/general_element_expression'
|
3
|
+
|
4
|
+
module Glimmer
|
5
|
+
module DSL
|
6
|
+
module Web
|
7
|
+
class StyleExpression < StaticExpression
|
8
|
+
include GeneralElementExpression
|
9
|
+
include Glimmer
|
10
|
+
|
11
|
+
def add_content(parent, keyword, *args, &block)
|
12
|
+
if parent.rendered? || parent.skip_content_on_render_blocks?
|
13
|
+
return_value = css(&block).to_s
|
14
|
+
return_value = super(parent, keyword, *args, &block) if return_value.to_s.empty?
|
15
|
+
if return_value.is_a?(String) && parent.dom_element.text.to_s.empty?
|
16
|
+
parent.add_text_content(return_value)
|
17
|
+
end
|
18
|
+
parent.post_add_content
|
19
|
+
return_value
|
20
|
+
else
|
21
|
+
parent.add_content_on_render(&block)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -7,24 +7,27 @@ module GlimmerHelper
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def glimmer_component(component_asset_path, *component_args)
|
10
|
-
component_file = component_asset_path.split('/').last
|
11
|
-
component_class_name = component_file.classify
|
10
|
+
component_file = component_asset_path.split('/').last # TODO support namespaced components
|
11
|
+
component_class_name = component_file.classify # TODO support namespaced components
|
12
12
|
next_id_number = GlimmerHelper.next_id_number
|
13
13
|
component_id = "glimmer_component_#{next_id_number}"
|
14
14
|
component_script_container_id = "glimmer_component_script_container_#{next_id_number}"
|
15
15
|
component_args_json = JSON.dump(component_args)
|
16
|
-
opal_script = <<~
|
16
|
+
opal_script = <<~OPAL
|
17
17
|
require 'glimmer-dsl-web'
|
18
18
|
component_args_json = '#{component_args_json}'
|
19
19
|
component_args = JSON.parse(component_args_json)
|
20
20
|
component_args << {} if !component_args.last.is_a?(Hash)
|
21
21
|
component_args.last[:parent] = "##{component_id}"
|
22
22
|
#{component_class_name}.render(*component_args)
|
23
|
-
|
24
|
-
|
23
|
+
OPAL
|
24
|
+
js_script = <<~JAVASCRIPT
|
25
|
+
Opal.eval(`#{opal_script}`)
|
26
|
+
JAVASCRIPT
|
27
|
+
content_tag(:div, id: component_script_container_id, class: ['glimmer_component_script_container', "#{component_file}_script_container"], 'data-turbo': 'false') do
|
25
28
|
content_tag(:div, '', id: component_id, class: ['glimmer_component', component_file]) +
|
26
29
|
javascript_include_tag(component_asset_path, "data-turbolinks-track": "reload") +
|
27
|
-
|
30
|
+
content_tag(:script, raw(js_script), type: 'application/javascript', "data-turbo-eval": "false")
|
28
31
|
end
|
29
32
|
end
|
30
33
|
end
|
@@ -253,7 +253,6 @@ module Glimmer
|
|
253
253
|
brand_new = @dom.nil? || old_element.empty? || !options[:parent].to_s.empty? || brand_new
|
254
254
|
build_dom(layout: !custom_parent_dom_element) # TODO handle custom parent layout by passing parent instead of parent dom element
|
255
255
|
if brand_new
|
256
|
-
# TODO make a method attach to allow subclasses to override if needed
|
257
256
|
attach(the_parent_dom_element)
|
258
257
|
else
|
259
258
|
reattach(old_element)
|
@@ -336,6 +335,7 @@ module Glimmer
|
|
336
335
|
end
|
337
336
|
html_options[:class] ||= ''
|
338
337
|
html_options[:class] = "#{html_options[:class]} #{body_class}".strip
|
338
|
+
html_options['data-turbo'] = 'false' if parent.nil?
|
339
339
|
html_options
|
340
340
|
end
|
341
341
|
|
@@ -158,14 +158,12 @@ class AddressForm
|
|
158
158
|
}
|
159
159
|
|
160
160
|
style {
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
}
|
168
|
-
CSS
|
161
|
+
r("#{address_div.selector} *") {
|
162
|
+
margin '5px'
|
163
|
+
}
|
164
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
165
|
+
grid_column '2'
|
166
|
+
}
|
169
167
|
}
|
170
168
|
}
|
171
169
|
|
@@ -117,20 +117,18 @@ Document.ready? do
|
|
117
117
|
}
|
118
118
|
|
119
119
|
style {
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
}
|
133
|
-
CSS
|
120
|
+
r(address_div.selector) {
|
121
|
+
margin '10px 0'
|
122
|
+
}
|
123
|
+
r("#{address_div.selector} *") {
|
124
|
+
margin '5px'
|
125
|
+
}
|
126
|
+
r("#{address_div.selector} label") {
|
127
|
+
grid_column '1'
|
128
|
+
}
|
129
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
130
|
+
grid_column '2'
|
131
|
+
}
|
134
132
|
}
|
135
133
|
}
|
136
134
|
}
|
@@ -156,15 +156,15 @@ Document.ready? do
|
|
156
156
|
}
|
157
157
|
}
|
158
158
|
|
159
|
+
# Programmable CSS using Glimmer DSL for CSS
|
159
160
|
style {
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
CSS
|
161
|
+
# `r` is an alias for `rule`, generating a CSS rule
|
162
|
+
r("#{address_div.selector} *") {
|
163
|
+
margin '5px'
|
164
|
+
}
|
165
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
166
|
+
grid_column '2'
|
167
|
+
}
|
168
168
|
}
|
169
169
|
}
|
170
170
|
|
@@ -135,14 +135,12 @@ class AddressForm
|
|
135
135
|
}
|
136
136
|
|
137
137
|
style {
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
}
|
145
|
-
CSS
|
138
|
+
r("#{address_div.selector} *") {
|
139
|
+
margin '5px'
|
140
|
+
}
|
141
|
+
r("#{address_div.selector} input, #{address_div.selector} select") {
|
142
|
+
grid_column '2'
|
143
|
+
}
|
146
144
|
}
|
147
145
|
}
|
148
146
|
|
@@ -100,17 +100,15 @@ Document.ready? do
|
|
100
100
|
}
|
101
101
|
|
102
102
|
style {
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
}
|
113
|
-
CSS
|
103
|
+
r("#{container_div.selector} *") {
|
104
|
+
margin '5px'
|
105
|
+
}
|
106
|
+
r("#{container_div.selector} label") {
|
107
|
+
grid_column '1'
|
108
|
+
}
|
109
|
+
r("#{container_div.selector} input") {
|
110
|
+
grid_column '2'
|
111
|
+
}
|
114
112
|
}
|
115
113
|
}
|
116
114
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-dsl-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.2.
|
47
|
+
version: 1.2.3
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.2.
|
54
|
+
version: 1.2.3
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: opal
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,28 +86,28 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.4.
|
89
|
+
version: 1.4.1
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.4.
|
96
|
+
version: 1.4.1
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: opal-jquery
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.5.
|
103
|
+
version: 0.5.1
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.5.
|
110
|
+
version: 0.5.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: to_collection
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -287,6 +287,7 @@ files:
|
|
287
287
|
- lib/glimmer/dsl/web/property_expression.rb
|
288
288
|
- lib/glimmer/dsl/web/select_expression.rb
|
289
289
|
- lib/glimmer/dsl/web/shine_data_binding_expression.rb
|
290
|
+
- lib/glimmer/dsl/web/style_expression.rb
|
290
291
|
- lib/glimmer/helpers/glimmer_helper.rb
|
291
292
|
- lib/glimmer/util/proc_tracker.rb
|
292
293
|
- lib/glimmer/web.rb
|