docks_theme_api 1.0.2
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 +15 -0
- data/.babelrc +4 -0
- data/.editorconfig +8 -0
- data/.eslintrc +115 -0
- data/.gitignore +24 -0
- data/.rubocop.yml +20 -0
- data/.travis.yml +16 -0
- data/Gemfile +4 -0
- data/README.md +5 -0
- data/Rakefile +3 -0
- data/assets/images/icons.svg +63 -0
- data/assets/scripts/coffeescript/pattern_library_helpers.coffee +8 -0
- data/assets/scripts/javascript/pattern_library_helpers.js +11 -0
- data/assets/scripts/pattern_library.js +10380 -0
- data/assets/scripts/pattern_library_demo.js +0 -0
- data/assets/styles/less/pattern-library-helpers.less +103 -0
- data/assets/styles/pattern-library-demo.css +1882 -0
- data/assets/styles/pattern-library.css +1882 -0
- data/assets/styles/sass/pattern-library-helpers.sass +90 -0
- data/assets/styles/scss/pattern-library-helpers.scss +99 -0
- data/assets/styles/stylus/pattern-library-helpers.styl +90 -0
- data/assets/templates/erb/demo.erb +26 -0
- data/assets/templates/erb/layouts/demo.erb +17 -0
- data/assets/templates/erb/layouts/pattern.erb +76 -0
- data/assets/templates/erb/partials/sidebar.erb +124 -0
- data/assets/templates/erb/partials/symbols/class.erb +1 -0
- data/assets/templates/erb/partials/symbols/demo.erb +40 -0
- data/assets/templates/erb/partials/symbols/factory.erb +70 -0
- data/assets/templates/erb/partials/symbols/function.erb +103 -0
- data/assets/templates/erb/partials/symbols/mixin.erb +62 -0
- data/assets/templates/erb/partials/symbols/variable.erb +59 -0
- data/assets/templates/erb/pattern.erb +102 -0
- data/assets/templates/haml/demo.haml +14 -0
- data/assets/templates/haml/layouts/demo.haml +6 -0
- data/assets/templates/haml/layouts/pattern.haml +38 -0
- data/assets/templates/haml/partials/sidebar.haml +68 -0
- data/assets/templates/haml/partials/symbols/class.haml +1 -0
- data/assets/templates/haml/partials/symbols/demo.haml +23 -0
- data/assets/templates/haml/partials/symbols/factory.haml +38 -0
- data/assets/templates/haml/partials/symbols/function.haml +54 -0
- data/assets/templates/haml/partials/symbols/mixin.haml +31 -0
- data/assets/templates/haml/partials/symbols/variable.haml +22 -0
- data/assets/templates/haml/pattern.haml +54 -0
- data/assets/templates/slim/demo.slim +24 -0
- data/assets/templates/slim/layouts/demo.slim +5 -0
- data/assets/templates/slim/layouts/pattern.slim +48 -0
- data/assets/templates/slim/partials/sidebar.slim +112 -0
- data/assets/templates/slim/partials/symbols/class.slim +1 -0
- data/assets/templates/slim/partials/symbols/demo.slim +30 -0
- data/assets/templates/slim/partials/symbols/factory.slim +57 -0
- data/assets/templates/slim/partials/symbols/function.slim +81 -0
- data/assets/templates/slim/partials/symbols/mixin.slim +45 -0
- data/assets/templates/slim/partials/symbols/variable.slim +35 -0
- data/assets/templates/slim/pattern.slim +63 -0
- data/docks_config.rb +32 -0
- data/docks_theme_api.gemspec +37 -0
- data/gulpfile.js +88 -0
- data/karma.conf.js +6 -0
- data/lib/docks_theme_api/components/base_component.rb +99 -0
- data/lib/docks_theme_api/components/code_block_component.rb +10 -0
- data/lib/docks_theme_api/components/popover_component.rb +15 -0
- data/lib/docks_theme_api/components/table_component.rb +34 -0
- data/lib/docks_theme_api/components/tablist_component.rb +11 -0
- data/lib/docks_theme_api/components.rb +21 -0
- data/lib/docks_theme_api/helpers/ui_helper.rb +69 -0
- data/lib/docks_theme_api/theme.rb +21 -0
- data/lib/docks_theme_api.rb +1 -0
- data/package.json +60 -0
- data/source/behaviors/filterable/filterable.coffee +353 -0
- data/source/behaviors/filterable/filterable.js +0 -0
- data/source/behaviors/filterable/filterable.scss +34 -0
- data/source/behaviors/filterable/package.json +3 -0
- data/source/behaviors/index.js +0 -0
- data/source/components/avatar/avatar.erb +20 -0
- data/source/components/avatar/avatar.js +142 -0
- data/source/components/avatar/avatar.scss +200 -0
- data/source/components/avatar/avatar_container.erb +13 -0
- data/source/components/avatar/package.json +3 -0
- data/source/components/avatar/spec/avatar_spec.js +81 -0
- data/source/components/badge/badge.scss +158 -0
- data/source/components/button/button.scss +213 -0
- data/source/components/card/card.scss +32 -0
- data/source/components/code_block/code-block.scss +353 -0
- data/source/components/code_block/code_block.erb +95 -0
- data/source/components/code_block/code_block.js +444 -0
- data/source/components/code_block/package.json +3 -0
- data/source/components/code_block/spec/code_block_spec.js +10 -0
- data/source/components/demo/demo.js +244 -0
- data/source/components/demo/demo.scss +90 -0
- data/source/components/demo/package.json +3 -0
- data/source/components/exploded/exploded.erb +25 -0
- data/source/components/exploded/exploded.js +694 -0
- data/source/components/exploded/exploded.scss +166 -0
- data/source/components/exploded/package.json +3 -0
- data/source/components/field/field.js +24 -0
- data/source/components/field/field.scss +101 -0
- data/source/components/field/package.json +3 -0
- data/source/components/header/header.scss +33 -0
- data/source/components/iframe/iframe.erb +12 -0
- data/source/components/iframe/iframe.js +381 -0
- data/source/components/iframe/package.json +3 -0
- data/source/components/index.js +37 -0
- data/source/components/inline_group/inline-group.scss +14 -0
- data/source/components/internal_link/internal_link.js +49 -0
- data/source/components/internal_link/package.json +3 -0
- data/source/components/list/list.scss +230 -0
- data/source/components/modal/modal.coffee +84 -0
- data/source/components/modal/modal.erb +19 -0
- data/source/components/modal/modal.js +0 -0
- data/source/components/modal/modal.scss +57 -0
- data/source/components/modal/package.json +3 -0
- data/source/components/notice/notice.scss +48 -0
- data/source/components/popover/package.json +3 -0
- data/source/components/popover/popover.coffee +562 -0
- data/source/components/popover/popover.erb +21 -0
- data/source/components/popover/popover.js +0 -0
- data/source/components/popover/popover.scss +139 -0
- data/source/components/range/range.scss +78 -0
- data/source/components/resizable/package.json +3 -0
- data/source/components/resizable/resizable.erb +30 -0
- data/source/components/resizable/resizable.js +250 -0
- data/source/components/resizable/resizable.scss +245 -0
- data/source/components/resizable/size_buttons.js +249 -0
- data/source/components/scroll_container/package.json +3 -0
- data/source/components/scroll_container/scroll-container.scss +4 -0
- data/source/components/scroll_container/scroll_container.js +24 -0
- data/source/components/section/section.scss +99 -0
- data/source/components/select/package.json +3 -0
- data/source/components/select/select.erb +21 -0
- data/source/components/select/select.js +35 -0
- data/source/components/select/select.scss +163 -0
- data/source/components/table/package.json +3 -0
- data/source/components/table/table.erb +16 -0
- data/source/components/table/table.js +351 -0
- data/source/components/table/table.scss +236 -0
- data/source/components/tablist/package.json +3 -0
- data/source/components/tablist/tablist.erb +13 -0
- data/source/components/tablist/tablist.js +246 -0
- data/source/components/tablist/tablist.scss +191 -0
- data/source/components/tablist/tablist_panel.erb +14 -0
- data/source/components/tablist/tablist_tab.erb +20 -0
- data/source/components/toggle/package.json +3 -0
- data/source/components/toggle/toggle.erb +11 -0
- data/source/components/toggle/toggle.js +211 -0
- data/source/components/toggle/toggle_container.erb +30 -0
- data/source/components/vertical_spacer/vertical-spacer.scss +3 -0
- data/source/components/vertical_stack/vertical-stack.scss +19 -0
- data/source/components/xray/package.json +3 -0
- data/source/components/xray/xray.erb +50 -0
- data/source/components/xray/xray.js +123 -0
- data/source/components/xray/xray.scss +79 -0
- data/source/foundation/app/app.js +15 -0
- data/source/foundation/app/package.json +3 -0
- data/source/pattern-library-demo.scss +13 -0
- data/source/pattern-library.scss +13 -0
- data/source/pattern_library.js +8 -0
- data/source/pattern_library_demo.js +8 -0
- data/source/structures/index.js +11 -0
- data/source/structures/sidebar/package.json +3 -0
- data/source/structures/sidebar/sidebar.js +69 -0
- data/source/structures/sidebar/sidebar.scss +79 -0
- data/source/utilities/builder/builder.js +138 -0
- data/source/utilities/builder/package.json +3 -0
- data/source/utilities/client/client.js +7 -0
- data/source/utilities/client/package.json +3 -0
- data/source/utilities/colors/colors.scss +112 -0
- data/source/utilities/defaults/defaults.scss +38 -0
- data/source/utilities/dom_cache/dom_cache.js +24 -0
- data/source/utilities/dom_cache/package.json +3 -0
- data/source/utilities/events/events.js +25 -0
- data/source/utilities/events/package.json +3 -0
- data/source/utilities/font_sizes/font-sizes.scss +85 -0
- data/source/utilities/foundation/a11y.scss +10 -0
- data/source/utilities/foundation/base.scss +29 -0
- data/source/utilities/foundation/icon.scss +114 -0
- data/source/utilities/foundation/layout.scss +67 -0
- data/source/utilities/foundation/page.scss +39 -0
- data/source/utilities/foundation/type.scss +208 -0
- data/source/utilities/functions/functions.scss +127 -0
- data/source/utilities/keycodes/keycodes.js +23 -0
- data/source/utilities/keycodes/package.json +3 -0
- data/source/utilities/markup/markup.js +90 -0
- data/source/utilities/markup/package.json +3 -0
- data/source/utilities/media/media.scss +172 -0
- data/source/utilities/mixins/mixins.scss +89 -0
- data/source/utilities/naming_convention/naming_convention.js +3 -0
- data/source/utilities/naming_convention/package.json +3 -0
- data/source/utilities/numbers/numbers.js +14 -0
- data/source/utilities/numbers/package.json +3 -0
- data/source/utilities/painting/package.json +3 -0
- data/source/utilities/painting/painting.js +7 -0
- data/source/utilities/pattern/package.json +3 -0
- data/source/utilities/pattern/pattern.js +50 -0
- data/source/utilities/query_string/package.json +3 -0
- data/source/utilities/query_string/query_string.js +24 -0
- data/source/utilities/template/package.json +3 -0
- data/source/utilities/template/template.js +10 -0
- data/source/utilities/text_range/package.json +3 -0
- data/source/utilities/text_range/text_range.js +30 -0
- data/source/utilities/ui_events/package.json +3 -0
- data/source/utilities/ui_events/ui_events.js +85 -0
- data/source/utilities/variables/variables.scss +18 -0
- data/source/utilities/z_indexes/z-indexes.scss +88 -0
- data/source/vendor/array_includes.js +28 -0
- data/source/vendor/highlight.js +1142 -0
- data/source/vendor/index.js +1 -0
- data/source/vendor/matrix.js +399 -0
- data/source/vendor/query_string.js +66 -0
- data/spec/assets/.eslintrc +9 -0
- data/spec/assets/spec_fixture.js +33 -0
- data/spec/assets/spec_helper.js +19 -0
- data/spec/lib/components/base_component_spec.rb +156 -0
- data/spec/lib/components_spec.rb +30 -0
- data/spec/lib/helpers/ui_helper_spec.rb +62 -0
- data/spec/lib/theme_spec.rb +25 -0
- data/spec/spec_helper.rb +15 -0
- data/tasks/gulp/.eslintrc +6 -0
- data/tasks/gulp/browser_sync.js +8 -0
- data/tasks/gulp/code_quality/scripts.js +10 -0
- data/tasks/gulp/config/index.js +116 -0
- data/tasks/gulp/minify/scripts.js +13 -0
- data/tasks/gulp/minify/styles.js +13 -0
- data/tasks/gulp/pattern_library/index.js +5 -0
- data/tasks/gulp/pattern_library/scripts.js +10 -0
- data/tasks/gulp/pattern_library/styles.js +10 -0
- data/tasks/gulp/scripts.js +8 -0
- data/tasks/gulp/spec/scripts.js +11 -0
- data/tasks/gulp/styles.js +17 -0
- data/tasks/gulp/utilities/babel/relative_require.js +22 -0
- data/tasks/gulp/utilities/babel/spec_helper.js +20 -0
- data/tasks/gulp/utilities/browserify_bundler.js +22 -0
- data/tasks/gulp/utilities/handle_errors.js +13 -0
- data/tasks/gulp/watch.js +9 -0
- data/tasks/rake/rspec.rake +7 -0
- data/tasks/rake/rubocop.rake +8 -0
- data/tasks/rake/templates.rake +50 -0
- metadata +470 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
//*
|
|
2
|
+
// @pattern Pattern Library Helpers
|
|
3
|
+
// @author Chris Sauve (github: lemonmade)
|
|
4
|
+
//
|
|
5
|
+
// This file provides a set of helpers that allow you to provide custom style
|
|
6
|
+
// overrides for components in demos. Please use these helpers in place of
|
|
7
|
+
// custom selectors whenever possible — if the internal mechanisms the generator
|
|
8
|
+
// uses to create these demos is ever changed, these helpers will be updated to
|
|
9
|
+
// reflect the new selectors that are needed.
|
|
10
|
+
|
|
11
|
+
//*
|
|
12
|
+
// Forces the height of the passed `$component` demo to be at least `$height`.
|
|
13
|
+
// Demos of some components may not respond properly to automatically
|
|
14
|
+
// calculating their height. For example, absolutely-positioned dropdowns do
|
|
15
|
+
// not cause the height of their container to increase, but we may want some
|
|
16
|
+
// extra vertical space for them to appear into. This mixin allows you to
|
|
17
|
+
// force a particular demo to have at least the passed height.
|
|
18
|
+
//
|
|
19
|
+
// @param {String} $component - The exact name of the component you wish to
|
|
20
|
+
// forcibly size (in most cases, this is the component's class name, without
|
|
21
|
+
// the leading `"."`).
|
|
22
|
+
//
|
|
23
|
+
// @param {Number} $height - The height you wish to force the component demo
|
|
24
|
+
// to be. This number should have some units, the choice of which is left to
|
|
25
|
+
// you.
|
|
26
|
+
//
|
|
27
|
+
// @example
|
|
28
|
+
// +docks-demo-height(dropdown, 10em)
|
|
29
|
+
|
|
30
|
+
=docks-demo-height($component, $height)
|
|
31
|
+
#demo__section--#{$component} > .demo__content
|
|
32
|
+
min-height: #{$height} !important
|
|
33
|
+
|
|
34
|
+
//*
|
|
35
|
+
// Forces the background of the demo for `$component` to be `$color`. You may
|
|
36
|
+
// wish to use this in cases where an element typically appears on a background
|
|
37
|
+
// color that is not the default for the way they are presented in demos (the
|
|
38
|
+
// default theme displays these on a pure white background).
|
|
39
|
+
//
|
|
40
|
+
// @param {String} $component - The exact name of the component you wish to
|
|
41
|
+
// forcibly set the background color for (in most cases, this is the component's
|
|
42
|
+
// class name, without the leading `"."`).
|
|
43
|
+
//
|
|
44
|
+
// @param {Color} $color - The background color you want.
|
|
45
|
+
//
|
|
46
|
+
// @example
|
|
47
|
+
// +docks-demo-background(button--light, rgb(50, 50, 50))
|
|
48
|
+
|
|
49
|
+
=docks-demo-background($component, $color)
|
|
50
|
+
#demo__section--#{$component}
|
|
51
|
+
background-color: #{$color} !important
|
|
52
|
+
|
|
53
|
+
//*
|
|
54
|
+
// Forces the demo container for `$component` to have no horizontal padding.
|
|
55
|
+
// The default theme provides this padding since, in general, it is more
|
|
56
|
+
// aesthetically pleasing to do so. This may not, however, work for all your
|
|
57
|
+
// components, in which case you can use this mixin.
|
|
58
|
+
//
|
|
59
|
+
// @param {String} $component - The exact name of the component you wish to
|
|
60
|
+
// remove padding for (in most cases, this is the component's class name,
|
|
61
|
+
// without the leading `"."`).
|
|
62
|
+
//
|
|
63
|
+
// @example
|
|
64
|
+
// +docks-demo-no-padding(grid)
|
|
65
|
+
|
|
66
|
+
=docks-demo-no-padding($component)
|
|
67
|
+
#demo__section--#{$component}
|
|
68
|
+
padding-left: 0
|
|
69
|
+
padding-right: 0
|
|
70
|
+
|
|
71
|
+
//*
|
|
72
|
+
// Allows you to specify a block of styles that will apply only to the demo
|
|
73
|
+
// container for `$component`. If you are simply trying to force a particular
|
|
74
|
+
// height, use [`docks-demo-height`](@link). If you are trying to set a custom
|
|
75
|
+
// background color, use [`docks-demo-background`](@link). If you are trying to
|
|
76
|
+
// remove the horizontal padding on a component's demo, use
|
|
77
|
+
// [`docks-demo-no-padding`](@link). Use this mixin only for more advanced
|
|
78
|
+
// styling concerns.
|
|
79
|
+
//
|
|
80
|
+
// @param {String} $component - The exact name of the component you wish to
|
|
81
|
+
// add custom styling for (in most cases, this is the component's class name,
|
|
82
|
+
// without the leading `"."`).
|
|
83
|
+
//
|
|
84
|
+
// @example
|
|
85
|
+
// +docks-demo-styles(button)
|
|
86
|
+
// text-align: center
|
|
87
|
+
|
|
88
|
+
=docks-demo-styles($component)
|
|
89
|
+
#demo__section--#{$component}
|
|
90
|
+
@content
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
//*
|
|
2
|
+
// @pattern Pattern Library Helpers
|
|
3
|
+
// @author Chris Sauve (github: lemonmade)
|
|
4
|
+
//
|
|
5
|
+
// This file provides a set of helpers that allow you to provide custom style
|
|
6
|
+
// overrides for components in demos. Please use these helpers in place of
|
|
7
|
+
// custom selectors whenever possible — if the internal mechanisms the generator
|
|
8
|
+
// uses to create these demos is ever changed, these helpers will be updated to
|
|
9
|
+
// reflect the new selectors that are needed.
|
|
10
|
+
|
|
11
|
+
//*
|
|
12
|
+
// Forces the height of the passed `$component` demo to be at least `$height`.
|
|
13
|
+
// Demos of some components may not respond properly to automatically
|
|
14
|
+
// calculating their height. For example, absolutely-positioned dropdowns do
|
|
15
|
+
// not cause the height of their container to increase, but we may want some
|
|
16
|
+
// extra vertical space for them to appear into. This mixin allows you to
|
|
17
|
+
// force a particular demo to have at least the passed height.
|
|
18
|
+
//
|
|
19
|
+
// @param {String} $component - The exact name of the component you wish to
|
|
20
|
+
// forcibly size (in most cases, this is the component's class name, without
|
|
21
|
+
// the leading `"."`).
|
|
22
|
+
//
|
|
23
|
+
// @param {Number} $height - The height you wish to force the component demo
|
|
24
|
+
// to be. This number should have some units, the choice of which is left to
|
|
25
|
+
// you.
|
|
26
|
+
//
|
|
27
|
+
// @example
|
|
28
|
+
// @include docks-demo-height(dropdown, 10em);
|
|
29
|
+
|
|
30
|
+
@mixin docks-demo-height($component, $height) {
|
|
31
|
+
#demo__section--#{$component} > .demo__content {
|
|
32
|
+
min-height: #{$height} !important;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//*
|
|
37
|
+
// Forces the background of the demo for `$component` to be `$color`. You may
|
|
38
|
+
// wish to use this in cases where an element typically appears on a background
|
|
39
|
+
// color that is not the default for the way they are presented in demos (the
|
|
40
|
+
// default theme displays these on a pure white background).
|
|
41
|
+
//
|
|
42
|
+
// @param {String} $component - The exact name of the component you wish to
|
|
43
|
+
// forcibly set the background color for (in most cases, this is the component's
|
|
44
|
+
// class name, without the leading `"."`).
|
|
45
|
+
//
|
|
46
|
+
// @param {Color} $color - The background color you want.
|
|
47
|
+
//
|
|
48
|
+
// @example
|
|
49
|
+
// @include docks-demo-background(button--light, rgb(50, 50, 50));
|
|
50
|
+
|
|
51
|
+
@mixin docks-demo-background($component, $color) {
|
|
52
|
+
#demo__section--#{$component} {
|
|
53
|
+
background-color: #{$color} !important;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//*
|
|
58
|
+
// Forces the demo container for `$component` to have no horizontal padding.
|
|
59
|
+
// The default theme provides this padding since, in general, it is more
|
|
60
|
+
// aesthetically pleasing to do so. This may not, however, work for all your
|
|
61
|
+
// components, in which case you can use this mixin.
|
|
62
|
+
//
|
|
63
|
+
// @param {String} $component - The exact name of the component you wish to
|
|
64
|
+
// remove padding for (in most cases, this is the component's class name,
|
|
65
|
+
// without the leading `"."`).
|
|
66
|
+
//
|
|
67
|
+
// @example
|
|
68
|
+
// @include docks-demo-no-padding(grid);
|
|
69
|
+
|
|
70
|
+
@mixin docks-demo-no-padding($component) {
|
|
71
|
+
#demo__section--#{$component} {
|
|
72
|
+
padding-left: 0;
|
|
73
|
+
padding-right: 0;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
//*
|
|
78
|
+
// Allows you to specify a block of styles that will apply only to the demo
|
|
79
|
+
// container for `$component`. If you are simply trying to force a particular
|
|
80
|
+
// height, use [`docks-demo-height`](@link). If you are trying to set a custom
|
|
81
|
+
// background color, use [`docks-demo-background`](@link). If you are trying to
|
|
82
|
+
// remove the horizontal padding on a component's demo, use
|
|
83
|
+
// [`docks-demo-no-padding`](@link). Use this mixin only for more advanced
|
|
84
|
+
// styling concerns.
|
|
85
|
+
//
|
|
86
|
+
// @param {String} $component - The exact name of the component you wish to
|
|
87
|
+
// add custom styling for (in most cases, this is the component's class name,
|
|
88
|
+
// without the leading `"."`).
|
|
89
|
+
//
|
|
90
|
+
// @example
|
|
91
|
+
// @include docks-demo-styles(button) {
|
|
92
|
+
// text-align: center;
|
|
93
|
+
// }
|
|
94
|
+
|
|
95
|
+
@mixin docks-demo-styles($component) {
|
|
96
|
+
#demo__section--#{$component} {
|
|
97
|
+
@content;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
//*
|
|
2
|
+
// @pattern Pattern Library Helpers
|
|
3
|
+
// @author Chris Sauve (github: lemonmade)
|
|
4
|
+
//
|
|
5
|
+
// This file provides a set of helpers that allow you to provide custom style
|
|
6
|
+
// overrides for components in demos. Please use these helpers in place of
|
|
7
|
+
// custom selectors whenever possible — if the internal mechanisms the generator
|
|
8
|
+
// uses to create these demos is ever changed, these helpers will be updated to
|
|
9
|
+
// reflect the new selectors that are needed.
|
|
10
|
+
|
|
11
|
+
//*
|
|
12
|
+
// Forces the height of the passed `component` demo to be at least `height`.
|
|
13
|
+
// Demos of some components may not respond properly to automatically
|
|
14
|
+
// calculating their height. For example, absolutely-positioned dropdowns do
|
|
15
|
+
// not cause the height of their container to increase, but we may want some
|
|
16
|
+
// extra vertical space for them to appear into. This mixin allows you to
|
|
17
|
+
// force a particular demo to have at least the passed height.
|
|
18
|
+
//
|
|
19
|
+
// @param {String} component - The exact name of the component you wish to
|
|
20
|
+
// forcibly size (in most cases, this is the component's class name, without
|
|
21
|
+
// the leading `"."`).
|
|
22
|
+
//
|
|
23
|
+
// @param {Number} height - The height you wish to force the component demo
|
|
24
|
+
// to be. This number should have some units, the choice of which is left to
|
|
25
|
+
// you.
|
|
26
|
+
//
|
|
27
|
+
// @example
|
|
28
|
+
// docks-demo-height(dropdown, 10em)
|
|
29
|
+
|
|
30
|
+
docks-demo-height(component, height)
|
|
31
|
+
#demo__section--{component} > .demo__content
|
|
32
|
+
min-height height !important
|
|
33
|
+
|
|
34
|
+
//*
|
|
35
|
+
// Forces the background of the demo for `component` to be `color`. You may
|
|
36
|
+
// wish to use this in cases where an element typically appears on a background
|
|
37
|
+
// color that is not the default for the way they are presented in demos (the
|
|
38
|
+
// default theme displays these on a pure white background).
|
|
39
|
+
//
|
|
40
|
+
// @param {String} component - The exact name of the component you wish to
|
|
41
|
+
// forcibly set the background color for (in most cases, this is the component's
|
|
42
|
+
// class name, without the leading `"."`).
|
|
43
|
+
//
|
|
44
|
+
// @param {Color} color - The background color you want.
|
|
45
|
+
//
|
|
46
|
+
// @example
|
|
47
|
+
// docks-demo-background(button--light, rgb(50, 50, 50))
|
|
48
|
+
|
|
49
|
+
docks-demo-background(component, color)
|
|
50
|
+
#demo__section--{component}
|
|
51
|
+
background-color color !important
|
|
52
|
+
|
|
53
|
+
//*
|
|
54
|
+
// Forces the demo container for `component` to have no horizontal padding.
|
|
55
|
+
// The default theme provides this padding since, in general, it is more
|
|
56
|
+
// aesthetically pleasing to do so. This may not, however, work for all your
|
|
57
|
+
// components, in which case you can use this mixin.
|
|
58
|
+
//
|
|
59
|
+
// @param {String} component - The exact name of the component you wish to
|
|
60
|
+
// remove padding for (in most cases, this is the component's class name,
|
|
61
|
+
// without the leading `"."`).
|
|
62
|
+
//
|
|
63
|
+
// @example
|
|
64
|
+
// docks-demo-no-padding(grid)
|
|
65
|
+
|
|
66
|
+
docks-demo-no-padding(component)
|
|
67
|
+
#demo__section--{component}
|
|
68
|
+
padding-left 0
|
|
69
|
+
padding-right 0
|
|
70
|
+
|
|
71
|
+
//*
|
|
72
|
+
// Allows you to specify a block of styles that will apply only to the demo
|
|
73
|
+
// container for `component`. If you are simply trying to force a particular
|
|
74
|
+
// height, use [`docks-demo-height`](@link). If you are trying to set a custom
|
|
75
|
+
// background color, use [`docks-demo-background`](@link). If you are trying to
|
|
76
|
+
// remove the horizontal padding on a component's demo, use
|
|
77
|
+
// [`docks-demo-no-padding`](@link). Use this mixin only for more advanced
|
|
78
|
+
// styling concerns.
|
|
79
|
+
//
|
|
80
|
+
// @param {String} component - The exact name of the component you wish to
|
|
81
|
+
// add custom styling for (in most cases, this is the component's class name,
|
|
82
|
+
// without the leading `"."`).
|
|
83
|
+
//
|
|
84
|
+
// @example
|
|
85
|
+
// +docks-demo-styles(button)
|
|
86
|
+
// text-align: center
|
|
87
|
+
|
|
88
|
+
docks-demo-styles(component)
|
|
89
|
+
#demo__section--{component}
|
|
90
|
+
{block}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<div class="iframe" data-iframe-id="<%= id %>">
|
|
2
|
+
<div class="demo" data-iframe-id="<%= id %>">
|
|
3
|
+
|
|
4
|
+
<% if demo.kind_of?(Docks::Containers::Demo) %>
|
|
5
|
+
<% demo_variations = [demo.component] + demo.joint_variations %>
|
|
6
|
+
<% demo_variations.each do |variation| %>
|
|
7
|
+
<% name = variation.name %>
|
|
8
|
+
|
|
9
|
+
<section class="demo__section" data-name="<%= name %>" id="demo__section--<%= name %>">
|
|
10
|
+
<% unless demo_variations.length == 1 %>
|
|
11
|
+
<header class="demo__header">
|
|
12
|
+
<h2 class="badge badge--code"><%= name %></h2>
|
|
13
|
+
</header>
|
|
14
|
+
<% end %>
|
|
15
|
+
|
|
16
|
+
<div class="content"><%= variation.markup %></div>
|
|
17
|
+
</section>
|
|
18
|
+
<% end %>
|
|
19
|
+
|
|
20
|
+
<% else %>
|
|
21
|
+
<section class="demo__section">
|
|
22
|
+
<div class="content"><%= demo %></div>
|
|
23
|
+
</section>
|
|
24
|
+
<% end %>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<%= docks_stylesheet(:demo) %>
|
|
5
|
+
<%= compiled_style_tags %>
|
|
6
|
+
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
|
|
7
|
+
</head>
|
|
8
|
+
|
|
9
|
+
<body>
|
|
10
|
+
<%= docks_icons %>
|
|
11
|
+
|
|
12
|
+
<div class="wrapper"><%= yield %></div>
|
|
13
|
+
|
|
14
|
+
<%= docks_javascript(:demo) %>
|
|
15
|
+
<%= compiled_script_tags %>
|
|
16
|
+
</body>
|
|
17
|
+
</html>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<%= docks_stylesheet %>
|
|
5
|
+
<%= compiled_style_tags %>
|
|
6
|
+
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
|
|
7
|
+
</head>
|
|
8
|
+
|
|
9
|
+
<body>
|
|
10
|
+
<%= docks_icons %>
|
|
11
|
+
|
|
12
|
+
<div class="page">
|
|
13
|
+
<div class="page__sidebar">
|
|
14
|
+
<%= render "sidebar" %>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<div class="page__content">
|
|
18
|
+
<div class="vertical-stack">
|
|
19
|
+
<div class="vertical-stack__item vertical-stack__item--fixed">
|
|
20
|
+
<div class="page-header">
|
|
21
|
+
<div class="grid grid--vertically-centered">
|
|
22
|
+
<div class="grid__item grid__item--no-flex">
|
|
23
|
+
<button class="sidebar__toggler">
|
|
24
|
+
<span class="helper--visually-hidden">Toggle Sidebar</span>
|
|
25
|
+
<div class="icon icon--action icon--hamburger">
|
|
26
|
+
<div class="icon--hamburger__slice"></div>
|
|
27
|
+
</div>
|
|
28
|
+
</button>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div class="grid__item">
|
|
32
|
+
<h1 class="type type--heading type--heading-1"><%= @pattern.title %></h1>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<% if has_github? %>
|
|
36
|
+
<div class="popover__container">
|
|
37
|
+
<button class="docks-button docks-button--dark">
|
|
38
|
+
Github
|
|
39
|
+
<i class="icon icon--disclosure"></i>
|
|
40
|
+
</button>
|
|
41
|
+
|
|
42
|
+
<% docks_popover do %>
|
|
43
|
+
<div class="list">
|
|
44
|
+
<a href="<%= "#{github_root_url}/issues/new?body=#{url_encode(github_issue_message)}" %>" target="_blank" class="list__item">File an issue</a>
|
|
45
|
+
|
|
46
|
+
<div class="list__group">
|
|
47
|
+
<h4 class="type type--heading type--heading-4">View source</h4>
|
|
48
|
+
<% relative_pattern_files.each do |file| %>
|
|
49
|
+
<a href="<%= github_url(file) %>" target="_blank" class="list__item type--code"><%= File.basename(file) %></a>
|
|
50
|
+
<% end %>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
<% end %>
|
|
54
|
+
</div>
|
|
55
|
+
<% end %>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div class="vertical-stack__item">
|
|
61
|
+
<main class="scroll-container"><%= yield %></main>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
<%= docks_xray %>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<script type="text/javascript">
|
|
70
|
+
window.pattern = <%= json_escape(@pattern.to_json) %>;
|
|
71
|
+
</script>
|
|
72
|
+
|
|
73
|
+
<%= docks_javascript %>
|
|
74
|
+
<%= compiled_script_tags %>
|
|
75
|
+
</body>
|
|
76
|
+
</html>
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<nav class="sidebar">
|
|
2
|
+
<div class="vertical-stack">
|
|
3
|
+
<div class="vertical-stack__item vertical-stack__item--fixed">
|
|
4
|
+
<header class="page-header">
|
|
5
|
+
<div class="grid grid--vertically-centered">
|
|
6
|
+
<div class="grid__item">
|
|
7
|
+
<label class="label helper--visually-hidden" for="search">Search</label>
|
|
8
|
+
<div class="field field--text">
|
|
9
|
+
<div class="field__icon">
|
|
10
|
+
<%= docks_icon(:search, size: :medium) %>
|
|
11
|
+
</div>
|
|
12
|
+
<input id="search" type="search" class="field__input" data-filters="#list--patterns, #list--this-pattern" data-filter-attribute="contents" placeholder="Search">
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div class="grid__item grid__item--no-flex">
|
|
17
|
+
<div class="popover__container">
|
|
18
|
+
<%= docks_icon :eye, size: :large, color: :gray_darker %>
|
|
19
|
+
|
|
20
|
+
<% docks_popover do |popover| %>
|
|
21
|
+
<% popover.pane do %>
|
|
22
|
+
<div class="field field--switch">
|
|
23
|
+
<input class="field__switch" type="checkbox" id="private-toggle" data-filters="#list--this-pattern, #symbols--structure, #symbols--behavior" data-filter-attribute="data-private" data-checked-value="true|false">
|
|
24
|
+
<label class="label" for="private-toggle">Show private symbols</label>
|
|
25
|
+
</div>
|
|
26
|
+
<% end %>
|
|
27
|
+
<% end %>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
</header>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<div class="vertical-stack__item">
|
|
35
|
+
<% unless @pattern.symbols.empty? %>
|
|
36
|
+
<div class="list" id="list--this-pattern" data-filter-items=".list__item">
|
|
37
|
+
<%
|
|
38
|
+
symbol_contents = { "structure" => @pattern.has_structure?, "behavior" => @pattern.has_behavior? }
|
|
39
|
+
has_both = symbol_contents["structure"] && symbol_contents["behavior"]
|
|
40
|
+
%>
|
|
41
|
+
|
|
42
|
+
<h3 class="type type--heading type--heading-3">This Pattern</h3>
|
|
43
|
+
<% %w(structure behavior).each do |group| %>
|
|
44
|
+
<% if symbol_contents[group] %>
|
|
45
|
+
<% if group == "structure" && !(demos = @pattern.demos).empty? %>
|
|
46
|
+
<div class="list__group">
|
|
47
|
+
<h4 class="type type--heading type--heading-4">Components</h4>
|
|
48
|
+
<% demos.each do |demo| %>
|
|
49
|
+
<a class="list__item type--code" href="#<%= demo.component.symbol_id %>" data-private="<%= demo.component.private? %>"><%= demo.name %></a>
|
|
50
|
+
<% end %>
|
|
51
|
+
</div>
|
|
52
|
+
<% end %>
|
|
53
|
+
|
|
54
|
+
<% if group == "behavior" && !(factories = @pattern.factories).empty? %>
|
|
55
|
+
<div class="list__group">
|
|
56
|
+
<h4 class="type type--heading type--heading-4">Factories</h4>
|
|
57
|
+
<% factories.each do |factory| %>
|
|
58
|
+
<a class="list__item type--code" href="#<%= factory.symbol_id %>" data-private="<%= factory.private? %>"><%= factory.name %></a>
|
|
59
|
+
|
|
60
|
+
<% factory.static_properties.each do |prop| %>
|
|
61
|
+
<a href="#<%= prop.symbol_id %>" class="list__item list__item--indented type--code" data-private="<%= prop.private? %>">.<%= prop.name %></a>
|
|
62
|
+
<% end %>
|
|
63
|
+
|
|
64
|
+
<% factory.static_methods.each do |meth| %>
|
|
65
|
+
<a href="#<%= meth.symbol_id %>" class="list__item list__item--indented type--code" data-private="<%= meth.private? %>">.<%= meth.name %>()</a>
|
|
66
|
+
<% end %>
|
|
67
|
+
|
|
68
|
+
<% factory.instance_properties.each do |prop| %>
|
|
69
|
+
<a href="#<%= prop.symbol_id %>" class="list__item list__item--indented type--code" data-private="<%= prop.private? %>">#<%= prop.name %></a>
|
|
70
|
+
<% end %>
|
|
71
|
+
|
|
72
|
+
<% factory.instance_methods.each do |meth| %>
|
|
73
|
+
<a href="#<%= meth.symbol_id %>" class="list__item list__item--indented type--code" data-private="<%= meth.private? %>">#<%= meth.name %>()</a>
|
|
74
|
+
<% end %>
|
|
75
|
+
<% end %>
|
|
76
|
+
</div>
|
|
77
|
+
<% end %>
|
|
78
|
+
|
|
79
|
+
<% %w(variable function mixin).each do |type| %>
|
|
80
|
+
<%
|
|
81
|
+
symbol_options = {}
|
|
82
|
+
symbol_options[group == "behavior" ? :include : :exclude] = Docks::Types::Languages::SCRIPT
|
|
83
|
+
symbols = @pattern.send(type.pluralize.to_sym, symbol_options)
|
|
84
|
+
unless symbols.empty?
|
|
85
|
+
%>
|
|
86
|
+
<div class="list__group">
|
|
87
|
+
<h4 class="type type--heading type--heading-4"><%= type.pluralize.capitalize %></h4>
|
|
88
|
+
<% symbols.each do |symbol| %>
|
|
89
|
+
<a class="list__item type--code" href="#<%= symbol.symbol_id %>" data-private="<%= symbol.private? %>"><%= symbol.name %></a>
|
|
90
|
+
|
|
91
|
+
<% symbol.methods.each do |meth| %>
|
|
92
|
+
<a href="#<%= meth.symbol_id %>" class="list__item list__item--indented type--code" data-private="<%= meth.private? %>">.<%= meth.name %>()</a>
|
|
93
|
+
<% end %>
|
|
94
|
+
|
|
95
|
+
<% symbol.properties.each do |prop| %>
|
|
96
|
+
<a href="#<%= prop.symbol_id %>" class="list__item list__item--indented type--code" data-private="<%= prop.private? %>">.<%= prop.name %></a>
|
|
97
|
+
<% end %>
|
|
98
|
+
<% end %>
|
|
99
|
+
</div>
|
|
100
|
+
<% end %>
|
|
101
|
+
<% end %>
|
|
102
|
+
<% end %>
|
|
103
|
+
<% end %>
|
|
104
|
+
</div>
|
|
105
|
+
<% end %>
|
|
106
|
+
|
|
107
|
+
<div class="list" id="list--patterns" data-filter-items=".list__item">
|
|
108
|
+
<h3 class="type type--heading type--heading-3">Library</h3>
|
|
109
|
+
<% @pattern_library.groups do |group, patterns| %>
|
|
110
|
+
<div class="list__group">
|
|
111
|
+
<h4 class="type type--heading type--heading-4"><%= group.pluralize %></h4>
|
|
112
|
+
|
|
113
|
+
<% patterns.sort { |one, two| one.name <=> two.name }.each do |pattern| %>
|
|
114
|
+
<% active_pattern = pattern.name == @pattern.name %>
|
|
115
|
+
<a class="list__item<%= " list__item--is-active" if active_pattern %>" href="<%= active_pattern ? "javascript:" : docks_path(pattern.name) %>">
|
|
116
|
+
<%= pattern.title %>
|
|
117
|
+
</a>
|
|
118
|
+
<% end %>
|
|
119
|
+
</div>
|
|
120
|
+
<% end %>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
</nav>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render(partial: "symbols/factory", locals: { factory: klass }) %>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<section class="section" id="<%= demo.component.symbol_id %>" data-private="<%= demo.component.private? %>">
|
|
2
|
+
<header class="content">
|
|
3
|
+
<div class="grid">
|
|
4
|
+
<div class="grid__item">
|
|
5
|
+
<h3 class="type type--heading type--heading-2">
|
|
6
|
+
<% if title = demo.component.title %>
|
|
7
|
+
<%= title %>
|
|
8
|
+
<% else %>
|
|
9
|
+
<span class="type--code"><%= demo.component.name %></span>
|
|
10
|
+
<% end %>
|
|
11
|
+
</h3>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div class="grid__item grid__item--no-flex">
|
|
15
|
+
<div class="docks-button__container">
|
|
16
|
+
<div class="docks-button" data-xray-trigger="<%= demo.name %>">x-ray</div>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
</header>
|
|
21
|
+
|
|
22
|
+
<%
|
|
23
|
+
markup = render(inline: (demo.component.markup || demo.component.helper), layout: false)
|
|
24
|
+
code_details = []
|
|
25
|
+
code_details << { code: demo.component.helper, language: "erb", label: "Helper" } unless demo.component.helper.nil?
|
|
26
|
+
code_details << { code: markup, language: "html", label: "Markup" }
|
|
27
|
+
options = [demo.name].concat demo.joint_variations.map { |variant| variant.name }
|
|
28
|
+
%>
|
|
29
|
+
|
|
30
|
+
<%= docks_code_block(code: code_details, hideable?: true, full_width?: true, hidden?: true, options: options, id: demo.name, demo: demo) %>
|
|
31
|
+
<%#= docks_toggle_container variations: demo.select_variations(group_by_component: true), base_class: demo.component.name %>
|
|
32
|
+
|
|
33
|
+
<% if demo.component.description %>
|
|
34
|
+
<div class="content">
|
|
35
|
+
<div class="type-container">
|
|
36
|
+
<%= demo.component.description %>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
<% end %>
|
|
40
|
+
</section>
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<div class="content content--extra-vertical-spacing">
|
|
2
|
+
<div class="section" id="<%= factory.symbol_id %>" data-private="<%= factory.private? %>">
|
|
3
|
+
<h2 class="type type--heading type--heading-2 type--heading-bordered">
|
|
4
|
+
<span class="type--code"><%= factory.name %></span>
|
|
5
|
+
</h2>
|
|
6
|
+
|
|
7
|
+
<div class="type-container"><%= factory.description %></div>
|
|
8
|
+
|
|
9
|
+
<%= docks_code_block(code: factory.signature, language: factory.source.language_code) %>
|
|
10
|
+
|
|
11
|
+
<% unless (params = factory.fetch(:params, [])).empty? %>
|
|
12
|
+
<h4 class="type type--heading type--heading-4">Parameters</h4>
|
|
13
|
+
|
|
14
|
+
<% params.each do |param| %>
|
|
15
|
+
<h5 class="type type--heading type--heading-5">
|
|
16
|
+
<span class="type--code"><%= param.name %></span>
|
|
17
|
+
<span class="badge"><%= param.types.first.name %><%= "[]" if param.types.first.array %></span>
|
|
18
|
+
|
|
19
|
+
<% if param.multiple %>
|
|
20
|
+
<span class="badge">Multiple</span>
|
|
21
|
+
<% end %>
|
|
22
|
+
</h5>
|
|
23
|
+
|
|
24
|
+
<div class="type-container type-container--small"><%= param.description %></div>
|
|
25
|
+
|
|
26
|
+
<% unless (properties = param.properties || []).empty? %>
|
|
27
|
+
<% docks_table do %>
|
|
28
|
+
<thead class="table__header">
|
|
29
|
+
<tr class="table__row">
|
|
30
|
+
<th class="table__cell">Name</th>
|
|
31
|
+
<th class="table__cell">Description</th>
|
|
32
|
+
<th class="table__cell">Types</th>
|
|
33
|
+
<th class="table__cell table__cell--centered">Default</th>
|
|
34
|
+
</tr>
|
|
35
|
+
</thead>
|
|
36
|
+
|
|
37
|
+
<tbody class="table__body">
|
|
38
|
+
<% properties.each do |property| %>
|
|
39
|
+
<tr class="table__row">
|
|
40
|
+
<td class="table__cell"><code class="type--code"><%= property.name %></code></td>
|
|
41
|
+
<td class="table__cell">
|
|
42
|
+
<div class="type-container type-container--small"><%= property.description %></div>
|
|
43
|
+
</td>
|
|
44
|
+
<td class="table__cell"><%= (type = property.types.try(:first)) ? "<span class='type--code'>#{type}</span>".html_safe : "Anything" %></td>
|
|
45
|
+
<td class="table__cell table__cell--centered"><%= (default = property.default) ? "<span class='type--code'>#{default}</span>".html_safe : "—".html_safe %></td>
|
|
46
|
+
</tr>
|
|
47
|
+
<% end %>
|
|
48
|
+
</tbody>
|
|
49
|
+
<% end %>
|
|
50
|
+
<% end %>
|
|
51
|
+
<% end %>
|
|
52
|
+
<% end %>
|
|
53
|
+
|
|
54
|
+
<% unless (examples = factory.fetch(:examples, [])).empty? %>
|
|
55
|
+
<h4 class="type type--heading type--heading-4"><%= "Example".pluralize(examples.length) %></h4>
|
|
56
|
+
|
|
57
|
+
<% examples.each do |example| %>
|
|
58
|
+
<%= docks_code_block(code: example.code, language: example.language, condensed?: true) %>
|
|
59
|
+
<% end %>
|
|
60
|
+
<% end %>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<% factory.properties.each do |property| %>
|
|
64
|
+
<%= render partial: "symbols/variable", locals: { variable: property } %>
|
|
65
|
+
<% end %>
|
|
66
|
+
|
|
67
|
+
<% factory.methods.each do |method| %>
|
|
68
|
+
<%= render partial: "symbols/function", locals: { function: method } %>
|
|
69
|
+
<% end %>
|
|
70
|
+
</div>
|