patternfly-sass 0.0.0.pre.semantically.pre.released

Sign up to get free protection for your applications and to get access to all the features.
Files changed (361) hide show
  1. checksums.yaml +7 -0
  2. data/CODE_OF_CONDUCT.md +4 -0
  3. data/LICENSE.txt +205 -0
  4. data/OPEN_SOURCE_LICENCES.txt +1366 -0
  5. data/QUICKSTART.md +210 -0
  6. data/README.md +438 -0
  7. data/dist/fonts/FontAwesome.otf +0 -0
  8. data/dist/fonts/OpenSans-Bold-webfont.eot +0 -0
  9. data/dist/fonts/OpenSans-Bold-webfont.svg +19028 -0
  10. data/dist/fonts/OpenSans-Bold-webfont.ttf +0 -0
  11. data/dist/fonts/OpenSans-Bold-webfont.woff +0 -0
  12. data/dist/fonts/OpenSans-Bold-webfont.woff2 +0 -0
  13. data/dist/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  14. data/dist/fonts/OpenSans-BoldItalic-webfont.svg +19036 -0
  15. data/dist/fonts/OpenSans-BoldItalic-webfont.ttf +0 -0
  16. data/dist/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  17. data/dist/fonts/OpenSans-BoldItalic-webfont.woff2 +0 -0
  18. data/dist/fonts/OpenSans-ExtraBold-webfont.eot +0 -0
  19. data/dist/fonts/OpenSans-ExtraBold-webfont.svg +19030 -0
  20. data/dist/fonts/OpenSans-ExtraBold-webfont.ttf +0 -0
  21. data/dist/fonts/OpenSans-ExtraBold-webfont.woff +0 -0
  22. data/dist/fonts/OpenSans-ExtraBold-webfont.woff2 +0 -0
  23. data/dist/fonts/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
  24. data/dist/fonts/OpenSans-ExtraBoldItalic-webfont.svg +19036 -0
  25. data/dist/fonts/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
  26. data/dist/fonts/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
  27. data/dist/fonts/OpenSans-ExtraBoldItalic-webfont.woff2 +0 -0
  28. data/dist/fonts/OpenSans-Italic-webfont.eot +0 -0
  29. data/dist/fonts/OpenSans-Italic-webfont.svg +19043 -0
  30. data/dist/fonts/OpenSans-Italic-webfont.ttf +0 -0
  31. data/dist/fonts/OpenSans-Italic-webfont.woff +0 -0
  32. data/dist/fonts/OpenSans-Italic-webfont.woff2 +0 -0
  33. data/dist/fonts/OpenSans-Light-webfont.eot +0 -0
  34. data/dist/fonts/OpenSans-Light-webfont.svg +19026 -0
  35. data/dist/fonts/OpenSans-Light-webfont.ttf +0 -0
  36. data/dist/fonts/OpenSans-Light-webfont.woff +0 -0
  37. data/dist/fonts/OpenSans-Light-webfont.woff2 +0 -0
  38. data/dist/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  39. data/dist/fonts/OpenSans-LightItalic-webfont.svg +19039 -0
  40. data/dist/fonts/OpenSans-LightItalic-webfont.ttf +0 -0
  41. data/dist/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  42. data/dist/fonts/OpenSans-LightItalic-webfont.woff2 +0 -0
  43. data/dist/fonts/OpenSans-Regular-webfont.eot +0 -0
  44. data/dist/fonts/OpenSans-Regular-webfont.svg +19030 -0
  45. data/dist/fonts/OpenSans-Regular-webfont.ttf +0 -0
  46. data/dist/fonts/OpenSans-Regular-webfont.woff +0 -0
  47. data/dist/fonts/OpenSans-Regular-webfont.woff2 +0 -0
  48. data/dist/fonts/OpenSans-Semibold-webfont.eot +0 -0
  49. data/dist/fonts/OpenSans-Semibold-webfont.svg +19030 -0
  50. data/dist/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  51. data/dist/fonts/OpenSans-Semibold-webfont.woff +0 -0
  52. data/dist/fonts/OpenSans-Semibold-webfont.woff2 +0 -0
  53. data/dist/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  54. data/dist/fonts/OpenSans-SemiboldItalic-webfont.svg +19043 -0
  55. data/dist/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  56. data/dist/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  57. data/dist/fonts/OpenSans-SemiboldItalic-webfont.woff2 +0 -0
  58. data/dist/fonts/PatternFlyIcons-webfont.eot +0 -0
  59. data/dist/fonts/PatternFlyIcons-webfont.svg +140 -0
  60. data/dist/fonts/PatternFlyIcons-webfont.ttf +0 -0
  61. data/dist/fonts/PatternFlyIcons-webfont.woff +0 -0
  62. data/dist/fonts/fontawesome-webfont.eot +0 -0
  63. data/dist/fonts/fontawesome-webfont.svg +2671 -0
  64. data/dist/fonts/fontawesome-webfont.ttf +0 -0
  65. data/dist/fonts/fontawesome-webfont.woff +0 -0
  66. data/dist/fonts/fontawesome-webfont.woff2 +0 -0
  67. data/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  68. data/dist/fonts/glyphicons-halflings-regular.svg +288 -0
  69. data/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  70. data/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  71. data/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  72. data/dist/img/Logo_Horizontal_Reversed.svg +49 -0
  73. data/dist/img/OpenShift-Logo-NoText.svg +51 -0
  74. data/dist/img/OpenShift-Logo-Text.svg +95 -0
  75. data/dist/img/OpenShift-logo.svg +69 -0
  76. data/dist/img/RH_Atomic-Logo-NoText.svg +53 -0
  77. data/dist/img/RH_Atomic-Logo-Text.svg +91 -0
  78. data/dist/img/RH_atomic.svg +88 -0
  79. data/dist/img/apple-touch-icon-precomposed-114.png +0 -0
  80. data/dist/img/apple-touch-icon-precomposed-144.png +0 -0
  81. data/dist/img/apple-touch-icon-precomposed-152.png +0 -0
  82. data/dist/img/apple-touch-icon-precomposed-180.png +0 -0
  83. data/dist/img/apple-touch-icon-precomposed-57.png +0 -0
  84. data/dist/img/apple-touch-icon-precomposed-72.png +0 -0
  85. data/dist/img/apple-touch-icon-precomposed-76.png +0 -0
  86. data/dist/img/bg-login-2.png +0 -0
  87. data/dist/img/bg-login.jpg +0 -0
  88. data/dist/img/bg-login.png +0 -0
  89. data/dist/img/bg-modal-about-pf.png +0 -0
  90. data/dist/img/bg-navbar-pf-alt.svg +9 -0
  91. data/dist/img/brand-alt.svg +88 -0
  92. data/dist/img/brand.svg +87 -0
  93. data/dist/img/dropbox-logo.svg +15 -0
  94. data/dist/img/facebook-logo.svg +12 -0
  95. data/dist/img/favicon.ico +0 -0
  96. data/dist/img/fedora-logo.png +0 -0
  97. data/dist/img/git-logo.svg +21 -0
  98. data/dist/img/github-logo.svg +17 -0
  99. data/dist/img/gmail.svg +23 -0
  100. data/dist/img/google-calendar.svg +26 -0
  101. data/dist/img/google-drive.svg +17 -0
  102. data/dist/img/google-logo.svg +19 -0
  103. data/dist/img/instagram-logo.png +0 -0
  104. data/dist/img/kubernetes-Logo.svg +60 -0
  105. data/dist/img/kubernetes.svg +8 -0
  106. data/dist/img/linkedin-logo.svg +13 -0
  107. data/dist/img/logo-alt.svg +18 -0
  108. data/dist/img/logo.svg +22 -0
  109. data/dist/img/open-id-logo.svg +19 -0
  110. data/dist/img/rcue-full.svg +221 -0
  111. data/dist/img/rcue.svg +92 -0
  112. data/dist/img/redhat_reverse.png +0 -0
  113. data/dist/img/skype-logo.svg +23 -0
  114. data/dist/img/spinner-inverse-lg.gif +0 -0
  115. data/dist/img/spinner-inverse-sm.gif +0 -0
  116. data/dist/img/spinner-inverse-xs.gif +0 -0
  117. data/dist/img/spinner-inverse.gif +0 -0
  118. data/dist/img/spinner-lg.gif +0 -0
  119. data/dist/img/spinner-sm.gif +0 -0
  120. data/dist/img/spinner-xs.gif +0 -0
  121. data/dist/img/spinner.gif +0 -0
  122. data/dist/img/stack-exchange-logo.svg +21 -0
  123. data/dist/img/twitter-logo.svg +19 -0
  124. data/dist/js/patternfly-functions-base.js +7 -0
  125. data/dist/js/patternfly-functions-charts.js +13 -0
  126. data/dist/js/patternfly-functions-colors.js +8 -0
  127. data/dist/js/patternfly-functions-count-chars.js +59 -0
  128. data/dist/js/patternfly-functions-data-tables.js +149 -0
  129. data/dist/js/patternfly-functions-fixed-heights.js +109 -0
  130. data/dist/js/patternfly-functions-list.js +79 -0
  131. data/dist/js/patternfly-functions-navigation.js +113 -0
  132. data/dist/js/patternfly-functions-popovers.js +37 -0
  133. data/dist/js/patternfly-functions-sidebar.js +31 -0
  134. data/dist/js/patternfly-functions-tree-grid.js +82 -0
  135. data/dist/js/patternfly-functions-vertical-nav.js +610 -0
  136. data/dist/js/patternfly-functions.js +1307 -0
  137. data/dist/js/patternfly-functions.min.js +1 -0
  138. data/dist/js/patternfly-settings-base.d.ts +9 -0
  139. data/dist/js/patternfly-settings-base.js +16 -0
  140. data/dist/js/patternfly-settings-charts.d.ts +92 -0
  141. data/dist/js/patternfly-settings-charts.js +449 -0
  142. data/dist/js/patternfly-settings-colors.d.ts +88 -0
  143. data/dist/js/patternfly-settings-colors.js +91 -0
  144. data/dist/js/patternfly-settings.d.ts +3 -0
  145. data/dist/js/patternfly-settings.js +558 -0
  146. data/dist/js/patternfly-settings.min.js +1 -0
  147. data/dist/js/patternfly.dataTables.pfColVis.js +151 -0
  148. data/dist/js/patternfly.dataTables.pfEmpty.js +253 -0
  149. data/dist/js/patternfly.dataTables.pfEmpty.min.js +1 -0
  150. data/dist/js/patternfly.dataTables.pfFilter.js +429 -0
  151. data/dist/js/patternfly.dataTables.pfFilter.min.js +1 -0
  152. data/dist/js/patternfly.dataTables.pfPagination.js +401 -0
  153. data/dist/js/patternfly.dataTables.pfPagination.min.js +1 -0
  154. data/dist/js/patternfly.dataTables.pfResize.js +214 -0
  155. data/dist/js/patternfly.dataTables.pfResize.min.js +1 -0
  156. data/dist/js/patternfly.dataTables.pfSelect.js +281 -0
  157. data/dist/js/patternfly.dataTables.pfSelect.min.js +1 -0
  158. data/dist/js/patternfly.js +1866 -0
  159. data/dist/js/patternfly.min.js +2 -0
  160. data/dist/sass/_patternfly-compass.scss +3 -0
  161. data/dist/sass/_patternfly-sprockets.scss +3 -0
  162. data/dist/sass/_patternfly.scss +147 -0
  163. data/dist/sass/patternfly/_about-modal.scss +44 -0
  164. data/dist/sass/patternfly/_accordion.scss +18 -0
  165. data/dist/sass/patternfly/_alerts.scss +44 -0
  166. data/dist/sass/patternfly/_application-launcher.scss +213 -0
  167. data/dist/sass/patternfly/_badges.scss +11 -0
  168. data/dist/sass/patternfly/_blank-slate.scss +52 -0
  169. data/dist/sass/patternfly/_bootstrap-combobox.scss +35 -0
  170. data/dist/sass/patternfly/_bootstrap-datepicker.scss +132 -0
  171. data/dist/sass/patternfly/_bootstrap-mixin-overrides.scss +33 -0
  172. data/dist/sass/patternfly/_bootstrap-select.scss +108 -0
  173. data/dist/sass/patternfly/_bootstrap-slider.scss +66 -0
  174. data/dist/sass/patternfly/_bootstrap-switch.scss +19 -0
  175. data/dist/sass/patternfly/_bootstrap-touchspin.scss +31 -0
  176. data/dist/sass/patternfly/_bootstrap-treeview.scss +89 -0
  177. data/dist/sass/patternfly/_breadcrumbs.scss +20 -0
  178. data/dist/sass/patternfly/_buttons.scss +50 -0
  179. data/dist/sass/patternfly/_card-view.scss +105 -0
  180. data/dist/sass/patternfly/_cards.scss +238 -0
  181. data/dist/sass/patternfly/_charts.scss +388 -0
  182. data/dist/sass/patternfly/_close.scss +16 -0
  183. data/dist/sass/patternfly/_color-variables.scss +85 -0
  184. data/dist/sass/patternfly/_context-selector.scss +125 -0
  185. data/dist/sass/patternfly/_datatables.scss +186 -0
  186. data/dist/sass/patternfly/_date-and-time.scss +35 -0
  187. data/dist/sass/patternfly/_dropdowns.scss +235 -0
  188. data/dist/sass/patternfly/_experimental-features.scss +48 -0
  189. data/dist/sass/patternfly/_filter.scss +42 -0
  190. data/dist/sass/patternfly/_fonts.scss +124 -0
  191. data/dist/sass/patternfly/_footer.scss +19 -0
  192. data/dist/sass/patternfly/_forms.scss +192 -0
  193. data/dist/sass/patternfly/_icons.scss +371 -0
  194. data/dist/sass/patternfly/_infotip.scss +145 -0
  195. data/dist/sass/patternfly/_labels.scss +17 -0
  196. data/dist/sass/patternfly/_layouts.scss +140 -0
  197. data/dist/sass/patternfly/_links.scss +5 -0
  198. data/dist/sass/patternfly/_list-group.scss +23 -0
  199. data/dist/sass/patternfly/_list-pf.scss +178 -0
  200. data/dist/sass/patternfly/_list-view-dnd.scss +53 -0
  201. data/dist/sass/patternfly/_list-view.scss +390 -0
  202. data/dist/sass/patternfly/_login.scss +341 -0
  203. data/dist/sass/patternfly/_mixins.scss +81 -0
  204. data/dist/sass/patternfly/_modals.scss +49 -0
  205. data/dist/sass/patternfly/_nav-vertical-alt.scss +168 -0
  206. data/dist/sass/patternfly/_navbar-alt.scss +141 -0
  207. data/dist/sass/patternfly/_navbar-vertical.scss +168 -0
  208. data/dist/sass/patternfly/_navbar.scss +579 -0
  209. data/dist/sass/patternfly/_notifications-drawer.scss +250 -0
  210. data/dist/sass/patternfly/_pager.scss +68 -0
  211. data/dist/sass/patternfly/_pagination.scss +121 -0
  212. data/dist/sass/patternfly/_panels.scss +134 -0
  213. data/dist/sass/patternfly/_popovers.scss +52 -0
  214. data/dist/sass/patternfly/_progress-bars.scss +121 -0
  215. data/dist/sass/patternfly/_rcue-about-modal.scss +45 -0
  216. data/dist/sass/patternfly/_rcue-additions.scss +11 -0
  217. data/dist/sass/patternfly/_rcue-login.scss +75 -0
  218. data/dist/sass/patternfly/_rcue-variables.scss +57 -0
  219. data/dist/sass/patternfly/_rcue.scss +6 -0
  220. data/dist/sass/patternfly/_search.scss +64 -0
  221. data/dist/sass/patternfly/_sidebar.scss +176 -0
  222. data/dist/sass/patternfly/_skip-to-content.scss +12 -0
  223. data/dist/sass/patternfly/_spinner.scss +72 -0
  224. data/dist/sass/patternfly/_syntax-highlighting.scss +36 -0
  225. data/dist/sass/patternfly/_table-view.scss +188 -0
  226. data/dist/sass/patternfly/_tables.scss +90 -0
  227. data/dist/sass/patternfly/_tabs.scss +118 -0
  228. data/dist/sass/patternfly/_time-picker.scss +98 -0
  229. data/dist/sass/patternfly/_toast.scss +75 -0
  230. data/dist/sass/patternfly/_toolbar.scss +190 -0
  231. data/dist/sass/patternfly/_tooltip.scss +15 -0
  232. data/dist/sass/patternfly/_tree-list-view.scss +83 -0
  233. data/dist/sass/patternfly/_type.scss +29 -0
  234. data/dist/sass/patternfly/_variables.scss +595 -0
  235. data/dist/sass/patternfly/_vertical-nav.scss +944 -0
  236. data/dist/sass/patternfly/_wizard.scss +665 -0
  237. data/dist/sass/patternfly/dependencies/bootstrap-combobox/combobox.scss +57 -0
  238. data/dist/sass/patternfly/dependencies/bootstrap-datepicker/datepicker.scss +242 -0
  239. data/dist/sass/patternfly/dependencies/bootstrap-datepicker/datepicker3.scss +257 -0
  240. data/dist/sass/patternfly/dependencies/bootstrap-select/bootstrap-select.scss +389 -0
  241. data/dist/sass/patternfly/dependencies/bootstrap-select/variables.scss +9 -0
  242. data/dist/sass/patternfly/dependencies/bootstrap-slider/_mixins.scss +25 -0
  243. data/dist/sass/patternfly/dependencies/bootstrap-slider/_rules.scss +246 -0
  244. data/dist/sass/patternfly/dependencies/bootstrap-slider/_variables.scss +28 -0
  245. data/dist/sass/patternfly/dependencies/bootstrap-slider/bootstrap-slider.scss +42 -0
  246. data/dist/sass/patternfly/dependencies/bootstrap-switch/bootstrap-switch.scss +195 -0
  247. data/dist/sass/patternfly/dependencies/bootstrap-switch/build.scss +3 -0
  248. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/alerts.scss +14 -0
  249. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/background-variant.scss +9 -0
  250. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/border-radius.scss +18 -0
  251. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/buttons.scss +68 -0
  252. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/center-block.scss +7 -0
  253. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/clearfix.scss +22 -0
  254. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/forms.scss +85 -0
  255. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/gradients.scss +59 -0
  256. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/grid-framework.scss +98 -0
  257. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/grid.scss +122 -0
  258. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/hide-text.scss +21 -0
  259. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/image.scss +33 -0
  260. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/labels.scss +12 -0
  261. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/list-group.scss +29 -0
  262. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/nav-divider.scss +10 -0
  263. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/nav-vertical-align.scss +9 -0
  264. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/opacity.scss +8 -0
  265. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/pagination.scss +23 -0
  266. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/panels.scss +24 -0
  267. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/progress-bar.scss +10 -0
  268. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/reset-filter.scss +8 -0
  269. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/reset-text.scss +18 -0
  270. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/resize.scss +6 -0
  271. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/responsive-visibility.scss +15 -0
  272. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/size.scss +10 -0
  273. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/tab-focus.scss +9 -0
  274. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/table-row.scss +28 -0
  275. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/text-emphasis.scss +9 -0
  276. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/text-overflow.scss +8 -0
  277. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins/vendor-prefixes.scss +227 -0
  278. data/dist/sass/patternfly/dependencies/bootstrap-switch/mixins.scss +40 -0
  279. data/dist/sass/patternfly/dependencies/bootstrap-switch/variables.scss +862 -0
  280. data/dist/sass/patternfly/dependencies/bootstrap-touchspin/_jquery.bootstrap-touchspin.scss +45 -0
  281. data/dist/sass/patternfly/dependencies/c3/_c3.scss +178 -0
  282. data/dist/sass/patternfly/dependencies/eonasdan-bootstrap-datetimepicker/_bootstrap-datetimepicker.scss +344 -0
  283. data/dist/sass/patternfly/dependencies/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker-build.scss +16 -0
  284. data/dist/sass/rcue/_about-modal.scss +44 -0
  285. data/dist/sass/rcue/_accordion.scss +18 -0
  286. data/dist/sass/rcue/_alerts.scss +44 -0
  287. data/dist/sass/rcue/_badges.scss +11 -0
  288. data/dist/sass/rcue/_blank-slate.scss +52 -0
  289. data/dist/sass/rcue/_bootstrap-combobox.scss +35 -0
  290. data/dist/sass/rcue/_bootstrap-datepicker.scss +132 -0
  291. data/dist/sass/rcue/_bootstrap-mixin-overrides.scss +33 -0
  292. data/dist/sass/rcue/_bootstrap-select.scss +108 -0
  293. data/dist/sass/rcue/_bootstrap-slider.scss +66 -0
  294. data/dist/sass/rcue/_bootstrap-switch.scss +19 -0
  295. data/dist/sass/rcue/_bootstrap-touchspin.scss +31 -0
  296. data/dist/sass/rcue/_bootstrap-treeview.scss +89 -0
  297. data/dist/sass/rcue/_breadcrumbs.scss +20 -0
  298. data/dist/sass/rcue/_buttons.scss +50 -0
  299. data/dist/sass/rcue/_card-view.scss +105 -0
  300. data/dist/sass/rcue/_cards.scss +238 -0
  301. data/dist/sass/rcue/_charts.scss +388 -0
  302. data/dist/sass/rcue/_close.scss +16 -0
  303. data/dist/sass/rcue/_color-variables.scss +85 -0
  304. data/dist/sass/rcue/_context-selector.scss +125 -0
  305. data/dist/sass/rcue/_datatables.scss +186 -0
  306. data/dist/sass/rcue/_date-and-time.scss +35 -0
  307. data/dist/sass/rcue/_dropdowns.scss +235 -0
  308. data/dist/sass/rcue/_experimental-features.scss +48 -0
  309. data/dist/sass/rcue/_filter.scss +42 -0
  310. data/dist/sass/rcue/_fonts.scss +124 -0
  311. data/dist/sass/rcue/_footer.scss +19 -0
  312. data/dist/sass/rcue/_forms.scss +192 -0
  313. data/dist/sass/rcue/_icons.scss +371 -0
  314. data/dist/sass/rcue/_infotip.scss +145 -0
  315. data/dist/sass/rcue/_labels.scss +17 -0
  316. data/dist/sass/rcue/_layouts.scss +140 -0
  317. data/dist/sass/rcue/_links.scss +5 -0
  318. data/dist/sass/rcue/_list-group.scss +23 -0
  319. data/dist/sass/rcue/_list-pf.scss +178 -0
  320. data/dist/sass/rcue/_list-view-dnd.scss +53 -0
  321. data/dist/sass/rcue/_list-view.scss +390 -0
  322. data/dist/sass/rcue/_login.scss +341 -0
  323. data/dist/sass/rcue/_mixins.scss +81 -0
  324. data/dist/sass/rcue/_modals.scss +49 -0
  325. data/dist/sass/rcue/_nav-vertical-alt.scss +168 -0
  326. data/dist/sass/rcue/_navbar-alt.scss +141 -0
  327. data/dist/sass/rcue/_navbar-vertical.scss +168 -0
  328. data/dist/sass/rcue/_navbar.scss +579 -0
  329. data/dist/sass/rcue/_notifications-drawer.scss +250 -0
  330. data/dist/sass/rcue/_pager.scss +68 -0
  331. data/dist/sass/rcue/_pagination.scss +121 -0
  332. data/dist/sass/rcue/_panels.scss +134 -0
  333. data/dist/sass/rcue/_patternfly-additions.scss +76 -0
  334. data/dist/sass/rcue/_patternfly.scss +31 -0
  335. data/dist/sass/rcue/_popovers.scss +52 -0
  336. data/dist/sass/rcue/_progress-bars.scss +121 -0
  337. data/dist/sass/rcue/_rcue-about-modal.scss +45 -0
  338. data/dist/sass/rcue/_rcue-login.scss +75 -0
  339. data/dist/sass/rcue/_rcue-variables.scss +57 -0
  340. data/dist/sass/rcue/_search.scss +64 -0
  341. data/dist/sass/rcue/_sidebar.scss +176 -0
  342. data/dist/sass/rcue/_skip-to-content.scss +12 -0
  343. data/dist/sass/rcue/_spinner.scss +72 -0
  344. data/dist/sass/rcue/_syntax-highlighting.scss +36 -0
  345. data/dist/sass/rcue/_table-view.scss +188 -0
  346. data/dist/sass/rcue/_tables.scss +90 -0
  347. data/dist/sass/rcue/_tabs.scss +118 -0
  348. data/dist/sass/rcue/_time-picker.scss +98 -0
  349. data/dist/sass/rcue/_toast.scss +75 -0
  350. data/dist/sass/rcue/_toolbar.scss +190 -0
  351. data/dist/sass/rcue/_tooltip.scss +15 -0
  352. data/dist/sass/rcue/_tree-list-view.scss +83 -0
  353. data/dist/sass/rcue/_type.scss +29 -0
  354. data/dist/sass/rcue/_variables.scss +595 -0
  355. data/dist/sass/rcue/_vertical-nav.scss +944 -0
  356. data/dist/sass/rcue/_wizard.scss +665 -0
  357. data/lib/patternfly-sass/engine.rb +11 -0
  358. data/lib/patternfly-sass/version.rb +3 -0
  359. data/lib/patternfly-sass.rb +92 -0
  360. data/patternfly-sass.gemspec +31 -0
  361. metadata +445 -0
@@ -0,0 +1,149 @@
1
+ // Util: DataTables Settings
2
+ (function ($) {
3
+ 'use strict';
4
+ if ($.fn.dataTableExt) {
5
+ /* Set the defaults for DataTables initialisation */
6
+ $.extend(true, $.fn.dataTable.defaults, {
7
+ "bDestroy": true,
8
+ "bAutoWidth": false,
9
+ "iDisplayLength": 20,
10
+ "sDom":
11
+ "<'dataTables_header' f i r >" +
12
+ "<'table-responsive' t >" +
13
+ "<'dataTables_footer' p >",
14
+ "oLanguage": {
15
+ "sInfo": "Showing <b>_START_</b> to <b>_END_</b> of <b>_TOTAL_</b> Items",
16
+ "sInfoFiltered" : "(of <b>_MAX_</b>)",
17
+ "sInfoEmpty" : "Showing <b>0</b> Results",
18
+ "sZeroRecords":
19
+ "<p>Suggestions</p>" +
20
+ "<ul>" +
21
+ "<li>Check the javascript regular expression syntax of the search term.</li>" +
22
+ "<li>Check that the correct menu option is chosen (token ID vs. user ID).</li>" +
23
+ "<li>Use wildcards (* to match 0 or more characters, + to match 1 or more characters, ? to match 0 or 1 character).</li>" +
24
+ "<li>Clear the search field, then click Search to return to the 20 most recent records.</li>" +
25
+ "</ul>",
26
+ "sSearch": ""
27
+ },
28
+ "sPaginationType": "bootstrap_input",
29
+ "oSearch": {
30
+ "sSearch": "",
31
+ "bRegex": true,
32
+ "bSmart": false
33
+ }
34
+ });
35
+
36
+ /* Default class modification */
37
+ $.extend($.fn.dataTableExt.oStdClasses, {
38
+ "sWrapper": "dataTables_wrapper"
39
+ });
40
+
41
+ /* API method to get paging information */
42
+ $.fn.dataTableExt.oApi.fnPagingInfo = function (oSettings) {
43
+ return {
44
+ "iStart": oSettings._iDisplayStart,
45
+ "iEnd": oSettings.fnDisplayEnd(),
46
+ "iLength": oSettings._iDisplayLength,
47
+ "iTotal": oSettings.fnRecordsTotal(),
48
+ "iFilteredTotal": oSettings.fnRecordsDisplay(),
49
+ "iPage": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength),
50
+ "iTotalPages": oSettings._iDisplayLength === -1 ? 0 : Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)
51
+ };
52
+ };
53
+
54
+ /* Combination of Bootstrap + Input Text style pagination control */
55
+ $.extend($.fn.dataTableExt.oPagination, {
56
+ "bootstrap_input": {
57
+ "fnInit": function (oSettings, nPaging, fnDraw) {
58
+ var fnClickHandler = function (e) {
59
+ e.preventDefault();
60
+ if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
61
+ fnDraw(oSettings);
62
+ }
63
+ },
64
+ els,
65
+ nInput;
66
+
67
+ $(nPaging).append(
68
+ '<ul class="pagination">' +
69
+ ' <li class="first disabled"><span class="i fa fa-angle-double-left"></span></li>' +
70
+ ' <li class="prev disabled"><span class="i fa fa-angle-left"></span></li>' +
71
+ '</ul>' +
72
+ '<div class="pagination-input">' +
73
+ ' <input type="text" class="paginate_input">' +
74
+ ' <span class="paginate_of">of <b>3</b></span>' +
75
+ '</div>' +
76
+ '<ul class="pagination">' +
77
+ ' <li class="next disabled"><span class="i fa fa-angle-right"></span></li>' +
78
+ ' <li class="last disabled"><span class="i fa fa-angle-double-right"></span></li>' +
79
+ '</ul>'
80
+ );
81
+
82
+ els = $('li', nPaging);
83
+ $(els[0]).bind('click.DT', { action: "first" }, fnClickHandler);
84
+ $(els[1]).bind('click.DT', { action: "previous" }, fnClickHandler);
85
+ $(els[2]).bind('click.DT', { action: "next" }, fnClickHandler);
86
+ $(els[3]).bind('click.DT', { action: "last" }, fnClickHandler);
87
+
88
+ nInput = $('input', nPaging);
89
+ $(nInput).keyup(function (e) {
90
+ var iNewStart;
91
+ if (e.which === 38 || e.which === 39) {
92
+ this.value += 1;
93
+ } else if ((e.which === 37 || e.which === 40) && this.value > 1) {
94
+ this.value -= 1;
95
+ }
96
+
97
+ if (this.value === "" || !this.value.match(/[0-9]/)) {
98
+ /* Nothing entered or non-numeric character */
99
+ return;
100
+ }
101
+
102
+ iNewStart = oSettings._iDisplayLength * (this.value - 1);
103
+ if (iNewStart >= oSettings.fnRecordsDisplay()) {
104
+ /* Display overrun */
105
+ oSettings._iDisplayStart = (Math.ceil((oSettings.fnRecordsDisplay() - 1) /
106
+ oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength;
107
+ fnDraw(oSettings);
108
+ return;
109
+ }
110
+
111
+ oSettings._iDisplayStart = iNewStart;
112
+ fnDraw(oSettings);
113
+ });
114
+ },
115
+
116
+ "fnUpdate": function (oSettings, fnDraw) {
117
+ var oPaging = oSettings.oInstance.fnPagingInfo(),
118
+ an = oSettings.aanFeatures.p,
119
+ ien = an.length,
120
+ iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength),
121
+ iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1,
122
+ i;
123
+
124
+ for (i = 0; i < ien; i += 1) {
125
+ $('.paginate_input', an[i]).val(iCurrentPage)
126
+ .siblings('.paginate_of').find('b').html(iPages);
127
+
128
+ // Add / remove disabled classes from the static elements
129
+ if (oPaging.iPage === 0) {
130
+ $('li.first', an[i]).addClass('disabled');
131
+ $('li.prev', an[i]).addClass('disabled');
132
+ } else {
133
+ $('li.first', an[i]).removeClass('disabled');
134
+ $('li.prev', an[i]).removeClass('disabled');
135
+ }
136
+
137
+ if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) {
138
+ $('li.next', an[i]).addClass('disabled');
139
+ $('li.last', an[i]).addClass('disabled');
140
+ } else {
141
+ $('li.next', an[i]).removeClass('disabled');
142
+ $('li.last', an[i]).removeClass('disabled');
143
+ }
144
+ }
145
+ }
146
+ }
147
+ });
148
+ }
149
+ }(jQuery));
@@ -0,0 +1,109 @@
1
+ // Util: PatternFly Collapse with fixed heights
2
+ // Update the max-height of collapse elements based on the parent container's height.
3
+ (function ($) {
4
+ 'use strict';
5
+
6
+ $.fn.initCollapseHeights = function (scrollSelector) {
7
+ var parentElement = this, setCollapseHeights, targetScrollSelector = scrollSelector;
8
+
9
+ setCollapseHeights = function () {
10
+ var height, openPanel, contentHeight, bodyHeight, overflowY = 'hidden';
11
+
12
+ height = parentElement.height();
13
+
14
+ // Close any open panel
15
+ openPanel = parentElement.find('.collapse.in');
16
+ if (openPanel && openPanel.length > 0) {
17
+ openPanel.removeClass('in');
18
+ }
19
+
20
+ // Determine the necessary height for the closed content
21
+ contentHeight = 0;
22
+ parentElement.children().each($.proxy(function (i, element) {
23
+ var $element = $(element);
24
+ contentHeight += $element.outerHeight(true);
25
+ }, parentElement)).end();
26
+
27
+ // Determine the height remaining for opened collapse panels
28
+ bodyHeight = height - contentHeight;
29
+
30
+ // Make sure we have enough height to be able to scroll the contents if necessary
31
+ if (bodyHeight < 25) {
32
+ bodyHeight = 25;
33
+
34
+ // Allow the parent to scroll so the child elements are accessible
35
+ overflowY = 'auto';
36
+ }
37
+
38
+ // Reopen the initially opened panel
39
+ if (openPanel && openPanel.length > 0) {
40
+ openPanel.addClass("in");
41
+ }
42
+
43
+ setTimeout(function () {
44
+ // Set the max-height for the collapse panels
45
+ parentElement.find('[data-toggle="collapse"]').each($.proxy(function (i, element) {
46
+ var $element, selector, $target, scrollElement, innerHeight = 0;
47
+ $element = $(element);
48
+
49
+ // Determine the selector to find the target
50
+ selector = $element.attr('data-target');
51
+ if (!selector) {
52
+ selector = $element.attr('href');
53
+ }
54
+
55
+ // Determine the scroll element (either the target or the child of the target based on the given selector)
56
+ $target = $(selector);
57
+ scrollElement = $target;
58
+ if (targetScrollSelector) {
59
+ scrollElement = $target.find(targetScrollSelector);
60
+ if (scrollElement.length === 1) {
61
+ innerHeight = 0;
62
+ $target.children().each($.proxy(function (j, sibling) {
63
+ var $sibling = $(sibling);
64
+ if (sibling !== scrollElement[0]) {
65
+ innerHeight += $sibling.outerHeight(true);
66
+ }
67
+ }, $target)).end();
68
+ bodyHeight -= innerHeight;
69
+ } else {
70
+ scrollElement = $target;
71
+ }
72
+ }
73
+ // Set the max-height and vertical scroll of the scroll element
74
+ scrollElement.css({'max-height': (bodyHeight - innerHeight) + 'px', 'overflow-y': 'auto'});
75
+ }, parentElement)).end();
76
+
77
+ parentElement.css({'overflow-y': overflowY});
78
+ }, 100);
79
+ };
80
+
81
+ setCollapseHeights();
82
+
83
+ // Update on window resizing
84
+ $(window).on('resize', setCollapseHeights);
85
+
86
+ };
87
+
88
+ $.fn.initFixedAccordion = function () {
89
+ var fixedAccordion = this, initOpen;
90
+
91
+ fixedAccordion.on('show.bs.collapse','.collapse', function (event) {
92
+ $(event.target.parentNode).addClass('panel-open');
93
+ });
94
+
95
+ fixedAccordion.on('hide.bs.collapse','.collapse', function (event) {
96
+ $(event.target.parentNode).removeClass('panel-open');
97
+ });
98
+
99
+ fixedAccordion.find('.panel').each(function (index, item) {
100
+ $(item).removeClass('panel-open');
101
+ });
102
+
103
+ initOpen = $(fixedAccordion.find('.collapse.in'))[0];
104
+ if (initOpen) {
105
+ $(initOpen.parentNode).addClass('panel-open');
106
+ }
107
+ };
108
+
109
+ }(jQuery));
@@ -0,0 +1,79 @@
1
+ // PatternFly pf-list
2
+ (function ($) {
3
+ 'use strict';
4
+
5
+ $.fn.pfList = function () {
6
+ function init (list) {
7
+ // Ensure the state of the expansion elements is consistent
8
+ list.find('[data-list=expansion], .list-pf-item, .list-pf-expansion').each(function (index, element) {
9
+ var $expansion = $(element),
10
+ $collapse = $expansion.find('.collapse').first(),
11
+ expanded = $collapse.hasClass('in');
12
+ updateChevron($expansion, expanded);
13
+ if ($expansion.hasClass('list-pf-item')) {
14
+ updateActive($expansion, expanded);
15
+ }
16
+ });
17
+ list.find('.list-pf-container').each(function (index, element) {
18
+ var $element = $(element);
19
+ // The toggle element is the element with the data-list=toggle attribute
20
+ // or the entire .list-pf-container as a fallback
21
+ var $toggles = $element.find('[data-list=toggle]');
22
+ $toggles.length || ($toggles = $element);
23
+ $toggles.on('keydown', function (event) {
24
+ if (event.keyCode === 13 || event.keyCode === 32) {
25
+ toggleCollapse(this);
26
+ event.stopPropagation();
27
+ event.preventDefault();
28
+ }
29
+ });
30
+ $toggles.on('click', function (event) {
31
+ toggleCollapse(this);
32
+ event.stopPropagation();
33
+ event.preventDefault();
34
+ });
35
+ });
36
+ }
37
+
38
+ function toggleCollapse (toggle) {
39
+ var $toggle, $expansion, $collapse, expanded, $listItem;
40
+ $toggle = $(toggle);
41
+ // Find the parent expansion of the toggle
42
+ $expansion = $toggle.parentsUntil('.list-pf', '[data-list=expansion]').first();
43
+ $expansion.length || ($expansion = $toggle.closest('.list-pf-item, .list-pf-expansion'));
44
+
45
+ // toggle the "in" class of its first .collapse child
46
+ $collapse = $expansion.find('.collapse').first();
47
+ $collapse.toggleClass('in');
48
+
49
+ // update the state of the expansion element
50
+ updateChevron($expansion, $collapse.hasClass('in'));
51
+ $listItem = $expansion.closest('.list-pf-item');
52
+ updateActive($listItem, $listItem.find('.collapse').first().hasClass('in'));
53
+ }
54
+
55
+ function updateActive ($listItem, expanded) {
56
+ // Find the closest .list-pf-item of the expansion, and set its "active" class
57
+ if (expanded) {
58
+ $listItem.addClass('active');
59
+ } else {
60
+ $listItem.removeClass('active');
61
+ }
62
+ }
63
+
64
+ function updateChevron ($expansion, expanded) {
65
+ var $chevron = $expansion.find('.list-pf-chevron .fa').first();
66
+ if (expanded) {
67
+ $chevron.removeClass('fa-angle-right');
68
+ $chevron.addClass('fa-angle-down');
69
+ } else {
70
+ $chevron.addClass('fa-angle-right');
71
+ $chevron.removeClass('fa-angle-down');
72
+ }
73
+ }
74
+
75
+ init(this);
76
+
77
+ return this;
78
+ };
79
+ }(jQuery));
@@ -0,0 +1,113 @@
1
+ // Util: PatternFly Collapsible Left Hand Navigation
2
+ // Must have navbar-toggle in navbar-pf-alt for expand/collapse
3
+ (function ($) {
4
+
5
+ 'use strict';
6
+
7
+ $.fn.navigation = function () {
8
+
9
+ var navElement = $('.layout-pf-alt-fixed .nav-pf-vertical-alt'),
10
+ bodyContentElement = $('.container-pf-alt-nav-pf-vertical-alt'),
11
+ toggleNavBarButton = $('.navbar-toggle'),
12
+ explicitCollapse = false,
13
+ checkNavState = function () {
14
+ var width = $(window).width();
15
+
16
+ //Always remove the hidden & peek class
17
+ navElement.removeClass('hidden show-mobile-nav collapsed');
18
+
19
+ //Set the body class back to the default
20
+ bodyContentElement.removeClass('collapsed-nav hidden-nav');
21
+
22
+ // Check to see if the nav needs to collapse
23
+ if (width < $.pfBreakpoints.desktop || explicitCollapse) {
24
+ navElement.addClass('collapsed');
25
+ bodyContentElement.addClass('collapsed-nav');
26
+ }
27
+
28
+ // Check to see if we need to move down to the mobile state
29
+ if (width < $.pfBreakpoints.tablet) {
30
+ //Set the nav to being hidden
31
+ navElement.addClass('hidden');
32
+
33
+ //Make sure this is expanded
34
+ navElement.removeClass('collapsed');
35
+
36
+ //Set the body class to the correct state
37
+ bodyContentElement.removeClass('collapsed-nav');
38
+ bodyContentElement.addClass('hidden-nav');
39
+ }
40
+ },
41
+ collapseMenu = function () {
42
+ //Make sure this is expanded
43
+ navElement.addClass('collapsed');
44
+ //Set the body class to the correct state
45
+ bodyContentElement.addClass('collapsed-nav');
46
+
47
+ explicitCollapse = true;
48
+ },
49
+ enableTransitions = function () {
50
+ // enable transitions only when toggleNavBarButton is clicked or window is resized
51
+ $('html').addClass('transitions');
52
+ },
53
+ expandMenu = function () {
54
+ //Make sure this is expanded
55
+ navElement.removeClass('collapsed');
56
+ //Set the body class to the correct state
57
+ bodyContentElement.removeClass('collapsed-nav');
58
+
59
+ explicitCollapse = false;
60
+ },
61
+ bindMenuBehavior = function () {
62
+ toggleNavBarButton.on('click', function (e) {
63
+ var inMobileState = bodyContentElement.hasClass('hidden-nav');
64
+ enableTransitions();
65
+
66
+ if (inMobileState && navElement.hasClass('show-mobile-nav')) {
67
+ //In mobile state just need to hide the nav
68
+ navElement.removeClass('show-mobile-nav');
69
+ } else if (inMobileState) {
70
+ navElement.addClass('show-mobile-nav');
71
+ } else if (navElement.hasClass('collapsed')) {
72
+ expandMenu();
73
+ } else {
74
+ collapseMenu();
75
+ }
76
+ });
77
+ },
78
+ setTooltips = function () {
79
+ $('.nav-pf-vertical-alt [data-toggle="tooltip"]').tooltip({'container': 'body', 'delay': { 'show': '500', 'hide': '200' }});
80
+
81
+ $(".nav-pf-vertical-alt").on("show.bs.tooltip", function (e) {
82
+ return $(this).hasClass("collapsed");
83
+ });
84
+
85
+ },
86
+ init = function () {
87
+ //Set correct state on load
88
+ checkNavState();
89
+
90
+ // Bind Top level hamburger menu with menu behavior;
91
+ bindMenuBehavior();
92
+
93
+ //Set tooltips
94
+ setTooltips();
95
+ };
96
+
97
+ //Listen for the window resize event and collapse/hide as needed
98
+ $(window).on('resize', function () {
99
+ checkNavState();
100
+ enableTransitions();
101
+ });
102
+
103
+ init();
104
+
105
+ };
106
+
107
+ $(document).ready(function () {
108
+ if ($('.nav-pf-vertical-alt').length > 0) {
109
+ $.fn.navigation();
110
+ }
111
+ });
112
+
113
+ }(jQuery));
@@ -0,0 +1,37 @@
1
+ // Util: PatternFly Popovers
2
+ // Add data-close="true" to insert close X icon
3
+ (function ($) {
4
+ 'use strict';
5
+
6
+ $.fn.popovers = function () {
7
+ // Initialize
8
+ this.popover();
9
+
10
+ // Add close icons
11
+ this.filter('[data-close=true]').each(function (index, element) {
12
+ var $this = $(element),
13
+ title = $this.attr('data-original-title') + '<button type="button" class="close" aria-hidden="true"><span class="pficon pficon-close"></span></button>';
14
+
15
+ $this.attr('data-original-title', title);
16
+ });
17
+
18
+ // Bind Close Icon to Toggle Display
19
+ this.on('click', function (e) {
20
+ var $this = $(this),
21
+ $title = $this.next('.popover').find('.popover-title');
22
+
23
+ // Only if data-close is true add class "x" to title for right padding
24
+ $title.find('.close').parent('.popover-title').addClass('closable');
25
+
26
+ // Bind x icon to close popover
27
+ $title.find('.close').on('click', function () {
28
+ $this.popover('hide');
29
+ });
30
+
31
+ // Prevent href="#" page scroll to top
32
+ e.preventDefault();
33
+ });
34
+
35
+ return this;
36
+ };
37
+ }(jQuery));
@@ -0,0 +1,31 @@
1
+ // Util: PatternFly Sidebar
2
+ // Set height of sidebar-pf to height of document minus height of navbar-pf if not mobile
3
+ (function ($) {
4
+ 'use strict';
5
+ $.fn.sidebar = function () {
6
+ var documentHeight = 0,
7
+ navbarpfHeight = 0,
8
+ colHeight = 0;
9
+
10
+ if ($('.navbar-pf .navbar-toggle').is(':hidden')) {
11
+ documentHeight = $(document).height();
12
+ navbarpfHeight = $('.navbar-pf').outerHeight();
13
+ colHeight = documentHeight - navbarpfHeight;
14
+ }
15
+ $('.sidebar-pf').parent('.row').children('[class*="col-"]').css({"min-height" : colHeight});
16
+ };
17
+
18
+ $(document).ready(function () {
19
+ // Call sidebar() on ready if .sidebar-pf exists and .datatable does not exist
20
+ if ($('.sidebar-pf').length > 0 && $('.datatable').length === 0) {
21
+ $.fn.sidebar();
22
+ }
23
+ });
24
+
25
+ $(window).on('resize', function () {
26
+ // Call sidebar() on resize if .sidebar-pf exists
27
+ if ($('.sidebar-pf').length > 0) {
28
+ $.fn.sidebar();
29
+ }
30
+ });
31
+ }(jQuery));
@@ -0,0 +1,82 @@
1
+ // Util: PatternFly TreeGrid Tables
2
+ (function ($) {
3
+ 'use strict';
4
+
5
+ function getParent (rows, node) {
6
+ var parent = node.attr('data-parent');
7
+
8
+ if (typeof parent === "string") {
9
+ if (isNaN(parent)) {
10
+ parent = $(parent);
11
+ if (parent.length > 1) {
12
+ parent = rows.closest(parent);
13
+ }
14
+ } else {
15
+ parent = $(rows[parseInt(parent, 10)]);
16
+ }
17
+ return parent;
18
+ }
19
+ return undefined;
20
+ }
21
+
22
+ function renderItem (item, parent) {
23
+ if (parent) {
24
+ parent.find('.treegrid-node > span.expand-icon')
25
+ .toggleClass('fa-angle-right', parent.hasClass('collapsed'))
26
+ .toggleClass('fa-angle-down', !parent.hasClass('collapsed'));
27
+ item.toggleClass('hidden', parent.hasClass('collapsed'));
28
+ if (parent.hasClass('collapsed')) {
29
+ item.addClass('collapsed');
30
+ }
31
+ }
32
+ }
33
+
34
+ function reStripe (tree) {
35
+ tree.find('tbody > tr').removeClass('odd');
36
+ tree.find('tbody > tr:not(.hidden):odd').addClass('odd');
37
+ }
38
+
39
+ $.fn.treegrid = function (options) {
40
+ var i, rows, _this;
41
+ rows = this.find('tbody > tr');
42
+ _this = this;
43
+ $.each(rows, function () {
44
+ var node, parent;
45
+ node = $(this);
46
+ parent = getParent(rows, node);
47
+ // Append expand icon dummies
48
+ node.children('.treegrid-node').prepend('<span class="icon expand-icon fa"/>');
49
+
50
+ // Set up an event listener for the node
51
+ node.children('.treegrid-node').on('click', function (e) {
52
+ var icon = node.find('span.expand-icon');
53
+
54
+ if (options && typeof options.callback === 'function') {
55
+ options.callback(e);
56
+ }
57
+
58
+ if (icon.hasClass('fa-angle-right')) {
59
+ node.removeClass('collapsed');
60
+ }
61
+ if (icon.hasClass('fa-angle-down')) {
62
+ node.addClass('collapsed');
63
+ }
64
+ $.each(rows.slice(rows.index(node) + 1), function () {
65
+ renderItem($(this), getParent(rows, $(this)));
66
+ });
67
+ reStripe(_this);
68
+ });
69
+
70
+ if (parent) {
71
+ // Calculate indentation depth
72
+ i = parent.find('.treegrid-node > span.indent').length + 1;
73
+ for (; i > 0; i -= 1) {
74
+ node.children('.treegrid-node').prepend('<span class="indent"/>');
75
+ }
76
+ // Render expand/collapse icons
77
+ renderItem(node, parent);
78
+ }
79
+ });
80
+ reStripe(_this);
81
+ };
82
+ }(jQuery));