Skip to content

Commit ec1bd33

Browse files
committed
Added lang attribute support
Select2 will now detect the language based on the `lang` attribute of the `<select>` element or any parent elements.
1 parent 14db3fc commit ec1bd33

7 files changed

Lines changed: 43 additions & 28 deletions

File tree

dist/js/select2.amd.full.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3300,14 +3300,17 @@ define('select2/options',[
33003300
}
33013301

33023302
Options.prototype.fromElement = function ($e) {
3303-
var fromProperties = ['multiple'];
33043303
var excludedData = ['select2'];
33053304

3306-
for (var p = 0; p < fromProperties.length; p++) {
3307-
var prop = fromProperties[p];
3305+
if (this.options.multiple == null) {
3306+
this.options.multiple = $e.prop('multiple');
3307+
}
33083308

3309-
if (this.options[prop] == null) {
3310-
this.options[prop] = $e.prop(prop);
3309+
if (this.options.language == null) {
3310+
if ($e.prop('lang')) {
3311+
this.options.language = $e.prop('lang').toLowerCase();
3312+
} else if ($e.closest('[lang]').prop('lang')) {
3313+
this.options.language = $e.closest('[lang]').prop('lang');
33113314
}
33123315
}
33133316

dist/js/select2.amd.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3300,14 +3300,17 @@ define('select2/options',[
33003300
}
33013301

33023302
Options.prototype.fromElement = function ($e) {
3303-
var fromProperties = ['multiple'];
33043303
var excludedData = ['select2'];
33053304

3306-
for (var p = 0; p < fromProperties.length; p++) {
3307-
var prop = fromProperties[p];
3305+
if (this.options.multiple == null) {
3306+
this.options.multiple = $e.prop('multiple');
3307+
}
33083308

3309-
if (this.options[prop] == null) {
3310-
this.options[prop] = $e.prop(prop);
3309+
if (this.options.language == null) {
3310+
if ($e.prop('lang')) {
3311+
this.options.language = $e.prop('lang').toLowerCase();
3312+
} else if ($e.closest('[lang]').prop('lang')) {
3313+
this.options.language = $e.closest('[lang]').prop('lang');
33113314
}
33123315
}
33133316

dist/js/select2.full.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12835,14 +12835,17 @@ define('select2/options',[
1283512835
}
1283612836

1283712837
Options.prototype.fromElement = function ($e) {
12838-
var fromProperties = ['multiple'];
1283912838
var excludedData = ['select2'];
1284012839

12841-
for (var p = 0; p < fromProperties.length; p++) {
12842-
var prop = fromProperties[p];
12840+
if (this.options.multiple == null) {
12841+
this.options.multiple = $e.prop('multiple');
12842+
}
1284312843

12844-
if (this.options[prop] == null) {
12845-
this.options[prop] = $e.prop(prop);
12844+
if (this.options.language == null) {
12845+
if ($e.prop('lang')) {
12846+
this.options.language = $e.prop('lang').toLowerCase();
12847+
} else if ($e.closest('[lang]').prop('lang')) {
12848+
this.options.language = $e.closest('[lang]').prop('lang');
1284612849
}
1284712850
}
1284812851

dist/js/select2.full.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/select2.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3728,14 +3728,17 @@ define('select2/options',[
37283728
}
37293729

37303730
Options.prototype.fromElement = function ($e) {
3731-
var fromProperties = ['multiple'];
37323731
var excludedData = ['select2'];
37333732

3734-
for (var p = 0; p < fromProperties.length; p++) {
3735-
var prop = fromProperties[p];
3733+
if (this.options.multiple == null) {
3734+
this.options.multiple = $e.prop('multiple');
3735+
}
37363736

3737-
if (this.options[prop] == null) {
3738-
this.options[prop] = $e.prop(prop);
3737+
if (this.options.language == null) {
3738+
if ($e.prop('lang')) {
3739+
this.options.language = $e.prop('lang').toLowerCase();
3740+
} else if ($e.closest('[lang]').prop('lang')) {
3741+
this.options.language = $e.closest('[lang]').prop('lang');
37393742
}
37403743
}
37413744

dist/js/select2.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/js/select2/options.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,17 @@ define([
1313
}
1414

1515
Options.prototype.fromElement = function ($e) {
16-
var fromProperties = ['multiple'];
1716
var excludedData = ['select2'];
1817

19-
for (var p = 0; p < fromProperties.length; p++) {
20-
var prop = fromProperties[p];
18+
if (this.options.multiple == null) {
19+
this.options.multiple = $e.prop('multiple');
20+
}
2121

22-
if (this.options[prop] == null) {
23-
this.options[prop] = $e.prop(prop);
22+
if (this.options.language == null) {
23+
if ($e.prop('lang')) {
24+
this.options.language = $e.prop('lang').toLowerCase();
25+
} else if ($e.closest('[lang]').prop('lang')) {
26+
this.options.language = $e.closest('[lang]').prop('lang');
2427
}
2528
}
2629

0 commit comments

Comments
 (0)