administrate-bootstrap-theme 0.1.0 → 0.1.9

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.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -11
  3. data/Rakefile +10 -14
  4. data/app/assets/config/administrate-bootstrap-theme_manifest.js +1 -0
  5. data/app/assets/javascripts/administrate-bootstrap-theme/theme.js +2 -0
  6. data/app/assets/stylesheets/administrate-bootstrap-theme/_base.scss +17 -1
  7. data/app/assets/stylesheets/administrate-bootstrap-theme/components/_content_body.scss +17 -3
  8. data/app/assets/stylesheets/administrate-bootstrap-theme/components/_form.scss +52 -16
  9. data/app/assets/stylesheets/administrate-bootstrap-theme/theme.scss +12 -0
  10. data/lib/administrate-bootstrap-theme/engine.rb +2 -0
  11. data/lib/administrate-bootstrap-theme/version.rb +1 -1
  12. data/node_modules/bootstrap/js/src/alert.js +141 -0
  13. data/node_modules/bootstrap/js/src/base-component.js +46 -0
  14. data/node_modules/bootstrap/js/src/button.js +95 -0
  15. data/node_modules/bootstrap/js/src/carousel.js +624 -0
  16. data/node_modules/bootstrap/js/src/collapse.js +410 -0
  17. data/node_modules/bootstrap/js/src/dom/data.js +57 -0
  18. data/node_modules/bootstrap/js/src/dom/event-handler.js +331 -0
  19. data/node_modules/bootstrap/js/src/dom/manipulator.js +80 -0
  20. data/node_modules/bootstrap/js/src/dom/selector-engine.js +75 -0
  21. data/node_modules/bootstrap/js/src/dropdown.js +543 -0
  22. data/node_modules/bootstrap/js/src/modal.js +582 -0
  23. data/node_modules/bootstrap/js/src/offcanvas.js +279 -0
  24. data/node_modules/bootstrap/js/src/popover.js +171 -0
  25. data/node_modules/bootstrap/js/src/scrollspy.js +319 -0
  26. data/node_modules/bootstrap/js/src/tab.js +220 -0
  27. data/node_modules/bootstrap/js/src/toast.js +219 -0
  28. data/node_modules/bootstrap/js/src/tooltip.js +802 -0
  29. data/node_modules/bootstrap/js/src/util/index.js +253 -0
  30. data/node_modules/bootstrap/js/src/util/sanitizer.js +127 -0
  31. data/node_modules/bootstrap/js/src/util/scrollbar.js +70 -0
  32. data/node_modules/bootstrap/scss/_accordion.scss +116 -0
  33. data/node_modules/bootstrap/scss/_alert.scss +57 -0
  34. data/node_modules/bootstrap/scss/_badge.scss +29 -0
  35. data/node_modules/bootstrap/scss/_breadcrumb.scss +28 -0
  36. data/node_modules/bootstrap/scss/_button-group.scss +139 -0
  37. data/node_modules/bootstrap/scss/_buttons.scss +111 -0
  38. data/node_modules/bootstrap/scss/_card.scss +215 -0
  39. data/node_modules/bootstrap/scss/_carousel.scss +229 -0
  40. data/node_modules/bootstrap/scss/_close.scss +40 -0
  41. data/node_modules/bootstrap/scss/_containers.scss +41 -0
  42. data/node_modules/bootstrap/scss/_dropdown.scss +246 -0
  43. data/node_modules/bootstrap/scss/_forms.scss +9 -0
  44. data/node_modules/bootstrap/scss/_functions.scss +205 -0
  45. data/node_modules/bootstrap/scss/_grid.scss +22 -0
  46. data/node_modules/bootstrap/scss/_helpers.scss +7 -0
  47. data/node_modules/bootstrap/scss/_images.scss +42 -0
  48. data/node_modules/bootstrap/scss/_list-group.scss +174 -0
  49. data/node_modules/bootstrap/scss/_mixins.scss +41 -0
  50. data/node_modules/bootstrap/scss/_modal.scss +237 -0
  51. data/node_modules/bootstrap/scss/_nav.scss +139 -0
  52. data/node_modules/bootstrap/scss/_navbar.scss +306 -0
  53. data/node_modules/bootstrap/scss/_offcanvas.scss +77 -0
  54. data/node_modules/bootstrap/scss/_pagination.scss +64 -0
  55. data/node_modules/bootstrap/scss/_popover.scss +158 -0
  56. data/node_modules/bootstrap/scss/_progress.scss +48 -0
  57. data/node_modules/bootstrap/scss/_reboot.scss +621 -0
  58. data/node_modules/bootstrap/scss/_root.scss +16 -0
  59. data/node_modules/bootstrap/scss/_spinners.scss +69 -0
  60. data/node_modules/bootstrap/scss/_tables.scss +150 -0
  61. data/node_modules/bootstrap/scss/_toasts.scss +51 -0
  62. data/node_modules/bootstrap/scss/_tooltip.scss +115 -0
  63. data/node_modules/bootstrap/scss/_transitions.scss +21 -0
  64. data/node_modules/bootstrap/scss/_type.scss +104 -0
  65. data/node_modules/bootstrap/scss/_utilities.scss +594 -0
  66. data/node_modules/bootstrap/scss/_variables.scss +1464 -0
  67. data/node_modules/bootstrap/scss/bootstrap-grid.scss +65 -0
  68. data/node_modules/bootstrap/scss/bootstrap-reboot.scss +15 -0
  69. data/node_modules/bootstrap/scss/bootstrap-utilities.scss +18 -0
  70. data/node_modules/bootstrap/scss/bootstrap.scss +52 -0
  71. data/node_modules/bootstrap/scss/forms/_floating-labels.scss +61 -0
  72. data/node_modules/bootstrap/scss/forms/_form-check.scss +152 -0
  73. data/node_modules/bootstrap/scss/forms/_form-control.scss +219 -0
  74. data/node_modules/bootstrap/scss/forms/_form-range.scss +91 -0
  75. data/node_modules/bootstrap/scss/forms/_form-select.scss +67 -0
  76. data/node_modules/bootstrap/scss/forms/_form-text.scss +11 -0
  77. data/node_modules/bootstrap/scss/forms/_input-group.scss +121 -0
  78. data/node_modules/bootstrap/scss/forms/_labels.scss +36 -0
  79. data/node_modules/bootstrap/scss/forms/_validation.scss +12 -0
  80. data/node_modules/bootstrap/scss/helpers/_clearfix.scss +3 -0
  81. data/node_modules/bootstrap/scss/helpers/_colored-links.scss +12 -0
  82. data/node_modules/bootstrap/scss/helpers/_position.scss +30 -0
  83. data/node_modules/bootstrap/scss/helpers/_ratio.scss +26 -0
  84. data/node_modules/bootstrap/scss/helpers/_stretched-link.scss +15 -0
  85. data/node_modules/bootstrap/scss/helpers/_text-truncation.scss +7 -0
  86. data/node_modules/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
  87. data/node_modules/bootstrap/scss/mixins/_alert.scss +11 -0
  88. data/node_modules/bootstrap/scss/mixins/_border-radius.scss +78 -0
  89. data/node_modules/bootstrap/scss/mixins/_box-shadow.scss +18 -0
  90. data/node_modules/bootstrap/scss/mixins/_breakpoints.scss +127 -0
  91. data/node_modules/bootstrap/scss/mixins/_buttons.scss +133 -0
  92. data/node_modules/bootstrap/scss/mixins/_caret.scss +64 -0
  93. data/node_modules/bootstrap/scss/mixins/_clearfix.scss +9 -0
  94. data/node_modules/bootstrap/scss/mixins/_container.scss +9 -0
  95. data/node_modules/bootstrap/scss/mixins/_deprecate.scss +10 -0
  96. data/node_modules/bootstrap/scss/mixins/_forms.scss +134 -0
  97. data/node_modules/bootstrap/scss/mixins/_gradients.scss +47 -0
  98. data/node_modules/bootstrap/scss/mixins/_grid.scss +120 -0
  99. data/node_modules/bootstrap/scss/mixins/_image.scss +16 -0
  100. data/node_modules/bootstrap/scss/mixins/_list-group.scss +24 -0
  101. data/node_modules/bootstrap/scss/mixins/_lists.scss +7 -0
  102. data/node_modules/bootstrap/scss/mixins/_pagination.scss +31 -0
  103. data/node_modules/bootstrap/scss/mixins/_reset-text.scss +17 -0
  104. data/node_modules/bootstrap/scss/mixins/_resize.scss +6 -0
  105. data/node_modules/bootstrap/scss/mixins/_table-variants.scss +21 -0
  106. data/node_modules/bootstrap/scss/mixins/_text-truncate.scss +8 -0
  107. data/node_modules/bootstrap/scss/mixins/_transition.scss +26 -0
  108. data/node_modules/bootstrap/scss/mixins/_utilities.scss +68 -0
  109. data/node_modules/bootstrap/scss/mixins/_visually-hidden.scss +29 -0
  110. data/node_modules/bootstrap/scss/utilities/_api.scss +47 -0
  111. data/node_modules/bootstrap/scss/vendor/_rfs.scss +312 -0
  112. metadata +106 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0396fa4e9ab92f78876de55aa3ccf3af5ebbe66a014a746dbed2f97554c2ffb
4
- data.tar.gz: 05f582a06a3b2861dc395104c6b62e6e092031d7d185167fba1bf07a65f20ea7
3
+ metadata.gz: c179fa187eba0bd5d2a559db05a527b1cdde088000608bee63f9eed413aa8288
4
+ data.tar.gz: f0b2b078a5f189eb914dc8d0f70affc23fc91bf7b05fffa11ad6aee35ed064c3
5
5
  SHA512:
6
- metadata.gz: 1b6fdd711e9935f557014cd8f82d53578d360c96efc76c076ad768e093ac6014247b26b669156cac266ee01dd06b2a0cc0377454b5a65fbb527feedb25bd06db
7
- data.tar.gz: 108fe161bd0edf8113c4d62954af9c66c623cac765950f7121f0cbacf566ff7fc3e744aaf5c3c73de85fe6ae34b06da23c6411ad66f15971342f564210eea0e5
6
+ metadata.gz: 89a9486a51c81bf5a59b5866ced85fb658e6bdc1da5105f7a4876266f75d27f066e2c3aad3523c6177e2ab4b82b3d6e0aab0b6971565b238ef36dc6a5949f973
7
+ data.tar.gz: 52526a552b243d3d72a0eba83d321e23fe7a7f3af3f88e9e70a291a09d31211e4a357a8ed250ae00cda75371f9bb62fb5ed8a856ab202f31343f235e6ea82354
data/README.md CHANGED
@@ -1,29 +1,35 @@
1
- # Administrate Bootstrap Theme [![Gem Version](https://badge.fury.io/rb/administrate-bootstrap-theme.svg)](https://badge.fury.io/rb/administrate-bootstrap-theme)
1
+ # Administrate Bootstrap Theme [![Gem Version](https://badge.fury.io/rb/administrate-bootstrap-theme.svg)](https://badge.fury.io/rb/administrate-bootstrap-theme) ![specs](https://github.com/blocknotes/administrate-bootstrap-theme/actions/workflows/ruby.yml/badge.svg)
2
2
  A Bootstrap 5 (_beta_) theme for [Administrate](https://github.com/thoughtbot/administrate).
3
3
 
4
4
  Features:
5
- - easy to install, just include CSS to apply the theme to a default Administrate structure;
5
+ - easy to install, just include CSS/JS to apply the theme to a default Administrate structure;
6
6
  - customizable via SASS variables;
7
7
  - allow to use *Bootstrap* components in the admin.
8
8
 
9
- ![screenshot](screenshot.png)
9
+ See some [screenshots](#screenshots).
10
10
 
11
11
  ## Installation
12
- - Add to the *Gemfile* (of an Administrate project): `gem 'administrate-bootstrap-theme'` (and execute `bundle`)
13
- - Modify *app/assets/config/manifest.js*, replacing the administrate assets with:
12
+ - Add to *Gemfile* (of an Administrate project): `gem 'administrate-bootstrap-theme'` (and execute `bundle`)
13
+ - Add to *app/assets/config/manifest.js*:
14
14
 
15
15
  ```js
16
16
  //= link administrate-bootstrap-theme/theme.css
17
-
18
- // OFF link administrate/application.css
19
- // OFF link administrate/application.js
17
+ //= link administrate-bootstrap-theme/theme.js
20
18
  ```
21
19
 
22
- - Edit *app/views/layouts/admin/application.html.erb* (you can generate it using `rails generate administrate:views:layout`),
23
- adding before head closing tag:
20
+ - Generate the layout views if they are missing: `rails generate administrate:views:layout` (only **_stylesheet** and **_javascript** partials are needed)
21
+ - Update *app/views/admin/application/_stylesheet.html.erb*, leaving only:
24
22
 
25
- ```html
23
+ ```erb
26
24
  <%= stylesheet_link_tag 'administrate-bootstrap-theme/theme', media: 'all' %>
25
+ <%= yield :stylesheet %>
26
+ ```
27
+
28
+ - Update *app/views/admin/application/_javascript.html.erb*, leaving only:
29
+
30
+ ```erb
31
+ <%= javascript_include_tag 'administrate-bootstrap-theme/theme' %>
32
+ <%= yield :javascript %>
27
33
  ```
28
34
 
29
35
  ## Customizations
@@ -39,6 +45,14 @@ And replace the link tag in the *application.html.erb* with: `<%= stylesheet_lin
39
45
 
40
46
  For the complete list of options take a look [here](app/assets/stylesheets/administrate-bootstrap-theme/_variables.scss).
41
47
 
48
+ ## Screenshots
49
+ - Index page:
50
+ ![screenshot_index](screenshot_index.png)
51
+ - Show page:
52
+ ![screenshot_show](screenshot_show.png)
53
+ - Form page:
54
+ ![screenshot_form](screenshot_form.png)
55
+
42
56
  ## Do you like it? Star it!
43
57
  If you use this component just star it. A developer is more motivated to improve a project when there is some interest.
44
58
 
data/Rakefile CHANGED
@@ -1,20 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/setup"
3
+ require 'bundler/gem_tasks'
4
4
 
5
- APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
6
- load "rails/tasks/engine.rake"
5
+ begin
6
+ require 'rspec/core/rake_task'
7
7
 
8
- load "rails/tasks/statistics.rake"
8
+ RSpec::Core::RakeTask.new(:spec) do |t|
9
+ # t.ruby_opts = %w[-w]
10
+ t.rspec_opts = ['--color', '--format documentation']
11
+ end
9
12
 
10
- require "bundler/gem_tasks"
11
-
12
- require "rake/testtask"
13
-
14
- Rake::TestTask.new(:test) do |t|
15
- t.libs << 'test'
16
- t.pattern = 'test/**/*_test.rb'
17
- t.verbose = false
13
+ task default: :spec
14
+ rescue LoadError
15
+ puts '! LoadError: no RSpec available'
18
16
  end
19
-
20
- task default: :test
@@ -1 +1,2 @@
1
1
  //= link_directory ../stylesheets/administrate-bootstrap-theme .css
2
+ //= link_directory ../javascripts/administrate-bootstrap-theme .js
@@ -0,0 +1,2 @@
1
+ //= require bootstrap/dist/js/bootstrap.bundle
2
+
@@ -1,10 +1,11 @@
1
- @import "../../../node_modules/bootstrap/scss/bootstrap";
1
+ @import "bootstrap/scss/bootstrap";
2
2
 
3
3
  @import "variables";
4
4
 
5
5
  @import "components/navigation";
6
6
  @import "components/content_header";
7
7
  @import "components/content_body";
8
+ @import "components/form";
8
9
  @import "components/pagination";
9
10
 
10
11
  .app-container {
@@ -13,6 +14,21 @@
13
14
  height: 100vh;
14
15
  }
15
16
 
17
+ .flashes {
18
+ pointer-events: none;
19
+ position: fixed;
20
+ text-align: center;
21
+ width: calc(100% - #{$navigation-width});
22
+
23
+ > .flash {
24
+ @extend .alert, .d-inline-block;
25
+
26
+ &.flash-notice {
27
+ @extend .alert-info;
28
+ }
29
+ }
30
+ }
31
+
16
32
  .main-content {
17
33
  @extend .d-flex, .flex-column;
18
34
 
@@ -1,13 +1,13 @@
1
1
  .main-content__body {
2
- @extend .container-fluid;
3
-
4
- @import "form";
2
+ @extend .container-fluid, .mb-3;
5
3
 
6
4
  > dl {
7
5
  @extend .row;
8
6
 
9
7
  dt {
10
8
  @extend .col-2, .text-end;
9
+
10
+ min-height: 32px;
11
11
  }
12
12
 
13
13
  dd {
@@ -23,6 +23,20 @@
23
23
  @extend .table;
24
24
  }
25
25
 
26
+ .attribute--nested {
27
+ > div {
28
+ display: flex;
29
+ }
30
+
31
+ legend {
32
+ @extend .fs-5, .border-bottom;
33
+ }
34
+
35
+ .attribute-data {
36
+ @extend .ps-4;
37
+ }
38
+ }
39
+
26
40
  .cell-label__sort-indicator > svg {
27
41
  height: 20px;
28
42
  width: 20px;
@@ -1,25 +1,61 @@
1
- // Imported in content_body
1
+ .main-content__body {
2
+ legend {
3
+ @extend .fs-4, .my-2;
4
+ }
2
5
 
3
- .form-actions > input {
4
- @extend .btn;
5
- }
6
+ .field_with_errors {
7
+ @extend .text-danger;
8
+ }
6
9
 
7
- .field-unit {
8
- @extend .row;
9
- }
10
+ .form-actions > input {
11
+ @extend .btn;
12
+ }
13
+
14
+ .field-unit {
15
+ @extend .row, .mb-3;
16
+ }
17
+
18
+ .field-unit__field {
19
+ @extend .col-10;
10
20
 
11
- .field-unit__field {
12
- @extend .col-10;
21
+ > input:not([type="checkbox"]) {
22
+ @extend .form-control;
23
+ }
13
24
 
14
- > input[type="text"], > textarea {
15
- @extend .form-control;
25
+ > input[type="checkbox"] {
26
+ @extend .form-check-input
27
+ }
28
+
29
+ > select {
30
+ @extend .form-select;
31
+ }
32
+
33
+ > textarea {
34
+ @extend .form-control;
35
+ min-height: 150px;
36
+ }
16
37
  }
17
- }
18
38
 
19
- .field-unit__label {
20
- @extend .col-2;
39
+ .field-unit__label {
40
+ @extend .col-2;
41
+
42
+ > label {
43
+ @extend .col-form-label;
44
+ border-bottom: 1px dashed #ccc;
45
+ padding-bottom: 0;
46
+ width: 100%;
47
+ }
48
+ }
49
+
50
+ #error_explanation {
51
+ @extend .alert, .alert-danger;
52
+
53
+ > h2 {
54
+ @extend .h4, .alert-heading;
55
+ }
21
56
 
22
- > label {
23
- @extend .col-form-label;
57
+ > ul {
58
+ @extend .mb-0;
59
+ }
24
60
  }
25
61
  }
@@ -21,11 +21,23 @@ nav.pagination {
21
21
  }
22
22
 
23
23
  .main-content__body {
24
+ table {
25
+ @extend .table-striped;
26
+ }
27
+
28
+ .attribute-data > table {
29
+ @extend .table-bordered;
30
+ }
31
+
24
32
  .form-actions > input {
25
33
  @extend .btn-primary;
26
34
  }
27
35
 
28
36
  .js-table-row {
37
+ .action-show {
38
+ @extend .link-secondary;
39
+ }
40
+
29
41
  .action-edit {
30
42
  @extend .btn-secondary;
31
43
  }
@@ -3,5 +3,7 @@
3
3
  module AdministrateBootstrapTheme
4
4
  class Engine < ::Rails::Engine
5
5
  isolate_namespace AdministrateBootstrapTheme
6
+
7
+ config.assets.paths << File.expand_path('../../node_modules', __dir__)
6
8
  end
7
9
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AdministrateBootstrapTheme
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.9'
5
5
  end
@@ -0,0 +1,141 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap (v5.0.0-beta3): alert.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ import {
9
+ defineJQueryPlugin,
10
+ emulateTransitionEnd,
11
+ getElementFromSelector,
12
+ getTransitionDurationFromElement
13
+ } from './util/index'
14
+ import Data from './dom/data'
15
+ import EventHandler from './dom/event-handler'
16
+ import BaseComponent from './base-component'
17
+
18
+ /**
19
+ * ------------------------------------------------------------------------
20
+ * Constants
21
+ * ------------------------------------------------------------------------
22
+ */
23
+
24
+ const NAME = 'alert'
25
+ const DATA_KEY = 'bs.alert'
26
+ const EVENT_KEY = `.${DATA_KEY}`
27
+ const DATA_API_KEY = '.data-api'
28
+
29
+ const SELECTOR_DISMISS = '[data-bs-dismiss="alert"]'
30
+
31
+ const EVENT_CLOSE = `close${EVENT_KEY}`
32
+ const EVENT_CLOSED = `closed${EVENT_KEY}`
33
+ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
34
+
35
+ const CLASS_NAME_ALERT = 'alert'
36
+ const CLASS_NAME_FADE = 'fade'
37
+ const CLASS_NAME_SHOW = 'show'
38
+
39
+ /**
40
+ * ------------------------------------------------------------------------
41
+ * Class Definition
42
+ * ------------------------------------------------------------------------
43
+ */
44
+
45
+ class Alert extends BaseComponent {
46
+ // Getters
47
+
48
+ static get DATA_KEY() {
49
+ return DATA_KEY
50
+ }
51
+
52
+ // Public
53
+
54
+ close(element) {
55
+ const rootElement = element ? this._getRootElement(element) : this._element
56
+ const customEvent = this._triggerCloseEvent(rootElement)
57
+
58
+ if (customEvent === null || customEvent.defaultPrevented) {
59
+ return
60
+ }
61
+
62
+ this._removeElement(rootElement)
63
+ }
64
+
65
+ // Private
66
+
67
+ _getRootElement(element) {
68
+ return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)
69
+ }
70
+
71
+ _triggerCloseEvent(element) {
72
+ return EventHandler.trigger(element, EVENT_CLOSE)
73
+ }
74
+
75
+ _removeElement(element) {
76
+ element.classList.remove(CLASS_NAME_SHOW)
77
+
78
+ if (!element.classList.contains(CLASS_NAME_FADE)) {
79
+ this._destroyElement(element)
80
+ return
81
+ }
82
+
83
+ const transitionDuration = getTransitionDurationFromElement(element)
84
+
85
+ EventHandler.one(element, 'transitionend', () => this._destroyElement(element))
86
+ emulateTransitionEnd(element, transitionDuration)
87
+ }
88
+
89
+ _destroyElement(element) {
90
+ if (element.parentNode) {
91
+ element.parentNode.removeChild(element)
92
+ }
93
+
94
+ EventHandler.trigger(element, EVENT_CLOSED)
95
+ }
96
+
97
+ // Static
98
+
99
+ static jQueryInterface(config) {
100
+ return this.each(function () {
101
+ let data = Data.get(this, DATA_KEY)
102
+
103
+ if (!data) {
104
+ data = new Alert(this)
105
+ }
106
+
107
+ if (config === 'close') {
108
+ data[config](this)
109
+ }
110
+ })
111
+ }
112
+
113
+ static handleDismiss(alertInstance) {
114
+ return function (event) {
115
+ if (event) {
116
+ event.preventDefault()
117
+ }
118
+
119
+ alertInstance.close(this)
120
+ }
121
+ }
122
+ }
123
+
124
+ /**
125
+ * ------------------------------------------------------------------------
126
+ * Data Api implementation
127
+ * ------------------------------------------------------------------------
128
+ */
129
+
130
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))
131
+
132
+ /**
133
+ * ------------------------------------------------------------------------
134
+ * jQuery
135
+ * ------------------------------------------------------------------------
136
+ * add .Alert to jQuery only if jQuery is present
137
+ */
138
+
139
+ defineJQueryPlugin(NAME, Alert)
140
+
141
+ export default Alert