utils.js 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. var __defProp = Object.defineProperty;
  2. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  3. var __getOwnPropNames = Object.getOwnPropertyNames;
  4. var __hasOwnProp = Object.prototype.hasOwnProperty;
  5. var __export = (target, all) => {
  6. for (var name2 in all)
  7. __defProp(target, name2, { get: all[name2], enumerable: true });
  8. };
  9. var __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. };
  17. var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  18. var 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. });
  32. module.exports = __toCommonJS(stdin_exports);
  33. var import_utils = require("../utils");
  34. const [name, bem, t] = (0, import_utils.createNamespace)("picker");
  35. const getFirstEnabledOption = (options) => options.find((option) => !option.disabled) || options[0];
  36. function 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. }
  48. function 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. }
  58. const isOptionExist = (options, value, fields) => value !== void 0 && !!options.find((option) => option[fields.value] === value);
  59. function 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. }
  64. function 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. }
  83. function getElementTranslateY(element) {
  84. const { transform } = window.getComputedStyle(element);
  85. const translateY = transform.slice(7, transform.length - 1).split(", ")[5];
  86. return Number(translateY);
  87. }
  88. function assignDefaultFields(fields) {
  89. return (0, import_utils.extend)(
  90. {
  91. text: "text",
  92. value: "value",
  93. children: "children"
  94. },
  95. fields
  96. );
  97. }