[{"data":1,"prerenderedAt":1058},["ShallowReactive",2],{"docs:\u002Fdocs\u002Fcomponents\u002Ftree-table":3,"component-meta:UiTreeTable":568},{"id":4,"title":5,"body":6,"component":540,"dependsOn":541,"description":550,"emitDescriptions":551,"extension":559,"meta":560,"navigation":561,"order":562,"path":563,"seo":564,"status":565,"stem":566,"__hash__":567},"docs\u002Fdocs\u002Fcomponents\u002Ftree-table.md","TreeTable",{"type":7,"value":8,"toc":525},"minimark",[9,18,23,28,35,39,43,57,75,79,82,93,116,127,130,141,145,148,156,167,170,174,177,181,192,199,203,211,222,230,244,257,263,267,306,313,320,323,326,337,351,361,365,380,389,392,396,399,413,417,430,452,459,481,500,519],[10,11,12,13,17],"p",{},"Рендер плоский: дерево розгортається у список видимих рядків, і в шаблоні\nлишається один ",[14,15,16],"code",{},"v-for",". Понад сотню рядків список віртуалізується —\nу DOM тримаються лише видиме вікно й дві розпірки.",[19,20,22],"h2",{"id":21},"приклад","Приклад",[24,25],"component-preview",{"name":26,"stage":27},"tree-table-catalog","min-h-96",[10,29,30,31,34],{},"492 вузли, чотири рівні. Розгорніть усе й подивіться в інспекторі: рядків\nу DOM лишається кілька десятків, а ",[14,32,33],{},"aria-rowcount"," на таблиці називає\nсправжнє число — саме воно потрібне скрінрідеру, бо DOM тут бреше.",[19,36,38],{"id":37},"ліниве-завантаження","Ліниве завантаження",[24,40],{"name":41,"stage":42},"tree-table-lazy","min-h-64",[10,44,45,48,49,52,53,56],{},[14,46,47],{},"expandAll()"," (і «Розгорнути всі» в меню налаштувань) для лінивих гілок,\nвідкритих уперше, віддає ",[14,50,51],{},"expand"," з ",[14,54,55],{},"loaded: false"," — так само, як клік.\nІнакше вони лишалися б відкритими й порожніми без жодного сигналу.",[10,58,59,62,63,66,67,70,71,74],{},[14,60,61],{},"undefined"," і ",[14,64,65],{},"[]"," у полі дітей — різні стани. Перше означає «діти ще\nїдуть»: рядок лишається ",[14,68,69],{},"aria-busy",", замість шеврона крутиться індикатор\nіз ",[14,72,73],{},"loadingIds",". Друге означає «гілка справді порожня». Компонент розрізняє\nїх сам, режим перемикати не треба.",[19,76,78],{"id":77},"дані-з-файлу","Дані з файлу",[24,80],{"name":81,"stage":27},"tree-table-json",[10,83,84,85,88,89,92],{},"Перетягніть у зону власне вивантаження — масив вузлів\n",[14,86,87],{},"{ id, parent, name, children[], data{} }"," — і воно відрендериться як є.\nФайл нікуди не надсилається: його читає ",[14,90,91],{},"FileReader"," у браузері.",[10,94,95,96,99,100,103,104,107,108,111,112,115],{},"Поля тут лежать не на вузлі, а у вкладеному ",[14,97,98],{},"data",", і саме для цього\nіснує ",[14,101,102],{},"getValue",": перекладати дані під форму колонок не треба, достатньо\nописати, звідки брати значення. Ключі колонок при цьому — без крапок,\nінакше ",[14,105,106],{},"#cell-data.active"," розбереться як слот ",[14,109,110],{},"cell-data"," з\nмодифікатором ",[14,113,114],{},"active",".",[10,117,118,119,122,123,126],{},"Над таблицею — пошук і фільтри. Плоский ",[14,120,121],{},"filter"," тут не працює\nпринципово: вузол, що збігся, без предків втрачає місце в ієрархії, а\nбез предків його ще й не видно. Тому ",[14,124,125],{},"filterTree"," лишає вузол, якщо\nзбігся він сам АБО хтось у його піддереві, і окремо повертає список\nгілок, які треба розгорнути. Розгортання користувача при цьому не\nгубиться — воно повертається, коли фільтр знімають.",[10,128,129],{},"Діти фільтруються навіть у вузла, що збігся сам: інакше «лише активні»\nпоказувало б вимкнених дітей активної теки, тобто рівно те, що просили\nсховати.",[10,131,132,133,136,137,140],{},"Демо заразом перевіряє те, що зазвичай помічають надто пізно: чи\nунікальні ",[14,134,135],{},"id",". Рядки ключуються саме ними, тож у вивантаженні з\nповторами ламаються ",[14,138,139],{},":key",", виділення й фокус — а назви, на відміну від\nid, повторюються суцільно.",[19,142,144],{"id":143},"пагінація","Пагінація",[24,146],{"name":147,"stage":27},"tree-table-paged",[10,149,150,151,155],{},"Сторінками йдуть ",[152,153,154],"strong",{},"корені",", а не рядки. Різати плоский список видимих\nрядків не можна: дитина опинилась би на наступній сторінці без свого\nбатька — тобто без єдиного, що пояснює її місце. Тому сторінка — це N\nкоренів РАЗОМ з їхніми піддеревами, і загальна кількість рахується теж\nпо коренях.",[10,157,158,159,162,163,166],{},"Оновлення вже показаних даних (",[14,160,161],{},"loading"," при непорожньому ",[14,164,165],{},"items",") не\nзамінює дерево скелетоном — розгорнуті гілки лишаються на місці під\nнапівпрозорим оверлеєм. Скелетон з'являється лише на першому завантаженні.",[10,168,169],{},"Пагінація й віртуалізація не конкурують: перша обмежує, скільки гілок\nвзагалі приходить у компонент, друга — скільки рядків із них живе в DOM.\nОдна гілка, розгорнута на всю глибину, легко дає більше рядків, ніж уся\nсторінка коренів.",[19,171,173],{"id":172},"api","API",[175,176],"component-api",{},[19,178,180],{"id":179},"коли-використовувати","Коли використовувати",[10,182,183,184,187,188,191],{},"Ієрархічні дані, у яких на кожен вузол є ще й колонки: дерево сторінок\nсайту з alias і датами, каталог категорій із лічильниками товарів, дерево\nрахунків із сумами. Тобто всюди, де ",[14,185,186],{},"Tree"," не вистачає через колонки, а\n",[14,189,190],{},"Table"," — через вкладеність.",[10,193,194,195,198],{},"Великі дерева. Поріг ",[14,196,197],{},"virtualizeFrom"," (типово 100 видимих рядків) вмикає\nвікно автоматично, тож той самий компонент обслуговує і десять рядків, і\nдесять тисяч.",[19,200,202],{"id":201},"коли-не-використовувати","Коли НЕ використовувати",[10,204,205,210],{},[152,206,207,208,115],{},"Плоскі дані — ",[14,209,190],{}," Він уміє те саме з колонками, але без контракту\nфіксованої висоти, тож рядок там росте за вмістом.",[10,212,213,218,219,115],{},[152,214,215,216,115],{},"Дерево без колонок — ",[14,217,186],{}," Легший, без арифметики вікна й без\n",[14,220,221],{},"\u003Ccolgroup>",[10,223,224],{},[152,225,226,227,115],{},"Однорідний список без ієрархії — ",[14,228,229],{},"VirtualList",[10,231,232,235,236,239,240,243],{},[152,233,234],{},"Рядки змінної висоти."," ",[14,237,238],{},"rowHeight"," — це передумова, а не налаштування:\nуся арифметика вікна множить його на індекс. Рядок мусить вкладатися у\nзадану висоту (",[14,241,242],{},"truncate",", фіксована кількість рядків тексту). Це інший\nкомпонент, а не важчий випадок цього.",[10,245,246,249,250,253,254,115],{},[152,247,248],{},"Пошук по сторінці і друк."," Ctrl+F і принтер бачать лише вікно —\nвластивість будь-якої віртуалізації. Для друку й експорту вимикайте її:\n",[14,251,252],{},":virtualize-from=\"Infinity\""," разом із ",[14,255,256],{},"max-height=\"none\"",[10,258,259,262],{},[152,260,261],{},"Перетягування вузлів."," Зміна батька — це мутація даних, а не подання;\nкомпонент її не робить і робити не буде.",[19,264,266],{"id":265},"доступність","Доступність",[10,268,269,52,272,274,275,278,279,282,283,282,286,282,289,292,293,282,296,298,299,302,303,115],{},[14,270,271],{},"role=\"treegrid\"",[14,273,33],{}," на таблиці; на рядку — ",[14,276,277],{},"aria-level",",\n",[14,280,281],{},"aria-posinset",", ",[14,284,285],{},"aria-setsize",[14,287,288],{},"aria-rowindex",[14,290,291],{},"aria-expanded"," (у\nлистків його немає взагалі), ",[14,294,295],{},"aria-selected",[14,297,69],{},". Колонка\nієрархії — ",[14,300,301],{},"rowheader",", решта — ",[14,304,305],{},"gridcell",[10,307,308,309,312],{},"Roving tabindex: Tab бере лише активний рядок. ↑↓ рухають, → розгортає й\nдалі спускається, ← згортає й далі підіймається до батька, ",[14,310,311],{},"*"," розкриває\nвсіх сусідів рівня, Home\u002FEnd і PageUp\u002FPageDown ходять по списку, Space\nперемикає вибір гілки. Літери шукають набором: «ан» переводить фокус на\nнаступний рядок, чий підпис починається з «ан»; буфер живе 600 мс.",[10,314,315,316,319],{},"При ",[14,317,318],{},"selectable"," Ctrl\u002FCmd+A обирає все дерево, Escape знімає вибір (і не\nспливає далі, поки вибір є — модалка з таблицею від нього не закриється).",[10,321,322],{},"Коли активний рядок зникає — згорнули предка кліком по шеврону чи\n«Згорнути все» — Tab-зупинка переходить до найближчого видимого предка,\nа не на початок списку.",[10,324,325],{},"Клавіші з вкладених контролів рядок не перехоплює: Enter на кнопці в\nслоті комірки натискає кнопку, стрілки в полі вводу рухають каретку.\nПрапорець виділення — виняток: стрілки з нього рухають рядки.",[10,327,328,329,332,333,336],{},"Рядок за межами вікна фізично відсутній у DOM, тож перед ",[14,330,331],{},"focus()","\nкомпонент зсуває вікно і лише потім фокусує — з ",[14,334,335],{},"preventScroll",", інакше\nбраузер додає власну прокрутку і виходить подвійний стрибок.",[10,338,339,340,343,344,347,348,350],{},"Шеврон — ",[14,341,342],{},"span"," під ",[14,345,346],{},"aria-hidden",", а не кнопка. Кнопка на кожному рядку\nпоставила б у Tab-порядок між двома сусідніми рядками стільки кнопок,\nскільки рядків у вікні; доступна афорданс розгортання — це ",[14,349,291],{},"\nплюс ← і →.",[10,352,353,354,356,357,360],{},"Прапорець рядка при ",[14,355,318],{}," лишається справжнім ",[14,358,359],{},"input",", тож Tab\nобходить прапорці ВІДРЕНДЕРЕНИХ рядків. Клавіатурному користувачу вони не\nпотрібні: Space на рядку робить те саме.",[19,362,364],{"id":363},"каскадне-виділення","Каскадне виділення",[10,366,367,368,371,372,375,376,379],{},"Вибір гілки бере її саму й усіх нащадків; батько показує ",[14,369,370],{},"indeterminate",",\nпоки обрано частину. Масив ",[14,373,374],{},"selected"," містить ",[152,377,378],{},"і батьків, і дітей"," —\nінакше масова дія «видалити обране» мовчки пропускала б теку, яку\nкористувач і клікнув. Потрібні лише листки — відфільтруйте на своєму боці.",[10,381,382,383,235,385,388],{},"У лінивому режимі це має третій наслідок: діти, що приїхали під уже\nпозначену теку, автоматично доливаються в набір, тож ",[14,384,374],{},[152,386,387],{},"росте","\nз розгортанням. Якщо ваш API приймає id теки й сам розбирається з\nпіддеревом, приберіть нащадків перед відправкою.",[10,390,391],{},"Прапорець у шапці рахується по ВСЬОМУ дереву, а не по видимих рядках. У\nплоскій таблиці «сторінка» дорівнює видимому; у дереві прив'язка до\nвидимого зробила б сенс галочки залежним від того, які теки випадково\nвідкриті.",[19,393,395],{"id":394},"сортування","Сортування",[10,397,398],{},"Сортуються тільки сусіди в межах одного батька — ієрархія не сплющується\nніколи, бо обхід сортує рівно той масив, у який зараз спускається.",[10,400,315,401,404,405,408,409,412],{},[14,402,403],{},"serverSort"," компонент лише повідомляє намір через ",[14,406,407],{},"update:sort",".\nСервер при цьому зобов'язаний сортувати ",[152,410,411],{},"сусідів усередині батька",":\nповерне плоский глобально відсортований список — ієрархія загине, і\nкомпонент цього не помітить, бо діти лишаться дітьми, просто не тими.",[19,414,416],{"id":415},"деталі-реалізації","Деталі реалізації",[10,418,419,420,423,424,426,427,429],{},"Віртуалізація зроблена розпірними рядками, а не абсолютним\nпозиціюванням: абсолютний ",[14,421,422],{},"tr"," вибиває рядок із табличного боксу, і\n",[14,425,221],{}," перестає керувати ширинами. Тому таблиця справжня, а над і\nпід вікном стоять два порожні ",[14,428,422],{}," порахованої висоти.",[10,431,432,433,436,437,440,441,444,445,447,448,451],{},"Таблиця — ",[14,434,435],{},"border-separate"," з нульовим ",[14,438,439],{},"border-spacing",", а роздільник\nрядків — псевдоелемент. Будь-який ",[14,442,443],{},"border"," на ",[14,446,422],{}," чи ",[14,449,450],{},"td"," увійшов би у\nвисоту рядка, а вікно множить її на індекс: один зайвий піксель\nнакопичується і зсуває хвіст списку.",[10,453,454,455,458],{},"Щільність задає ЧИСЛО висоти рядка, а не паддінг: висота мусить бути\nвідома до рендеру й однакова на сервері та клієнті. Адаптивної пари\n",[14,456,457],{},"{ base, md }"," тому немає — сервер не знає ширини вікна.",[10,460,461,464,465,468,469,472,473,476,477,480],{},[14,462,463],{},"mobileCards"," тримає обидві розкладки в DOM, а вибирає між ними CSS.\nПрихований контейнер спорожнюється ",[152,466,467],{},"виміром",": ",[14,470,471],{},"ResizeObserver"," віддає\nпід ",[14,474,475],{},"display: none"," нульовий бокс. ",[14,478,479],{},"matchMedia"," тут неможливий — він\nправдивий лише після монтування, і гілка по брейкпойнту розійшлася б із\nпрередереним HTML на все тіло таблиці.",[10,482,483,484,487,488,491,492,495,496,499],{},"Панель налаштувань колонок — спільний компонент із ",[14,485,486],{},"UiTable","\n(",[14,489,490],{},"app\u002Fcomponents\u002Fui\u002Ftable\u002FColumnSettings.vue","), як і арифметика ширин,\nпорівняння значень і зведення збереженої розкладки\n(",[14,493,494],{},"app\u002Futils\u002FtableColumns.ts"," — імпортуйте звідти напряму, ",[14,497,498],{},"treeTable.ts","\nцих функцій не ре-експортує). Дві копії тієї самої панелі розходяться\nмовчки: у дереві кнопки порядку встигли отримати зону дотику й\nSVG-стрілки, а в плоскій таблиці лишались текстові «↑↓» без зони.\nКерування гілками приходить у панель слотом — це єдине, чого в плоскій\nтаблиці немає.",[10,501,502,503,506,507,510,511,514,515,518],{},"З ",[14,504,505],{},"tableId"," розкладка зберігається під ключем\n",[14,508,509],{},"tree_table_settings_${tableId}",", а відкриті гілки — окремо, під\n",[14,512,513],{},"tree_table_expanded_${tableId}",". Ключі різні, бо різний час життя:\nрозкладка вмирає від ",[14,516,517],{},"settingsVersion",", розгортання — разом із даними.\nОдин payload означав би, що зміна дефолтної ширини колонки заразом\nзакриває всім користувачам усі теки.",[10,520,521,522,524],{},"Збережене застосовується лише після монтування, тож на прередереній\nсторінці видно короткий проблиск дефолтної розкладки. Тут він помітніший,\nніж у ",[14,523,190],{},": збережена щільність міняє висоту рядка, а з нею — розпірки\nй діапазон вікна.",{"title":526,"searchDepth":527,"depth":527,"links":528},"",2,[529,530,531,532,533,534,535,536,537,538,539],{"id":21,"depth":527,"text":22},{"id":37,"depth":527,"text":38},{"id":77,"depth":527,"text":78},{"id":143,"depth":527,"text":144},{"id":172,"depth":527,"text":173},{"id":179,"depth":527,"text":180},{"id":201,"depth":527,"text":202},{"id":265,"depth":527,"text":266},{"id":363,"depth":527,"text":364},{"id":394,"depth":527,"text":395},{"id":415,"depth":527,"text":416},"UiTreeTable",[542,494,543,544,545,546,490,547,548,549],"app\u002Futils\u002FtreeTable.ts","app\u002Futils\u002FtableSelection.ts","app\u002Futils\u002FoverlayPosition.ts","app\u002Futils\u002FuiFieldStyles.ts","app\u002Fcomposables\u002FuseReducedMotion.ts","app\u002Fcomponents\u002Fui\u002FUiCheckbox.vue","app\u002Fcomponents\u002Fui\u002FUiMenu.vue","app\u002Fcomponents\u002Fui\u002FUiSkeleton.vue","Дерево-таблиця з віртуальним скролом — ієрархія в першій колонці, звичайні сортовані колонки далі.",{"update:expanded":552,"update:selected":553,"update:sort":554,"update:headers":555,"expand":556,"collapse":557,"rowClick":558},"Набір відкритих гілок. Використовуйте через `v-model:expanded`.","Ключі обраних вузлів, включно з батьками. Використовуйте через `v-model:selected`.","Нове сортування або `null` на третьому кліку. Використовуйте через `v-model:sort`.","Розкладка колонок після ресайзу чи меню налаштувань.","Гілку відкрито. `loaded` каже, чи діти вже завантажені.","Гілку закрито.","Активація рядка кліком або Enter при `rowClickable`.","md",{},true,44,"\u002Fdocs\u002Fcomponents\u002Ftree-table",{"title":5,"description":550},"stable","docs\u002Fcomponents\u002Ftree-table","RJZBSwKJkC1HChv6jL_XWuy8b7AC4hmMqPy4i2YyWU0",{"mode":569,"prefetch":570,"preload":570,"filePath":571,"declarationPath":572,"pascalName":540,"kebabName":573,"chunkName":574,"priority":575,"_scanned":561,"meta":576},"all",false,"app\u002Fcomponents\u002Fui\u002FUiTreeTable.vue","\u002Fapp\u002Fapp\u002Fcomponents\u002Fui\u002FUiTreeTable.vue","ui-tree-table","components\u002Fui-tree-table",1,{"type":527,"props":577,"slots":842,"events":913,"exposed":1025,"hash":1057},[578,649,656,661,666,670,678,686,695,698,703,708,712,717,725,741,750,753,757,763,769,777,782,787,792,797,803,808,814,820,826,832,837],{"name":579,"global":570,"description":580,"tags":581,"required":561,"type":582,"schema":583},"headers","Опис колонок. Колонка ієрархії — перша або названа в `treeColumn`.",[],"TreeTableHeader[]",{"kind":584,"type":582,"schema":585},"array",{"0":586},{"kind":587,"type":588,"schema":589},"object","TreeTableHeader",{"value":590,"text":595,"sortable":598,"width":607,"flex":612,"align":616,"title":625,"defaultSortDir":629,"required":638,"resizable":642,"visible":646},{"name":591,"global":570,"description":592,"tags":593,"required":561,"type":594,"schema":594},"value","Ключ поля у вузлі. Він же — суфікс іменованих слотів.",[],"string",{"name":596,"global":570,"description":526,"tags":597,"required":561,"type":594,"schema":594},"text",[],{"name":599,"global":570,"description":526,"tags":600,"required":570,"type":601,"schema":602},"sortable",[],"boolean",{"kind":603,"type":601,"schema":604},"enum",{"0":605,"1":606},"false","true",{"name":608,"global":570,"description":609,"tags":610,"required":570,"type":611,"schema":611},"width","Ширина в ПІКСЕЛЯХ (число, не рядок). Для `flex` — мінімальна.",[],"number",{"name":613,"global":570,"description":614,"tags":615,"required":570,"type":601,"schema":601},"flex","Колонка забирає залишок ширини. Дозволена ОДНА на таблицю.",[],{"name":617,"global":570,"description":526,"tags":618,"required":570,"type":619,"schema":620},"align",[],"\"left\" | \"center\" | \"right\"",{"kind":603,"type":619,"schema":621},{"0":622,"1":623,"2":624},"\"left\"","\"center\"","\"right\"",{"name":626,"global":570,"description":627,"tags":628,"required":570,"type":594,"schema":594},"title","Повна назва: підказка на заголовку і підпис у меню налаштувань.",[],{"name":630,"global":570,"description":631,"tags":632,"required":570,"type":633,"schema":634},"defaultSortDir","Напрям ПЕРШОГО кліку по сортуванню. Типово `asc`.",[],"\"asc\" | \"desc\"",{"kind":603,"type":633,"schema":635},{"0":636,"1":637},"\"asc\"","\"desc\"",{"name":639,"global":570,"description":640,"tags":641,"required":570,"type":601,"schema":601},"required","Колонку не можна приховати. Колонка ієрархії закріплена завжди.",[],{"name":643,"global":570,"description":644,"tags":645,"required":570,"type":601,"schema":601},"resizable","Заборонити ресайз. Типово можна все, крім `flex`.",[],{"name":647,"global":570,"description":526,"tags":648,"required":570,"type":601,"schema":601},"visible",[],{"name":165,"global":570,"description":650,"tags":651,"required":561,"type":652,"schema":653},"Корені дерева. Діти лежать у полі, названому в `childrenField`.",[],"T[]",{"kind":584,"type":652,"schema":654},{"0":655},"T",{"name":657,"global":570,"default":658,"description":659,"tags":660,"required":570,"type":594,"schema":594},"keyRow","\"id\"","Поле-ідентифікатор вузла. Значення унікальне в УСЬОМУ дереві.",[],{"name":662,"global":570,"default":663,"description":664,"tags":665,"required":570,"type":594,"schema":594},"childrenField","\"children\"","Поле з масивом дітей. `undefined` і `[]` — різні стани, див. `expand`.",[],{"name":667,"global":570,"description":668,"tags":669,"required":570,"type":594,"schema":594},"treeColumn","Яка колонка малює ієрархію. Типово — перша в `headers`.",[],{"name":102,"global":570,"description":671,"tags":672,"required":570,"type":673,"schema":674},"Значення комірки й ключ сортування, коли поля лежать не на вузлі.",[],"(item: T, key: string) => unknown",{"kind":675,"type":676,"schema":677},"event","(item: T, key: string): unknown",{},{"name":679,"global":570,"description":680,"tags":681,"required":570,"type":682,"schema":683},"hasChildren","Чи має вузол дітей, коли їх ще не завантажено. Типово — довжина `children`.",[],"(item: T) => boolean",{"kind":675,"type":684,"schema":685},"(item: T): boolean",{},{"name":73,"global":570,"default":65,"description":687,"tags":688,"required":570,"type":689,"schema":690},"Вузли, чиї діти зараз вантажаться: індикатор і `aria-busy` на рядку.",[],"(string | number)[]",{"kind":584,"type":689,"schema":691},{"0":692},{"kind":603,"type":693,"schema":694},"string | number",[594,611],{"name":238,"global":570,"description":696,"tags":697,"required":570,"type":611,"schema":611},"Висота рядка в ПІКСЕЛЯХ. Перекриває висоту, задану щільністю.",[],{"name":699,"global":570,"default":700,"description":701,"tags":702,"required":570,"type":611,"schema":611},"cardHeight","96","Висота картки нижче `md`, у пікселях. Той самий контракт, що `rowHeight`.",[],{"name":704,"global":570,"default":705,"description":706,"tags":707,"required":570,"type":594,"schema":594},"maxHeight","\"28rem\"","Висота контейнера прокрутки, напр. `\"28rem\"`. `\"none\"` знімає обмеження.",[],{"name":197,"global":570,"default":709,"description":710,"tags":711,"required":570,"type":611,"schema":611},"100","З якої кількості ВИДИМИХ рядків вмикати віртуалізацію. `Infinity` вимикає.",[],{"name":713,"global":570,"default":714,"description":715,"tags":716,"required":570,"type":611,"schema":611},"overscan","5","Скільки рядків тримати відрендереними за межами вікна з кожного боку.",[],{"name":718,"global":570,"default":65,"description":719,"tags":720,"required":570,"type":689,"schema":721},"expanded","Відкриті гілки. Використовуйте через `v-model:expanded`.",[],{"kind":584,"type":689,"schema":722},{"0":723},{"kind":603,"type":693,"schema":724},[594,611],{"name":726,"global":570,"default":727,"description":728,"tags":729,"required":570,"type":730,"schema":731},"sort","null","Поточне сортування. Використовуйте через `v-model:sort`.",[],"TreeTableSort",{"kind":587,"type":730,"schema":732},{"by":733,"dir":736},{"name":734,"global":570,"description":526,"tags":735,"required":561,"type":594,"schema":594},"by",[],{"name":737,"global":570,"description":526,"tags":738,"required":561,"type":633,"schema":739},"dir",[],{"kind":603,"type":633,"schema":740},{"0":636,"1":637},{"name":742,"global":570,"default":743,"description":744,"tags":745,"required":570,"type":746,"schema":747},"density","\"md\"","Щільність рядків. Обирає висоту рядка, якщо не задано `rowHeight`.",[],"\"sm\" | \"md\"",{"kind":603,"type":746,"schema":748},{"0":749,"1":743},"\"sm\"",{"name":505,"global":570,"description":751,"tags":752,"required":570,"type":594,"schema":594},"Вмикає меню налаштувань і збереження розкладки під `tree_table_settings_${tableId}`.",[],{"name":517,"global":570,"default":754,"description":755,"tags":756,"required":570,"type":611,"schema":611},"0","Версія ВАШИХ дефолтів. Змінили ширини — підніміть, і збережене скинеться.",[],{"name":374,"global":570,"default":65,"description":553,"tags":758,"required":570,"type":689,"schema":759},[],{"kind":584,"type":689,"schema":760},{"0":761},{"kind":603,"type":693,"schema":762},[594,611],{"name":764,"global":570,"description":765,"tags":766,"required":570,"type":682,"schema":767},"selectableRow","Які вузли можна обрати. Каскад незбиральних не додає.",[],{"kind":675,"type":684,"schema":768},{},{"name":770,"global":570,"description":771,"tags":772,"required":570,"type":773,"schema":774},"rowClass","Клас на рядок — для підсвітки. Заливка має йти в CSS після `bg-card`.",[],"(item: T) => string",{"kind":675,"type":775,"schema":776},"(item: T): string",{},{"name":778,"global":570,"default":779,"description":780,"tags":781,"required":570,"type":611,"schema":611},"skeletonRows","6","Скільки рядків-заглушок показати під час ПЕРШОГО завантаження.",[],{"name":783,"global":570,"default":784,"description":785,"tags":786,"required":570,"type":594,"schema":594},"emptyText","\"Даних немає\"","Текст, коли рядків немає. Складніший стан — слот `empty`.",[],{"name":788,"global":570,"default":789,"description":790,"tags":791,"required":570,"type":594,"schema":594},"ariaLabel","\"Дерево-таблиця\"","Доступна назва таблиці для скрінрідера.",[],{"name":403,"global":570,"description":793,"tags":794,"required":570,"type":601,"schema":795},"Сортувати на сервері. Сервер мусить сортувати СУСІДІВ, не все дерево.",[],{"kind":603,"type":601,"schema":796},{"0":605,"1":606},{"name":798,"global":570,"default":606,"description":799,"tags":800,"required":570,"type":601,"schema":801},"densityToggle","Показати перемикач щільності в меню налаштувань.",[],{"kind":603,"type":601,"schema":802},{"0":605,"1":606},{"name":318,"global":570,"description":804,"tags":805,"required":570,"type":601,"schema":806},"Вмикає колонку прапорців із каскадом на все піддерево.",[],{"kind":603,"type":601,"schema":807},{"0":605,"1":606},{"name":809,"global":570,"default":606,"description":810,"tags":811,"required":570,"type":601,"schema":812},"selectionBar","Панель «Вибрано N» над таблицею.",[],{"kind":603,"type":601,"schema":813},{"0":605,"1":606},{"name":815,"global":570,"description":816,"tags":817,"required":570,"type":601,"schema":818},"expandOnClick","Клік по рядку з дітьми тогглить гілку.",[],{"kind":603,"type":601,"schema":819},{"0":605,"1":606},{"name":821,"global":570,"description":822,"tags":823,"required":570,"type":601,"schema":824},"rowClickable","Робить рядки клікабельними: курсор і подія `rowClick`.",[],{"kind":603,"type":601,"schema":825},{"0":605,"1":606},{"name":827,"global":570,"default":606,"description":828,"tags":829,"required":570,"type":601,"schema":830},"stickyTreeColumn","Закріпити колонку ієрархії при горизонтальній прокрутці.",[],{"kind":603,"type":601,"schema":831},{"0":605,"1":606},{"name":463,"global":570,"description":833,"tags":834,"required":570,"type":601,"schema":835},"Нижче `md` замість таблиці — картки з відступом і шевроном.",[],{"kind":603,"type":601,"schema":836},{"0":605,"1":606},{"name":161,"global":570,"description":838,"tags":839,"required":570,"type":601,"schema":840},"Показує скелетони замість рядків, зберігаючи висоту таблиці.",[],{"kind":603,"type":601,"schema":841},{"0":605,"1":606},[843,862,878,889,894],{"name":844,"type":845,"description":846,"tags":847,"schema":848},"icon","{ item: T; depth: number; expanded: boolean; hasChildren: boolean; }","Іконка типу вузла перед підписом у колонці ієрархії.",[],{"kind":587,"type":845,"schema":849},{"item":850,"depth":853,"expanded":856,"hasChildren":860},{"name":851,"global":570,"description":526,"tags":852,"required":561,"type":655,"schema":655},"item",[],{"name":854,"global":570,"description":526,"tags":855,"required":561,"type":611,"schema":611},"depth",[],{"name":718,"global":570,"description":526,"tags":857,"required":561,"type":601,"schema":858},[],{"kind":603,"type":601,"schema":859},{"0":605,"1":606},{"name":679,"global":570,"description":526,"tags":861,"required":561,"type":601,"schema":601},[],{"name":863,"type":845,"description":864,"tags":865,"schema":866},"label","Підпис у колонці ієрархії замість значення `treeColumn`.",[],{"kind":587,"type":845,"schema":867},{"item":868,"depth":870,"expanded":872,"hasChildren":876},{"name":851,"global":570,"description":526,"tags":869,"required":561,"type":655,"schema":655},[],{"name":854,"global":570,"description":526,"tags":871,"required":561,"type":611,"schema":611},[],{"name":718,"global":570,"description":526,"tags":873,"required":561,"type":601,"schema":874},[],{"kind":603,"type":601,"schema":875},{"0":605,"1":606},{"name":679,"global":570,"description":526,"tags":877,"required":561,"type":601,"schema":601},[],{"name":879,"type":880,"description":881,"tags":882,"schema":883},"mobile-card","{ item: T; depth: number; }","Вміст картки нижче `md`, якщо стандартний список пар не підходить.",[],{"kind":587,"type":880,"schema":884},{"item":885,"depth":887},{"name":851,"global":570,"description":526,"tags":886,"required":561,"type":655,"schema":655},[],{"name":854,"global":570,"description":526,"tags":888,"required":561,"type":611,"schema":611},[],{"name":890,"type":891,"description":892,"tags":893,"schema":891},"empty","any","Показується замість «Даних немає».",[],{"name":895,"type":896,"description":897,"tags":898,"schema":899},"selection-actions","{ selected: (string | number)[]; clear: () => void; }","Дії в панелі «Вибрано N». `clear` знімає виділення.",[],{"kind":587,"type":896,"schema":900},{"selected":901,"clear":907},{"name":374,"global":570,"description":526,"tags":902,"required":561,"type":689,"schema":903},[],{"kind":584,"type":689,"schema":904},{"0":905},{"kind":603,"type":693,"schema":906},[594,611],{"name":908,"global":570,"description":526,"tags":909,"required":561,"type":910,"schema":911},"clear",[],"() => void",{"kind":675,"type":912},"(): void",[914,924,934,947,985,1004,1019],{"name":915,"description":526,"tags":916,"type":917,"signature":918,"schema":919},"update:expanded",[],"[ids: (string | number)[]]","(evt: \"update:expanded\", ids: (string | number)[]): void",[920],{"kind":584,"type":689,"schema":921},[922],{"kind":603,"type":693,"schema":923},[594,611],{"name":925,"description":526,"tags":926,"type":927,"signature":928,"schema":929},"update:selected",[],"[keys: (string | number)[]]","(evt: \"update:selected\", keys: (string | number)[]): void",[930],{"kind":584,"type":689,"schema":931},[932],{"kind":603,"type":693,"schema":933},[594,611],{"name":407,"description":526,"tags":935,"type":936,"signature":937,"schema":938},[],"[value: TreeTableSort]","(evt: \"update:sort\", value: TreeTableSort): void",[939],{"kind":587,"type":730,"schema":940},{"by":941,"dir":943},{"name":734,"global":570,"description":526,"tags":942,"required":561,"type":594,"schema":594},[],{"name":737,"global":570,"description":526,"tags":944,"required":561,"type":633,"schema":945},[],{"kind":603,"type":633,"schema":946},{"0":636,"1":637},{"name":948,"description":526,"tags":949,"type":950,"signature":951,"schema":952},"update:headers",[],"[value: TreeTableHeader[]]","(evt: \"update:headers\", value: TreeTableHeader[]): void",[953],{"kind":584,"type":582,"schema":954},[955],{"kind":587,"type":588,"schema":956},{"value":957,"text":959,"sortable":961,"width":965,"flex":967,"align":969,"title":973,"defaultSortDir":975,"required":979,"resizable":981,"visible":983},{"name":591,"global":570,"description":592,"tags":958,"required":561,"type":594,"schema":594},[],{"name":596,"global":570,"description":526,"tags":960,"required":561,"type":594,"schema":594},[],{"name":599,"global":570,"description":526,"tags":962,"required":570,"type":601,"schema":963},[],{"kind":603,"type":601,"schema":964},{"0":605,"1":606},{"name":608,"global":570,"description":609,"tags":966,"required":570,"type":611,"schema":611},[],{"name":613,"global":570,"description":614,"tags":968,"required":570,"type":601,"schema":601},[],{"name":617,"global":570,"description":526,"tags":970,"required":570,"type":619,"schema":971},[],{"kind":603,"type":619,"schema":972},{"0":622,"1":623,"2":624},{"name":626,"global":570,"description":627,"tags":974,"required":570,"type":594,"schema":594},[],{"name":630,"global":570,"description":631,"tags":976,"required":570,"type":633,"schema":977},[],{"kind":603,"type":633,"schema":978},{"0":636,"1":637},{"name":639,"global":570,"description":640,"tags":980,"required":570,"type":601,"schema":601},[],{"name":643,"global":570,"description":644,"tags":982,"required":570,"type":601,"schema":601},[],{"name":647,"global":570,"description":526,"tags":984,"required":570,"type":601,"schema":601},[],{"name":51,"description":526,"tags":986,"type":987,"signature":988,"schema":989},[],"[payload: { item: T; id: string | number; loaded: boolean; }]","(evt: \"expand\", payload: { item: T; id: string | number; loaded: boolean; }): void",[990],{"kind":587,"type":991,"schema":992},"{ item: T; id: string | number; loaded: boolean; }",{"item":993,"id":995,"loaded":999},{"name":851,"global":570,"description":526,"tags":994,"required":561,"type":655,"schema":655},[],{"name":135,"global":570,"description":526,"tags":996,"required":561,"type":693,"schema":997},[],{"kind":603,"type":693,"schema":998},{"0":594,"1":611},{"name":1000,"global":570,"description":526,"tags":1001,"required":561,"type":601,"schema":1002},"loaded",[],{"kind":603,"type":601,"schema":1003},{"0":605,"1":606},{"name":1005,"description":526,"tags":1006,"type":1007,"signature":1008,"schema":1009},"collapse",[],"[payload: { item: T; id: string | number; }]","(evt: \"collapse\", payload: { item: T; id: string | number; }): void",[1010],{"kind":587,"type":1011,"schema":1012},"{ item: T; id: string | number; }",{"item":1013,"id":1015},{"name":851,"global":570,"description":526,"tags":1014,"required":561,"type":655,"schema":655},[],{"name":135,"global":570,"description":526,"tags":1016,"required":561,"type":693,"schema":1017},[],{"kind":603,"type":693,"schema":1018},{"0":594,"1":611},{"name":1020,"description":526,"tags":1021,"type":1022,"signature":1023,"schema":1024},"rowClick",[],"[item: T]","(evt: \"rowClick\", item: T): void",[655],[1026,1034,1042,1047,1052],{"name":1027,"type":1028,"description":1029,"tags":1030,"schema":1031},"scrollToIndex","(index: number) => void","Прокрутити до рядка за номером у ПЛОСКОМУ списку видимих рядків.",[],{"kind":675,"type":1032,"schema":1033},"(index: number): void",{},{"name":1035,"type":1036,"description":1037,"tags":1038,"schema":1039},"scrollToKey","(key: string | number) => boolean","Розгорнути предків вузла і перейти до нього. `false`, якщо вузла немає.",[],{"kind":675,"type":1040,"schema":1041},"(key: string | number): boolean",{},{"name":1043,"type":910,"description":1044,"tags":1045,"schema":1046},"expandAll","Розгорнути всі гілки. Повний обхід дерева — дорого на великих даних.",[],{"kind":675,"type":912},{"name":1048,"type":910,"description":1049,"tags":1050,"schema":1051},"collapseAll","Згорнути всі гілки.",[],{"kind":675,"type":912},{"name":1053,"type":910,"description":1054,"tags":1055,"schema":1056},"clearSelection","Зняти виділення. Потрібне після успішної масової дії.",[],{"kind":675,"type":912},"BVu1wRE0zDJHU_Oyc2PD0SrVtWg4zgwy0jQyb9B6Bi4",1789660506387]