fomantic-ui 2.9.4-beta.10 → 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 -38
- package/dist/components/dropdown.js +109 -34
- 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 +15 -3
- package/dist/components/form.js +66 -23
- 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 +1 -1
- package/dist/components/header.min.css +1 -1
- 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 +1 -1
- package/dist/components/input.min.css +1 -1
- package/dist/components/item.css +1 -1
- package/dist/components/item.min.css +1 -1
- package/dist/components/label.css +7 -1
- 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 -1
- package/dist/components/menu.min.css +1 -1
- 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 -1
- package/dist/components/popup.js +10 -4
- package/dist/components/popup.min.css +1 -1
- 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 +6179 -3968
- package/dist/semantic.js +571 -188
- 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 +65 -22
- package/src/definitions/behaviors/state.js +3 -1
- package/src/definitions/behaviors/visibility.js +3 -1
- package/src/definitions/collections/form.less +43 -23
- 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 +7 -4
- package/src/definitions/elements/icon.less +35 -28
- package/src/definitions/elements/input.less +21 -13
- 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 +108 -33
- 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/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 +23 -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 +123 -15
- 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 {
|
@@ -711,7 +720,7 @@
|
|
711
720
|
var
|
712
721
|
$field = $(field),
|
713
722
|
$calendar = $field.closest(selector.uiCalendar),
|
714
|
-
name = $field.prop('name'),
|
723
|
+
name = $field.prop('name') || $field.prop('id'),
|
715
724
|
value = $field.val(),
|
716
725
|
isCheckbox = $field.is(selector.checkbox),
|
717
726
|
isRadio = $field.is(selector.radio),
|
@@ -940,7 +949,7 @@
|
|
940
949
|
$prompt.css('display', 'none');
|
941
950
|
}
|
942
951
|
$prompt
|
943
|
-
.appendTo($fieldGroup)
|
952
|
+
.appendTo($fieldGroup.filter('.' + className.error))
|
944
953
|
;
|
945
954
|
}
|
946
955
|
$prompt
|
@@ -1237,20 +1246,20 @@
|
|
1237
1246
|
isRequired = $el.prop('required') || $elGroup.hasClass(className.required) || $elGroup.parent().hasClass(className.required),
|
1238
1247
|
isDisabled = $el.is(':disabled') || $elGroup.hasClass(className.disabled) || $elGroup.parent().hasClass(className.disabled),
|
1239
1248
|
validation = module.get.validation($el),
|
1240
|
-
|
1249
|
+
hasNotEmptyRule = validation
|
1241
1250
|
? $.grep(validation.rules, function (rule) {
|
1242
|
-
return rule.type
|
1243
|
-
})
|
1251
|
+
return ['notEmpty', 'checked', 'empty'].indexOf(rule.type) >= 0;
|
1252
|
+
}).length > 0
|
1244
1253
|
: false,
|
1245
1254
|
identifier = module.get.identifier(validation, $el)
|
1246
1255
|
;
|
1247
|
-
if (isRequired && !isDisabled && !
|
1256
|
+
if (isRequired && !isDisabled && !hasNotEmptyRule && identifier !== undefined) {
|
1248
1257
|
if (isCheckbox) {
|
1249
1258
|
module.verbose("Adding 'checked' rule on field", identifier);
|
1250
1259
|
module.add.rule(identifier, 'checked');
|
1251
1260
|
} else {
|
1252
|
-
module.verbose("Adding '
|
1253
|
-
module.add.rule(identifier, '
|
1261
|
+
module.verbose("Adding 'notEmpty' rule on field", identifier);
|
1262
|
+
module.add.rule(identifier, 'notEmpty');
|
1254
1263
|
}
|
1255
1264
|
}
|
1256
1265
|
});
|
@@ -1277,6 +1286,7 @@
|
|
1277
1286
|
$module.removeClass(className.initial);
|
1278
1287
|
// reset errors
|
1279
1288
|
formErrors = [];
|
1289
|
+
formErrorsTracker = {};
|
1280
1290
|
if (module.determine.isValid()) {
|
1281
1291
|
module.debug('Form has no validation errors, submitting');
|
1282
1292
|
module.set.success();
|
@@ -1342,28 +1352,30 @@
|
|
1342
1352
|
var
|
1343
1353
|
identifier = field.identifier || fieldName,
|
1344
1354
|
$field = module.get.field(identifier),
|
1355
|
+
$fieldGroup = $field.closest($group),
|
1345
1356
|
$dependsField = field.depends
|
1346
1357
|
? module.get.field(field.depends)
|
1347
1358
|
: false,
|
1348
1359
|
fieldValid = true,
|
1349
1360
|
fieldErrors = [],
|
1350
|
-
isDisabled = $field.filter(':not(:disabled)').length === 0,
|
1361
|
+
isDisabled = $field.filter(':not(:disabled)').length === 0 || $fieldGroup.hasClass(className.disabled) || $fieldGroup.parent().hasClass(className.disabled),
|
1351
1362
|
validationMessage = $field[0].validationMessage,
|
1363
|
+
noNativeValidation = field.noNativeValidation || settings.noNativeValidation || $field.filter('[formnovalidate],[novalidate]').length > 0 || $module.filter('[novalidate]').length > 0,
|
1352
1364
|
errorLimit
|
1353
1365
|
;
|
1354
1366
|
if (!field.identifier) {
|
1355
1367
|
module.debug('Using field name as identifier', identifier);
|
1356
1368
|
field.identifier = identifier;
|
1357
1369
|
}
|
1358
|
-
if (validationMessage) {
|
1370
|
+
if (validationMessage && !noNativeValidation && !isDisabled) {
|
1359
1371
|
module.debug('Field is natively invalid', identifier);
|
1360
1372
|
fieldErrors.push(validationMessage);
|
1361
1373
|
fieldValid = false;
|
1362
1374
|
if (showErrors) {
|
1363
|
-
$
|
1375
|
+
$fieldGroup.addClass(className.error);
|
1364
1376
|
}
|
1365
1377
|
} else if (showErrors) {
|
1366
|
-
$
|
1378
|
+
$fieldGroup.removeClass(className.error);
|
1367
1379
|
}
|
1368
1380
|
if (isDisabled) {
|
1369
1381
|
module.debug('Field is disabled. Skipping', identifier);
|
@@ -1378,7 +1390,22 @@
|
|
1378
1390
|
var invalidFields = module.validate.rule(field, rule, true) || [];
|
1379
1391
|
if (invalidFields.length > 0) {
|
1380
1392
|
module.debug('Field is invalid', identifier, rule.type);
|
1381
|
-
|
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
|
+
}
|
1382
1409
|
fieldValid = false;
|
1383
1410
|
if (showErrors) {
|
1384
1411
|
$(invalidFields).closest($group).addClass(className.error);
|
@@ -1393,7 +1420,7 @@
|
|
1393
1420
|
settings.onValid.call($field);
|
1394
1421
|
}
|
1395
1422
|
} else {
|
1396
|
-
if (showErrors) {
|
1423
|
+
if (showErrors && fieldErrors.length > 0) {
|
1397
1424
|
formErrors = formErrors.concat(fieldErrors);
|
1398
1425
|
module.add.prompt(identifier, fieldErrors, true);
|
1399
1426
|
settings.onInvalid.call($field, fieldErrors);
|
@@ -1491,6 +1518,12 @@
|
|
1491
1518
|
module.error.apply(console, arguments);
|
1492
1519
|
}
|
1493
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
|
+
},
|
1494
1527
|
performance: {
|
1495
1528
|
log: function (message) {
|
1496
1529
|
var
|
@@ -1511,7 +1544,9 @@
|
|
1511
1544
|
});
|
1512
1545
|
}
|
1513
1546
|
clearTimeout(module.performance.timer);
|
1514
|
-
module.performance.timer = setTimeout(function () {
|
1547
|
+
module.performance.timer = setTimeout(function () {
|
1548
|
+
module.performance.display();
|
1549
|
+
}, 500);
|
1515
1550
|
},
|
1516
1551
|
display: function () {
|
1517
1552
|
var
|
@@ -1605,6 +1640,7 @@
|
|
1605
1640
|
name: 'Form',
|
1606
1641
|
namespace: 'form',
|
1607
1642
|
|
1643
|
+
silent: false,
|
1608
1644
|
debug: false,
|
1609
1645
|
verbose: false,
|
1610
1646
|
performance: true,
|
@@ -1627,6 +1663,7 @@
|
|
1627
1663
|
errorFocus: true,
|
1628
1664
|
dateHandling: 'date', // 'date', 'input', 'formatter'
|
1629
1665
|
errorLimit: 0,
|
1666
|
+
noNativeValidation: false,
|
1630
1667
|
|
1631
1668
|
onValid: function () {},
|
1632
1669
|
onInvalid: function () {},
|
@@ -1669,6 +1706,7 @@
|
|
1669
1706
|
maxValue: '{name} must have a maximum value of {ruleValue}',
|
1670
1707
|
minValue: '{name} must have a minimum value of {ruleValue}',
|
1671
1708
|
empty: '{name} must have a value',
|
1709
|
+
notEmpty: '{name} must have a value',
|
1672
1710
|
checked: '{name} must be checked',
|
1673
1711
|
email: '{name} must be a valid e-mail',
|
1674
1712
|
url: '{name} must be a valid url',
|
@@ -1801,10 +1839,15 @@
|
|
1801
1839
|
rules: {
|
1802
1840
|
|
1803
1841
|
// is not empty or blank string
|
1804
|
-
|
1842
|
+
notEmpty: function (value) {
|
1805
1843
|
return !(value === undefined || value === '' || (Array.isArray(value) && value.length === 0));
|
1806
1844
|
},
|
1807
1845
|
|
1846
|
+
/* Deprecated */
|
1847
|
+
empty: function (value) {
|
1848
|
+
return $.fn.form.settings.rules.notEmpty(value);
|
1849
|
+
},
|
1850
|
+
|
1808
1851
|
// checkbox checked
|
1809
1852
|
checked: function () {
|
1810
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
|
|
@@ -183,16 +196,16 @@
|
|
183
196
|
Checkbox margin
|
184
197
|
--------------------- */
|
185
198
|
|
186
|
-
.ui.form .fields
|
199
|
+
.ui.form .fields@{notGrouped}@{notInline} .field:not(:only-child) label + .ui.ui.checkbox {
|
187
200
|
margin-top: @checkboxLabelFieldTopMargin;
|
188
201
|
}
|
189
|
-
.ui.form .fields
|
202
|
+
.ui.form .fields@{notGrouped}@{notInline} .field:not(:only-child) .ui.checkbox {
|
190
203
|
margin-top: @inputLineHeight + @checkboxFieldTopMargin;
|
191
204
|
}
|
192
|
-
.ui.form .fields
|
205
|
+
.ui.form .fields@{notGrouped}@{notInline} .field:not(:only-child) .ui.toggle.checkbox {
|
193
206
|
margin-top: @inputLineHeight + @checkboxToggleFieldTopMargin;
|
194
207
|
}
|
195
|
-
.ui.form .fields
|
208
|
+
.ui.form .fields@{notGrouped}@{notInline} .field:not(:only-child) .ui.slider.checkbox {
|
196
209
|
margin-top: @inputLineHeight + @checkboxSliderFieldTopMargin;
|
197
210
|
}
|
198
211
|
.ui.ui.form .field .fields .field:not(:only-child) .ui.checkbox {
|
@@ -210,7 +223,7 @@
|
|
210
223
|
Transparent
|
211
224
|
--------------------- */
|
212
225
|
|
213
|
-
.ui.form .field .transparent.input
|
226
|
+
.ui.form .field .transparent.input@{notIcon} input,
|
214
227
|
.ui.form .field input.transparent,
|
215
228
|
.ui.form .field textarea.transparent {
|
216
229
|
padding: @transparentPadding;
|
@@ -254,7 +267,7 @@
|
|
254
267
|
--------------------- */
|
255
268
|
|
256
269
|
/* Block */
|
257
|
-
.ui.form .field > .selection.dropdown
|
270
|
+
.ui.form .field > .selection.dropdown@{notCompact} {
|
258
271
|
min-width: auto;
|
259
272
|
width: 100%;
|
260
273
|
}
|
@@ -287,8 +300,8 @@
|
|
287
300
|
|
288
301
|
& when (@variationFormInline) {
|
289
302
|
/* Inline */
|
290
|
-
.ui.form .inline.fields .field
|
291
|
-
.ui.form .inline.field
|
303
|
+
.ui.form .inline.fields .field@{notWide} .ui.input,
|
304
|
+
.ui.form .inline.field@{notWide} .ui.input {
|
292
305
|
width: auto;
|
293
306
|
vertical-align: middle;
|
294
307
|
}
|
@@ -528,9 +541,9 @@
|
|
528
541
|
}
|
529
542
|
|
530
543
|
.ui.ui.form .fields.@{state} .field label,
|
531
|
-
.ui.ui.form .fields.@{state} .field .ui.label
|
544
|
+
.ui.ui.form .fields.@{state} .field .ui.label@{notCorner},
|
532
545
|
.ui.ui.form .field.@{state} label,
|
533
|
-
.ui.ui.form .field.@{state} .ui.label
|
546
|
+
.ui.ui.form .field.@{state} .ui.label@{notCorner},
|
534
547
|
.ui.ui.form .fields.@{state} .field .input,
|
535
548
|
.ui.ui.form .field.@{state} .input {
|
536
549
|
color: @c;
|
@@ -653,6 +666,7 @@
|
|
653
666
|
}
|
654
667
|
|
655
668
|
/* Placeholder */
|
669
|
+
.ui.form .@{state} .ui.dropdown > .default.text,
|
656
670
|
.ui.form .@{state} ::placeholder {
|
657
671
|
color: @formStates[@@state][inputPlaceholderColor];
|
658
672
|
}
|
@@ -660,6 +674,7 @@
|
|
660
674
|
color: @formStates[@@state][inputPlaceholderColor] !important;
|
661
675
|
}
|
662
676
|
|
677
|
+
.ui.form .@{state} .ui.dropdown > input:focus ~ .default.text,
|
663
678
|
.ui.form .@{state} :focus::placeholder {
|
664
679
|
color: @formStates[@@state][inputPlaceholderFocusColor];
|
665
680
|
}
|
@@ -718,12 +733,12 @@
|
|
718
733
|
/*--------------------
|
719
734
|
Checkbox State
|
720
735
|
---------------------*/
|
721
|
-
.ui.form .fields.@{state} .field .checkbox
|
722
|
-
.ui.form .field.@{state} .checkbox
|
736
|
+
.ui.form .fields.@{state} .field .checkbox@{notToggle}@{notSlider} label,
|
737
|
+
.ui.form .field.@{state} .checkbox@{notToggle}@{notSlider} label {
|
723
738
|
color: @c;
|
724
739
|
}
|
725
|
-
.ui.form .fields.@{state} .field .checkbox
|
726
|
-
.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 {
|
727
742
|
background: @bg;
|
728
743
|
border-color: @bdc;
|
729
744
|
}
|
@@ -818,11 +833,11 @@
|
|
818
833
|
Required Field
|
819
834
|
--------------------- */
|
820
835
|
|
821
|
-
.ui.form .required.fields
|
836
|
+
.ui.form .required.fields@{notGrouped}@{notInline} > .field > label::after,
|
822
837
|
.ui.form .required.fields.inline > label::after,
|
823
838
|
.ui.form .required.fields.grouped > label::after,
|
824
839
|
.ui.form .required.field > label::after,
|
825
|
-
.ui.form .required.fields
|
840
|
+
.ui.form .required.fields@{notGrouped}@{notInline} > .field > .checkbox::after,
|
826
841
|
.ui.form .required.field > .checkbox::after,
|
827
842
|
.ui.form label.required::after {
|
828
843
|
margin: @requiredMargin;
|
@@ -830,7 +845,7 @@
|
|
830
845
|
color: @requiredColor;
|
831
846
|
}
|
832
847
|
|
833
|
-
.ui.form .required.fields
|
848
|
+
.ui.form .required.fields@{notGrouped}@{notInline} > .field > label::after,
|
834
849
|
.ui.form .required.fields.inline > label::after,
|
835
850
|
.ui.form .required.fields.grouped > label::after,
|
836
851
|
.ui.form .required.field > label::after,
|
@@ -839,7 +854,7 @@
|
|
839
854
|
vertical-align: top;
|
840
855
|
}
|
841
856
|
|
842
|
-
.ui.form .required.fields
|
857
|
+
.ui.form .required.fields@{notGrouped}@{notInline} > .field > .checkbox::after,
|
843
858
|
.ui.form .required.field > .checkbox::after {
|
844
859
|
position: absolute;
|
845
860
|
top: 0;
|
@@ -847,12 +862,16 @@
|
|
847
862
|
}
|
848
863
|
}
|
849
864
|
|
850
|
-
.ui.ui.ui.ui.form .fields > label:empty::after,
|
851
|
-
.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 {
|
852
867
|
content: " ";
|
853
868
|
display: inline-block;
|
854
869
|
}
|
855
870
|
|
871
|
+
.ui.ui.ui.ui.form .inline.fields .field@{notRequired} > label:empty {
|
872
|
+
display: none;
|
873
|
+
}
|
874
|
+
|
856
875
|
/*******************************
|
857
876
|
Variations
|
858
877
|
*******************************/
|
@@ -866,6 +885,7 @@
|
|
866
885
|
.ui.form .inverted.segment label,
|
867
886
|
.ui.form .inverted.segment .ui.checkbox label,
|
868
887
|
.ui.inverted.form .ui.checkbox label,
|
888
|
+
.ui.inverted.form .grouped.fields > label,
|
869
889
|
.ui.inverted.form .inline.fields > label,
|
870
890
|
.ui.inverted.form .inline.fields .field > label,
|
871
891
|
.ui.inverted.form .inline.fields .field > p,
|
@@ -1005,8 +1025,8 @@
|
|
1005
1025
|
margin-bottom: 0;
|
1006
1026
|
}
|
1007
1027
|
|
1008
|
-
.ui.form
|
1009
|
-
.ui.form
|
1028
|
+
.ui.form@{notUnstackable} .fields@{notUnstackable} > .fields,
|
1029
|
+
.ui.form@{notUnstackable} .fields@{notUnstackable} > .field {
|
1010
1030
|
width: @oneColumn;
|
1011
1031
|
margin: 0 0 @rowDistance;
|
1012
1032
|
}
|