ui_bibz 0.9.0 → 1.0.0
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 +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
|

|
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
|

|
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
|

|
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
|

|
@@ -163,12 +177,12 @@ L'élément ```button_dropdown``` accepte pour options les mêmes arguments que
|
|
163
177
|
|
164
178
|

|
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
|

|
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
|
+

|
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
|
-

|
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
|
+

|
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
|

|
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
|

|
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
|

|
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
|

|
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
|

|
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
|

|
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
|
+

|
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
|