fomantic-ui 2.9.4-beta.1 → 2.9.4-beta.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.all-contributorsrc +29 -1
- package/.eslintrc.js +17 -0
- package/.github/FUNDING.yml +1 -1
- package/.github/workflows/ci.yml +8 -8
- package/.github/workflows/depsreview.yml +14 -0
- package/.github/workflows/nightly.yml +1 -1
- package/.github/workflows/release.yml +1 -1
- package/CONTRIBUTORS.md +5 -0
- package/README.md +2 -12
- package/dist/components/accordion.css +1 -1
- package/dist/components/accordion.js +4 -2
- package/dist/components/accordion.min.css +1 -1
- package/dist/components/accordion.min.js +2 -2
- package/dist/components/ad.css +1 -1
- package/dist/components/ad.min.css +1 -1
- package/dist/components/api.js +7 -3
- package/dist/components/api.min.js +2 -2
- package/dist/components/breadcrumb.css +1 -1
- package/dist/components/breadcrumb.min.css +1 -1
- package/dist/components/button.css +21 -3
- package/dist/components/button.min.css +2 -2
- package/dist/components/calendar.css +1 -1
- package/dist/components/calendar.js +47 -12
- package/dist/components/calendar.min.css +1 -1
- package/dist/components/calendar.min.js +3 -3
- package/dist/components/card.css +1 -1
- package/dist/components/card.min.css +1 -1
- package/dist/components/checkbox.css +1 -1
- package/dist/components/checkbox.js +10 -4
- package/dist/components/checkbox.min.css +1 -1
- package/dist/components/checkbox.min.js +3 -3
- package/dist/components/comment.css +1 -1
- package/dist/components/comment.min.css +1 -1
- package/dist/components/container.css +1 -1
- package/dist/components/container.min.css +1 -1
- package/dist/components/dimmer.css +7 -3
- package/dist/components/dimmer.js +4 -2
- package/dist/components/dimmer.min.css +2 -2
- package/dist/components/dimmer.min.js +2 -2
- package/dist/components/divider.css +1 -1
- package/dist/components/divider.min.css +1 -1
- package/dist/components/dropdown.css +46 -40
- package/dist/components/dropdown.js +110 -35
- package/dist/components/dropdown.min.css +2 -2
- package/dist/components/dropdown.min.js +3 -3
- package/dist/components/embed.css +1 -1
- package/dist/components/embed.js +17 -7
- package/dist/components/embed.min.css +1 -1
- package/dist/components/embed.min.js +3 -3
- package/dist/components/emoji.css +4309 -3713
- package/dist/components/emoji.min.css +2 -2
- package/dist/components/feed.css +12 -1
- package/dist/components/feed.min.css +2 -2
- package/dist/components/flag.css +3 -1
- package/dist/components/flag.min.css +2 -2
- package/dist/components/flyout.css +3 -3
- package/dist/components/flyout.js +4 -2
- package/dist/components/flyout.min.css +1 -1
- package/dist/components/flyout.min.js +2 -2
- package/dist/components/form.css +28 -7
- package/dist/components/form.js +74 -29
- package/dist/components/form.min.css +2 -2
- package/dist/components/form.min.js +3 -3
- package/dist/components/grid.css +5 -5
- package/dist/components/grid.min.css +2 -2
- package/dist/components/header.css +4 -1
- package/dist/components/header.min.css +2 -2
- package/dist/components/icon.css +1 -1
- package/dist/components/icon.min.css +1 -1
- package/dist/components/image.css +1 -1
- package/dist/components/image.min.css +1 -1
- package/dist/components/input.css +30 -10
- package/dist/components/input.min.css +2 -2
- package/dist/components/item.css +1 -1
- package/dist/components/item.min.css +1 -1
- package/dist/components/label.css +7 -2
- package/dist/components/label.min.css +2 -2
- package/dist/components/list.css +1 -1
- package/dist/components/list.min.css +1 -1
- package/dist/components/loader.css +1 -1
- package/dist/components/loader.min.css +1 -1
- package/dist/components/menu.css +1 -2
- package/dist/components/menu.min.css +2 -2
- package/dist/components/message.css +2 -1
- package/dist/components/message.min.css +2 -2
- package/dist/components/modal.css +3 -3
- package/dist/components/modal.js +7 -3
- package/dist/components/modal.min.css +1 -1
- package/dist/components/modal.min.js +2 -2
- package/dist/components/nag.css +1 -1
- package/dist/components/nag.js +11 -5
- package/dist/components/nag.min.css +1 -1
- package/dist/components/nag.min.js +3 -3
- package/dist/components/placeholder.css +1 -1
- package/dist/components/placeholder.min.css +1 -1
- package/dist/components/popup.css +1 -2
- package/dist/components/popup.js +10 -4
- package/dist/components/popup.min.css +2 -2
- package/dist/components/popup.min.js +2 -2
- package/dist/components/progress.css +15 -6
- package/dist/components/progress.js +4 -2
- package/dist/components/progress.min.css +2 -2
- package/dist/components/progress.min.js +2 -2
- package/dist/components/rail.css +1 -1
- package/dist/components/rail.min.css +1 -1
- package/dist/components/rating.css +1 -1
- package/dist/components/rating.js +4 -2
- package/dist/components/rating.min.css +1 -1
- package/dist/components/rating.min.js +2 -2
- package/dist/components/reset.css +1 -1
- package/dist/components/reset.min.css +1 -1
- package/dist/components/reveal.css +1 -1
- package/dist/components/reveal.min.css +1 -1
- package/dist/components/search.css +34 -23
- package/dist/components/search.js +78 -14
- package/dist/components/search.min.css +2 -2
- package/dist/components/search.min.js +3 -3
- package/dist/components/segment.css +1 -1
- package/dist/components/segment.min.css +1 -1
- package/dist/components/shape.css +1 -1
- package/dist/components/shape.js +7 -5
- package/dist/components/shape.min.css +1 -1
- package/dist/components/shape.min.js +3 -3
- package/dist/components/sidebar.css +1 -1
- package/dist/components/sidebar.js +4 -2
- package/dist/components/sidebar.min.css +1 -1
- package/dist/components/sidebar.min.js +2 -2
- package/dist/components/site.css +14 -6
- package/dist/components/site.js +4 -2
- package/dist/components/site.min.css +2 -2
- package/dist/components/site.min.js +2 -2
- package/dist/components/slider.css +152 -2
- package/dist/components/slider.js +142 -44
- package/dist/components/slider.min.css +2 -2
- package/dist/components/slider.min.js +3 -3
- package/dist/components/state.js +4 -2
- package/dist/components/state.min.js +2 -2
- package/dist/components/statistic.css +1 -1
- package/dist/components/statistic.min.css +1 -1
- package/dist/components/step.css +992 -86
- package/dist/components/step.min.css +2 -2
- package/dist/components/sticky.css +1 -1
- package/dist/components/sticky.js +4 -2
- package/dist/components/sticky.min.css +1 -1
- package/dist/components/sticky.min.js +2 -2
- package/dist/components/tab.css +1 -1
- package/dist/components/tab.js +4 -2
- package/dist/components/tab.min.css +1 -1
- package/dist/components/tab.min.js +2 -2
- package/dist/components/table.css +32 -21
- package/dist/components/table.min.css +2 -2
- package/dist/components/text.css +1 -1
- package/dist/components/text.min.css +1 -1
- package/dist/components/toast.css +1 -1
- package/dist/components/toast.js +7 -3
- package/dist/components/toast.min.css +1 -1
- package/dist/components/toast.min.js +3 -3
- package/dist/components/transition.css +1 -1
- package/dist/components/transition.js +7 -3
- package/dist/components/transition.min.css +1 -1
- package/dist/components/transition.min.js +2 -2
- package/dist/components/visibility.js +4 -2
- package/dist/components/visibility.min.js +2 -2
- package/dist/semantic.css +6226 -3986
- package/dist/semantic.js +580 -195
- package/dist/semantic.min.css +3 -3
- package/dist/semantic.min.js +3 -3
- package/dist/themes/basic/assets/fonts/LICENSE.txt +91 -0
- package/dist/themes/default/assets/fonts/LICENSE_Lato.txt +94 -0
- package/dist/themes/default/assets/fonts/LICENSE_icons.txt +165 -0
- package/dist/themes/github/assets/fonts/LICENSE.txt +94 -0
- package/dist/themes/material/assets/fonts/LICENSE.txt +202 -0
- package/package.json +14 -14
- package/semantic.json.example +1 -1
- package/src/definitions/behaviors/api.js +6 -2
- package/src/definitions/behaviors/form.js +73 -28
- package/src/definitions/behaviors/state.js +3 -1
- package/src/definitions/behaviors/visibility.js +3 -1
- package/src/definitions/collections/form.less +56 -27
- package/src/definitions/collections/grid.less +85 -70
- package/src/definitions/collections/menu.less +38 -27
- package/src/definitions/collections/message.less +1 -0
- package/src/definitions/collections/table.less +183 -157
- package/src/definitions/elements/button.less +61 -25
- package/src/definitions/elements/container.less +6 -4
- package/src/definitions/elements/divider.less +4 -1
- package/src/definitions/elements/emoji.less +3 -1
- package/src/definitions/elements/header.less +12 -4
- package/src/definitions/elements/icon.less +35 -28
- package/src/definitions/elements/input.less +35 -19
- package/src/definitions/elements/label.less +19 -8
- package/src/definitions/elements/list.less +28 -21
- package/src/definitions/elements/loader.less +17 -12
- package/src/definitions/elements/segment.less +12 -7
- package/src/definitions/elements/step.less +405 -87
- package/src/definitions/globals/site.js +3 -1
- package/src/definitions/globals/site.less +17 -12
- package/src/definitions/modules/accordion.js +3 -1
- package/src/definitions/modules/accordion.less +15 -13
- package/src/definitions/modules/calendar.js +46 -11
- package/src/definitions/modules/calendar.less +6 -4
- package/src/definitions/modules/checkbox.js +9 -3
- package/src/definitions/modules/checkbox.less +12 -6
- package/src/definitions/modules/dimmer.js +3 -1
- package/src/definitions/modules/dimmer.less +16 -10
- package/src/definitions/modules/dropdown.js +109 -34
- package/src/definitions/modules/dropdown.less +109 -78
- package/src/definitions/modules/embed.js +16 -6
- package/src/definitions/modules/flyout.js +3 -1
- package/src/definitions/modules/flyout.less +51 -45
- package/src/definitions/modules/modal.js +6 -2
- package/src/definitions/modules/modal.less +109 -82
- package/src/definitions/modules/nag.js +10 -4
- package/src/definitions/modules/nag.less +8 -4
- package/src/definitions/modules/popup.js +9 -3
- package/src/definitions/modules/popup.less +3 -1
- package/src/definitions/modules/progress.js +3 -1
- package/src/definitions/modules/progress.less +24 -6
- package/src/definitions/modules/rating.js +3 -1
- package/src/definitions/modules/search.js +77 -13
- package/src/definitions/modules/search.less +41 -25
- package/src/definitions/modules/shape.js +6 -4
- package/src/definitions/modules/sidebar.js +3 -1
- package/src/definitions/modules/slider.js +141 -43
- package/src/definitions/modules/slider.less +129 -27
- package/src/definitions/modules/sticky.js +3 -1
- package/src/definitions/modules/tab.js +3 -1
- package/src/definitions/modules/toast.js +6 -2
- package/src/definitions/modules/toast.less +35 -24
- package/src/definitions/modules/transition.js +6 -2
- package/src/definitions/views/card.less +7 -5
- package/src/definitions/views/feed.less +14 -1
- package/src/definitions/views/item.less +7 -5
- package/src/themes/basic/assets/fonts/LICENSE.txt +91 -0
- package/src/themes/default/assets/fonts/LICENSE_Lato.txt +94 -0
- package/src/themes/default/assets/fonts/LICENSE_icons.txt +165 -0
- package/src/themes/default/collections/form.variables +1 -0
- package/src/themes/default/elements/button.variables +3 -0
- package/src/themes/default/elements/emoji.variables +172 -23
- package/src/themes/default/elements/flag.variables +3 -3
- package/src/themes/default/elements/step.variables +33 -0
- package/src/themes/default/globals/site.variables +3 -0
- package/src/themes/default/globals/variation.variables +24 -2
- package/src/themes/default/modules/dropdown.variables +3 -0
- package/src/themes/default/modules/progress.variables +1 -1
- package/src/themes/default/modules/search.variables +15 -12
- package/src/themes/default/modules/slider.variables +10 -0
- package/src/themes/default/views/feed.variables +3 -0
- package/src/themes/github/assets/fonts/LICENSE.txt +94 -0
- package/src/themes/joypixels/elements/emoji.variables +183 -22
- package/src/themes/material/assets/fonts/LICENSE.txt +202 -0
- package/tasks/admin/components/create.js +4 -4
- package/tasks/admin/components/init.js +2 -2
- package/tasks/admin/components/update.js +3 -3
- package/tasks/admin/distributions/create.js +3 -3
- package/tasks/admin/distributions/init.js +2 -2
- package/tasks/admin/distributions/update.js +4 -4
- package/tasks/build/assets.js +1 -1
- package/tasks/build/css.js +19 -10
- package/tasks/build/javascript.js +12 -5
- package/tasks/check-install.js +1 -1
- package/tasks/config/defaults.js +4 -0
- package/tasks/config/project/release.js +19 -1
- package/tasks/config/tasks.js +7 -7
- package/tasks/docs/build.js +3 -3
- package/tasks/docs/metadata.js +1 -1
- package/tasks/docs/serve.js +3 -1
- package/tasks/install.js +2 -2
- package/tasks/watch.js +1 -1
- package/types/fomantic-ui-accordion.d.ts +1 -1
- package/types/fomantic-ui-api.d.ts +9 -3
- package/types/fomantic-ui-calendar.d.ts +114 -13
- package/types/fomantic-ui-checkbox.d.ts +14 -4
- package/types/fomantic-ui-dimmer.d.ts +1 -1
- package/types/fomantic-ui-dropdown.d.ts +82 -44
- package/types/fomantic-ui-embed.d.ts +19 -2
- package/types/fomantic-ui-flyout.d.ts +25 -11
- package/types/fomantic-ui-form.d.ts +128 -20
- package/types/fomantic-ui-modal.d.ts +101 -5
- package/types/fomantic-ui-nag.d.ts +4 -4
- package/types/fomantic-ui-popup.d.ts +38 -12
- package/types/fomantic-ui-progress.d.ts +12 -6
- package/types/fomantic-ui-rating.d.ts +1 -1
- package/types/fomantic-ui-search.d.ts +138 -22
- package/types/fomantic-ui-shape.d.ts +2 -2
- package/types/fomantic-ui-sidebar.d.ts +4 -4
- package/types/fomantic-ui-slider.d.ts +56 -4
- package/types/fomantic-ui-sticky.d.ts +1 -1
- package/types/fomantic-ui-tab.d.ts +6 -6
- package/types/fomantic-ui-toast.d.ts +14 -2
- package/types/fomantic-ui-transition.d.ts +41 -7
- package/types/fomantic-ui-visibility.d.ts +3 -3
- package/types/index.d.ts +25 -25
- package/types/tests.ts +188 -0
- package/types/tsconfig.json +1 -1
- package/types/fomantic-ui-tests.ts +0 -25
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "fomantic-ui",
|
3
|
-
"version": "2.9.4-beta.
|
3
|
+
"version": "2.9.4-beta.100+7f5f82a",
|
4
4
|
"description": "Fomantic empowers designers and developers by creating a shared vocabulary for UI.",
|
5
5
|
"keywords": [
|
6
6
|
"fomantic-ui",
|
@@ -27,34 +27,33 @@
|
|
27
27
|
"scripts": {
|
28
28
|
"build": "gulp build",
|
29
29
|
"changelog": "auto-changelog -p",
|
30
|
-
"lint": "eslint --ext .js . && stylelint \"**/*.{css,less,overrides,variables}\"",
|
31
|
-
"lint-fix": "eslint --ext .js . --fix && stylelint \"**/*.{css,less,overrides,variables}\" --fix"
|
30
|
+
"lint": "eslint --ext .js,.ts . && stylelint \"**/*.{css,less,overrides,variables}\"",
|
31
|
+
"lint-fix": "eslint --ext .js,.ts . --fix && stylelint \"**/*.{css,less,overrides,variables}\" --fix"
|
32
32
|
},
|
33
33
|
"dependencies": {
|
34
34
|
"@actions/core": "^1.6.0",
|
35
35
|
"@octokit/core": "^3.6.0",
|
36
36
|
"@octokit/rest": "^18.12.0",
|
37
|
-
"better-console": "^1.0.
|
37
|
+
"@fomantic/better-console": "^1.0.2",
|
38
38
|
"browserslist": "^4.21.4",
|
39
39
|
"del": "^6.1.1",
|
40
40
|
"extend": "^3.0.2",
|
41
|
-
"gulp": "^
|
41
|
+
"gulp": "^5.0.0",
|
42
42
|
"gulp-autoprefixer": "^8.0.0",
|
43
|
-
"gulp-chmod": "^
|
43
|
+
"gulp-chmod": "^3.0.0",
|
44
44
|
"gulp-clean-css": "^4.3.0",
|
45
45
|
"gulp-clone": "^2.0.1",
|
46
46
|
"gulp-concat": "^2.6.1",
|
47
|
-
"gulp-concat-css": "^3.1
|
48
|
-
"gulp-concat-filenames": "^1.2.
|
49
|
-
"gulp-
|
50
|
-
"gulp-dedupe": "^0.0.2",
|
47
|
+
"@fomantic/gulp-concat-css": "^3.2.1",
|
48
|
+
"@fomantic/gulp-concat-filenames": "^1.2.1",
|
49
|
+
"@fomantic/gulp-dedupe": "^0.0.3",
|
51
50
|
"gulp-flatten": "^0.4.0",
|
52
|
-
"gulp-git": "^2.
|
53
|
-
"gulp-header": "^2.
|
54
|
-
"gulp-if": "^
|
51
|
+
"@fomantic/gulp-git": "^2.11.1",
|
52
|
+
"@fomantic/gulp-header": "^2.1.1",
|
53
|
+
"gulp-if": "^3.0.0",
|
55
54
|
"gulp-json-editor": "^2.4.3",
|
56
55
|
"gulp-less": "^5.0.0",
|
57
|
-
"gulp-plumber": "^1.
|
56
|
+
"@fomantic/gulp-plumber": "^1.2.2",
|
58
57
|
"gulp-print": "^5.0.0",
|
59
58
|
"gulp-rename": "^1.4.0",
|
60
59
|
"gulp-replace": "^1.0.0",
|
@@ -68,6 +67,7 @@
|
|
68
67
|
"merge-stream": "^2.0.0",
|
69
68
|
"mkdirp": "^1.0.4",
|
70
69
|
"normalize-path": "^3.0.0",
|
70
|
+
"ordered-read-streams": "^1.0.1",
|
71
71
|
"replace-ext": "^1.0.0",
|
72
72
|
"require-dot-file": "^0.4.0",
|
73
73
|
"wrench-sui": "^0.0.3",
|
package/semantic.json.example
CHANGED
@@ -647,7 +647,9 @@
|
|
647
647
|
module.debug('Adding error state');
|
648
648
|
module.set.error();
|
649
649
|
if (module.should.removeError()) {
|
650
|
-
setTimeout(function () {
|
650
|
+
setTimeout(function () {
|
651
|
+
module.remove.error();
|
652
|
+
}, settings.errorDuration);
|
651
653
|
}
|
652
654
|
}
|
653
655
|
module.debug('API Request failed', errorMessage, xhr);
|
@@ -971,7 +973,9 @@
|
|
971
973
|
});
|
972
974
|
}
|
973
975
|
clearTimeout(module.performance.timer);
|
974
|
-
module.performance.timer = setTimeout(function () {
|
976
|
+
module.performance.timer = setTimeout(function () {
|
977
|
+
module.performance.display();
|
978
|
+
}, 500);
|
975
979
|
},
|
976
980
|
display: function () {
|
977
981
|
var
|
@@ -38,6 +38,7 @@
|
|
38
38
|
element = this,
|
39
39
|
|
40
40
|
formErrors = [],
|
41
|
+
formErrorsTracker = {},
|
41
42
|
keyHeldDown = false,
|
42
43
|
|
43
44
|
// set at run-time
|
@@ -538,6 +539,13 @@
|
|
538
539
|
fullFields[name].rules.push({ type: rule });
|
539
540
|
});
|
540
541
|
}
|
542
|
+
|
543
|
+
$.each(fullFields[name].rules, function (index, rule) {
|
544
|
+
var ruleName = module.get.ruleName(rule);
|
545
|
+
if (ruleName === 'empty') {
|
546
|
+
module.warn('*** DEPRECATED *** : Rule "empty" for field "' + name + '" will be removed in a future version. -> Use "notEmpty" rule instead.');
|
547
|
+
}
|
548
|
+
});
|
541
549
|
});
|
542
550
|
|
543
551
|
return fullFields;
|
@@ -551,9 +559,10 @@
|
|
551
559
|
ancillary = module.get.ancillaryValue(rule),
|
552
560
|
$field = module.get.field(field.identifier),
|
553
561
|
value = $field.val(),
|
554
|
-
|
555
|
-
|
556
|
-
|
562
|
+
promptCheck = rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule,
|
563
|
+
prompt = String(isFunction(promptCheck)
|
564
|
+
? promptCheck.call($field[0], value)
|
565
|
+
: promptCheck),
|
557
566
|
requiresValue = prompt.search('{value}') !== -1,
|
558
567
|
requiresName = prompt.search('{name}') !== -1,
|
559
568
|
parts,
|
@@ -591,10 +600,10 @@
|
|
591
600
|
},
|
592
601
|
settings: function () {
|
593
602
|
if ($.isPlainObject(parameters)) {
|
594
|
-
if (parameters.fields) {
|
595
|
-
parameters.fields = module.get.fieldsFromShorthand(parameters.fields);
|
596
|
-
}
|
597
603
|
settings = $.extend(true, {}, $.fn.form.settings, parameters);
|
604
|
+
if (settings.fields) {
|
605
|
+
settings.fields = module.get.fieldsFromShorthand(settings.fields);
|
606
|
+
}
|
598
607
|
validation = $.extend(true, {}, $.fn.form.settings.defaults, settings.fields);
|
599
608
|
module.verbose('Extending settings', validation, settings);
|
600
609
|
} else {
|
@@ -619,7 +628,7 @@
|
|
619
628
|
// refresh selector cache
|
620
629
|
(instance || module).refresh();
|
621
630
|
},
|
622
|
-
field: function (identifier, strict) {
|
631
|
+
field: function (identifier, strict, ignoreMissing) {
|
623
632
|
module.verbose('Finding field with identifier', identifier);
|
624
633
|
identifier = module.escape.string(identifier);
|
625
634
|
var t;
|
@@ -639,7 +648,9 @@
|
|
639
648
|
if (t.length > 0) {
|
640
649
|
return t;
|
641
650
|
}
|
642
|
-
|
651
|
+
if (!ignoreMissing) {
|
652
|
+
module.error(error.noField.replace('{identifier}', identifier));
|
653
|
+
}
|
643
654
|
|
644
655
|
return strict ? $() : $('<input/>');
|
645
656
|
},
|
@@ -709,7 +720,7 @@
|
|
709
720
|
var
|
710
721
|
$field = $(field),
|
711
722
|
$calendar = $field.closest(selector.uiCalendar),
|
712
|
-
name = $field.prop('name'),
|
723
|
+
name = $field.prop('name') || $field.prop('id'),
|
713
724
|
value = $field.val(),
|
714
725
|
isCheckbox = $field.is(selector.checkbox),
|
715
726
|
isRadio = $field.is(selector.radio),
|
@@ -817,10 +828,10 @@
|
|
817
828
|
|
818
829
|
has: {
|
819
830
|
|
820
|
-
field: function (identifier) {
|
831
|
+
field: function (identifier, ignoreMissing) {
|
821
832
|
module.verbose('Checking for existence of a field with identifier', identifier);
|
822
833
|
|
823
|
-
return module.get.field(identifier, true).length > 0;
|
834
|
+
return module.get.field(identifier, true, ignoreMissing).length > 0;
|
824
835
|
},
|
825
836
|
|
826
837
|
},
|
@@ -938,7 +949,7 @@
|
|
938
949
|
$prompt.css('display', 'none');
|
939
950
|
}
|
940
951
|
$prompt
|
941
|
-
.appendTo($fieldGroup)
|
952
|
+
.appendTo($fieldGroup.filter('.' + className.error))
|
942
953
|
;
|
943
954
|
}
|
944
955
|
$prompt
|
@@ -1020,7 +1031,7 @@
|
|
1020
1031
|
}
|
1021
1032
|
if (rule === undefined) {
|
1022
1033
|
module.debug('Removed all rules');
|
1023
|
-
if (module.has.field(field)) {
|
1034
|
+
if (module.has.field(field, true)) {
|
1024
1035
|
validation[field].rules = [];
|
1025
1036
|
} else {
|
1026
1037
|
delete validation[field];
|
@@ -1221,7 +1232,7 @@
|
|
1221
1232
|
module.debug('Enabling auto check on required fields');
|
1222
1233
|
if (validation) {
|
1223
1234
|
$.each(validation, function (fieldName) {
|
1224
|
-
if (!module.has.field(fieldName)) {
|
1235
|
+
if (!module.has.field(fieldName, true)) {
|
1225
1236
|
module.verbose('Field not found, removing from validation', fieldName);
|
1226
1237
|
module.remove.field(fieldName);
|
1227
1238
|
}
|
@@ -1235,20 +1246,20 @@
|
|
1235
1246
|
isRequired = $el.prop('required') || $elGroup.hasClass(className.required) || $elGroup.parent().hasClass(className.required),
|
1236
1247
|
isDisabled = $el.is(':disabled') || $elGroup.hasClass(className.disabled) || $elGroup.parent().hasClass(className.disabled),
|
1237
1248
|
validation = module.get.validation($el),
|
1238
|
-
|
1249
|
+
hasNotEmptyRule = validation
|
1239
1250
|
? $.grep(validation.rules, function (rule) {
|
1240
|
-
return rule.type
|
1241
|
-
})
|
1251
|
+
return ['notEmpty', 'checked', 'empty'].indexOf(rule.type) >= 0;
|
1252
|
+
}).length > 0
|
1242
1253
|
: false,
|
1243
1254
|
identifier = module.get.identifier(validation, $el)
|
1244
1255
|
;
|
1245
|
-
if (isRequired && !isDisabled && !
|
1256
|
+
if (isRequired && !isDisabled && !hasNotEmptyRule && identifier !== undefined) {
|
1246
1257
|
if (isCheckbox) {
|
1247
1258
|
module.verbose("Adding 'checked' rule on field", identifier);
|
1248
1259
|
module.add.rule(identifier, 'checked');
|
1249
1260
|
} else {
|
1250
|
-
module.verbose("Adding '
|
1251
|
-
module.add.rule(identifier, '
|
1261
|
+
module.verbose("Adding 'notEmpty' rule on field", identifier);
|
1262
|
+
module.add.rule(identifier, 'notEmpty');
|
1252
1263
|
}
|
1253
1264
|
}
|
1254
1265
|
});
|
@@ -1275,6 +1286,7 @@
|
|
1275
1286
|
$module.removeClass(className.initial);
|
1276
1287
|
// reset errors
|
1277
1288
|
formErrors = [];
|
1289
|
+
formErrorsTracker = {};
|
1278
1290
|
if (module.determine.isValid()) {
|
1279
1291
|
module.debug('Form has no validation errors, submitting');
|
1280
1292
|
module.set.success();
|
@@ -1340,28 +1352,30 @@
|
|
1340
1352
|
var
|
1341
1353
|
identifier = field.identifier || fieldName,
|
1342
1354
|
$field = module.get.field(identifier),
|
1355
|
+
$fieldGroup = $field.closest($group),
|
1343
1356
|
$dependsField = field.depends
|
1344
1357
|
? module.get.field(field.depends)
|
1345
1358
|
: false,
|
1346
1359
|
fieldValid = true,
|
1347
1360
|
fieldErrors = [],
|
1348
|
-
isDisabled = $field.filter(':not(:disabled)').length === 0,
|
1361
|
+
isDisabled = $field.filter(':not(:disabled)').length === 0 || $fieldGroup.hasClass(className.disabled) || $fieldGroup.parent().hasClass(className.disabled),
|
1349
1362
|
validationMessage = $field[0].validationMessage,
|
1363
|
+
noNativeValidation = field.noNativeValidation || settings.noNativeValidation || $field.filter('[formnovalidate],[novalidate]').length > 0 || $module.filter('[novalidate]').length > 0,
|
1350
1364
|
errorLimit
|
1351
1365
|
;
|
1352
1366
|
if (!field.identifier) {
|
1353
1367
|
module.debug('Using field name as identifier', identifier);
|
1354
1368
|
field.identifier = identifier;
|
1355
1369
|
}
|
1356
|
-
if (validationMessage) {
|
1370
|
+
if (validationMessage && !noNativeValidation && !isDisabled) {
|
1357
1371
|
module.debug('Field is natively invalid', identifier);
|
1358
1372
|
fieldErrors.push(validationMessage);
|
1359
1373
|
fieldValid = false;
|
1360
1374
|
if (showErrors) {
|
1361
|
-
$
|
1375
|
+
$fieldGroup.addClass(className.error);
|
1362
1376
|
}
|
1363
1377
|
} else if (showErrors) {
|
1364
|
-
$
|
1378
|
+
$fieldGroup.removeClass(className.error);
|
1365
1379
|
}
|
1366
1380
|
if (isDisabled) {
|
1367
1381
|
module.debug('Field is disabled. Skipping', identifier);
|
@@ -1376,7 +1390,22 @@
|
|
1376
1390
|
var invalidFields = module.validate.rule(field, rule, true) || [];
|
1377
1391
|
if (invalidFields.length > 0) {
|
1378
1392
|
module.debug('Field is invalid', identifier, rule.type);
|
1379
|
-
|
1393
|
+
var fieldError = module.get.prompt(rule, field);
|
1394
|
+
if (!settings.inline) {
|
1395
|
+
if (
|
1396
|
+
// Always allow the first error prompt for new field identifiers
|
1397
|
+
(!(identifier in formErrorsTracker)
|
1398
|
+
// Also allow multiple error prompts per field identifier but make sure each prompt is unique
|
1399
|
+
|| formErrorsTracker[identifier].indexOf(fieldError) === -1)
|
1400
|
+
// Limit the number of unique error prompts for every field identifier if specified
|
1401
|
+
&& (!errorLimit || (formErrorsTracker[identifier] || []).length < errorLimit)
|
1402
|
+
) {
|
1403
|
+
fieldErrors.push(fieldError);
|
1404
|
+
(formErrorsTracker[identifier] = formErrorsTracker[identifier] || []).push(fieldError);
|
1405
|
+
}
|
1406
|
+
} else {
|
1407
|
+
fieldErrors.push(fieldError);
|
1408
|
+
}
|
1380
1409
|
fieldValid = false;
|
1381
1410
|
if (showErrors) {
|
1382
1411
|
$(invalidFields).closest($group).addClass(className.error);
|
@@ -1391,7 +1420,7 @@
|
|
1391
1420
|
settings.onValid.call($field);
|
1392
1421
|
}
|
1393
1422
|
} else {
|
1394
|
-
if (showErrors) {
|
1423
|
+
if (showErrors && fieldErrors.length > 0) {
|
1395
1424
|
formErrors = formErrors.concat(fieldErrors);
|
1396
1425
|
module.add.prompt(identifier, fieldErrors, true);
|
1397
1426
|
settings.onInvalid.call($field, fieldErrors);
|
@@ -1489,6 +1518,12 @@
|
|
1489
1518
|
module.error.apply(console, arguments);
|
1490
1519
|
}
|
1491
1520
|
},
|
1521
|
+
warn: function () {
|
1522
|
+
if (!settings.silent) {
|
1523
|
+
module.warn = Function.prototype.bind.call(console.warn, console, settings.name + ':');
|
1524
|
+
module.warn.apply(console, arguments);
|
1525
|
+
}
|
1526
|
+
},
|
1492
1527
|
performance: {
|
1493
1528
|
log: function (message) {
|
1494
1529
|
var
|
@@ -1509,7 +1544,9 @@
|
|
1509
1544
|
});
|
1510
1545
|
}
|
1511
1546
|
clearTimeout(module.performance.timer);
|
1512
|
-
module.performance.timer = setTimeout(function () {
|
1547
|
+
module.performance.timer = setTimeout(function () {
|
1548
|
+
module.performance.display();
|
1549
|
+
}, 500);
|
1513
1550
|
},
|
1514
1551
|
display: function () {
|
1515
1552
|
var
|
@@ -1603,6 +1640,7 @@
|
|
1603
1640
|
name: 'Form',
|
1604
1641
|
namespace: 'form',
|
1605
1642
|
|
1643
|
+
silent: false,
|
1606
1644
|
debug: false,
|
1607
1645
|
verbose: false,
|
1608
1646
|
performance: true,
|
@@ -1625,6 +1663,7 @@
|
|
1625
1663
|
errorFocus: true,
|
1626
1664
|
dateHandling: 'date', // 'date', 'input', 'formatter'
|
1627
1665
|
errorLimit: 0,
|
1666
|
+
noNativeValidation: false,
|
1628
1667
|
|
1629
1668
|
onValid: function () {},
|
1630
1669
|
onInvalid: function () {},
|
@@ -1667,6 +1706,7 @@
|
|
1667
1706
|
maxValue: '{name} must have a maximum value of {ruleValue}',
|
1668
1707
|
minValue: '{name} must have a minimum value of {ruleValue}',
|
1669
1708
|
empty: '{name} must have a value',
|
1709
|
+
notEmpty: '{name} must have a value',
|
1670
1710
|
checked: '{name} must be checked',
|
1671
1711
|
email: '{name} must be a valid e-mail',
|
1672
1712
|
url: '{name} must be a valid url',
|
@@ -1799,10 +1839,15 @@
|
|
1799
1839
|
rules: {
|
1800
1840
|
|
1801
1841
|
// is not empty or blank string
|
1802
|
-
|
1842
|
+
notEmpty: function (value) {
|
1803
1843
|
return !(value === undefined || value === '' || (Array.isArray(value) && value.length === 0));
|
1804
1844
|
},
|
1805
1845
|
|
1846
|
+
/* Deprecated */
|
1847
|
+
empty: function (value) {
|
1848
|
+
return $.fn.form.settings.rules.notEmpty(value);
|
1849
|
+
},
|
1850
|
+
|
1806
1851
|
// checkbox checked
|
1807
1852
|
checked: function () {
|
1808
1853
|
return $(this).filter(':checked').length > 0;
|
@@ -482,7 +482,9 @@
|
|
482
482
|
});
|
483
483
|
}
|
484
484
|
clearTimeout(module.performance.timer);
|
485
|
-
module.performance.timer = setTimeout(function () {
|
485
|
+
module.performance.timer = setTimeout(function () {
|
486
|
+
module.performance.display();
|
487
|
+
}, 500);
|
486
488
|
},
|
487
489
|
display: function () {
|
488
490
|
var
|
@@ -1088,7 +1088,9 @@
|
|
1088
1088
|
});
|
1089
1089
|
}
|
1090
1090
|
clearTimeout(module.performance.timer);
|
1091
|
-
module.performance.timer = setTimeout(function () {
|
1091
|
+
module.performance.timer = setTimeout(function () {
|
1092
|
+
module.performance.display();
|
1093
|
+
}, 500);
|
1092
1094
|
},
|
1093
1095
|
display: function () {
|
1094
1096
|
var
|
@@ -17,6 +17,19 @@
|
|
17
17
|
|
18
18
|
@import (multiple) "../../theme.config";
|
19
19
|
|
20
|
+
@notInline: if(@variationFormInline, e(":not(.inline)"));
|
21
|
+
@notInverted: if(@variationFormInverted, e(":not(.inverted)"));
|
22
|
+
@notWide: if(@variationFormWide, e(":not(.wide)"));
|
23
|
+
@notGrouped: if(@variationFormGrouped, e(":not(.grouped)"));
|
24
|
+
@notRequired: if(@variationFormRequired, e(":not(.required)"));
|
25
|
+
@notUnstackable: if(@variationFormUnstackable, e(":not(.unstackable)"));
|
26
|
+
|
27
|
+
@notToggle: if(@variationCheckboxToggle, e(":not(.toggle)"));
|
28
|
+
@notSlider: if(@variationCheckboxSlider, e(":not(.slider)"));
|
29
|
+
@notCompact: if(@variationDropdownCompact, e(":not(.compact)"));
|
30
|
+
@notIcon: if(@variationInputIcon, e(":not(.icon)"));
|
31
|
+
@notCorner: if(@variationLabelCorner, e(":not(.corner)"));
|
32
|
+
|
20
33
|
/*******************************
|
21
34
|
Elements
|
22
35
|
*******************************/
|
@@ -69,7 +82,7 @@
|
|
69
82
|
font-weight: @labelFontWeight;
|
70
83
|
text-transform: @labelTextTransform;
|
71
84
|
}
|
72
|
-
.ui.form
|
85
|
+
.ui.form@{notInverted} .field > label:not(.button) {
|
73
86
|
color: @labelColor;
|
74
87
|
}
|
75
88
|
|
@@ -162,6 +175,11 @@
|
|
162
175
|
font-family: @inputFont;
|
163
176
|
line-height: @textAreaLineHeight;
|
164
177
|
resize: @textAreaResize;
|
178
|
+
min-height: @actionTextareaMinHeight;
|
179
|
+
}
|
180
|
+
.ui.input > textarea {
|
181
|
+
flex: 1 1 auto;
|
182
|
+
max-width: 100%;
|
165
183
|
}
|
166
184
|
.ui.form textarea:not([rows]) {
|
167
185
|
height: @textAreaHeight;
|
@@ -178,16 +196,16 @@
|
|
178
196
|
Checkbox margin
|
179
197
|
--------------------- */
|
180
198
|
|
181
|
-
.ui.form .fields
|
199
|
+
.ui.form .fields@{notGrouped}@{notInline} .field:not(:only-child) label + .ui.ui.checkbox {
|
182
200
|
margin-top: @checkboxLabelFieldTopMargin;
|
183
201
|
}
|
184
|
-
.ui.form .fields
|
202
|
+
.ui.form .fields@{notGrouped}@{notInline} .field:not(:only-child) .ui.checkbox {
|
185
203
|
margin-top: @inputLineHeight + @checkboxFieldTopMargin;
|
186
204
|
}
|
187
|
-
.ui.form .fields
|
205
|
+
.ui.form .fields@{notGrouped}@{notInline} .field:not(:only-child) .ui.toggle.checkbox {
|
188
206
|
margin-top: @inputLineHeight + @checkboxToggleFieldTopMargin;
|
189
207
|
}
|
190
|
-
.ui.form .fields
|
208
|
+
.ui.form .fields@{notGrouped}@{notInline} .field:not(:only-child) .ui.slider.checkbox {
|
191
209
|
margin-top: @inputLineHeight + @checkboxSliderFieldTopMargin;
|
192
210
|
}
|
193
211
|
.ui.ui.form .field .fields .field:not(:only-child) .ui.checkbox {
|
@@ -205,7 +223,7 @@
|
|
205
223
|
Transparent
|
206
224
|
--------------------- */
|
207
225
|
|
208
|
-
.ui.form .field .transparent.input
|
226
|
+
.ui.form .field .transparent.input@{notIcon} input,
|
209
227
|
.ui.form .field input.transparent,
|
210
228
|
.ui.form .field textarea.transparent {
|
211
229
|
padding: @transparentPadding;
|
@@ -249,7 +267,7 @@
|
|
249
267
|
--------------------- */
|
250
268
|
|
251
269
|
/* Block */
|
252
|
-
.ui.form .field > .selection.dropdown
|
270
|
+
.ui.form .field > .selection.dropdown@{notCompact} {
|
253
271
|
min-width: auto;
|
254
272
|
width: 100%;
|
255
273
|
}
|
@@ -282,8 +300,8 @@
|
|
282
300
|
|
283
301
|
& when (@variationFormInline) {
|
284
302
|
/* Inline */
|
285
|
-
.ui.form .inline.fields .field
|
286
|
-
.ui.form .inline.field
|
303
|
+
.ui.form .inline.fields .field@{notWide} .ui.input,
|
304
|
+
.ui.form .inline.field@{notWide} .ui.input {
|
287
305
|
width: auto;
|
288
306
|
vertical-align: middle;
|
289
307
|
}
|
@@ -291,8 +309,10 @@
|
|
291
309
|
|
292
310
|
/* Auto Input */
|
293
311
|
.ui.form .fields .field .ui.input input,
|
294
|
-
.ui.form .field .ui.input
|
295
|
-
|
312
|
+
.ui.form .fields .field .ui.input textarea,
|
313
|
+
.ui.form .field .ui.input input,
|
314
|
+
.ui.form .field .ui.input textarea {
|
315
|
+
width: 100%;
|
296
316
|
}
|
297
317
|
|
298
318
|
& when (@variationFormEqualWidth) or (@variationFormWide) {
|
@@ -441,7 +461,8 @@
|
|
441
461
|
input[type="text"]:focus,
|
442
462
|
input[type="file"]:focus,
|
443
463
|
input[type="url"]:focus,
|
444
|
-
input[type="week"]:focus
|
464
|
+
input[type="week"]:focus,
|
465
|
+
textarea:focus {
|
445
466
|
border-top-right-radius: 0;
|
446
467
|
border-bottom-right-radius: 0;
|
447
468
|
}
|
@@ -462,7 +483,8 @@
|
|
462
483
|
input[type="text"],
|
463
484
|
input[type="file"],
|
464
485
|
input[type="url"],
|
465
|
-
input[type="week"]
|
486
|
+
input[type="week"],
|
487
|
+
textarea {
|
466
488
|
border-bottom-left-radius: 0;
|
467
489
|
border-top-left-radius: 0;
|
468
490
|
}
|
@@ -519,9 +541,9 @@
|
|
519
541
|
}
|
520
542
|
|
521
543
|
.ui.ui.form .fields.@{state} .field label,
|
522
|
-
.ui.ui.form .fields.@{state} .field .ui.label
|
544
|
+
.ui.ui.form .fields.@{state} .field .ui.label@{notCorner},
|
523
545
|
.ui.ui.form .field.@{state} label,
|
524
|
-
.ui.ui.form .field.@{state} .ui.label
|
546
|
+
.ui.ui.form .field.@{state} .ui.label@{notCorner},
|
525
547
|
.ui.ui.form .fields.@{state} .field .input,
|
526
548
|
.ui.ui.form .field.@{state} .input {
|
527
549
|
color: @c;
|
@@ -644,6 +666,7 @@
|
|
644
666
|
}
|
645
667
|
|
646
668
|
/* Placeholder */
|
669
|
+
.ui.form .@{state} .ui.dropdown > .default.text,
|
647
670
|
.ui.form .@{state} ::placeholder {
|
648
671
|
color: @formStates[@@state][inputPlaceholderColor];
|
649
672
|
}
|
@@ -651,6 +674,7 @@
|
|
651
674
|
color: @formStates[@@state][inputPlaceholderColor] !important;
|
652
675
|
}
|
653
676
|
|
677
|
+
.ui.form .@{state} .ui.dropdown > input:focus ~ .default.text,
|
654
678
|
.ui.form .@{state} :focus::placeholder {
|
655
679
|
color: @formStates[@@state][inputPlaceholderFocusColor];
|
656
680
|
}
|
@@ -709,12 +733,12 @@
|
|
709
733
|
/*--------------------
|
710
734
|
Checkbox State
|
711
735
|
---------------------*/
|
712
|
-
.ui.form .fields.@{state} .field .checkbox
|
713
|
-
.ui.form .field.@{state} .checkbox
|
736
|
+
.ui.form .fields.@{state} .field .checkbox@{notToggle}@{notSlider} label,
|
737
|
+
.ui.form .field.@{state} .checkbox@{notToggle}@{notSlider} label {
|
714
738
|
color: @c;
|
715
739
|
}
|
716
|
-
.ui.form .fields.@{state} .field .checkbox
|
717
|
-
.ui.form .field.@{state} .checkbox
|
740
|
+
.ui.form .fields.@{state} .field .checkbox@{notToggle}@{notSlider} label::before,
|
741
|
+
.ui.form .field.@{state} .checkbox@{notToggle}@{notSlider} label::before {
|
718
742
|
background: @bg;
|
719
743
|
border-color: @bdc;
|
720
744
|
}
|
@@ -809,11 +833,11 @@
|
|
809
833
|
Required Field
|
810
834
|
--------------------- */
|
811
835
|
|
812
|
-
.ui.form .required.fields
|
836
|
+
.ui.form .required.fields@{notGrouped}@{notInline} > .field > label::after,
|
813
837
|
.ui.form .required.fields.inline > label::after,
|
814
838
|
.ui.form .required.fields.grouped > label::after,
|
815
839
|
.ui.form .required.field > label::after,
|
816
|
-
.ui.form .required.fields
|
840
|
+
.ui.form .required.fields@{notGrouped}@{notInline} > .field > .checkbox::after,
|
817
841
|
.ui.form .required.field > .checkbox::after,
|
818
842
|
.ui.form label.required::after {
|
819
843
|
margin: @requiredMargin;
|
@@ -821,7 +845,7 @@
|
|
821
845
|
color: @requiredColor;
|
822
846
|
}
|
823
847
|
|
824
|
-
.ui.form .required.fields
|
848
|
+
.ui.form .required.fields@{notGrouped}@{notInline} > .field > label::after,
|
825
849
|
.ui.form .required.fields.inline > label::after,
|
826
850
|
.ui.form .required.fields.grouped > label::after,
|
827
851
|
.ui.form .required.field > label::after,
|
@@ -830,7 +854,7 @@
|
|
830
854
|
vertical-align: top;
|
831
855
|
}
|
832
856
|
|
833
|
-
.ui.form .required.fields
|
857
|
+
.ui.form .required.fields@{notGrouped}@{notInline} > .field > .checkbox::after,
|
834
858
|
.ui.form .required.field > .checkbox::after {
|
835
859
|
position: absolute;
|
836
860
|
top: 0;
|
@@ -838,12 +862,16 @@
|
|
838
862
|
}
|
839
863
|
}
|
840
864
|
|
841
|
-
.ui.ui.ui.ui.form .fields > label:empty::after,
|
842
|
-
.ui.ui.ui.ui.form .field > label:empty::after {
|
865
|
+
.ui.ui.ui.ui.form .fields@{notRequired} > label:empty::after,
|
866
|
+
.ui.ui.ui.ui.form .fields@{notGrouped}@{notInline} > .field@{notRequired} > label:empty::after {
|
843
867
|
content: " ";
|
844
868
|
display: inline-block;
|
845
869
|
}
|
846
870
|
|
871
|
+
.ui.ui.ui.ui.form .inline.fields .field@{notRequired} > label:empty {
|
872
|
+
display: none;
|
873
|
+
}
|
874
|
+
|
847
875
|
/*******************************
|
848
876
|
Variations
|
849
877
|
*******************************/
|
@@ -857,6 +885,7 @@
|
|
857
885
|
.ui.form .inverted.segment label,
|
858
886
|
.ui.form .inverted.segment .ui.checkbox label,
|
859
887
|
.ui.inverted.form .ui.checkbox label,
|
888
|
+
.ui.inverted.form .grouped.fields > label,
|
860
889
|
.ui.inverted.form .inline.fields > label,
|
861
890
|
.ui.inverted.form .inline.fields .field > label,
|
862
891
|
.ui.inverted.form .inline.fields .field > p,
|
@@ -996,8 +1025,8 @@
|
|
996
1025
|
margin-bottom: 0;
|
997
1026
|
}
|
998
1027
|
|
999
|
-
.ui.form
|
1000
|
-
.ui.form
|
1028
|
+
.ui.form@{notUnstackable} .fields@{notUnstackable} > .fields,
|
1029
|
+
.ui.form@{notUnstackable} .fields@{notUnstackable} > .field {
|
1001
1030
|
width: @oneColumn;
|
1002
1031
|
margin: 0 0 @rowDistance;
|
1003
1032
|
}
|