MCPcopy
hub / github.com/callumalpass/tasknotes / buildMenu

Method buildMenu

src/components/DateContextMenu.ts:96–182  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

94 }
95
96 private buildMenu(): void {
97 if (this.options.title) {
98 this.menu.addItem((item) => {
99 item.setTitle(this.options.title || "");
100 item.setIcon("calendar");
101 item.setDisabled(true);
102 });
103 this.menu.addSeparator();
104 }
105
106 const dateOptions = this.getDateOptions();
107
108 const incrementOptions = dateOptions.filter((option) => option.category === "increment");
109 if (incrementOptions.length > 0) {
110 incrementOptions.forEach((option) => {
111 this.menu.addItem((item) => {
112 if (option.icon) item.setIcon(option.icon);
113 item.setTitle(option.label);
114 item.onClick(async () => {
115 this.options.onSelect(option.value, null);
116 });
117 });
118 });
119 this.menu.addSeparator();
120 }
121
122 const basicOptions = dateOptions.filter((option) => option.category === "basic");
123 basicOptions.forEach((option) => {
124 this.menu.addItem((item) => {
125 if (option.icon) item.setIcon(option.icon);
126 const isSelected = option.value && option.value === this.options.currentValue;
127 const title = isSelected
128 ? this.t("contextMenus.date.selected", "✓ {label}", { label: option.label })
129 : option.label;
130 item.setTitle(title);
131 item.onClick(async () => {
132 this.options.onSelect(option.value, null);
133 });
134 });
135 });
136
137 const weekdayOptions = dateOptions.filter((option) => option.category === "weekday");
138 if (weekdayOptions.length > 0) {
139 this.menu.addSeparator();
140 this.menu.addItem((item) => {
141 item.setTitle(this.t("contextMenus.date.weekdaysLabel", "Weekdays"));
142 item.setIcon("calendar");
143 const submenu = getSubmenu(item);
144 weekdayOptions.forEach((option) => {
145 submenu.addItem((subItem) => {
146 const isSelected =
147 option.value && option.value === this.options.currentValue;
148 const title = isSelected
149 ? this.t("contextMenus.date.selected", "✓ {label}", {
150 label: option.label,
151 })
152 : option.label;
153 subItem.setTitle(title);

Callers 1

constructorMethod · 0.95

Calls 6

getDateOptionsMethod · 0.95
tMethod · 0.95
showDateTimePickerMethod · 0.95
setIconMethod · 0.80
onClickMethod · 0.80
getSubmenuFunction · 0.70

Tested by

no test coverage detected