mui-language-picker 2.1.4 → 2.1.5
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/README.md
CHANGED
|
@@ -74,6 +74,8 @@ Output should be a Language Picker when entered opens a dialog
|
|
|
74
74
|
| displayName\* | DisplayName | function to control display of name |
|
|
75
75
|
| setInfo\* | (tag: LangTag) => void | callback to receive tag information |
|
|
76
76
|
| disabled\* | boolean | true if control disabled |
|
|
77
|
+
| offline\* | boolean | true if picker in offline setting |
|
|
78
|
+
| required\* | boolean | true if language required (show *) |
|
|
77
79
|
| t | ILanguagePickerStrings | localization strings (see below) |
|
|
78
80
|
|
|
79
81
|
\* parameters marked with an asterisk are optional
|
|
@@ -116,6 +118,7 @@ export const languagePickerStrings_en = {
|
|
|
116
118
|
'If you would like to change the language name enter the new name here.',
|
|
117
119
|
newName: 'New Language Name',
|
|
118
120
|
change: 'Change',
|
|
121
|
+
noFonts: 'No recommended fonts',
|
|
119
122
|
} as ILanguagePickerStrings;
|
|
120
123
|
```
|
|
121
124
|
|
package/dist/LanguagePicker.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ interface IProps extends IStateProps {
|
|
|
16
16
|
setInfo?: (tag: LangTag) => void;
|
|
17
17
|
setDir?: (rtl: boolean) => void;
|
|
18
18
|
disabled?: boolean;
|
|
19
|
+
offline?: boolean;
|
|
20
|
+
required?: boolean;
|
|
19
21
|
}
|
|
20
22
|
export declare const LanguagePicker: (props: IProps) => React.JSX.Element;
|
|
21
23
|
export default LanguagePicker;
|
package/dist/LanguagePicker.js
CHANGED
|
@@ -10,12 +10,44 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
37
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
38
|
+
if (ar || !(i in from)) {
|
|
39
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
40
|
+
ar[i] = from[i];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
44
|
+
};
|
|
13
45
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
46
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
47
|
};
|
|
16
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
49
|
exports.LanguagePicker = void 0;
|
|
18
|
-
var react_1 =
|
|
50
|
+
var react_1 = __importStar(require("react"));
|
|
19
51
|
var material_1 = require("@mui/material");
|
|
20
52
|
var Clear_1 = __importDefault(require("@mui/icons-material/Clear"));
|
|
21
53
|
var BorderColor_1 = __importDefault(require("@mui/icons-material/BorderColor"));
|
|
@@ -28,7 +60,6 @@ var ChangeName_1 = __importDefault(require("./ChangeName"));
|
|
|
28
60
|
var getDisplayName_1 = require("./getDisplayName");
|
|
29
61
|
var rtlScripts_1 = __importDefault(require("./data/rtlScripts"));
|
|
30
62
|
var MAXOPTIONS = 50;
|
|
31
|
-
var menuWidth = { width: 200 };
|
|
32
63
|
var StyledDialog = (0, material_1.styled)(material_1.Dialog)(function () { return ({
|
|
33
64
|
'& .MuiDialog-paperScrollPaper': {
|
|
34
65
|
marginBottom: 'auto',
|
|
@@ -37,7 +68,7 @@ var StyledDialog = (0, material_1.styled)(material_1.Dialog)(function () { retur
|
|
|
37
68
|
}); });
|
|
38
69
|
var LanguagePicker = function (props) {
|
|
39
70
|
var _a;
|
|
40
|
-
var disabled = props.disabled;
|
|
71
|
+
var disabled = props.disabled, offline = props.offline, required = props.required;
|
|
41
72
|
var value = props.value, name = props.name, font = props.font, setCode = props.setCode, setName = props.setName, setFont = props.setFont, setInfo = props.setInfo, setDir = props.setDir, t = props.t;
|
|
42
73
|
var displayName = props.displayName;
|
|
43
74
|
var _b = react_1.default.useState(false), open = _b[0], setOpen = _b[1];
|
|
@@ -169,8 +200,10 @@ var LanguagePicker = function (props) {
|
|
|
169
200
|
if (fontFamilyText) {
|
|
170
201
|
var fontFamily_1 = JSON.parse(fontFamilyText);
|
|
171
202
|
var familyId = fontFamily_1.defaultfamily[0];
|
|
172
|
-
|
|
173
|
-
|
|
203
|
+
if (familyId && fontFamily_1.families[familyId]) {
|
|
204
|
+
setCurFont(fontFamily_1.families[familyId].familyid);
|
|
205
|
+
setFontOpts(Object.keys(fontFamily_1.families).map(function (f) { return fontFamily_1.families[f].familyid; }));
|
|
206
|
+
}
|
|
174
207
|
}
|
|
175
208
|
};
|
|
176
209
|
var selectFont = function (tagP) {
|
|
@@ -193,6 +226,7 @@ var LanguagePicker = function (props) {
|
|
|
193
226
|
else
|
|
194
227
|
selectDefaultFont(key);
|
|
195
228
|
};
|
|
229
|
+
var hasFonts = (0, react_1.useMemo)(function () { return fontOpts && fontOpts.length > 0; }, [fontOpts]);
|
|
196
230
|
var handleNewName = function () {
|
|
197
231
|
setNewName(true);
|
|
198
232
|
};
|
|
@@ -349,7 +383,19 @@ var LanguagePicker = function (props) {
|
|
|
349
383
|
}
|
|
350
384
|
});
|
|
351
385
|
}
|
|
352
|
-
|
|
386
|
+
// put canonical name matches first
|
|
387
|
+
var canonical_1 = [];
|
|
388
|
+
var nonCanonical_1 = [];
|
|
389
|
+
var lcFirst_1 = firstWord.toLowerCase();
|
|
390
|
+
result_1.forEach(function (e) {
|
|
391
|
+
if ((e === null || e === void 0 ? void 0 : e.name.toLowerCase()) === lcFirst_1) {
|
|
392
|
+
canonical_1.push(e);
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
nonCanonical_1.push(e);
|
|
396
|
+
}
|
|
397
|
+
});
|
|
398
|
+
list.push.apply(list, __spreadArray(__spreadArray([], canonical_1, false), nonCanonical_1, false));
|
|
353
399
|
}
|
|
354
400
|
}
|
|
355
401
|
if (list.slice(0, MAXOPTIONS).length > 0) {
|
|
@@ -362,7 +408,7 @@ var LanguagePicker = function (props) {
|
|
|
362
408
|
return react_1.default.createElement(react_1.default.Fragment, null);
|
|
363
409
|
};
|
|
364
410
|
return (react_1.default.createElement("div", { id: "LangBcp47" },
|
|
365
|
-
react_1.default.createElement(material_1.TextField, { variant: "filled", margin: "dense", id: "lang-bcp47", label: t.language, required:
|
|
411
|
+
react_1.default.createElement(material_1.TextField, { variant: "filled", margin: "dense", id: "lang-bcp47", label: t.language, required: required, style: { width: 300 }, value: value !== 'und' ? name + ' (' + value + ')' : '', onClick: handleClickOpen, onKeyDown: handleClickOpen, disabled: disabled ? disabled : false }),
|
|
366
412
|
react_1.default.createElement(StyledDialog, { id: "LanguagePicker", open: open, onClose: handleCancel, "aria-labelledby": "form-dialog-title" },
|
|
367
413
|
react_1.default.createElement(material_1.DialogTitle, { id: "form-dialog-title" }, t.selectLanguage),
|
|
368
414
|
react_1.default.createElement(material_1.DialogContent, { dividers: true },
|
|
@@ -373,28 +419,25 @@ var LanguagePicker = function (props) {
|
|
|
373
419
|
react_1.default.createElement(Clear_1.default, { color: "primary" })))),
|
|
374
420
|
} }),
|
|
375
421
|
optList(),
|
|
376
|
-
react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.TextField, { id: "select-script", "data-testid": "select-script", select: true, sx: {
|
|
377
|
-
MenuProps: __assign({ sx: menuWidth }),
|
|
378
|
-
}, margin: "normal", variant: "filled" }, scriptList(tag)
|
|
422
|
+
react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.TextField, { id: "select-script", "data-testid": "select-script", select: true, sx: { mx: 1 }, fullWidth: true, label: "".concat(t.script, " *"), value: defaultScript, onChange: handleScriptChange(tag), margin: "normal", variant: "filled" }, scriptList(tag)
|
|
379
423
|
.map(function (s) { return (react_1.default.createElement(material_1.MenuItem, { key: s, value: s }, langTags_1.scriptName.get(s) + ' - ' + s)); })
|
|
380
424
|
.concat(scriptList(tag).includes(defaultScript)
|
|
381
425
|
? []
|
|
382
426
|
: [
|
|
383
427
|
react_1.default.createElement(material_1.MenuItem, { key: defaultScript, value: defaultScript }, defaultScript),
|
|
384
|
-
])), label: "" }),
|
|
385
|
-
react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.TextField, { id: "select-font", "data-testid": "select-font", select:
|
|
386
|
-
MenuProps: __assign({ sx: menuWidth }),
|
|
387
|
-
}, margin: "normal", variant: "filled" }, fontOpts.map(function (s) { return (react_1.default.createElement(material_1.MenuItem, { key: s, value: s }, (0, langTags_1.displayFamily)(s))); })), label: "" })),
|
|
428
|
+
])), label: "", sx: { width: '100%' } }),
|
|
429
|
+
react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.TextField, { id: "select-font", "data-testid": "select-font", select: hasFonts, helperText: !hasFonts ? t.noFonts : undefined, sx: { mx: 1 }, fullWidth: true, label: "".concat(t.font).concat(hasFonts ? ' *' : ''), value: fontOpts.includes(curFont) ? curFont : '', onChange: addFontInfo, margin: "normal", variant: "filled" }, fontOpts.map(function (s) { return (react_1.default.createElement(material_1.MenuItem, { key: s, value: s }, (0, langTags_1.displayFamily)(s))); })), label: "", sx: { width: '100%' } })),
|
|
388
430
|
react_1.default.createElement(material_1.DialogActions, null,
|
|
389
|
-
react_1.default.createElement("a", { href: "https://www.w3.org/International/questions/qa-choosing-language-tags", target: "_blank", rel: "noopener noreferrer" },
|
|
390
|
-
react_1.default.createElement(material_1.Typography, null, t.codeExplained)),
|
|
431
|
+
!offline && (react_1.default.createElement("a", { href: "https://www.w3.org/International/questions/qa-choosing-language-tags", target: "_blank", rel: "noopener noreferrer" },
|
|
432
|
+
react_1.default.createElement(material_1.Typography, null, t.codeExplained))),
|
|
391
433
|
curName !== '' && (react_1.default.createElement(material_1.Tooltip, { title: (_a = t.changeName) !== null && _a !== void 0 ? _a : 'Change name' },
|
|
392
434
|
react_1.default.createElement(material_1.IconButton, { color: "primary", size: "small", "data-testid": "change-name", onClick: handleNewName },
|
|
393
435
|
react_1.default.createElement(BorderColor_1.default, { fontSize: "small" })))),
|
|
394
436
|
react_1.default.createElement(GrowingSpacer_1.GrowingSpacer, null),
|
|
395
437
|
react_1.default.createElement(material_1.Button, { onClick: handleCancel, color: "primary" },
|
|
396
438
|
react_1.default.createElement(material_1.Typography, null, t.cancel)),
|
|
397
|
-
react_1.default.createElement(material_1.Button, { onClick: handleSelect, color: "primary", disabled:
|
|
439
|
+
react_1.default.createElement(material_1.Button, { onClick: handleSelect, color: "primary", disabled: required &&
|
|
440
|
+
(tag === undefined || (tag === null || tag === void 0 ? void 0 : tag.tag) === 'und' || defaultScript === '') },
|
|
398
441
|
react_1.default.createElement(material_1.Typography, null, t.select)))),
|
|
399
442
|
newName && (react_1.default.createElement(ChangeName_1.default, { isOpen: newName, onClose: handleCloseName, curName: curName, onNewName: handleSetName, t: t }))));
|
|
400
443
|
};
|
|
@@ -78,14 +78,11 @@ jsonData.forEach(function (element, i) {
|
|
|
78
78
|
var result = Array.from(elementTokens).sort(function (a, b) {
|
|
79
79
|
return a[0].localeCompare(b[0]);
|
|
80
80
|
});
|
|
81
|
-
// sorts the matches in order by what field they are in and just
|
|
81
|
+
// sorts the matches in order by what field they are in and just keeps the index
|
|
82
82
|
result.forEach(function (r) {
|
|
83
83
|
r[1].sort(function (a, b) { return a.kn - b.kn; });
|
|
84
84
|
r[1] = r[1].map(function (e) { return e.i; });
|
|
85
85
|
});
|
|
86
|
-
// for (const idx of Array.from(Array(20)).map((_, i) => i)) {
|
|
87
|
-
// console.log(result[idx]);
|
|
88
|
-
// }
|
|
89
86
|
var maxSet = new Set();
|
|
90
87
|
result.forEach(function (r) {
|
|
91
88
|
maxSet.add(r[1].length);
|