UNPKG

3.51 kBJavaScriptView Raw
1var __defProp = Object.defineProperty;
2var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3var __getOwnPropNames = Object.getOwnPropertyNames;
4var __hasOwnProp = Object.prototype.hasOwnProperty;
5var __export = (target, all) => {
6 for (var name2 in all)
7 __defProp(target, name2, { get: all[name2], enumerable: true });
8};
9var __copyProps = (to, from, except, desc) => {
10 if (from && typeof from === "object" || typeof from === "function") {
11 for (let key of __getOwnPropNames(from))
12 if (!__hasOwnProp.call(to, key) && key !== except)
13 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14 }
15 return to;
16};
17var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18var stdin_exports = {};
19__export(stdin_exports, {
20 assignDefaultFields: () => assignDefaultFields,
21 bem: () => bem,
22 findIndexOfEnabledOption: () => findIndexOfEnabledOption,
23 findOptionByValue: () => findOptionByValue,
24 formatCascadeColumns: () => formatCascadeColumns,
25 getColumnsType: () => getColumnsType,
26 getElementTranslateY: () => getElementTranslateY,
27 getFirstEnabledOption: () => getFirstEnabledOption,
28 isOptionExist: () => isOptionExist,
29 name: () => name,
30 t: () => t
31});
32module.exports = __toCommonJS(stdin_exports);
33var import_utils = require("../utils");
34const [name, bem, t] = (0, import_utils.createNamespace)("picker");
35const getFirstEnabledOption = (options) => options.find((option) => !option.disabled) || options[0];
36function getColumnsType(columns, fields) {
37 const firstColumn = columns[0];
38 if (firstColumn) {
39 if (Array.isArray(firstColumn)) {
40 return "multiple";
41 }
42 if (fields.children in firstColumn) {
43 return "cascade";
44 }
45 }
46 return "default";
47}
48function findIndexOfEnabledOption(options, index) {
49 index = (0, import_utils.clamp)(index, 0, options.length);
50 for (let i = index; i < options.length; i++) {
51 if (!options[i].disabled) return i;
52 }
53 for (let i = index - 1; i >= 0; i--) {
54 if (!options[i].disabled) return i;
55 }
56 return 0;
57}
58const isOptionExist = (options, value, fields) => value !== void 0 && !!options.find((option) => option[fields.value] === value);
59function findOptionByValue(options, value, fields) {
60 const index = options.findIndex((option) => option[fields.value] === value);
61 const enabledIndex = findIndexOfEnabledOption(options, index);
62 return options[enabledIndex];
63}
64function formatCascadeColumns(columns, fields, selectedValues) {
65 const formatted = [];
66 let cursor = {
67 [fields.children]: columns
68 };
69 let columnIndex = 0;
70 while (cursor && cursor[fields.children]) {
71 const options = cursor[fields.children];
72 const value = selectedValues.value[columnIndex];
73 cursor = (0, import_utils.isDef)(value) ? findOptionByValue(options, value, fields) : void 0;
74 if (!cursor && options.length) {
75 const firstValue = getFirstEnabledOption(options)[fields.value];
76 cursor = findOptionByValue(options, firstValue, fields);
77 }
78 columnIndex++;
79 formatted.push(options);
80 }
81 return formatted;
82}
83function getElementTranslateY(element) {
84 const { transform } = window.getComputedStyle(element);
85 const translateY = transform.slice(7, transform.length - 1).split(", ")[5];
86 return Number(translateY);
87}
88function assignDefaultFields(fields) {
89 return (0, import_utils.extend)(
90 {
91 text: "text",
92 value: "value",
93 children: "children"
94 },
95 fields
96 );
97}