├── .babelrc
├── .gitignore
├── .npmignore
├── .postcssrc.js
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── build
├── build.js
├── check-versions.js
├── dev-client.js
├── dev-server.js
├── utils.js
├── webpack.base.conf.js
├── webpack.dev.conf.js
└── webpack.prod.conf.js
├── config
├── dev.env.js
├── index.js
└── prod.env.js
├── demo
├── _pages
│ ├── _app.jsx
│ ├── _base
│ │ ├── _alert.jsx
│ │ ├── _blockui.jsx
│ │ ├── _dropdown.jsx
│ │ ├── _modal.jsx
│ │ ├── _navs.jsx
│ │ ├── _popover.jsx
│ │ ├── _progress.jsx
│ │ ├── _scrollable.jsx
│ │ ├── _spinner.jsx
│ │ ├── _stateColor.jsx
│ │ ├── _sweetAlerts.jsx
│ │ ├── _tables.jsx
│ │ ├── _tabs
│ │ │ └── _bootstrap.jsx
│ │ ├── _tooltip.jsx
│ │ └── _typography.jsx
│ ├── _button
│ │ ├── _air.jsx
│ │ ├── _default.jsx
│ │ ├── _dropdown.jsx
│ │ ├── _flaticon.jsx
│ │ ├── _fontAwesome.jsx
│ │ ├── _group.jsx
│ │ ├── _lineAwesome.jsx
│ │ ├── _pill.jsx
│ │ └── _square.jsx
│ ├── _form
│ │ └── control
│ │ │ ├── _group.jsx
│ │ │ ├── _inputs.jsx
│ │ │ └── _option.jsx
│ ├── _grid
│ │ ├── _grid.jsx
│ │ └── _stack.jsx
│ ├── _menu.json
│ └── _menu.jsx
└── _routes
│ └── index.js
├── doc
├── .md_configs.data
├── .me_configs.data
├── Changelog.md
├── Install.md
├── Introduce.md
├── README.md
├── SUMMARY.md
├── Thanks.md
├── _assets
│ ├── build-tools.png
│ ├── demo_code.png
│ └── dev.png
├── book.json
├── ch1
│ ├── _image
│ │ ├── 2018-06-21-17-40-31.jpg
│ │ └── 2018-06-21-17-42-15.jpg
│ ├── helperClass.md
│ ├── public.md
│ └── stateColor.md
├── ch2
│ ├── _bgColor.md
│ ├── _excludeClass.md
│ ├── _fontColor.md
│ ├── _handle.md
│ ├── _includeAttribute.md
│ ├── _includeClass.md
│ ├── _includeStyle.md
│ ├── _uniqueClass.md
│ └── public.md
└── ch3
│ ├── base
│ ├── _image
│ │ ├── 2018-06-22-11-23-54.jpg
│ │ ├── 2018-06-22-11-40-31.jpg
│ │ ├── 2018-06-22-11-45-29.jpg
│ │ ├── 2018-06-22-11-48-34.jpg
│ │ ├── 2018-06-22-11-48-52.jpg
│ │ ├── 2018-06-22-11-49-15.jpg
│ │ ├── 2018-06-22-11-49-48.jpg
│ │ ├── 2018-06-22-11-51-23.jpg
│ │ ├── 2018-06-22-13-20-53.jpg
│ │ ├── 2018-06-22-13-24-42.jpg
│ │ ├── 2018-06-22-17-20-27.jpg
│ │ ├── 2018-06-22-17-40-49.jpg
│ │ ├── 2018-06-22-18-22-34.jpg
│ │ ├── 2018-06-22-18-34-13.jpg
│ │ ├── 2018-06-27-11-13-22.jpg
│ │ └── 2018-06-27-11-14-44.jpg
│ ├── alert.md
│ ├── badge.md
│ ├── base.md
│ ├── blockUI.md
│ ├── dropdown.md
│ ├── icon.md
│ ├── loader.md
│ ├── modal.md
│ ├── nav.md
│ ├── popover.md
│ ├── portlet.md
│ ├── progress.md
│ ├── scroll.md
│ ├── tab.md
│ ├── table.md
│ └── tooltip.md
│ ├── button
│ ├── _image
│ │ ├── 2018-06-21-17-48-49.jpg
│ │ ├── 2018-06-21-18-08-15.jpg
│ │ ├── 2018-06-21-18-08-49.jpg
│ │ ├── 2018-06-21-18-15-48.jpg
│ │ ├── 2018-06-21-18-25-02.jpg
│ │ ├── 2018-06-21-18-29-22.jpg
│ │ ├── 2018-06-21-18-33-33.jpg
│ │ ├── 2018-06-21-18-50-48.jpg
│ │ ├── 2018-06-21-18-52-40.jpg
│ │ ├── 2018-06-21-19-16-59.jpg
│ │ ├── 2018-06-21-19-17-25.jpg
│ │ ├── 2018-06-21-19-17-48.jpg
│ │ ├── 2018-06-21-19-47-55.jpg
│ │ ├── 2018-06-21-20-01-56.jpg
│ │ ├── 2018-06-21-20-04-54.jpg
│ │ ├── 2018-06-22-08-27-46.jpg
│ │ ├── 2018-06-22-08-35-04.jpg
│ │ ├── 2018-06-22-08-38-47.jpg
│ │ ├── 2018-06-22-08-43-34.jpg
│ │ ├── 2018-06-22-08-45-57.jpg
│ │ └── 2018-06-22-09-44-55.jpg
│ ├── baseButton.md
│ ├── button.md
│ ├── dropdownButton.md
│ └── groupButton.md
│ ├── component.md
│ ├── element
│ ├── _image
│ │ ├── 2018-06-21-08-07-18.jpg
│ │ ├── 2018-06-21-08-16-32.jpg
│ │ ├── 2018-06-21-08-27-35.jpg
│ │ ├── 2018-06-21-08-28-09.jpg
│ │ ├── 2018-06-21-08-53-28.jpg
│ │ ├── 2018-06-21-09-00-53.jpg
│ │ ├── 2018-06-21-09-05-20.jpg
│ │ ├── 2018-06-21-11-27-24.jpg
│ │ ├── 2018-06-21-11-31-27.jpg
│ │ ├── 2018-06-21-13-17-22.jpg
│ │ ├── 2018-06-21-13-21-23.jpg
│ │ ├── 2018-06-21-13-22-05.jpg
│ │ └── 2018-06-21-14-42-00.jpg
│ ├── blockquote.md
│ ├── code.md
│ ├── div.md
│ ├── element.md
│ ├── link.md
│ ├── list.md
│ ├── paragraph.md
│ ├── separator.md
│ ├── space.md
│ ├── text.md
│ └── title.md
│ └── grid
│ ├── _image
│ ├── 2018-06-29-10-49-41.jpg
│ └── 2018-06-29-11-11-16.jpg
│ ├── base.md
│ ├── grid.md
│ └── stack.md
├── index.html
├── lib
├── _components
│ ├── _alert
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _aside
│ │ └── index.osx
│ ├── _badge
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _blockUI
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _blockquote
│ │ └── index.osx
│ ├── _breadcrumbs
│ │ └── index.osx
│ ├── _button
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _buttonDropdown
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _buttonGroup
│ │ └── index.osx
│ ├── _checkboxRadio
│ │ └── index.osx
│ ├── _code
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _container
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _content
│ │ └── index.osx
│ ├── _demo
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _div
│ │ └── index.osx
│ ├── _dropdown
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _fileInput
│ │ └── index.osx
│ ├── _footer
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _form
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _formGroup
│ │ └── index.osx
│ ├── _formStatic
│ │ └── index.osx
│ ├── _grid
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _griditem
│ │ └── index.osx
│ ├── _header
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _icon
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _input
│ │ └── index.osx
│ ├── _insertPend
│ │ └── index.osx
│ ├── _link
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _list
│ │ └── index.osx
│ ├── _loader
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _menu
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _modal
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _nav
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _page
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _paragraph
│ │ └── index.osx
│ ├── _popover
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _portlet
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _progress
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _scroll
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _section
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _select
│ │ └── index.osx
│ ├── _separator
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _space
│ │ └── index.osx
│ ├── _spinner
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _stack
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _subheader
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _tab
│ │ ├── _index.osx
│ │ └── index.scss
│ ├── _table
│ │ ├── index.osx
│ │ └── index.scss
│ ├── _text
│ │ └── index.osx
│ ├── _textarea
│ │ └── index.osx
│ ├── _title
│ │ └── index.osx
│ ├── _tooltip
│ │ ├── index.osx
│ │ └── index.scss
│ └── _wrapper
│ │ └── index.osx
├── _plugins.js
├── _plugins
│ ├── flaticon
│ │ ├── css
│ │ │ └── flaticon.css
│ │ ├── flaticon.html
│ │ └── fonts
│ │ │ ├── Flaticon.eot
│ │ │ ├── Flaticon.svg
│ │ │ ├── Flaticon.ttf
│ │ │ └── Flaticon.woff
│ ├── line-awesome
│ │ ├── css
│ │ │ ├── line-awesome-font-awesome.css
│ │ │ ├── line-awesome-font-awesome.min.css
│ │ │ ├── line-awesome.css
│ │ │ └── line-awesome.min.css
│ │ └── fonts
│ │ │ ├── line-awesome.eot
│ │ │ ├── line-awesome.svg
│ │ │ ├── line-awesome.ttf
│ │ │ ├── line-awesome.woff
│ │ │ └── line-awesome.woff2
│ └── metronic
│ │ ├── css
│ │ └── styles.css
│ │ └── fonts
│ │ ├── Metronic_fda1334c35d0f5fe2afb3afebbb6774a.eot
│ │ ├── Metronic_fda1334c35d0f5fe2afb3afebbb6774a.svg
│ │ ├── Metronic_fda1334c35d0f5fe2afb3afebbb6774a.ttf
│ │ ├── Metronic_fda1334c35d0f5fe2afb3afebbb6774a.woff
│ │ └── Metronic_fda1334c35d0f5fe2afb3afebbb6774a.woff2
├── _sass
│ ├── _config.scss
│ ├── _functions.scss
│ ├── _helpers.scss
│ ├── _mixins.scss
│ ├── _normalize.scss
│ ├── _variables.scss
│ ├── alert
│ │ ├── _alert.scss
│ │ └── _config.scss
│ ├── arrows
│ │ ├── _config.scss
│ │ └── _mixins.scss
│ ├── aside
│ │ ├── _aside-header-menu-mobile.scss
│ │ ├── _aside-left.scss
│ │ ├── _aside-right.scss
│ │ └── _config.scss
│ ├── blockui
│ │ └── _blockui.scss
│ ├── bootstrap.scss
│ ├── bootstrap
│ │ ├── dropdown
│ │ │ ├── _config.scss
│ │ │ └── _dropdown.scss
│ │ └── index.scss
│ ├── buttons
│ │ ├── _buttons.scss
│ │ └── _config.scss
│ ├── container
│ │ ├── _config.scss
│ │ └── _container.scss
│ ├── custom.scss
│ ├── demo
│ │ ├── _demo.scss
│ │ └── _icon.scss
│ ├── dropdown
│ │ ├── _config.scss
│ │ ├── _dropdown.scss
│ │ └── _mixins.scss
│ ├── footer
│ │ ├── _config.scss
│ │ └── _footer.scss
│ ├── form
│ │ ├── _config.scss
│ │ └── _form.scss
│ ├── grid
│ │ └── _grid.scss
│ ├── header
│ │ ├── _brand.scss
│ │ ├── _config.scss
│ │ ├── _header.scss
│ │ ├── _search.scss
│ │ └── _topbar.scss
│ ├── input
│ │ ├── _checkbox-radio.scss
│ │ └── _input.scss
│ ├── menu
│ │ ├── _config.scss
│ │ ├── _menu.scss
│ │ └── ver
│ │ │ ├── _base.scss
│ │ │ ├── _extend.scss
│ │ │ └── _helpers.scss
│ ├── modal
│ │ └── _modal.scss
│ ├── nav
│ │ ├── _config.scss
│ │ ├── _grid.scss
│ │ ├── _nav.scss
│ │ ├── _scroll-top.scss
│ │ └── _sticky.scss
│ ├── offcanvas
│ │ └── _offcanvas.scss
│ ├── page
│ │ ├── _config.scss
│ │ ├── _page.scss
│ │ ├── aside
│ │ │ ├── __config.scss
│ │ │ ├── _aside-header-menu-mobile.scss
│ │ │ ├── _aside-left.scss
│ │ │ └── _aside-right.scss
│ │ ├── base
│ │ │ ├── _body.scss
│ │ │ ├── _config.scss
│ │ │ └── _page.scss
│ │ ├── footer
│ │ │ ├── __config.scss
│ │ │ └── _default.scss
│ │ ├── header
│ │ │ ├── _brand.scss
│ │ │ ├── _config.scss
│ │ │ ├── _header.scss
│ │ │ ├── _search.scss
│ │ │ └── _topbar.scss
│ │ ├── menu-aside
│ │ │ ├── __config.scss
│ │ │ └── _menu.scss
│ │ ├── menu-header
│ │ │ ├── __config.scss
│ │ │ └── _menu.scss
│ │ └── subheader
│ │ │ └── _default.scss
│ ├── popover
│ │ └── _popover.scss
│ ├── portlets
│ │ ├── _config.scss
│ │ └── _portlets.scss
│ ├── progress
│ │ └── _progress.scss
│ ├── scroll
│ │ └── _scroll.scss
│ ├── spinners
│ │ ├── _config.scss
│ │ ├── _loader.scss
│ │ └── _spinner.scss
│ ├── stack
│ │ └── _stack.scss
│ ├── subheader
│ │ └── _subheader.scss
│ ├── tab
│ │ └── _tab.scss
│ ├── table
│ │ └── _table.scss
│ ├── toggler
│ │ └── _mixins.scss
│ ├── tooltip
│ │ └── _tooltip.scss
│ └── typography
│ │ ├── _badge.scss
│ │ ├── _code.scss
│ │ ├── _link.scss
│ │ ├── _section.scss
│ │ └── _separator.scss
├── _scripts
│ ├── _base
│ │ ├── _app.js
│ │ ├── _util.js
│ │ ├── dropdown
│ │ │ └── dropdown.js
│ │ ├── menu
│ │ │ └── menu.js
│ │ ├── offcanvas
│ │ │ └── offcanvas.js
│ │ └── toggle
│ │ │ └── toggle.js
│ ├── _is.js
│ ├── _jquery.js
│ ├── _proptypes.js
│ ├── _public.js
│ └── _utils.js
├── index.js
└── index.scss
├── package.json
├── src
├── App.css
├── App.jsx
├── assets
│ └── logo_blue.png
├── components
│ ├── .gitkeep
│ ├── _base
│ │ ├── BlockUI.jsx
│ │ ├── Grid.jsx
│ │ ├── GridItem.jsx
│ │ └── Loader.jsx
│ ├── _button
│ │ ├── ButtonGroup.jsx
│ │ └── ButtonIcon.jsx
│ └── _framework
│ │ ├── Body.jsx
│ │ ├── Page.jsx
│ │ └── Wrapper.jsx
├── demo
│ └── pages
│ │ ├── _button
│ │ ├── _buttonGroup.jsx
│ │ └── _buttonIcon
│ │ │ ├── _flaticonIcon.jsx
│ │ │ ├── _fontAwesomeIcon.jsx
│ │ │ └── _lineawesomeIcon.jsx
│ │ ├── _dashboard.jsx
│ │ └── base
│ │ ├── _alerts.jsx
│ │ ├── _blockUI.jsx
│ │ ├── _grid.jsx
│ │ ├── _spinners.jsx
│ │ ├── _stateColors.jsx
│ │ └── _typography.jsx
├── main.js
├── routes
│ └── index.js
└── sass
│ ├── _demo.scss
│ └── framework
│ └── component
│ └── base
│ └── grid
│ └── _grid.scss
└── static
└── .gitkeep
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {"modules": false}],
4 | "stage-1",
5 | "react"
6 | ],
7 | "plugins": [
8 | "transform-runtime",
9 | "transform-decorators-legacy"
10 | ],
11 | "env": {
12 | "production": {
13 | "plugins": [[
14 | "transform-react-remove-prop-types",
15 | {
16 | "removeImport": true,
17 | "ignoreFilenames": ["node_modules"]
18 | }
19 | ]]
20 | },
21 | "development": {
22 | "plugins": ["react-hot-loader/babel"]
23 | },
24 | "test": {
25 | "presets": ["env", "stage-1"],
26 | "plugins": [
27 | ["module-resolver", {
28 | "alias": {
29 | "src": "./src"
30 | }
31 | }]
32 | ]
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | _book/
4 | /dist/
5 | doc/_book/
6 | npm-debug.log*
7 | yarn-debug.log*
8 | yarn-error.log*
9 | package-lock.json
10 | .markeditor/
11 |
12 | # Editor directories and files
13 | .idea
14 | .vscode
15 | *.suo
16 | *.ntvs*
17 | *.njsproj
18 | *.sln
19 | *.Archive
20 | package-lock.json
21 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log
5 | selenium-debug.log
6 | test/unit/coverage
7 | test/e2e/reports
8 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "plugins": {
3 | // to edit target browsers: use "browserlist" field in package.json
4 | "autoprefixer": {}
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Qu Long Jun
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | 该项目已迁移至 [Shine Design](https://github.com/shine-design/shine-design),本项目停止更新。
3 |
4 |
5 |
6 |
7 |
8 |
9 | 
10 |
11 |
12 | ------
13 |
14 |
15 |      
16 |
17 |
18 |
19 |
20 | 一套基于 [React](http://facebook.github.io/react/) 实现的企业级响应式UI设计方案
21 |
22 |
23 |
24 | ## 功能特性
25 | * 现代化的企业视觉UI设计,符合现代审美标准。
26 | * 从基础元素到复杂交互,多元化的组件复用技术。
27 | * 完全开源,丰富的使用示例,完善的技术文档。
28 |
29 | ## 快速构建
30 |
31 | 推荐使用快速构建工具 `Omegaui-CLI` 搭建项目,只需依次执行:
32 | 
33 | > 构建工具具体用法清参考[构建工具说明](https://github.com/qulongjun/Omega-cli)。
34 |
35 | ## 使用示例
36 |
37 | 以下是一个组件的简单使用示例, **你只需做如下事情**:
38 | 
39 |
40 | > 我们提供了丰富的组件供开发者使用,可以访问[官方示例](https://omega.qulongjun.com)查看具体实现。
41 |
42 | ## 调试与部署
43 |
44 | 快速构建工具已经集成了一键式调试与部署指令,只需执行如下命令即可实现开发环境下的调试和生产环境的部署:
45 | 
46 |
47 | > 开发环境下启动调试后,在浏览器中打开 [http://127.0.0.1:8080](http://127.0.0.1:8080) 查看效果。
48 |
49 | ## 开发计划
50 | - [x] 页面布局
51 | - [x] 基础组件
52 | - [x] 按钮组件
53 | - [ ] 表单组件
54 | - [ ] 图表组件
55 | - [ ] 地图组件
56 | - [ ] 高级表格组件
57 | - [ ] 工具类组件
58 |
59 | ## 发布周期
60 | 本项目更新参照 [Semantic Versioning 2.0.0](https://semver.org/) 标准进行:
61 | - 修订版本:每周一个修订版本,用于进行日常的 Bug 修复(非紧急)。
62 | - 次版本号:每一到两天发布一个次版本,次版本更新会向下兼容当前主版本。
63 | - 主版本号:重大迭代工作,非周期性更新,与历史主版本不兼容。
64 |
65 | ## 获取帮助
66 | 如果您在使用的过程中碰到问题,可以通过下面几个途径寻求帮助:
67 | * 我们提供了详细的[说明文档](https://omega-doc.qulongjun.com),大部分问题都可以在文档中得以解决。
68 | * 利用强大的 [Issue](https://github.com/qulongjun/Omega-UI/issues) 功能,您可以直接进行提问,我们会随时关注并解答,同时我们也鼓励资深用户通过 Issue 给新人提供帮助。
69 |
70 | ## 参与项目
71 | 我们很期待您能参与进来一起开发 :),但我们希望您能遵守相关约定:
72 | * 我们有一份[行为准则](./CODE_OF_CONDUCT.md),希望所有的贡献者都能遵守,请花时间阅读一遍全文以确保您能明白哪些是可以做的,哪些是不可以做的。
73 | * 基于我们的发布周期,我们每周都会从 `master` 分支切一个 `feature` 分支出来,命名规则一般为 `feature-版本号` ,例如 `feature-1.3.0` 即将要发布的 `1.3.0` 版本。如果您进行了一个Bug修复,请直接 Pull Request 到 `master` 分支,如果进行的是新功能开发,请 Pull Request 到当前的 `feature` 分支。
74 | * 如果您有较好的创意,我们也欢迎您通过[Issue](https://github.com/qulongjun/Omega-UI/issues) 直接告诉我们。
75 |
76 | ## 联系我们
77 | 如果您需要联系我们,可以通过发送邮件至 [omega_ui@163.com](mailto:omega_ui@163.com) 。
78 |
79 | ## License
80 | 本项目基于 [MIT license](./LICENSE) 开源。
81 |
--------------------------------------------------------------------------------
/build/build.js:
--------------------------------------------------------------------------------
1 | // https://github.com/shelljs/shelljs
2 | require('./check-versions')();
3 |
4 | process.env.NODE_ENV = 'production';
5 |
6 | const path = require('path');
7 | const chalk = require('chalk');
8 | const shell = require('shelljs');
9 | const webpack = require('webpack');
10 | const config = require('../config');
11 | const webpackConfig = require('./webpack.prod.conf');
12 |
13 | const assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory);
14 | shell.rm('-rf', assetsPath);
15 | shell.mkdir('-p', assetsPath);
16 | shell.config.silent = true;
17 | shell.cp('-R', 'static/*', assetsPath);
18 | shell.config.silent = false;
19 |
20 | webpack(webpackConfig, (err, stats) => {
21 | if (err) throw err;
22 | process.stdout.write(stats.toString({
23 | warnings: false,
24 | colors: true,
25 | modules: false,
26 | children: false,
27 | chunks: false,
28 | chunkModules: false
29 | }) + '\n\n');
30 |
31 | console.log(chalk.cyan(' Build complete.\n'))
32 | console.log(chalk.yellow(
33 | ' Tip: built files are meant to be served over an HTTP server.\n' +
34 | ' Opening index.html over file:// won\'t work.\n'
35 | ));
36 | });
37 |
--------------------------------------------------------------------------------
/build/check-versions.js:
--------------------------------------------------------------------------------
1 | const chalk = require('chalk');
2 | const semver = require('semver');
3 | const packageConfig = require('../package.json');
4 |
5 | const exec = cmd => require('child_process').execSync(cmd).toString().trim();
6 |
7 | const versionRequirements = [
8 | {
9 | name: 'node',
10 | currentVersion: semver.clean(process.version),
11 | versionRequirement: packageConfig.engines.node
12 | },
13 | {
14 | name: 'npm',
15 | currentVersion: exec('npm --version'),
16 | versionRequirement: packageConfig.engines.npm
17 | }
18 | ];
19 |
20 | module.exports = () => {
21 | let warnings = [];
22 | for (let i = 0; i < versionRequirements.length; i++) {
23 | let mod = versionRequirements[i];
24 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
25 | warnings.push(mod.name + ': ' +
26 | chalk.red(mod.currentVersion) + ' should be ' +
27 | chalk.green(mod.versionRequirement)
28 | );
29 | }
30 | }
31 |
32 | if (warnings.length) {
33 | console.log('');
34 | console.log(chalk.yellow('To use this template, you must update following to modules:'));
35 | console.log();
36 | for (let i = 0; i < warnings.length; i++) {
37 | let warning = warnings[i];
38 | console.log(' ' + warning);
39 | }
40 | console.log();
41 | process.exit(1);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/build/dev-client.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | require('eventsource-polyfill');
3 | const hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true');
4 |
5 | hotClient.subscribe(event => {
6 | if (event.action === 'reload') {
7 | window.location.reload();
8 | }
9 | });
10 |
--------------------------------------------------------------------------------
/build/utils.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 | const config = require('../config');
3 | const MiniCssExtractPlugin = require('mini-css-extract-plugin');
4 |
5 | const isProd = process.env.NODE_ENV === 'production';
6 |
7 | exports.assetsPath = _path => {
8 | const assetsSubDirectory = isProd
9 | ? config.build.assetsSubDirectory
10 | : config.dev.assetsSubDirectory;
11 | return path.posix.join(assetsSubDirectory, _path);
12 | };
13 |
14 | exports.cssLoaders = options => {
15 | options = options || {};
16 |
17 | const cssLoader = {
18 | loader: 'css-loader',
19 | options: {
20 | minimize: isProd,
21 | sourceMap: options.sourceMap,
22 | modules: config.base.cssModules
23 | }
24 | };
25 |
26 | // generate loader string to be used with extract text plugin
27 | function generateLoaders (loader, loaderOptions) {
28 | const loaders = [cssLoader];
29 |
30 | // enable postcss by default
31 | loaders.push({ loader: 'postcss-loader' });
32 |
33 | if (loader) {
34 | loaders.push({
35 | loader: loader + '-loader',
36 | options: Object.assign({}, loaderOptions, {
37 | sourceMap: options.sourceMap
38 | })
39 | });
40 | }
41 |
42 | // Extract CSS when in production build
43 | return [{
44 | loader: isProd ? MiniCssExtractPlugin.loader : 'style-loader'
45 | }].concat(loaders);
46 | }
47 |
48 | return {
49 | css: generateLoaders(),
50 | less: generateLoaders('less'),
51 | sass: generateLoaders('sass', { indentedSyntax: true }),
52 | scss: generateLoaders('sass'),
53 | stylus: generateLoaders('stylus'),
54 | styl: generateLoaders('stylus')
55 | };
56 | }
57 |
58 | exports.styleLoaders = options => {
59 | const output = [];
60 | const loaders = exports.cssLoaders(options);
61 | for (let extension in loaders) {
62 | const loader = loaders[extension];
63 | output.push({
64 | test: new RegExp('\\.' + extension + '$'),
65 | loader: loader
66 | });
67 | }
68 | return output;
69 | };
70 |
--------------------------------------------------------------------------------
/build/webpack.base.conf.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 | const WebpackBar = require('webpackbar');
3 | const utils = require('./utils');
4 | const config = require('../config');
5 |
6 | const resolve = dir => path.join(__dirname, '..', dir);
7 |
8 | module.exports = {
9 | entry: {
10 | app: './src/main.js'
11 | },
12 | output: {
13 | path: config.build.assetsRoot,
14 | filename: '[name].js',
15 | publicPath: process.env.NODE_ENV === 'production'
16 | ? config.build.assetsPublicPath
17 | : config.dev.assetsPublicPath
18 | },
19 | resolve: {
20 | extensions: ['.js', '.jsx', '.json'],
21 | modules: [
22 | resolve('src'),
23 | resolve('node_modules')
24 | ],
25 | alias: {
26 | 'src': resolve('src'),
27 | 'assets': resolve('src/assets'),
28 | 'components': resolve('src/components'),
29 | 'omega': resolve('lib')
30 | }
31 | },
32 | module: {
33 | rules: [
34 | {
35 | test: /\.jsx?$/,
36 | loader: 'babel-loader',
37 | include: [resolve('src'), resolve('test'), resolve('demo')],
38 | options: {
39 | cacheDirectory: true
40 | }
41 | },
42 | {
43 | test: /\.osx?$/,
44 | loader: 'babel-loader',
45 | include: [resolve('lib')],
46 | options: {
47 | cacheDirectory: true
48 | }
49 | },
50 | {
51 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
52 | loader: 'url-loader',
53 | query: {
54 | limit: 10000,
55 | name: utils.assetsPath('img/[name].[hash:7].[ext]')
56 | }
57 | },
58 | {
59 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
60 | loader: 'url-loader',
61 | query: {
62 | limit: 10000,
63 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
64 | }
65 | }
66 | ]
67 | },
68 | plugins: [new WebpackBar()]
69 | };
70 |
--------------------------------------------------------------------------------
/build/webpack.dev.conf.js:
--------------------------------------------------------------------------------
1 | const utils = require('./utils');
2 | const webpack = require('webpack');
3 | const config = require('../config');
4 | const merge = require('webpack-merge');
5 | const baseWebpackConfig = require('./webpack.base.conf');
6 | const HtmlWebpackPlugin = require('html-webpack-plugin');
7 | const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
8 |
9 | // add hot-reload related code to entry chunks
10 | Object.keys(baseWebpackConfig.entry).forEach(name => {
11 | baseWebpackConfig.entry[name] = [
12 | 'react-hot-loader/patch',
13 | './build/dev-client'
14 | ].concat(baseWebpackConfig.entry[name]);
15 | });
16 |
17 | module.exports = merge(baseWebpackConfig, {
18 | mode: 'development',
19 | module: {
20 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
21 | },
22 | // cheap-module-eval-source-map is faster for development
23 | devtool: '#cheap-module-eval-source-map',
24 | plugins: [
25 | new webpack.DefinePlugin({
26 | 'process.env': config.dev.env
27 | }),
28 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
29 | new webpack.HotModuleReplacementPlugin(),
30 | new webpack.NoEmitOnErrorsPlugin(),
31 | // https://github.com/ampedandwired/html-webpack-plugin
32 | new HtmlWebpackPlugin({
33 | filename: 'index.html',
34 | template: 'index.html',
35 | inject: true
36 | }),
37 | new FriendlyErrorsPlugin()
38 | ]
39 | });
40 |
--------------------------------------------------------------------------------
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | const merge = require('webpack-merge');
2 | const prodEnv = require('./prod.env');
3 |
4 | module.exports = merge(prodEnv, {
5 | NODE_ENV: '"development"'
6 | });
7 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 |
3 | module.exports = {
4 | base: {
5 | // CSS modules off by default.
6 | // Before you set it to `true`,
7 | // remember that the style will be
8 | // messed up for our template's style importing
9 | // is not for CSS modules
10 | cssModules: false
11 | },
12 | build: {
13 | env: require('./prod.env'),
14 | index: path.resolve(__dirname, '../dist/index.html'),
15 | assetsRoot: path.resolve(__dirname, '../dist'),
16 | assetsSubDirectory: 'static',
17 | assetsPublicPath: '/',
18 | // disable by default for clients should not
19 | // get your source code from sourceMap.
20 | // feel free to turn it on when you need sourceMap
21 | // in production
22 | productionSourceMap: false,
23 | // Gzip off by default as many popular static hosts such as
24 | // Surge or Netlify already gzip all static assets for you.
25 | // Before setting to `true`, make sure to:
26 | // npm install --save-dev compression-webpack-plugin
27 | productionGzip: false,
28 | productionGzipExtensions: ['js', 'css'],
29 | // Run the build command with an extra argument to
30 | // View the bundle analyzer report after build finishes:
31 | // `npm run build --report`
32 | // Set to `true` or `false` to always turn it on or off
33 | bundleAnalyzerReport: process.env.npm_config_report
34 | },
35 | dev: {
36 | env: require('./dev.env'),
37 | port: 8080,
38 | autoOpenBrowser: true,
39 | assetsSubDirectory: 'static',
40 | assetsPublicPath: '/',
41 | proxyTable: {},
42 | // CSS Sourcemaps off by default because relative paths are "buggy"
43 | // with this option, according to the CSS-Loader README
44 | // (https://github.com/webpack/css-loader#sourcemaps)
45 | // In our experience, they generally work as expected,
46 | // just be aware of this issue when enabling this option.
47 | cssSourceMap: false
48 | }
49 | };
50 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | NODE_ENV: '"production"'
3 | };
4 |
--------------------------------------------------------------------------------
/demo/_pages/_menu.jsx:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * @Demo: Menu
4 | * @User: Longjun.Qu
5 | * @Date: 2018-06-25
6 | * @Time: 17:36
7 | *
8 | */
9 |
10 |
11 | import React, {Component, Fragment} from 'react';
12 | import {Content, Div, Portlet, Section, Separator, Link, Space, SubHeader} from 'omega';
13 | import logo_blue from 'src/assets/logo_blue.png';
14 | class Menu extends Component {
15 | constructor(props) {
16 | super(props);
17 | this.state = {}
18 | }
19 |
20 | render() {
21 | const _props = this.props;
22 | return (
23 |
24 |
30 |
31 |
32 |
33 |
37 |
38 |
39 |
40 | React 中文官网
43 |
44 | 技术文档
47 |
48 | 官方示例
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 | );
59 | }
60 | }
61 |
62 | export default Menu;
--------------------------------------------------------------------------------
/demo/_routes/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {BrowserRouter, Route, Switch} from 'react-router-dom'
3 | import App from '../_pages/_app';
4 | export default (
5 |
6 |
7 |
8 |
9 |
10 | )
--------------------------------------------------------------------------------
/doc/.md_configs.data:
--------------------------------------------------------------------------------
1 | {"md_template_content": "", "md_includes": "", "md_injected_css": ""}
--------------------------------------------------------------------------------
/doc/.me_configs.data:
--------------------------------------------------------------------------------
1 | {"md_injected_css": "", "md_template_content": "", "file_list_type": 2, "toc": 0, "files_hook": "", "editor_use_local_url": 0, "editor_image_path": "", "hide_suffix": 0, "file_list": 1, "new_file_template": "", "md_includes": "", "preview": 0, "default_ext": 0, "editor_image_format": 0, "files_sort": 0}
--------------------------------------------------------------------------------
/doc/Changelog.md:
--------------------------------------------------------------------------------
1 | # 更新日志
2 | Omega UI的更新参照 [Semantic Versioning 2.0.0](https://semver.org/) 标准进行。
3 |
4 | - 修订版本:每周一个修订版本,用于进行日常的 Bug 修复(非紧急)。
5 | - 次版本号:每一到两天发布一个次版本,次版本更新会向下兼容当前主版本。
6 | - 主版本号:重大迭代工作,非周期性更新,与历史主版本不兼容。
7 |
8 | ###当前版本
9 | 稳定版本:`0.1.0`
10 |
11 | 开发版本:`0.1.4`
12 |
13 | ###历史记录
14 | #### 0.1.4
15 | `2018-07-05`
16 | * 组合表单组件 `Group` 上线(内测)。
17 | * 修复部分官方示例样式。
18 |
19 | #### 0.1.3
20 | `2018-07-03`
21 | * 修复 `BlockUI` 组件无法关闭的问题。
22 | * 增加 `Input`、`Select` 组件的`Refs`,该属性可以使开发者直接操作表单元素。
23 |
24 | #### 0.1.2
25 | `2018-07-02`
26 | * 表单控制组件 `Checkbox`、`Radio` 上线。
27 | * 官方示例更新,上线 `选择表单` 示例。
28 |
29 | #### 0.1.1
30 | `2018-07-02`
31 | * 表单容器组件 `Form`、`FormGroup` 上线。
32 | * 表单控制组件 `Input`、`FormStatic`、`FileInput`、`Textarea`、`Select` 上线。
33 | * 官方示例更新,上线 `基础表单` 示例。
34 | * 官方文档更新,上线 致谢
35 |
36 | #### 0.1.0
37 | `2018-06-29`
38 | * 页面布局组件 `Grid`、`Stack` 上线。
39 | * 官方示例更新,上线 `Header` 、 `Footer` 、 `Aside` 、`Menu` 等系统组件示例。
40 | * 官方文档更新,上线 `栅格系统`、`内容布局`使用说明。
41 | * 修复部分样式问题。
42 |
43 |
44 | #### 0.0.9
45 | `2018-06-27`
46 | * 下拉组件 `Dropdown` 上线。
47 | * 官方示例更新,上线 `下拉组件` 示例。
48 | * 官方文档更新,上线 `下拉组件`使用说明。
49 |
50 | #### 0.0.8
51 | `2018-06-26`
52 | * 变更项目结构,移除原 `src` 路径下所有组件库,迁移至 `lib` 文件夹。
53 | * 变更组件调用方式。
54 | * 合并原 Omega-template 项目,改由 `template/*` 分支管理。
55 | * Omegeui-cli 快速构建工具发布。
56 |
57 | #### 0.0.7
58 | `2018-06-21`
59 | * 元素组件发布。
60 | * 文档增加元素组件使用说明。
61 |
62 | #### 0.0.6
63 | `2018-06-20`
64 | * 发布 `npm` 服务,支持直接通过 `npm` 命令下载 Omega UI。
65 | * 开始编写技术文档。
--------------------------------------------------------------------------------
/doc/Install.md:
--------------------------------------------------------------------------------
1 | # 快速上手
2 | Omega 致力于为程序员提供愉悦的开发体验。
3 | > 在开始 Omega 之旅之前,您需要有一定的前端基础,包括且不限于 React 入门和 Ecmascript 2015。本说明默认您已经具备了一定的 HTML 、 CSS 和 Javascript相关知识,并已经了解了 React 的开发方式。
4 |
5 | ### 第一个本地实例
6 | 在实际项目开发中,一般我们使用 `Webpack` 进行 `JSX` 的代码构建、代理管理、资源打包和部署等服务,Omega 提供了一套基于 `NPM` + `Webpack` 的开发模式,以下为简单步骤。
7 | **下载 Omega UI项目**
8 |
9 | 我们推荐使用 `npm` 的方式进行开发,不仅可以在开发环境调试,也可以便捷的在生产环境打包和部署,享受整个 `npm` 的生态链。
10 | ```bash
11 | $ npm install omega-ui
12 | ```
13 | >如果网络环境太差,推荐使用 cnpm 。
14 |
15 | **安装依赖环境**
16 |
17 | 通常情况下,您通过 npm 命令下载的项目是不包含依赖关系的,您可以通过以下命令进行依赖安装。
18 | ```bash
19 | $ cd omega-ui
20 | $ npm install
21 | ```
22 | >如果网络环境太差,推荐使用 cnpm 。
23 |
24 | **使用组件**
25 |
26 | 当您安装完依赖项,开发环境就已经搭建完毕,下面试着进行一个组件开发。
27 | 打开位于 `src` 目录下的 `App.jsx` ,键入如下代码:
28 | ```js
29 | import React,{Component} from 'react';
30 | import Text from '@Text';
31 | class App extends Component {
32 | render() {
33 | return (
34 | Hello World!
35 | );
36 | }
37 | }
38 | export default App;
39 | ```
40 | **开发调试**
41 |
42 | 在命令行中使用以下命令开启调试功能,并在浏览器中打开 http://localhost:8080 查看效果。
43 | ```bash
44 | $ npm run dev
45 | ```
46 |
47 | **构建与部署**
48 |
49 | 在命令行中使用以下命令进行生产环境的打包工作。
50 | ```bash
51 | $ npm run build`
52 | ```
53 | 打包之后会在项目根目录构建一个 `dist` 文件夹,您可以自行部署至生产环境中。
54 |
55 | > 以上环节仅是一个开发示例,您可以根据自己业务需求,自行设置相关流程和规范。
56 |
57 | ### 修改组件
58 | 由于业务需求的复杂,预设的组件无法完全满足实际业务需求,开发人员可以根据自己实际情况,对项目中的组件进行自定义或扩展操作。
59 | 欢迎进行试用和贡献。
--------------------------------------------------------------------------------
/doc/Introduce.md:
--------------------------------------------------------------------------------
1 | # 介绍
2 | > 基于React的响应式开发UI框架
3 |
4 | ### 特性
5 | - 现代化的视觉UI设计,符合现代审美标准。
6 | - 从基础元素到复杂交互,多元化的组件复用技术。
7 | - 完全开源,丰富的使用示例。
8 |
9 | ### 浏览器要求
10 | - 现代化浏览器(Chrome、Firefox较高版本,IE 10+)。
11 | - 浏览器需支持Ecmascript 2015。
12 | - 其他增强特性支持。
13 |
14 | ### 相关链接
15 | - [官网网站](https://o-ui.cn)
16 | - [使用示例](https://omega.qulongjun.com)
17 | - [Github](https://github.com/qulongjun/Omega-UI)
18 |
19 | ### 如何贡献
20 | 我们随时欢迎您以任何形式参与贡献,欢迎直接 Pull Request,或直接与我们联系。
21 |
22 | ### 社区帮助
23 | 如果您在使用中遇到任何问题,可以直接通过[Issue](https://github.com/qulongjun/Omega-UI/issues)与我们联系。
--------------------------------------------------------------------------------
/doc/README.md:
--------------------------------------------------------------------------------
1 | 
--------------------------------------------------------------------------------
/doc/SUMMARY.md:
--------------------------------------------------------------------------------
1 | # Summary
2 |
3 | * [Omega for React](README.md)
4 | * [介绍](Introduce.md)
5 | * [快速上手](Install.md)
6 | * [更新日志](Changelog.md)
7 | * [基础属性](ch1/public.md)
8 | * [状态颜色](ch1/stateColor.md)
9 | * [辅助类](ch1/helperClass.md)
10 | * [公共配置](ch2/public.md)
11 | * [_includeClass](ch2/_includeClass.md)
12 | * [_excludeClass](ch2/_excludeClass.md)
13 | * [_uniqueClass](ch2/_uniqueClass.md)
14 | * [_includeStyle](ch2/_includeStyle.md)
15 | * [_includeAttribute](ch2/_includeAttribute.md)
16 | * [_handle](ch2/_handle.md)
17 | * [_fontColor](ch2/_fontColor.md)
18 | * [_bgColor](ch2/_bgColor.md)
19 | * [组件](ch3/component.md)
20 | * [布局组件](ch3/grid/base.md)
21 | * [栅格系统组件](ch3/grid/grid.md)
22 | * [内容布局组件](ch3/grid/stack.md)
23 | * [元素组件](ch3/element/element.md)
24 | * [文本组件](ch3/element/text.md)
25 | * [段落组件](ch3/element/paragraph.md)
26 | * [标题组件](ch3/element/title.md)
27 | * [链接组件](ch3/element/link.md)
28 | * [代码组件](ch3/element/code.md)
29 | * [容器组件](ch3/element/div.md)
30 | * [引用组件](ch3/element/blockquote.md)
31 | * [列表组件](ch3/element/list.md)
32 | * [空间分隔组件](ch3/element/space.md)
33 | * [分割线组件](ch3/element/separator.md)
34 | * [按钮组件](ch3/button/button.md)
35 | * [基础按钮组件](ch3/button/baseButton.md)
36 | * [下拉按钮组件](ch3/button/dropdownButton.md)
37 | * [按钮组组件](ch3/button/groupButton.md)
38 | * [基础组件](ch3/base/base.md)
39 | * [图标组件](ch3/base/icon.md)
40 | * [消息框组件](ch3/base/alert.md)
41 | * [徽章组件](ch3/base/badge.md)
42 | * [遮罩组件](ch3/base/blockUI.md)
43 | * [加载组件](ch3/base/loader.md)
44 | * [模态组件](ch3/base/modal.md)
45 | * [导航组件](ch3/base/nav.md)
46 | * [弹出框组件](ch3/base/popover.md)
47 | * [提示框组件](ch3/base/tooltip.md)
48 | * [进度条组件](ch3/base/progress.md)
49 | * [滚动组件](ch3/base/scroll.md)
50 | * [选项卡组件](ch3/base/tab.md)
51 | * [表格组件](ch3/base/table.md)
52 | * [窗口组件](ch3/base/portlet.md)
53 | * [下拉组件](ch3/base/dropdown.md)
54 | * [致谢](Thanks.md)
55 |
--------------------------------------------------------------------------------
/doc/Thanks.md:
--------------------------------------------------------------------------------
1 | # 致谢
2 |
3 | > 希望 Omega 不会是UI框架的终点,希望前面这句话不只是希望。
4 |
5 |
6 |
7 | `Omega` 在创作过程中,参考了许多框架与设计,在此致以 **诚挚** 的感谢!
8 |
9 | | 插件名称 | URL |
10 | | :-: | :- |
11 | | Node.js | https://nodejs.org |
12 | | NPM | https://www.npmjs.com |
13 | | Bootstrap | https://getbootstrap.com |
14 | | jQuery | https://jquery.com |
15 | | Popper.js | https://popper.js.org |
16 | | SweetAlert2 | https://limonte.github.io/sweetalert2 |
17 | | JQuery Smooth Scroll | https://www.npmjs.com/package/jquery-smooth-scroll |
18 | | jQuery Form Plugin | http://malsup.com/jquery/form |
19 | | jQuery custom content scroller | http://manos.malihu.gr/jquery-custom-content-scroller |
20 | | jQuery BlockUI Plugin | http://malsup.com/jquery/block |
21 | | Animate.css | https://daneden.github.io/animate.css |
22 | | Socicon| http://www.socicon.com |
23 | | Font Awesome | http://fontawesome.io |
24 | | Flaticon | https://www.flaticon.com |
25 | | Tooltip.js | https://popper.js.org/tooltip-examples.html |
26 |
--------------------------------------------------------------------------------
/doc/_assets/build-tools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/_assets/build-tools.png
--------------------------------------------------------------------------------
/doc/_assets/demo_code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/_assets/demo_code.png
--------------------------------------------------------------------------------
/doc/_assets/dev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/_assets/dev.png
--------------------------------------------------------------------------------
/doc/book.json:
--------------------------------------------------------------------------------
1 | {
2 | "title": "Omega-UI 中文指南",
3 | "description": "Responsive Bootstrap Admin & Powerful UI Kit By React.",
4 | "language": "zh",
5 | "plugins": [
6 | "editlink",
7 | "splitter",
8 | "github",
9 | "anchors",
10 | "tbfed-pagefooter",
11 | "prism",
12 | "-highlight"
13 | ],
14 | "pluginsConfig": {
15 | "editlink": {
16 | "base": "https://github.com/qulongjun/Omega-UI/tree/master/doc",
17 | "label": "编辑本页"
18 | },
19 | "github": {
20 | "url": "https://github.com/qulongjun/Omega-UI"
21 | },
22 | "tbfed-pagefooter": {
23 | "copyright": "© Longjun Qu",
24 | "modify_label": "该文件修订时间:",
25 | "modify_format": "YYYY-MM-DD HH:mm:ss"
26 | },
27 | "prism": {
28 | "css": [
29 | "prismjs/themes/prism-solarizedlight.css"
30 | ]
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/doc/ch1/_image/2018-06-21-17-40-31.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch1/_image/2018-06-21-17-40-31.jpg
--------------------------------------------------------------------------------
/doc/ch1/_image/2018-06-21-17-42-15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch1/_image/2018-06-21-17-42-15.jpg
--------------------------------------------------------------------------------
/doc/ch1/helperClass.md:
--------------------------------------------------------------------------------
1 | # 辅助类
2 | > 辅助类(Helper Classes)是一类由 UI 预留,封装了一些简单样式实现,方便用户开发使用的 `class` 修饰符。
3 |
4 | ### 作用
5 | 辅助类可用于所有的 DOM 元素和组件(使用 [_includeClass](../ch2/_includeClass.md) 属性,并作用于组件最外层容器。)。辅助类等效于直接在 DOM 元素上设置行间样式,且可以被其他 `class` 修饰符或同名 `style` 样式覆盖。
6 |
7 | ### 类型
8 | | 修饰符名 | 描述 |
9 | | :---: | :---- |
10 | | `m-margin-[size]`、`m-margin-top-[size]`、`m-margin-bottom-[size]`、`m-margin-left-[size]`、`m-margin-right-[size]` | 设置 DOM 元素或组件的外边距属性,支持的参数有5、10、15、20、25、30、35、40、45和50(数字类型)。例如 `m-margin-50` 。 |
11 | | `m-padding-[size]`、`m-padding-top-[size]`、`m-padding-bottom-[size]`、`m-padding-left-[size]`、`m-padding-right-[size]` | 设置 DOM 元素或组件的内边距属性,支持的参数有5、10、15、20、25、30、35、40、45和50(数字类型)。例如 `m-padding-50` 。 |
12 | | `m--full-height` | 设置该 DOM 元素或组件 `100%` 占满整个外部容器的宽度。 |
13 | | `m--valign-top`、`m--valign-middle`、`m--valign-bottom` | 设置该 DOM 元素或组件的垂直对齐方式,支持顶部对齐,居中对齐和底部对齐 。 |
14 | | `m--space-[size]` | 空间分隔类,该辅助类可以用来分隔两个 DOM 元素或组件,支持的参数有5、10,15,20,30和40。例如 `m-padding-10` 。 |
15 | | `m--block-center` | 设置该 DOM 元素或组件以Block方式显示,并居中对齐。 |
16 | | `m--align-[alignment]` | 设置该 DOM 元素或组件的对齐方式,支持的参数有`left`、`right`、`center`。例如 `m--align-right`。 |
17 | | `m--pull-[direction]` | 设置该 DOM 元素或组件 `Pull` 方式,支持的参数有`left`、`right`、`center`。例如 `m--pull-right`。 |
18 | | `m--img-rounded` | 设置图片以圆角边框显示。 |
19 | | `m--block-inline` | 设置该 DOM 元素或组件以 `inline` 的方式显示。 |
20 | | `m--hide` | 设置该 DOM 元素或组件隐藏。 |
21 | | `m--clearfix` | 清除浮动样式。 |
22 | | `m--marginless` | 移除该 DOM 元素或组件的外边距设置。 |
23 | | `m--img-centered` | 设置图片以居中方式显示。 |
24 | |`m--font-transform-u`、`m--font-transform-l`、`m--font-transform-c`、`m--font-transform-i` | 设置英文字母的展示方式,支持的参数有大写(upper)、小写(lower)、首字母大写(capitalize)、默认(inherit) 。 |
25 | | `m--font-[weight]` | 设置文字的加粗程度,支持的参数有`thin`、`normal`、`bold`、`bolder`、`boldest`、`boldest2`。例如 `m--font-bold`。 |
26 | | `m--[type]-font-size-[size]` | 设置文字的尺寸,`type` 支持的参数有 `text` 和 `icon` ,`size` 支持的参数有`lg1`、`lg2`、`lg3`、`lg4`、`lg5`、`normal`、`sm1`、`sm2`、`sm3`、`sm4`、`sm5`。例如 `m--font-normal`、`m--icon-lg2`。 |
27 | |`m--font-[color] `、`m--font-inverse-[color]`、`m--bg-[color]`、`m--bg-fill-[color]` | 设置字体颜色或 DOM 元素和组件的背景颜色,支持的参数有`brand`、 `metal`、`light`、 `accent`、` focus`、 `primary`、 `success`、 `info`、` warning` 和 `danger`。 |
28 | |`m--visible-[breakpoint]`、`m--visible-[breakpoint]-inline-block`、`m--hidden-[breakpoint]` | 设置响应式 DOM 元素或组件的展示或隐藏临界点,支持的参数有`sm`、`md`、`lg`、`xxl`、`xxxl`。例如 `m--visible-sm` 。 |
--------------------------------------------------------------------------------
/doc/ch1/public.md:
--------------------------------------------------------------------------------
1 | # 基础属性
2 |
3 |
--------------------------------------------------------------------------------
/doc/ch1/stateColor.md:
--------------------------------------------------------------------------------
1 | # 状态颜色
2 | > 为了使整个应用程序的颜色统一, 简化开发流程,我们预设了数种符合现代化网页的状态颜色。
3 |
4 | ### Bootstrap 状态颜色
5 | `Bootstrap` 设计了种类丰富的状态颜色,这些状态可以直接应用于绝大部分元素和组件。我们重新设计了 `Bootstrap` 自带的六种状态:
6 |
7 | 
8 |
9 | ### 自定义状态颜色
10 | 与此同时,为了丰富用户使用,我们增加了一些特殊的状态颜色,例如 `Brand` 和 `Metal` 等。
11 |
12 | 
13 |
--------------------------------------------------------------------------------
/doc/ch2/_bgColor.md:
--------------------------------------------------------------------------------
1 | # _bgColor
2 | > 为组件设置背景颜色,指定该组件最外层 DOM 元素应用该背景颜色。组件内所有非覆盖容器均会显示该颜色。
3 |
4 | ### 作用
5 | 该属性是 `_includeClass` 和 `_includeStyle` 的语法糖。用来统一设置组件最外层容器默认背景颜色。若存在其他背景颜色设置,该属性可能会被覆盖。
6 |
7 | ### 语法
8 | ##### 调用方式
9 | ``` jsx
10 | //_bgColor 支持传入一个状态字符串作为参数。
11 | This is a div.
12 | //_bgColor 同时支持直接传入一个色值作为参数。
13 | This is a div.
14 | ```
15 |
16 | ##### 渲染结果
17 | ``` html
18 |
19 |
20 | This is a div.
21 |
22 |
23 |
24 | This is a div.
25 |
26 | ```
--------------------------------------------------------------------------------
/doc/ch2/_excludeClass.md:
--------------------------------------------------------------------------------
1 | # _excludeClass
2 | > 为组件排除 `class` 修饰符,指定该组件最外层 DOM 元素移除指定的 `class` 修饰符。 `_excludeClass` 属性较 `_includeClass` 属性具有更高优先级。
3 |
4 | ### 作用
5 | 该属性可以为某个组件移除一个或多个 `class` 修饰符,如果组件存在该 `class` 修饰符,则直接移除该修饰符,若不存在,则不进行操作。通常情况下,该 `class` 修饰符会直接作用于组件的最外层容器中,若组件为复合类型组件,则同时支持在子组件上设置`_excludeClass` 属性。
6 |
7 | ### 语法
8 | ##### 调用方式
9 | ``` jsx
10 |
18 | //_excludeClass 支持传入一个字符串作为参数。
19 | This is a text.
20 | //_excludeClass 同时支持传入一个字符串数组作为参数。
21 | This is a paragraph.
22 | ```
23 |
24 | ##### 渲染结果
25 | ``` html
26 |
27 |
28 | This is a text.
29 |
30 |
31 |
32 | This is a paragraph.
33 |
34 | ```
--------------------------------------------------------------------------------
/doc/ch2/_fontColor.md:
--------------------------------------------------------------------------------
1 | # _fontColor
2 | > 为组件设置字体颜色,指定该组件最外层 DOM 元素应用该字体颜色。组件内所有非覆盖字体均会显示该颜色。
3 |
4 | ### 作用
5 | 该属性是 `_includeClass` 和 `_includeStyle` 的语法糖。用来统一设置组件内部所有字体默认颜色。若子 DOM 元素或子组件存在字体颜色设置,该属性会被覆盖。
6 |
7 | ### 语法
8 | ##### 调用方式
9 | ``` jsx
10 | //_fontColor 支持传入一个状态字符串作为参数。
11 | This is a text.
12 | //_fontColor 同时支持直接传入一个色值作为参数。
13 | This is a paragraph.
14 | ```
15 |
16 | ##### 渲染结果
17 | ``` html
18 |
19 |
20 | This is a text.
21 |
22 |
23 |
24 | This is a paragraph.
25 |
26 | ```
--------------------------------------------------------------------------------
/doc/ch2/_includeAttribute.md:
--------------------------------------------------------------------------------
1 | # _includeAttribute
2 | > 为组件追加自定义 DOM 属性,指定该组件最外层 DOM 元素增加指定的自定义属性。
3 |
4 | ### 作用
5 | 该属性可以为某个组件增加一个或多个自定义属性,通常情况下,该自定义属性会直接作用于组件的最外层容器中,若组件为复合类型组件,则同时支持在子组件上设置`_includeAttribute` 属性。
6 |
7 | ### 语法
8 | ##### 调用方式
9 | ``` jsx
10 | //_includeAttribute 支持传入一个对象作为参数。
11 | This is a text.
16 | ```
17 |
18 | ##### 渲染结果
19 | ``` html
20 |
21 | This is a text.
22 |
23 | ```
24 |
--------------------------------------------------------------------------------
/doc/ch2/_includeClass.md:
--------------------------------------------------------------------------------
1 | # _incudeClass
2 | > 为组件追加 `class` 修饰符,指定该组件最外层 DOM 元素增加指定的 `class` 修饰符。
3 |
4 | ### 作用
5 | 该属性可以为某个组件增加一个或多个自定义的 `class` 修饰符,通常情况下,该 `class` 修饰符会直接作用于组件的最外层容器中,若组件为复合类型组件,则同时支持在子组件上设置`_includeClass` 属性。
6 |
7 | ### 语法
8 | ##### 调用方式
9 | ``` jsx
10 |
18 | //_includeClass 支持传入一个字符串作为参数。
19 | This is a text.
20 | //_includeClass 同时支持传入一个字符串数组作为参数。
21 | This is a paragraph.
22 | ```
23 |
24 | ##### 渲染结果
25 | ``` html
26 |
27 |
28 | This is a text.
29 |
30 |
31 |
32 | This is a paragraph.
33 |
34 | ```
--------------------------------------------------------------------------------
/doc/ch2/_includeStyle.md:
--------------------------------------------------------------------------------
1 | # _includeStyle
2 | > 为组件追加 `style` 样式,指定该组件最外层 DOM 元素增加指定的 `style` 样式。
3 |
4 | ### 作用
5 | 该属性可以为某个组件增加一个或多个自定义的 `style` 样式,通常情况下,该 `style` 样式会直接作用于组件的最外层容器中,若组件为复合类型组件,则同时支持在子组件上设置`_includeStyle` 属性。
6 |
7 | ### 语法
8 | ##### 调用方式
9 | ``` jsx
10 | //_includeStyle 支持传入一个对象作为参数。
11 | This is a text.
15 | ```
16 |
17 | ##### 渲染结果
18 | ``` html
19 |
20 | This is a text.
21 |
22 | ```
23 |
24 | ### 注意
25 | 由于 React 的 `JSX` 行内样式具有特殊性,因此需要采用`驼峰式` 的 Key 作为样式的键值,例如:`backgroundSize`、`fontSize`、`zIndex` 等。
--------------------------------------------------------------------------------
/doc/ch2/_uniqueClass.md:
--------------------------------------------------------------------------------
1 | # _uniqueClass
2 | > 为组件设置唯一 `class` 修饰符,指定该组件最外层 DOM 元素仅设置指定的 `class` 修饰符。 `_uniqueClass` 属性具有最该优先级。
3 |
4 | ### 作用
5 | 该属性可以为某个组件移除全部 `class` 修饰符,并追加该属性设置的 `class` 修饰符。通常情况下,该 `class` 修饰符会直接作用于组件的最外层容器中,若组件为复合类型组件,则同时支持在子组件上设置`_uniqueClass` 属性。
6 |
7 | ### 语法
8 | ##### 调用方式
9 | ``` jsx
10 |
18 | //_uniqueClass 支持传入一个字符串作为参数。
19 | This is a text.
20 | //_uniqueClass 同时支持传入一个字符串数组作为参数。
21 | This is a paragraph.
22 | ```
23 |
24 | ##### 渲染结果
25 | ``` html
26 |
27 |
28 | This is a text.
29 |
30 |
31 |
32 | This is a paragraph.
33 |
34 | ```
--------------------------------------------------------------------------------
/doc/ch2/public.md:
--------------------------------------------------------------------------------
1 | # 公共配置
2 | > 所有组件的公共配置属性。
3 |
4 |
5 | #### 什么是公共配置?
6 | 公共配置参数是指绝大部分组件均可以按照同类标准进行配置并生效的参数,若该组件存在子组件,则子组件也可以按照同类标准进行配置并生效。
7 |
8 | #### 哪些组件支持公共配置?
9 | 到目前为止,绝大部分组件均已支持公共参数,在各个组件的配置参数界面可以查看当前组件支持情况。
10 |
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-11-23-54.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-11-23-54.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-11-40-31.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-11-40-31.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-11-45-29.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-11-45-29.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-11-48-34.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-11-48-34.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-11-48-52.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-11-48-52.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-11-49-15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-11-49-15.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-11-49-48.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-11-49-48.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-11-51-23.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-11-51-23.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-13-20-53.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-13-20-53.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-13-24-42.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-13-24-42.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-17-20-27.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-17-20-27.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-17-40-49.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-17-40-49.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-18-22-34.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-18-22-34.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-22-18-34-13.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-22-18-34-13.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-27-11-13-22.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-27-11-13-22.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/_image/2018-06-27-11-14-44.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/base/_image/2018-06-27-11-14-44.jpg
--------------------------------------------------------------------------------
/doc/ch3/base/alert.md:
--------------------------------------------------------------------------------
1 | # 消息框组件
2 | > 块级组件,显示一个带背景色的高亮矩形可交互区域。
3 |
4 | ### 语法
5 | ##### 私有参数
6 |
7 | | 参数名 | 类型 | 默认值 | 描述
8 | | :-: | :-: | :-: | :- |
9 | | title | string | 空 | 设置消息框标题。|
10 | | message | string | 空 | 设置消息框内容。|
11 | | alertColor | string | 空 | 设置消息框背景色,参考 [状态颜色](../../ch1/stateColor.md)。|
12 | | type | string/string | 空 | 设置消息框类型,支持的参数有 `outline` 、 `outline-2x`、`square`、`normal`。|
13 | | closeBtn | bool | false | 设置消息框是否显示关闭图标。|
14 | | icon | string | 空 | 设置消息框最左侧显示的图标。|
15 | | iconStyle | string | regular | 设置消息框图标的显示样式,支持的参数有 `regular` 、`bold`。|
16 | | actions | array | 空 | 设置消息框交互按钮,数组接受对象作为参数,对象配置见下文。|
17 | | actionStyle | object | 空 | 设置消息框交互按钮外部容器样式。|
18 |
19 | actions对象
20 |
21 | | 参数名 | 类型 | 描述
22 | | :-: | :-: | :- |
23 | | closeBtn | bool | 设置当前按钮是否为关闭按钮。|
24 | >除了 `closeBtn` 属性之外,`item` 对象的其他属性完全继承自 [基础按钮组件](../button/baseButton.md) 。
25 |
26 | ##### 调用方式
27 | ``` jsx
28 | import Alert from '@Alert';
29 |
35 | ```
36 | ##### 渲染结果
37 | ``` html
38 |
39 |
40 | Well done!
41 | You successfully read this important alert message.
42 |
43 |
44 | ```
45 |
46 | ##### 实现效果
47 | 
48 |
49 | ### 最佳实践
50 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
51 |
52 | ##### 丰富的背景色
53 | 在实际业务中,我们可以使用不同背景色的消息框对用户进行相应的提示,例如:用户操作成功可以使用 `success` 状态的消息框,用户操作失败可以使用 `danger` 状态的颜色等。
54 |
55 | **代码示例:**
56 | ```js
57 | {
58 | alertColor:'danger'
59 | }
60 | ```
61 |
62 | **实现效果:**
63 | 
64 |
65 | ##### 消息框样式
66 | 为了统一应用程序中UI设计,消息框组件提供了四种样式可供选择
67 | - normal:以圆角矩形的样式显示。
68 | - outline:以反色的样式显示。
69 | - outline-2x:以反色边框加粗的样式显示。
70 | - square:以直角矩形的样式显示。
71 | - air:设置阴影效果。
72 |
73 |
74 | **代码示例:**
75 | ```js
76 | {
77 | type:['outline','outline-2x']
78 | }
79 | ```
80 |
81 | **实现效果:**
82 |
83 | 
84 |
--------------------------------------------------------------------------------
/doc/ch3/base/badge.md:
--------------------------------------------------------------------------------
1 | # 徽章组件
2 | > 行间组件,显示一个带背景色的包含文本区域,用于突出显示某些文本,如未读数量等。
3 |
4 | ### 语法
5 | ##### 私有参数
6 |
7 | | 参数名 | 类型 | 默认值 | 描述
8 | | :-: | :-: | :-: | :- |
9 | | bgColor | string | 空 | 设置徽章背景颜色,参考 [状态颜色](../../ch1/stateColor.md)。|
10 | | inverse | bool | false | 设置徽章是否反色显示。|
11 | | type | string/array | 空 | 设置徽章显示样式,支持的参数有 `square`、 `wide` 、 `rounded` 、 `dot` 、`dot-sm ` 、`normal` 。|
12 |
13 | ##### 调用方式
14 | ``` jsx
15 | import Badge from '@Badge';
16 | 3
19 | ```
20 | ##### 渲染结果
21 | ``` html
22 | 3
23 | ```
24 | ##### 实现效果
25 | 
26 | ### 最佳实践
27 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
28 | ##### 徽章样式
29 | 通过 `type` 属性,我们可以便捷的控制徽章的显示样式。
30 |
31 | **代码示例:**
32 | ```js
33 | {
34 | type:'wide'
35 | }
36 | ```
37 |
38 | **实现效果:**
39 |
40 | normal:
41 | 
42 | square:
43 | 
44 | dot、dot-sm:
45 | 
46 | wide:
47 | 
48 | rounded:
49 |
50 | 
51 |
52 | ##### 反色
53 | 通过 `inverse` 属性,我们可以便捷的控制徽章以反色显示,即白色背景,边框存在颜色。
54 |
55 | **代码示例:**
56 | ```js
57 | {
58 | inverse:true
59 | }
60 | ```
61 |
62 | **实现效果:**
63 |
64 | 
65 |
66 |
--------------------------------------------------------------------------------
/doc/ch3/base/base.md:
--------------------------------------------------------------------------------
1 | # 基础组件
2 |
3 |
--------------------------------------------------------------------------------
/doc/ch3/base/blockUI.md:
--------------------------------------------------------------------------------
1 | 哦# 遮罩组件
2 | > 块级组件,为外部容器增加一个带滚动圈的遮罩层,会阻止外部容器的交互,直到遮罩被取消。
3 |
4 | ### 语法
5 | ##### 私有参数
6 |
7 | | 参数名 | 类型 | 默认值 | 描述
8 | | :-: | :-: | :-: | :- |
9 | | block | bool | true | 设置是否显示遮罩组件。|
10 | | overlayColor | string | 空 | 设置遮罩层滚动圈颜色,。|
11 | | message | string | 空 | 设置遮罩层显示消息。|
12 | | el | string | 空 | 指定需要遮罩层的容器 。|
13 |
14 | ##### 调用方式
15 | ``` jsx
16 | import BlockUI from '@BlockUI';
17 |
24 | ```
25 | ##### 渲染结果
26 | ``` html
27 |
28 |
29 |
...
30 |
31 |
32 |
35 |
36 |
37 | ```
38 |
39 | ##### 实现效果
40 | 
41 |
42 | ### 最佳实践
43 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
44 | >你可以将遮罩层作用于任何外部块状容器,只需在该容器内部包含遮罩组件,或使用 `el` 属性指定容器。
45 |
46 | ##### 应用于 Portlet
47 |
48 | **代码示例:**
49 | ```jsx
50 |
51 |
54 | ....
55 |
56 |
57 | ```
58 |
59 | **实现效果:**
60 | 
61 |
62 | ##### 自定义容器
63 |
64 | **代码示例:**
65 | ```js
66 | // el 指定 id 属性为 block_1 的容器。
67 | {
68 | el: '#block_1'
69 | }
70 | ```
71 | ##### 页面遮罩
72 |
73 | **代码示例:**
74 | ```js
75 | // el 属性设置为body即可实现页面遮罩。
76 | {
77 | el: 'body'
78 | }
79 | ```
--------------------------------------------------------------------------------
/doc/ch3/base/dropdown.md:
--------------------------------------------------------------------------------
1 | # 下拉组件
2 | > 块级组件,显示一个可通过交互触发的下拉区域。
3 |
4 | ### 语法
5 | ##### 私有参数
6 |
7 | | 参数名 | 类型 | 默认值 | 描述
8 | | :-: | :-: | :-: | :- |
9 | | toggle | string | click | 设置下拉列表交互方式,支持的参数有`click`、`hover`。|
10 | | persistent | bool | false | 设置下拉组件在被点击后是否保留显示状态。|
11 | | hoverTimeout | number | 300 | 设置在鼠标移出下拉组件后,组件销毁延时。|
12 | | direction | string | left | 设置下拉组件对齐方式,支持的参数有 `left` 、 `right`、`center`。|
13 | | showArrow | bool | true | 设置下拉组件是否显示指示箭头。|
14 | | button | object | 空 | 设置触发下拉组件按钮的样式,参考 [按钮组件](../button/baseButton.md)。|
15 | | vertical | bool | bottom | 设置下拉组件的弹出方向,支持的参数有 `top` 、 `bottom`。|
16 |
17 | ##### 调用方式
18 | ``` jsx
19 | import {Dropdown} from 'omega';
20 |
26 | ...
27 |
28 | ```
29 | ##### 渲染结果
30 | ``` html
31 |
44 | ```
45 |
46 | ##### 实现效果
47 | 
48 |
49 |
50 |
51 | ### 最佳实践
52 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
53 |
54 | ##### 与其他组件配合
55 | 我们可以让下拉组件与其他组件配合,可以实现更丰富的交互,如下所示为与滚动组件配合:
56 |
57 | **代码示例:**
58 | ```jsx
59 |
62 |
63 |
64 | //This is a long paragraph.
65 |
66 |
67 |
68 | ```
69 |
70 | **实现效果:**
71 | 
72 |
73 |
--------------------------------------------------------------------------------
/doc/ch3/base/icon.md:
--------------------------------------------------------------------------------
1 | # 图标组件
2 | > 行间组件,显示一个图标文字。
3 |
4 | ### 语法
5 | ##### 私有参数
6 |
7 | | 参数名 | 类型 | 默认值 | 描述
8 | | :-: | :-: | :-: | :- |
9 | | iconName | string | 空 | 设置图标名称,参考下文。|
10 |
11 | ##### 调用方式
12 | ``` jsx
13 | import Icon from '@Icon';
14 |
17 | ```
18 | ##### 渲染结果
19 | ``` html
20 |
21 | ```
22 |
23 | ##### 实现效果
24 | 
25 |
26 | ### 最佳实践
27 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
28 |
29 | ##### 复合组件
30 | 通常情况下,图标往往和其他组件配合使用,作为行间组件,它可以被嵌入任何组件中,成为子组件。
31 |
32 | **代码示例:**
33 | ```jsx
34 |
35 |
36 | Warning
37 |
38 | ```
39 |
40 | **实现效果:**
41 | 
42 |
43 |
--------------------------------------------------------------------------------
/doc/ch3/base/loader.md:
--------------------------------------------------------------------------------
1 | # 加载组件
2 | > 行间组件,在指定位置添加一个不断旋转的加载滚动条。
3 |
4 | ### 语法
5 | ##### 私有参数
6 |
7 | | 参数名 | 类型 | 默认值 | 描述
8 | | :-: | :-: | :-: | :- |
9 | | color | string | 空 | 设置加载条的滚动颜色,参考 [状态颜色](../../ch1/stateColor.md)。|
10 | | size | string | normal | 设置加载条的尺寸,支持的参数有 `sm` 、`lg` 、`normal` 。|
11 | | align | string | center | 设置加载条的位置,支持的参数有 `left` 、`right` 、`center` 。|
12 | | width | string | 30px | 设置加载条外部容器的宽度 。|
13 |
14 | ##### 调用方式
15 | ``` jsx
16 | import Loader from '@Loader';
17 |
21 | ```
22 | ##### 渲染结果
23 | ``` html
24 |
25 |
26 | ```
27 |
28 | ##### 实现效果
29 | 
30 |
31 | ### 最佳实践
32 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
33 |
34 | ##### 按钮加载
35 | 加载组件通常与其他组件配合使用,以按钮组件为例,当需要实现点击按钮之后进行响应等待业务需求时,可以使用按钮加载。
36 |
37 | **代码示例:**
38 | ```jsx
39 |
48 | ```
49 |
50 | **实现效果:**
51 | 
52 |
53 |
--------------------------------------------------------------------------------
/doc/ch3/base/modal.md:
--------------------------------------------------------------------------------
1 | # 模态组件
2 |
3 |
--------------------------------------------------------------------------------
/doc/ch3/base/nav.md:
--------------------------------------------------------------------------------
1 | # 导航组件
2 |
3 |
--------------------------------------------------------------------------------
/doc/ch3/base/popover.md:
--------------------------------------------------------------------------------
1 | # 弹出框组件
2 |
3 |
--------------------------------------------------------------------------------
/doc/ch3/base/portlet.md:
--------------------------------------------------------------------------------
1 | # 窗口组件
2 |
3 |
--------------------------------------------------------------------------------
/doc/ch3/base/progress.md:
--------------------------------------------------------------------------------
1 | # 进度条组件
2 |
3 |
--------------------------------------------------------------------------------
/doc/ch3/base/scroll.md:
--------------------------------------------------------------------------------
1 | # 滚动组件
2 |
3 |
--------------------------------------------------------------------------------
/doc/ch3/base/tab.md:
--------------------------------------------------------------------------------
1 | # 选项卡组件
2 |
3 |
--------------------------------------------------------------------------------
/doc/ch3/base/table.md:
--------------------------------------------------------------------------------
1 | # 表格组件
2 |
3 |
--------------------------------------------------------------------------------
/doc/ch3/base/tooltip.md:
--------------------------------------------------------------------------------
1 | # 提示框组件
2 |
3 |
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-17-48-49.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-17-48-49.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-18-08-15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-18-08-15.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-18-08-49.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-18-08-49.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-18-15-48.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-18-15-48.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-18-25-02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-18-25-02.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-18-29-22.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-18-29-22.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-18-33-33.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-18-33-33.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-18-50-48.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-18-50-48.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-18-52-40.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-18-52-40.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-19-16-59.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-19-16-59.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-19-17-25.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-19-17-25.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-19-17-48.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-19-17-48.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-19-47-55.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-19-47-55.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-20-01-56.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-20-01-56.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-21-20-04-54.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-21-20-04-54.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-22-08-27-46.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-22-08-27-46.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-22-08-35-04.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-22-08-35-04.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-22-08-38-47.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-22-08-38-47.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-22-08-43-34.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-22-08-43-34.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-22-08-45-57.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-22-08-45-57.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/_image/2018-06-22-09-44-55.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/button/_image/2018-06-22-09-44-55.jpg
--------------------------------------------------------------------------------
/doc/ch3/button/button.md:
--------------------------------------------------------------------------------
1 | # 按钮组件
2 | > 按钮作为现代应用程序中不可或缺的组成部分,承担了大量的交互工作。Omega 定制了丰富的按钮行为,仅需简单的配置即可实现多种效果。
3 |
4 | ####按钮组件列表:
5 | * [基础按钮组件](./baseButton.md)
6 | * [下拉按钮组件](./dropdownButton.md)
7 | * [按钮组组件](./groupButton.md)
8 | * [图标按钮组件](./iconButton.md)
--------------------------------------------------------------------------------
/doc/ch3/component.md:
--------------------------------------------------------------------------------
1 | # 组件
2 | > 在Omega中,组件是对UI或方法的简单封装,页面上的每个独立的可视/可交互区域均可视为一个组件。
3 |
4 | ####组件列表:
5 |
6 | * [元素组件](ch3/element/element.md)
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-08-07-18.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-08-07-18.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-08-16-32.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-08-16-32.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-08-27-35.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-08-27-35.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-08-28-09.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-08-28-09.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-08-53-28.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-08-53-28.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-09-00-53.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-09-00-53.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-09-05-20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-09-05-20.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-11-27-24.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-11-27-24.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-11-31-27.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-11-31-27.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-13-17-22.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-13-17-22.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-13-21-23.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-13-21-23.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-13-22-05.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-13-22-05.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/_image/2018-06-21-14-42-00.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/element/_image/2018-06-21-14-42-00.jpg
--------------------------------------------------------------------------------
/doc/ch3/element/blockquote.md:
--------------------------------------------------------------------------------
1 | # 引用组件
2 | > 从第三方来源引用的一段文字、图片等内容,可以使用引用组件包含。
3 |
4 | ### 作用
5 | 引用组件为块状组件。通常作为一段第三方文字、图片或行间 DOM 元素的容器,它会以特殊的样式进行展示。
6 |
7 | ### 语法
8 | ##### 私有参数
9 |
10 | | 参数名 | 类型 | 默认值 | 描述
11 | | :-: | :-: | :-: | :- |
12 | | `align` | string | left | 指定引用来源的对齐方式,可选的参数有`left`、`right`、`center`、`justify`。 |
13 | | `quote` | string | 空 | 指定引用来源,通常指创作者,例如文章作者 |
14 | | `source` | string | 空 | 指定引用来源,通常指资源,例如书籍名称 |
15 |
16 | ##### 调用方式
17 | ``` jsx
18 | import Blockquote from '@Blockquote';
19 |
24 | 一个人只要学会了回忆,就再不会孤独,哪怕只在世上生活一日,你也能毫无困难地凭回忆在囚牢中独处百年。
25 |
26 | ```
27 |
28 | ##### 渲染结果
29 | ``` html
30 |
31 | 一个人只要学会了回忆,就再不会孤独,哪怕只在世上生活一日,你也能毫无困难地凭回忆在囚牢中独处百年。
32 |
35 |
36 | ```
37 |
38 | > 渲染结果中 `blockquote`、`text-left` 和 `blockquote-footer` 为自动生成的系统级 `class` 修饰符。
39 |
40 | ##### 实现效果
41 |
42 | 
43 |
44 | ### 最佳实践
45 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
46 |
47 | ##### 对齐方式
48 | 引用组件支持多种对齐方式。用户可以根据业务需求自行调整。
49 |
50 | **代码示例:**
51 | ```js
52 | {
53 | align:'right'
54 | }
55 | ```
56 | **实现效果:**
57 |
58 | 右对齐示例:
59 | 
60 |
61 | 居中对齐示例:
62 | 
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/doc/ch3/element/code.md:
--------------------------------------------------------------------------------
1 | # 代码组件
2 | > 该组件可以在页面中插入一个显示为代码高亮的文本。
3 |
4 | ### 作用
5 | 代码组件为行间组件,仅可以作为代码纯文本内容的容器。代码组件会让代码内容高亮显示。
6 |
7 | ### 语法
8 | ##### 调用方式
9 | ``` jsx
10 | import Code from '@Code';
11 |
12 | alert( 'Hello World!' );
13 |
14 | ```
15 | ##### 渲染结果
16 | ``` html
17 |
18 | alert( 'Hello World!' );
19 |
20 | ```
21 | ##### 实现效果
22 | 
23 | ### 最佳实践
24 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
25 | ##### 子元素
26 | 代码组件支持作为其他组件的子元素使用。
27 |
28 | **代码示例:**
29 | ```jsx
30 |
31 | 所有HTML的标题,均可以通过Title
组件实现。
32 |
33 | ```
34 |
35 | **实现效果:**
36 | 
37 |
--------------------------------------------------------------------------------
/doc/ch3/element/div.md:
--------------------------------------------------------------------------------
1 | # 容器组件
2 | > 该组件可以在页面中插入一个无样式块状容器,是一种通用的分隔容器。
3 |
4 | ### 作用
5 | 容器组件为块级组件,是一种功能强大的组件。它的通用性和快状隔离特性使得它可以作为任何组件的外部容器。容器组件本身不存在任何样式和 `class` 修饰符。
6 |
7 | ### 语法
8 | ##### 调用方式
9 | ``` jsx
10 | import Div from '@Div';
11 |
12 | This is a container.
13 |
14 | ```
15 | ##### 渲染结果
16 | ``` html
17 |
18 | This is a container.
19 |
20 | ```
21 | ##### 实现效果
22 | 无实现效果。
23 |
24 | ### 最佳实践
25 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
26 | >容器组件也通常作为第三方插件的容器使用,一般来说,第三方组件生成的 DOM 元素,被容器组件包含后,可以更方便的进行样式和逻辑的处理。
27 |
--------------------------------------------------------------------------------
/doc/ch3/element/element.md:
--------------------------------------------------------------------------------
1 | # 元素组件
2 | > 元素组件是最底层的单位组件,一般由 DOM 元素直接封装而成。如果将高级组件比作万丈高楼,那么元素组件就是搭建这个高楼的每一块砖。
3 |
4 | ####元素组件列表:
5 |
6 | * [文本组件](./text.md)
7 | * [段落组件](./paragraph.md)
8 | * [标题组件](./title.md)
9 | * [链接组件](./link.md)
10 | * [代码组件](./code.md)
11 | * [容器组件](./div.md)
12 | * [引用组件](./blockquote.md)
13 | * [列表组件](./list.md)
14 | * [空间分隔组件](./space.md)
15 | * [分割线组件](./separator.md)
--------------------------------------------------------------------------------
/doc/ch3/element/link.md:
--------------------------------------------------------------------------------
1 | # 链接组件
2 | > 该组件可以在页面中插入一个带样式的超级链接,点击该组件可以产生跳转效果。
3 |
4 | ### 作用
5 | 链接组件为行间组件,表示一个超级链接。内部可嵌套纯文本内容、行间 DOM 元素或行间组件。链接组件底层由 DOM 元素的 `A` 标签实现,可以在页面中插入一个可供跳转的超级链接。
6 |
7 | ### 语法
8 | ##### 私有参数
9 |
10 | | 参数名 | 类型 | 默认值 | 描述
11 | | :-: | :-: | :-: | :- |
12 | | `color` | string | 空 | 链接的颜色,该属性与 `_fontColor` 互斥,支持的参数有`brand`、 `metal`、`light`、 `accent`、` focus`、 `primary`、 `success`、 `info`、` warning` 和 `danger`。 |
13 | | `href` | string | # | 链接指向的URL。 |
14 | | `download` | string | 空 | 规定被下载的超链接目标。 |
15 | | `target` | string | _blank | 规定在何处打开链接文档。 支持的参数有 `_blank` 、`_parent`、`_self`、`_top`|
16 |
17 | ##### 调用方式
18 | ``` jsx
19 | import Link from '@Link';
20 |
24 | This is a link.
25 |
26 | ```
27 |
28 | ##### 渲染结果
29 | ``` html
30 |
31 | This is a link.
32 |
33 | ```
34 | > `m-link` 修饰符为默认链接修饰符。
35 |
36 | ##### 实现效果
37 | 
38 | > 下划线仅在鼠标 hover 状态触发时显示。
39 |
40 | ### 最佳实践
41 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
--------------------------------------------------------------------------------
/doc/ch3/element/list.md:
--------------------------------------------------------------------------------
1 | # 列表组件
2 | > 该组件可以在页面上产生一个无序列表或有序列表。
3 |
4 | ### 作用
5 | 列表组件为块级组件,每个子项也是独立的块级组件。列表组件可以独立使用,也可以作为高级组件,如 `Tab` 组件、`Nav` 组件的底层实现。
6 |
7 | ### 语法
8 | ##### 私有参数
9 |
10 | | 参数名 | 类型 | 默认值 | 描述
11 | | :-: | :-: | :-: | :- |
12 | | `label` | string | ul | 设置列表的类型,支持的参数有`ul`、 `ol`。 |
13 | | `items` | array | [] | 设置列表项,由item对象或字符型值组成,item对象见下表。 |
14 |
15 | item 对象:
16 |
17 | | 参数名 | 类型 | 描述
18 | | :-: | :-: | :- |
19 | | `value` | string | 设置该项显示的内容。 |
20 |
21 | ##### 调用方式
22 | ``` jsx
23 | import Link from '@Link';
24 | //List支持直接传入字符型数组作为 items 的值。
25 |
28 |
29 | //List支持直接传入字符型数组作为 items 的值。
30 |
33 | ```
34 |
35 | ##### 渲染结果
36 | 两种组件引用方式渲染出相同结果:
37 |
38 | ``` html
39 |
40 | - 1
41 | - 2
42 | - 3
43 | - 4
44 | - 5
45 |
46 | ```
47 | ### 最佳实践
48 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
49 | ##### item 类型
50 | 在列表组件中,我们支持多种item的传入格式。
51 |
52 | 可以传入一个字符串数组:
53 | ```js
54 | {
55 | items:['a','b','c']
56 | }
57 | ```
58 | 可以传入对象格式:
59 | ```js
60 | {
61 | items:[{value:'a'},{value:'b'},{value:'c'}]
62 | }
63 | ```
64 | 也可以混合传入:
65 | ```js
66 | {
67 | items:[a,{value:'b'},c]
68 | }
69 | ```
70 | 传入字符型数组可以直接将数组的每一项渲染到列表的 `li` 元素中。若传入的是对象数组,则将数组中每个对象的 `value` 属性的值渲染到列表的 `li` 元素中。
71 | > 使用对象数组可以为每个数组对象单独设置 [公共配置](../ch1/public.md)。单独设置的属性将应用至每一个独立的 `li` 标签。
--------------------------------------------------------------------------------
/doc/ch3/element/paragraph.md:
--------------------------------------------------------------------------------
1 | # 段落组件
2 | > 段落组件用来封装文本内容、图片或其他行间 DOM 元素或行间组件。
3 |
4 | ### 作用
5 | 段落组件为块级组件,表示一个片段分块。内部可嵌套行间 DOM 元素或行间组件,常用来作为一段文字描述的容器。
6 |
7 | ### 语法
8 | ##### 调用方式
9 | ``` jsx
10 | import Paragraph from '@Paragraph';
11 |
12 | This is a text.
13 |
14 | ```
15 | ##### 渲染结果
16 | ``` html
17 |
18 | This is a text.
19 |
20 | ```
21 | ##### 实现效果
22 |
23 | 
24 | ###最佳实践
25 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
26 |
27 | ##### 导言
28 | Omega 预留了一种针对文章导言的 `class` 修饰符。
29 |
30 | | 修饰符名 | 描述
31 | | :-: | :- |
32 | | `lead` | 标识段落以导言样式显示。 |
33 |
34 | **代码示例:**
35 | ```js
36 | {
37 | _includeClass:'lead'
38 | }
39 | ```
40 |
41 | **实现效果:**
42 | 
43 |
--------------------------------------------------------------------------------
/doc/ch3/element/separator.md:
--------------------------------------------------------------------------------
1 | # 分割线组件
2 | > 特殊组件,该组件可以在页面空间内形成一条可见的分割线。
3 |
4 | ### 作用
5 | 分割线组件为块级组件,是一种特殊组件。它一般用来对两个独立的 DOM 元素块或组件进行空间上的分隔,并使用分割线进行分隔,会占满外部容器的全部宽度并显示为默认背景色。
6 | >与分隔组件不同,分割线组件注重分隔样式,而分隔组件注重分隔高度尺寸。
7 |
8 | ### 语法
9 | ##### 私有参数
10 |
11 | | 参数名 | 类型 | 默认值 | 描述
12 | | :-: | :-: | :-: | :- |
13 | | `size` | string | sm | 设置分割线粗细,支持的参数有`lg`、`xl`、`sm`、`fit` |
14 | | `color` | string | 空 | 设置分割线颜色。|
15 | | `dashed` | bool | false | 设置是否以虚线显示。|
16 |
17 | ##### 调用方式
18 | ``` jsx
19 | import Separator from '@Separator';
20 |
25 | ```
26 | ##### 渲染结果
27 | ``` html
28 |
29 |
30 | ```
31 | ##### 实现效果
32 | 显示一段高度为size,且长度占满整个容器的空白区域。
33 | 
34 | ### 最佳实践
35 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
--------------------------------------------------------------------------------
/doc/ch3/element/space.md:
--------------------------------------------------------------------------------
1 | # 分隔组件
2 | > 特殊组件,该组件可以在页面空间内形成一个占满外部容器全宽的空白空间。
3 |
4 | ### 作用
5 | 分隔组件为块级组件,是一种特殊组件。它一般用来对两个独立的 DOM 元素块或组件进行空间上的分隔,会占满外部容器的全部宽度并显示为默认背景色。
6 |
7 | ### 语法
8 | ##### 私有参数
9 |
10 | | 参数名 | 类型 | 默认值 | 描述
11 | | :-: | :-: | :-: | :- |
12 | | `size` | int/string | 10 | 设置分隔区域高度,支持的参数有`5`、`10`、`15`、`20`、`25`、`30`、`35`、`40`、`45`和`50`(数字类型),若预设的参数值不满足业务需求,也可以自定义尺寸,例如 `80`、`30%` |
13 |
14 | ##### 调用方式
15 | ``` jsx
16 | import Space from '@Space';
17 |
18 |
19 | ```
20 | ##### 渲染结果
21 | ``` html
22 |
23 |
24 |
25 |
26 | ```
27 | ##### 实现效果
28 | 显示一段高度为size,且长度占满整个容器的空白区域。
29 |
30 | ### 最佳实践
31 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
32 | >不建议在分隔组件上设置自定义样式,根据 `HTML` 语义化要求,建议使用容器组件。
--------------------------------------------------------------------------------
/doc/ch3/element/text.md:
--------------------------------------------------------------------------------
1 | # 文本组件
2 | > 文本组件用来封装纯文本内容,最基础的组件。
3 |
4 | ### 作用
5 | 文本组件为行间组件,可以作为纯文本内容的容器。文本组件是一种无样式、无 `class` 修饰符的容器。
6 |
7 | ### 语法
8 | ##### 调用方式
9 | ``` jsx
10 | import Text from '@Text';
11 |
12 | This is a text.
13 |
14 | ```
15 | ##### 渲染结果
16 | ``` html
17 |
18 | This is a text.
19 |
20 | ```
21 | ##### 实现效果
22 | 无实现效果。
23 |
24 | ### 最佳实践
25 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
--------------------------------------------------------------------------------
/doc/ch3/element/title.md:
--------------------------------------------------------------------------------
1 | # 标题组件
2 | > 该组件可以在页面中插入一个带样式的文本标题,可以控制标题的显示级别。
3 |
4 | ### 作用
5 | 标题组件为块级组件,表示一个标题。内部可嵌套纯文本内容、行间 DOM 元素或组件。标题共可设置六个等级,分别对应 DOM 元素中的 `h1` ~ `h6` 。
6 |
7 | ### 语法
8 | ##### 私有参数
9 |
10 | | 参数名 | 类型 | 默认值 | 描述
11 | | :-: | :-: | :-: | :- |
12 | | `level` | number | 1 | 标识标题等级,可选的参数由1到6,分别对应 DOM 元素中 `h1` 到 `h6`。 |
13 |
14 | ##### 调用方式
15 | ``` jsx
16 | import Title from '@Title';
17 |
18 | This is a h1 title.
19 |
20 | ```
21 |
22 | ##### 渲染结果
23 | ``` html
24 |
25 | This is a text.
26 |
27 | ```
28 | ##### 实现效果
29 |
30 | 
31 |
32 | ### 最佳实践
33 | 通过 [公共配置](../ch1/public.md),组件可以实现丰富的样式和逻辑的控制。
34 | ##### Display类型
35 | 这是一种字体更大,更吸引人的标题类型,主要实现内容展示效果。
36 |
37 | | 修饰符名 | 描述
38 | | :-: | :- |
39 | | `display-[size]` | 标识标题展示等级,可选的 `size` 参数由1到5,例如 `display-1`。 |
40 |
41 | **代码示例:**
42 | ```js
43 | {
44 | _includeClass:'display-1'
45 | }
46 | ```
47 |
48 | **实现效果:**
49 | 
50 |
51 | ##### 其他
52 | 标题组件支持与其他行间 DOM 元素或行间组件进行整合,实现更加丰富的效果,以下为与 `small` 元素整合,实现主副标题的简单示例。
53 |
54 | **代码示例:**
55 | ```jsx
56 | import Title from '@Title';
57 |
58 | 这是主标题
59 | 这是副标题
60 |
61 | ```
62 |
63 | **实现效果:**
64 | 
65 |
--------------------------------------------------------------------------------
/doc/ch3/grid/_image/2018-06-29-10-49-41.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/grid/_image/2018-06-29-10-49-41.jpg
--------------------------------------------------------------------------------
/doc/ch3/grid/_image/2018-06-29-11-11-16.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/doc/ch3/grid/_image/2018-06-29-11-11-16.jpg
--------------------------------------------------------------------------------
/doc/ch3/grid/base.md:
--------------------------------------------------------------------------------
1 | # 布局组件
--------------------------------------------------------------------------------
/doc/ch3/grid/grid.md:
--------------------------------------------------------------------------------
1 | # 栅格系统
2 | > 块级组件,页面布局核心组件,在页面中划分出不同区域,采用 `Flex` 实现,由 `Gid` 组件和 `GridItem` 组件构成。
3 |
4 | ### 语法
5 | > 栅格系统采用 Flex 布局实现,因此部分概念可以参考 [Flex布局](http://www.runoob.com/w3cnote/flex-grammar.html)
6 |
7 | ##### 栅格容器(Grid)私有参数
8 | | 参数名 | 类型 | 默认值 | 描述
9 | | :-: | :-: | :-: | :- |
10 | | mode | string | desktop | 设置当前响应式设备类型,支持的参数有 `desktop`、`desktop-and-tablet`、`tablet`、`tablet-and-mobile`、`mobile` |
11 | | root | bool | false | 设置当前栅格系统是否为根系统,一般仅在全局配置时设置为 `true`。 |
12 | | direction | string | ver | 设置当前栅格系统主轴方向,支持的参数有 `ver`、`hor`。 |
13 | | justify | string | 空 | 设置当前栅格系统主轴上对齐方式,支持的参数有 `flex-start`、`flex-end`、`center`、`space-between`、`space-around`。 |
14 | | wrap | string | 空 | 设置当前栅格系统主轴换行方式,支持的参数有 `nowrap`、`wrap`、`wrap-reverse`。 |
15 | | alignItems | string | 空 | 设置当前栅格系统交叉轴上对齐方式,支持的参数有 `flex-start`、`flex-end`、`center`、`baseline`、`stretch`。 |
16 | | alignContent | string | 空 | 设置当前栅格系统多根轴线对齐方式,如果只有一根轴线,该属性不起作用。支持的参数有 `flex-start`、`flex-end`、`center`、`space-between`、`space-around`、`stretch`。 |
17 |
18 | ##### 栅格项(GridItem)私有参数
19 | | 参数名 | 类型 | 默认值 | 描述
20 | | :-: | :-: | :-: | :- |
21 | | order | number | 0 | 设置栅格项的排列顺序。数值越小,排列越靠前,支持的参数有 `0`至`12`的整数。 |
22 | | align | string | auto | 设置栅格项的允许单个项目有与其他栅格项不一样的对齐方式,可覆盖 `alignItems` 属性。支持的参数有 `flex-start`、`flex-end`、`center`、`baseline`、`stretch`。 |
23 | | fluid | bool | true | 设置栅格项是否流式布局。 |
24 |
25 | ##### 调用方式
26 | ``` jsx
27 | import {Grid,GridItem} from 'omega';
28 |
31 | Item 1
34 | Item 2
37 | Item 3
40 |
41 |
42 | ```
43 |
44 | ##### 渲染结果
45 | ``` html
46 |
47 |
Item 1
48 |
Item 2
49 |
Item 3
50 |
51 | ```
52 |
53 | **实现效果:**
54 | 
55 |
56 |
57 |
--------------------------------------------------------------------------------
/doc/ch3/grid/stack.md:
--------------------------------------------------------------------------------
1 | # 内容布局组件
2 | > 块级组件,页面布局核心组件,在页面中划分出不同区域,针对不同区域里内容,设置不同布局方式。
3 |
4 | ### 语法
5 | ##### 私有参数
6 | | 参数名 | 类型 | 默认值 | 描述
7 | | :-: | :-: | :-: | :- |
8 | | direction | string | ver | 设置区域的对齐方式,支持的参数有 `ver`、`hor`。 |
9 | | display | string | block | 设置区域的展示类型,支持的参数有 `block`、`inline`。 |
10 | | mode | string | general | 设置当前设备类型,内容布局组件支持不同设备的不同渲染方案,支持的参数有`general`、`desktop`、`tablet`、`mobile`、`desktop-and-tablet`、`tablet-and-mobile`。 |
11 | | items | object | 空 | 配置区域设置,具体参数见下文。 |
12 |
13 | ##### items配置
14 | | 参数名 | 类型 | 默认值 | 描述
15 | | :-: | :-: | :-: | :- |
16 | | justify | string | 空 | 设置内容水平对齐方式,支持的参数有 `left`、`right`、`center`’。 |
17 | | align | string | 空 | 设置内容垂直对齐方式,仅 `direction` 为 `ver` 时生效。支持的参数有 `top`、`middle`、`bottom`’。 |
18 | | fluid | bool | false | 设置内容是否流式布局。 |
19 |
20 | ##### 调用方式
21 | ``` jsx
22 | import {Stack} from 'omega';
23 |
35 |
36 | ```
37 |
38 | ##### 渲染结果
39 | ``` html
40 |
41 |
Item 1
42 |
Item 2
43 |
Item 3
44 |
45 |
46 | ```
47 |
48 | ##### 实现效果
49 | 
50 |
51 |
52 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Omega UI By React
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/lib/_components/_alert/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/alert/config';
3 | @import '../../_sass/arrows/mixins';
4 | @import '../../_sass/mixins';
5 | @import '../../_sass/alert/alert';
--------------------------------------------------------------------------------
/lib/_components/_aside/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import {isExist} from "../../_scripts/_is";
4 | import {uuid} from '../../_scripts/_utils';
5 | import {_totalColor} from '../../_scripts/_public';
6 | import Div from '../_div/index.osx';
7 | import Button from '../_button/index.osx';
8 | import Icon from '../_icon/index.osx';
9 | import Menu from '../_menu/index.osx';
10 | import PropType from 'prop-types';
11 | const AsideProps = {
12 | closeBtn: {
13 | default: {
14 | show: true,
15 | iconName: 'la la-close'
16 | }
17 | },
18 | children: {}
19 | };
20 |
21 | export default class Aside extends Component {
22 | constructor(props) {
23 | super(props);
24 | }
25 |
26 | static defaultProps = DefaultProps(AsideProps);
27 | static propTypes = PropTypes(AsideProps);
28 |
29 | render() {
30 | const _props = this.props;
31 | const {closeBtn, menu, skin} = _props;
32 | const showBtn = isExist(closeBtn) && closeBtn.show;
33 | const showMenu = isExist(menu) && menu.show;
34 | if (!menu.skin) menu.skin = skin;
35 | return (
36 |
37 |
49 | );
50 | }
51 | }
--------------------------------------------------------------------------------
/lib/_components/_badge/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind, _delivery} from '../../_scripts/_proptypes';
3 | import {isExist, isString, isArray} from "../../_scripts/_is";
4 | import {_publicColor} from '../../_scripts/_public';
5 | import Text from '../_text/index.osx';
6 | import PropType from 'prop-types';
7 | import './index.scss';
8 |
9 | const BadgeProps = {
10 | bgColor: {
11 | type: PropType.oneOf(_publicColor)
12 | },
13 | inverse: {
14 | default: false,
15 | type: PropType.bool
16 | },
17 | type: {
18 | type: PropType.oneOfType([
19 | PropType.string,
20 | PropType.array
21 | ])
22 | },
23 | children: {}
24 | };
25 |
26 | export default class Badge extends Component {
27 | constructor(props) {
28 | super(props);
29 | }
30 |
31 | static defaultProps = DefaultProps(BadgeProps);
32 | static propTypes = PropTypes(BadgeProps);
33 |
34 | render() {
35 | const _props = this.props;
36 | const {bgColor, inverse, type, children} = _props;
37 | let _sysClass = ['m-badge'];
38 | bgColor && !inverse && _sysClass.push('m-badge--' + bgColor);
39 | bgColor && inverse && (_sysClass = _sysClass.concat(['m-badge--light', 'm-badge--bordered', 'm-badge-bordered--' + bgColor]));
40 | isExist(type) && isArray(type) && type.map((item) => {
41 | isString(item) && _sysClass.push('m-badge--' + item);
42 | });
43 | isExist(type) && isString(type) && _sysClass.push('m-badge--' + type);
44 | return (
45 |
46 | {children}
47 |
48 | );
49 | }
50 | }
--------------------------------------------------------------------------------
/lib/_components/_badge/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/typography/badge';
--------------------------------------------------------------------------------
/lib/_components/_blockUI/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind, _delivery} from '../../_scripts/_proptypes';
3 | import {_publicColor} from '../../_scripts/_public';
4 | import {mApp} from "../../_scripts/_base/_app";
5 | import Div from '../_div/index.osx';
6 | import PropType from 'prop-types';
7 | import 'block-ui';
8 | import './index.scss';
9 |
10 | const BlockUIProps = {
11 | block: {
12 | default: true,
13 | type: PropType.bool
14 | },
15 | overlayColor: {
16 | type: PropType.oneOf(_publicColor)
17 | },
18 | type: {},
19 | message: {},
20 | children: {}
21 | };
22 |
23 | export default class BlockUI extends Component {
24 | constructor(props) {
25 | super(props);
26 | }
27 |
28 | static defaultProps = DefaultProps(BlockUIProps);
29 | static propTypes = PropTypes(BlockUIProps);
30 |
31 | componentDidMount() {
32 | this._initBlock(this.props);
33 |
34 | }
35 |
36 | componentWillReceiveProps(nextProps) {
37 | this._initBlock(nextProps);
38 | }
39 |
40 | _initBlock(_props) {
41 | const {block, overlayColor, type, message, el = this.refs.blockui.refs.div} = _props;
42 | if (block) {
43 | const _config = {};
44 | overlayColor && Object.assign(_config, {
45 | state: overlayColor
46 | });
47 | type && Object.assign(_config, {type});
48 | message && Object.assign(_config, {message});
49 | mApp.block(el, _config);
50 | }
51 | }
52 |
53 | render() {
54 | const _props = this.props;
55 | const {children} = _props;
56 | return (
57 |
58 | {children}
59 |
60 | );
61 | }
62 | }
--------------------------------------------------------------------------------
/lib/_components/_blockUI/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/blockui/blockui';
3 | @import '../../_sass/buttons/config';
4 | @import '../../_sass/spinners/config';
5 | @import '../../_sass/spinners/loader';
--------------------------------------------------------------------------------
/lib/_components/_blockquote/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind} from '../../_scripts/_proptypes';
3 | import PropType from 'prop-types';
4 |
5 | const BlockquoteProps = {
6 | align: {
7 | default: 'left',
8 | type: PropType.oneOf(['left', 'center', 'right', 'justify'])
9 | },
10 | quote: {},
11 | source: {
12 | type: PropType.string
13 | },
14 | children: {}
15 | };
16 | export default class Blockquote extends Component {
17 | constructor(props) {
18 | super(props);
19 | }
20 |
21 | static defaultProps = DefaultProps(BlockquoteProps);
22 | static propTypes = PropTypes(BlockquoteProps);
23 |
24 | render() {
25 | const _props = this.props;
26 | const {align, quote, source, children} = _props;
27 | let _sysClass = ['blockquote'];
28 | align && _sysClass.push('text-' + align);
29 | return (
30 |
31 |
32 | {children}
33 |
37 |
38 |
39 | );
40 | }
41 | }
--------------------------------------------------------------------------------
/lib/_components/_breadcrumbs/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import {isExist, isArray, isObject} from "../../_scripts/_is";
4 | import PropType from 'prop-types';
5 | import Nav from "../_nav/index.osx";
6 | const BreadcrumbProps = {
7 | items: {
8 | type: PropType.array
9 | },
10 | separator: {
11 | type: PropType.oneOfType([
12 | PropType.string,
13 | PropType.object
14 | ])
15 | },
16 | children: {}
17 | };
18 |
19 | export default class Breadcrumb extends Component {
20 | constructor(props) {
21 | super(props);
22 | }
23 |
24 | static defaultProps = DefaultProps(BreadcrumbProps);
25 | static propTypes = PropTypes(BreadcrumbProps);
26 |
27 | render() {
28 | const _props = this.props;
29 | const {items, separator} = _props;
30 | let _items = [];
31 | isExist(items) && isArray(items) && items.map((item, index) => {
32 | isObject(item) ? _items.push(item) : _items.push({
33 | text: {
34 | value: item
35 | }
36 | });
37 | if (index !== items.length - 1) {
38 | isExist(separator) && isObject(separator) ? _items.push(Object.assign(separator, {type: 'separator'})) : _items.push({
39 | type: 'separator',
40 | text: {
41 | value: separator
42 | }
43 | })
44 |
45 | }
46 | });
47 | return (
48 |
49 |
53 |
54 | );
55 | }
56 | }
--------------------------------------------------------------------------------
/lib/_components/_button/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/form/config';
3 | @import '../../_sass/buttons/config';
4 | @import '../../_sass/buttons/buttons';
--------------------------------------------------------------------------------
/lib/_components/_buttonDropdown/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/dropdown/config';
3 | @import '../../_sass/dropdown/dropdown';
--------------------------------------------------------------------------------
/lib/_components/_code/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind} from '../../_scripts/_proptypes';
3 | import './index.scss';
4 |
5 | const CodeProps = {
6 | children: {}
7 | };
8 |
9 | export default class Code extends Component {
10 | constructor(props) {
11 | super(props);
12 | }
13 |
14 | static defaultProps = DefaultProps(CodeProps);
15 | static propTypes = PropTypes(CodeProps);
16 |
17 | render() {
18 | const _props = this.props;
19 | return (
20 |
21 | {_props.children}
22 |
23 | );
24 | }
25 | }
--------------------------------------------------------------------------------
/lib/_components/_code/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/typography/code';
--------------------------------------------------------------------------------
/lib/_components/_container/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import Grid from '../_grid/index.osx';
4 | import './index.scss'
5 |
6 | const ContainerProps = {
7 | children: {}
8 | };
9 |
10 | export default class Container extends Component {
11 | constructor(props) {
12 | super(props);
13 | }
14 |
15 | static defaultProps = DefaultProps(ContainerProps);
16 | static propTypes = PropTypes(ContainerProps);
17 |
18 | render() {
19 | const _props = this.props;
20 | const {children} = _props;
21 | return (
22 |
23 |
24 | {children}
25 |
26 |
27 | );
28 | }
29 | }
--------------------------------------------------------------------------------
/lib/_components/_container/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/page/config';
3 | @import '../../_sass/page/header/config';
4 | @import '../../_sass/page/base/config';
5 | @import '../../_sass/page/base/body';
6 |
--------------------------------------------------------------------------------
/lib/_components/_content/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import Div from '../_div/index.osx';
4 |
5 | const ContentProps = {
6 | children: {}
7 | };
8 |
9 | export default class Content extends Component {
10 | constructor(props) {
11 | super(props);
12 | }
13 |
14 | static defaultProps = DefaultProps(ContentProps);
15 | static propTypes = PropTypes(ContentProps);
16 |
17 | render() {
18 | const _props = this.props;
19 | const {children} = _props;
20 | return (
21 |
22 | {children}
23 |
24 | );
25 | }
26 | }
--------------------------------------------------------------------------------
/lib/_components/_demo/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import Div from '../_div/index.osx';
4 | import PropType from 'prop-types';
5 | import './index.scss';
6 | const DemoProps = {
7 | btnStyle: {
8 | default: true,
9 | type: PropType.bool
10 | },
11 | badgeStyle: {
12 | default: true,
13 | type: PropType.bool
14 | },
15 | children: {}
16 | };
17 |
18 | export default class Demo extends Component {
19 | constructor(props) {
20 | super(props);
21 | }
22 |
23 | static defaultProps = DefaultProps(DemoProps);
24 | static propTypes = PropTypes(DemoProps);
25 |
26 | render() {
27 | const _props = this.props;
28 | const {
29 | btnStyle,
30 | badgeStyle,
31 | children
32 | } = _props;
33 | let className = ['m-demo__preview'];
34 | btnStyle && className.push('m-demo__preview--btn');
35 | badgeStyle && className.push('m-demo__preview--badge');
36 | return (
37 |
38 |
43 |
44 | {children}
45 |
46 |
47 |
48 | );
49 | }
50 | }
--------------------------------------------------------------------------------
/lib/_components/_demo/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import "../../_sass/demo/icon";
3 | @import '../../_sass/demo/demo';
--------------------------------------------------------------------------------
/lib/_components/_div/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind} from '../../_scripts/_proptypes';
3 |
4 | const DivProps = {
5 | children: {}
6 | };
7 |
8 | export default class Div extends Component {
9 | constructor(props) {
10 | super(props);
11 | }
12 |
13 | static defaultProps = DefaultProps(DivProps);
14 | static propTypes = PropTypes(DivProps);
15 |
16 | render() {
17 | const _props = this.props;
18 | return (
19 |
20 | {_props.children}
21 |
22 | );
23 | }
24 | }
--------------------------------------------------------------------------------
/lib/_components/_dropdown/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/dropdown/config';
3 | @import '../../_sass/dropdown/dropdown';
--------------------------------------------------------------------------------
/lib/_components/_fileInput/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind, _delivery} from '../../_scripts/_proptypes';
3 | import {isExist, isObject} from '../../_scripts/_is';
4 | import {uuid} from '../../_scripts/_utils';
5 | import Div from '../_div/index.osx';
6 | import Text from '../_text/index.osx';
7 | import PropType from 'prop-types';
8 | const FileInputProps = {
9 | file: {
10 | type: PropType.object
11 | },
12 | id: {
13 | default: 'form_element_' + uuid(6),
14 | type: PropType.string
15 | },
16 | helper:{},
17 | children: {}
18 | };
19 |
20 | export default class FileInput extends Component {
21 | constructor(props) {
22 | super(props);
23 | }
24 |
25 | static defaultProps = DefaultProps(FileInputProps);
26 | static propTypes = PropTypes(FileInputProps);
27 |
28 | render() {
29 | const _props = this.props;
30 | const {file, helper, id} = _props;
31 | const {placeholder = ''} = file;
32 | return (
33 |
34 |
35 |
36 |
42 | {placeholder}
43 |
44 |
45 | {
46 | isExist(helper) ? (isObject(helper) ? (
47 | {helper.value}) : (
48 | {helper})) : null
49 | }
50 |
51 | );
52 | }
53 | }
--------------------------------------------------------------------------------
/lib/_components/_footer/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery, _sysBind} from '../../_scripts/_proptypes';
3 | import {isExist, isArray} from "../../_scripts/_is";
4 | import {_totalColor} from '../../_scripts/_public';
5 | import Div from '../_div/index.osx';
6 | import Text from '../_text/index.osx';
7 | import Nav from '../_nav/index.osx';
8 | import PropType from 'prop-types';
9 | import './index.scss'
10 | import Stack from "../_stack/index.osx";
11 | const FooterProps = {
12 | children: {}
13 | };
14 |
15 | export default class Footer extends Component {
16 | constructor(props) {
17 | super(props);
18 | }
19 |
20 | static defaultProps = DefaultProps(FooterProps);
21 | static propTypes = PropTypes(FooterProps);
22 |
23 | render() {
24 | const _props = this.props;
25 | const {copyright, nav} = _props;
26 | let _sysClass = ['m-footer', 'm-grid__item'];
27 | return (
28 |
29 |
62 |
63 | );
64 | }
65 | }
--------------------------------------------------------------------------------
/lib/_components/_footer/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/aside/config';
3 | @import '../../_sass/footer/config';
4 | @import '../../_sass/footer/footer';
--------------------------------------------------------------------------------
/lib/_components/_form/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment, Children} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind, _delivery} from '../../_scripts/_proptypes';
3 | import {isExist, isArray} from '../../_scripts/_is';
4 | import Div from '../_div/index.osx';
5 | import PropType from 'prop-types';
6 | import './index.scss';
7 |
8 | const FormProps = {
9 | children: {}
10 | };
11 |
12 | export default class Form extends Component {
13 | constructor(props) {
14 | super(props);
15 | }
16 |
17 | static defaultProps = DefaultProps(FormProps);
18 | static propTypes = PropTypes(FormProps);
19 |
20 | // _onData() {
21 | // console.log('onData');
22 | // }
23 |
24 | componentDidMount() {
25 | Children.forEach(this.props.children, (child) => {
26 | console.log(child._onData);
27 | });
28 | // this._onData();
29 | }
30 |
31 | render() {
32 | const _props = this.props;
33 | const {children} = _props;
34 | let _sysClass = ['m-form', 'm-form--fit', 'm-form--label-align-right'];
35 | return (
36 |
37 |
40 |
41 | );
42 | }
43 | }
--------------------------------------------------------------------------------
/lib/_components/_form/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/form/config';
3 | @import '../../_sass/form/form';
4 | //Input
5 | @import '../../_sass/input/input';
6 | @import '../../_sass/input/checkbox-radio';
--------------------------------------------------------------------------------
/lib/_components/_formStatic/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import {isExist, isObject} from '../../_scripts/_is';
4 | import Paragraph from '../_paragraph/index.osx';
5 | import Text from '../_text/index.osx';
6 | const FormStaticProps = {
7 | helper: {},
8 | children: {}
9 | };
10 |
11 | export default class FormStatic extends Component {
12 | constructor(props) {
13 | super(props);
14 | }
15 |
16 | static defaultProps = DefaultProps(FormStaticProps);
17 | static propTypes = PropTypes(FormStaticProps);
18 |
19 | render() {
20 | const _props = this.props;
21 | const {helper, children} = _props;
22 | return (
23 |
24 | {children}
25 | {
26 | isExist(helper) ? (isObject(helper) ? (
27 | {helper.value}) : (
28 | {helper})) : null
29 | }
30 |
31 | );
32 | }
33 | }
--------------------------------------------------------------------------------
/lib/_components/_grid/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind, _delivery} from '../../_scripts/_proptypes';
3 | import {isExist} from "../../_scripts/_is";
4 | import Div from '../_div/index.osx';
5 | import PropType from 'prop-types';
6 | import './index.scss';
7 |
8 | const GridProps = {
9 | mode: {
10 | type: PropType.oneOf(['desktop', 'desktop-and-tablet', 'tablet', 'tablet-and-mobile', 'mobile'])
11 | },
12 | root: {
13 | default: false,
14 | type: PropType.bool
15 | },
16 | direction: {
17 | default: 'ver',
18 | type: PropType.oneOf(['ver', 'hor'])
19 | },
20 | justify: {
21 | type: PropType.oneOf(['flex-start', 'flex-end', 'center', 'space-between', 'space-around'])
22 | },
23 | wrap: {
24 | type: PropType.oneOf(['nowrap', 'wrap', 'wrap-reverse'])
25 | },
26 | alignItems: {
27 | type: PropType.oneOf(['flex-start', 'flex-end', 'center', 'baseline', 'stretch'])
28 | },
29 | alignContent: {
30 | type: PropType.oneOf(['flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'stretch'])
31 | },
32 | children: {}
33 | };
34 |
35 | export default class Grid extends Component {
36 | constructor(props) {
37 | super(props);
38 | }
39 |
40 | static defaultProps = DefaultProps(GridProps);
41 | static propTypes = PropTypes(GridProps);
42 |
43 | render() {
44 | const _props = this.props;
45 | const {mode, direction, root, justify, wrap, alignItems, alignContent, children} = _props;
46 | let _sysClass = ['m-grid'];
47 | isExist(mode) && _sysClass.push('m-grid--' + mode);
48 | isExist(direction) && _sysClass.push('m-grid--' + direction + (isExist(mode) ? ('-' + mode) : ''));
49 | isExist(root) && _sysClass.push('m-grid--root');
50 | isExist(justify) && _sysClass.push('m-grid--' + justify);
51 | isExist(wrap) && _sysClass.push('m-grid--' + wrap);
52 | isExist(alignItems) && _sysClass.push('m-grid--align-item-' + alignItems);
53 | isExist(alignContent) && _sysClass.push('m-grid--align-content-' + alignContent);
54 | return (
55 |
56 |
57 | {children}
58 |
59 |
60 | );
61 | }
62 | }
--------------------------------------------------------------------------------
/lib/_components/_grid/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import "../../_sass/grid/grid";
--------------------------------------------------------------------------------
/lib/_components/_griditem/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import Div from '../_div/index.osx';
4 | import {isExist, isNotExist} from "../../_scripts/_is";
5 | import PropType from 'prop-types';
6 |
7 | const GridItemProps = {
8 | order: {
9 | type: PropType.oneOf([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
10 | },
11 | align: {
12 | type: PropType.oneOf(['auto', 'flex-start', 'flex-end', 'center', 'baseline', 'stretch'])
13 | },
14 | fluid: {
15 | default: true,
16 | type: PropType.bool
17 | },
18 | children: {}
19 | };
20 |
21 | export default class GridItem extends Component {
22 | constructor(props) {
23 | super(props);
24 | }
25 |
26 | static defaultProps = DefaultProps(GridItemProps);
27 | static propTypes = PropTypes(GridItemProps);
28 |
29 | render() {
30 | const _props = this.props;
31 | const {order, flex, align, fluid, children} = _props;
32 | let _sysClass = ['m-grid__item'];
33 | let _sysStyle = {};
34 | isExist(fluid) && fluid && _sysClass.push('m-grid__item--fluid');
35 | isExist(order) && _sysClass.push('m-grid__item--order-' + order);
36 | isExist(align) && _sysClass.push('m-grid__item--' + align);
37 | isExist(flex) && (_sysStyle = Object.assign(_sysStyle, {flex}));
38 | return (
39 |
40 |
41 | {children}
42 |
43 |
44 | );
45 | }
46 | }
--------------------------------------------------------------------------------
/lib/_components/_header/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/toggler/mixins';
3 | @import '../../_sass/aside/config';
4 | @import '../../_sass/header/config';
5 | @import '../../_sass/header/header';
6 | @import '../../_sass/header/brand';
--------------------------------------------------------------------------------
/lib/_components/_icon/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind} from '../../_scripts/_proptypes';
3 | import PropType from 'prop-types';
4 | import './index.scss';
5 |
6 | const IconProps = {
7 | iconName: {
8 | type: PropType.string
9 | },
10 | children: {}
11 | };
12 |
13 | export default class Icon extends Component {
14 | constructor(props) {
15 | super(props);
16 | }
17 |
18 | static defaultProps = DefaultProps(IconProps);
19 | static propTypes = PropTypes(IconProps);
20 |
21 | render() {
22 | const _props = this.props;
23 | const {iconName, children} = _props;
24 | return (
25 |
26 | {children}
27 |
28 | );
29 | }
30 | }
--------------------------------------------------------------------------------
/lib/_components/_icon/index.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_components/_icon/index.scss
--------------------------------------------------------------------------------
/lib/_components/_input/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {
3 | DefaultProps,
4 | PropTypes,
5 | _sysBind,
6 | _delivery,
7 | computedStyle,
8 | computedSolid,
9 | computedSize
10 | } from '../../_scripts/_proptypes';
11 | import {isExist, isObject} from "../../_scripts/_is";
12 | import Text from '../_text/index.osx';
13 |
14 | const InputProps = {
15 |
16 | children: {}
17 | }
18 | ;
19 |
20 | export default class Input extends Component {
21 | constructor(props) {
22 | super(props);
23 | }
24 |
25 | static defaultProps = DefaultProps(InputProps);
26 | static propTypes = PropTypes(InputProps);
27 |
28 | render() {
29 | const _props = this.props;
30 | const {input = {}, _style = [], _solid = false, _size = 'normal', id, helper} = _props;
31 | const {autoComplete = true, type = 'text', placeholder = '', style, solid, size, disabled = false, readOnly = false, value} = input;
32 | let _sysClass = ['form-control', 'm-input'];
33 | _sysClass = _sysClass.concat(computedStyle(style, _style));
34 | isExist(computedSolid(solid, _solid)) && _sysClass.push(computedSolid(solid, _solid));
35 | isExist(computedSize(size, _size)) && _sysClass.push(computedSize(size, _size));
36 | return (
37 |
38 |
47 | {
48 | isExist(helper) ? (isObject(helper) ? (
49 | {helper.value}) : (
50 | {helper})) : null
51 | }
52 |
53 | );
54 | }
55 | }
--------------------------------------------------------------------------------
/lib/_components/_link/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind} from '../../_scripts/_proptypes';
3 | import PropType from 'prop-types';
4 | import {_publicColor} from '../../_scripts/_public';
5 | import './index.scss';
6 |
7 | const LinkProps = {
8 | color: {
9 | type: PropType.oneOf(_publicColor)
10 | },
11 | href: {
12 | type: PropType.string
13 | },
14 | download: {
15 | type: PropType.string
16 | },
17 | target: {
18 | type: PropType.oneOf(['_blank', '_parent', '_self', '_top'])
19 | },
20 | children: {}
21 | };
22 |
23 | export default class Link extends Component {
24 | constructor(props) {
25 | super(props);
26 | }
27 |
28 | static defaultProps = DefaultProps(LinkProps);
29 | static propTypes = PropTypes(LinkProps);
30 |
31 | render() {
32 | const _props = this.props;
33 | const {color, href, download, target, children} = _props;
34 | let _sysClass = ['m-link'];
35 | color && _sysClass.push('m-link--' + color);
36 | return (
37 |
38 | {children}
39 |
40 | );
41 | }
42 | }
--------------------------------------------------------------------------------
/lib/_components/_link/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/typography/link';
--------------------------------------------------------------------------------
/lib/_components/_list/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind} from '../../_scripts/_proptypes';
3 | import {isExist, isArray, isObject} from "../../_scripts/_is";
4 | import PropType from 'prop-types';
5 |
6 | const CodeProps = {
7 | items: {
8 | default: [],
9 | type: PropType.oneOfType([
10 | PropType.object,
11 | PropType.array
12 | ]),
13 | },
14 | label: {
15 | default: 'ul',
16 | type: PropType.oneOf(['ul', 'ol'])
17 | },
18 | children: {}
19 | };
20 |
21 | export default class List extends Component {
22 | constructor(props) {
23 | super(props);
24 | }
25 |
26 | static defaultProps = DefaultProps(CodeProps);
27 | static propTypes = PropTypes(CodeProps);
28 |
29 | render() {
30 | const _props = this.props;
31 | const {label, items} = _props;
32 | return (
33 |
34 | {label === 'ul' ? (
35 |
36 | {
37 | isExist(items) && (isArray(items) ? (items.map((item, index) => {
38 | if (isObject(item)) {
39 | return (- {item.value}
)
40 | } else {
41 | return (- {item}
);
42 | }
43 | })) : isObject(items) ? (- {items.value}
) : (- {items}
))
44 | }
45 |
46 | ) : (
47 |
48 | {
49 | isExist(items) && (isArray(items) ? (items.map((item, index) => {
50 | if (isObject(item)) {
51 | return (- {item.value}
)
52 | } else {
53 | return (- {item}
);
54 | }
55 | })) : isObject(items) ? (- {items.value}
) : (- {items}
))
56 | }
57 |
58 | )}
59 |
60 | );
61 | }
62 | }
--------------------------------------------------------------------------------
/lib/_components/_loader/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import {isExist} from "../../_scripts/_is";
4 | import {_publicColor} from '../../_scripts/_public';
5 | import Div from '../_div/index.osx';
6 | import PropType from 'prop-types';
7 | import './index.scss';
8 |
9 | const LoaderProps = {
10 | color: {
11 | type: PropType.oneOf(_publicColor)
12 | },
13 | size: {
14 | default: 'normal',
15 | type: PropType.oneOf(['sm', 'lg', 'normal'])
16 | },
17 | align: {
18 | type: PropType.oneOf(['left', 'right', 'center'])
19 | },
20 | width: {
21 | default: '30px'
22 | },
23 | children: {}
24 | };
25 |
26 | export default class Loader extends Component {
27 | constructor(props) {
28 | super(props);
29 | }
30 |
31 | static defaultProps = DefaultProps(LoaderProps);
32 | static propTypes = PropTypes(LoaderProps);
33 |
34 | render() {
35 | const _props = this.props;
36 | const {color, size, align, width, children} = _props;
37 | let _sysClass = ['m-loader'];
38 | isExist(color) && _sysClass.push('m-loader--' + color);
39 | isExist(size) && ['sm', 'lg'].includes(size) && _sysClass.push('m-loader--' + size);
40 | isExist(align) && ['center', 'left', 'right'].includes(align) && _sysClass.push('m-loader--' + align);
41 | return (
42 |
43 | {children}
46 |
47 | );
48 | }
49 | }
--------------------------------------------------------------------------------
/lib/_components/_loader/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/buttons/config';
3 | @import '../../_sass/spinners/config';
4 | @import '../../_sass/spinners/loader';
--------------------------------------------------------------------------------
/lib/_components/_menu/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/arrows/config';
3 | @import '../../_sass/arrows/mixins';
4 | @import '../../_sass/header/config';
5 | @import '../../_sass/aside/config';
6 | @import '../../_sass/scroll/scroll';
7 | @import '../../_sass/offcanvas/offcanvas';
8 | @import '../../_sass/aside/aside-left';
9 | @import '../../_sass/menu/config';
10 | @import '../../_sass/menu/ver/helpers';
11 | @import '../../_sass/menu/ver/extend';
12 | @import '../../_sass/menu/ver/base';
13 | @import '../../_sass/menu/menu';
--------------------------------------------------------------------------------
/lib/_components/_modal/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/modal/modal';
--------------------------------------------------------------------------------
/lib/_components/_nav/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/nav/config';
3 | @import '../../_sass/nav/nav';
4 | @import '../../_sass/nav/grid';
5 | @import '../../_sass/nav/scroll-top';
6 | @import '../../_sass/nav/sticky';
--------------------------------------------------------------------------------
/lib/_components/_page/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import Grid from '../_grid/index.osx';
4 | import './index.scss'
5 |
6 | const PageProps = {
7 | children: {}
8 | };
9 |
10 | export default class Page extends Component {
11 | constructor(props) {
12 | super(props);
13 | }
14 |
15 | static defaultProps = DefaultProps(PageProps);
16 | static propTypes = PropTypes(PageProps);
17 |
18 | render() {
19 | const _props = this.props;
20 | const {children} = _props;
21 | return (
22 |
23 |
27 | {children}
28 |
29 |
30 | );
31 | }
32 | }
--------------------------------------------------------------------------------
/lib/_components/_page/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/container/config';
3 | @import '../../_sass/page/base/page';
--------------------------------------------------------------------------------
/lib/_components/_paragraph/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind} from '../../_scripts/_proptypes';
3 | const ParagraphProps = {
4 | children: {}
5 | };
6 |
7 | export default class Paragraph extends Component {
8 | constructor(props) {
9 | super(props);
10 | }
11 |
12 | static defaultProps = DefaultProps(ParagraphProps);
13 | static propTypes = PropTypes(ParagraphProps);
14 |
15 | render() {
16 | const _props = this.props;
17 | return (
18 |
19 | {_props.children}
20 |
21 | );
22 | }
23 | }
--------------------------------------------------------------------------------
/lib/_components/_popover/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/popover/popover';
--------------------------------------------------------------------------------
/lib/_components/_portlet/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/portlets/config';
3 | @import '../../_sass/portlets/portlets';
--------------------------------------------------------------------------------
/lib/_components/_progress/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/progress/progress';
--------------------------------------------------------------------------------
/lib/_components/_scroll/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/scroll/scroll';
--------------------------------------------------------------------------------
/lib/_components/_section/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import Div from '../_div/index.osx';
4 | import Title from '../_title/index.osx';
5 | import Text from '../_text/index.osx';
6 | import './index.scss'
7 |
8 | const SectionProps = {
9 | title: {},
10 | describe: {},
11 | children: {}
12 | };
13 |
14 | export default class Section extends Component {
15 | constructor(props) {
16 | super(props);
17 | }
18 |
19 | static defaultProps = DefaultProps(SectionProps);
20 | static propTypes = PropTypes(SectionProps);
21 |
22 | render() {
23 | const _props = this.props;
24 | const {title, describe, children} = _props;
25 | return (
26 |
27 |
28 |
29 | {title}
30 |
31 |
32 | {describe}
33 |
34 |
35 | {children}
36 |
37 |
38 |
39 | );
40 | }
41 | }
--------------------------------------------------------------------------------
/lib/_components/_section/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/typography/section';
--------------------------------------------------------------------------------
/lib/_components/_separator/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import {_publicColor} from '../../_scripts/_public';
4 | import Div from '../_div/index.osx';
5 | import PropType from 'prop-types';
6 | import './index.scss';
7 | const SeparatorProps = {
8 | size: {
9 | default: 'sm',
10 | type: PropType.oneOf(['lg', 'xl', 'sm', 'fit'])
11 | },
12 | color: {
13 | type: PropType.oneOf(_publicColor)
14 | },
15 | dashed: {
16 | default: false,
17 | type: PropType.bool
18 | },
19 | children: {}
20 | };
21 | export default class Separator extends Component {
22 | constructor(props) {
23 | super(props);
24 | }
25 |
26 | static defaultProps = DefaultProps(SeparatorProps);
27 | static propTypes = PropTypes(SeparatorProps);
28 |
29 | render() {
30 | const _props = this.props;
31 | const {size, dashed, color} = _props;
32 | let _sysClass = ['m-separator'];
33 | size && _sysClass.push('m-separator--' + size);
34 | color && _sysClass.push('m-separator--' + color);
35 | dashed && _sysClass.push('m-separator--dashed');
36 | return (
37 |
38 |
39 |
40 | );
41 | }
42 | }
--------------------------------------------------------------------------------
/lib/_components/_separator/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/portlets/config';
3 | @import '../../_sass/typography/separator';
--------------------------------------------------------------------------------
/lib/_components/_space/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import {isNumber} from '../../_scripts/_is';
4 | import Div from '../_div/index.osx';
5 | import PropType from 'prop-types';
6 |
7 | const SpaceProps = {
8 | size: {
9 | default: 10,
10 | type: PropType.oneOfType([
11 | PropType.number,
12 | PropType.string
13 | ])
14 | },
15 | children: {}
16 | };
17 | export default class Space extends Component {
18 | constructor(props) {
19 | super(props);
20 | }
21 |
22 | static defaultProps = DefaultProps(SpaceProps);
23 | static propTypes = PropTypes(SpaceProps);
24 |
25 | render() {
26 | const _props = this.props;
27 | const {size} = _props;
28 | return (
29 |
30 |
40 |
41 | );
42 | }
43 | }
--------------------------------------------------------------------------------
/lib/_components/_spinner/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind, _delivery} from '../../_scripts/_proptypes';
3 | import {isExist} from "../../_scripts/_is";
4 | import {_publicColor} from '../../_scripts/_public';
5 | import Div from '../_div/index.osx'
6 | import PropType from 'prop-types';
7 | import './index.scss';
8 |
9 | const SpinnerProps = {
10 | size: {
11 | default: 'normal',
12 | type: PropType.oneOf(['normal', 'sm', 'lg'])
13 | },
14 | color: {
15 | type: PropType.oneOf(_publicColor)
16 | },
17 | children: {}
18 | };
19 |
20 | export default class Spinner extends Component {
21 | constructor(props) {
22 | super(props);
23 | }
24 |
25 | static defaultProps = DefaultProps(SpinnerProps);
26 | static propTypes = PropTypes(SpinnerProps);
27 |
28 | render() {
29 | const _props = this.props;
30 | const {color, size, children} = _props;
31 | let _sysClass = ['m-spinner'];
32 | isExist(color) && _sysClass.push('m-spinner--' + color);
33 | isExist(size) && ['sm', 'lg'].includes(size) && _sysClass.push('m-spinner--' + size);
34 | return (
35 |
36 | {children}
37 |
38 | );
39 | }
40 | }
--------------------------------------------------------------------------------
/lib/_components/_spinner/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/spinners/config';
3 | @import '../../_sass/spinners/spinner';
--------------------------------------------------------------------------------
/lib/_components/_stack/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/stack/stack';
--------------------------------------------------------------------------------
/lib/_components/_subheader/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import {isExist} from "../../_scripts/_is";
4 | import Div from '../_div/index.osx';
5 | import Breadcrumb from "../_breadcrumbs/index.osx";
6 | import Title from '../_title/index.osx';
7 | import PropType from 'prop-types';
8 | import './index.scss'
9 | const SubHeaderProps = {
10 | header: {
11 | type: PropType.object
12 | },
13 | breadcrumbs: {
14 | type: PropType.object
15 | },
16 | children: {}
17 | };
18 |
19 | export default class SubHeader extends Component {
20 | constructor(props) {
21 | super(props);
22 | }
23 |
24 | static defaultProps = DefaultProps(SubHeaderProps);
25 | static propTypes = PropTypes(SubHeaderProps);
26 |
27 | render() {
28 | const _props = this.props;
29 | const {header, breadcrumbs} = _props;
30 | return (
31 |
32 |
33 |
34 | {
35 | isExist(header) && header.show && (
36 |
38 | {header.name}
39 |
40 | )
41 | }
42 | {
43 | isExist(breadcrumbs) &&
44 |
45 | }
46 |
47 |
48 |
49 | );
50 | }
51 | }
--------------------------------------------------------------------------------
/lib/_components/_subheader/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/subheader/subheader';
--------------------------------------------------------------------------------
/lib/_components/_tab/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/tab/tab';
--------------------------------------------------------------------------------
/lib/_components/_table/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/table/table';
--------------------------------------------------------------------------------
/lib/_components/_text/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind} from '../../_scripts/_proptypes';
3 |
4 | const TextProps = {
5 | children: {}
6 | };
7 |
8 | export default class Text extends Component {
9 | constructor(props) {
10 | super(props);
11 | }
12 |
13 | static defaultProps = DefaultProps(TextProps);
14 | static propTypes = PropTypes(TextProps);
15 |
16 | render() {
17 | const _props = this.props;
18 | return (
19 |
20 | {_props.children}
21 |
22 | );
23 | }
24 | }
--------------------------------------------------------------------------------
/lib/_components/_title/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _sysBind} from '../../_scripts/_proptypes';
3 | import PropType from 'prop-types';
4 |
5 | const TitleProps = {
6 | level: {
7 | default: 1,
8 | type: PropType.oneOf([1, 2, 3, 4, 5, 6])
9 | },
10 | children: {}
11 | };
12 | export default class Title extends Component {
13 | constructor(props) {
14 | super(props);
15 | }
16 |
17 | static defaultProps = DefaultProps(TitleProps);
18 | static propTypes = PropTypes(TitleProps);
19 |
20 | render() {
21 | const _props = this.props;
22 | const {level, children} = _props;
23 | const Tag = 'h' + level;
24 | return (
25 |
26 | {children}
27 |
28 | );
29 | }
30 | }
--------------------------------------------------------------------------------
/lib/_components/_tooltip/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import '../../_sass/tooltip/tooltip';
--------------------------------------------------------------------------------
/lib/_components/_wrapper/index.osx:
--------------------------------------------------------------------------------
1 | import React, {Component, Fragment} from 'react';
2 | import {DefaultProps, PropTypes, _delivery} from '../../_scripts/_proptypes';
3 | import GridItem from '../_griditem/index.osx';
4 |
5 | const WrapperProps = {
6 | children: {}
7 | };
8 |
9 | export default class Wrapper extends Component {
10 | constructor(props) {
11 | super(props);
12 | }
13 |
14 | static defaultProps = DefaultProps(WrapperProps);
15 | static propTypes = PropTypes(WrapperProps);
16 |
17 | render() {
18 | const _props = this.props;
19 | const {children} = _props;
20 | return (
21 |
22 |
23 | {children}
24 |
25 |
26 | );
27 | }
28 | }
--------------------------------------------------------------------------------
/lib/_plugins.js:
--------------------------------------------------------------------------------
1 | import './_scripts/_jquery';
2 | import 'popper.js';
3 | import 'bootstrap';
4 |
5 |
6 | import './_sass/bootstrap.scss';
7 | import './_plugins/metronic/css/styles.css';
8 |
9 |
10 | //全部预设字体
11 | import "./_plugins/flaticon/css/flaticon.css";
12 | import './_plugins/line-awesome/css/line-awesome.css';
13 | import "font-awesome/css/font-awesome.css";
14 | import "socicon/css/socicon.css";
15 |
--------------------------------------------------------------------------------
/lib/_plugins/flaticon/fonts/Flaticon.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_plugins/flaticon/fonts/Flaticon.eot
--------------------------------------------------------------------------------
/lib/_plugins/flaticon/fonts/Flaticon.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_plugins/flaticon/fonts/Flaticon.ttf
--------------------------------------------------------------------------------
/lib/_plugins/flaticon/fonts/Flaticon.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_plugins/flaticon/fonts/Flaticon.woff
--------------------------------------------------------------------------------
/lib/_plugins/line-awesome/fonts/line-awesome.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_plugins/line-awesome/fonts/line-awesome.eot
--------------------------------------------------------------------------------
/lib/_plugins/line-awesome/fonts/line-awesome.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_plugins/line-awesome/fonts/line-awesome.ttf
--------------------------------------------------------------------------------
/lib/_plugins/line-awesome/fonts/line-awesome.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_plugins/line-awesome/fonts/line-awesome.woff
--------------------------------------------------------------------------------
/lib/_plugins/line-awesome/fonts/line-awesome.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_plugins/line-awesome/fonts/line-awesome.woff2
--------------------------------------------------------------------------------
/lib/_plugins/metronic/css/styles.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Icon Font Metronic
3 | * Made with love by Icons8 [ https://icons8.com/ ] using FontCustom [ https://github.com/FontCustom/fontcustom ]
4 | *
5 | * Contacts:
6 | * [ https://icons8.com/contact ]
7 | *
8 | * Follow Icon8 on
9 | * Twitter [ https://twitter.com/icons_8 ]
10 | * Facebook [ https://www.facebook.com/Icons8 ]
11 | * Google+ [ https://plus.google.com/+Icons8 ]
12 | * GitHub [ https://github.com/icons8 ]
13 | */
14 |
15 |
16 | @font-face {
17 | font-family: "Metronic";
18 | src: url("../fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.eot");
19 | src: url("../fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.eot?#iefix") format("embedded-opentype"),
20 | url("../fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.woff2") format("woff2"),
21 | url("../fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.woff") format("woff"),
22 | url("../fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.ttf") format("truetype"),
23 | url("../fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.svg#Metronic") format("svg");
24 | font-weight: normal;
25 | font-style: normal;
26 | }
27 |
28 | @media screen and (-webkit-min-device-pixel-ratio:0) {
29 | @font-face {
30 | font-family: "Metronic";
31 | src: url("../fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.svg#Metronic") format("svg");
32 | }
33 | }
34 |
35 | [data-icons8]:before { content: attr(data-icons8); }
36 |
37 | .icons8, [data-icons8]:before,
38 | .icons8-arrows-01:before,
39 | .icons8-arrows-02:before,
40 | .icons8-arrows-03:before,
41 | .icons8-arrows-04:before {
42 | display: inline-block;
43 | font-family: "Metronic";
44 | font-style: normal;
45 | font-weight: normal;
46 | font-variant: normal;
47 | line-height: 1;
48 | text-decoration: inherit;
49 | text-rendering: optimizeLegibility;
50 | text-transform: none;
51 | -moz-osx-font-smoothing: grayscale;
52 | -webkit-font-smoothing: antialiased;
53 | font-smoothing: antialiased;
54 | }
55 |
56 | .icons8-arrows-01:before { content: "\f1b1"; }
57 | .icons8-arrows-02:before { content: "\f1b2"; }
58 | .icons8-arrows-03:before { content: "\f1b3"; }
59 | .icons8-arrows-04:before { content: "\f1b4"; }
--------------------------------------------------------------------------------
/lib/_plugins/metronic/fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_plugins/metronic/fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.eot
--------------------------------------------------------------------------------
/lib/_plugins/metronic/fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
40 |
--------------------------------------------------------------------------------
/lib/_plugins/metronic/fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_plugins/metronic/fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.ttf
--------------------------------------------------------------------------------
/lib/_plugins/metronic/fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_plugins/metronic/fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.woff
--------------------------------------------------------------------------------
/lib/_plugins/metronic/fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/lib/_plugins/metronic/fonts/Metronic_fda1334c35d0f5fe2afb3afebbb6774a.woff2
--------------------------------------------------------------------------------
/lib/_sass/_normalize.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
2 | //
3 | // 1. Set default font family to sans-serif.
4 | // 2. Prevent iOS and IE text size adjust after device orientation change,
5 | // without disabling user zoom.
6 | // 3. Set 100% height for document body
7 | @import './config';
8 | @import './mixins';
9 |
10 | html {
11 | font-family: sans-serif; // 1
12 | text-size-adjust: 100%; // 2
13 | -ms-text-size-adjust: 100%; // 2
14 | -webkit-text-size-adjust: 100%; // 2
15 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
16 | }
17 |
18 | html,
19 | body {
20 | height: 100%;
21 | margin: 0px;
22 | padding: 0px;
23 |
24 | font-size: array-get($m--root-font, size, desktop);
25 | font-weight: array-get($m--root-font, weight);
26 | font-family: #{array-get($m--font-families, regular)};
27 |
28 | -ms-text-size-adjust: 100%; // 2
29 | -webkit-font-smoothing: antialiased;
30 | -moz-osx-font-smoothing: grayscale;
31 |
32 | a:active,
33 | a:focus {
34 | text-decoration: none !important;
35 | }
36 | }
37 |
38 | body {
39 | display: flex;
40 | flex-direction: column;
41 | }
42 |
43 | body,
44 | .m-smooth-scroll {
45 | scroll-behavior: smooth;
46 | }
47 |
48 | router-outlet {
49 | display: none;
50 | }
51 |
52 | @include tablet {
53 | html,
54 | body {
55 | font-size: array-get($m--root-font, size, tablet);
56 | }
57 | }
58 |
59 | @include mobile {
60 | html,
61 | body {
62 | font-size: array-get($m--root-font, size, mobile);
63 | }
64 | }
65 |
66 | body {
67 | &.m--skin-light {
68 | color: array-get($m--root-font, color, light);
69 | }
70 |
71 | &.m--skin-dark {
72 | color: array-get($m--root-font, color, dark);
73 | }
74 | > div:first-of-type {
75 | height: 100%;
76 | }
77 | }
78 |
79 | a,
80 | button {
81 | outline: none !important;
82 | }
--------------------------------------------------------------------------------
/lib/_sass/alert/_config.scss:
--------------------------------------------------------------------------------
1 | $m--bootstrap-extend-config: (
2 | alert: (
3 | icon: (
4 | sizes: (
5 | lineawesome: 2.4rem,
6 | fontawesome: 1.8rem,
7 | metronic: 2.4rem
8 | )
9 | )
10 | )
11 | );
12 |
--------------------------------------------------------------------------------
/lib/_sass/arrows/_config.scss:
--------------------------------------------------------------------------------
1 | $m-smooth-arrows: (
2 | // icon codes
3 | icon: (
4 | top: '\f1b2',
5 | bottom: '\f1b1',
6 | left: '\f1b3',
7 | right: '\f1b4'
8 | ),
9 |
10 | // icon sizes
11 | size: (
12 | // default size
13 | default: (
14 | // bottom placement
15 | bottom: (
16 | font-size: 40px,
17 | height: 11px,
18 | offset: 11px,
19 | offset-ie: 13px
20 | ),
21 |
22 | // top placement
23 | top: (
24 | font-size: 40px,
25 | height: 10px,
26 | offset: 9px,
27 | offset-ie: 11px
28 | ),
29 |
30 | // right placement
31 | right: (
32 | font-size: 40px,
33 | width: 10px,
34 | offset: 9px
35 | ),
36 |
37 | // right placement
38 | left: (
39 | font-size: 40px,
40 | width: 10px,
41 | offset: 9px
42 | )
43 | ),
44 | // large size
45 | large: (
46 | // bottom placement
47 | bottom: (
48 | font-size: 60px,
49 | height: 16px,
50 | offset: 13px,
51 | offset-ie: 26px
52 | ),
53 |
54 | // top placement
55 | top: (
56 | font-size: 60px,
57 | height: 16px,
58 | offset: 13px,
59 | offset-ie: 16px
60 | ),
61 |
62 | // right placement
63 | right: (
64 | font-size: 60px,
65 | width: 16px,
66 | offset: 13px
67 | ),
68 |
69 | // right placement
70 | left: (
71 | font-size: 60px,
72 | width: 16px,
73 | offset: 13px
74 | )
75 | )
76 | )
77 | );
--------------------------------------------------------------------------------
/lib/_sass/aside/_aside-header-menu-mobile.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Aside for Horizontal Menu Mobile Mode
3 | //
4 |
5 | @mixin m-build-aside-header-menu-mobile-base($layout) {
6 |
7 | //== Base Markup
8 | @include tablet-and-mobile {
9 | .m-aside-header-menu-mobile {
10 | width: array-get($layout, self, default, width);
11 | z-index: array-get($layout, self, fixed, zindex) + 3;
12 |
13 | &.m-aside-header-menu-mobile--skin-dark {
14 | background-color: array-get($layout, self, default, bg-color, dark);
15 | }
16 |
17 | &.m-aside-header-menu-mobile--skin-light {
18 | background-color: array-get($layout, self, default, bg-color, light);
19 | }
20 | }
21 | }
22 | }
23 |
24 |
25 | //== Build Aside Mobile Base
26 | @include m-build-aside-header-menu-mobile-base( array-get($m-config-aside, aside-header-menu-mobile ) );
27 |
28 | //== Build Header Mobile Menu Offcanvas
29 | @include m-generate-component--offcanvas(m-aside-header-menu-mobile, tablet-and-mobile, array-get($m-config-aside, aside-header-menu-mobile, self, offcanvas) );
--------------------------------------------------------------------------------
/lib/_sass/aside/_aside-right.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Right Aside
3 | //
4 |
5 | //== Base markup
6 | .m-aside-right {
7 | width: array-get($m-config-aside, aside-right, self, width);
8 | padding: array-get($m-config-aside, aside-right, self, padding, desktop);
9 | background: array-get($m-config-aside, aside-right, self, bg-color);
10 | @include shadow(array-get($m-config-aside, aside-right, self, shadow));
11 | }
12 |
13 | // Desktop mode
14 | @include desktop {
15 | .m-header--fixed .m-aside-right {
16 | //padding-top: array-get($m-config-header, header, layout, self, default, height, desktop);
17 | }
18 | }
19 |
20 | // Tablet and Mobile mode
21 | @include tablet-and-mobile {
22 | .m-aside-right {
23 | width: auto;
24 | padding: array-get($m-config-aside, aside-right, self, padding, mobile);
25 | margin: array-get($m-config-aside, aside-right, self, margin, mobile);
26 | }
27 | }
--------------------------------------------------------------------------------
/lib/_sass/blockui/_blockui.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--blockui-base() {
2 | .m-blockui {
3 | @include rounded {
4 | @include border-radius(array-get($m--border-radius, general));
5 | }
6 | display: table;
7 | table-layout: fixed;
8 |
9 | > span {
10 | display: table-cell;
11 | vertical-align: middle;
12 | padding: 8px 15px;
13 | font-size: get-font-size(regular);
14 | font-weight: get-font-weight(bold);
15 |
16 | > .m-loader,
17 | > .m-spinner {
18 | margin-right: 10px;
19 | }
20 | }
21 | }
22 | }
23 |
24 | @mixin m-build-component--blockui-skin($skin) {
25 | @include component-skin(m-blockui, $skin) {
26 | background: get-color($skin, box);
27 | @include shadow(get-shadow($skin, '-'));
28 |
29 | &.m-blockui-no-shadow {
30 | @include shadow(none);
31 | }
32 |
33 | > span {
34 | color: get-color($skin, regular, '-');
35 | }
36 | }
37 | }
38 |
39 |
40 | @include m-build-component--blockui-base();
41 |
42 | @include m-build-component--blockui-skin(light);
43 |
44 | @include m-build-component--blockui-skin(dark);
--------------------------------------------------------------------------------
/lib/_sass/bootstrap.scss:
--------------------------------------------------------------------------------
1 | @import './config';
2 | @import './_variables.scss';
3 | @import './bootstrap/index';
4 | @import '~bootstrap/scss/bootstrap.scss';
5 |
--------------------------------------------------------------------------------
/lib/_sass/bootstrap/dropdown/_config.scss:
--------------------------------------------------------------------------------
1 | $m--bootstrap-extend-config: (
2 | dropdown: (
3 | icon: (
4 | sizes: (
5 | lineawesome: 1.3rem,
6 | fontawesome: 1.1rem,
7 | metronic: 1.3rem
8 | )
9 | )
10 | )
11 | );
--------------------------------------------------------------------------------
/lib/_sass/bootstrap/index.scss:
--------------------------------------------------------------------------------
1 | @import '../../index';
2 | @import './dropdown/config';
3 | @import './dropdown/dropdown';
--------------------------------------------------------------------------------
/lib/_sass/container/_config.scss:
--------------------------------------------------------------------------------
1 | $m--container-widths: (
2 | sm: 576px,
3 | md: 720px,
4 | lg: 940px,
5 | xl: 1140px,
6 | xxl: 1340px,
7 | xxxl: 1540px
8 | ) !default;
9 |
--------------------------------------------------------------------------------
/lib/_sass/container/_container.scss:
--------------------------------------------------------------------------------
1 | .m-container {
2 | @include clearfix();
3 | width: 100%;
4 | margin-right: auto;
5 | margin-left: auto;
6 |
7 | // fluid container mode
8 | &.m-container--fluid {
9 | width: 100%;
10 | }
11 |
12 | // full height mode
13 | &.m-container--full-height {
14 | position: relative;
15 | top: 0;
16 | bottom: 0;
17 | left: 0;
18 | right: 0;
19 | height: 100%;
20 | }
21 | }
22 |
23 | @each $breakpoint, $breakpoint-width in $m--layout-breakpoints {
24 | @media (min-width: $breakpoint-width) {
25 | .m-container:not(.m-container--fluid):not(.m-container--responsive) {
26 | width: map-get($m--container-widths, $breakpoint);
27 | }
28 | }
29 | }
30 |
31 | @each $breakpoint, $breakpoint-width in $m--layout-breakpoints {
32 | @media (min-width: $breakpoint-width) {
33 | .m-container.m-container--responsive.m-container--#{$breakpoint} {
34 | width: map-get($m--container-widths, $breakpoint);
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/lib/_sass/custom.scss:
--------------------------------------------------------------------------------
1 | $m--brand-color: #716aca;
2 | $m--brand-inverse-color: #ffffff;
3 |
4 | $m-aside-left-width: 255px;
5 | $m-aside-left-width-minimize: 80px;
6 | $m-aside-left-offcanvas-width: 255px;
--------------------------------------------------------------------------------
/lib/_sass/demo/_demo.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Demo Code Component
3 | //
4 |
5 | .m-demo {
6 | background: #f7f7fa;
7 | margin-bottom: 20px;
8 |
9 | &.m-demo--last {
10 | margin-bottom: 0;
11 | }
12 |
13 | .m-demo__preview {
14 | background: white;
15 | border: 4px solid #f7f7fa;
16 | padding: 30px;
17 |
18 | &.m-demo__preview--btn {
19 | .btn {
20 | margin-right: 5px;
21 | margin-bottom: 15px;
22 | }
23 | }
24 |
25 | &.m-demo__preview--badge {
26 | .m-badge {
27 | margin-right: 5px;
28 | margin-bottom: 15px;
29 | }
30 | }
31 | .m-grid {
32 | .m-grid__item {
33 | height: 80px;
34 | padding: 10px;
35 | border: 1px solid #eee;
36 | background: #fbfbfb;
37 | font-weight: 500;
38 | }
39 |
40 | }
41 | }
42 |
43 | .m-demo__tools {
44 | position: relative;
45 | }
46 |
47 | .m-demo__btn {
48 | position: absolute;
49 | z-index: 100;
50 | top: -4px;
51 | right: 4px;
52 | padding: 2px 6px 2px 6px;
53 | cursor: pointer;
54 | font-size: 0.7rem;
55 | font-weight: 400;
56 | text-transform: uppercase;
57 | @include border-radius(0 3px 3px 0);
58 | background-color: darken(#f7f7f9, 7%);
59 |
60 | &:hover {
61 | background-color: darken(#f7f7f9, 15%);
62 | }
63 | }
64 | }
65 |
66 | .m-demo-buttons {
67 | .btn {
68 | margin-right: 5px;
69 | margin-bottom: 10px;
70 | }
71 | }
72 |
73 | .m-demo-dropdowns {
74 | .m-dropdown {
75 | margin-right: 5px;
76 | margin-bottom: 10px;
77 | }
78 | }
--------------------------------------------------------------------------------
/lib/_sass/demo/_icon.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--demo-icon-base() {
2 | .m-demo-icon {
3 | margin-bottom: 20px;
4 | display: table;
5 | padding: 10px;
6 |
7 | .m-demo-icon__preview {
8 | display: table-cell;
9 | vertical-align: middle;
10 | padding: 0;
11 | text-align: left;
12 | padding-right: 10px;
13 | width: 50px;
14 |
15 | i {
16 | line-height: 0;
17 | vertical-align: middle;
18 | font-size: get-font-size(icon, '++++');
19 | }
20 | }
21 |
22 | .m-demo-icon__class {
23 | width: 100%;
24 | display: table-cell;
25 | vertical-align: middle;
26 | text-align: left;
27 | padding: 0;
28 | font-size: get-font-size(regular, '-');
29 | font-weight: get-font-weight('bold');
30 | }
31 | }
32 | }
33 |
34 | @mixin m-build-component--demo-icon-skin($skin) {
35 | // icon demo
36 | @include component-skin(m-demo-icon, $skin) {
37 |
38 | .m-demo-icon__preview {
39 | i {
40 | color: get-color($skin, regular, '++');
41 | }
42 | }
43 |
44 | .m-demo-icon__class {
45 | color: get-color($skin, regular, '--');
46 | }
47 |
48 | &:hover {
49 | background-color: get-color($skin, panel, '-');
50 | }
51 | }
52 | }
53 |
54 | @include m-build-component--demo-icon-base();
55 |
56 | @include m-build-component--demo-icon-skin(light);
57 |
58 | @include m-build-component--demo-icon-skin(dark);
--------------------------------------------------------------------------------
/lib/_sass/dropdown/_mixins.scss:
--------------------------------------------------------------------------------
1 | @mixin m-component--dropdown--set-bg-color($bg-color, $box-shadow: null) {
2 | .m-dropdown__wrapper {
3 | .m-dropdown__inner {
4 | background-color: $bg-color;
5 | @if ($box-shadow != null) {
6 | box-shadow: $box-shadow;
7 | }
8 | }
9 | }
10 |
11 | @if smooth-arrow() {
12 | &.m-dropdown--arrow {
13 | .m-dropdown__arrow {
14 | color: $bg-color;
15 | }
16 | }
17 | } @else {
18 | &.m-dropdown--arrow {
19 | .m-dropdown__arrow {
20 | @include m--set-classic-arrow-bg(top, $bg-color);
21 | }
22 |
23 | &.m-dropdown--up {
24 | .m-dropdown__arrow {
25 | @include m--set-classic-arrow-bg(bottom, $bg-color);
26 | }
27 | }
28 | }
29 | }
30 | }
31 |
32 | @mixin m-component--dropdown--set-arrow-color($arrow-color: null, $arrow-direction: null) {
33 | @if smooth-arrow() {
34 | &.m-dropdown--arrow {
35 | .m-dropdown__arrow {
36 | color: $arrow-color;
37 | }
38 | }
39 | } @else {
40 | @if $arrow-direction == null {
41 | &.m-dropdown--arrow {
42 | .m-dropdown__arrow {
43 | @include m--set-classic-arrow-bg(top, $arrow-color);
44 | }
45 |
46 | &.m-dropdown--up {
47 | .m-dropdown__arrow {
48 | @include m--set-classic-arrow-bg(bottom, $arrow-color);
49 | }
50 | }
51 | }
52 | } @else {
53 | &.m-dropdown--arrow {
54 | .m-dropdown__arrow {
55 | @include m--set-classic-arrow-bg($arrow-direction, $arrow-color);
56 | }
57 | }
58 | }
59 | }
60 | }
61 |
62 | @mixin m-component--dropdown--set-width($width) {
63 | .m-dropdown__wrapper {
64 | width: $width;
65 | }
66 | }
67 |
68 |
--------------------------------------------------------------------------------
/lib/_sass/footer/_config.scss:
--------------------------------------------------------------------------------
1 | $m-config-footer: (
2 | default: (
3 | self: (
4 | padding: (
5 | desktop: 7px 30px,
6 | mobile: 7px 20px
7 | ),
8 | height: 60px,
9 | bg-color: #ffffff,
10 | shadow: -2px -8px 41px -14px rgba(202,210,222,0.61)
11 | ),
12 | copyright: (
13 | color: #a9a9aa,
14 | font-size: 0.9rem,
15 | font-weight: 400
16 | )
17 | ),
18 | fixed: (
19 | zindex: 102
20 | )
21 | );
--------------------------------------------------------------------------------
/lib/_sass/menu/_menu.scss:
--------------------------------------------------------------------------------
1 | @include m-generate--menu-ver( $m-config-menu-aside );
--------------------------------------------------------------------------------
/lib/_sass/menu/ver/_extend.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Vertical Menu Extend Mixins
3 | //
4 |
5 | //== Extends vertical menu markup
6 | @mixin m-extend--menu-ver($config) {
7 | // Base vertical menu
8 | @if (array-get($config, base, mode) == 'general') {
9 | .#{array-get($config, base, class)} {
10 | @content;
11 | }
12 | } @else if (array-get($config, base, mode) == 'tablet-and-mobile') {
13 | @include tablet-and-mobile {
14 | .#{array-get($config, base, class)} {
15 | @content;
16 | }
17 | }
18 | } @else if (array-get($config, base, mode) == 'mobile') {
19 | @include mobile {
20 | .#{array-get($config, base, class)} {
21 | @content;
22 | }
23 | }
24 | }
25 | }
26 |
27 | //== Extends dropdown vertical menu
28 | @mixin m-extend--menu-ver-dropdown($config) {
29 | // Base dropdown vertical menu
30 | @if (array-get($config, build, dropdown)) {
31 | // Desktop only dropdown vertical menu
32 | @include desktop {
33 | .#{array-get($config, base, class)}--minimize .#{array-get($config, base, class)},
34 | .#{array-get($config, base, class)}.#{array-get($config, base, class)}--dropdown {
35 | @content;
36 | }
37 | }
38 | }
39 | }
40 |
41 | //== Extends minimize vertical menu
42 | @mixin m-extend--menu-ver-minimize($config) {
43 | @if (array-get($config, build, minimize)) {
44 | // Hoverable vertical menu for desktop and tablet modes
45 | @include desktop {
46 | .#{array-get($config, base, parent-class)}--minimize {
47 | .#{array-get($config, base, class)} {
48 | @content;
49 | }
50 | }
51 | }
52 | }
53 | }
--------------------------------------------------------------------------------
/lib/_sass/modal/_modal.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--modal-base() {
2 | .modal {
3 | .modal-content {
4 | border: 0;
5 | @include border-radius(0);
6 | @include rounded {
7 | @include border-radius(array-get($m--border-radius, general));
8 | }
9 |
10 | .modal-header {
11 | padding: 25px;
12 |
13 | .modal-title {
14 | font-weight: get-font-weight(bold);
15 | font-size: get-font-size(regular, '++');
16 | }
17 |
18 | .close {
19 | line-height: 0;
20 | @include m-generate-close-icon();
21 | font-size: 0;
22 |
23 | &:before {
24 | font-size: get-font-size(icon, '-');
25 | }
26 |
27 | outline:none !important;
28 | span {
29 | display: none;
30 | }
31 | }
32 | }
33 |
34 | .modal-body {
35 | padding: 25px;
36 | }
37 |
38 | .modal-footer {
39 | padding: 25px;
40 | }
41 | }
42 | }
43 |
44 | .modal-open {
45 | overflow: auto !important;
46 | padding: 0 !important;
47 | }
48 | }
49 |
50 | @mixin m-build-component--modal-skin($skin) {
51 | .modal {
52 | .modal-content {
53 | @include shadow(get-shadow($skin));
54 |
55 | .modal-header {
56 | .modal-title {
57 | color: get-color($skin, regular, '+');
58 | }
59 |
60 | .close {
61 | span {
62 | color: get-color($skin, regular);
63 | }
64 | }
65 | }
66 | }
67 | }
68 | }
69 |
70 | @include m-build-component--modal-base();
71 |
72 | @include m-build-component--modal-skin(light);
--------------------------------------------------------------------------------
/lib/_sass/nav/_config.scss:
--------------------------------------------------------------------------------
1 | $m--nav: (
2 | // default
3 | default: (
4 | // self
5 | self: (
6 | padding: 0,
7 | margin: 0
8 | ),
9 |
10 | // nav item
11 | item: (
12 | // item itself
13 | self: (
14 | margin: 0,
15 | ),
16 |
17 | // item link
18 | link: (
19 | // self
20 | self: (
21 | padding: (
22 | hover-bg: 12px 30px,
23 | default: 9px 0,
24 | inline: 9px 0
25 | )
26 | ),
27 |
28 | // link icon
29 | icon: (
30 | width: 35px
31 | ),
32 |
33 | // link bullet
34 | bullet: (
35 | self: (
36 | width: 20px,
37 | ),
38 | dot: (
39 | size: 4px
40 | ),
41 | line: (
42 | width: 5px,
43 | height: 1px
44 | )
45 | ),
46 |
47 | // link badge
48 | badge: (
49 | padding: 0px 0px 0px 5px
50 | )
51 | )
52 | ),
53 |
54 | // nav section
55 | section: (
56 | // self
57 | self: (
58 | padding: 0 25px,
59 | margin: (
60 | separator: 20px,
61 | default: 25px 0 0 0,
62 | hover-bg: 20px 30px
63 | )
64 | )
65 | ),
66 |
67 | // separator
68 | separator: (
69 | margin: (
70 | default: 15px 0,
71 | hover-bg: 30px 30px
72 | ),
73 | fit-offset: -20px
74 | )
75 | ),
76 |
77 | // grid
78 | grid: (
79 | // item
80 | item: (
81 | // self
82 | self: (
83 | padding: (
84 | desktop: 3.3rem 0.75rem,
85 | mobile: 1rem 0.5rem
86 | )
87 | ),
88 |
89 | // icon
90 | icon: (
91 | font-size: 35px
92 | ),
93 |
94 | // text
95 | text: (
96 | margin: 10px 0 0 0
97 | )
98 | )
99 | ),
100 |
101 | // sticky
102 | sticky: (
103 | // layout
104 | layout: (
105 | self: (
106 | z-index: 110
107 | )
108 | ),
109 |
110 | // skins
111 | skins: (
112 | light: (
113 | bg-color: #fff,
114 | box-shadow: get-shadow(light)
115 | ),
116 |
117 | dark: (
118 | bg-color: #555,
119 | box-shadow: get-shadow(dark)
120 | )
121 | )
122 | ),
123 |
124 | // scroll top
125 | scroll-top: (
126 | // skins
127 | skins: (
128 | light: (
129 | bg-color: #fff,
130 | box-shadow: 0px 6px 12px 0px rgba(0, 0, 0, 0.2)
131 | ),
132 |
133 | dark: (
134 | bg-color: #555,
135 | box-shadow: 0px 6px 12px 0px rgba(0, 0, 0, 0.2)
136 | )
137 | )
138 | )
139 | );
--------------------------------------------------------------------------------
/lib/_sass/nav/_scroll-top.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--nav-scroll-top-base($layout) {
2 | .m-scroll-top {
3 | width: 40px;
4 | height: 40px;
5 | position: fixed;
6 | bottom: 40px;
7 | right: 20px;
8 | cursor: pointer;
9 | text-align: center;
10 | vertical-align: middle;
11 | display: none;
12 | padding-top: 9px;
13 | z-index: 110;
14 |
15 | @include border-radius(100%);
16 |
17 | > i {
18 | font-size: get-font-size(icon);
19 | }
20 |
21 | &:hover {
22 | text-decoration: none;
23 | }
24 |
25 | .m-scroll-top--shown & {
26 | display: block;
27 | }
28 | }
29 | }
30 |
31 | @mixin m-build-component--nav-scroll-top-skin($layout, $skin) {
32 |
33 | @include component-skin(m-scroll-top, $skin) {
34 | background: array-get($layout, bg-color);
35 | @include shadow(get-shadow($skin));
36 |
37 | > i {
38 | color: get-color($skin, icon);
39 | }
40 |
41 | &:hover {
42 | > i {
43 | color: get-brand-color();
44 | }
45 | }
46 | }
47 | }
48 |
49 | @include m-build-component--nav-scroll-top-base( array-get($m--nav, scroll-top) );
50 |
51 | @include m-build-component--nav-scroll-top-skin( array-get($m--nav, scroll-top, skins, light), light);
52 |
53 | @include m-build-component--nav-scroll-top-skin( array-get($m--nav, scroll-top, skins, dark), dark);
54 |
--------------------------------------------------------------------------------
/lib/_sass/nav/_sticky.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--nav-sticky-base($layout) {
2 | .m-nav-sticky {
3 | width: 40px;
4 | position: fixed;
5 | top: 35%;
6 | right: 0;
7 | list-style: none;
8 | padding: 5px 0;
9 | margin: 0;
10 | z-index: array-get($layout, self, z-index);
11 |
12 | @include rounded {
13 | @include border-radius(8px 0 0 8px);
14 | }
15 |
16 | .m-nav-sticky__item {
17 | margin:0;
18 | padding: 5px;
19 | text-align: center;
20 |
21 | > a {
22 | > i {
23 | font-size: get-font-size(icon, '+');
24 | }
25 |
26 | &:hover {
27 | text-decoration: none;
28 | }
29 | }
30 | }
31 | }
32 | }
33 |
34 | @mixin m-build-component--nav-sticky-skin($layout, $skin) {
35 | @include component-skin(m-nav-sticky, $skin) {
36 | background: array-get($layout, bg-color);
37 | @include shadow(array-get($layout, box-shadow));
38 |
39 | .m-nav-sticky__item {
40 | > a {
41 | > i {
42 | color: get-color($skin, icon, '+');
43 | }
44 |
45 | &:hover {
46 | > i {
47 | color: get-brand-color('-')
48 | }
49 | }
50 | }
51 | }
52 | }
53 | }
54 |
55 |
56 | @include m-build-component--nav-sticky-base( array-get($m--nav, sticky, layout) );
57 |
58 | @include m-build-component--nav-sticky-skin( array-get($m--nav, sticky, skins, light), light);
59 |
60 | @include m-build-component--nav-sticky-skin( array-get($m--nav, sticky, skins, dark), dark);
61 |
--------------------------------------------------------------------------------
/lib/_sass/page/_config.scss:
--------------------------------------------------------------------------------
1 | $m-aside-left-width: 255px;
2 | $m-aside-left-width-minimize: 80px;
3 | $m-aside-left-offcanvas-width: 255px;
--------------------------------------------------------------------------------
/lib/_sass/page/_page.scss:
--------------------------------------------------------------------------------
1 | @import "config";
2 | @import "../container/config";
3 | //@import './base/config';
4 | @import './header/_config';
5 | @import "./aside/_config";
6 | @import "./menu-header/_config";
7 | @import "./menu-aside/_config";
8 | @import "./footer/_config";
9 | //@import './base/page';
10 | //@import './base/body';
--------------------------------------------------------------------------------
/lib/_sass/page/aside/_aside-header-menu-mobile.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Aside for Horizontal Menu Mobile Mode
3 | //
4 |
5 | @mixin m-build-aside-header-menu-mobile-base($layout) {
6 |
7 | //== Base Markup
8 | @include tablet-and-mobile {
9 | .m-aside-header-menu-mobile {
10 | width: array-get($layout, self, default, width);
11 | z-index: array-get($layout, self, fixed, zindex) + 3;
12 |
13 | &.m-aside-header-menu-mobile--skin-dark {
14 | background-color: array-get($layout, self, default, bg-color, dark);
15 | }
16 |
17 | &.m-aside-header-menu-mobile--skin-light {
18 | background-color: array-get($layout, self, default, bg-color, light);
19 | }
20 | }
21 | }
22 | }
23 |
24 |
25 | //== Build Aside Mobile Base
26 | @include m-build-aside-header-menu-mobile-base( array-get($m-config-aside, aside-header-menu-mobile ) );
27 |
28 | //== Build Header Mobile Menu Offcanvas
29 | @include m-generate-component--offcanvas(m-aside-header-menu-mobile, tablet-and-mobile, array-get($m-config-aside, aside-header-menu-mobile, self, offcanvas) );
--------------------------------------------------------------------------------
/lib/_sass/page/aside/_aside-right.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Right Aside
3 | //
4 |
5 | //== Base markup
6 | .m-aside-right {
7 | width: array-get($m-config-aside, aside-right, self, width);
8 | padding: array-get($m-config-aside, aside-right, self, padding, desktop);
9 | background: array-get($m-config-aside, aside-right, self, bg-color);
10 | @include shadow(array-get($m-config-aside, aside-right, self, shadow));
11 | }
12 |
13 | // Desktop mode
14 | @include desktop {
15 | .m-header--fixed .m-aside-right {
16 | //padding-top: array-get($m-config-header, header, layout, self, default, height, desktop);
17 | }
18 | }
19 |
20 | // Tablet and Mobile mode
21 | @include tablet-and-mobile {
22 | .m-aside-right {
23 | width: auto;
24 | padding: array-get($m-config-aside, aside-right, self, padding, mobile);
25 | margin: array-get($m-config-aside, aside-right, self, margin, mobile);
26 | }
27 | }
--------------------------------------------------------------------------------
/lib/_sass/page/base/_body.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Body
3 | // Page body container
4 |
5 | //== General Mode
6 | .m-body {
7 | .m-header--static & {
8 | //height: calc(100% - #{array-get($m-config-header, header, default, height, desktop)});
9 | }
10 |
11 | .m-content {
12 | padding: array-get($m-config-base, body, content, padding, desktop, y) array-get($m-config-base, body, content, padding, desktop, x);
13 | }
14 |
15 | .m-content--skin-light & {
16 | background-color: array-get($m-config-base, body, content, bg-color, light);
17 | }
18 |
19 | .m-content--skin-light2 & {
20 | background-color: array-get($m-config-base, body, content, bg-color, light2);
21 | }
22 |
23 | //== Fix fluid flex box item hor overflow issue
24 | .m-wrapper {
25 | //overflow-x: hidden;
26 | }
27 | }
28 |
29 | body {
30 | &.m-content--skin-light {
31 | background-color: array-get($m-config-base, body, content, bg-color, light);
32 | }
33 |
34 | &.m-content--skin-light2 {
35 | background-color: array-get($m-config-base, body, content, bg-color, light2);
36 | }
37 | }
38 | .m-body {
39 | // fixed header
40 | .m-header--fixed & {
41 | padding-top: array-get($m-config-header, header, default, height, desktop) !important;
42 | }
43 | }
44 |
45 | //== Desktop Mode
46 | @include desktop {
47 | .m-body {
48 | // fixed header
49 | .m-header--fixed & {
50 | padding-top: array-get($m-config-header, header, default, height, desktop) !important;
51 | }
52 | }
53 | }
54 |
55 | // Tablet & Mobile Mode
56 | @include tablet-and-mobile {
57 | .m-body {
58 | // fixed header
59 | .m-header--fixed-mobile & {
60 | @include transition(padding-top array-get($m-config-header, header, fixed, transition));
61 | padding-top: array-get($m-config-header, header, default, height, mobile) !important;
62 | }
63 |
64 | // fixed and minimized header
65 | .m-header--fixed-mobile.m-header--minimize & {
66 | padding-top: array-get($m-config-header, header, fixed, minimize, height, mobile);
67 | }
68 |
69 | .m-content {
70 | padding: array-get($m-config-base, body, content, padding, mobile, y) array-get($m-config-base, body, content, padding, mobile, x);
71 |
72 | .m-aside-right--enabled & {
73 | padding-bottom: 0;
74 | }
75 | }
76 | }
77 | }
--------------------------------------------------------------------------------
/lib/_sass/page/base/_config.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Base Settings
3 | //
4 |
5 | $m-config-base: (
6 | //== Loader
7 | loader: (
8 | self: (
9 | bg-color: #fff,
10 | zindex: 1000
11 | ),
12 | animation: (
13 | speed: 1.2s,
14 | delay: 1s
15 | ),
16 | spinner: (
17 | bg-color: #eee,
18 | size: 30px
19 | )
20 | ),
21 |
22 | //== page
23 | body: (
24 | content: (
25 | padding: (
26 | desktop: (
27 | x: 30px,
28 | y: 30px
29 | ),
30 | mobile: (
31 | x: 20px,
32 | y: 20px
33 | )
34 | ),
35 | bg-color: (
36 | light: #ffffff,
37 | light2: #f2f3f8
38 | )
39 | )
40 | )
41 | );
--------------------------------------------------------------------------------
/lib/_sass/page/base/_page.scss:
--------------------------------------------------------------------------------
1 | body {
2 | &.m-page--boxed {
3 | background-attachment: fixed;
4 | background-repeat: no-repeat;
5 | background-size: cover;
6 | }
7 | }
8 |
9 | //== General Mode
10 | .m-page {
11 | //== Page loading
12 | .m-page--loading-enabled & {
13 | @include animation(m-animate-fade-in .5s);
14 | }
15 |
16 | .m-page--loading & {
17 | @include opacity(0);
18 | @include animation(m-animate-fade-out .5s both);
19 | }
20 | }
21 | @media (min-width: array-get($m--layout-breakpoints, xxl)) {
22 | .m-page--boxed {
23 | .m-page {
24 | width: array-get($m--container-widths, xxl);
25 | margin-left: auto;
26 | margin-right: auto;
27 | }
28 | }
29 | }
--------------------------------------------------------------------------------
/lib/_sass/page/footer/__config.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Footer Settings
3 | //
4 |
5 | $m-config-footer: (
6 | default: (
7 | self: (
8 | padding: (
9 | desktop: 7px 30px,
10 | mobile: 7px 20px
11 | ),
12 | height: 60px,
13 | bg-color: #ffffff,
14 | shadow: -2px -8px 41px -14px rgba(202,210,222,0.61)
15 | ),
16 | copyright: (
17 | color: #a9a9aa,
18 | font-size: 0.9rem,
19 | font-weight: 400
20 | )
21 | ),
22 | fixed: (
23 | zindex: 102
24 | )
25 | );
--------------------------------------------------------------------------------
/lib/_sass/page/menu-aside/_menu.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Aside Menus
3 | // Build left aside menu
4 |
5 | @include m-generate--menu-ver( $m-config-menu-aside );
--------------------------------------------------------------------------------
/lib/_sass/page/menu-header/_menu.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Horizontal Menu
3 | // Build horizontal menu for desktop mode and aside/vertical menu for mobile mode
4 |
5 | //== Horizontal menu for desktop mode
6 | @include m-generate--menu-hor(array-get($m-config-menu-header, desktop));
7 |
8 | //== Vertical menu for mobile mode
9 | @include m-generate--menu-ver(array-get($m-config-menu-header, tablet-and-mobile));
10 |
11 | @include desktop {
12 | .m-header-menu {
13 | width: auto;
14 | float:left;
15 | }
16 | }
17 |
18 | @include minimal-desktop {
19 | .m-header-menu {
20 | .m-menu__nav {
21 | > .m-menu__item {
22 | padding: 0px 7px;
23 | }
24 | }
25 | }
26 | }
27 |
28 | @include tablet-and-mobile {
29 | .m-header-menu {
30 | display: none;
31 |
32 | .m-aside-header-menu-mobile--offcanvas-on & {
33 | display: block;
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/lib/_sass/popover/_popover.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--bootstrap-popover-base() {
2 | .m-popover.popover {
3 | padding:0;
4 | @include border-radius(array-get($m--border-radius, general));
5 |
6 | .arrow {
7 | &:before {
8 | border: 0;
9 | }
10 | }
11 |
12 | .popover-header {
13 | padding: 12px 15px;
14 | font-weight: get-font-weight(bold);
15 | border: 0;
16 | @include border-top-left-radius(array-get($m--border-radius, general));
17 | @include border-top-right-radius(array-get($m--border-radius, general));
18 | }
19 |
20 | .popover-body {
21 | padding: 12px 15px;
22 | font-size: get-font-size(regular);
23 | font-weight: get-font-weight(normal);
24 | }
25 |
26 | &.show {
27 | @include opacity(1);
28 | }
29 | }
30 | }
31 |
32 | @mixin m-build-component--bootstrap-popover-skin($skin) {
33 | @include component-skin(m-popover, $skin) {
34 | &.popover {
35 | border: 0;
36 | color: get-color($skin, regular, '-');
37 | background: get-color($skin, box, '---');
38 | @include shadow(get-shadow($skin, '+'));
39 |
40 | &:before {
41 | display: none;
42 | }
43 |
44 | &.bs-popover-top {
45 | .arrow::after {
46 | border-top-color: get-color($skin, box, '-');
47 | }
48 | }
49 |
50 | &.bs-popover-right {
51 | .arrow::after {
52 | border-right-color: get-color($skin, box, '-');
53 | }
54 | }
55 |
56 | &.bs-popover-bottom {
57 | .arrow::after {
58 | border-bottom-color: get-color($skin, box, '-');
59 | }
60 | }
61 |
62 | &.bs-popover-left {
63 | .arrow::after {
64 | border-left-color: get-color($skin, box, '-');
65 | }
66 | }
67 |
68 | .popover-header {
69 | color: get-color($skin, regular);
70 | background: get-color($skin, box);
71 | }
72 |
73 | .popover-body {
74 | color: get-color($skin, regular, '-');
75 | }
76 | }
77 | }
78 | }
79 |
80 |
81 | @include m-build-component--bootstrap-popover-base();
82 |
83 | @include m-build-component--bootstrap-popover-skin(light);
84 |
85 | @include m-build-component--bootstrap-popover-skin(dark);
86 |
--------------------------------------------------------------------------------
/lib/_sass/portlets/_config.scss:
--------------------------------------------------------------------------------
1 | $m--portlet: (
2 | layout: (
3 | self: (
4 | space: 2.2rem
5 | )
6 | ),
7 | skins: (
8 | light: (
9 | tools: (
10 | nav: (
11 | icon: (
12 | color: (
13 | default: darken(get-state-color(metal), 7%),
14 | hover: get-brand-color()
15 | )
16 | )
17 | )
18 | )
19 | ),
20 | dark: (
21 | tools: (
22 | nav: (
23 | icon: (
24 | color: (
25 | default: rgba(#fff, 0.6),
26 | hover: #fff
27 | )
28 | )
29 | )
30 | )
31 | )
32 | )
33 | );
--------------------------------------------------------------------------------
/lib/_sass/progress/_progress.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--progress-base() {
2 | .progress {
3 | .progress-bar {
4 | @include transition(all 0.5s ease);
5 | }
6 |
7 | &.m-progress--sm {
8 | height: 6px;
9 |
10 | .progress-bar {
11 |
12 | @include border-radius(3px);
13 | }
14 | }
15 |
16 | &.m-progress--lg {
17 | height: 20px;
18 |
19 | .progress-bar {
20 | @include border-radius(4px);
21 | }
22 | }
23 | }
24 | }
25 |
26 | @include m-build-component--progress-base();
--------------------------------------------------------------------------------
/lib/_sass/scroll/_scroll.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--scrollable-base() {
2 | .m-scrollable {
3 | .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar {
4 | @include rounded {
5 | @include border-radius(array-get($m--border-radius, scrollbar));
6 | }
7 | }
8 |
9 | .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical,
10 | .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical {
11 | right: -17px;
12 | margin: 5px 0;
13 | }
14 |
15 | .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
16 | .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
17 | .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
18 | .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal {
19 | margin: 10px 0 0 0;
20 | }
21 | }
22 |
23 | .mCustomScrollbar[data-scrollbar-shown=true] {
24 | &.mCS-autoHide {
25 | > .mCustomScrollBox ~ .mCSB_scrollTools {
26 | @include opacity(0.6);
27 | }
28 | }
29 | }
30 | }
31 |
32 | @mixin m-build-component--scrollable-skin($skin) {
33 | @include component-skin(m-scrollable, $skin) {
34 | //== scrollbar
35 | .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar {
36 | background: get-color($skin, panel, '+');
37 | }
38 |
39 | // on drag
40 | .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
41 | background: get-color($skin, panel, '+++');
42 | }
43 | }
44 | }
45 |
46 | @mixin m-component--scrollable-skin($base, $onDrag) {
47 | //== scrollbar
48 | .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar {
49 | background: $base;
50 | }
51 |
52 | // on drag
53 | .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
54 | background: $onDrag;
55 | }
56 | }
57 |
58 |
59 | @include m-build-component--scrollable-base();
60 |
61 | @include m-build-component--scrollable-skin(light);
62 |
63 | @include m-build-component--scrollable-skin(dark);
--------------------------------------------------------------------------------
/lib/_sass/spinners/_config.scss:
--------------------------------------------------------------------------------
1 | $m--spinners: (
2 | // loader
3 | loader: (
4 | default: (
5 | size: 1.4rem,
6 | width: 2px
7 | ),
8 | lg: (
9 | size: 2rem,
10 | width: 3px
11 | ),
12 | sm: (
13 | size: 1rem,
14 | width: 1px
15 | )
16 | ),
17 |
18 | // spinner
19 | spinner: (
20 | default: (
21 | size: 1.5rem
22 | ),
23 | lg: (
24 | size: 2rem
25 | ),
26 | sm: (
27 | size: 1.2rem
28 | )
29 | )
30 | );
--------------------------------------------------------------------------------
/lib/_sass/spinners/_spinner.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--spinner-base($config) {
2 | // Spinner markup
3 | .m-spinner {
4 | display: inline-block;
5 | width: array-get($config, default, size);
6 | height: array-get($config, default, size);
7 | margin: 0 auto;
8 | border-radius: 100%;
9 | @include opacity(0);
10 | @include animation(m-spinner-scaleout 0.9s infinite ease-in-out);
11 |
12 | &.m-spinner--lg {
13 | width: array-get($config, lg, size);
14 | height: array-get($config, lg, size);
15 | }
16 |
17 | &.m-spinner--sm {
18 | width: array-get($config, sm, size);
19 | height: array-get($config, sm, size);
20 | }
21 |
22 | .btn & {
23 | position: relative;
24 | line-height: 0;
25 | }
26 | }
27 |
28 | // Spinner animation
29 | @include keyframes(m-spinner-scaleout) {
30 | 0% {
31 | @include opacity(0.3);
32 | @include transform(scale(0));
33 | }
34 | 100% {
35 | @include opacity(1);
36 | @include transform(scale(1.0));
37 | }
38 | }
39 | }
40 |
41 | @mixin m-build-component--spinner-skin($skin) {
42 | @include component-skin(m-spinner, $skin) {
43 | background-color: get-color($skin, panel, '+');
44 | }
45 | }
46 |
47 | @mixin m-build-component--spinner-states() {
48 | @each $name, $color in $m--state-colors {
49 | .m-spinner.m-spinner--#{$name} {
50 | background-color: array-get($color, base);
51 | }
52 | }
53 | }
54 |
55 | @mixin m-set-component--spinner-size($size) {
56 | @include attr(width, $size);
57 | @include attr(height, $size);
58 | }
59 |
60 | @mixin m-set-component--spinner-color($color) {
61 | background-color: $color;
62 | }
63 |
64 | //== Build
65 |
66 | @include m-build-component--spinner-base( array-get($m--spinners, spinner) );
67 |
68 | @include m-build-component--spinner-skin( light );
69 |
70 | @include m-build-component--spinner-skin( dark );
71 |
72 | @include m-build-component--spinner-states();
--------------------------------------------------------------------------------
/lib/_sass/table/_table.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Table Component
3 | //
4 |
5 | //== Component Base
6 | @mixin m-build-component--table-base() {
7 | .table {
8 | th {
9 | font-weight: get-font-weight(bolder);
10 | }
11 |
12 | td {
13 | font-weight: get-font-weight(regular);
14 | }
15 |
16 | &.table-striped {
17 | thead th {
18 | border: 0;
19 | }
20 |
21 | tbody {
22 | th, td {
23 | border1: 0;
24 | }
25 | }
26 | }
27 | }
28 |
29 | .m-table {
30 | &.m-table--head-no-border {
31 | thead th {
32 | border-top: 0;
33 | }
34 | }
35 | }
36 | }
37 |
38 | //== Component Skin
39 | @mixin m-build-component--table-skin($skin) {
40 | .m-table {
41 | // state colors
42 | @each $name, $color in $m--state-colors {
43 | &.m-table--head-bg-#{$name} {
44 | thead th {
45 | background: array-get($color, base);
46 | color: array-get($color, inverse);
47 | border-bottom: 0;
48 | border-top: 0;
49 | }
50 | }
51 |
52 | &.m-table--head-separator-#{$name} {
53 | thead th {
54 | border-top: 0;
55 | border-bottom: 1px solid array-get($color, base);
56 | }
57 | }
58 |
59 | tr.m-table__row--#{$name} {
60 | th,td {
61 | background: array-get($color, base);
62 | color: array-get($color, inverse);
63 | border-bottom: 0;
64 | border-top: 0;
65 | }
66 | }
67 |
68 | &.m-table--border-#{$name} {
69 | &,
70 | th, td {
71 | border-color: array-get($color, base);
72 | }
73 | }
74 | }
75 | }
76 | }
77 |
78 | //== Build Component Base
79 | @include m-build-component--table-base();
80 |
81 | //== Build Component - Light Skin
82 | @include m-build-component--table-skin(light);
--------------------------------------------------------------------------------
/lib/_sass/tooltip/_tooltip.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--bootstrap-tooltip-base() {
2 | .m-tooltip.tooltip {
3 | .tooltip-inner {
4 | padding: 7px 20px 7px 20px;
5 | font-size: get-font-size(regular);
6 |
7 | @include rounded {
8 | @include border-radius(30px);
9 | }
10 | }
11 |
12 | &.m-tooltop--auto-width {
13 | .tooltip-inner {
14 | white-space:nowrap;
15 | max-width:none;
16 | }
17 | }
18 |
19 | &.show {
20 | @include opacity(1);
21 | }
22 |
23 | &.bs-tooltip-left .arrow::before,
24 | &.bs-tooltip-auto[x-placement^="left"] .arrow::before {
25 | left: -1px;
26 | }
27 |
28 | &.bs-tooltip-right .arrow::before,
29 | &.bs-tooltip-auto[x-placement^="right"] .arrow::before {
30 | right: -1px;
31 | }
32 | }
33 | }
34 |
35 | @mixin m-build-component--bootstrap-tooltip-skin($skin) {
36 | @include component-skin(m-tooltip, $skin) {
37 | .tooltip-inner {
38 | color: get-color($skin, regular, '-');
39 | background: get-color($skin, box, '-');
40 | @include shadow(get-shadow($skin, '-'));
41 | }
42 |
43 | &.bs-tooltip-top {
44 | .arrow::before {
45 | border-top-color: get-color($skin, box, '-')
46 | }
47 | }
48 |
49 | &.bs-tooltip-right {
50 | .arrow::before {
51 | border-right-color: get-color($skin, box, '-')
52 | }
53 | }
54 |
55 | &.bs-tooltip-bottom {
56 | .arrow::before {
57 | border-bottom-color: get-color($skin, box, '-')
58 | }
59 | }
60 |
61 | &.bs-tooltip-left {
62 | .arrow::before {
63 | border-left-color: get-color($skin, box, '-')
64 | }
65 | }
66 | }
67 | }
68 |
69 |
70 | @include m-build-component--bootstrap-tooltip-base();
71 |
72 | @include m-build-component--bootstrap-tooltip-skin(light);
73 |
74 | @include m-build-component--bootstrap-tooltip-skin(dark);
75 |
--------------------------------------------------------------------------------
/lib/_sass/typography/_badge.scss:
--------------------------------------------------------------------------------
1 | //
2 | //** Badge Component
3 | //
4 |
5 | .m-badge {
6 | background: #eaeaea;
7 | color: #444;
8 | font-size: 0.8rem;
9 | line-height: 20px;
10 | min-height: 20px;
11 | min-width: 20px;
12 | vertical-align: middle;
13 | text-align: center;
14 | display: inline-block;
15 | padding: 0px 3px;
16 | @include border-radius(0.75rem);
17 |
18 |
19 | &.m-badge--square {
20 | @include border-radius(0);
21 | }
22 |
23 | &.m-badge--wide {
24 | letter-spacing: 0.6px;
25 | padding: 1px 10px;
26 |
27 | @include border-radius(0);
28 |
29 | @include rounded {
30 | @include border-radius(0.75rem);
31 | }
32 | }
33 |
34 | &.m-badge--rounded {
35 | @include border-radius(0.25rem);
36 | }
37 |
38 | &.m-badge--dot {
39 | padding: 0;
40 | line-height: 6px;
41 | min-height: 6px;
42 | min-width: 6px;
43 | height: 6px;
44 | width: 6px;
45 | @include border-radius(100%);
46 | }
47 |
48 | &.m-badge--dot-small {
49 | padding: 0;
50 | line-height: 4px;
51 | min-height: 4px;
52 | min-width: 4px;
53 | height: 4px;
54 | width: 4px;
55 | @include border-radius(100%);
56 | }
57 |
58 | &.m-badge--bordered {
59 | border: 1px solid #efefef;
60 | min-height: 22px;
61 | min-width: 22px;
62 | @include border-radius(100%);
63 | }
64 | }
65 |
66 | //== Brand colors
67 | @each $name, $color in $m--state-colors {
68 |
69 | .m-badge.m-badge--#{$name} {
70 | background-color: array-get($color, base);
71 | color: array-get($color, inverse);
72 | }
73 |
74 | .m-badge.m-badge-bordered--#{$name} {
75 | border-color: array-get($color, base);
76 | }
77 | }
78 |
79 |
--------------------------------------------------------------------------------
/lib/_sass/typography/_code.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--typography-code-base() {
2 | code {
3 | padding: 0.2rem 0.4rem;
4 | }
5 | }
6 |
7 |
8 | @mixin m-build-component--typography-code-skin($skin) {
9 | code {
10 | background: get-color($skin, panel);
11 | }
12 | }
13 |
14 | @include m-build-component--typography-code-base();
15 |
16 | @include m-build-component--typography-code-skin(light);
--------------------------------------------------------------------------------
/lib/_sass/typography/_link.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--typography-link-base() {
2 | .m-link {
3 | text-decoration: none;
4 | position: relative;
5 | display: inline-block;
6 |
7 | &:after {
8 | display: block;
9 | content: '';
10 | position: absolute;
11 | bottom: 0;
12 | top: 1rem;
13 | left: 0;
14 | width: 0%;
15 | @include transition(width 0.3s ease);
16 | }
17 |
18 | &:hover {
19 | text-decoration: none !important;
20 |
21 | &:after {
22 | width: 100%;
23 | }
24 | }
25 | }
26 | }
27 |
28 | @mixin m-build-component--typography-link-state() {
29 | @each $name, $color in $m--state-colors {
30 | .m-link.m-link--#{$name} {
31 | @include m-set-component--typography-link-color(array-get($color, base), darken(array-get($color, base), 10%));
32 | }
33 | }
34 | }
35 |
36 | @mixin m-set-component--typography-link-color($default, $hover) {
37 | color: $default;
38 |
39 | &:hover {
40 | color: $hover;
41 |
42 | &:after {
43 | border-bottom: 1px solid $hover;
44 | @include opacity(0.3);
45 | }
46 | }
47 | }
48 |
49 | @mixin m-build-component--typography-link-skin($skin) {
50 | @include component-skin(m-link, $skin) {
51 | @include m-set-component--typography-link-color(array-get($m--link-font, default, color, $skin), array-get($m--link-font, hover, color, $skin));
52 | }
53 | }
54 |
55 | @include m-build-component--typography-link-base();
56 |
57 | @include m-build-component--typography-link-skin(light);
58 |
59 | @include m-build-component--typography-link-skin(dark);
60 |
61 | @include m-build-component--typography-link-state();
--------------------------------------------------------------------------------
/lib/_sass/typography/_section.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--typography-section-base() {
2 | .m-section {
3 | margin: 0 0 40px 0;
4 |
5 | .m-section__heading {
6 | display: block;
7 | margin: 0 0 20px 0;
8 | padding: 0;
9 | font-family: get-heading-font-family();
10 | font-weight: get-font-weight(bolder);
11 | }
12 |
13 | h4.m-section__heading {
14 | font-size: get-font-size(regular, '+');
15 | }
16 |
17 | h3.m-section__heading {
18 | font-size: get-font-size(regular, '++');
19 | }
20 |
21 | h2.m-section__heading {
22 | font-size: get-font-size(regular, '+++');
23 | }
24 |
25 | h1.m-section__heading {
26 | font-size: get-font-size(regular, '++++');
27 | }
28 |
29 | .m-section__sub {
30 | display: block;
31 | margin: 5px 0 10px 0;
32 | font-size: get-font-size(regular);
33 | }
34 |
35 | .m-section__content {
36 | margin: 0 0 10px 0;
37 | font-size: get-font-size(regular);
38 | }
39 |
40 | .m-section__seperator {
41 | margin: 5px 0;
42 | height: 1px;
43 | overflow: hidden;
44 | display: block;
45 | }
46 |
47 | &.m-section--last {
48 | margin-bottom: 0;
49 |
50 | .m-section__content {
51 | margin-bottom: 0;
52 | }
53 | }
54 | }
55 | }
56 |
57 | @mixin m-build-component--typography-section-skin($skin) {
58 | @include component-skin(m-section, $skin) {
59 | .m-section__heading {
60 | color: get-color($skin, regular, '+');
61 | }
62 |
63 | .m-section__sub {
64 | color: get-color($skin, regular, '-');
65 | }
66 |
67 | .m-section__content {
68 | color: get-color($skin, regular);
69 | }
70 | }
71 | }
72 |
73 | @include m-build-component--typography-section-base();
74 |
75 | @include m-build-component--typography-section-skin(light);
76 |
77 | @include m-build-component--typography-section-skin(dark);
--------------------------------------------------------------------------------
/lib/_sass/typography/_separator.scss:
--------------------------------------------------------------------------------
1 | @mixin m-build-component--typography-separator-base() {
2 | .m-separator {
3 | height: 0;
4 | margin: 20px 0;
5 |
6 | &.m-separator--lg {
7 | margin: 40px 0;
8 | }
9 |
10 | &.m-separator--xl {
11 | margin: 60px 0;
12 | }
13 |
14 | &.m-separator--sm {
15 | margin: 20px 0;
16 | }
17 |
18 | &.m-separator--fit {
19 | margin-left: -(array-get($m--portlet, layout, self, space));
20 | margin-right: -(array-get($m--portlet, layout, self, space));
21 | }
22 | }
23 | }
24 |
25 | @mixin m-build-component--typography-separator-state() {
26 | @each $name, $color in $m--state-colors {
27 | .m-separator.m-separator--#{$name} {
28 | border-bottom: 1px solid array-get($color, base);
29 |
30 | &.m-separator--dashed {
31 | border-bottom: 1px dashed array-get($color, base);
32 | }
33 | }
34 | }
35 | }
36 |
37 | @mixin m-build-component--typography-separator-skin($skin) {
38 | @include component-skin(m-separator, $skin) {
39 | border-bottom: 1px solid get-color($skin, panel);
40 |
41 | &.m-separator--dashed {
42 | border-bottom: 1px dashed get-color($skin, panel);
43 | }
44 | }
45 | }
46 |
47 | @include m-build-component--typography-separator-base();
48 |
49 | @include m-build-component--typography-separator-skin(light);
50 |
51 | @include m-build-component--typography-separator-state();
--------------------------------------------------------------------------------
/lib/_scripts/_jquery.js:
--------------------------------------------------------------------------------
1 | import $ from 'jquery';
2 | window.$ = window.jQuery = $;
3 | export default $;
--------------------------------------------------------------------------------
/lib/_scripts/_public.js:
--------------------------------------------------------------------------------
1 | exports._publicColor = ['brand', 'metal', 'light', 'accent', 'focus', 'primary', 'success', 'info', 'warning', 'danger', 'secondary']
2 | exports._totalColor = ['default', 'brand', 'metal', 'light', 'accent', 'focus', 'primary', 'success', 'info', 'warning', 'danger', 'secondary', 'outline-brand', 'outline-metal', 'outline-light', 'outline-accent', 'outline-focus', 'outline-primary', 'outline-success', 'outline-info', 'outline-warning', 'outline-danger', 'link']
3 |
--------------------------------------------------------------------------------
/lib/_scripts/_utils.js:
--------------------------------------------------------------------------------
1 | export const Copy = (obj, exclude = []) => {
2 | let c = obj instanceof Array ? [] : {};
3 | for (let i in obj) {
4 | if (!exclude.includes(i) && obj.hasOwnProperty(i)) {
5 | let prop = obj[i];
6 | if (typeof prop === 'object') {
7 | if (prop instanceof Array) {
8 | c[i] = [];
9 | for (let j = 0; j < prop.length; j++) {
10 | if (typeof prop[j] !== 'object') {
11 | c[i].push(prop[j]);
12 | } else {
13 | c[i].push(Copy(prop[j]));
14 | }
15 | }
16 | } else {
17 | if ((prop && (prop.$$typeof && prop.$$typeof.toString() === 'Symbol(react.element)')) || !prop) {
18 | continue;
19 | } else {
20 | c[i] = Copy(prop);
21 | }
22 | }
23 | } else {
24 | c[i] = prop;
25 | }
26 | }
27 | }
28 | return c;
29 | };
30 |
31 | export const uuid = (len, radix) => {
32 | let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
33 | let uuid = [], i;
34 | radix = radix || chars.length;
35 | if (len) {
36 | // Compact form
37 | for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
38 | } else {
39 | // rfc4122, version 4 form
40 | let r;
41 |
42 | // rfc4122 requires these characters
43 | uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
44 | uuid[14] = '4';
45 |
46 | // Fill in random data. At i==19 set the high bits of clock sequence as
47 | // per rfc4122, sec. 4.1.5
48 | for (i = 0; i < 36; i++) {
49 | if (!uuid[i]) {
50 | r = 0 | Math.random() * 16;
51 | uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
52 | }
53 | }
54 | }
55 | return uuid.join('');
56 | }
--------------------------------------------------------------------------------
/lib/index.scss:
--------------------------------------------------------------------------------
1 | @import './_sass/custom';
2 | @import "./_sass/config";
3 | @import "./_sass/variables";
4 |
5 | @import "./_sass/mixins";
6 | @import "./_sass/helpers";
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/App.css:
--------------------------------------------------------------------------------
1 | /*Custom Stylesheets*/
--------------------------------------------------------------------------------
/src/assets/logo_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/src/assets/logo_blue.png
--------------------------------------------------------------------------------
/src/components/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/src/components/.gitkeep
--------------------------------------------------------------------------------
/src/components/_base/BlockUI.jsx:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * @Component: BlockUI
4 | * @User: Longjun.Qu
5 | * @Date: 2018-06-16
6 | * @Time: 16:25
7 | *
8 | */
9 |
10 | import React, {Component, Fragment} from 'react';
11 | import PropTypes from 'prop-types';
12 | import Div from 'components/_element/Div';
13 | import {_delivery} from 'plugins/utils/_props';
14 |
15 |
16 | import 'block-ui';
17 |
18 | import {mApp} from 'plugins/_framework/_base/_app';
19 |
20 | class BlockUI extends Component {
21 | constructor(props) {
22 | super(props);
23 | this.state = {}
24 | }
25 |
26 | static defaultProps = {
27 | block: true
28 | };
29 | static propTypes = {
30 | block: PropTypes.bool,
31 | overlayColor: PropTypes.string
32 | };
33 |
34 | componentDidMount() {
35 | const _props = this.props;
36 | // const el = this.refs.block.refs.div;
37 | const {block, overlayColor, type, message, el = this.refs.block.refs.div} = _props;
38 | if (block) {
39 | const _config = {};
40 | overlayColor && Object.assign(_config, {
41 | state: overlayColor
42 | });
43 | type && Object.assign(_config, {type});
44 | message && Object.assign(_config, {message});
45 | mApp.block(el, _config);
46 | }
47 |
48 | }
49 |
50 | render() {
51 | const _props = this.props;
52 | const {children} = _props;
53 | return (
54 |
55 | {children}
56 |
57 | );
58 | }
59 | }
60 |
61 | export default BlockUI;
--------------------------------------------------------------------------------
/src/components/_base/Grid.jsx:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * @Component: Grid
4 | * @User: Longjun.Qu
5 | * @Date: 2018-06-15
6 | * @Time: 17:20
7 | *
8 | */
9 |
10 | import React, {Component, Fragment} from 'react';
11 | import PropTypes from 'prop-types';
12 | import Div from 'components/_element/Div';
13 | import {isExist} from 'plugins/utils/_is';
14 | import {_delivery} from 'plugins/utils/_props';
15 |
16 | class Grid extends Component {
17 | constructor(props) {
18 | super(props);
19 | this.state = {}
20 | }
21 |
22 | static defaultProps = {
23 | direction: 'ver',
24 | root: true
25 | };
26 | static propTypes = {
27 | mode: PropTypes.oneOf(['desktop', 'desktop-and-tablet', 'tablet', 'tablet-and-mobile', 'mobile']),
28 | root: PropTypes.bool,
29 | direction: PropTypes.oneOf(['ver', 'hor']),
30 | justify: PropTypes.oneOf(['flex-start', 'flex-end', 'center', 'space-between', 'space-around']),
31 | warp: PropTypes.oneOf(['nowrap', 'wrap', 'wrap-reverse']),
32 | alignItems: PropTypes.oneOf(['flex-start', 'flex-end', 'center', 'baseline', 'stretch']),
33 | alignContent: PropTypes.oneOf(['flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'stretch'])
34 | };
35 |
36 | render() {
37 | const _props = this.props;
38 | const {mode, direction, root, justify, warp, alignItems, alignContent, children} = _props;
39 | let _sysClass = ['m-grid'];
40 | isExist(mode) && _sysClass.push('m-grid--' + mode);
41 | isExist(direction) && _sysClass.push('m-grid--' + direction + (isExist(mode) ? ('-' + mode) : ''));
42 | isExist(root) && _sysClass.push('m-grid--root');
43 | isExist(justify) && _sysClass.push('m-grid--' + justify);
44 | isExist(warp) && _sysClass.push('m-grid--' + warp);
45 | isExist(alignItems) && _sysClass.push('m-grid--align-item-' + alignItems);
46 | isExist(alignContent) && _sysClass.push('m-grid--align-content-' + alignContent);
47 | return (
48 |
49 |
50 | {children}
51 |
52 |
53 | );
54 | }
55 | }
56 |
57 | export default Grid;
--------------------------------------------------------------------------------
/src/components/_base/GridItem.jsx:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * @Component: GridItem
4 | * @User: Longjun.Qu
5 | * @Date: 2018-06-15
6 | * @Time: 17:20
7 | *
8 | */
9 |
10 | import React, {Component, Fragment} from 'react';
11 | import PropTypes from 'prop-types';
12 | import Div from 'components/_element/Div';
13 | import {isExist, isNotExist} from 'plugins/utils/_is';
14 | import {_delivery} from 'plugins/utils/_props';
15 |
16 | class GridItem extends Component {
17 | constructor(props) {
18 | super(props);
19 | this.state = {
20 | fluid: true
21 | }
22 | }
23 |
24 | static defaultProps = {};
25 | static propTypes = {
26 | order: PropTypes.oneOf([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
27 | align: PropTypes.oneOf(['auto', 'flex-start', 'flex-end', 'center', 'baseline', 'stretch']),
28 | fluid: PropTypes.bool
29 | };
30 |
31 | render() {
32 | const _props = this.props;
33 | const {order, flex, align, fluid, children} = _props;
34 | let _sysClass = ['m-grid__item'];
35 | let _sysStyle = {};
36 | isExist(fluid) && _sysClass.push('m-grid__item--fluid');
37 | isExist(order) && _sysClass.push('m-grid__item--order-' + order);
38 | isExist(align) && _sysClass.push('m-grid__item--' + align);
39 | isNotExist(fluid) && isExist(flex) && (_sysStyle = Object.assign(_sysClass, {flex}));
40 | return (
41 |
42 |
43 | {children}
44 |
45 |
46 | );
47 | }
48 | }
49 |
50 | export default GridItem;
--------------------------------------------------------------------------------
/src/components/_base/Loader.jsx:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * @Component: Loader
4 | * @User: Longjun.Qu
5 | * @Date: 2018-06-16
6 | * @Time: 20:22
7 | *
8 | */
9 |
10 | import React, {Component, Fragment} from 'react';
11 | import PropTypes from 'prop-types';
12 | import {_delivery} from 'plugins/utils/_props';
13 |
14 | import Div from 'components/_element/Div';
15 |
16 | import {isNotExist} from 'plugins/utils/_is';
17 | class Loader extends Component {
18 | constructor(props) {
19 | super(props);
20 | this.state = {}
21 | }
22 |
23 | static defaultProps = {
24 | width: '30px'
25 | };
26 | static propTypes = {
27 | width: PropTypes.string
28 | };
29 |
30 | componentWillMount() {
31 | }
32 |
33 | componentDidMount() {
34 | }
35 |
36 | componentWillReceiveProps(nextProps) {
37 | }
38 |
39 | shouldComponentUpdate(nextProps, nextState) {
40 | }
41 |
42 | componentWillUpdate(nextProps, nextState) {
43 | }
44 |
45 | componentDidUpdate(prevProps, prevState) {
46 | }
47 |
48 | render() {
49 | const _props = this.props;
50 | const {color, size, align, width, children} = _props;
51 | let _sysClass = ['m-loader'];
52 | !isNotExist(color) && _sysClass.push('m-loader--' + color);
53 | !isNotExist(size) && ['sm', 'lg'].includes(size) && _sysClass.push('m-loader--' + size);
54 | !isNotExist(align) && ['center', 'left', 'right'].includes(align) && _sysClass.push('m-loader--' + align);
55 | return (
56 |
57 | {children}
60 |
61 | );
62 | }
63 | }
64 | export default Loader;
--------------------------------------------------------------------------------
/src/components/_button/ButtonIcon.jsx:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * @Component: ButtonIcon
4 | * @User: Longjun.Qu
5 | * @Date: 2018-06-17
6 | * @Time: 20:45
7 | *
8 | */
9 |
10 | import React, {Component, Fragment} from 'react';
11 | import {_delivery} from 'plugins/utils/_props';
12 | import Button from 'components/_button/Button';
13 | class ButtonIcon extends Component {
14 | constructor(props) {
15 | super(props);
16 | this.state = {}
17 | }
18 |
19 | render() {
20 | const _props = this.props;
21 | let _sysClass = ['m-btn--icon'];
22 |
23 | return (
24 |
25 |
26 |
27 | );
28 | }
29 | }
30 | export default ButtonIcon;
--------------------------------------------------------------------------------
/src/components/_framework/Body.jsx:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * @Component: Body
4 | * @User: Longjun.Qu
5 | * @Date: 2018-06-15
6 | * @Time: 10:50
7 | *
8 | */
9 |
10 | import React, {Component, Fragment} from 'react';
11 |
12 | import {_delivery} from 'plugins/utils/_props';
13 | import GridItem from "../_base/GridItem";
14 |
15 | class Wrapper extends Component {
16 | constructor(props) {
17 | super(props);
18 | this.state = {}
19 | }
20 |
21 | static defaultProps = {};
22 | static propTypes = {};
23 |
24 | render() {
25 | const _props = this.props;
26 | const {children} = _props;
27 | return (
28 |
29 |
30 | {children}
31 |
32 |
33 | );
34 | }
35 | }
36 |
37 | export default Wrapper;
--------------------------------------------------------------------------------
/src/components/_framework/Page.jsx:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * @Component: Page
4 | * @User: Longjun.Qu
5 | * @Date: 2018-06-15
6 | * @Time: 10:50
7 | *
8 | */
9 |
10 | import React, {Component, Fragment} from 'react';
11 |
12 | import {_delivery} from 'plugins/utils/_props';
13 | import Grid from "../_base/Grid";
14 |
15 | class Page extends Component {
16 | constructor(props) {
17 | super(props);
18 | this.state = {}
19 | }
20 |
21 | static defaultProps = {};
22 | static propTypes = {};
23 |
24 | render() {
25 | const _props = this.props;
26 | const {children} = _props;
27 | return (
28 |
29 |
33 | {children}
34 |
35 |
36 | );
37 | }
38 | }
39 |
40 | export default Page;
--------------------------------------------------------------------------------
/src/components/_framework/Wrapper.jsx:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * @Component: Wrapper
4 | * @User: Longjun.Qu
5 | * @Date: 2018-06-15
6 | * @Time: 10:50
7 | *
8 | */
9 |
10 | import React, {Component, Fragment} from 'react';
11 | import {_delivery} from 'plugins/utils/_props';
12 | import GridItem from "../_base/GridItem";
13 |
14 | class Wrapper extends Component {
15 | constructor(props) {
16 | super(props);
17 | this.state = {}
18 | }
19 |
20 | static defaultProps = {};
21 | static propTypes = {};
22 |
23 | render() {
24 | const _props = this.props;
25 | const {children} = _props;
26 | return (
27 |
28 |
29 | {children}
30 |
31 |
32 | );
33 | }
34 | }
35 |
36 | export default Wrapper;
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom'
3 | import DemoConfig from '../demo/_routes/index'; //Demo路由
4 | import App from './App';
5 |
6 | ReactDOM.render(
7 | , document.getElementById('root')
8 | );
9 |
--------------------------------------------------------------------------------
/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qulongjun/Omega-UI/17186276de3263ade5e8b58da737b2acccfaa7d8/static/.gitkeep
--------------------------------------------------------------------------------