()
| 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); |
no test coverage detected