123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import { isDef, clamp, extend, createNamespace } from "../utils/index.mjs";
- const [name, bem, t] = createNamespace("picker");
- const getFirstEnabledOption = (options) => options.find((option) => !option.disabled) || options[0];
- function getColumnsType(columns, fields) {
- const firstColumn = columns[0];
- if (firstColumn) {
- if (Array.isArray(firstColumn)) {
- return "multiple";
- }
- if (fields.children in firstColumn) {
- return "cascade";
- }
- }
- return "default";
- }
- function findIndexOfEnabledOption(options, index) {
- index = clamp(index, 0, options.length);
- for (let i = index; i < options.length; i++) {
- if (!options[i].disabled) return i;
- }
- for (let i = index - 1; i >= 0; i--) {
- if (!options[i].disabled) return i;
- }
- return 0;
- }
- const isOptionExist = (options, value, fields) => value !== void 0 && !!options.find((option) => option[fields.value] === value);
- function findOptionByValue(options, value, fields) {
- const index = options.findIndex((option) => option[fields.value] === value);
- const enabledIndex = findIndexOfEnabledOption(options, index);
- return options[enabledIndex];
- }
- function formatCascadeColumns(columns, fields, selectedValues) {
- const formatted = [];
- let cursor = {
- [fields.children]: columns
- };
- let columnIndex = 0;
- while (cursor && cursor[fields.children]) {
- const options = cursor[fields.children];
- const value = selectedValues.value[columnIndex];
- cursor = isDef(value) ? findOptionByValue(options, value, fields) : void 0;
- if (!cursor && options.length) {
- const firstValue = getFirstEnabledOption(options)[fields.value];
- cursor = findOptionByValue(options, firstValue, fields);
- }
- columnIndex++;
- formatted.push(options);
- }
- return formatted;
- }
- function getElementTranslateY(element) {
- const { transform } = window.getComputedStyle(element);
- const translateY = transform.slice(7, transform.length - 1).split(", ")[5];
- return Number(translateY);
- }
- function assignDefaultFields(fields) {
- return extend(
- {
- text: "text",
- value: "value",
- children: "children"
- },
- fields
- );
- }
- export {
- assignDefaultFields,
- bem,
- findIndexOfEnabledOption,
- findOptionByValue,
- formatCascadeColumns,
- getColumnsType,
- getElementTranslateY,
- getFirstEnabledOption,
- isOptionExist,
- name,
- t
- };
|