MCPcopy Create free account
hub / github.com/callumalpass/tasknotes / createGroupHeader

Method createGroupHeader

src/bases/TaskListView.ts:1922–1983  ·  view source on GitHub ↗
(headerItem: TaskListHeaderItem)

Source from the content-addressed store, hash-verified

1920 }
1921
1922 private createGroupHeader(headerItem: TaskListHeaderItem): HTMLElement {
1923 // Use correct document for pop-out window support
1924 const doc = this.containerEl.ownerDocument;
1925
1926 const groupHeader = doc.createElement("div");
1927 groupHeader.className = "task-section task-group";
1928
1929 // Determine header level and set appropriate data attributes
1930 const isSubHeader = headerItem.type === "sub-header";
1931 const level = isSubHeader ? "sub" : "primary";
1932 groupHeader.dataset.level = level;
1933 const groupKey = isSubHeader
1934 ? `${headerItem.groupKey}:${headerItem.subGroupKey}`
1935 : headerItem.groupKey;
1936
1937 if (isSubHeader) {
1938 groupHeader.dataset.groupKey = groupKey;
1939 groupHeader.dataset.parentKey = headerItem.parentKey;
1940 } else {
1941 groupHeader.dataset.groupKey = groupKey;
1942 }
1943
1944 // Apply collapsed state
1945 if (headerItem.isCollapsed) {
1946 groupHeader.classList.add("is-collapsed");
1947 }
1948
1949 const headerElement = doc.createElement("h3");
1950 headerElement.className = "task-group-header task-list-view__group-header";
1951 groupHeader.appendChild(headerElement);
1952
1953 // Add toggle button
1954 const toggleBtn = doc.createElement("button");
1955 toggleBtn.className = "task-group-toggle";
1956 toggleBtn.type = "button";
1957 toggleBtn.setAttribute("aria-label", "Toggle group");
1958 toggleBtn.setAttribute("aria-expanded", String(!headerItem.isCollapsed));
1959 toggleBtn.dataset.groupKey = groupKey;
1960 headerElement.appendChild(toggleBtn);
1961
1962 // Add chevron icon
1963 setIcon(toggleBtn, "chevron-right");
1964 const svg = toggleBtn.querySelector("svg");
1965 if (svg) {
1966 svg.classList.add("chevron");
1967 svg.setAttribute("width", "16");
1968 svg.setAttribute("height", "16");
1969 }
1970
1971 // Add group title
1972 const titleContainer = headerElement.createSpan({ cls: "task-group-title" });
1973 const displayTitle = isSubHeader ? headerItem.subGroupTitle : headerItem.groupTitle;
1974 this.renderGroupTitle(titleContainer, displayTitle);
1975
1976 // Add count
1977 headerElement.createSpan({
1978 text: ` (${headerItem.taskCount})`,
1979 cls: "agenda-view__item-count",

Callers 2

renderGroupedVirtualMethod · 0.95
renderGroupedNormalMethod · 0.95

Calls 2

renderGroupTitleMethod · 0.95
setIconFunction · 0.90

Tested by

no test coverage detected