ui_bibz 0.9.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +120 -44
- data/doc/images/etiquette.png +0 -0
- data/doc/images/progress_bar.png +0 -0
- data/lib/ui_bibz/helpers/ui_helper.rb +19 -8
- data/lib/ui_bibz/ui/label.rb +1 -1
- data/lib/ui_bibz/ui/progress_bar/components/bar.rb +103 -0
- data/lib/ui_bibz/ui/progress_bar/progress_bar.rb +79 -0
- data/lib/ui_bibz/ui/table/table.rb +1 -1
- data/lib/ui_bibz/ui/table/ux/actionable.rb +1 -1
- data/lib/ui_bibz/version.rb +1 -1
- data/lib/ui_bibz.rb +1 -9
- data/test/ui/table_test.rb +1 -2
- data/test/ui_bibz_test.rb +0 -6
- data/test/ui_helper_test.rb +20 -2
- data/ui_bibz.gemspec +3 -3
- data/vendor/assets/stylesheets/ui_bibz.sass +5 -5
- metadata +9 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9b5e5c5961f659178606b2dd173103b354d30a5
|
4
|
+
data.tar.gz: baf00289b1e6d83b0fbb745a37bf6b6ed228e753
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8237c309e39c06190b65e3c3fc22a7cdf7f127560eaeaf966d0e0e776ee1f9b01f22a1b51b802a9e27ec2d7ae31fb8fa245c221772450d5941e40042042232fd
|
7
|
+
data.tar.gz: 2fcf6075f582f357c3075d7a719d13418d0d8b07d011df5665f6f3890c924db239430de547e3f2dda1bfc312d96f0a2517193e72783e0c27dff68348f1ee9000
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -6,21 +6,20 @@
|
|
6
6
|
|
7
7
|
This project rocks and uses MIT-LICENSE.
|
8
8
|
|
9
|
-
#
|
9
|
+
# Ui Bibz
|
10
10
|
> Ui Bibz est un [framework d'interface](http://fr.wikipedia.org/wiki/Framework_d%27interface)
|
11
11
|
> permettant de construire une interface très rapidement et simplement
|
12
12
|
> à l'aide de Ruby on Rails 4 et de Boostrap 3.
|
13
13
|
|
14
14
|
Ui Bibz charge la librairie [boostrap](http://getbootstrap.com/) et
|
15
|
-
[awesomefont](http://fontawesome.io/).
|
15
|
+
[awesomefont](http://fontawesome.io/) en [CDN](https://fr.wikipedia.org/wiki/Content_delivery_network).
|
16
16
|
|
17
17
|
**NB** : [HAML](http://haml.info/) est utilisé pour présenter les exemples de chaque élément.
|
18
|
-
Vous pouvez bien entendu utiliser l'interpréteur ERB dans votre application Rails.
|
18
|
+
Vous pouvez bien entendu utiliser l'interpréteur [ERB](https://en.wikipedia.org/wiki/ERuby) dans votre application Rails.
|
19
19
|
|
20
|
-
Tous les composants du framework Ui Bibz comportent
|
20
|
+
Tous les composants du framework Ui Bibz comportent l'agument *options* et l'argument *html_options*.
|
21
21
|
Ces éléments sont basés sur l'élément ```Component```.
|
22
22
|
Un ```component``` accepte un contenu par variable ou par block.
|
23
|
-
ex :
|
24
23
|
|
25
24
|
### Component
|
26
25
|
|
@@ -29,7 +28,7 @@ L'élément ```component``` accepte dans content et block :
|
|
29
28
|
|
30
29
|
* le contenu
|
31
30
|
|
32
|
-
L'élément ```component```
|
31
|
+
L'élément ```component``` à pour ```options``` un Hash acceptant les clefs :
|
33
32
|
|
34
33
|
* [state](#state-values)
|
35
34
|
* [glyph](#glyph-arguments)
|
@@ -37,17 +36,18 @@ L'élément ```component``` accepte en option les arguments :
|
|
37
36
|
* class
|
38
37
|
|
39
38
|
|
40
|
-
L'élément ```component```
|
39
|
+
L'élément ```component``` à pour ```html_options``` un Hash acceptant les clefs :
|
41
40
|
|
42
41
|
* class
|
43
42
|
* data
|
44
43
|
* ...
|
45
44
|
|
46
|
-
|
45
|
+
Exemple :
|
46
|
+
|
47
47
|
```ruby
|
48
|
-
Component.new 'Exemple', { state: :success }, { class: 'exemple' }
|
48
|
+
Component.new 'Exemple', { state: :success, glyph: { name: 'pencil', size: 3} }, { class: 'exemple' }
|
49
49
|
# ou
|
50
|
-
Component.new { state: :success }, { class: 'exemple' } do
|
50
|
+
Component.new { state: :success, glyph: 'eye' }, { class: 'exemple' } do
|
51
51
|
'Exemple'
|
52
52
|
end
|
53
53
|
```
|
@@ -67,7 +67,7 @@ dans ```options``` et ```html_options```.
|
|
67
67
|
Ajouter la gem dans Rails :
|
68
68
|
|
69
69
|
```ruby
|
70
|
-
gem "ui_bibz", '~> 0.
|
70
|
+
gem "ui_bibz", '~> 1.0.0'
|
71
71
|
```
|
72
72
|
|
73
73
|
Lancer la command suivante :
|
@@ -92,6 +92,20 @@ Exemple :
|
|
92
92
|
%body
|
93
93
|
```
|
94
94
|
|
95
|
+
Placer la ligne suivante dans ```/app/assets/stylesheets/applications.css```
|
96
|
+
```ruby
|
97
|
+
...
|
98
|
+
*= require ui_bibz
|
99
|
+
...
|
100
|
+
```
|
101
|
+
|
102
|
+
Placer la ligne suivante dans ```/app/assets/javascripts/applications.js```
|
103
|
+
```ruby
|
104
|
+
...
|
105
|
+
//= require ui_bibz
|
106
|
+
...
|
107
|
+
```
|
108
|
+
|
95
109
|
|
96
110
|
## Utilisation
|
97
111
|
|
@@ -99,7 +113,7 @@ Exemple :
|
|
99
113
|
|
100
114
|
![alert](doc/images/alert.png)
|
101
115
|
|
102
|
-
L'élément ```notify```
|
116
|
+
L'élément ```notify``` à pour ```options``` un Hash acceptant les clefs :
|
103
117
|
|
104
118
|
* [state](#state-values)
|
105
119
|
* [glyph](#glyph-arguments)
|
@@ -112,7 +126,7 @@ L'élément ```notify``` accepte en option les arguments :
|
|
112
126
|
|
113
127
|
![breadcrumb](doc/images/breadcrumb.png)
|
114
128
|
|
115
|
-
L'élément ```breadcrumb```
|
129
|
+
L'élément ```breadcrumb``` à pour ```options``` un Hash acceptant les clefs :
|
116
130
|
|
117
131
|
* [status](#status-values)
|
118
132
|
* [glyph](#glyph-arguments)
|
@@ -133,7 +147,7 @@ L'élément ```link``` est un [component](#component).
|
|
133
147
|
|
134
148
|
![button](doc/images/button.png)
|
135
149
|
|
136
|
-
L'élément ```button```
|
150
|
+
L'élément ```button``` à pour ```options``` un Hash acceptant les clefs :
|
137
151
|
|
138
152
|
* [state](#state-values)
|
139
153
|
* [status](#status-values)
|
@@ -146,7 +160,7 @@ L'élément ```button``` accepte en option les arguments :
|
|
146
160
|
|
147
161
|
#### Button Dropdown
|
148
162
|
|
149
|
-
L'élément ```button_dropdown``` accepte pour options les mêmes
|
163
|
+
L'élément ```button_dropdown``` accepte pour options les mêmes clefs que l'élément
|
150
164
|
[dropdown](#dropdown).
|
151
165
|
|
152
166
|
![button_link](doc/images/button_dropdown.png)
|
@@ -163,12 +177,12 @@ L'élément ```button_dropdown``` accepte pour options les mêmes arguments que
|
|
163
177
|
|
164
178
|
![button_group](doc/images/button_group.png)
|
165
179
|
|
166
|
-
L'élément ```button_group```
|
180
|
+
L'élément ```button_group``` à pour ```options``` un Hash acceptant les clefs :
|
167
181
|
|
168
182
|
* position (:vertical, :horizontal)
|
169
183
|
* [size](#size-values)
|
170
184
|
|
171
|
-
L'élément ```list```
|
185
|
+
L'élément ```list``` à pour ```options``` un Hash acceptant les clefs :
|
172
186
|
|
173
187
|
* [status](#status-values)
|
174
188
|
* [state](#state-values)
|
@@ -192,20 +206,21 @@ L'élément ```list```accepte pour options les arguments :
|
|
192
206
|
|
193
207
|
#### Button Link (Lien Bouton)
|
194
208
|
|
195
|
-
L'élément ```button_link```accepte pour options les arguments :
|
196
|
-
|
197
209
|
![button_link](doc/images/button_link.png)
|
210
|
+
|
211
|
+
L'élément ```button_link``` à pour ```options``` un Hash acceptant les clefs :
|
212
|
+
|
198
213
|
```ruby
|
199
214
|
= button_link 'Button', { url: '#button', state: :primary, glyph: 'star' }, { class: 'my-button' }
|
200
215
|
```
|
201
216
|
|
202
217
|
#### Button Split Dropdown
|
203
218
|
|
204
|
-
|
205
|
-
que l'élément [dropdown](#dropdown).
|
219
|
+
![button_group](doc/images/button_split_dropdown.png)
|
206
220
|
|
221
|
+
L'élément ```button_split_dropdown```accepte pour options les mêmes clefs
|
222
|
+
que l'élément [dropdown](#dropdown).
|
207
223
|
|
208
|
-
![button_group](doc/images/button_split_dropdown.png)
|
209
224
|
```ruby
|
210
225
|
= button_split_dropdown 'Dropdown', state: :primary do |d|
|
211
226
|
- d.list do
|
@@ -218,13 +233,13 @@ que l'élément [dropdown](#dropdown).
|
|
218
233
|
|
219
234
|
### Dropdown
|
220
235
|
|
221
|
-
L'élément ```dropdown```
|
236
|
+
L'élément ```dropdown``` à pour ```options``` un Hash acceptant les clefs :
|
222
237
|
|
223
238
|
* [state](#state-values)
|
224
239
|
* [status](#status-values)
|
225
240
|
* position (:left, :right)
|
226
241
|
|
227
|
-
L'élément ```list``` est un [component](#component) qui accepte pour options les
|
242
|
+
L'élément ```list``` est un [component](#component) qui accepte pour options les clefs :
|
228
243
|
|
229
244
|
* type (:header)
|
230
245
|
* [glyph](#glyph-arguments)
|
@@ -240,19 +255,49 @@ L'élément ```list``` est un [component](#component) qui accepte pour options l
|
|
240
255
|
```
|
241
256
|
|
242
257
|
Pour ajouter une ligne séparatrice, il suffit d'insérer 3 "-" à la suite
|
243
|
-
|
258
|
+
|
259
|
+
Exemple :
|
260
|
+
|
244
261
|
```
|
245
262
|
...
|
246
263
|
d.list '--'
|
247
264
|
...
|
248
265
|
```
|
249
266
|
|
267
|
+
### Progress Bar
|
268
|
+
|
269
|
+
![glyph](doc/images/progress_bar.png)
|
270
|
+
|
271
|
+
L'élément ```progress_bar``` à pour ```options``` un Hash acceptant les clefs :
|
272
|
+
|
273
|
+
* [state](#state-values)
|
274
|
+
* type (:animated, :striped)
|
275
|
+
* label - String (default: "percentage%")
|
276
|
+
* tap - Boolean (true: To add several bars)
|
277
|
+
* percentage_min - Integer (default: 0)
|
278
|
+
* percentage_max - Integer (default: 100)
|
279
|
+
* sr_only - Boolean to show label (default: false)
|
280
|
+
|
281
|
+
```ruby
|
282
|
+
= progress_bar 30
|
283
|
+
# or
|
284
|
+
= progress_bar state: :info, sr_only: true, type: :animated do
|
285
|
+
= 70
|
286
|
+
# or
|
287
|
+
= progress_bar(tap: true) do |pb|
|
288
|
+
- pb.bar 10, { state: :success, label: 'Loading...' },{ class: 'test' }
|
289
|
+
- pb.bar 30, state: :warning
|
290
|
+
- pb.bar(type: :striped) do
|
291
|
+
= 10
|
292
|
+
```
|
293
|
+
|
250
294
|
### Glyph
|
251
295
|
|
252
296
|
![glyph](doc/images/glyph.png)
|
253
297
|
|
254
298
|
Les glyphs utilisés proviennent de [Font Awesome](http://fontawesome.io/).
|
255
|
-
L'élément ```glyph```
|
299
|
+
L'élément ```glyph``` peut contenir un hash pour ```content```
|
300
|
+
L'élément ```glyph``` à pour ```options``` un Hash acceptant les clefs :
|
256
301
|
|
257
302
|
* size
|
258
303
|
* type
|
@@ -267,12 +312,13 @@ ou
|
|
267
312
|
|
268
313
|
![panel](doc/images/panel.png)
|
269
314
|
|
270
|
-
L'élément ```panel```
|
315
|
+
L'élément ```panel``` à pour ```options``` un Hash acceptant les clefs :
|
271
316
|
|
272
317
|
* [state](#state)
|
273
318
|
* tap (true) : permet de créer un header, body et footer
|
274
319
|
|
275
320
|
Les éléments ```header```, ```body```,```footer``` sont des éléments [component](#component).
|
321
|
+
|
276
322
|
Exemple :
|
277
323
|
|
278
324
|
```ruby
|
@@ -292,14 +338,15 @@ Exemple :
|
|
292
338
|
|
293
339
|
![table](doc/images/table.png)
|
294
340
|
|
295
|
-
L'élément ```table``` est un tableau composé d'une recherche, une pagination et un trie de colonnes
|
341
|
+
L'élément ```table``` est un tableau composé d'une recherche, une pagination et un trie de colonnes intégrées.
|
296
342
|
Le tableau est compatible [I18n](http://guides.rubyonrails.org/i18n.html).
|
297
|
-
Le tableau contient pour chaque ligne un bouton dropdown action avec par défaut
|
298
|
-
ces 3 actions : voir, éditer, supprimer.
|
343
|
+
Le tableau contient pour chaque ligne un bouton dropdown 'action' avec par défaut
|
344
|
+
ces 3 actions : voir, éditer, supprimer. Toutes les colonnes sont présentes et
|
299
345
|
affichées par défaut.
|
300
346
|
|
301
|
-
La table doit contenir un store. Ce store
|
347
|
+
La table doit contenir un store. Ce store doit-être créé dans le controlleur avec la
|
302
348
|
méthode ```table_search_pagination```.
|
349
|
+
|
303
350
|
La méthode ```table_search_pagination``` contient 3 arguments :
|
304
351
|
|
305
352
|
* params
|
@@ -307,6 +354,7 @@ La méthode ```table_search_pagination``` contient 3 arguments :
|
|
307
354
|
* args (optionel)
|
308
355
|
|
309
356
|
Exemple :
|
357
|
+
|
310
358
|
```ruby
|
311
359
|
# app/controllers/document_controller.rb
|
312
360
|
@documents = Document.table_search_pagination(params, session)
|
@@ -316,12 +364,14 @@ Dans le model, insérer la méthode ```searchable_attributes``` afin de pouvoir
|
|
316
364
|
faire une recherche sur les attributs souhaités.
|
317
365
|
|
318
366
|
Exemple :
|
367
|
+
|
319
368
|
```ruby
|
320
369
|
# app/models/document.rb
|
321
370
|
searchable_attributes :name_fr, :name_en
|
322
371
|
```
|
323
372
|
|
324
373
|
Un champ recherche est disponible dans la vue :
|
374
|
+
|
325
375
|
![table_search_field](doc/images/table_search_field.png)
|
326
376
|
|
327
377
|
```ruby
|
@@ -352,13 +402,14 @@ La méthode ```table_search_pagination``` contient 3 arguments :
|
|
352
402
|
* args
|
353
403
|
|
354
404
|
Exemple :
|
405
|
+
|
355
406
|
```ruby
|
356
407
|
# app/controllers/document_controller.rb
|
357
408
|
@documents = Document.table_search_pagination(params, session)
|
358
409
|
```
|
359
410
|
|
360
411
|
Dans le **model**, insérer la méthode ```searchable_attributes``` afin de pouvoir
|
361
|
-
faire une recherche
|
412
|
+
faire une recherche sur les attributs souhaités.
|
362
413
|
|
363
414
|
Exemple :
|
364
415
|
```ruby
|
@@ -380,7 +431,7 @@ Exemple :
|
|
380
431
|
= table store: @documents
|
381
432
|
```
|
382
433
|
|
383
|
-
Les actions par défauts peuvent être modifiées (voir exemple complexe) :
|
434
|
+
Les actions par défauts peuvent être modifiées ([voir exemple complexe](#Complex-Example-table)) :
|
384
435
|
|
385
436
|
* edit
|
386
437
|
* view
|
@@ -425,7 +476,7 @@ L'ajout de colonnes à travers la méthode ```add``` contient plusieurs argument
|
|
425
476
|
|
426
477
|
#### Complex Example table
|
427
478
|
|
428
|
-
Si on souhaite voir apparaître
|
479
|
+
Si on souhaite voir apparaître certaines liasions avec d'autres tables il faut pour
|
429
480
|
cela :
|
430
481
|
|
431
482
|
Dans le controlleur, insérer la méthode ```table_search_pagination``` en ajoutant
|
@@ -439,7 +490,7 @@ Exemple :
|
|
439
490
|
|
440
491
|
Dans la vue, insérer la méthod ```table```.
|
441
492
|
NB: On peut créer ces propres méthodes comme ```user_name``` dans notre model "Document" et
|
442
|
-
l'
|
493
|
+
l'appeler comme valeur pour la clef ```data_index```.
|
443
494
|
|
444
495
|
```ruby
|
445
496
|
# app/views/documents/index.html.haml
|
@@ -472,12 +523,12 @@ arguments = { sortable: {
|
|
472
523
|
LEFT OUTER JOIN users ON users.id = products_users.user_id"
|
473
524
|
} }
|
474
525
|
|
475
|
-
@documents = Document.includes(:users).table_search_pagination(params, session,
|
476
|
-
arguments)
|
526
|
+
@documents = Document.includes(:users).table_search_pagination(params, session, arguments)
|
477
527
|
```
|
478
528
|
|
479
529
|
Ici l'argument sortable signifie que l'on souhaite s'interresser à la
|
480
530
|
fonctionnalité de trie.
|
531
|
+
|
481
532
|
Pour celà il faut :
|
482
533
|
|
483
534
|
* définir le nom de la colonne triéé à travers l'argument ```column:``` (string)
|
@@ -524,7 +575,7 @@ activerecord:
|
|
524
575
|
|
525
576
|
![table_panel](doc/images/table_panel.png)
|
526
577
|
|
527
|
-
Le composant ```table_panel``` est un tableau dans un panel.
|
578
|
+
Le composant ```table_panel``` est un [tableau](#table) dans un [panel](#panel).
|
528
579
|
|
529
580
|
```ruby
|
530
581
|
= table_panel store: @users
|
@@ -547,8 +598,9 @@ Le composant ```table_panel``` est un tableau dans un panel.
|
|
547
598
|
|
548
599
|
![list](doc/images/list.png)
|
549
600
|
|
550
|
-
Par défaut une liste à pour tag ```<li>```.
|
551
|
-
à travers l'option ```type:```.
|
601
|
+
Par défaut une liste à pour tag ```<li>```.
|
602
|
+
Mais elle peut se transformer en lien ```<a>``` à travers l'option ```type:```.
|
603
|
+
Par défaut le tag ```<li>``` est présent.
|
552
604
|
|
553
605
|
```ruby
|
554
606
|
= list_group type: :link do |lg|
|
@@ -581,7 +633,24 @@ L'élement link est un [component](#component).
|
|
581
633
|
d.link 'Test2', url: '#test2', status: :active
|
582
634
|
```
|
583
635
|
|
584
|
-
###
|
636
|
+
### Etiquette
|
637
|
+
|
638
|
+
![list](doc/images/etiquette.png)
|
639
|
+
|
640
|
+
|
641
|
+
NB : Les méthodes ```Tag, label``` sont déjà utilisées par Rails.
|
642
|
+
L'élément ```etiquette``` à pour ```options``` un Hash acceptant les clefs :
|
643
|
+
|
644
|
+
* [state](#state-values)
|
645
|
+
* [glyph](#glyph-values)
|
646
|
+
|
647
|
+
Exemple :
|
648
|
+
|
649
|
+
```ruby
|
650
|
+
= etiquette 'label'
|
651
|
+
= etiquette 'label 2', state: :success
|
652
|
+
= etiquette 'label 2', state: :danger
|
653
|
+
```
|
585
654
|
|
586
655
|
### Row
|
587
656
|
|
@@ -720,9 +789,16 @@ UiBibz::Ui::Panel.new('Exemple', { state: :success }, { class: 'exemple'}).rende
|
|
720
789
|
panel 'Exemple', { state: :success }, { class: 'exemple' }
|
721
790
|
```
|
722
791
|
|
723
|
-
#
|
792
|
+
# Roadmap :
|
793
|
+
|
794
|
+
Pour la V2.
|
724
795
|
|
725
|
-
*
|
726
|
-
*
|
796
|
+
* créer des stores pour les listes, breadcrumb
|
797
|
+
* créer une meilleure documentation
|
798
|
+
* créer d'autres extensions, plugins et une guideline
|
799
|
+
* donner le choix de la dépendence boostrap et awesomefont en CDN ou en local
|
800
|
+
* mise à jour vers bootstrap 4
|
801
|
+
* créer Ui-Bibz Core à partir de cette librairie ( pour l'insérer dans un nouveau
|
802
|
+
framework Ui-Bibz utilisant simple_form pour les champs formulaires ).
|
727
803
|
...
|
728
804
|
|
Binary file
|
Binary file
|
@@ -1,8 +1,7 @@
|
|
1
1
|
module UiBibz::Helpers::UiHelper
|
2
2
|
|
3
3
|
def panel content = nil, options = nil, html_options = nil, &block
|
4
|
-
is_tap
|
5
|
-
if is_tap
|
4
|
+
if is_tap(content, options)
|
6
5
|
UiBibz::Ui::Panel.new(content, options, html_options).tap(&block).render
|
7
6
|
else
|
8
7
|
UiBibz::Ui::Panel.new(content, options, html_options, &block).render
|
@@ -14,8 +13,8 @@ module UiBibz::Helpers::UiHelper
|
|
14
13
|
UiBibz::Ui::Alert.new(content, options, html_options, &block).render
|
15
14
|
end
|
16
15
|
|
17
|
-
# Use "
|
18
|
-
def
|
16
|
+
# Use "etiquette" instead of "label" : due to "actionview (4.2.0) lib/action_view/helpers/form_helper.rb" conflict
|
17
|
+
def etiquette content = nil, options = nil, html_options = nil, &block
|
19
18
|
UiBibz::Ui::Label.new(content, options, html_options, &block).render
|
20
19
|
end
|
21
20
|
|
@@ -38,8 +37,7 @@ module UiBibz::Helpers::UiHelper
|
|
38
37
|
# Table section begin ------------------------------------------------------
|
39
38
|
|
40
39
|
def table content = nil, options = nil, html_options = nil, &block
|
41
|
-
is_tap
|
42
|
-
if is_tap
|
40
|
+
if is_tap(content, options)
|
43
41
|
UiBibz::Ui::Table.new(content, options, html_options).tap(&block).render
|
44
42
|
else
|
45
43
|
UiBibz::Ui::Table.new(content, options, html_options, &block).render
|
@@ -59,8 +57,7 @@ module UiBibz::Helpers::UiHelper
|
|
59
57
|
end
|
60
58
|
|
61
59
|
def table_panel content = nil, options = nil, html_options = nil, &block
|
62
|
-
is_tap
|
63
|
-
if is_tap
|
60
|
+
if is_tap(content, options)
|
64
61
|
UiBibz::Ui::TablePanel.new(content, options, html_options).tap(&block).render
|
65
62
|
else
|
66
63
|
UiBibz::Ui::TablePanel.new(content, options, html_options, &block).render
|
@@ -105,4 +102,18 @@ module UiBibz::Helpers::UiHelper
|
|
105
102
|
UiBibz::Ui::Glyph.new(content, options, html_options, &block).render
|
106
103
|
end
|
107
104
|
|
105
|
+
def progress_bar percentage = nil, options = nil, html_options = nil, &block
|
106
|
+
if is_tap(percentage, options)
|
107
|
+
UiBibz::Ui::ProgressBar.new(percentage, options, html_options).tap(&block).render
|
108
|
+
else
|
109
|
+
UiBibz::Ui::ProgressBar.new(percentage, options, html_options, &block).render
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
private
|
114
|
+
|
115
|
+
def is_tap content, options
|
116
|
+
(content[:tap] if content.kind_of?(Hash)) || (options[:tap] unless options.nil?)
|
117
|
+
end
|
118
|
+
|
108
119
|
end
|
data/lib/ui_bibz/ui/label.rb
CHANGED
@@ -0,0 +1,103 @@
|
|
1
|
+
module UiBibz::Ui
|
2
|
+
|
3
|
+
# Create a NavLink
|
4
|
+
#
|
5
|
+
# This element is an extend of UiBibz::Ui::Component.
|
6
|
+
#
|
7
|
+
# ==== Attributes
|
8
|
+
#
|
9
|
+
# * +content+ - Content of element
|
10
|
+
# * +options+ - Options of element
|
11
|
+
# * +html_options+ - Html Options of element
|
12
|
+
#
|
13
|
+
# ==== Options
|
14
|
+
#
|
15
|
+
# You can add HTML attributes using the +html_options+.
|
16
|
+
# You can pass arguments in options attribute:
|
17
|
+
# * +state+ - State of élement with symbol value:
|
18
|
+
# (+:default+, +:primary+, +:info+, +:warning+, +:danger+)
|
19
|
+
# * label - String (default: "percentage%")
|
20
|
+
# * percentage_min - Integer (default: 0)
|
21
|
+
# * percentage_max - Integer (default: 100)
|
22
|
+
# * sr_only - Boolean to show label (default: false)
|
23
|
+
# * type
|
24
|
+
# (+:striped+, +:animated+)
|
25
|
+
#
|
26
|
+
# ==== Signatures
|
27
|
+
#
|
28
|
+
# UiBibz::Ui::Bar.new(percentage, options = nil, html_options = nil)
|
29
|
+
#
|
30
|
+
# UiBibz::Ui::Bar.new(options = nil, html_options = nil) do
|
31
|
+
# percentage
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# ==== Examples
|
35
|
+
#
|
36
|
+
# UiBibz::Ui::Bar.new(10)
|
37
|
+
# # or
|
38
|
+
# UiBibz::Ui::Bar.new(10, { state: :success, sr_only: true, label: 'Loading...' },{ class: 'test' }).render
|
39
|
+
# # or
|
40
|
+
# UiBibz::Ui::Bar.new({ state: :primary }) do
|
41
|
+
# 40
|
42
|
+
# end.render
|
43
|
+
#
|
44
|
+
class Bar < Component
|
45
|
+
|
46
|
+
def initialize content = nil, options = nil, html_options = nil, &block
|
47
|
+
super
|
48
|
+
end
|
49
|
+
|
50
|
+
def render
|
51
|
+
content_tag :div, progressbar_inner_html, class_and_html_options(['progress-bar', type]).merge(bar_html_options)
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def bar_html_options
|
57
|
+
{
|
58
|
+
"role" => 'progressbar',
|
59
|
+
"aria-valuenow" => percentage,
|
60
|
+
"aria-valuemin" => percentage_min,
|
61
|
+
"aria-valuemax" => percentage_max,
|
62
|
+
"style" => "width: #{ percentage }%"
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
def progressbar_inner_html
|
67
|
+
sr_only ? content_tag(:span, label, class: 'sr-only') : label
|
68
|
+
end
|
69
|
+
|
70
|
+
def percentage
|
71
|
+
@content || 0
|
72
|
+
end
|
73
|
+
|
74
|
+
def sr_only
|
75
|
+
@options[:sr_only] || false
|
76
|
+
end
|
77
|
+
|
78
|
+
def percentage_min
|
79
|
+
@options[:percentage_min] || 0
|
80
|
+
end
|
81
|
+
|
82
|
+
def percentage_max
|
83
|
+
@options[:percentage_max] || 100
|
84
|
+
end
|
85
|
+
|
86
|
+
def label
|
87
|
+
@options[:label].nil? ? "#{ percentage }%" : @options[:label]
|
88
|
+
end
|
89
|
+
|
90
|
+
def type
|
91
|
+
if @options[:type] == :animated
|
92
|
+
"progress-bar-striped active"
|
93
|
+
elsif @options[:type]
|
94
|
+
"progress-bar-#{ @options[:type] }"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def state
|
99
|
+
"progress-bar-#{ @options[:state] }" unless @options[:state].nil?
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'ui_bibz/ui/progress_bar/components/bar'
|
2
|
+
module UiBibz::Ui
|
3
|
+
|
4
|
+
# Create a progress bar
|
5
|
+
#
|
6
|
+
# This element is an extend of UiBibz::Ui::Component.
|
7
|
+
#
|
8
|
+
# ==== Attributes
|
9
|
+
#
|
10
|
+
# * +content+ - Content of element
|
11
|
+
# * +options+ - Options of element
|
12
|
+
# * +html_options+ - Html Options of element
|
13
|
+
#
|
14
|
+
# ==== Options
|
15
|
+
#
|
16
|
+
# You can add HTML attributes using the +html_options+.
|
17
|
+
# You can pass arguments in options attribute:
|
18
|
+
# * +state+ - State of élement with symbol value:
|
19
|
+
# (+:default+, +:primary+, +:info+, +:warning+, +:danger+)
|
20
|
+
# * label - String (default: "percentage%")
|
21
|
+
# * tap - Boolean (true: To add several bars)
|
22
|
+
# * percentage_min - Integer (default: 0)
|
23
|
+
# * percentage_max - Integer (default: 100)
|
24
|
+
# * sr_only - Boolean to show label (default: false)
|
25
|
+
# * type
|
26
|
+
# (+:striped+, +:animated+)
|
27
|
+
#
|
28
|
+
#
|
29
|
+
# ==== Signatures
|
30
|
+
#
|
31
|
+
# UiBibz::Ui::ProgressBar.new(percentage, options = nil, html_options = nil)
|
32
|
+
#
|
33
|
+
# UiBibz::Ui::ProgressBar.new(options = nil, html_options = nil) do
|
34
|
+
# percentage
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# UiBibz::Ui::ProgressBar.new(tap: true).tap do |pb|
|
38
|
+
# pb.bar percentage, options = nil, html_options = nil
|
39
|
+
# pb.bar options = nil, html_options = nil do
|
40
|
+
# percentage
|
41
|
+
# end
|
42
|
+
# end
|
43
|
+
#
|
44
|
+
# ==== Examples
|
45
|
+
#
|
46
|
+
# UiBibz::Ui::ProgressBar.new(50)
|
47
|
+
# # or
|
48
|
+
# UiBibz::Ui::ProgressBar.new(10, { state: :success, sr_only: false, label: 'Loading...' },{ class: 'test' }).render
|
49
|
+
# # or
|
50
|
+
# UiBibz::Ui::ProgressBar.new(tap: true).tap |pb|
|
51
|
+
# pb.bar 10, { state: :success, sr_only: false, label: 'Loading...' },{ class: 'test' }
|
52
|
+
# pb.bar { state: :primary } do
|
53
|
+
# 20
|
54
|
+
# end
|
55
|
+
# end.render
|
56
|
+
#
|
57
|
+
class ProgressBar < Component
|
58
|
+
|
59
|
+
def initialize content = nil, options = nil, html_options = nil, &block
|
60
|
+
super
|
61
|
+
@bars = []
|
62
|
+
end
|
63
|
+
|
64
|
+
def render
|
65
|
+
content_tag :div, content, class: 'progress'
|
66
|
+
end
|
67
|
+
|
68
|
+
def bar content = nil, options = nil, html_options = nil, &block
|
69
|
+
@bars << Bar.new(content, options, html_options, &block).render
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def content
|
75
|
+
@options[:tap] ? @bars.join().html_safe : Bar.new(@content, @options, @html_options).render
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
@@ -29,7 +29,7 @@ module UiBibz::Ui
|
|
29
29
|
private
|
30
30
|
|
31
31
|
def dropdown_action record
|
32
|
-
UiBibz::Ui::Dropdown.new(dropdown_action_name, { position: :right, glyph: actions_glyph }, class: 'btn-group-xs').tap do |d|
|
32
|
+
UiBibz::Ui::Dropdown.new(dropdown_action_name, { position: :right, glyph: actions_glyph }, class: 'btn-group-xs dropdown-action').tap do |d|
|
33
33
|
unless @actions.nil?
|
34
34
|
actions_links(record).each do |l|
|
35
35
|
d.list l.html_safe
|
data/lib/ui_bibz/version.rb
CHANGED
data/lib/ui_bibz.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
1
|
require 'action_view'
|
3
|
-
#require 'haml/helpers'
|
4
2
|
require 'will_paginate'
|
5
3
|
require 'will-paginate-i18n'
|
6
4
|
|
@@ -8,12 +6,6 @@ module UiBibz
|
|
8
6
|
|
9
7
|
mattr_accessor :app_root
|
10
8
|
|
11
|
-
# Yield self on setup for nice config blocks
|
12
|
-
# Maybe remove ?
|
13
|
-
def self.setup
|
14
|
-
yield self
|
15
|
-
end
|
16
|
-
|
17
9
|
module Ui
|
18
10
|
autoload :Alert, "ui_bibz/ui/alert"
|
19
11
|
autoload :Breadcrumb, "ui_bibz/ui/breadcrumb/breadcrumb"
|
@@ -32,6 +24,7 @@ module UiBibz
|
|
32
24
|
autoload :ListGroup, "ui_bibz/ui/list/list_group"
|
33
25
|
autoload :Nav, "ui_bibz/ui/nav/nav"
|
34
26
|
autoload :Panel, "ui_bibz/ui/panel"
|
27
|
+
autoload :ProgressBar, "ui_bibz/ui/progress_bar/progress_bar"
|
35
28
|
autoload :Row, "ui_bibz/ui/grid/components/row"
|
36
29
|
autoload :Tab, "ui_bibz/ui/nav/tab"
|
37
30
|
autoload :Table, "ui_bibz/ui/table/table"
|
@@ -56,5 +49,4 @@ module UiBibz
|
|
56
49
|
|
57
50
|
end
|
58
51
|
|
59
|
-
|
60
52
|
require "ui_bibz/rails/engine"
|
data/test/ui/table_test.rb
CHANGED
@@ -109,8 +109,7 @@ class TableTest < ActionView::TestCase
|
|
109
109
|
options = { actionable: true }
|
110
110
|
action = UiBibz::Ui::Actionable.new(@store, options)
|
111
111
|
actual = action.body @store.records.first, []
|
112
|
-
expected = ["<td><div class=\"btn-group-xs dropdown\"><button class=\"btn btn-default dropdown-toggle\" type=\"button\" data-toggle=\"dropdown\" aria-expanded=\"false\"><i class=\"glyph fa fa-ellipsis-v fa-fw\"></i> Actions <span class=\"caret\"></span></button><ul class=\"dropdown-menu dropdown-menu-right\" role=\"menu\"></ul></div></td>"]
|
113
|
-
|
112
|
+
expected = ["<td><div class=\"btn-group-xs dropdown-action dropdown\"><button class=\"btn btn-default dropdown-toggle\" type=\"button\" data-toggle=\"dropdown\" aria-expanded=\"false\"><i class=\"glyph fa fa-ellipsis-v fa-fw\"></i> Actions <span class=\"caret\"></span></button><ul class=\"dropdown-menu dropdown-menu-right\" role=\"menu\"></ul></div></td>"]
|
114
113
|
|
115
114
|
assert_equal expected, actual
|
116
115
|
end
|
data/test/ui_bibz_test.rb
CHANGED
data/test/ui_helper_test.rb
CHANGED
@@ -20,8 +20,8 @@ class UiHelperTest < ActionView::TestCase
|
|
20
20
|
assert_equal expected, actual
|
21
21
|
end
|
22
22
|
|
23
|
-
test '
|
24
|
-
actual =
|
23
|
+
test 'etiquette' do
|
24
|
+
actual = etiquette 'toto', state: :success, glyph: 'pencil'
|
25
25
|
expected = "<span class=\"label-success label\"><i class=\"glyph fa fa-pencil\"></i> toto</span>"
|
26
26
|
|
27
27
|
assert_equal expected, actual
|
@@ -41,4 +41,22 @@ class UiHelperTest < ActionView::TestCase
|
|
41
41
|
assert_equal expected, actual
|
42
42
|
end
|
43
43
|
|
44
|
+
test 'progress bar' do
|
45
|
+
actual = progress_bar 30
|
46
|
+
expected = "<div class=\"progress\"><div class=\"progress-bar\" role=\"progressbar\" aria-valuenow=\"30\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 30%\">30%</div></div>"
|
47
|
+
|
48
|
+
assert_equal expected, actual
|
49
|
+
end
|
50
|
+
|
51
|
+
test 'progress bar with several bars' do
|
52
|
+
actual = progress_bar(tap: true) do |pb|
|
53
|
+
pb.bar 20, type: :animated
|
54
|
+
pb.bar 30, state: :success
|
55
|
+
pb.bar 10, type: :striped
|
56
|
+
end
|
57
|
+
expected = "<div class=\"progress\"><div class=\"progress-bar progress-bar-striped active\" role=\"progressbar\" aria-valuenow=\"20\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 20%\">20%</div><div class=\"progress-bar-success progress-bar\" role=\"progressbar\" aria-valuenow=\"30\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 30%\">30%</div><div class=\"progress-bar progress-bar-striped\" role=\"progressbar\" aria-valuenow=\"10\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 10%\">10%</div></div>"
|
58
|
+
|
59
|
+
assert_equal expected, actual
|
60
|
+
end
|
61
|
+
|
44
62
|
end
|
data/ui_bibz.gemspec
CHANGED
@@ -9,9 +9,9 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.version = UiBibz::VERSION
|
10
10
|
s.authors = ["Thooams"]
|
11
11
|
s.email = ["thooams@gmail.com"]
|
12
|
-
s.homepage = "
|
13
|
-
s.summary = "A Rails
|
14
|
-
s.description = "A Rails
|
12
|
+
s.homepage = "http://thooams.github.io/Ui-Bibz/"
|
13
|
+
s.summary = "A Rails Bootstrap framework..."
|
14
|
+
s.description = "A Rails Boostrap framework..."
|
15
15
|
s.license = "MIT"
|
16
16
|
|
17
17
|
s.files = `git ls-files`.split("\n")
|
@@ -24,14 +24,14 @@
|
|
24
24
|
width: 75px
|
25
25
|
display: inline-block
|
26
26
|
|
27
|
-
.table
|
28
|
-
td:last-child .dropdown
|
27
|
+
.table>tbody>tr:hover
|
28
|
+
td:last-child .dropdown-action
|
29
29
|
display: block
|
30
30
|
|
31
|
-
.table
|
31
|
+
.table>tbody>tr
|
32
32
|
td:last-child
|
33
33
|
height: 39px
|
34
|
-
.dropdown
|
34
|
+
.dropdown-action
|
35
35
|
display: none
|
36
36
|
|
37
37
|
.table-search-field
|
@@ -42,5 +42,5 @@
|
|
42
42
|
|
43
43
|
.table
|
44
44
|
.action
|
45
|
-
width:
|
45
|
+
width: 100px
|
46
46
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ui_bibz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thooams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -164,7 +164,7 @@ dependencies:
|
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
-
description: A Rails
|
167
|
+
description: A Rails Boostrap framework...
|
168
168
|
email:
|
169
169
|
- thooams@gmail.com
|
170
170
|
executables: []
|
@@ -188,10 +188,12 @@ files:
|
|
188
188
|
- doc/images/button_group.png
|
189
189
|
- doc/images/button_link.png
|
190
190
|
- doc/images/button_split_dropdown.png
|
191
|
+
- doc/images/etiquette.png
|
191
192
|
- doc/images/glyph.png
|
192
193
|
- doc/images/list.png
|
193
194
|
- doc/images/nav.png
|
194
195
|
- doc/images/panel.png
|
196
|
+
- doc/images/progress_bar.png
|
195
197
|
- doc/images/table.png
|
196
198
|
- doc/images/table_pagination_per_page.png
|
197
199
|
- doc/images/table_panel.png
|
@@ -227,6 +229,8 @@ files:
|
|
227
229
|
- lib/ui_bibz/ui/nav/components/nav_link.rb
|
228
230
|
- lib/ui_bibz/ui/nav/nav.rb
|
229
231
|
- lib/ui_bibz/ui/panel.rb
|
232
|
+
- lib/ui_bibz/ui/progress_bar/components/bar.rb
|
233
|
+
- lib/ui_bibz/ui/progress_bar/progress_bar.rb
|
230
234
|
- lib/ui_bibz/ui/table/components/actions.rb
|
231
235
|
- lib/ui_bibz/ui/table/components/column.rb
|
232
236
|
- lib/ui_bibz/ui/table/components/columns.rb
|
@@ -309,7 +313,7 @@ files:
|
|
309
313
|
- ui_bibz.gemspec
|
310
314
|
- vendor/assets/javascripts/ui_bibz.js.coffee
|
311
315
|
- vendor/assets/stylesheets/ui_bibz.sass
|
312
|
-
homepage:
|
316
|
+
homepage: http://thooams.github.io/Ui-Bibz/
|
313
317
|
licenses:
|
314
318
|
- MIT
|
315
319
|
metadata: {}
|
@@ -332,7 +336,7 @@ rubyforge_project:
|
|
332
336
|
rubygems_version: 2.4.5
|
333
337
|
signing_key:
|
334
338
|
specification_version: 4
|
335
|
-
summary: A Rails
|
339
|
+
summary: A Rails Bootstrap framework...
|
336
340
|
test_files:
|
337
341
|
- test/dummy/README.rdoc
|
338
342
|
- test/dummy/Rakefile
|