utils.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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)
  52. return i;
  53. }
  54. for (let i = index - 1; i >= 0; i--) {
  55. if (!options[i].disabled)
  56. return i;
  57. }
  58. return 0;
  59. }
  60. const isOptionExist = (options, value, fields) => value !== void 0 && !!options.find((option) => option[fields.value] === value);
  61. function findOptionByValue(options, value, fields) {
  62. const index = options.findIndex((option) => option[fields.value] === value);
  63. const enabledIndex = findIndexOfEnabledOption(options, index);
  64. return options[enabledIndex];
  65. }
  66. function formatCascadeColumns(columns, fields, selectedValues) {
  67. const formatted = [];
  68. let cursor = {
  69. [fields.children]: columns
  70. };
  71. let columnIndex = 0;
  72. while (cursor && cursor[fields.children]) {
  73. const options = cursor[fields.children];
  74. const value = selectedValues.value[columnIndex];
  75. cursor = (0, import_utils.isDef)(value) ? findOptionByValue(options, value, fields) : void 0;
  76. if (!cursor && options.length) {
  77. const firstValue = getFirstEnabledOption(options)[fields.value];
  78. cursor = findOptionByValue(options, firstValue, fields);
  79. }
  80. columnIndex++;
  81. formatted.push(options);
  82. }
  83. return formatted;
  84. }
  85. function getElementTranslateY(element) {
  86. const { transform } = window.getComputedStyle(element);
  87. const translateY = transform.slice(7, transform.length - 1).split(", ")[5];
  88. return Number(translateY);
  89. }
  90. function assignDefaultFields(fields) {
  91. return (0, import_utils.extend)(
  92. {
  93. text: "text",
  94. value: "value",
  95. children: "children"
  96. },
  97. fields
  98. );
  99. }