bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

Прокинуть идентификатор в popup (dropdown) вместо uniq* #1309

Closed lilliputten closed 7 years ago

lilliputten commented 7 years ago

Не нашёл способ передать собственный идентификатор в компонент popup группы dropdown из bem-components.

Имеется в виду установка того идентификатора, который используется для связи popup и dropdown_switcher_button.

Как ни пытаюсь, в коде всё равно присутствует ... id="uniq14912161426251"

Максимум, чего удаётся добиться, это <popup ... data-bem='{"popup":{},"dropdown":{"id":"appUserNameDropdown"}}'>, но id всё равно uniq....

Как???

UPD

Так понял, это xjst'шный generateId(), безусловно дёргаемый в dropdown для получения своёства id, который в свою очередь дёргает this.identify(this.ctx), который вроде должен подхватывать свойство this.ctx.uniqueID (как я пробовал сначала), но на самом деле нет. (Такое ощущение, что до того identify, что находится в составе bem-core, дело даже не доходит, если это возможно...)

UPD

Ну да, конечно, там (bem-xjst/lib/bemhtml/bundle.js) свой indentify, вот такой:

exports.identify = function identify(obj, onlyGet) {
  if (!obj)
    return getUniq();
  if (onlyGet || obj[uniqExpando])
    return obj[uniqExpando];

  var u = getUniq();
  obj[uniqExpando] = u;
  return u;
};

который вообще никуда не смотрит.

Т.е., выходит, расширять dropdown (popup?), чтобы переопределять нужные методы/свойства? Как правильно?

tadatuta commented 7 years ago

@lilliputten какая финальная задача? что нужно конкретно и как именно (в виде модификатора или прямо в основной код блока) требуется добавить в dropdown?

lilliputten commented 7 years ago

В данный момент хочется банального: чтобы при генерации в данном коде не было рандомно генерящихся кусков.

Это шаблон, который редко меняется, но при каждом билде из-за этого кусочка кода он попадает в логи изменного, что немножко нервирует.

(Хотя сейчас задача скорее из области уменьшения вселенской энтропии: в ближ. будущем, вероятно, всё равно заменю этот компонент на свое меню. Но под вопросом и не известно, когда и всё-таки вообще не совсем порядок.)