├── .gitattributes
├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── custom.md
│ └── feature_request.md
├── .gitignore
├── CODE_OF_CONDUCT.md
├── ChangeLog.md
├── LICENSE
├── README.md
├── _config.yml
├── composer.json
└── src
├── FormWizard.php
├── assetbundles
├── bs3
│ ├── FormWizardAsset.php
│ ├── ThemeArrowsAsset.php
│ ├── ThemeBase.php
│ ├── ThemeCirclesAsset.php
│ ├── ThemeDotsAsset.php
│ ├── ThemeMaterialAsset.php
│ ├── ThemeMaterialVerticleAsset.php
│ └── ThemeTagsAsset.php
└── bs4
│ ├── FormWizardAsset.php
│ ├── ThemeArrowsAsset.php
│ ├── ThemeBase.php
│ ├── ThemeCirclesAsset.php
│ ├── ThemeDotsAsset.php
│ ├── ThemeMaterialAsset.php
│ ├── ThemeMaterialVerticleAsset.php
│ └── ThemeTagsAsset.php
├── assets
├── css
│ ├── animate.css
│ ├── animate.min.css
│ ├── fonts
│ │ ├── formwizard.eot
│ │ ├── formwizard.svg
│ │ ├── formwizard.ttf
│ │ └── formwizard.woff
│ ├── icons-theme.css
│ ├── icons-theme.min.css
│ ├── ie7
│ │ ├── ie7.css
│ │ └── ie7.js
│ ├── shake.css
│ ├── shake.min.css
│ ├── smart_wizard.css
│ ├── smart_wizard.min.css
│ └── theme
│ │ ├── smart_wizard_theme_arrows.css
│ │ ├── smart_wizard_theme_arrows.min.css
│ │ ├── smart_wizard_theme_circles.css
│ │ ├── smart_wizard_theme_circles.min.css
│ │ ├── smart_wizard_theme_dots.css
│ │ ├── smart_wizard_theme_dots.min.css
│ │ ├── smart_wizard_theme_material-v.css
│ │ ├── smart_wizard_theme_material-v.min.css
│ │ ├── smart_wizard_theme_material.css
│ │ ├── smart_wizard_theme_material.min.css
│ │ ├── smart_wizard_theme_tags.css
│ │ ├── smart_wizard_theme_tags.min.css
│ │ └── waves.css
└── js
│ ├── formwizard.js
│ ├── formwizard.min.js
│ ├── jquery.smartWizard.js
│ ├── jquery.smartWizard.min.js
│ └── theme
│ ├── material.js
│ └── waves.js
├── step
├── Generator.php
├── Normal.php
├── Response.php
├── Sorter.php
└── Tabular.php
└── traits
├── StepTrait.php
└── WizardTrait.php
/.gitattributes:
--------------------------------------------------------------------------------
1 | src/assets/css/* linguist-vendored
2 | src/assets/js/* linguist-vendored
3 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/custom.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Custom issue template
3 | about: Describe this issue template's purpose here.
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | package-lock.json
2 | /node_modules
3 | _config.yml
4 | .vscode
5 | *.sh
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and expression,
9 | level of experience, education, socio-economic status, nationality, personal
10 | appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at buttflattery@hotmail.com. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 | For answers to common questions about this code of conduct, see
76 | https://www.contributor-covenant.org/faq
77 |
--------------------------------------------------------------------------------
/ChangeLog.md:
--------------------------------------------------------------------------------
1 |
Change Log
2 | All notable changes to this project will be documented in this file.
3 |
4 | 1.6.4 - 19-01-2020
5 |
6 | Added
7 |
8 | - [FEATURE:e50321d](https://github.com/buttflattery/yii2-formwizard/commit/e50321d900e9c03754c1cabfb09e075118be2a36) Added editMode feature.
9 |
10 | Enhancements/Fixes
11 | - [ENH:096ef77](https://github.com/buttflattery/yii2-formwizard/commit/096ef77ce63b2bc4f40fb274396f0c3dbe2ef690) Added minified script.
12 | - [BUG:306ab54](https://github.com/buttflattery/yii2-formwizard/commit/306ab5480a7848276b0b27fcf2a1332262329215) Fixed class name assets.
13 | - [ENH:aab5a18](https://github.com/buttflattery/yii2-formwizard/commit/aab5a180150b1b298af9b83b515105c76a5aaefb) Minify file js.
14 | - [ENH:1940ec9](https://github.com/buttflattery/yii2-formwizard/commit/1940ec95fd7a2741616f5ae300602c20dc1d2326) Added forceBsVersion to force the bootstrap class to use only the specific version.
15 |
16 | 1.5.0 - 11-01-2020
17 |
18 | Added
19 |
20 | - [FEATURE:4fb9198](https://github.com/buttflattery/yii2-formwizard/commit/8985c826ce58e53ab05a0ebd8f018958e3466f9a) Added skippable step feature.
21 | - [ENH:3b85d9b](https://github.com/buttflattery/yii2-formwizard/commit/efcdd423fe4547f36915aed9c58f774cfb4b6116) Updated code comments and optimization, moved code to the relevant areas from the run method.
22 | - [ENH:a3c0509](https://github.com/buttflattery/yii2-formwizard/commit/a3c05091c982daac8542680ea0e74a09367cbee4) added enhancement for the skippable step to detect if any input is filled in the skippable step then it wont skip and ask for validation.
23 |
24 | Changes/Fixes
25 |
26 | - [HOTFIX:64c6590](https://github.com/buttflattery/yii2-formwizard/commit/64c6590deaa8b813ddc609f5694d5bfcaa464f9d) Added hotfix for the latest Yii 2.0.22 updates to activeform js file.
27 | - [BUG:3e1c668](https://github.com/buttflattery/yii2-formwizard/commit/64c6590deaa8b813ddc609f5694d5bfcaa464f9d) Added fix for multiple instances bug failing to stat the observer on the last.
28 |
29 | 1.4.6 - 17/05/2019
30 |
31 | Added
32 |
33 | - [ENH:6cbe50a](https://github.com/buttflattery/yii2-formwizard/commit/6cbe50ae60137cb31c4e6d4c541d1b24850a2b5d) Added support for the missing input type number by [@sircovsw](https://github.com/sircovsw).
34 | - [ENH:25dd39b]() Limit rows for tabular form and code enhancement
35 |
36 | Changed
37 |
38 | - [BUG:84899ca](https://github.com/buttflattery/yii2-formwizard/commit/84899ca84f9efabae9df6482ada79ca0e34f92fb) Fixed the bug in formwizard preview steps while retrieving the text from drop-down by [@sircovsw](https://github.com/sircovsw).
39 | - [HOTFIX:36594062f97fcd31cf142484fc3c86cd511fd0c5](https://github.com/buttflattery/yii2-formwizard/commit/36594062f97fcd31cf142484fc3c86cd511fd0c5) added missing semi-colon.
40 | - [HOTFIX:9f9c8892fc8e155695f15b83662cae610294f438](https://github.com/buttflattery/yii2-formwizard/commit/9f9c8892fc8e155695f15b83662cae610294f438) added check for the options type.
41 | - [BUG:71efb65]() Fixed name for the classListGroup option
42 |
43 | 1.4.0 - 25/04/2019
44 |
45 | Added
46 | - April 24, 2019 [FEATURE:f387e81](https://github.com/buttflattery/yii2-formwizard/commit/f387e81a9f48241904fed9f1e4b4e17ef213ad9c) added ability to group fields under heading.
47 | - April 21, 2019 [FEATURE:97e5464](https://github.com/buttflattery/yii2-formwizard/commit/97e5464d6c3b84ad5cb4472320cdf56b4fa5bd9d) added new theme tags.
48 |
49 | Changed
50 | - April 25, 2019[BUG:30936c3](https://github.com/buttflattery/yii2-formwizard/commit/30936c352a93b365e681bbb76cc5b8dfdb74e9aa) added fix for the form-persistence bug when using multiple instances.
51 |
52 | - April 23, 2019 [BUG:22b06d2 ](https://github.com/buttflattery/yii2-formwizard/commit/22b06d2cb6eb0c233ca82f4864f21de0e19d86f7) fix for tabular row width for all themes and zindex for the tags theme tool bar.
53 |
54 | - April 22, 2019 [BUG:3ab6f4f](https://github.com/buttflattery/yii2-formwizard/commit/3ab6f4f7d6ebd721c6834f6d5a26e802fa919e19) fixed toolbar position.
55 |
56 | - April 16,2019 [BUG:e4bcf15](https://github.com/buttflattery/yii2-formwizard/commit/e4bcf154b51c8e3cbac9c8f962b23c767e7f9111) fixed the navigation padding and the background for the toolbar buttons.
57 |
58 | - April 15, 2019 [BUG:30936c3](https://github.com/buttflattery/yii2-formwizard/commit/30936c352a93b365e681bbb76cc5b8dfdb74e9aa) added fix for the form-persistence bug when using multiple instances.
59 |
60 | ---
61 |
62 | 1.3.0 - 22/10/2018
63 |
64 | Added
65 |
66 | - April 02, 2019 [FEATURE:6fca8ea](https://github.com/buttflattery/yii2-formwizard/commit/6fca8ea9a29de0da9c4c3c14a8e291a47566615b) Added new feaature to save/restore un-saved form fields by enabling `enablePersistence` option.
67 |
68 | - March 27, 2019 [FEATURE:1beb505](https://github.com/buttflattery/yii2-formwizard/commit/1beb5050f8fbaa8d8b8cb6af89cc8cb8de20fe7d) (feature/final-preview) Added new feature Preview Step.
69 | - March 18, 2019 [FEATURE:5769d27](https://github.com/buttflattery/yii2-formwizard/commit/5769d27fc9059cf4d7d5f7348d0a67213678c8c9) Added new feature for the Tabular step
70 |
71 | Removed
72 |
73 | - March 25, 2019 [2d7d08f](https://github.com/buttflattery/yii2-formwizard/commit/2d7d08f5aa6a6489a57e30a87baaa67e3225b29f) removed the `form-inline` class for the tabular form.
74 |
75 | ---
76 |
77 | 1.0.0 - 22/10/2018
78 |
79 | Added
80 |
81 | - March 13, 2019 [ENH:4e52390](https://github.com/buttflattery/yii2-formwizard/commit/4e523900e3f5312a1bc72e7561b5b43a731f1fb3) Added hint option for the inputs to provide customized text.
82 |
83 | - Nov 26, 2018 [ENH:bdcd340](https://github.com/buttflattery/yii2-formwizard/commit/bdcd34097f19ce9b37dfa63c065366c5ae3b3a52) added bootstrap4 support and updated all the css and assets files.
84 |
85 | - Nov 25, 2018 [ENH:f27ec80](https://github.com/buttflattery/yii2-formwizard/commit/f27ec80b8f2f2b40200a9eb1b0ecda8e9e20b884) updates for the bootstrap-4-compatibility.
86 |
87 | - Nov 24, 2018 [ENH:6111316](https://github.com/buttflattery/yii2-formwizard/commit/61113161729a4ed1aa0aebd75dd1a8359ccfc789) added support for field order using `fieldOrder` under the `steps` options and a new option to specify `inputOptions` for the ActiveField under the `fieldConfig`, and updated the docs.
88 |
89 | - Nov 21, 2018 [ENH:5c74aa0](https://github.com/buttflattery/yii2-formwizard/commit/5c74aa069eb37947777e4fa3f43e359173e1b652) added support for the `password` and `hidden` active field.
90 |
91 | - Nov 7, 2018 [ENH:678be15](https://github.com/buttflattery/yii2-formwizard/commit/678be15d4a8be813653cf8a29dc8a05715e11ede) added support for array based field names by adding `multifield` option for the active fields.
92 |
93 | - Nov 6, 2018 [ENH:223dd53](https://github.com/buttflattery/yii2-formwizard/commit/223dd5379b1c34aeed41e0facd9b4259e5bd0c18) added support for multiple models in single step.
94 |
95 | - Oct 7, 2018 [ENH:d8b14a6](https://github.com/buttflattery/yii2-formwizard/commit/d8b14a6de252bb0ff6e48963e2ecebdfbbeb9adf) updated the sections to customize all fields with `textarea`, `radio`, `checkbox`.
96 |
97 | Changed
98 | - March 30,2019 [BUG:52d9582](https://github.com/buttflattery/yii2-formwizard/commit/52d9582014c5b8e3b80633b8fbaa161f60800cc5) fixed unsynced preview containers for theme arrows.
99 |
100 | - March 25, 2019 [BUG:9e44bf7](https://github.com/buttflattery/yii2-formwizard/commit/9e44bf7805f7c78f7a33d746a1d42bf736bfbdd6) Fixed the bug with the add row when using widgets, closes #14.
101 |
102 | - Dec 6, 2018 [BUG:19c9619](https://github.com/buttflattery/yii2-formwizard/commit/19c96197bceb3767d4e9623897bd1f20ee3de02b) Added fix for kartik/depdrop widget Fixes #8
103 |
104 | - Nov 28, 2018 [BUG:142f4de](https://github.com/buttflattery/yii2-formwizard/commit/142f4de15aa8cfcdd55997dca3cfead295bcbd0a) Disabled form navigation on keyboard LEFT & RIGHT buttons as it skips the validation for the form and navigates to the next step change the default to `keyNavigation:false`.
105 |
106 | - Oct 20, 2018 [ENH:7d09163](https://github.com/buttflattery/yii2-formwizard/commit/7d091630424e171d7f2ce61d8fc0a4e81adf085a) changed form info from `h3` to info `alert` bootstrap.
107 |
108 | - Oct 20, 2018 [ENH:2d3e476](https://github.com/buttflattery/yii2-formwizard/commit/2d3e4767b50422a0c80978ad8d996e7ef7d0ae9e) fixes for the css and renamed `disabled` option to `except`.
109 |
110 | - Oct 19, 2018 [ENH:343f942](https://github.com/buttflattery/yii2-formwizard/commit/343f942728cdbebb1ee93e915cb6f8c1325bd710) fixes for bootstrap themes.
111 |
112 | - Oct 17, 2018 [ENH:9380d57](https://github.com/buttflattery/yii2-formwizard/commit/9380d575f23f55de76a625feb45345dc9acc9590) Code improvement, replaced the `isset()` with `ArrayHelper::getValue()` and removed several if else shorthand statements.
113 |
114 | - Oct 10, 2018 [BUG:1d001ae](https://github.com/buttflattery/yii2-formwizard/commit/1d001aee91f8dbed7df04cf2ce4cfa38f773f1ea) added css button toolbar fix.
115 |
116 | - Oct 10, 2018 [BUG:628e1d4](https://github.com/buttflattery/yii2-formwizard/commit/628e1d4b1b20e05bfc52c4ec0669953da3f727d3) Updated material.js with correct selectors for the theme material to apply wave effects via `observer` once loaded.
117 |
118 | - Oct 10, 2018 [ENH:eece731](https://github.com/buttflattery/yii2-formwizard/commit/eece731284d336061eea6efb422043a03c46b9c1) added `margin-bottom:40px` in `smart_wizard_theme_dots.css`.
119 |
120 | - Oct 10, 2018 [ENH:099416a](https://github.com/buttflattery/yii2-formwizard/commit/099416a43d50d38cb61b8661d070ca9a9761ad09) updated the section for css and added minified versions minify.
121 |
122 | - Oct 10, 2018 [BUG:3a7bc4a](https://github.com/buttflattery/yii2-formwizard/commit/3a7bc4aefc50e0be2b597b5ffa233c55c5aa4b97) updated the sections with ajax validation fix.
123 |
124 | Removed
125 |
126 | - Nov 21, 2018 [BUG:30cd5d8](https://github.com/buttflattery/yii2-formwizard/commit/30cd5d85dc135084011b3e61407c940962a6ce95) remove manual setting of `formOptions['action']` in the `setDefaults()` method.
127 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | # The BSD License (BSD)
2 |
3 | Copyright (c) 2013-{2018}, idowsTECH.
4 |
5 | > Redistribution and use in source and binary forms, with or without modification,
6 | > are permitted provided that the following conditions are met:
7 | >
8 | > Redistributions of source code must retain the above copyright notice, this
9 | > list of conditions and the following disclaimer.
10 | >
11 | > Redistributions in binary form must reproduce the above copyright notice, this
12 | > list of conditions and the following disclaimer in the documentation and/or
13 | > other materials provided with the distribution.
14 | >
15 | > Neither the name of idowsTECH. nor the names of its
16 | > contributors may be used to endorse or promote products derived from
17 | > this software without specific prior written permission.
18 | >
19 | >THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20 | >ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 | >WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 | >DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23 | >ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 | >(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 | >LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26 | >ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 | >(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 | >SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-leap-day
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "buttflattery/yii2-formwizard",
3 | "description": "A yii2 widget for form wizard, to create a multistep form.",
4 | "type": "yii2-extension",
5 | "require": {
6 | "php": ">=5.4.0"
7 | },
8 | "license": "MIT",
9 | "authors": [{
10 | "name": "omer aslam",
11 | "email": "buttflattery@hotmail.com"
12 | }],
13 | "minimum-stability": "dev",
14 | "autoload": {
15 | "psr-4": {
16 | "buttflattery\\formwizard\\": "//src"
17 | }
18 | }
19 |
20 | }
--------------------------------------------------------------------------------
/src/assetbundles/bs3/FormWizardAsset.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs3\FormWizardAsset');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/assetbundles/bs3/ThemeBase.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs3\FormWizardAsset');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/assetbundles/bs3/ThemeDotsAsset.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs3\FormWizardAsset');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/assetbundles/bs3/ThemeMaterialAsset.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs3\FormWizardAsset');
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/assetbundles/bs3/ThemeMaterialVerticleAsset.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs3\FormWizardAsset');
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/assetbundles/bs3/ThemeTagsAsset.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs3\FormWizardAsset');
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/assetbundles/bs4/FormWizardAsset.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs4\FormWizardAsset');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/assetbundles/bs4/ThemeBase.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs4\FormWizardAsset');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/assetbundles/bs4/ThemeDotsAsset.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs4\FormWizardAsset');
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/assetbundles/bs4/ThemeMaterialAsset.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs4\FormWizardAsset');
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/assetbundles/bs4/ThemeMaterialVerticleAsset.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs4\FormWizardAsset');
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/assetbundles/bs4/ThemeTagsAsset.php:
--------------------------------------------------------------------------------
1 | depends, 'buttflattery\formwizard\assetbundles\bs4\FormWizardAsset');
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/assets/css/fonts/formwizard.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/buttflattery/yii2-formwizard/13a963c777a2e580698841526573fab49fc8a0b3/src/assets/css/fonts/formwizard.eot
--------------------------------------------------------------------------------
/src/assets/css/fonts/formwizard.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/src/assets/css/fonts/formwizard.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/buttflattery/yii2-formwizard/13a963c777a2e580698841526573fab49fc8a0b3/src/assets/css/fonts/formwizard.ttf
--------------------------------------------------------------------------------
/src/assets/css/fonts/formwizard.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/buttflattery/yii2-formwizard/13a963c777a2e580698841526573fab49fc8a0b3/src/assets/css/fonts/formwizard.woff
--------------------------------------------------------------------------------
/src/assets/css/icons-theme.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'formwizard';
3 | src: url('fonts/formwizard.eot?un40vz');
4 | src: url('fonts/formwizard.eot?un40vz#iefix') format('embedded-opentype'),
5 | url('fonts/formwizard.ttf?un40vz') format('truetype'),
6 | url('fonts/formwizard.woff?un40vz') format('woff'),
7 | url('fonts/formwizard.svg?un40vz#formwizard') format('svg');
8 | font-weight: normal;
9 | font-style: normal;
10 | }
11 |
12 | [class^="formwizard-"],
13 | [class*=" formwizard-"] {
14 | /* use !important to prevent issues with browser extensions that change fonts */
15 | font-family: 'formwizard' !important;
16 | speak: none;
17 | font-style: normal;
18 | font-weight: normal;
19 | font-variant: normal;
20 | text-transform: none;
21 | line-height: 1;
22 |
23 | /* Better Font Rendering =========== */
24 | -webkit-font-smoothing: antialiased;
25 | -moz-osx-font-smoothing: grayscale;
26 | }
27 |
28 | .formwizard-quill-ico:before {
29 | content: "\e91a";
30 | }
31 |
32 | .formwizard-restore-ico:before {
33 | content: "\ea2e";
34 | }
35 |
36 | .formwizard-checkmark-ico:before {
37 | content: "\e900";
38 | }
39 |
40 | .formwizard-check-alt-ico:before {
41 | content: "\e901";
42 | }
43 |
44 | .formwizard-x-ico:before {
45 | content: "\e902";
46 | }
47 |
48 | .formwizard-x-altx-alt-ico:before {
49 | content: "\e903";
50 | }
51 |
52 | .formwizard-denied-ico:before {
53 | content: "\e904";
54 | }
55 |
56 | .formwizard-plus-ico:before {
57 | content: "\e905";
58 | }
59 |
60 | .formwizard-plus-alt-ico:before {
61 | content: "\e906";
62 | }
63 |
64 | .formwizard-minus-ico:before {
65 | content: "\e907";
66 | }
67 |
68 | .formwizard-minus-alt-ico:before {
69 | content: "\e908";
70 | }
71 |
72 | .formwizard-arrow-left-ico:before {
73 | content: "\e909";
74 | }
75 |
76 | .formwizard-arrow-left-alt1-ico:before {
77 | content: "\e90a";
78 | }
79 |
80 | .formwizard-arrow-left-alt2-ico:before {
81 | content: "\e90b";
82 | }
83 |
84 | .formwizard-arrow-right-ico:before {
85 | content: "\e90c";
86 | }
87 |
88 | .formwizard-arrow-right-alt1-ico:before {
89 | content: "\e90d";
90 | }
91 |
92 | .formwizard-arrow-right-alt2-ico:before {
93 | content: "\e90e";
94 | }
95 |
96 | .formwizard-arrow-up-ico:before {
97 | content: "\e90f";
98 | }
99 |
100 | .formwizard-arrow-up-alt1-ico:before {
101 | content: "\e910";
102 | }
103 |
104 | .formwizard-arrow-up-alt2-ico:before {
105 | content: "\e911";
106 | }
107 |
108 | .formwizard-arrow-down-ico:before {
109 | content: "\e912";
110 | }
111 |
112 | .formwizard-arrow-down-alt1-ico:before {
113 | content: "\e913";
114 | }
115 |
116 | .formwizard-arrow-down-alt2-ico:before {
117 | content: "\e914";
118 | }
119 |
120 | .formwizard-cd-ico:before {
121 | content: "\e915";
122 | }
123 |
124 | .formwizard-first-ico:before {
125 | content: "\e916";
126 | }
127 |
128 | .formwizard-last-ico:before {
129 | content: "\e917";
130 | }
131 |
132 | .formwizard-info-ico:before {
133 | content: "\e918";
134 | }
135 |
136 | .formwizard-hash-ico:before {
137 | content: "\e919";
138 | }
--------------------------------------------------------------------------------
/src/assets/css/icons-theme.min.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:formwizard;src:url(fonts/formwizard.eot?un40vz);src:url(fonts/formwizard.eot?un40vz#iefix) format('embedded-opentype'),url(fonts/formwizard.ttf?un40vz) format('truetype'),url(fonts/formwizard.woff?un40vz) format('woff'),url(fonts/formwizard.svg?un40vz#formwizard) format('svg');font-weight:400;font-style:normal}[class*=" formwizard-"],[class^=formwizard-]{font-family:formwizard!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.formwizard-quill-ico:before{content:"\e91a"}.formwizard-restore-ico:before{content:"\ea2e"}.formwizard-checkmark-ico:before{content:"\e900"}.formwizard-check-alt-ico:before{content:"\e901"}.formwizard-x-ico:before{content:"\e902"}.formwizard-x-altx-alt-ico:before{content:"\e903"}.formwizard-denied-ico:before{content:"\e904"}.formwizard-plus-ico:before{content:"\e905"}.formwizard-plus-alt-ico:before{content:"\e906"}.formwizard-minus-ico:before{content:"\e907"}.formwizard-minus-alt-ico:before{content:"\e908"}.formwizard-arrow-left-ico:before{content:"\e909"}.formwizard-arrow-left-alt1-ico:before{content:"\e90a"}.formwizard-arrow-left-alt2-ico:before{content:"\e90b"}.formwizard-arrow-right-ico:before{content:"\e90c"}.formwizard-arrow-right-alt1-ico:before{content:"\e90d"}.formwizard-arrow-right-alt2-ico:before{content:"\e90e"}.formwizard-arrow-up-ico:before{content:"\e90f"}.formwizard-arrow-up-alt1-ico:before{content:"\e910"}.formwizard-arrow-up-alt2-ico:before{content:"\e911"}.formwizard-arrow-down-ico:before{content:"\e912"}.formwizard-arrow-down-alt1-ico:before{content:"\e913"}.formwizard-arrow-down-alt2-ico:before{content:"\e914"}.formwizard-cd-ico:before{content:"\e915"}.formwizard-first-ico:before{content:"\e916"}.formwizard-last-ico:before{content:"\e917"}.formwizard-info-ico:before{content:"\e918"}.formwizard-hash-ico:before{content:"\e919"}
--------------------------------------------------------------------------------
/src/assets/css/ie7/ie7.css:
--------------------------------------------------------------------------------
1 | .formwizard-quill-ico {
2 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
3 | }
4 | .formwizard-restore-ico {
5 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
6 | }
7 | .formwizard-checkmark-ico {
8 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
9 | }
10 | .formwizard-check-alt-ico {
11 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
12 | }
13 | .formwizard-x-ico {
14 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
15 | }
16 | .formwizard-x-altx-alt-ico {
17 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
18 | }
19 | .formwizard-denied-ico {
20 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
21 | }
22 | .formwizard-plus-ico {
23 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
24 | }
25 | .formwizard-plus-alt-ico {
26 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
27 | }
28 | .formwizard-minus-ico {
29 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
30 | }
31 | .formwizard-minus-alt-ico {
32 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
33 | }
34 | .formwizard-arrow-left-ico {
35 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
36 | }
37 | .formwizard-arrow-left-alt1-ico {
38 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
39 | }
40 | .formwizard-arrow-left-alt2-ico {
41 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
42 | }
43 | .formwizard-arrow-right-ico {
44 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
45 | }
46 | .formwizard-arrow-right-alt1-ico {
47 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
48 | }
49 | .formwizard-arrow-right-alt2-ico {
50 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
51 | }
52 | .formwizard-arrow-up-ico {
53 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
54 | }
55 | .formwizard-arrow-up-alt1-ico {
56 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
57 | }
58 | .formwizard-arrow-up-alt2-ico {
59 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
60 | }
61 | .formwizard-arrow-down-ico {
62 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
63 | }
64 | .formwizard-arrow-down-alt1-ico {
65 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
66 | }
67 | .formwizard-arrow-down-alt2-ico {
68 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
69 | }
70 | .formwizard-cd-ico {
71 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
72 | }
73 | .formwizard-first-ico {
74 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
75 | }
76 | .formwizard-last-ico {
77 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
78 | }
79 | .formwizard-info-ico {
80 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
81 | }
82 | .formwizard-hash-ico {
83 | *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '');
84 | }
85 |
86 |
--------------------------------------------------------------------------------
/src/assets/css/ie7/ie7.js:
--------------------------------------------------------------------------------
1 | /* To avoid CSS expressions while still supporting IE 7 and IE 6, use this script */
2 | /* The script tag referencing this file must be placed before the ending body tag. */
3 |
4 | /* Use conditional comments in order to target IE 7 and older:
5 |
6 |
7 |
8 | */
9 |
10 | (function() {
11 | function addIcon(el, entity) {
12 | var html = el.innerHTML;
13 | el.innerHTML = '' + entity + ' ' + html;
14 | }
15 | var icons = {
16 | 'formwizard-quill-ico': '',
17 | 'formwizard-restore-ico': '',
18 | 'formwizard-checkmark-ico': '',
19 | 'formwizard-check-alt-ico': '',
20 | 'formwizard-x-ico': '',
21 | 'formwizard-x-altx-alt-ico': '',
22 | 'formwizard-denied-ico': '',
23 | 'formwizard-plus-ico': '',
24 | 'formwizard-plus-alt-ico': '',
25 | 'formwizard-minus-ico': '',
26 | 'formwizard-minus-alt-ico': '',
27 | 'formwizard-arrow-left-ico': '',
28 | 'formwizard-arrow-left-alt1-ico': '',
29 | 'formwizard-arrow-left-alt2-ico': '',
30 | 'formwizard-arrow-right-ico': '',
31 | 'formwizard-arrow-right-alt1-ico': '',
32 | 'formwizard-arrow-right-alt2-ico': '',
33 | 'formwizard-arrow-up-ico': '',
34 | 'formwizard-arrow-up-alt1-ico': '',
35 | 'formwizard-arrow-up-alt2-ico': '',
36 | 'formwizard-arrow-down-ico': '',
37 | 'formwizard-arrow-down-alt1-ico': '',
38 | 'formwizard-arrow-down-alt2-ico': '',
39 | 'formwizard-cd-ico': '',
40 | 'formwizard-first-ico': '',
41 | 'formwizard-last-ico': '',
42 | 'formwizard-info-ico': '',
43 | 'formwizard-hash-ico': '',
44 | '0': 0
45 | },
46 | els = document.getElementsByTagName('*'),
47 | i, c, el;
48 | for (i = 0; ; i += 1) {
49 | el = els[i];
50 | if(!el) {
51 | break;
52 | }
53 | c = el.className;
54 | c = c.match(/formwizard-[^\s'"]+/);
55 | if (c && icons[c[0]]) {
56 | addIcon(el, icons[c[0]]);
57 | }
58 | }
59 | }());
60 |
--------------------------------------------------------------------------------
/src/assets/css/shake.css:
--------------------------------------------------------------------------------
1 | /*
2 | To change this license header, choose License Headers in Project Properties.
3 | To change this template file, choose Tools | Templates
4 | and open the template in the editor.
5 | */
6 | /*
7 | Created on : Sep 20, 2018, 3:09:24 AM
8 | Author : omer
9 | */
10 |
11 |
12 | /* Shake animation */
13 | @charset "UTF-8";
14 |
15 | .animated {
16 | -webkit-animation-duration: 1s;
17 | -moz-animation-duration: 1s;
18 | -o-animation-duration: 1s;
19 | animation-duration: 1s;
20 | -webkit-animation-fill-mode: both;
21 | -moz-animation-fill-mode: both;
22 | -o-animation-fill-mode: both;
23 | animation-fill-mode: both;
24 | }
25 |
26 | .animated.hinges {
27 | -webkit-animation-duration: 2s;
28 | -moz-animation-duration: 2s;
29 | -o-animation-duration: 2s;
30 | animation-duration: 2s;
31 | }
32 |
33 | .animated.slow {
34 | -webkit-animation-duration: 3s;
35 | -moz-animation-duration: 3s;
36 | -o-animation-duration: 3s;
37 | animation-duration: 3s;
38 | }
39 |
40 | .animated.snail {
41 | -webkit-animation-duration: 4s;
42 | -moz-animation-duration: 4s;
43 | -o-animation-duration: 4s;
44 | animation-duration: 4s;
45 | }
46 |
47 | @-webkit-keyframes shake {
48 | 0%, 100% {-webkit-transform: translateX(0);}
49 | 10%, 30%, 50%, 70%, 90% {-webkit-transform: translateX(-10px);}
50 | 20%, 40%, 60%, 80% {-webkit-transform: translateX(10px);}
51 | }
52 |
53 | @-moz-keyframes shake {
54 | 0%, 100% {-moz-transform: translateX(0);}
55 | 10%, 30%, 50%, 70%, 90% {-moz-transform: translateX(-10px);}
56 | 20%, 40%, 60%, 80% {-moz-transform: translateX(10px);}
57 | }
58 |
59 | @-o-keyframes shake {
60 | 0%, 100% {-o-transform: translateX(0);}
61 | 10%, 30%, 50%, 70%, 90% {-o-transform: translateX(-10px);}
62 | 20%, 40%, 60%, 80% {-o-transform: translateX(10px);}
63 | }
64 |
65 | @keyframes shake {
66 | 0%, 100% {transform: translateX(0);}
67 | 10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);}
68 | 20%, 40%, 60%, 80% {transform: translateX(10px);}
69 | }
70 |
71 | .shake {
72 | -webkit-animation-name: shake;
73 | -moz-animation-name: shake;
74 | -o-animation-name: shake;
75 | animation-name: shake;
76 | }
--------------------------------------------------------------------------------
/src/assets/css/shake.min.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | .animated{-webkit-animation-duration:1s;-moz-animation-duration:1s;-o-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both}.animated.hinges{-webkit-animation-duration:2s;-moz-animation-duration:2s;-o-animation-duration:2s;animation-duration:2s}.animated.slow{-webkit-animation-duration:3s;-moz-animation-duration:3s;-o-animation-duration:3s;animation-duration:3s}.animated.snail{-webkit-animation-duration:4s;-moz-animation-duration:4s;-o-animation-duration:4s;animation-duration:4s}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px)}}@-moz-keyframes shake{0%,100%{-moz-transform:translateX(0)}10%,30%,50%,70%,90%{-moz-transform:translateX(-10px)}20%,40%,60%,80%{-moz-transform:translateX(10px)}}@-o-keyframes shake{0%,100%{-o-transform:translateX(0)}10%,30%,50%,70%,90%{-o-transform:translateX(-10px)}20%,40%,60%,80%{-o-transform:translateX(10px)}}@keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}.shake{-webkit-animation-name:shake;-moz-animation-name:shake;-o-animation-name:shake;animation-name:shake}
--------------------------------------------------------------------------------
/src/assets/css/smart_wizard.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */
12 | .sw-main {
13 | font-family: "Montserrat", sans-serif !important;
14 | position: relative;
15 | display: block;
16 | margin: 0;
17 | padding: 0;
18 | border-radius: .25rem !important;
19 | background: #fff;
20 | }
21 |
22 | .sw-main .sw-container {
23 | display: block;
24 | margin: 0;
25 | padding: 0;
26 | position: relative;
27 | }
28 |
29 | .sw-theme-default .field-heading {
30 | border-bottom: 1px solid rgb(161, 161, 161);
31 | margin-bottom: 31px;
32 | font-size: 1.3em;
33 | }
34 |
35 | .sw-main .formwizard_next,
36 | .sw-main .formwizard_prev,
37 | .sw-main .formwizard_finish {
38 | font-family: inherit !important;
39 | }
40 |
41 | .sw-main .step-content {
42 | display: none;
43 | position: relative;
44 | margin: 0;
45 | }
46 |
47 | .sw-main .sw-toolbar {
48 | margin-left: 0;
49 | }
50 |
51 | .sw-main .tabular-row i.remove-row {
52 | float: right;
53 | clear: both;
54 | color: #d9534f;
55 | cursor: pointer;
56 | }
57 |
58 |
59 | .sw-main .fields_container .tabular-row {
60 | margin-top: 10px;
61 | border-top: 1px solid #c8c8c8;
62 | padding: 5px;
63 | width: 80%;
64 | }
65 |
66 | .justify-content-end {
67 | -ms-flex-pack: end !important;
68 | justify-content: flex-end !important;
69 | display: flex;
70 | }
71 |
72 | .sw-main .sw-toolbar {
73 | margin-left: 0
74 | }
75 |
76 | .sw-theme-default {
77 | -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
78 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
79 | }
80 |
81 | .sw-theme-default .sw-container {
82 | min-height: 250px;
83 | }
84 |
85 | .sw-theme-default .step-content {
86 | padding: 10px;
87 | border: 0 solid #d4d4d4;
88 | background-color: #fff;
89 | text-align: left;
90 | }
91 |
92 | .sw-theme-default .sw-toolbar {
93 |
94 | border-radius: 0 !important;
95 | padding-left: 10px;
96 | padding-right: 10px;
97 | padding: 10px;
98 | margin-bottom: 0 !important;
99 | }
100 |
101 | .sw-theme-default .sw-toolbar-top {
102 | border-bottom-color: #ddd !important;
103 | }
104 |
105 | .sw-theme-default .sw-toolbar-bottom {
106 | border-top-color: #ddd !important;
107 | }
108 |
109 | .sw-theme-default>ul.step-anchor {
110 | background: #f9f9f9;
111 | padding: 0 !important;
112 | }
113 |
114 | .sw-theme-default>ul.step-anchor>li {
115 | position: relative;
116 | margin-right: 2px;
117 | }
118 |
119 | .sw-theme-default>ul.step-anchor>li>a,
120 | .sw-theme-default>ul.step-anchor>li>a:hover {
121 | border: none !important;
122 | color: #bbb !important;
123 | text-decoration: none;
124 | outline-style: none;
125 | background: 0 0 !important;
126 | border: none !important;
127 | cursor: not-allowed;
128 |
129 | }
130 |
131 | .sw-theme-default>ul.step-anchor>li.clickable>a:hover {
132 | color: #4285f4 !important;
133 | background: 0 0 !important;
134 | cursor: pointer;
135 | }
136 |
137 | .sw-theme-default>ul.step-anchor>li>a::after {
138 | content: "";
139 | background: teal;
140 | height: 2px;
141 | position: absolute;
142 | width: 100%;
143 | left: 0;
144 | bottom: 0;
145 | -webkit-transition: all 250ms ease 0s;
146 | transition: all 250ms ease 0s;
147 | -webkit-transform: scale(0);
148 | -ms-transform: scale(0);
149 | transform: scale(0);
150 | }
151 |
152 | .sw-theme-default>ul.step-anchor>li.active>a {
153 | border: none !important;
154 | color: teal !important;
155 | background: 0 0 !important;
156 | cursor: pointer;
157 |
158 | }
159 |
160 | .sw-theme-default>ul.step-anchor>li.active>a::after {
161 | -webkit-transform: scale(1);
162 | -ms-transform: scale(1);
163 | transform: scale(1);
164 | }
165 |
166 | .sw-theme-default>ul.step-anchor>li.done>a {
167 | border: none !important;
168 | color: green !important;
169 | background: 0 0 !important;
170 | cursor: pointer;
171 | }
172 |
173 | .sw-theme-default>ul.step-anchor>li.done>a::after {
174 | background: #5cb85c;
175 | -webkit-transform: scale(1);
176 | -ms-transform: scale(1);
177 | transform: scale(1);
178 | }
179 |
180 | .sw-theme-default>ul.step-anchor>li.danger>a {
181 | border: none !important;
182 | color: #d9534f !important;
183 | cursor: pointer;
184 | }
185 |
186 | .sw-theme-default>ul.step-anchor>li.danger>a::after {
187 | background: #d9534f;
188 | border-left-color: #f8d7da;
189 | -webkit-transform: scale(1);
190 | -ms-transform: scale(1);
191 | transform: scale(1);
192 | }
193 |
194 | .sw-theme-default>ul.step-anchor>li.disabled>a,
195 | .sw-theme-default>ul.step-anchor>li.disabled>a:hover {
196 | color: #eee !important;
197 | cursor: not-allowed;
198 | }
199 |
200 | .notify-target {
201 | box-shadow: 0 0 5px rgba(81, 203, 238, 1);
202 | padding: 3px 0px 3px 3px;
203 | margin: 5px 1px 3px 0px;
204 | border: 1px solid rgba(81, 203, 238, 1);
205 | -webkit-transition: all 0.30s ease-in-out;
206 | -moz-transition: all 0.30s ease-in-out;
207 | -ms-transition: all 0.30s ease-in-out;
208 | -o-transition: all 0.30s ease-in-out;
209 | }
210 |
211 | @media screen and (max-width: 768px) {
212 | .sw-theme-default>.nav-tabs>li {
213 | float: none !important;
214 | }
215 | }
216 |
217 | .sw-loading::after {
218 | position: absolute;
219 | display: block;
220 | opacity: 1;
221 | content: "";
222 | top: 0;
223 | left: 0;
224 | height: 100%;
225 | width: 100%;
226 | background: rgba(255, 255, 255, 0.7);
227 | -webkit-transition: all 0.2s ease;
228 | transition: all 0.2s ease;
229 | z-index: 2;
230 | }
231 |
232 | .sw-loading::before {
233 | content: "";
234 | display: inline-block;
235 | position: absolute;
236 | top: 50%;
237 | left: 50%;
238 | z-index: 10;
239 | border: 10px solid #f3f3f3;
240 | border-radius: 50%;
241 | border-top: 10px solid #3498db;
242 | width: 80px;
243 | height: 80px;
244 | margin-top: -40px;
245 | margin-left: -40px;
246 | -webkit-animation: spin 1s linear infinite;
247 | animation: spin 1s linear infinite;
248 | }
249 |
250 | @-webkit-keyframes spin {
251 | 0% {
252 | -webkit-transform: rotate(0);
253 | }
254 |
255 | 100% {
256 | -webkit-transform: rotate(360deg);
257 | }
258 | }
259 |
260 | @keyframes spin {
261 | 0% {
262 | -webkit-transform: rotate(0);
263 | transform: rotate(0);
264 | }
265 |
266 | 100% {
267 | -webkit-transform: rotate(360deg);
268 | transform: rotate(360deg);
269 | }
270 | }
--------------------------------------------------------------------------------
/src/assets/css/smart_wizard.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */.sw-main{font-family:Montserrat,sans-serif!important;position:relative;display:block;margin:0;padding:0;border-radius:.25rem!important;background:#fff}.sw-main .sw-container{display:block;margin:0;padding:0;position:relative}.sw-theme-default .field-heading{border-bottom:1px solid #a1a1a1;margin-bottom:31px;font-size:1.3em}.sw-main .formwizard_finish,.sw-main .formwizard_next,.sw-main .formwizard_prev{font-family:inherit!important}.sw-main .step-content{display:none;position:relative;margin:0}.sw-main .sw-toolbar{margin-left:0}.sw-main .tabular-row i.remove-row{float:right;clear:both;color:#d9534f;cursor:pointer}.sw-main .fields_container .tabular-row{margin-top:10px;border-top:1px solid #c8c8c8;padding:5px;width:80%}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important;display:flex}.sw-main .sw-toolbar{margin-left:0}.sw-theme-default{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3)}.sw-theme-default .sw-container{min-height:250px}.sw-theme-default .step-content{padding:10px;border:0 solid #d4d4d4;background-color:#fff;text-align:left}.sw-theme-default .sw-toolbar{border-radius:0!important;padding-left:10px;padding-right:10px;padding:10px;margin-bottom:0!important}.sw-theme-default .sw-toolbar-top{border-bottom-color:#ddd!important}.sw-theme-default .sw-toolbar-bottom{border-top-color:#ddd!important}.sw-theme-default>ul.step-anchor{background:#f9f9f9;padding:0!important}.sw-theme-default>ul.step-anchor>li{position:relative;margin-right:2px}.sw-theme-default>ul.step-anchor>li>a,.sw-theme-default>ul.step-anchor>li>a:hover{border:none!important;color:#bbb!important;text-decoration:none;outline-style:none;background:0 0!important;border:none!important;cursor:not-allowed}.sw-theme-default>ul.step-anchor>li.clickable>a:hover{color:#4285f4!important;background:0 0!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li>a::after{content:"";background:teal;height:2px;position:absolute;width:100%;left:0;bottom:0;-webkit-transition:all 250ms ease 0s;transition:all 250ms ease 0s;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.sw-theme-default>ul.step-anchor>li.active>a{border:none!important;color:teal!important;background:0 0!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li.active>a::after{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.sw-theme-default>ul.step-anchor>li.done>a{border:none!important;color:green!important;background:0 0!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li.done>a::after{background:#5cb85c;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.sw-theme-default>ul.step-anchor>li.danger>a{border:none!important;color:#d9534f!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li.danger>a::after{background:#d9534f;border-left-color:#f8d7da;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.sw-theme-default>ul.step-anchor>li.disabled>a,.sw-theme-default>ul.step-anchor>li.disabled>a:hover{color:#eee!important;cursor:not-allowed}.notify-target{box-shadow:0 0 5px rgba(81,203,238,1);padding:3px 0 3px 3px;margin:5px 1px 3px 0;border:1px solid rgba(81,203,238,1);-webkit-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-ms-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out}@media screen and (max-width:768px){.sw-theme-default>.nav-tabs>li{float:none!important}}.sw-loading::after{position:absolute;display:block;opacity:1;content:"";top:0;left:0;height:100%;width:100%;background:rgba(255,255,255,.7);-webkit-transition:all .2s ease;transition:all .2s ease;z-index:2}.sw-loading::before{content:"";display:inline-block;position:absolute;top:50%;left:50%;z-index:10;border:10px solid #f3f3f3;border-radius:50%;border-top:10px solid #3498db;width:80px;height:80px;margin-top:-40px;margin-left:-40px;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_arrows.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */.sw-container,.sw-main{background:#fff}.sw-theme-arrows{border-radius:5px;border:1px solid #ddd;font-family:Montserrat,sans-serif!important}.sw-theme-arrows .fields_container .tabular-row{margin-top:10px;border-top:1px solid #c8c8c8;padding:5px;width:80%}.sw-theme-arrows .field-heading{border-bottom:1px solid #a1a1a1;margin-bottom:31px;font-size:1.3em}.sw-theme-arrows>.sw-container{min-height:200px}.sw-theme-arrows .tabular-row i.remove-row{float:right;clear:both;color:#d9534f;cursor:pointer}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important;display:flex}.sw-theme-arrows .step-content{padding:0 10px;border:0 solid #d4d4d4;background-color:#fff;text-align:left}.sw-theme-arrows .sw-toolbar{padding:10px;margin-bottom:0!important;background:#fff}.sw-theme-arrows>ul.step-anchor{border:0;border-bottom:1px solid #ddd;padding:0;background:#f5f5f5!important;border-radius:0;border-top-right-radius:5px;list-style:none;overflow:hidden}.sw-theme-arrows>ul.step-anchor li+li:before{padding:0}.sw-theme-arrows>ul.step-anchor>li>a,.sw-theme-arrows>ul.step-anchor>li>a:hover{color:#bbb!important;text-decoration:none;padding:10px 0 10px 45px;position:relative;display:block;border:0!important;border-radius:0;outline-style:none;background:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li>a:after{content:" ";display:block;width:0;height:0;border-top:50px solid transparent;border-bottom:50px solid transparent;border-left:30px solid #f5f5f5;position:absolute;top:50%;margin-top:-50px;left:100%;z-index:2}.sw-theme-arrows>ul.step-anchor>li>a:before{content:" ";display:block;width:0;height:0;border-top:50px solid transparent;border-bottom:50px solid transparent;border-left:30px solid #ddd;position:absolute;top:50%;margin-top:-50px;margin-left:1px;left:100%;z-index:1}.sw-theme-arrows>ul.step-anchor>li:first-child>a{padding-left:15px}.sw-theme-arrows>ul.step-anchor>li>a:hover{color:#bbb;text-decoration:none;outline-style:none;background:#f5f5f5;border-color:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li>a:hover:after{border-left-color:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li.clickable>a:hover{color:#4285f4!important;background:#46b8da!important}.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#5cb85c!important;color:#fff!important;background:#5cb85c!important}.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left:30px solid #5cb85c!important}.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#b1dfbb!important;color:#fff!important;background:#b1dfbb!important}.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left:30px solid #b1dfbb}.sw-theme-arrows>ul.step-anchor>li.danger>a{border-color:#d9534f!important;color:#fff!important;background:#d9534f!important}.sw-theme-arrows>ul.step-anchor>li.danger>a:after{border-left:30px solid #d9534f!important}.sw-theme-arrows>ul.step-anchor>li.disabled>a,.sw-theme-arrows>ul.step-anchor>li.disabled>a:hover{color:#eee!important}.sw-theme-arrows ul.nav-tabs li{top:0!important}@media screen and (max-width:768px){.sw-theme-arrows>ul.step-anchor{border:0;background:#ddd!important}.sw-theme-arrows>.nav-tabs>li{float:none!important;margin-bottom:0}.sw-theme-arrows>ul.step-anchor>li>a,.sw-theme-arrows>ul.step-anchor>li>a:hover{padding-left:15px;margin-right:0;margin-bottom:1px}.sw-theme-arrows>ul.step-anchor>li>a:after,.sw-theme-arrows>ul.step-anchor>li>a:before{display:none}}.sw-theme-arrows::before{border:10px solid #f3f3f3;border-top:10px solid #5cb85c}
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_arrows.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * SmartWizard v4.3.x
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */.sw-container,.sw-main{background:#fff}.sw-theme-arrows{border-radius:5px;border:1px solid #ddd;font-family:Montserrat,sans-serif!important}.sw-theme-arrows .fields_container .tabular-row{margin-top:10px;border-top:1px solid #c8c8c8;padding:5px;width:80%}.sw-theme-arrows .field-heading{border-bottom:1px solid #a1a1a1;margin-bottom:31px;font-size:1.3em}.sw-theme-arrows>.sw-container{min-height:200px}.sw-theme-arrows .tabular-row i.remove-row{float:right;clear:both;color:#d9534f;cursor:pointer}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important;display:flex}.sw-theme-arrows .step-content{padding:0 10px;border:0 solid #d4d4d4;background-color:#fff;text-align:left}.sw-theme-arrows .sw-toolbar{padding:10px;margin-bottom:0!important;background:#fff}.sw-theme-arrows>ul.step-anchor{border:0;border-bottom:1px solid #ddd;padding:0;background:#f5f5f5!important;border-radius:0;border-top-right-radius:5px;list-style:none;overflow:hidden}.sw-theme-arrows>ul.step-anchor li+li:before{padding:0}.sw-theme-arrows>ul.step-anchor>li>a,.sw-theme-arrows>ul.step-anchor>li>a:hover{color:#bbb!important;text-decoration:none;padding:10px 0 10px 45px;position:relative;display:block;border:0!important;border-radius:0;outline-style:none;background:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li>a:after{content:" ";display:block;width:0;height:0;border-top:50px solid transparent;border-bottom:50px solid transparent;border-left:30px solid #f5f5f5;position:absolute;top:50%;margin-top:-50px;left:100%;z-index:2}.sw-theme-arrows>ul.step-anchor>li>a:before{content:" ";display:block;width:0;height:0;border-top:50px solid transparent;border-bottom:50px solid transparent;border-left:30px solid #ddd;position:absolute;top:50%;margin-top:-50px;margin-left:1px;left:100%;z-index:1}.sw-theme-arrows>ul.step-anchor>li:first-child>a{padding-left:15px}.sw-theme-arrows>ul.step-anchor>li>a:hover{color:#bbb;text-decoration:none;outline-style:none;background:#f5f5f5;border-color:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li>a:hover:after{border-left-color:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li.clickable>a:hover{color:#4285f4!important;background:#46b8da!important}.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#5cb85c!important;color:#fff!important;background:#5cb85c!important}.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left:30px solid #5cb85c!important}.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#b1dfbb!important;color:#fff!important;background:#b1dfbb!important}.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left:30px solid #b1dfbb}.sw-theme-arrows>ul.step-anchor>li.danger>a{border-color:#d9534f!important;color:#fff!important;background:#d9534f!important}.sw-theme-arrows>ul.step-anchor>li.danger>a:after{border-left:30px solid #d9534f!important}.sw-theme-arrows>ul.step-anchor>li.disabled>a,.sw-theme-arrows>ul.step-anchor>li.disabled>a:hover{color:#eee!important}.sw-theme-arrows ul.nav-tabs li{top:0!important}@media screen and (max-width:768px){.sw-theme-arrows>ul.step-anchor{border:0;background:#ddd!important}.sw-theme-arrows>.nav-tabs>li{float:none!important;margin-bottom:0}.sw-theme-arrows>ul.step-anchor>li>a,.sw-theme-arrows>ul.step-anchor>li>a:hover{padding-left:15px;margin-right:0;margin-bottom:1px}.sw-theme-arrows>ul.step-anchor>li>a:after,.sw-theme-arrows>ul.step-anchor>li>a:before{display:none}}.sw-theme-arrows::before{border:10px solid #f3f3f3;border-top:10px solid #5cb85c}
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_circles.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */.sw-theme-circles{font-family:Montserrat,sans-serif!important}.sw-theme-circles .sw-container{min-height:300px}.sw-theme-circles .fields_container .tabular-row{margin-top:10px;border-top:1px solid #c8c8c8;padding:5px;width:80%}.sw-theme-circles .field-heading{border-bottom:1px solid #a1a1a1;margin-bottom:31px;font-size:1.3em}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important;display:flex}.sw-main .tabular-row i.remove-row{float:right;clear:both;color:#d9534f;cursor:pointer}.sw-theme-circles .step-content{padding:10px 0;background-color:#fff;text-align:left}.sw-theme-circles .sw-toolbar{background:#fff;padding-left:10px;padding-right:10px;margin-bottom:0!important}.sw-theme-circles .sw-toolbar-bottom{border-top-color:#ddd!important;border-bottom-color:#ddd!important}.sw-theme-circles>ul.step-anchor{position:relative;background:#fff!important;border:none;list-style:none;margin-bottom:60px}.sw-theme-circles>ul.step-anchor:before{content:" ";position:absolute;top:50%;bottom:0;width:100%;height:5px;background-color:#f5f5f5;border-radius:3px;z-index:0}.sw-theme-circles>ul.step-anchor>li{border:none;margin-left:40px;z-index:98}.sw-theme-circles>ul.step-anchor>li>a{border:2px solid #f5f5f5;width:105px;height:105px;text-align:center;padding:53px 0;border-radius:50%;-webkit-box-shadow:inset 0 0 0 3px #fff!important;box-shadow:inset 0 0 0 3px #fff!important;text-decoration:none;outline-style:none;z-index:99;color:#bbb!important;background:#f5f5f5!important;line-height:10px}.sw-theme-circles>ul.step-anchor>li>a:hover{color:#bbb!important;background:#f5f5f5;border-width:2px}.sw-theme-circles>ul.step-anchor>li>a>small{position:relative;bottom:-53px;color:#ccc;line-height:15px}.sw-theme-circles>ul.step-anchor>li.clickable>a:hover{color:#4285f4!important}.sw-theme-circles>ul.step-anchor>li.active>a{border-color:#5bc0de!important;color:#fff!important;background:#5bc0de!important;transition:background-color .1s .2s}.sw-theme-circles>ul.step-anchor>li.active>a>small{color:#5bc0de}.sw-theme-circles>ul.step-anchor>li.done>a{border-color:#5cb85c!important;color:#fff!important;background:#5cb85c!important}.sw-theme-circles>ul.step-anchor>li.done>a>small{color:#5cb85c}.sw-theme-circles>ul.step-anchor>li.danger>a{border-color:#d9534f;color:#d9534f;background:#fff}.sw-theme-circles>ul.step-anchor>li.danger>a>small{color:#d9534f}.sw-theme-circles>ul.step-anchor>li.disabled>a,.sw-theme-circles>ul.step-anchor>li.disabled>a:hover{color:#eee!important}
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_circles.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */
12 |
13 | /* SmartWizard Theme: Circles */
14 | .sw-theme-circles {
15 | font-family: 'Montserrat', sans-serif !important;
16 | }
17 |
18 | .sw-theme-circles .sw-container {
19 | min-height: 300px;
20 | }
21 |
22 |
23 | .sw-theme-circles .fields_container .tabular-row {
24 | margin-top: 10px;
25 | border-top: 1px solid #c8c8c8;
26 | padding: 5px;
27 | width: 80%;
28 | }
29 |
30 | .sw-theme-circles .field-heading {
31 | border-bottom: 1px solid rgb(161, 161, 161);
32 | margin-bottom: 31px;
33 | font-size: 1.3em;
34 | }
35 |
36 | .justify-content-end {
37 | -ms-flex-pack: end !important;
38 | justify-content: flex-end !important;
39 | display: flex;
40 | }
41 |
42 | .sw-main .tabular-row i.remove-row {
43 | float: right;
44 | clear: both;
45 | color: #d9534f;
46 | cursor: pointer;
47 | }
48 |
49 | .sw-theme-circles .step-content {
50 | padding: 10px 0;
51 | background-color: #FFF;
52 | text-align: left;
53 | }
54 |
55 | .sw-theme-circles .sw-toolbar {
56 | background: #fff;
57 | padding-left: 10px;
58 | padding-right: 10px;
59 | margin-bottom: 0 !important;
60 | }
61 |
62 | .sw-theme-circles .sw-toolbar-top {}
63 |
64 | .sw-theme-circles .sw-toolbar-bottom {
65 | border-top-color: #ddd !important;
66 | border-bottom-color: #ddd !important;
67 | }
68 |
69 | .sw-theme-circles>ul.step-anchor {
70 | position: relative;
71 | background: #fff !important;
72 | border: none;
73 | list-style: none;
74 | margin-bottom: 60px;
75 | }
76 |
77 | .sw-theme-circles>ul.step-anchor:before {
78 | content: " ";
79 | position: absolute;
80 | top: 50%;
81 | bottom: 0;
82 | width: 100%;
83 | height: 5px;
84 | background-color: #f5f5f5;
85 | border-radius: 3px;
86 | z-index: 0;
87 | }
88 |
89 | .sw-theme-circles>ul.step-anchor>li {
90 | border: none;
91 | margin-left: 40px;
92 | z-index: 98;
93 | }
94 |
95 | .sw-theme-circles>ul.step-anchor>li>a {
96 | border: 2px solid #f5f5f5;
97 | width: 105px;
98 | height: 105px;
99 | text-align: center;
100 | padding: 53px 0;
101 | border-radius: 50%;
102 | -webkit-box-shadow: inset 0px 0px 0px 3px #fff !important;
103 | box-shadow: inset 0px 0px 0px 3px #fff !important;
104 | text-decoration: none;
105 | outline-style: none;
106 | z-index: 99;
107 | color: #bbb !important;
108 | background: #f5f5f5 !important;
109 | line-height: 10px;
110 | }
111 |
112 | .sw-theme-circles>ul.step-anchor>li>a:hover {
113 | color: #bbb !important;
114 | background: #f5f5f5;
115 | border-width: 2px;
116 | }
117 |
118 | .sw-theme-circles>ul.step-anchor>li>a>small {
119 | position: relative;
120 | bottom: -53px;
121 | color: #ccc;
122 | line-height: 15px;
123 | }
124 |
125 | .sw-theme-circles>ul.step-anchor>li.clickable>a:hover {
126 | color: #4285F4 !important;
127 | }
128 |
129 | .sw-theme-circles>ul.step-anchor>li.active>a {
130 | border-color: #5bc0de !important;
131 | color: #fff !important;
132 | background: #5bc0de !important;
133 | transition: background-color .1s .2s;
134 | }
135 |
136 | .sw-theme-circles>ul.step-anchor>li.active>a>small {
137 | color: #5bc0de;
138 |
139 | }
140 |
141 | .sw-theme-circles>ul.step-anchor>li.done>a {
142 | border-color: #5cb85c !important;
143 | color: #fff !important;
144 | background: #5cb85c !important;
145 | }
146 |
147 | .sw-theme-circles>ul.step-anchor>li.done>a>small {
148 | color: #5cb85c;
149 | }
150 |
151 | .sw-theme-circles>ul.step-anchor>li.danger>a {
152 | border-color: #d9534f;
153 | color: #d9534f;
154 | background: #fff;
155 | }
156 |
157 | .sw-theme-circles>ul.step-anchor>li.danger>a>small {
158 | color: #d9534f;
159 | }
160 |
161 | .sw-theme-circles>ul.step-anchor>li.disabled>a,
162 | .sw-theme-circles>ul.step-anchor>li.disabled>a:hover {
163 | color: #eee !important;
164 | }
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_dots.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */
12 |
13 | /* SmartWizard Theme: Dots */
14 | .sw-theme-dots {
15 | font-family: 'Montserrat', sans-serif !important;
16 | }
17 |
18 | .sw-theme-dots .sw-container {
19 | min-height: 300px;
20 | }
21 |
22 | .justify-content-end {
23 | -ms-flex-pack: end !important;
24 | justify-content: flex-end !important;
25 | display: flex;
26 | }
27 |
28 | .sw-theme-dots .fields_container .tabular-row {
29 | margin-top: 10px;
30 | border-top: 1px solid #c8c8c8;
31 | padding: 5px;
32 | width: 80%;
33 | }
34 |
35 | .sw-theme-dots .field-heading {
36 | border-bottom: 1px solid rgb(161, 161, 161);
37 | margin-bottom: 31px;
38 | font-size: 1.3em;
39 | }
40 |
41 | .sw-main .tabular-row i.remove-row {
42 | float: right;
43 | clear: both;
44 | color: #d9534f;
45 | cursor: pointer;
46 | }
47 |
48 | .sw-theme-dots .step-content {
49 | padding: 10px 0;
50 | border: none;
51 | background-color: #FFF;
52 | text-align: left;
53 | }
54 |
55 | .sw-theme-dots .sw-toolbar {
56 | background: #fff;
57 | border-radius: 0 !important;
58 | padding-left: 10px;
59 | padding-right: 10px;
60 | margin-bottom: 0 !important;
61 | }
62 |
63 | .sw-theme-dots .sw-toolbar-top {
64 | border-bottom-color: #ddd !important;
65 | }
66 |
67 | .sw-theme-dots .sw-toolbar-bottom {
68 | border-top-color: #ddd !important;
69 | border-bottom-color: #ddd !important;
70 | }
71 |
72 | .sw-theme-dots>ul.step-anchor {
73 | position: relative;
74 | background: #fff !important;
75 | border: 0px solid #ccc !important;
76 | list-style: none;
77 | margin-bottom: 40px;
78 | }
79 |
80 | .sw-theme-dots>ul.step-anchor:before {
81 | content: " ";
82 | position: absolute;
83 | top: 70px;
84 | bottom: 0;
85 | width: 100%;
86 | height: 5px;
87 | background-color: #f5f5f5;
88 | border-radius: 3px;
89 | z-order: 0;
90 | z-index: 95;
91 | }
92 |
93 | .sw-theme-dots>ul.step-anchor>li {
94 | border: none;
95 | }
96 |
97 | /* Anchors styles */
98 | .sw-theme-dots>ul.step-anchor>li>a {
99 | position: relative;
100 | text-align: center;
101 | font-weight: bold;
102 | background: transparent;
103 | border: none !important;
104 | color: #ccc !important;
105 | text-decoration: none;
106 | outline-style: none;
107 | z-index: 96;
108 | display: block;
109 | }
110 |
111 | .sw-theme-dots>ul.step-anchor>li>a:before {
112 | content: ' ';
113 | position: absolute;
114 | bottom: 2px;
115 | left: 40%;
116 | margin-top: 10px;
117 | display: block;
118 | border-radius: 50%;
119 | color: #428bca;
120 | background: #f5f5f5;
121 | border: none;
122 | width: 30px;
123 | height: 30px;
124 | text-decoration: none;
125 | z-index: 98;
126 | }
127 |
128 | .sw-theme-dots>ul.step-anchor>li>a:after {
129 | content: ' ';
130 | position: relative;
131 | left: 44%;
132 | bottom: 2px;
133 | margin-top: 10px;
134 | display: block;
135 | width: 15px;
136 | height: 15px;
137 | background: #f5f5f5;
138 | border-radius: 50%;
139 | z-index: 99;
140 | }
141 |
142 | .sw-theme-dots>ul.step-anchor>li>a:hover {
143 | color: #ccc;
144 | background: transparent;
145 | }
146 |
147 | .sw-theme-dots>ul.step-anchor>li>a:focus {
148 | color: #ccc;
149 | border: none;
150 | }
151 |
152 | .sw-theme-dots>ul.step-anchor>li.clickable>a:hover {
153 | color: #999;
154 | }
155 |
156 | /* Active anchors */
157 | .sw-theme-dots>ul.step-anchor>li.active>a {
158 | color: #5bc0de !important;
159 | }
160 |
161 | .sw-theme-dots>ul.step-anchor>li.active>a:hover {
162 | border: none;
163 | }
164 |
165 | .sw-theme-dots>ul.step-anchor>li.active>a:after {
166 | background: #5bc0de;
167 | top: -2px;
168 | left: 45%;
169 | }
170 |
171 | /* Done anchors */
172 | .sw-theme-dots>ul.step-anchor>li.done>a {
173 | color: #5cb85c !important;
174 | }
175 |
176 | .sw-theme-dots>ul.step-anchor>li.done>a:after {
177 | background: #5cb85c;
178 | }
179 |
180 | /* Danger anchors */
181 | .sw-theme-dots>ul.step-anchor>li.danger>a {
182 | color: #d9534f;
183 | }
184 |
185 | .sw-theme-dots>ul.step-anchor>li.danger>a:after {
186 | background: #d9534f;
187 | }
188 |
189 | .sw-theme-dots>ul.step-anchor>li.disabled>a,
190 | .sw-theme-dots>ul.step-anchor>li.disabled>a:hover {
191 | color: #eee !important;
192 | }
193 |
194 | .sw-theme-dots>ul.step-anchor>li.disabled>a:after {
195 | background: #eee;
196 | }
197 |
198 | /* Responsive CSS */
199 | @media screen and (max-width: 768px) {
200 | .sw-theme-dots>ul.step-anchor:before {
201 | top: 0;
202 | bottom: 0;
203 | left: 10px;
204 | width: 5px;
205 | height: 100%;
206 | background-color: #f5f5f5;
207 | display: block;
208 | margin-right: 10px;
209 | }
210 |
211 | .sw-theme-dots>ul.step-anchor>li {
212 | margin-left: 20px;
213 | display: block;
214 | clear: both;
215 | }
216 |
217 | .sw-theme-dots>ul.step-anchor>li>a {
218 | text-align: left;
219 | margin-left: 0;
220 | display: block;
221 | }
222 |
223 | .sw-theme-dots>ul.step-anchor>li>a:before {
224 | top: 5px;
225 | left: -23px;
226 | margin-right: 10px;
227 | display: block;
228 | }
229 |
230 | .sw-theme-dots>ul.step-anchor>li>a:after {
231 | top: -38px;
232 | left: -31px;
233 | margin-right: 10px;
234 | display: block;
235 | }
236 | }
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_dots.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */.sw-theme-dots{font-family:Montserrat,sans-serif!important}.sw-theme-dots .sw-container{min-height:300px}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important;display:flex}.sw-theme-dots .fields_container .tabular-row{margin-top:10px;border-top:1px solid #c8c8c8;padding:5px;width:80%}.sw-theme-dots .field-heading{border-bottom:1px solid #a1a1a1;margin-bottom:31px;font-size:1.3em}.sw-main .tabular-row i.remove-row{float:right;clear:both;color:#d9534f;cursor:pointer}.sw-theme-dots .step-content{padding:10px 0;border:none;background-color:#fff;text-align:left}.sw-theme-dots .sw-toolbar{background:#fff;border-radius:0!important;padding-left:10px;padding-right:10px;margin-bottom:0!important}.sw-theme-dots .sw-toolbar-top{border-bottom-color:#ddd!important}.sw-theme-dots .sw-toolbar-bottom{border-top-color:#ddd!important;border-bottom-color:#ddd!important}.sw-theme-dots>ul.step-anchor{position:relative;background:#fff!important;border:0 solid #ccc!important;list-style:none;margin-bottom:40px}.sw-theme-dots>ul.step-anchor:before{content:" ";position:absolute;top:70px;bottom:0;width:100%;height:5px;background-color:#f5f5f5;border-radius:3px;z-order:0;z-index:95}.sw-theme-dots>ul.step-anchor>li{border:none}.sw-theme-dots>ul.step-anchor>li>a{position:relative;text-align:center;font-weight:700;background:0 0;border:none!important;color:#ccc!important;text-decoration:none;outline-style:none;z-index:96;display:block}.sw-theme-dots>ul.step-anchor>li>a:before{content:' ';position:absolute;bottom:2px;left:40%;margin-top:10px;display:block;border-radius:50%;color:#428bca;background:#f5f5f5;border:none;width:30px;height:30px;text-decoration:none;z-index:98}.sw-theme-dots>ul.step-anchor>li>a:after{content:' ';position:relative;left:44%;bottom:2px;margin-top:10px;display:block;width:15px;height:15px;background:#f5f5f5;border-radius:50%;z-index:99}.sw-theme-dots>ul.step-anchor>li>a:hover{color:#ccc;background:0 0}.sw-theme-dots>ul.step-anchor>li>a:focus{color:#ccc;border:none}.sw-theme-dots>ul.step-anchor>li.clickable>a:hover{color:#999}.sw-theme-dots>ul.step-anchor>li.active>a{color:#5bc0de!important}.sw-theme-dots>ul.step-anchor>li.active>a:hover{border:none}.sw-theme-dots>ul.step-anchor>li.active>a:after{background:#5bc0de;top:-2px;left:45%}.sw-theme-dots>ul.step-anchor>li.done>a{color:#5cb85c!important}.sw-theme-dots>ul.step-anchor>li.done>a:after{background:#5cb85c}.sw-theme-dots>ul.step-anchor>li.danger>a{color:#d9534f}.sw-theme-dots>ul.step-anchor>li.danger>a:after{background:#d9534f}.sw-theme-dots>ul.step-anchor>li.disabled>a,.sw-theme-dots>ul.step-anchor>li.disabled>a:hover{color:#eee!important}.sw-theme-dots>ul.step-anchor>li.disabled>a:after{background:#eee}@media screen and (max-width:768px){.sw-theme-dots>ul.step-anchor:before{top:0;bottom:0;left:10px;width:5px;height:100%;background-color:#f5f5f5;display:block;margin-right:10px}.sw-theme-dots>ul.step-anchor>li{margin-left:20px;display:block;clear:both}.sw-theme-dots>ul.step-anchor>li>a{text-align:left;margin-left:0;display:block}.sw-theme-dots>ul.step-anchor>li>a:before{top:5px;left:-23px;margin-right:10px;display:block}.sw-theme-dots>ul.step-anchor>li>a:after{top:-38px;left:-31px;margin-right:10px;display:block}}
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_material-v.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */
12 |
13 | /* SmartWizard Theme: Dots */
14 | .sw-theme-material-v {
15 | font-family: "Montserrat", sans-serif !important;
16 | background: #fff;
17 | min-height: 50px;
18 | box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
19 | position: relative;
20 | margin-bottom: 30px;
21 | -webkit-border-radius: 2px;
22 | -moz-border-radius: 2px;
23 | -ms-border-radius: 2px;
24 | border-radius: 2px;
25 | float: left;
26 | clear: both;
27 | min-width: 96%;
28 | }
29 |
30 | .sw-theme-material-v .fields_container .tabular-row {
31 | margin-top: 10px;
32 | border-top: 1px solid #c8c8c8;
33 | padding: 5px;
34 | width: 80%;
35 | }
36 |
37 | .sw-theme-material-v .field-heading {
38 | border-bottom: 1px solid rgb(161, 161, 161);
39 | margin-bottom: 31px;
40 | font-size: 1.3em;
41 | }
42 |
43 | .sw-theme-material-v .formwizard_next,
44 | .sw-theme-material-v .formwizard_prev,
45 | .sw-theme-material-v .formwizard_finish {
46 | font-family: inherit !important;
47 | background-color: rgb(76, 117, 175) !important;
48 | }
49 |
50 | .justify-content-end {
51 | -ms-flex-pack: end !important;
52 | justify-content: flex-end !important;
53 | display: flex;
54 | }
55 |
56 | .sw-theme-material-v .step-anchor {
57 | border: 0px;
58 | background-color: #ffffff;
59 | }
60 |
61 | .sw-theme-material-v .sw-container {
62 | min-height: 300px;
63 | width: 73%;
64 | float: left;
65 | margin-left: 15px;
66 | }
67 |
68 | .sw-theme-material-v .sw-btn-group-extra {
69 | float: right !important;
70 | }
71 |
72 | .sw-main .tabular-row i.remove-row {
73 | float: right;
74 | clear: both;
75 | color: #d9534f;
76 | cursor: pointer;
77 | }
78 |
79 | .sw-theme-material-v .step-content {
80 | margin: 0;
81 | padding: 0;
82 | clear: both;
83 | width: 74%;
84 | font-size: 14px;
85 | color: #555;
86 | padding: 20px;
87 | }
88 |
89 | .sw-theme-material-v ul.step-anchor {
90 | list-style: none !important;
91 | padding: 0;
92 | margin: 0;
93 | float: left;
94 | width: 25%;
95 | clear: both;
96 | display: block;
97 | }
98 |
99 | .sw-theme-material-v ul.step-anchor li {
100 | float: none;
101 | display: block;
102 | padding: 0;
103 | box-shadow: 0 0px 1px rgba(0, 0, 0, 0.2);
104 | }
105 |
106 | .sw-theme-material-v .step-anchor a {
107 | -moz-transition: 0.5s;
108 | -o-transition: 0.5s;
109 | -webkit-transition: 0.5s;
110 | transition: 0.5s;
111 | display: block;
112 | width: auto;
113 | padding: 1em 1em;
114 | text-decoration: none;
115 | border: 0px !important;
116 | box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
117 | background: #eee;
118 | color: #aaa !important;
119 | cursor: default;
120 | border-radius: 0px;
121 | }
122 |
123 | .sw-theme-material-v ul.step-anchor>li.active a {
124 | background-color: rgb(76, 117, 175) !important;
125 | color: #fff !important;
126 | cursor: default;
127 | padding: 20px 30px 20px 10px;
128 | }
129 |
130 | .sw-theme-material-v ul.step-anchor li.done a {
131 | background-color: #00ac4899;
132 | color: #fff !important;
133 | }
134 |
135 | .sw-theme-material-v .sw-container .step-content {
136 | min-height: 245px;
137 | -webkit-border-radius: 0;
138 | -moz-border-radius: 0;
139 | -ms-border-radius: 0;
140 | border-radius: 0;
141 | overflow-y: auto;
142 | min-height: 35em;
143 | overflow: hidden;
144 | position: relative;
145 | width: auto;
146 | padding: 5px;
147 | border-top: 0px;
148 | }
149 |
150 | .sw-theme-material-v .sw-toolbar {
151 | padding: 5px;
152 | float: left;
153 | width: 73%;
154 | color: #555;
155 | padding: 10px 20px;
156 | position: relative;
157 | }
158 |
159 | .sw-theme-material-v .sw-toolbar button,
160 | .sw-theme-material-v .sw-toolbar input {
161 | border-radius: 0px;
162 | }
163 |
164 | .sw-theme-material-v .step-content h3 {
165 | font-size: 1.3em;
166 | }
167 |
168 | .sw-theme-material-v .step-content input {
169 | border-radius: 0px;
170 | }
171 |
172 | .sw-theme-material-v .step-content label {
173 | font-size: 12px;
174 | font-weight: normal;
175 | }
176 |
177 | /* Responsive CSS */
178 | @media screen and (max-width: 800px) {
179 |
180 | .sw-theme-material-v .step-anchor li a,
181 | .sw-theme-material-v .step-anchor li.active a {
182 | padding-right: 0px !important;
183 | }
184 | }
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_material-v.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */.sw-theme-material-v{font-family:Montserrat,sans-serif!important;background:#fff;min-height:50px;box-shadow:0 2px 10px rgba(0,0,0,.2);position:relative;margin-bottom:30px;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;float:left;clear:both;min-width:96%}.sw-theme-material-v .fields_container .tabular-row{margin-top:10px;border-top:1px solid #c8c8c8;padding:5px;width:80%}.sw-theme-material-v .field-heading{border-bottom:1px solid #a1a1a1;margin-bottom:31px;font-size:1.3em}.sw-theme-material-v .formwizard_finish,.sw-theme-material-v .formwizard_next,.sw-theme-material-v .formwizard_prev{font-family:inherit!important;background-color:#4c75af!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important;display:flex}.sw-theme-material-v .step-anchor{border:0;background-color:#fff}.sw-theme-material-v .sw-container{min-height:300px;width:73%;float:left;margin-left:15px}.sw-theme-material-v .sw-btn-group-extra{float:right!important}.sw-main .tabular-row i.remove-row{float:right;clear:both;color:#d9534f;cursor:pointer}.sw-theme-material-v .step-content{margin:0;padding:0;clear:both;width:74%;font-size:14px;color:#555;padding:20px}.sw-theme-material-v ul.step-anchor{list-style:none!important;padding:0;margin:0;float:left;width:25%;clear:both;display:block}.sw-theme-material-v ul.step-anchor li{float:none;display:block;padding:0;box-shadow:0 0 1px rgba(0,0,0,.2)}.sw-theme-material-v .step-anchor a{-moz-transition:.5s;-o-transition:.5s;-webkit-transition:.5s;transition:.5s;display:block;width:auto;padding:1em 1em;text-decoration:none;border:0!important;box-shadow:0 2px 10px rgba(0,0,0,.2);background:#eee;color:#aaa!important;cursor:default;border-radius:0}.sw-theme-material-v ul.step-anchor>li.active a{background-color:#4c75af!important;color:#fff!important;cursor:default;padding:20px 30px 20px 10px}.sw-theme-material-v ul.step-anchor li.done a{background-color:#00ac4899;color:#fff!important}.sw-theme-material-v .sw-container .step-content{min-height:245px;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;border-radius:0;overflow-y:auto;min-height:35em;overflow:hidden;position:relative;width:auto;padding:5px;border-top:0}.sw-theme-material-v .sw-toolbar{padding:5px;float:left;width:73%;color:#555;padding:10px 20px;position:relative}.sw-theme-material-v .sw-toolbar button,.sw-theme-material-v .sw-toolbar input{border-radius:0}.sw-theme-material-v .step-content h3{font-size:1.3em}.sw-theme-material-v .step-content input{border-radius:0}.sw-theme-material-v .step-content label{font-size:12px;font-weight:400}@media screen and (max-width:800px){.sw-theme-material-v .step-anchor li a,.sw-theme-material-v .step-anchor li.active a{padding-right:0!important}}
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_material.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */
12 |
13 | /* SmartWizard Theme: Dots */
14 | .sw-theme-material {
15 | font-family: "Montserrat", sans-serif !important;
16 | background: #fff;
17 | min-height: 50px;
18 | box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
19 | position: relative;
20 | margin-bottom: 30px;
21 | -webkit-border-radius: 2px;
22 | -moz-border-radius: 2px;
23 | -ms-border-radius: 2px;
24 | border-radius: 2px;
25 | /* float: left; */
26 | /* clear: both; */
27 | min-width: 96%;
28 | }
29 |
30 | .sw-theme-material .formwizard_next,
31 | .sw-theme-material .formwizard_prev,
32 | .sw-theme-material .formwizard_finish {
33 | font-family: inherit !important;
34 | background-color: teal;
35 | }
36 |
37 | .sw-theme-material .field-heading {
38 | border-bottom: 1px solid rgb(161, 161, 161);
39 | margin-bottom: 31px;
40 | font-size: 1.3em;
41 | }
42 |
43 | .sw-theme-material .fields_container .tabular-row {
44 | margin-top: 10px;
45 | border-top: 1px solid #c8c8c8;
46 | padding: 5px;
47 | width: 80%;
48 | }
49 |
50 | .sw-theme-material .step-anchor {
51 | border: 0px;
52 | background-color: #f5f5f5;
53 | }
54 |
55 | .sw-theme-material .sw-container {
56 | min-height: 300px;
57 | }
58 |
59 | .sw-theme-material .step-content {
60 | padding: 10px 0;
61 | border: none;
62 | background-color: #fff;
63 | text-align: left;
64 | }
65 |
66 | .sw-theme-material ul.step-anchor {
67 | list-style: none !important;
68 | padding: 0;
69 | margin: 0;
70 | }
71 |
72 | .sw-theme-material ul.step-anchor li {
73 | float: left;
74 | display: block;
75 | padding: 0;
76 | box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
77 | }
78 |
79 | .justify-content-end {
80 | -ms-flex-pack: end !important;
81 | justify-content: flex-end !important;
82 | display: flex;
83 | }
84 |
85 | .sw-theme-material .step-anchor a {
86 | -moz-transition: 0.5s;
87 | -o-transition: 0.5s;
88 | -webkit-transition: 0.5s;
89 | transition: 0.5s;
90 | display: block;
91 | width: auto;
92 | padding: 1em 1em;
93 | text-decoration: none;
94 | border: 0px;
95 | }
96 |
97 | .sw-theme-material ul.step-anchor>li a {
98 | background: #eee !important;
99 | color: #aaa !important;
100 | cursor: default;
101 | border-radius: 0px !important;
102 | }
103 |
104 | .sw-theme-material ul.step-anchor>li.active a {
105 | background-color: #009688 !important;
106 | color: #fff !important;
107 | cursor: default;
108 | padding: 1em 3em;
109 | }
110 |
111 | .sw-theme-material ul.step-anchor li.done a {
112 | background-color: rgba(92, 184, 92, 0.6);
113 | color: #fff;
114 | }
115 |
116 | .sw-main .tabular-row i.remove-row {
117 | float: right;
118 | clear: both;
119 | color: #d9534f;
120 | cursor: pointer;
121 | }
122 |
123 | .sw-theme-material .sw-container .step-content {
124 | -webkit-border-radius: 0;
125 | -moz-border-radius: 0;
126 | -ms-border-radius: 0;
127 | border-radius: 0;
128 | overflow-y: auto;
129 | border: 1px solid #ddd;
130 | min-height: 35em;
131 | overflow: hidden;
132 | position: relative;
133 | width: auto;
134 | border-top: 0px;
135 | font-size: 14px;
136 | color: #555;
137 | padding: 20px;
138 | }
139 |
140 | .sw-theme-material .sw-toolbar {
141 | padding: 5px;
142 | border: 1px solid #ddd;
143 | color: #555;
144 | padding: 20px;
145 | position: relative;
146 | border-bottom: 1px solid rgba(204, 204, 204, 0.35);
147 | }
148 |
149 | .sw-theme-material .sw-toolbar button,
150 | .sw-theme-material .sw-toolbar input {
151 | border-radius: 0px;
152 | }
153 |
154 | .sw-theme-material .step-content h3 {
155 | font-size: 1.3em;
156 | }
157 |
158 | .sw-theme-material .step-content input {
159 | border-radius: 0px;
160 | }
161 |
162 | .sw-theme-material .step-content label {
163 | font-size: 12px;
164 | font-weight: normal;
165 | }
166 |
167 | /* Responsive CSS */
168 | @media screen and (max-width: 768px) {}
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_material.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */.sw-theme-material{font-family:Montserrat,sans-serif!important;background:#fff;min-height:50px;box-shadow:0 2px 10px rgba(0,0,0,.2);position:relative;margin-bottom:30px;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;min-width:96%}.sw-theme-material .formwizard_finish,.sw-theme-material .formwizard_next,.sw-theme-material .formwizard_prev{font-family:inherit!important;background-color:teal}.sw-theme-material .field-heading{border-bottom:1px solid #a1a1a1;margin-bottom:31px;font-size:1.3em}.sw-theme-material .fields_container .tabular-row{margin-top:10px;border-top:1px solid #c8c8c8;padding:5px;width:80%}.sw-theme-material .step-anchor{border:0;background-color:#f5f5f5}.sw-theme-material .sw-container{min-height:300px}.sw-theme-material .step-content{padding:10px 0;border:none;background-color:#fff;text-align:left}.sw-theme-material ul.step-anchor{list-style:none!important;padding:0;margin:0}.sw-theme-material ul.step-anchor li{float:left;display:block;padding:0;box-shadow:0 2px 10px rgba(0,0,0,.2)}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important;display:flex}.sw-theme-material .step-anchor a{-moz-transition:.5s;-o-transition:.5s;-webkit-transition:.5s;transition:.5s;display:block;width:auto;padding:1em 1em;text-decoration:none;border:0}.sw-theme-material ul.step-anchor>li a{background:#eee!important;color:#aaa!important;cursor:default;border-radius:0!important}.sw-theme-material ul.step-anchor>li.active a{background-color:#009688!important;color:#fff!important;cursor:default;padding:1em 3em}.sw-theme-material ul.step-anchor li.done a{background-color:rgba(92,184,92,.6);color:#fff}.sw-main .tabular-row i.remove-row{float:right;clear:both;color:#d9534f;cursor:pointer}.sw-theme-material .sw-container .step-content{-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;border-radius:0;overflow-y:auto;border:1px solid #ddd;min-height:35em;overflow:hidden;position:relative;width:auto;border-top:0;font-size:14px;color:#555;padding:20px}.sw-theme-material .sw-toolbar{padding:5px;border:1px solid #ddd;color:#555;padding:20px;position:relative;border-bottom:1px solid rgba(204,204,204,.35)}.sw-theme-material .sw-toolbar button,.sw-theme-material .sw-toolbar input{border-radius:0}.sw-theme-material .step-content h3{font-size:1.3em}.sw-theme-material .step-content input{border-radius:0}.sw-theme-material .step-content label{font-size:12px;font-weight:400}
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_tags.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */
12 |
13 | /* SmartWizard Theme: Dots */
14 | .sw-theme-tags {
15 | font-family: "Montserrat", sans-serif !important;
16 | background: #fff;
17 | min-height: 50px;
18 | position: relative;
19 | margin-bottom: 30px;
20 | -webkit-border-radius: 2px;
21 | -moz-border-radius: 2px;
22 | -ms-border-radius: 2px;
23 | border-radius: 2px;
24 | min-width: 96%;
25 | }
26 |
27 |
28 | .sw-theme-tags .fields_container .tabular-row {
29 | margin-top: 10px;
30 | border-top: 1px solid #c8c8c8;
31 | padding: 5px;
32 | width: 80%;
33 | }
34 |
35 | .sw-theme-tags .field-heading {
36 | border-bottom: 1px solid rgb(161, 161, 161);
37 | margin-bottom: 31px;
38 | font-size: 1.3em;
39 | }
40 |
41 | .sw-theme-tags .formwizard_next,
42 | .sw-theme-tags .formwizard_prev,
43 | .sw-theme-tags .formwizard_finish {
44 | font-family: inherit !important;
45 | background-color: rgb(76, 117, 175) !important;
46 | }
47 |
48 | .sw-theme-tags .formwizard_next,
49 | .sw-theme-tags .formwizard_finish {
50 | -webkit-clip-path: polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%);
51 | clip-path: polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%);
52 | }
53 |
54 | .sw-theme-tags .formwizard_prev {
55 | -webkit-clip-path: polygon(25% 0%, 100% 1%, 100% 100%, 25% 100%, 0% 50%);
56 | clip-path: polygon(25% 0%, 100% 1%, 100% 100%, 25% 100%, 0% 50%);
57 | }
58 |
59 | .justify-content-end {
60 | -ms-flex-pack: end !important;
61 | justify-content: flex-end !important;
62 | display: flex;
63 | }
64 |
65 | .sw-theme-tags .step-anchor {
66 | border: 0px;
67 | background-color: #ffffff;
68 | }
69 |
70 | .sw-theme-tags .sw-container {
71 | min-height: 300px;
72 | box-shadow: 0px 0px 5px 1px #ccc;
73 |
74 | top: 0;
75 | z-index: 10;
76 | background: #fff;
77 | border-radius: 2px;
78 | }
79 |
80 | .sw-theme-tags .sw-btn-group-extra {
81 | float: right !important;
82 | }
83 |
84 | .sw-main .tabular-row i.remove-row {
85 | float: right;
86 | clear: both;
87 | color: #d9534f;
88 | cursor: pointer;
89 | }
90 |
91 | .sw-theme-tags .step-content {
92 | margin: 0;
93 | padding: 0;
94 | clear: both;
95 | width: 74%;
96 | font-size: 14px;
97 | color: #555;
98 | padding: 20px;
99 | }
100 |
101 | .sw-theme-tags ul.step-anchor {
102 | list-style: none !important;
103 | padding: 0;
104 | margin: 0;
105 | width: 25%;
106 | display: block;
107 | position: absolute;
108 | }
109 |
110 | .sw-theme-tags ul.step-anchor li {
111 | float: none;
112 | display: block;
113 | padding: 0;
114 | transition: 1s;
115 | left: 0;
116 | }
117 |
118 | .sw-theme-tags ul.step-anchor li.done,.sw-theme-tags li.nav-item.edit {
119 | left: -65%;
120 | }
121 |
122 | .sw-theme-tags li.nav-item.active {
123 | left: -90%;
124 | }
125 |
126 | .sw-theme-tags .step-anchor a {
127 | -moz-transition: 0.5s;
128 | -o-transition: 0.5s;
129 | -webkit-transition: 0.5s;
130 | transition: 0.5s;
131 | display: block;
132 | width: auto;
133 | padding: 15px 73px;
134 | text-decoration: none;
135 | border: 0px !important;
136 | box-shadow: 0 2px 10px rgb(0, 0, 0);
137 | background: #eee;
138 | color: #aaa !important;
139 | cursor: default;
140 | cursor: pointer;
141 | border-radius: 0;
142 | /* border-top-left-radius: 37px; */
143 | -webkit-clip-path: polygon(25% 0%, 100% 0%, 100% 100%, 25% 100%, 10% 50%);
144 | clip-path: polygon(25% 0%, 100% 0%, 100% 100%, 25% 100%, 10% 50%);
145 | white-space: nowrap;
146 | }
147 |
148 | .sw-theme-tags .step-anchor a:hover,
149 | .sw-theme-tags .step-anchor a:focus {
150 | color: inherit !important;
151 |
152 | }
153 |
154 | .sw-theme-tags ul.step-anchor>li.active a {
155 | background-color: rgb(76, 158, 175) !important;
156 | color: #fff !important;
157 | cursor: default;
158 | /* padding: 20px 30px 20px 10px; */
159 | }
160 |
161 | .sw-theme-tags ul.step-anchor li.done a {
162 | background-color: #00ac4899;
163 | color: #fff !important;
164 | -webkit-clip-path: polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%);
165 | clip-path: polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%);
166 | padding: 15px 9px;
167 | }
168 |
169 | .sw-theme-tags .sw-container .step-content {
170 | min-height: 245px;
171 | -webkit-border-radius: 0;
172 | -moz-border-radius: 0;
173 | -ms-border-radius: 0;
174 | border-radius: 0;
175 | overflow-y: auto;
176 | min-height: 35em;
177 | overflow: hidden;
178 | position: relative;
179 | width: auto;
180 | padding: 45px;
181 | border-top: 0px;
182 | }
183 |
184 | .sw-theme-tags .sw-toolbar {
185 | width: 100%;
186 | color: #555;
187 | position: absolute;
188 | z-index: 99;
189 |
190 | }
191 |
192 | .sw-theme-tags .sw-toolbar button,
193 | .sw-theme-tags .sw-toolbar input {
194 | border-radius: 0px;
195 | }
196 |
197 | .sw-theme-tags .step-content h3 {
198 | font-size: 1.3em;
199 | }
200 |
201 | .sw-theme-tags .step-content input {
202 | border-radius: 0px;
203 | }
204 |
205 | .sw-theme-tags .step-content label {
206 | font-size: 12px;
207 | font-weight: normal;
208 | }
209 |
210 |
211 |
212 | /* Responsive CSS */
213 | @media screen and (max-width: 800px) {
214 |
215 | .sw-theme-tags .step-anchor li a,
216 | .sw-theme-tags .step-anchor li.active a {
217 | padding-right: 0px !important;
218 | }
219 | }
--------------------------------------------------------------------------------
/src/assets/css/theme/smart_wizard_theme_tags.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Yii2-formwizard
3 | * jQuery Wizard Plugin
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */.sw-theme-tags{font-family:Montserrat,sans-serif!important;background:#fff;min-height:50px;position:relative;margin-bottom:30px;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;min-width:96%}.sw-theme-tags .fields_container .tabular-row{margin-top:10px;border-top:1px solid #c8c8c8;padding:5px;width:80%}.sw-theme-tags .field-heading{border-bottom:1px solid #a1a1a1;margin-bottom:31px;font-size:1.3em}.sw-theme-tags .formwizard_finish,.sw-theme-tags .formwizard_next,.sw-theme-tags .formwizard_prev{font-family:inherit!important;background-color:#4c75af!important}.sw-theme-tags .formwizard_finish,.sw-theme-tags .formwizard_next{-webkit-clip-path:polygon(0 0,75% 0,100% 50%,75% 100%,0 100%);clip-path:polygon(0 0,75% 0,100% 50%,75% 100%,0 100%)}.sw-theme-tags .formwizard_prev{-webkit-clip-path:polygon(25% 0,100% 1%,100% 100%,25% 100%,0 50%);clip-path:polygon(25% 0,100% 1%,100% 100%,25% 100%,0 50%)}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important;display:flex}.sw-theme-tags .step-anchor{border:0;background-color:#fff}.sw-theme-tags .sw-container{min-height:300px;box-shadow:0 0 5px 1px #ccc;top:0;z-index:10;background:#fff;border-radius:2px}.sw-theme-tags .sw-btn-group-extra{float:right!important}.sw-main .tabular-row i.remove-row{float:right;clear:both;color:#d9534f;cursor:pointer}.sw-theme-tags .step-content{margin:0;padding:0;clear:both;width:74%;font-size:14px;color:#555;padding:20px}.sw-theme-tags ul.step-anchor{list-style:none!important;padding:0;margin:0;width:25%;display:block;position:absolute}.sw-theme-tags ul.step-anchor li{float:none;display:block;padding:0;transition:1s;left:0}.sw-theme-tags li.nav-item.edit,.sw-theme-tags ul.step-anchor li.done{left:-65%}.sw-theme-tags li.nav-item.active{left:-90%}.sw-theme-tags .step-anchor a{-moz-transition:.5s;-o-transition:.5s;-webkit-transition:.5s;transition:.5s;display:block;width:auto;padding:15px 73px;text-decoration:none;border:0!important;box-shadow:0 2px 10px #000;background:#eee;color:#aaa!important;cursor:default;cursor:pointer;border-radius:0;-webkit-clip-path:polygon(25% 0,100% 0,100% 100%,25% 100%,10% 50%);clip-path:polygon(25% 0,100% 0,100% 100%,25% 100%,10% 50%);white-space:nowrap}.sw-theme-tags .step-anchor a:focus,.sw-theme-tags .step-anchor a:hover{color:inherit!important}.sw-theme-tags ul.step-anchor>li.active a{background-color:#4c9eaf!important;color:#fff!important;cursor:default}.sw-theme-tags ul.step-anchor li.done a{background-color:#00ac4899;color:#fff!important;-webkit-clip-path:polygon(0 0,75% 0,100% 50%,75% 100%,0 100%);clip-path:polygon(0 0,75% 0,100% 50%,75% 100%,0 100%);padding:15px 9px}.sw-theme-tags .sw-container .step-content{min-height:245px;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;border-radius:0;overflow-y:auto;min-height:35em;overflow:hidden;position:relative;width:auto;padding:45px;border-top:0}.sw-theme-tags .sw-toolbar{width:100%;color:#555;position:absolute;z-index:99}.sw-theme-tags .sw-toolbar button,.sw-theme-tags .sw-toolbar input{border-radius:0}.sw-theme-tags .step-content h3{font-size:1.3em}.sw-theme-tags .step-content input{border-radius:0}.sw-theme-tags .step-content label{font-size:12px;font-weight:400}@media screen and (max-width:800px){.sw-theme-tags .step-anchor li a,.sw-theme-tags .step-anchor li.active a{padding-right:0!important}}
--------------------------------------------------------------------------------
/src/assets/css/theme/waves.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Waves v0.7.5
3 | * http://fian.my.id/Waves
4 | *
5 | * Copyright 2014-2016 Alfiana E. Sibuea and other contributors
6 | * Released under the MIT license
7 | * https://github.com/fians/Waves/blob/master/LICENSE
8 | */
9 | .waves-effect {
10 | position: relative;
11 | cursor: pointer;
12 | display: inline-block;
13 | overflow: hidden;
14 | -webkit-user-select: none;
15 | -moz-user-select: none;
16 | -ms-user-select: none;
17 | user-select: none;
18 | -webkit-tap-highlight-color: transparent;
19 | }
20 | .waves-effect .waves-ripple {
21 | position: absolute;
22 | border-radius: 50%;
23 | width: 100px;
24 | height: 100px;
25 | margin-top: -50px;
26 | margin-left: -50px;
27 | opacity: 0;
28 | background: rgba(0, 0, 0, 0.2);
29 | background: -webkit-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%);
30 | background: -o-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%);
31 | background: -moz-radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%);
32 | background: radial-gradient(rgba(0, 0, 0, 0.2) 0, rgba(0, 0, 0, 0.3) 40%, rgba(0, 0, 0, 0.4) 50%, rgba(0, 0, 0, 0.5) 60%, rgba(255, 255, 255, 0) 70%);
33 | -webkit-transition: all 0.5s ease-out;
34 | -moz-transition: all 0.5s ease-out;
35 | -o-transition: all 0.5s ease-out;
36 | transition: all 0.5s ease-out;
37 | -webkit-transition-property: -webkit-transform, opacity;
38 | -moz-transition-property: -moz-transform, opacity;
39 | -o-transition-property: -o-transform, opacity;
40 | transition-property: transform, opacity;
41 | -webkit-transform: scale(0) translate(0, 0);
42 | -moz-transform: scale(0) translate(0, 0);
43 | -ms-transform: scale(0) translate(0, 0);
44 | -o-transform: scale(0) translate(0, 0);
45 | transform: scale(0) translate(0, 0);
46 | pointer-events: none;
47 | }
48 | .waves-effect.waves-light .waves-ripple {
49 | background: rgba(255, 255, 255, 0.4);
50 | background: -webkit-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%);
51 | background: -o-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%);
52 | background: -moz-radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%);
53 | background: radial-gradient(rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.3) 40%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.5) 60%, rgba(255, 255, 255, 0) 70%);
54 | }
55 | .waves-effect.waves-classic .waves-ripple {
56 | background: rgba(0, 0, 0, 0.2);
57 | }
58 | .waves-effect.waves-classic.waves-light .waves-ripple {
59 | background: rgba(255, 255, 255, 0.4);
60 | }
61 | .waves-notransition {
62 | -webkit-transition: none !important;
63 | -moz-transition: none !important;
64 | -o-transition: none !important;
65 | transition: none !important;
66 | }
67 | .waves-button,
68 | .waves-circle {
69 | -webkit-transform: translateZ(0);
70 | -moz-transform: translateZ(0);
71 | -ms-transform: translateZ(0);
72 | -o-transform: translateZ(0);
73 | transform: translateZ(0);
74 | -webkit-mask-image: -webkit-radial-gradient(circle, #ffffff 100%, #000000 100%);
75 | }
76 | .waves-button,
77 | .waves-button:hover,
78 | .waves-button:visited,
79 | .waves-button-input {
80 | white-space: nowrap;
81 | vertical-align: middle;
82 | cursor: pointer;
83 | border: none;
84 | outline: none;
85 | color: inherit;
86 | background-color: rgba(0, 0, 0, 0);
87 | font-size: 1em;
88 | line-height: 1em;
89 | text-align: center;
90 | text-decoration: none;
91 | z-index: 1;
92 | }
93 | .waves-button {
94 | padding: 0.85em 1.1em;
95 | border-radius: 0.2em;
96 | }
97 | .waves-button-input {
98 | margin: 0;
99 | padding: 0.85em 1.1em;
100 | }
101 | .waves-input-wrapper {
102 | border-radius: 0.2em;
103 | vertical-align: bottom;
104 | }
105 | .waves-input-wrapper.waves-button {
106 | padding: 0;
107 | }
108 | .waves-input-wrapper .waves-button-input {
109 | position: relative;
110 | top: 0;
111 | left: 0;
112 | z-index: 1;
113 | }
114 | .waves-circle {
115 | text-align: center;
116 | width: 2.5em;
117 | height: 2.5em;
118 | line-height: 2.5em;
119 | border-radius: 50%;
120 | }
121 | .waves-float {
122 | -webkit-mask-image: none;
123 | -webkit-box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12);
124 | box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12);
125 | -webkit-transition: all 300ms;
126 | -moz-transition: all 300ms;
127 | -o-transition: all 300ms;
128 | transition: all 300ms;
129 | }
130 | .waves-float:active {
131 | -webkit-box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3);
132 | box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3);
133 | }
134 | .waves-block {
135 | display: block;
136 | }
137 |
138 | .bg-red {
139 | background-color: #F44336 !important;
140 | color: #fff;
141 | }
142 |
143 | .bg-red .content .text,
144 | .bg-red .content .number {
145 | color: #fff !important;
146 | }
147 |
148 | .bg-pink {
149 | background-color: #E91E63 !important;
150 | color: #fff;
151 | }
152 |
153 | .bg-pink .content .text,
154 | .bg-pink .content .number {
155 | color: #fff !important;
156 | }
157 |
158 | .bg-purple {
159 | background-color: #9C27B0 !important;
160 | color: #fff;
161 | }
162 |
163 | .bg-purple .content .text,
164 | .bg-purple .content .number {
165 | color: #fff !important;
166 | }
167 |
168 | .bg-deep-purple {
169 | background-color: #673AB7 !important;
170 | color: #fff;
171 | }
172 |
173 | .bg-deep-purple .content .text,
174 | .bg-deep-purple .content .number {
175 | color: #fff !important;
176 | }
177 |
178 | .bg-indigo {
179 | background-color: #3F51B5 !important;
180 | color: #fff;
181 | }
182 |
183 | .bg-indigo .content .text,
184 | .bg-indigo .content .number {
185 | color: #fff !important;
186 | }
187 |
188 | .bg-blue {
189 | background-color: #2196F3 !important;
190 | color: #fff;
191 | }
192 |
193 | .bg-blue .content .text,
194 | .bg-blue .content .number {
195 | color: #fff !important;
196 | }
197 |
198 | .bg-light-blue {
199 | background-color: #03A9F4 !important;
200 | color: #fff;
201 | }
202 |
203 | .bg-light-blue .content .text,
204 | .bg-light-blue .content .number {
205 | color: #fff !important;
206 | }
207 |
208 | .bg-cyan {
209 | background-color: #00BCD4 !important;
210 | color: #fff;
211 | }
212 |
213 | .bg-cyan .content .text,
214 | .bg-cyan .content .number {
215 | color: #fff !important;
216 | }
217 |
218 | .bg-teal {
219 | background-color: #009688 !important;
220 | color: #fff;
221 | }
222 |
223 | .bg-teal .content .text,
224 | .bg-teal .content .number {
225 | color: #fff !important;
226 | }
227 |
228 | .bg-green {
229 | background-color: #4CAF50 !important;
230 | color: #fff;
231 | }
232 |
233 | .bg-green .content .text,
234 | .bg-green .content .number {
235 | color: #fff !important;
236 | }
237 |
238 | .bg-light-green {
239 | background-color: #8BC34A !important;
240 | color: #fff;
241 | }
242 |
243 | .bg-light-green .content .text,
244 | .bg-light-green .content .number {
245 | color: #fff !important;
246 | }
247 |
248 | .bg-lime {
249 | background-color: #CDDC39 !important;
250 | color: #fff;
251 | }
252 |
253 | .bg-lime .content .text,
254 | .bg-lime .content .number {
255 | color: #fff !important;
256 | }
257 |
258 | .bg-yellow {
259 | background-color: #ffe821 !important;
260 | color: #fff;
261 | }
262 |
263 | .bg-yellow .content .text,
264 | .bg-yellow .content .number {
265 | color: #fff !important;
266 | }
267 |
268 | .bg-amber {
269 | background-color: #FFC107 !important;
270 | color: #fff;
271 | }
272 |
273 | .bg-amber .content .text,
274 | .bg-amber .content .number {
275 | color: #fff !important;
276 | }
277 |
278 | .bg-orange {
279 | background-color: #FF9800 !important;
280 | color: #fff;
281 | }
282 |
283 | .bg-orange .content .text,
284 | .bg-orange .content .number {
285 | color: #fff !important;
286 | }
287 |
288 | .bg-deep-orange {
289 | background-color: #FF5722 !important;
290 | color: #fff;
291 | }
292 |
293 | .bg-deep-orange .content .text,
294 | .bg-deep-orange .content .number {
295 | color: #fff !important;
296 | }
297 |
298 | .bg-brown {
299 | background-color: #795548 !important;
300 | color: #fff;
301 | }
302 |
303 | .bg-brown .content .text,
304 | .bg-brown .content .number {
305 | color: #fff !important;
306 | }
307 |
308 | .bg-grey {
309 | background-color: #9E9E9E !important;
310 | color: #fff;
311 | }
312 |
313 | .bg-grey .content .text,
314 | .bg-grey .content .number {
315 | color: #fff !important;
316 | }
317 |
318 | .bg-blue-grey {
319 | background-color: #607D8B !important;
320 | color: #fff;
321 | }
322 |
323 | .bg-blue-grey .content .text,
324 | .bg-blue-grey .content .number {
325 | color: #fff !important;
326 | }
327 |
328 | .bg-black {
329 | background-color: #000000 !important;
330 | color: #fff;
331 | }
332 |
333 | .bg-black .content .text,
334 | .bg-black .content .number {
335 | color: #fff !important;
336 | }
337 |
338 | .bg-white {
339 | background-color: #ffffff !important;
340 | color: #fff;
341 | }
342 |
343 | .bg-white .content .text,
344 | .bg-white .content .number {
345 | color: #fff !important;
346 | }
347 | .sw-main .btn {
348 | margin-right: 8px;
349 | margin-bottom: 13px;
350 | min-width: 120px;
351 | border-bottom: none !important;
352 | color: #fff !important;
353 | }
--------------------------------------------------------------------------------
/src/assets/js/formwizard.min.js:
--------------------------------------------------------------------------------
1 | if("undefined"==typeof jQuery)throw new Error("jQuery plugins need to be before formizard.js file.");$.formwizard={triggerEvent:(e,t,r)=>{$(t).trigger(e,r)},currentButtonTarget:null,resetCurrentTarget:!0,observerObj:null,fields:[],previewHeadings:[],previewEmptyText:"",options:[],submit:!1,helper:{showMessage:e=>{alert(e)},removeField:e=>{let t=$(e).closest("form").attr("id"),r=$.formwizard.helper.currentIndex("#"+t),i=$(e).attr("id"),a=$.formwizard.fields[t][r];$.formwizard.fields[t][r]=$.grep(a,function(e){return e!=i})},clearField:e=>{$(e).val("")},addField:(e,t,r)=>{$.formwizard.fields[e][r].push(t.id)},shake:function(e){$(e+" .sw-main").addClass("shake animated"),setTimeout(function(){$(e+" .sw-main").removeClass("shake animated")},1e3)},appendButtons:function({form:e,labelNext:t,labelPrev:r,labelFinish:i,labelRestore:a,iconNext:o,iconPrev:s,iconFinish:n,iconRestore:d,classNext:l,classPrev:f,classFinish:c,classRestore:u,enablePersistence:p=!1}){let m=[];p&&m.push($(' ').html(d+" "+a).addClass(u)),m.push($(' ').html(s+" "+r).addClass(f).on("click",function(e){e.preventDefault(),$.formwizard.formNavigation.previous(e.target)}));let w=$(' ').html(t+" "+o).addClass(l);m.push(w);let h=$(' ').html(n+" "+i).addClass(c);m.push(h);var v=w.add(h);return $(v).on("click",function(t){t.preventDefault(),setTimeout(function(){if($(e).yiiActiveForm("data").attributes.length)return $.formwizard.formValidation.run(e,t);$(t.target).hasClass("formwizard_finish")&&$(e).yiiActiveForm("submitForm"),$.formwizard.formNavigation.next(t.target)},200)}),m},updateButtons:function(e){$(e).on("showStep",function(t,r,i,a,o){let s=$(e+" > .sw-toolbar > .sw-btn-group-extra button.formwizard_prev"),n=$(e+" > .sw-toolbar > .sw-btn-group-extra >button.formwizard_finish"),d=$(e+" > .sw-toolbar > .sw-btn-group-extra >button.formwizard_next ");"first"===o?(s.addClass("disabled"),n.addClass("hidden d-none"),d.removeClass("hidden d-none")):"final"===o?(d.addClass("hidden d-none"),n.removeClass("hidden d-none"),s.removeClass("disabled hidden d-none"),$.formwizard.previewStep.add(e)):(s.removeClass("disabled"),d.removeClass("disabled hidden d-none"),n.addClass("hidden d-none"))})},currentIndex:function(e){return $(e+" ul.step-anchor>li.active").index()}},previewStep:{add:e=>{let t=$.formwizard.options,r=$(e).closest("form").attr("id"),i=document.createDocumentFragment(),a=$.formwizard.helper.currentIndex("#"+r),o=document.querySelector("#step-"+a),s=t[r].bsVersion,n=t[r].classListGroup,d=t[r].classListGroupHeading;if(o.querySelectorAll("."+n).forEach(e=>{e.remove()}),t.hasOwnProperty(r)&&t[r].enablePreview){$.formwizard.fields[r].forEach(function(a,o){let l=document.createElement("div");l.setAttribute("class",n+" preview-container"),l.dataset.step=o;let f=$(e).find("#step-"+o).data("step").type,c=""==$.formwizard.previewHeadings[o]?"Step "+parseInt(o+1):$.formwizard.previewHeadings[o],u=''+c+" ";a.forEach(function(i,n){let d=$.formwizard.previewStep.getLabel(i),l=$.formwizard.previewStep.getValue(r,i),c={label:""==d?$.formwizard.previewEmptyText:d,value:""==l?$.formwizard.previewEmptyText:l,target:i};if("hidden"!==$("#"+r+" #"+i).attr("type")&&(u+=$.formwizard.previewStep.getTemplate(c,s,t[r])),"tabular"==f){let t=$(e).find("#step-"+o).find(".fields_container .tabular-row").length;divider=a.length/t,(n+1)%divider==0&&(u+=' ')}}),l.innerHTML=u,i.appendChild(l)}),o.appendChild(i),$(".preview-button").on("click",function(t){let r=$(this).closest("div.preview-container").data("step");$.formwizard.formNavigation.goToStep(e,r),$.formwizard.previewStep.highlightTarget($(this).val())})}},getLabel:e=>{let t=$("#"+e).siblings("label").text();return""!==t?t:$("#"+e).attr("placeholder")},getValue:(e,t)=>{let r=$("#"+e+" #"+t),i=function(){if(""!==$.formwizard.previewEmptyText){let r=$("#"+e+" #"+t+" option:selected").val(),i=$("#"+e+" #"+t+" option:selected").text();return""==r?"NA"==$.formwizard.previewEmptyText?i:$.formwizard.previewEmptyText:$("#"+e+" #"+t+" option:selected").text()}return $("#"+e+" #"+t+" option:selected").text()},a=function(){let e=r.find("input:checked");return e.length?e.val():""},o=function(){let e=r.find("input:checked"),t="";return e.each(function(e,r){t+=$(r).val()+","}),t},s=function(){return r.is(":checked")?r.val():""},n=function(){return r.get(0).files.length+" files"};return r.is("select")?i():r.is("div")&&"radiogroup"==r.attr("role")?a():r.is("div")?o():"checkbox"==r.attr("type")?s():"file"==r.attr("type")?n():r.val()},getTemplate:(e,t,r)=>{let i=4==t?"list-group-item-action":"";return`\n \n ${e.label}\n \n ${e.value}\n `},highlightTarget:function(e){$(".field-"+e).addClass("notify-target"),setTimeout(function(){$(".field-"+e).removeClass("notify-target")},2e3)}},formValidation:{run:function(e,t){$.formwizard.resetCurrentTarget=!1,$.formwizard.currentButtonTarget=t.target,$(e).yiiActiveForm("validate",!0)},bindAfterValidate:function(e){$(e).on("beforeValidate",function(t,r,i){let a=$(this).attr("id"),o=$.formwizard.helper.currentIndex(e);const s=$("#step-"+o).data("step").skipable;let n=!0;$("#step-"+o+" .fields_container").find(":input").each(function(e,t){if(inputTypes={text:function(e){if(""!==$(e).val())return!1},radio:function(e){return!$(e).is(":checked")},"select-one":function(e){if(""!==$(e).val())return!1},"select-multiple":function(e){if(""!==$(e).val())return!1},number:function(e){if(""!==$(e).val())return!1},range:function(e){if(""!==$(e).val())return!1},password:function(e){if(""!==$(e).val())return!1},file:function(e){if(""!==$(e).val())return!1}},inputTypes.hasOwnProperty(t.type)&&!1===inputTypes[t.type].call(this,t))return n=!1,!1}),s&&n&&$.each($.formwizard.fields[a][o],function(e,t){$("#"+a).yiiActiveForm("remove",t)})}).on("afterValidate",function(t,r,i){$.formwizard.resetCurrentTarget&&($.formwizard.currentButtonTarget=null),t.preventDefault();let a=$(this).attr("id"),o=$.formwizard.helper.currentIndex(e);const s=o==$(e+" .step-anchor").find("li").length-1,n=$.formwizard.options[a].enablePreview&&s,d=$("#step-"+o).data("step").skipable;let l=n||d?0:$.formwizard.fields[a][o].diff(r);if(!$.formwizard.formValidation.editModeErrors(a,r)){if(l.length)!1===$.formwizard.resetCurrentTarget&&$.formwizard.helper.shake(e);else{if(s)return $.formwizard.submit=!0,!0;$(e).yiiActiveForm("resetForm"),null!==$.formwizard.currentButtonTarget&&$.formwizard.formNavigation.next($.formwizard.currentButtonTarget)}return!1}}).on("beforeSubmit",function(e){return e.preventDefault(),!!$.formwizard.submit&&($.formwizard.persistence.clearStorage(),!0)})},editModeErrors:function(e,t){if($.formwizard.options[e].editMode){let r=$.formwizard.fields[e],i=[];$.each(r,function(e,r){!$("#step-"+e).data("step").skipable&&r.diff(t).length&&i.push(e)});let a=$.formwizard.options[e].wizardContainerId;if($("#"+a).smartWizard("updateErrorStep",i),i.length)return $.formwizard.formNavigation.goToStep("#"+a,i[0]),!0}},isValid:function(e){for(var t in e)if(e[t].length>0)return!0;return!1},updateErrorMessages:function(e,t){for(var r in t)if(t[r].length){let i=r.replace(/\-([0-9]+)/g,"");$(e).yiiActiveForm("updateAttribute",i,t[r])}},addField:(e,t)=>{$("#"+e).yiiActiveForm("add",t)},removeField:e=>{let t=$(e).closest("form").attr("id");$("#"+t).yiiActiveForm("remove",e.id)}},formNavigation:{next:e=>{let t=$(e).parent().closest(".sw-main").attr("id");$("#"+t).smartWizard("next")},goToStep:(e,t)=>{$(e).smartWizard("goToStep",t)},previous:e=>{let t=$(e).parent().closest(".sw-main").attr("id");$("#"+t).smartWizard("prev")}},observer:{start:function(e){var t=document.querySelector(e);$.formwizard.observerObj=$.formwizard.observer.observerInstance(e);$.formwizard.observerObj.observe(t,{childList:!0,attributes:!0,subtree:!1})},observerInstance:function(e){return new MutationObserver(function(t){t.forEach(function(t){"childList"==t.type&&(void 0!==$.themematerial&&$.themematerial.init(),$.formwizard.init(e),$.formwizard.observerObj.disconnect())})})}},tabular:{addRow:e=>{let t=$(e).siblings(".fields_container"),r=t.find(".tabular-row").length;if(r===t.data("rows-limit"))return void $.formwizard.helper.showMessage("Cannot add any more.");let i=document.createDocumentFragment(),a=$(t)[0].firstChild,o=$(e).closest("form").attr("id"),s=$.formwizard.helper.currentIndex("#"+o),n=$.formwizard.tabular,d=$(a).find("input,select,textarea"),l=$.formwizard.triggerEvent;d.each(function(e,t){void 0!==$(t).attr("id")&&l("formwizard.beforeClone","#"+o+" #step-"+s+" #"+t.id)}),i.appendChild(a.cloneNode(!0)),d.each(function(e,t){void 0!==$(t).attr("id")&&l("formwizard.afterClone","#"+o+" #step-"+s+" #"+t.id)});let f=i.querySelector("div.tabular-row");f.id=f.id.replace(/\_[^\_]+$/,"_"+parseInt(r));let c=[];i.querySelectorAll("input,select,textarea").forEach(function(e,t){let i=e.id;if(n.updateFieldAttributes(e,r),void 0!==$(e).attr("id")){let t=n.setFieldDefaults(e,o,i);$.formwizard.helper.addField(o,e,s),c.push(e.id),void 0!==t&&$.formwizard.formValidation.addField(o,t)}}),$(t)[0].appendChild(i),document.querySelector("#row_"+r+" i.remove-row").dataset.rowid=r,l("formwizard.afterInsert","#"+o+" #step-"+s+" #row_"+r,{rowIndex:r})},removeRow:e=>{let t=$("#row_"+e),r=1==t.closest(".fields_container").find(".tabular-row").length;t.find("textarea,input,select").each(function(e,t){if(r)return $.formwizard.helper.clearField(t);$.formwizard.helper.removeField(t),$.formwizard.formValidation.removeField(t)}),!r&&t.remove()},setFieldDefaults:(e,t,r)=>{let i,a=e.name.match(/(\[[\d]{0,}\].*)/),o=$("#"+t).yiiActiveForm("find",r);return void 0!==o&&(i={id:e.id,name:a[0],container:".field-"+e.id,input:"#"+e.id,error:".help-block.help-block-error",value:e.value,status:0,validate:o.hasOwnProperty("validate")?o.validate:function(e,t,r,i,a){}}),i},updateFieldAttributes:(e,t)=>{let r=$(e).parent().hasClass("field-"+e.id);if(void 0!==$(e).attr("id")&&(e.id=e.id.replace(/\-([\d]+)\-/,"-"+parseInt(t)+"-")),e.name=e.name.replace(/\[([\d]+)\]/,"["+parseInt(t)+"]"),e.value="",r){let t=$(e).parent();$(t).removeClassesExceptThese(["form-group","required"]),$(t).addClass("field-"+e.id),$(t).find("label").attr("for",e.id),$(t).find(".help-block").html("")}}},init:e=>{$(e).on("click",".remove-row",function(e){$.formwizard.tabular.removeRow($(this).data("rowid"))}),$(e+" .add_row").on("click",function(e){$.formwizard.tabular.addRow($(this))}),$(e).find(":input:not(button)").on("blur change",function(e){e.preventDefault(),$.formwizard.resetCurrentTarget=!0})},persistence:{assign:(e,t,r)=>{lastKeyIndex=t.length-1;for(var i=0;i{let i=e.id,a=$(e).get(0).type,o=r.number,s=r.type;$.formwizard.persistence.storageFields.hasOwnProperty("step-"+o)||($.formwizard.persistence.storageFields["step-"+o]={stepType:s,fields:{}});let n={"select-one":e=>{if("tabular"==$.formwizard.persistence.storageFields["step-"+o].stepType){let r=$("#"+t+" #"+e).closest("div.tabular-row").attr("id");$.formwizard.persistence.storageFields["step-"+o].fields.hasOwnProperty(r)||($.formwizard.persistence.storageFields["step-"+o].fields[r]={}),$.formwizard.persistence.storageFields["step-"+o].fields[r][e]=document.querySelector("#"+t+" #"+e).value}else $.formwizard.persistence.storageFields["step-"+o].fields[e]=document.querySelector("#"+t+" #"+e).value},text:function(e){if("tabular"==$.formwizard.persistence.storageFields["step-"+o].stepType){let r=$("#"+t+" #"+e).closest("div.tabular-row").attr("id");$.formwizard.persistence.storageFields["step-"+o].fields.hasOwnProperty(r)||($.formwizard.persistence.storageFields["step-"+o].fields[r]={}),$.formwizard.persistence.storageFields["step-"+o].fields[r][e]=document.querySelector("#"+t+" #"+e).value}else $.formwizard.persistence.storageFields["step-"+o].fields[e]=document.querySelector("#"+t+" #"+e).value},radio:e=>{let r=$("#"+t+" #"+e).closest('div[role="radiogroup"]').find("input:radio");if("tabular"==$.formwizard.persistence.storageFields["step-"+o].stepType){let i=$("#"+t+" #"+e).closest("div.tabular-row").attr("id");$.formwizard.persistence.storageFields["step-"+o].fields.hasOwnProperty(i)||($.formwizard.persistence.storageFields["step-"+o].fields[i]={}),r.length?r.each(function(e,t){$.formwizard.persistence.storageFields["step-"+o].fields[i][t.id]=t.checked}):$.formwizard.persistence.storageFields["step-"+o].fields[i][e]=$("#"+t+" #"+e).is(":checked")}else r.length?r.each(function(e,t){$.formwizard.persistence.storageFields["step-"+o].fields[t.id]=t.checked}):$.formwizard.persistence.storageFields["step-"+o].fields[e]=$("#"+t+" #"+e).is(":checked")},checkbox:e=>{let r=$("#"+t+" #"+e).attr("name").match(/\[\]$/g);if("tabular"==$.formwizard.persistence.storageFields["step-"+o].stepType){let i=$("#"+t+" #"+e).closest("div.tabular-row").attr("id");if($.formwizard.persistence.storageFields["step-"+o].fields.hasOwnProperty(i)||($.formwizard.persistence.storageFields["step-"+o].fields[i]={}),r.length){$("input[name='"+$("#"+t+" #"+e).attr("name")+"']").each(function(e,t){$.formwizard.persistence.storageFields["step-"+o].fields[i][t.id]=t.checked})}else $.formwizard.persistence.storageFields["step-"+o].fields[i][e]=$("#"+t+" #"+e).is(":checked")}else if(r&&r.length){$("input[name='"+$("#"+t+" #"+e).attr("name")+"']").each(function(e,t){$.formwizard.persistence.storageFields["step-"+o].fields[t.id]=t.checked})}else $.formwizard.persistence.storageFields["step-"+o].fields[e]=$("#"+t+" #"+e).is(":checked")}};n.hasOwnProperty(a)&&n[a].call(this,i),localStorage.setItem("formwizard."+t,JSON.stringify($.formwizard.persistence.storageFields))},clearStorage:()=>{for(var e in localStorage)0==e.indexOf("formwizard.")&&localStorage.removeItem(e);$.formwizard.persistence.storageFields={}},loadForm:e=>{$.formwizard.persistence.storageFields=JSON.parse(localStorage.getItem("formwizard."+e));let t=$.formwizard.persistence.storageFields,r={"select-one":(t,r)=>{document.querySelector("#"+e+" #"+t).value=r,$("#"+t).trigger("change"),$.formwizard.triggerEvent("formwizard."+e+".afterRestore","#"+e+" #"+t,{fieldId:t,fieldValue:r})},text:function(t,r){document.querySelector("#"+e+" #"+t).value=r,$.formwizard.triggerEvent("formwizard."+e+".afterRestore","#"+e+" #"+t,{fieldId:t,fieldValue:r})},radio:(t,r)=>{document.querySelector("#"+e+" #"+t).checked=r,$.formwizard.triggerEvent("formwizard."+e+".afterRestore","#"+e+" #"+t,{fieldId:t,fieldValue:r})},checkbox:(t,r)=>{document.querySelector("#"+e+" #"+t).checked=r,$.formwizard.triggerEvent("formwizard."+e+".afterRestore","#"+e+" #"+t,{fieldId:t,fieldValue:r})}};for(let e in t)if(t.hasOwnProperty(e)){let i=t[e];if("tabular"==i.stepType){$.formwizard.persistence.tabularData(i,e,r);continue}let a=i.fields;for(let e in a)if(a.hasOwnProperty(e)){let t=a[e],i=$("#"+e).get(0).type;r.hasOwnProperty(i)&&r[i].call(this,e,t)}}},tabularData:function(e,t,r){let i=e.fields,a=Object.keys(i).length;if(a>1)for(let e=1;e<=a-1;e++)$("#"+t+" .add_row").trigger("click");for(let e in i)if(i.hasOwnProperty(e)){let t=i[e];for(let e in t)if(t.hasOwnProperty(e)){let i=t[e],a=$("#"+e).get(0).type;r.hasOwnProperty(a)&&r[a].call(this,e,i)}}},init:e=>{$(document).on("change","#"+e+" :input",function(t){let r=$(this).closest("div.step-content").data("step");$.formwizard.persistence.savefield(t.currentTarget,e,r)}),$("#"+e+" button.formwizard_restore").on("click",function(t){t.preventDefault(),$.formwizard.persistence.loadForm(e)})}}},Array.prototype.classDiff=function(e){return this.filter(function(t){return e.indexOf(t)<0})},$.fn.removeClassesExceptThese=function(e){var t=$(this);if(t.length>0){var r=t.attr("class").split(" ").classDiff(e);t.removeClass(r.join(" ")).addClass(e.join(" "))}return t},Array.prototype.diff=function(e){var t=[];for(var r in this)this.hasOwnProperty(r)&&e.hasOwnProperty(this[r])&&e[this[r]].length>0&&t.push(this[r]);return t};
--------------------------------------------------------------------------------
/src/assets/js/jquery.smartWizard.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * SmartWizard v4.3.1
3 | * The awesome jQuery step wizard plugin with Bootstrap support
4 | * http://www.techlaboratory.net/smartwizard
5 | *
6 | * Created by Dipu Raj
7 | * http://dipuraj.me
8 | *
9 | * Licensed under the terms of the MIT License
10 | * https://github.com/techlab/SmartWizard/blob/master/LICENSE
11 | */
12 | !function(t,s,e,n){"use strict";function i(s,e){this.options=t.extend(!0,{},o,e),this.main=t(s),this.nav=this.main.children("ul"),this.steps=t("li > a",this.nav),this.container=this.main.children("div"),this.pages=this.container.children("div"),this.current_index=null,this.options.toolbarSettings.toolbarButtonPosition="right"===this.options.toolbarSettings.toolbarButtonPosition?"end":this.options.toolbarSettings.toolbarButtonPosition,this.options.toolbarSettings.toolbarButtonPosition="left"===this.options.toolbarSettings.toolbarButtonPosition?"start":this.options.toolbarSettings.toolbarButtonPosition,this.options.theme=null===this.options.theme||""===this.options.theme?"default":this.options.theme,this.init()}var o={selected:0,keyNavigation:!0,autoAdjustHeight:!0,cycleSteps:!1,backButtonSupport:!0,useURLhash:!0,showStepURLhash:!0,lang:{next:"Next",previous:"Previous"},toolbarSettings:{toolbarPosition:"bottom",toolbarButtonPosition:"end",showNextButton:!0,showPreviousButton:!0,toolbarExtraButtons:[]},anchorSettings:{anchorClickable:!0,enableAllAnchors:!1,markDoneStep:!0,markAllPreviousStepsAsDone:!0,removeDoneStepOnNavigateBack:!1,enableAnchorOnDoneStep:!0},contentURL:null,contentCache:!0,ajaxSettings:{},disabledSteps:[],errorSteps:[],hiddenSteps:[],theme:"default",transitionEffect:"none",transitionSpeed:"400"};t.extend(i.prototype,{init:function(){this._setElements(),this._setToolbar(),this._setEvents();var e=this.options.selected;if(this.options.useURLhash){var n=s.location.hash;if(n&&n.length>0){var i=t("a[href*='"+n+"']",this.nav);if(i.length>0){var o=this.steps.index(i);e=o>=0?o:e}}}e>0&&this.options.anchorSettings.markDoneStep&&this.options.anchorSettings.markAllPreviousStepsAsDone&&this.steps.eq(e).parent("li").prevAll().addClass("done"),this._showStep(e)},_setElements:function(){this.main.addClass("sw-main sw-theme-"+this.options.theme),this.nav.addClass("nav nav-tabs step-anchor").children("li").addClass("nav-item").children("a").addClass("nav-link"),this.options.anchorSettings.enableAllAnchors!==!1&&this.options.anchorSettings.anchorClickable!==!1&&this.steps.parent("li").addClass("clickable"),this.container.addClass("sw-container tab-content"),this.pages.addClass("tab-pane step-content");var s=this;return this.options.disabledSteps&&this.options.disabledSteps.length>0&&t.each(this.options.disabledSteps,function(t,e){s.steps.eq(e).parent("li").addClass("disabled")}),this.options.errorSteps&&this.options.errorSteps.length>0&&t.each(this.options.errorSteps,function(t,e){s.steps.eq(e).parent("li").addClass("danger")}),this.options.hiddenSteps&&this.options.hiddenSteps.length>0&&t.each(this.options.hiddenSteps,function(t,e){s.steps.eq(e).parent("li").addClass("hidden")}),!0},_setToolbar:function(){if("none"===this.options.toolbarSettings.toolbarPosition)return!0;var s=this.options.toolbarSettings.showNextButton!==!1?t(" ").text(this.options.lang.next).addClass("btn btn-secondary sw-btn-next").attr("type","button"):null,e=this.options.toolbarSettings.showPreviousButton!==!1?t(" ").text(this.options.lang.previous).addClass("btn btn-secondary sw-btn-prev").attr("type","button"):null,n=t("
").addClass("btn-group mr-2 sw-btn-group").attr("role","group").append(e,s),i=null;this.options.toolbarSettings.toolbarExtraButtons&&this.options.toolbarSettings.toolbarExtraButtons.length>0&&(i=t("
").addClass("btn-group mr-2 sw-btn-group-extra").attr("role","group"),t.each(this.options.toolbarSettings.toolbarExtraButtons,function(t,s){i.append(s.clone(!0))}));var o,a;switch(this.options.toolbarSettings.toolbarPosition){case"top":o=t("
").addClass("btn-toolbar sw-toolbar sw-toolbar-top justify-content-"+this.options.toolbarSettings.toolbarButtonPosition),o.append(n),"start"===this.options.toolbarSettings.toolbarButtonPosition?o.prepend(i):o.append(i),this.container.before(o);break;case"bottom":a=t("
").addClass("btn-toolbar sw-toolbar sw-toolbar-bottom justify-content-"+this.options.toolbarSettings.toolbarButtonPosition),a.append(n),"start"===this.options.toolbarSettings.toolbarButtonPosition?a.prepend(i):a.append(i),this.container.after(a);break;case"both":o=t("
").addClass("btn-toolbar sw-toolbar sw-toolbar-top justify-content-"+this.options.toolbarSettings.toolbarButtonPosition),o.append(n),"start"===this.options.toolbarSettings.toolbarButtonPosition?o.prepend(i):o.append(i),this.container.before(o),a=t("
").addClass("btn-toolbar sw-toolbar sw-toolbar-bottom justify-content-"+this.options.toolbarSettings.toolbarButtonPosition),a.append(n.clone(!0)),null!==i&&("start"===this.options.toolbarSettings.toolbarButtonPosition?a.prepend(i.clone(!0)):a.append(i.clone(!0))),this.container.after(a);break;default:a=t("
").addClass("btn-toolbar sw-toolbar sw-toolbar-bottom justify-content-"+this.options.toolbarSettings.toolbarButtonPosition),a.append(n),this.options.toolbarSettings.toolbarButtonPosition,a.append(i),this.container.after(a)}return!0},_setEvents:function(){var n=this;return t(this.steps).on("click",function(t){if(t.preventDefault(),n.options.anchorSettings.anchorClickable===!1)return!0;var s=n.steps.index(this);if(n.options.anchorSettings.enableAnchorOnDoneStep===!1&&n.steps.eq(s).parent("li").hasClass("done"))return!0;s!==n.current_index&&(n.options.anchorSettings.enableAllAnchors!==!1&&n.options.anchorSettings.anchorClickable!==!1?n._showStep(s):n.steps.eq(s).parent("li").hasClass("done")&&n._showStep(s))}),t(".sw-btn-next",this.main).on("click",function(t){t.preventDefault(),n._showNext()}),t(".sw-btn-prev",this.main).on("click",function(t){t.preventDefault(),n._showPrevious()}),this.options.keyNavigation&&t(e).keyup(function(t){n._keyNav(t)}),this.options.backButtonSupport&&t(s).on("hashchange",function(e){if(!n.options.useURLhash)return!0;if(s.location.hash){var i=t("a[href*='"+s.location.hash+"']",n.nav);i&&i.length>0&&(e.preventDefault(),n._showStep(n.steps.index(i)))}}),!0},_showNext:function(){for(var t=this.current_index+1,s=t;s=0;s--)if(!this.steps.eq(s).parent("li").hasClass("disabled")&&!this.steps.eq(s).parent("li").hasClass("hidden")){t=s;break}if(0>t){if(!this.options.cycleSteps)return!1;t=this.steps.length-1}return this._showStep(t),!0},_showStep:function(t){return!!this.steps.eq(t)&&(t!=this.current_index&&(!this.steps.eq(t).parent("li").hasClass("disabled")&&!this.steps.eq(t).parent("li").hasClass("hidden")&&(this._loadStepContent(t),!0)))},_loadStepContent:function(s){var e=this,n=this.steps.eq(this.current_index),i="",o=this.steps.eq(s),a=o.data("content-url")&&o.data("content-url").length>0?o.data("content-url"):this.options.contentURL;if(null!==this.current_index&&this.current_index!==s&&(i=this.current_index0)||o.data("has-content")&&this.options.contentCache)this._transitPage(s);else{var r=o.length>0?t(o.attr("href"),this.main):null,h=t.extend(!0,{},{url:a,type:"POST",data:{step_number:s},dataType:"text",beforeSend:function(){e._loader("show")},error:function(s,n,i){e._loader("hide"),t.error(i)},success:function(t){t&&t.length>0&&(o.data("has-content",!0),r.html(t)),e._loader("hide"),e._transitPage(s)}},this.options.ajaxSettings);t.ajax(h)}return!0},_transitPage:function(s){var e=this,n=this.steps.eq(this.current_index),i=n.length>0?t(n.attr("href"),this.main):null,o=this.steps.eq(s),a=o.length>0?t(o.attr("href"),this.main):null,r="";null!==this.current_index&&this.current_index!==s&&(r=this.current_index0?i.slideUp("fast",this.options.transitionEasing,function(){a.slideDown(e.options.transitionSpeed,e.options.transitionEasing)}):a.slideDown(this.options.transitionSpeed,this.options.transitionEasing):"fade"===this.options.transitionEffect?i&&i.length>0?i.fadeOut("fast",this.options.transitionEasing,function(){a.fadeIn("fast",e.options.transitionEasing,function(){t(this).show()})}):a.fadeIn(this.options.transitionSpeed,this.options.transitionEasing,function(){t(this).show()}):(i&&i.length>0&&i.hide(),a.show()),this._setURLHash(o.attr("href")),this._setAnchor(s),this._setButtons(s),this._fixHeight(s),this.current_index=s,this._triggerEvent("showStep",[o,this.current_index,r,h]),!0},_setAnchor:function(t){return this.steps.eq(this.current_index).parent("li").removeClass("active"),this.options.anchorSettings.markDoneStep!==!1&&null!==this.current_index&&(this.steps.eq(this.current_index).parent("li").addClass("done"),this.options.anchorSettings.removeDoneStepOnNavigateBack!==!1&&this.steps.eq(t).parent("li").nextAll().removeClass("done")),this.steps.eq(t).parent("li").removeClass("done").addClass("active"),!0},_setButtons:function(s){return this.options.cycleSteps||(0>=s?t(".sw-btn-prev",this.main).addClass("disabled"):t(".sw-btn-prev",this.main).removeClass("disabled"),this.steps.length-1<=s?t(".sw-btn-next",this.main).addClass("disabled"):t(".sw-btn-next",this.main).removeClass("disabled")),!0},_keyNav:function(t){var s=this;switch(t.which){case 37:s._showPrevious(),t.preventDefault();break;case 39:s._showNext(),t.preventDefault();break;default:return}},_fixHeight:function(s){if(this.options.autoAdjustHeight){var e=this.steps.eq(s).length>0?t(this.steps.eq(s).attr("href"),this.main):null;this.container.finish().animate({minHeight:e.outerHeight()},this.options.transitionSpeed,function(){})}return!0},_triggerEvent:function(s,e){var n=t.Event(s);return this.main.trigger(n,e),!n.isDefaultPrevented()&&n.result},_setURLHash:function(t){this.options.showStepURLhash&&s.location.hash!==t&&(s.location.hash=t)},_loader:function(t){switch(t){case"show":this.main.addClass("sw-loading");break;case"hide":this.main.removeClass("sw-loading");break;default:this.main.toggleClass("sw-loading")}},theme:function(t){if(this.options.theme===t)return!1;this.main.removeClass("sw-theme-"+this.options.theme),this.options.theme=t,this.main.addClass("sw-theme-"+this.options.theme),this._triggerEvent("themeChanged",[this.options.theme])},next:function(){this._showNext()},prev:function(){this._showPrevious()},reset:function(){if(this._triggerEvent("beginReset")===!1)return!1;this.container.stop(!0),this.pages.stop(!0),this.pages.hide(),this.current_index=null,this._setURLHash(this.steps.eq(this.options.selected).attr("href")),t(".sw-toolbar",this.main).remove(),this.steps.removeClass(),this.steps.parents("li").removeClass(),this.steps.data("has-content",!1),this.init(),this._triggerEvent("endReset")},stepState:function(s,e){s=t.isArray(s)?s:[s];var n=t.grep(this.steps,function(e,n){return t.inArray(n,s)!==-1});if(n&&n.length>0)switch(e){case"disable":t(n).parents("li").addClass("disabled");break;case"enable":t(n).parents("li").removeClass("disabled");break;case"hide":t(n).parents("li").addClass("hidden");break;case"show":t(n).parents("li").removeClass("hidden");break;case"error-on":t(n).parents("li").addClass("danger");break;case"error-off":t(n).parents("li").removeClass("danger")}}}),t.fn.smartWizard=function(s){var e,n=arguments;return void 0===s||"object"==typeof s?this.each(function(){t.data(this,"smartWizard")||t.data(this,"smartWizard",new i(this,s))}):"string"==typeof s&&"_"!==s[0]&&"init"!==s?(e=t.data(this[0],"smartWizard"),"destroy"===s&&t.data(this,"smartWizard",null),e instanceof i&&"function"==typeof e[s]?e[s].apply(e,Array.prototype.slice.call(n,1)):this):void 0}}(jQuery,window,document);
--------------------------------------------------------------------------------
/src/assets/js/theme/material.js:
--------------------------------------------------------------------------------
1 | $.themematerial = {};
2 | $.themematerial.init = function () {
3 | $(".sw-theme-material>.step-anchor>li>a, .sw-theme-material-v>.step-anchor>li>a").addClass('waves-effect');
4 | $(".sw-theme-material>.sw-toolbar button, .sw-theme-material-v> .sw-toolbar button").addClass('waves-effect');
5 | Waves.attach('.sw-theme-material> .sw-toolbar button', ['waves-block']);
6 | Waves.attach('.sw-theme-material> .step-anchor li a', ['waves-block']);
7 | Waves.init();
8 | };
--------------------------------------------------------------------------------
/src/assets/js/theme/waves.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Waves v0.7.5
3 | * http://fian.my.id/Waves
4 | *
5 | * Copyright 2014-2016 Alfiana E. Sibuea and other contributors
6 | * Released under the MIT license
7 | * https://github.com/fians/Waves/blob/master/LICENSE
8 | */
9 |
10 | ;(function(window, factory) {
11 | 'use strict';
12 |
13 | // AMD. Register as an anonymous module. Wrap in function so we have access
14 | // to root via `this`.
15 | if (typeof define === 'function' && define.amd) {
16 | define([], function() {
17 | return factory.apply(window);
18 | });
19 | }
20 |
21 | // Node. Does not work with strict CommonJS, but only CommonJS-like
22 | // environments that support module.exports, like Node.
23 | else if (typeof exports === 'object') {
24 | module.exports = factory.call(window);
25 | }
26 |
27 | // Browser globals.
28 | else {
29 | window.Waves = factory.call(window);
30 | }
31 | })(typeof global === 'object' ? global : this, function() {
32 | 'use strict';
33 |
34 | var Waves = Waves || {};
35 | var $$ = document.querySelectorAll.bind(document);
36 | var toString = Object.prototype.toString;
37 | var isTouchAvailable = 'ontouchstart' in window;
38 |
39 |
40 | // Find exact position of element
41 | function isWindow(obj) {
42 | return obj !== null && obj === obj.window;
43 | }
44 |
45 | function getWindow(elem) {
46 | return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;
47 | }
48 |
49 | function isObject(value) {
50 | var type = typeof value;
51 | return type === 'function' || type === 'object' && !!value;
52 | }
53 |
54 | function isDOMNode(obj) {
55 | return isObject(obj) && obj.nodeType > 0;
56 | }
57 |
58 | function getWavesElements(nodes) {
59 | var stringRepr = toString.call(nodes);
60 |
61 | if (stringRepr === '[object String]') {
62 | return $$(nodes);
63 | } else if (isObject(nodes) && /^\[object (Array|HTMLCollection|NodeList|Object)\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {
64 | return nodes;
65 | } else if (isDOMNode(nodes)) {
66 | return [nodes];
67 | }
68 |
69 | return [];
70 | }
71 |
72 | function offset(elem) {
73 | var docElem, win,
74 | box = { top: 0, left: 0 },
75 | doc = elem && elem.ownerDocument;
76 |
77 | docElem = doc.documentElement;
78 |
79 | if (typeof elem.getBoundingClientRect !== typeof undefined) {
80 | box = elem.getBoundingClientRect();
81 | }
82 | win = getWindow(doc);
83 | return {
84 | top: box.top + win.pageYOffset - docElem.clientTop,
85 | left: box.left + win.pageXOffset - docElem.clientLeft
86 | };
87 | }
88 |
89 | function convertStyle(styleObj) {
90 | var style = '';
91 |
92 | for (var prop in styleObj) {
93 | if (styleObj.hasOwnProperty(prop)) {
94 | style += (prop + ':' + styleObj[prop] + ';');
95 | }
96 | }
97 |
98 | return style;
99 | }
100 |
101 | var Effect = {
102 |
103 | // Effect duration
104 | duration: 750,
105 |
106 | // Effect delay (check for scroll before showing effect)
107 | delay: 200,
108 |
109 | show: function(e, element, velocity) {
110 |
111 | // Disable right click
112 | if (e.button === 2) {
113 | return false;
114 | }
115 |
116 | element = element || this;
117 |
118 | // Create ripple
119 | var ripple = document.createElement('div');
120 | ripple.className = 'waves-ripple waves-rippling';
121 | element.appendChild(ripple);
122 |
123 | // Get click coordinate and element width
124 | var pos = offset(element);
125 | var relativeY = 0;
126 | var relativeX = 0;
127 | // Support for touch devices
128 | if('touches' in e && e.touches.length) {
129 | relativeY = (e.touches[0].pageY - pos.top);
130 | relativeX = (e.touches[0].pageX - pos.left);
131 | }
132 | //Normal case
133 | else {
134 | relativeY = (e.pageY - pos.top);
135 | relativeX = (e.pageX - pos.left);
136 | }
137 | // Support for synthetic events
138 | relativeX = relativeX >= 0 ? relativeX : 0;
139 | relativeY = relativeY >= 0 ? relativeY : 0;
140 |
141 | var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';
142 | var translate = 'translate(0,0)';
143 |
144 | if (velocity) {
145 | translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';
146 | }
147 |
148 | // Attach data to element
149 | ripple.setAttribute('data-hold', Date.now());
150 | ripple.setAttribute('data-x', relativeX);
151 | ripple.setAttribute('data-y', relativeY);
152 | ripple.setAttribute('data-scale', scale);
153 | ripple.setAttribute('data-translate', translate);
154 |
155 | // Set ripple position
156 | var rippleStyle = {
157 | top: relativeY + 'px',
158 | left: relativeX + 'px'
159 | };
160 |
161 | ripple.classList.add('waves-notransition');
162 | ripple.setAttribute('style', convertStyle(rippleStyle));
163 | ripple.classList.remove('waves-notransition');
164 |
165 | // Scale the ripple
166 | rippleStyle['-webkit-transform'] = scale + ' ' + translate;
167 | rippleStyle['-moz-transform'] = scale + ' ' + translate;
168 | rippleStyle['-ms-transform'] = scale + ' ' + translate;
169 | rippleStyle['-o-transform'] = scale + ' ' + translate;
170 | rippleStyle.transform = scale + ' ' + translate;
171 | rippleStyle.opacity = '1';
172 |
173 | var duration = e.type === 'mousemove' ? 2500 : Effect.duration;
174 | rippleStyle['-webkit-transition-duration'] = duration + 'ms';
175 | rippleStyle['-moz-transition-duration'] = duration + 'ms';
176 | rippleStyle['-o-transition-duration'] = duration + 'ms';
177 | rippleStyle['transition-duration'] = duration + 'ms';
178 |
179 | ripple.setAttribute('style', convertStyle(rippleStyle));
180 | },
181 |
182 | hide: function(e, element) {
183 | element = element || this;
184 |
185 | var ripples = element.getElementsByClassName('waves-rippling');
186 |
187 | for (var i = 0, len = ripples.length; i < len; i++) {
188 | removeRipple(e, element, ripples[i]);
189 | }
190 | }
191 | };
192 |
193 | /**
194 | * Collection of wrapper for HTML element that only have single tag
195 | * like and
196 | */
197 | var TagWrapper = {
198 |
199 | // Wrap tag so it can perform the effect
200 | input: function(element) {
201 |
202 | var parent = element.parentNode;
203 |
204 | // If input already have parent just pass through
205 | if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {
206 | return;
207 | }
208 |
209 | // Put element class and style to the specified parent
210 | var wrapper = document.createElement('i');
211 | wrapper.className = element.className + ' waves-input-wrapper';
212 | element.className = 'waves-button-input';
213 |
214 | // Put element as child
215 | parent.replaceChild(wrapper, element);
216 | wrapper.appendChild(element);
217 |
218 | // Apply element color and background color to wrapper
219 | var elementStyle = window.getComputedStyle(element, null);
220 | var color = elementStyle.color;
221 | var backgroundColor = elementStyle.backgroundColor;
222 |
223 | wrapper.setAttribute('style', 'color:' + color + ';background:' + backgroundColor);
224 | element.setAttribute('style', 'background-color:rgba(0,0,0,0);');
225 |
226 | },
227 |
228 | // Wrap tag so it can perform the effect
229 | img: function(element) {
230 |
231 | var parent = element.parentNode;
232 |
233 | // If input already have parent just pass through
234 | if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {
235 | return;
236 | }
237 |
238 | // Put element as child
239 | var wrapper = document.createElement('i');
240 | parent.replaceChild(wrapper, element);
241 | wrapper.appendChild(element);
242 |
243 | }
244 | };
245 |
246 | /**
247 | * Hide the effect and remove the ripple. Must be
248 | * a separate function to pass the JSLint...
249 | */
250 | function removeRipple(e, el, ripple) {
251 |
252 | // Check if the ripple still exist
253 | if (!ripple) {
254 | return;
255 | }
256 |
257 | ripple.classList.remove('waves-rippling');
258 |
259 | var relativeX = ripple.getAttribute('data-x');
260 | var relativeY = ripple.getAttribute('data-y');
261 | var scale = ripple.getAttribute('data-scale');
262 | var translate = ripple.getAttribute('data-translate');
263 |
264 | // Get delay beetween mousedown and mouse leave
265 | var diff = Date.now() - Number(ripple.getAttribute('data-hold'));
266 | var delay = 350 - diff;
267 |
268 | if (delay < 0) {
269 | delay = 0;
270 | }
271 |
272 | if (e.type === 'mousemove') {
273 | delay = 150;
274 | }
275 |
276 | // Fade out ripple after delay
277 | var duration = e.type === 'mousemove' ? 2500 : Effect.duration;
278 |
279 | setTimeout(function() {
280 |
281 | var style = {
282 | top: relativeY + 'px',
283 | left: relativeX + 'px',
284 | opacity: '0',
285 |
286 | // Duration
287 | '-webkit-transition-duration': duration + 'ms',
288 | '-moz-transition-duration': duration + 'ms',
289 | '-o-transition-duration': duration + 'ms',
290 | 'transition-duration': duration + 'ms',
291 | '-webkit-transform': scale + ' ' + translate,
292 | '-moz-transform': scale + ' ' + translate,
293 | '-ms-transform': scale + ' ' + translate,
294 | '-o-transform': scale + ' ' + translate,
295 | 'transform': scale + ' ' + translate
296 | };
297 |
298 | ripple.setAttribute('style', convertStyle(style));
299 |
300 | setTimeout(function() {
301 | try {
302 | el.removeChild(ripple);
303 | } catch (e) {
304 | return false;
305 | }
306 | }, duration);
307 |
308 | }, delay);
309 | }
310 |
311 |
312 | /**
313 | * Disable mousedown event for 500ms during and after touch
314 | */
315 | var TouchHandler = {
316 |
317 | /* uses an integer rather than bool so there's no issues with
318 | * needing to clear timeouts if another touch event occurred
319 | * within the 500ms. Cannot mouseup between touchstart and
320 | * touchend, nor in the 500ms after touchend. */
321 | touches: 0,
322 |
323 | allowEvent: function(e) {
324 |
325 | var allow = true;
326 |
327 | if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {
328 | allow = false;
329 | }
330 |
331 | return allow;
332 | },
333 | registerEvent: function(e) {
334 | var eType = e.type;
335 |
336 | if (eType === 'touchstart') {
337 |
338 | TouchHandler.touches += 1; // push
339 |
340 | } else if (/^(touchend|touchcancel)$/.test(eType)) {
341 |
342 | setTimeout(function() {
343 | if (TouchHandler.touches) {
344 | TouchHandler.touches -= 1; // pop after 500ms
345 | }
346 | }, 500);
347 |
348 | }
349 | }
350 | };
351 |
352 |
353 | /**
354 | * Delegated click handler for .waves-effect element.
355 | * returns null when .waves-effect element not in "click tree"
356 | */
357 | function getWavesEffectElement(e) {
358 |
359 | if (TouchHandler.allowEvent(e) === false) {
360 | return null;
361 | }
362 |
363 | var element = null;
364 | var target = e.target || e.srcElement;
365 |
366 | while (target.parentElement !== null) {
367 | if (target.classList.contains('waves-effect') && (!(target instanceof SVGElement))) {
368 | element = target;
369 | break;
370 | }
371 | target = target.parentElement;
372 | }
373 |
374 | return element;
375 | }
376 |
377 | /**
378 | * Bubble the click and show effect if .waves-effect elem was found
379 | */
380 | function showEffect(e) {
381 |
382 | // Disable effect if element has "disabled" property on it
383 | // In some cases, the event is not triggered by the current element
384 | // if (e.target.getAttribute('disabled') !== null) {
385 | // return;
386 | // }
387 |
388 | var element = getWavesEffectElement(e);
389 |
390 | if (element !== null) {
391 |
392 | // Make it sure the element has either disabled property, disabled attribute or 'disabled' class
393 | if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {
394 | return;
395 | }
396 |
397 | TouchHandler.registerEvent(e);
398 |
399 | if (e.type === 'touchstart' && Effect.delay) {
400 |
401 | var hidden = false;
402 |
403 | var timer = setTimeout(function () {
404 | timer = null;
405 | Effect.show(e, element);
406 | }, Effect.delay);
407 |
408 | var hideEffect = function(hideEvent) {
409 |
410 | // if touch hasn't moved, and effect not yet started: start effect now
411 | if (timer) {
412 | clearTimeout(timer);
413 | timer = null;
414 | Effect.show(e, element);
415 | }
416 | if (!hidden) {
417 | hidden = true;
418 | Effect.hide(hideEvent, element);
419 | }
420 | };
421 |
422 | var touchMove = function(moveEvent) {
423 | if (timer) {
424 | clearTimeout(timer);
425 | timer = null;
426 | }
427 | hideEffect(moveEvent);
428 | };
429 |
430 | element.addEventListener('touchmove', touchMove, false);
431 | element.addEventListener('touchend', hideEffect, false);
432 | element.addEventListener('touchcancel', hideEffect, false);
433 |
434 | } else {
435 |
436 | Effect.show(e, element);
437 |
438 | if (isTouchAvailable) {
439 | element.addEventListener('touchend', Effect.hide, false);
440 | element.addEventListener('touchcancel', Effect.hide, false);
441 | }
442 |
443 | element.addEventListener('mouseup', Effect.hide, false);
444 | element.addEventListener('mouseleave', Effect.hide, false);
445 | }
446 | }
447 | }
448 |
449 | Waves.init = function(options) {
450 | var body = document.body;
451 |
452 | options = options || {};
453 |
454 | if ('duration' in options) {
455 | Effect.duration = options.duration;
456 | }
457 |
458 | if ('delay' in options) {
459 | Effect.delay = options.delay;
460 | }
461 |
462 | if (isTouchAvailable) {
463 | body.addEventListener('touchstart', showEffect, false);
464 | body.addEventListener('touchcancel', TouchHandler.registerEvent, false);
465 | body.addEventListener('touchend', TouchHandler.registerEvent, false);
466 | }
467 |
468 | body.addEventListener('mousedown', showEffect, false);
469 | };
470 |
471 |
472 | /**
473 | * Attach Waves to dynamically loaded inputs, or add .waves-effect and other
474 | * waves classes to a set of elements. Set drag to true if the ripple mouseover
475 | * or skimming effect should be applied to the elements.
476 | */
477 | Waves.attach = function(elements, classes) {
478 |
479 | elements = getWavesElements(elements);
480 |
481 | if (toString.call(classes) === '[object Array]') {
482 | classes = classes.join(' ');
483 | }
484 |
485 | classes = classes ? ' ' + classes : '';
486 |
487 | var element, tagName;
488 |
489 | for (var i = 0, len = elements.length; i < len; i++) {
490 |
491 | element = elements[i];
492 | tagName = element.tagName.toLowerCase();
493 |
494 | if (['input', 'img'].indexOf(tagName) !== -1) {
495 | TagWrapper[tagName](element);
496 | element = element.parentElement;
497 | }
498 |
499 | if (element.className.indexOf('waves-effect') === -1) {
500 | element.className += ' waves-effect' + classes;
501 | }
502 | }
503 | };
504 |
505 |
506 | /**
507 | * Cause a ripple to appear in an element via code.
508 | */
509 | Waves.ripple = function(elements, options) {
510 | elements = getWavesElements(elements);
511 | var elementsLen = elements.length;
512 |
513 | options = options || {};
514 | options.wait = options.wait || 0;
515 | options.position = options.position || null; // default = centre of element
516 |
517 |
518 | if (elementsLen) {
519 | var element, pos, off, centre = {}, i = 0;
520 | var mousedown = {
521 | type: 'mousedown',
522 | button: 1
523 | };
524 | var hideRipple = function(mouseup, element) {
525 | return function() {
526 | Effect.hide(mouseup, element);
527 | };
528 | };
529 |
530 | for (; i < elementsLen; i++) {
531 | element = elements[i];
532 | pos = options.position || {
533 | x: element.clientWidth / 2,
534 | y: element.clientHeight / 2
535 | };
536 |
537 | off = offset(element);
538 | centre.x = off.left + pos.x;
539 | centre.y = off.top + pos.y;
540 |
541 | mousedown.pageX = centre.x;
542 | mousedown.pageY = centre.y;
543 |
544 | Effect.show(mousedown, element);
545 |
546 | if (options.wait >= 0 && options.wait !== null) {
547 | var mouseup = {
548 | type: 'mouseup',
549 | button: 1
550 | };
551 |
552 | setTimeout(hideRipple(mouseup, element), options.wait);
553 | }
554 | }
555 | }
556 | };
557 |
558 | /**
559 | * Remove all ripples from an element.
560 | */
561 | Waves.calm = function(elements) {
562 | elements = getWavesElements(elements);
563 | var mouseup = {
564 | type: 'mouseup',
565 | button: 1
566 | };
567 |
568 | for (var i = 0, len = elements.length; i < len; i++) {
569 | Effect.hide(mouseup, elements[i]);
570 | }
571 | };
572 |
573 | /**
574 | * Deprecated API fallback
575 | */
576 | Waves.displayEffect = function(options) {
577 | console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');
578 | Waves.init(options);
579 | };
580 |
581 | return Waves;
582 | });
583 |
--------------------------------------------------------------------------------
/src/step/Generator.php:
--------------------------------------------------------------------------------
1 | stepConfig['model']);
51 |
52 | //check if models
53 | $models = !$isArrayOfModels ? [$this->stepConfig['model']] : $this->stepConfig['model'];
54 |
55 | //check if tabular step
56 | if ($this->isTabular) {
57 | return $this->createTabularStep($models);
58 | }
59 |
60 | //return for normal step
61 | return $this->createStep($models);
62 | }
63 |
64 | /**
65 | * Creates a tabular step
66 | *
67 | * @param array $models the models used for the step
68 | *
69 | * @return StepResponse
70 | */
71 | public function createTabularStep($models)
72 | {
73 | //tabular step object
74 | $step = Yii::createObject(
75 | [
76 | 'class' => Tabular::class,
77 | 'models' => $models,
78 | 'stepConfig' => $this->stepConfig,
79 | 'limit' => $this->limit,
80 | 'form' => $this->form,
81 | 'index' => $this->stepIndex,
82 | 'formOptions' => $this->formOptions,
83 | ]
84 | );
85 |
86 | //get the step html
87 | $html = $step->create();
88 |
89 | //populate response object
90 | $response = Yii::createObject(
91 | [
92 | 'class' => Response::class,
93 | 'html' => $html,
94 | 'tabularEventsJs' => $step->getTabularEventJs(),
95 | 'persistenceJs' => $step->getPersistenceEvents(),
96 | 'dependentInputJs' => $step->getDependentInputScript(),
97 | ],
98 | [$models, $this->stepConfig]
99 | );
100 |
101 | return $response;
102 | }
103 |
104 | /**
105 | * Creates a normal step
106 | *
107 | * @param array $models array of models for the current step
108 | *
109 | * @return StepResponse
110 | */
111 | public function createStep($models)
112 | {
113 | //create a step object
114 | $step = Yii::createObject(
115 | [
116 | 'class' => Normal::class,
117 | 'models' => $models,
118 | 'stepConfig' => $this->stepConfig,
119 | 'form' => $this->form,
120 | 'formOptions' => $this->formOptions,
121 | ]
122 | );
123 |
124 | //get the step html
125 | $html = $step->create();
126 |
127 | //populate the response object
128 | $response = Yii::createObject(
129 | [
130 | 'class' => Response::class,
131 | 'html' => $html,
132 | 'persistenceJs' => $step->getPersistenceEvents(),
133 | 'dependentInputJs' => $step->getDependentInputScript(),
134 | ],
135 | [$models, $this->stepConfig]
136 | );
137 |
138 | //return response
139 | return $response;
140 | }
141 |
142 | }
143 |
--------------------------------------------------------------------------------
/src/step/Normal.php:
--------------------------------------------------------------------------------
1 | _persistenceEvents;
48 | }
49 |
50 | /**
51 | * @param $script
52 | */
53 | public function setDependentInputScript($script)
54 | {
55 | $this->_dependentInputScript = $script;
56 | }
57 |
58 | /**
59 | * @return mixed
60 | */
61 | public function getDependentInputScript()
62 | {
63 | return $this->_dependentInputScript;
64 | }
65 |
66 | /**
67 | * Creates a Step
68 | *
69 | * @return mixed
70 | */
71 | public function create()
72 | {
73 | $models = $this->models;
74 |
75 | //field configurations
76 | $fieldConfig = ArrayHelper::getValue($this->stepConfig, 'fieldConfig', false);
77 |
78 | //get the step headings
79 | $stepHeadings = ArrayHelper::getValue($this->stepConfig, 'stepHeadings', false);
80 |
81 | $sorter = Yii::createObject(
82 | [
83 | 'class' => Sorter::class,
84 | 'models' => $models,
85 | 'stepConfig' => $this->stepConfig,
86 | ]
87 | );
88 |
89 | $attributes = $sorter->sort();
90 |
91 | $this->attributes = $attributes;
92 | return $this->_createStepHtml($fieldConfig, $stepHeadings);
93 | }
94 |
95 | /**
96 | * Generates Html for normal steps fields
97 | *
98 | * @param array $attributes the attributes to iterate
99 | * @param array $fieldConfig customer field configurations
100 | * @param array $stepHeadings the headings for the current step
101 | *
102 | * @return mixed
103 | */
104 | private function _createStepHtml($fieldConfig, $stepHeadings)
105 | {
106 | $htmlFields = '';
107 |
108 | foreach ($this->attributes as $modelIndex => $row) {
109 |
110 | $model = $row['model'];
111 | $attribute = $row['attribute'];
112 |
113 | //prefix attributes with model name
114 | $attributePrefixed = strtolower($model->formName()) . '.' . $attribute;
115 |
116 | //attribute name
117 | $attributeName = $attribute;
118 | $customConfigDefinedForField = $fieldConfig && (isset($fieldConfig[$attribute]) || isset($fieldConfig[$attributePrefixed]));
119 |
120 | //has heading for the field
121 | $hasHeading = false !== $stepHeadings;
122 |
123 | //add heading
124 | if ($hasHeading) {
125 | $htmlFields .= $this->addHeading($attribute, $stepHeadings);
126 | }
127 |
128 | //if custom config available for field
129 | if ($customConfigDefinedForField) {
130 |
131 | $customFieldConfig = (isset($fieldConfig[$attributePrefixed])) ? $fieldConfig[$attributePrefixed] : $fieldConfig[$attribute];
132 | $dependentInput = ArrayHelper::getValue($customFieldConfig, 'depends', false);
133 |
134 | //if filtered field
135 | $isFilteredField = $customFieldConfig === false;
136 |
137 | //skip the field and go to next
138 | if ($isFilteredField) {
139 | continue;
140 | }
141 |
142 | //custom field population
143 | $htmlFields .= $this->createCustomInput(
144 | $model,
145 | $attributeName,
146 | $customFieldConfig
147 | );
148 |
149 | //id of the input
150 | $attributeId = Html::getInputId($model, $attributeName);
151 |
152 | //add the restore events
153 | $this->_addRestoreEvents($customFieldConfig, $attributeId);
154 |
155 | //add dependent input script if available
156 | $dependentInput && $this->_addDependentInputScript($dependentInput, $attributeId, $model, $modelIndex);
157 | } else {
158 | //default field population
159 | $htmlFields .= $this->createDefaultInput($model, $attributeName);
160 | }
161 | }
162 | return $htmlFields;
163 | }
164 | }
--------------------------------------------------------------------------------
/src/step/Response.php:
--------------------------------------------------------------------------------
1 | setJsFields($models, $stepConfig);
39 | }
40 |
41 | /**
42 | * @param $models
43 | */
44 | public function setJsFields($models, $stepConfig)
45 | {
46 | $fields = [];
47 |
48 | //sorter class object
49 | $sorter = Yii::createObject(Sorter::class);
50 |
51 | //disabled fields
52 | $disabledFields = ArrayHelper::getValue($stepConfig, 'fieldConfig.except', []);
53 |
54 | //only fields
55 | $onlyFields = ArrayHelper::getValue($stepConfig, 'fieldConfig.only', []);
56 |
57 | //step type
58 | $stepType = ArrayHelper::getValue($stepConfig, 'type', FormWizard::STEP_TYPE_DEFAULT);
59 |
60 | //is tabular
61 | $isTabularStep = $this->isTabularStep($stepType);
62 |
63 | foreach ($models as $modelIndex => $model) {
64 |
65 | //get the fields for the current model
66 | $attributes = $sorter->getStepFields($model, $onlyFields, $disabledFields);
67 |
68 | //add all the field ids to array
69 | $fields = array_merge(
70 | $fields,
71 | array_map(
72 | function ($element) use ($model, $modelIndex, $isTabularStep) {
73 | return Html::getInputId($model, ($isTabularStep) ? "[$modelIndex]" . $element : $element);
74 | },
75 | $attributes
76 | )
77 | );
78 | }
79 | $this->jsFields = $fields;
80 | }
81 |
82 | /**
83 | * @param $stepType
84 | * @return mixed
85 | */
86 | public function isTabularStep($stepType)
87 | {
88 | return $stepType === FormWizard::STEP_TYPE_TABULAR;
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/src/step/Sorter.php:
--------------------------------------------------------------------------------
1 | stepConfig, 'fieldConfig', false);
31 |
32 | //disabled fields
33 | $disabledFields = ArrayHelper::getValue($fieldConfig, 'except', []);
34 |
35 | //only fields
36 | $onlyFields = ArrayHelper::getValue($fieldConfig, 'only', []);
37 |
38 | //iterate models
39 | foreach ($this->models as $model) {
40 |
41 | //get safe attributes
42 | $attributes = $this->getStepFields($model, $onlyFields, $disabledFields);
43 |
44 | //field order
45 | foreach ($attributes as $attribute) {
46 | $mappedFields[] = ['model' => $model, 'attribute' => $attribute];
47 | }
48 | }
49 |
50 | return $this->sortFields($mappedFields);
51 | }
52 |
53 | /**
54 | * Sorts the fields. If the `fieldOrder` option is specified then the
55 | * order will be dependend on the order specified in the `fieldOrder`
56 | * array. If not provided the order will be according to the order of
57 | * the fields specified under the `fieldConfig` option, and if none of
58 | * the above is given then it will fallback to the order in which they
59 | * are retrieved from the model.
60 | *
61 | * @param array $attributes the attributes reference for the model
62 | *
63 | * @return null
64 | */
65 | public function sortFields(array &$attributes)
66 | {
67 | //field configurations
68 | $fieldConfig = ArrayHelper::getValue($this->stepConfig, 'fieldConfig', false);
69 |
70 | $defaultOrder = $fieldConfig !== false ? array_keys($fieldConfig) : false;
71 |
72 | $fieldOrder = ArrayHelper::getValue($this->stepConfig, 'fieldOrder', $defaultOrder);
73 |
74 | if ($fieldOrder) {
75 |
76 | $orderedAttributes = [];
77 | $unorderedAttributes = [];
78 |
79 | foreach ($attributes as $item) {
80 | $attribute = isset($item['attribute']) ? $item['attribute'] : $item;
81 |
82 | $moveToIndex = array_search($attribute, $fieldOrder);
83 |
84 | if ($moveToIndex !== false) {
85 | $orderedAttributes[$moveToIndex] = $item;
86 | continue;
87 | }
88 | $unorderedAttributes[] = $item;
89 | }
90 |
91 | //sort new order according to keys
92 | ksort($orderedAttributes);
93 |
94 | //merge array with unordered attributes
95 | $attributes = array_merge($orderedAttributes, $unorderedAttributes);
96 | }
97 | return $attributes;
98 | }
99 |
100 | /**
101 | * Filters the step fields for the `except` and `only` options if mentioned
102 | *
103 | * @param object $model instance of the model dedicated for the step
104 | * @param array $onlyFields the field to be populated only
105 | * @param array $disabledFields the fields to be ignored
106 | *
107 | * @return array $fields
108 | */
109 | public function getStepFields(Model $model, array $onlyFields = [], array $disabledFields = [])
110 | {
111 | //return $onlyFields list
112 | if (!empty($onlyFields)) {
113 | return array_values(
114 | array_filter(
115 | array_keys($model->getAttributes($model->safeAttributes())),
116 | function ($item) use ($onlyFields) {
117 | return in_array($item, $onlyFields);
118 | }
119 | )
120 | );
121 | }
122 |
123 | //return all fields list for the model
124 | return array_filter(
125 | array_keys($model->getAttributes($model->safeAttributes())),
126 | function ($item) use ($disabledFields) {
127 | return !in_array($item, $disabledFields);
128 | }
129 | );
130 | }
131 | }
132 |
--------------------------------------------------------------------------------
/src/step/Tabular.php:
--------------------------------------------------------------------------------
1 | _persistenceEvents;
80 | }
81 |
82 | /**
83 | * Returns the tabularEventJs
84 | *
85 | * @return mixed
86 | */
87 | public function getTabularEventJs()
88 | {
89 | return $this->_tabularEventJs;
90 | }
91 |
92 | /**
93 | * Sets the Dependent Input script
94 | *
95 | * @param string $script the script for the dependent input
96 | */
97 | public function setDependentInputScript($script)
98 | {
99 | $this->_dependentInputScript = $script;
100 | }
101 |
102 | /**
103 | * Returns the dependent input script
104 | *
105 | * @return mixed
106 | */
107 | public function getDependentInputScript()
108 | {
109 | return $this->_dependentInputScript;
110 | }
111 |
112 | /**
113 | * Creates the tabular step
114 | *
115 | * @return mixed
116 | */
117 | public function create()
118 | {
119 |
120 | //field configurations
121 | $fieldConfig = ArrayHelper::getValue($this->stepConfig, 'fieldConfig', false);
122 |
123 | //disabled fields
124 | $disabledFields = ArrayHelper::getValue($fieldConfig, 'except', []);
125 |
126 | //get the step headings
127 | $stepHeadings = ArrayHelper::getValue($this->stepConfig, 'stepHeadings', false);
128 |
129 | //only fields
130 | $onlyFields = ArrayHelper::getValue($fieldConfig, 'only', []);
131 |
132 | $html = '';
133 |
134 | $sorter = Yii::createObject(
135 | [
136 | 'class' => Sorter::class,
137 | 'stepConfig' => $this->stepConfig,
138 | ]
139 | );
140 |
141 | foreach ($this->models as $modelIndex => $model) {
142 |
143 | //get safe attributes
144 | $attributes = $sorter->getStepFields($model, $onlyFields, $disabledFields);
145 |
146 | //sort fields
147 | $sorter->sortFields($attributes);
148 |
149 | //add tabular row if limit not exceed
150 | if (!$this->addTabularRow($model, $modelIndex, $html, $fieldConfig, $attributes, $stepHeadings)) {
151 | break;
152 | }
153 | }
154 |
155 | return $html;
156 |
157 | }
158 |
159 | /**
160 | * Adds a tabular row in the tabular step
161 | *
162 | * @param object $model the model object
163 | * @param integer $modelIndex the model index for the tabular step model
164 | * @param integer $stepIndex the current step index
165 | * @param string $htmlFields the html for the fields
166 | * @param array $fieldConfig the field configurations
167 | * @param array $attributes the list of the attributes in the current model
168 | * @param integer $limitRows the rows limit if set
169 | * @param mixed $stepHeadings the stepheadings configurations
170 | *
171 | * @return boolean
172 | */
173 | protected function addTabularRow(
174 | Model $model, $modelIndex, &$htmlFields,
175 | array $fieldConfig, array $attributes,
176 | $stepHeadings
177 | ) {
178 |
179 | //limit not exceeded
180 | if ($this->allowedRowLimit($modelIndex)) {
181 | //start the row constainer
182 | $htmlFields .= Html::beginTag('div', ['id' => 'row_' . $modelIndex, 'class' => 'tabular-row']);
183 |
184 | //add the remove icon if edit mode and more than one rows
185 | $htmlFields .= Html::tag('i', '', ['class' => 'remove-row formwizard-x-ico', 'data' => ['rowid' => $modelIndex]]);
186 |
187 | //generate the html for the step
188 | $htmlFields .= $this->_createTabularStepHtml($attributes, $modelIndex, $model, $fieldConfig, $stepHeadings);
189 |
190 | //close row div
191 | $htmlFields .= Html::endTag('div');
192 | return true;
193 | }
194 | return false;
195 | }
196 |
197 | /**
198 | * Generates Html for the tabular step fields
199 | *
200 | * @param array $attributes the attributes to iterate
201 | * @param integer $modelIndex the index of the current model
202 | * @param object $model the model object
203 | * @param array $fieldConfig customer field confitigurations
204 | * @param mixed $stepHeadings the headings configurations for the current step, false if not provided
205 | *
206 | * @return mixed
207 | */
208 | private function _createTabularStepHtml(array $attributes, $modelIndex, Model $model, array $fieldConfig, $stepHeadings)
209 | {
210 | $htmlFields = '';
211 | $stepIndex = $this->index;
212 |
213 | //prefix attributes with model name
214 | $attributesPrefixed = preg_filter('/^/', strtolower($model->formName()) . '.', $attributes);
215 |
216 | //iterate all fields associated to the relevant model
217 | foreach ($attributes as $attributeIndex => $attribute) {
218 |
219 | //attribute name
220 | $attributeName = "[$modelIndex]" . $attribute;
221 | $customConfigDefinedForField = $fieldConfig && (isset($fieldConfig[$attribute]) || isset($fieldConfig[$attributesPrefixed[$attributeIndex]]));
222 |
223 | //has heading for the field
224 | $hasHeading = false !== $stepHeadings;
225 |
226 | //add heading
227 | if ($hasHeading) {
228 | $htmlFields .= $this->addHeading($stepHeadings, $attribute);
229 | }
230 |
231 | //if custom config available for field
232 | if ($customConfigDefinedForField) {
233 |
234 | $customFieldConfig = (isset($fieldConfig[$attributesPrefixed[$attributeIndex]])) ? $fieldConfig[$attributesPrefixed[$attributeIndex]] : $fieldConfig[$attribute];
235 | $dependentInput = ArrayHelper::getValue($customFieldConfig, 'depends', false);
236 |
237 | //if filtered field
238 | $isFilteredField = $customFieldConfig === false;
239 |
240 | //skip the field and go to next
241 | if ($isFilteredField) {
242 | continue;
243 | }
244 |
245 | //custom field population
246 | $htmlFields .= $this->createCustomInput(
247 | $model,
248 | $attributeName,
249 | $customFieldConfig
250 | );
251 |
252 | //id of the input
253 | $attributeId = Html::getInputId($model, $attributeName);
254 |
255 | //add tabular events
256 | $this->_addTabularEvents($customFieldConfig, $modelIndex, $attributeId, $stepIndex);
257 |
258 | //add the restore events
259 | $this->_addRestoreEvents($customFieldConfig, $attributeId);
260 |
261 | //add dependent input script if available
262 | $dependentInput && $this->_addDependentInputScript($dependentInput, $attributeId, $model, $attributeIndex, $modelIndex);
263 |
264 | //go to next iteration, add after removing the else part of this if statement
265 | continue;
266 | }
267 |
268 | //default field population
269 | $htmlFields .= $this->createDefaultInput($model, $attributeName);
270 | }
271 |
272 | return $htmlFields;
273 | }
274 |
275 | /**
276 | * Adds tabular events for the attribute
277 | *
278 | * @param array $attributeConfig attribute configurations passed
279 | * @param int $modelIndex the index of the current model
280 | * @param string $attributeId the id of the current field
281 | * @param int $index the index of the current step
282 | *
283 | * @return null
284 | */
285 | private function _addTabularEvents(array $attributeConfig, $modelIndex, $attributeId, $index)
286 | {
287 | //get the tabular events for the field
288 | $tabularEvents = ArrayHelper::getValue($attributeConfig, 'tabularEvents', false);
289 |
290 | //check if tabular step and tabularEvents provided for field
291 | if (is_array($tabularEvents) && $modelIndex == 0) {
292 |
293 | //id of the form
294 | $formId = $this->formOptions['id'];
295 |
296 | //iterate all events attached and bind them
297 | foreach ($tabularEvents as $eventName => $callback) {
298 | //get the call back
299 | $eventCallBack = new JsExpression($callback);
300 |
301 | $this->_bindEvents($eventName, $eventCallBack, $formId, $index, $attributeId);
302 | }
303 | }
304 | }
305 |
306 | /**
307 | * Binds the tabular events provided by the user
308 | *
309 | * @param string $eventName the name of the event to bind
310 | * @param string $eventCallBack the js callback event provided by the user
311 | * @param string $formId the id of the form
312 | * @param integer $index the current model index
313 | * @param string $attributeId the attribute id to triger the event for
314 | *
315 | * @return null
316 | */
317 | private function _bindEvents($eventName, $eventCallBack, $formId, $index, $attributeId)
318 | {
319 | $formEvents = [
320 | 'afterInsert' => function ($eventName, $formId, $index, $eventCallBack) {
321 | $this->_tabularEventJs .= <<div[id^='row_']",{$eventCallBack});
323 | JS;
324 | },
325 | 'afterClone' => function ($eventName, $formId, $index, $eventCallBack, $attributeId) {
326 | $this->_tabularEventJs .= << function ($eventName, $formId, $index, $eventCallBack, $attributeId) {
331 | $this->_tabularEventJs .= <<_addHeading($headingConfig);
29 | }
30 | return '';
31 | }
32 |
33 | /**
34 | * Allowed Row limit
35 | *
36 | * @param int $modelIndex the model index
37 | *
38 | * @return mixed
39 | */
40 | public function allowedRowLimit($modelIndex)
41 | {
42 | return $this->limit === FormWizard::ROWS_UNLIMITED || $this->limit > $modelIndex;
43 | }
44 |
45 | /**
46 | * Creates a customized input field according to the
47 | * structured option for the steps by user
48 | *
49 | * @param object $model instance of the current model
50 | * @param string $attribute name of the current field
51 | * @param array $fieldConfig config for the current field
52 | *
53 | * @return \yii\widgets\ActiveField
54 | */
55 | public function createCustomInput(Model $model, $attribute, array $fieldConfig)
56 | {
57 |
58 | //get the options
59 | list(
60 | $options, $isMultiField, $fieldType, $widget, $template, $containerOptions, $inputOptions, $itemsList, $label, $labelOptions, $hintText, $activeFieldOptions
61 | ) = $this->_parseFieldConfig($fieldConfig);
62 |
63 | //create field
64 | $field = $this->createField(
65 | $model,
66 | $attribute,
67 | array_merge(
68 | $activeFieldOptions,
69 | [
70 | 'template' => $template,
71 | 'options' => $containerOptions,
72 | 'inputOptions' => $inputOptions,
73 | ]
74 | ),
75 | $isMultiField
76 | );
77 |
78 | //widget
79 | if ($widget) {
80 | $field = $field->widget($widget, $options)->label($label, $labelOptions);
81 | return (!$hintText) ? $field : $field->hint($hintText);
82 | }
83 |
84 | //remove the type and itemList from options list
85 | if (isset($options['type']) && $options['type'] !== 'number') {
86 | unset($options['type']);
87 | }
88 |
89 | //unset the itemsList from the options list
90 | unset($options['itemsList']);
91 |
92 | //init the options for the field types
93 | $fieldTypeOptions = [
94 | 'field' => $field,
95 | 'options' => $options,
96 | 'labelOptions' => $labelOptions,
97 | 'label' => $label,
98 | 'itemsList' => $itemsList,
99 | ];
100 |
101 | //create the field
102 | return $this->_createField($fieldType, $fieldTypeOptions, $hintText);
103 | }
104 |
105 | /**
106 | * Creates a default field for the steps if no fields under
107 | * the activefield config is provided
108 | *
109 | * @param object $model instance of the current model
110 | * @param string $attribute name of the attribute / field
111 | *
112 | * @return \yii\widgets\ActiveField
113 | */
114 | public function createDefaultInput(Model $model, $attribute)
115 | {
116 | //create field
117 | $field = $this->createField($model, $attribute);
118 | return $field->textInput()->label(null, ['class' => 'form-label']);
119 | }
120 |
121 | /**
122 | * Creates a default ActiveFieldObject
123 | *
124 | * @param object $model instance of the current model
125 | * @param string $attribute name of the current field / attribute
126 | * @param array $fieldOptions options for the field as in
127 | * \yii\widgets\ActiveField `fieldOptions`
128 | * @param boolean $isMulti determines if the field will be using array name
129 | * or not for example : first_name[] will be used
130 | * if true and first_name if false
131 | *
132 | * @return \yii\widgets\ActiveField
133 | */
134 | public function createField(
135 | Model $model,
136 | $attribute,
137 | array $fieldOptions = [],
138 | $isMulti = false
139 | ) {
140 | return $this->form->field(
141 | $model,
142 | $attribute . ($isMulti ? '[]' : ''),
143 | $fieldOptions
144 | );
145 | }
146 |
147 | /**
148 | * Parse the configurations for the field
149 | *
150 | * @param array $fieldConfig the configurations array passed by the user
151 | *
152 | * @return array
153 | */
154 | protected function _parseFieldConfig(array $fieldConfig)
155 | {
156 | //options
157 | $options = ArrayHelper::getValue($fieldConfig, 'options', []);
158 |
159 | //is multi field name
160 | $isMultiField = Arrayhelper::getValue($fieldConfig, 'multifield', false);
161 |
162 | //field type
163 | $fieldType = ArrayHelper::getValue($options, 'type', 'text');
164 |
165 | //widget
166 | $widget = ArrayHelper::getValue($fieldConfig, 'widget', false);
167 |
168 | //label configuration
169 | $labelConfig = ArrayHelper::getValue($fieldConfig, 'labelOptions', null);
170 |
171 | //template
172 | $template = ArrayHelper::getValue(
173 | $fieldConfig,
174 | 'template',
175 | "{label}\n{input}\n{hint}\n{error}"
176 | );
177 |
178 | //container
179 | $containerOptions = ArrayHelper::getValue(
180 | $fieldConfig,
181 | 'containerOptions',
182 | []
183 | );
184 |
185 | //inputOptions
186 | $inputOptions = ArrayHelper::getValue($fieldConfig, 'inputOptions', []);
187 |
188 | //items list
189 | $itemsList = ArrayHelper::getValue($options, 'itemsList', '');
190 |
191 | //label text
192 | $label = ArrayHelper::getValue($labelConfig, 'label', null);
193 |
194 | //label options
195 | $labelOptions = ArrayHelper::getValue($labelConfig, 'options', []);
196 |
197 | //get the hint text for the field
198 | $hintText = ArrayHelper::getValue($fieldConfig, 'hint', false);
199 |
200 | $this->_removeWidgetOptions($fieldConfig);
201 |
202 | return [$options, $isMultiField, $fieldType, $widget, $template, $containerOptions, $inputOptions, $itemsList, $label, $labelOptions, $hintText, $fieldConfig];
203 | }
204 |
205 | /**
206 | * Adds the dependent input script for the inputs
207 | *
208 | * @param array $dependentInput the dependent input configurations
209 | * @param string $attributeId the id of the input it is applied on
210 | * @param object $model the model object for the dependent input
211 | * @param integer $attributeIndex the attribute index of the current attribute
212 | * @param integer $modelIndex the model index of the current attribute, used for tabular step
213 | *
214 | * @return null
215 | */
216 | private function _addDependentInputScript(array $dependentInput, $attributeId, Model $model, $attributeIndex, $modelIndex = 0)
217 | {
218 | $dependentAttribute = $dependentInput['attribute'];
219 | $dependentValue = $model->$dependentAttribute;
220 | $dependentValueRequired = $dependentInput['when'];
221 | $dependentCondition = ArrayHelper::getValue($dependentInput, 'condition', '==');
222 |
223 | $dependentActionThen = ArrayHelper::getValue(
224 | $dependentInput,
225 | 'then',
226 | "function(){\$('#{$attributeId}').show();}"
227 | );
228 |
229 | $dependentActionElse = ArrayHelper::getValue(
230 | $dependentInput,
231 | 'else',
232 | "function(){\$('#{$attributeId}').hide();}"
233 | );
234 |
235 | $this->_dependentInputScript .= << $headingClass]);
262 | }
263 |
264 | /**
265 | * Adds the restore events for the fields
266 | *
267 | * @param array $attributeConfig the configurations for the attribute
268 | * @param string $attributeId the field attribute id
269 | *
270 | * @return null
271 | */
272 | private function _addRestoreEvents(array $attributeConfig, $attributeId)
273 | {
274 | $persistenceEvents = ArrayHelper::getValue($attributeConfig, 'persistencEvents', []);
275 | $formId = $this->formOptions['id'];
276 |
277 | foreach ($persistenceEvents as $eventName => $callback) {
278 | $eventCallBack = new JsExpression($callback);
279 | $this->_persistenceEvents .= << function ($params) {
298 | $field = $params['field'];
299 | $options = $params['options'];
300 | $label = $params['label'];
301 | $labelOptions = $params['labelOptions'];
302 |
303 | return $field->textInput($options)->label($label, $labelOptions);
304 | },
305 | 'number' => function ($params) {
306 | $field = $params['field'];
307 | $options = $params['options'];
308 | $label = $params['label'];
309 | $labelOptions = $params['labelOptions'];
310 |
311 | return $field->textInput($options)->label($label, $labelOptions);
312 | },
313 | 'dropdown' => function ($params) {
314 | $field = $params['field'];
315 | $options = $params['options'];
316 | $label = $params['label'];
317 | $labelOptions = $params['labelOptions'];
318 | $itemsList = $params['itemsList'];
319 |
320 | return $field->dropDownList($itemsList, $options)
321 | ->label($label, $labelOptions);
322 | },
323 | 'radio' => function ($params) {
324 | $field = $params['field'];
325 | $options = $params['options'];
326 | $label = $params['label'];
327 | $labelOptions = $params['labelOptions'];
328 | $itemsList = $params['itemsList'];
329 |
330 | if (is_array($itemsList)) {
331 | return $field->radioList($itemsList, $options)
332 | ->label($label, $labelOptions);
333 | }
334 | return $field->radio($options);
335 | },
336 | 'checkbox' => function ($params) {
337 | $field = $params['field'];
338 | $options = $params['options'];
339 | $label = $params['label'];
340 | $labelOptions = $params['labelOptions'];
341 | $itemsList = $params['itemsList'];
342 |
343 | //if checkboxList needs to be created
344 | if (is_array($itemsList)) {
345 | return $field->checkboxList($itemsList, $options)
346 | ->label($label, $labelOptions);
347 | }
348 |
349 | //if a single checkbox needs to be created
350 | $labelNull = $label === null;
351 | $labelOptionsEmpty = empty($labelOptions);
352 | $nothingSetByUser = ($labelNull && $labelOptionsEmpty);
353 | $label = $nothingSetByUser ? false : $label;
354 |
355 | return $field->checkbox($options)->label($label, $labelOptions);
356 | },
357 | 'textarea' => function ($params) {
358 | $field = $params['field'];
359 | $options = $params['options'];
360 | $label = $params['label'];
361 | $labelOptions = $params['labelOptions'];
362 |
363 | return $field->textarea($options)->label($label, $labelOptions);
364 | },
365 | 'file' => function ($params) {
366 | $field = $params['field'];
367 | $options = $params['options'];
368 | $label = $params['label'];
369 | $labelOptions = $params['labelOptions'];
370 |
371 | return $field->fileInput($options)->label($label, $labelOptions);
372 | },
373 | 'hidden' => function ($params) {
374 | $field = $params['field'];
375 | $options = $params['options'];
376 |
377 | return $field->hiddenInput($options)->label(false);
378 | },
379 | 'password' => function ($params) {
380 | $field = $params['field'];
381 | $options = $params['options'];
382 | $label = $params['label'];
383 | $labelOptions = $params['labelOptions'];
384 |
385 | return $field->passwordInput($options)->label($label, $labelOptions);
386 | },
387 | ];
388 |
389 | //create field depending on the type of the value provided
390 | if (array_key_exists($fieldType, $defaultFieldTypes)) {
391 | $field = $defaultFieldTypes[$fieldType]($fieldTypeOptions);
392 | return (!$hintText) ? $field : $field->hint($hintText);
393 | }
394 | }
395 |
396 | /**
397 | * Remove custom widget options fro
398 | * @param $fieldConfig
399 | *
400 | * @return mixed
401 | */
402 | private function _removeWidgetOptions(&$fieldConfig)
403 | {
404 | $defaultOptions = [
405 | 'containerOptions',
406 | 'hint',
407 | 'itemsList',
408 | 'inputOptions',
409 | 'template',
410 | 'labelOptions',
411 | 'widget',
412 | 'options',
413 | 'multifield',
414 | 'label',
415 | 'tabularEvents',
416 | ];
417 |
418 | foreach ($defaultOptions as $option) {
419 | if (array_key_exists($option, $fieldConfig)) {
420 | unset($fieldConfig[$option]);
421 | }
422 | }
423 |
424 | return $fieldConfig;
425 | }
426 | }
427 |
--------------------------------------------------------------------------------
/src/traits/WizardTrait.php:
--------------------------------------------------------------------------------
1 | 1) {
29 | throw new ArgException(self::MSG_TABULAR_CONSTRAINT);
30 | }
31 | return true;
32 | }
33 |
34 | public function isFormIdSet()
35 | {
36 | return isset($this->formOptions['id']);
37 | }
38 |
39 | public function isEmptySteps()
40 | {
41 | return empty($this->steps);
42 | }
43 |
44 | public function isContainerIdSet()
45 | {
46 | return isset($this->wizardContainerId);
47 | }
48 |
49 | /**
50 | * @return mixed
51 | */
52 | public function isThemeMaterial()
53 | {
54 | return $this->theme == self::THEME_MATERIAL || $this->theme == self::THEME_MATERIAL_V;
55 | }
56 |
57 | /**
58 | * @return mixed
59 | */
60 | public function isBs3()
61 | {
62 | return $this->_bsVersion == self::BS_3;
63 | }
64 |
65 | /**
66 | * @param $stepType
67 | * @return mixed
68 | */
69 | public function isTabularStep($stepType)
70 | {
71 | return $stepType === self::STEP_TYPE_TABULAR;
72 | }
73 |
74 | public function isPreviewStep($step){
75 | return empty($step['model']);
76 | }
77 | }
78 |
--------------------------------------------------------------------------------