Heat the canola oil and 1 tablespoon of the butter in a large saute pan over medium heat. Once the butter is melted, add the onions and cook, stirring occasionally, until dark brown and caramelized, 25 to 35 minutes.
Add the vinegar, sugar and 1/4 cup water to the pan. Continue cooking, scraping up any browned bits, until the liquid is completely evaporated and the onions are soft and jammy, about 10 minutes. Transfer to a bowl and reserve.
Heat a stovetop griddle to medium low. Butter one side of each brioche slice with 1/2 tablespoon of the remaining butter. Flip the bread buttered-side down and place 2 slices of ham on half of the slices. Top the ham with a dollop of the caramelized onions and spread evenly over the ham. To the empty 6 slices of bread, add 2 slices of cheese. Fold the two halves together to make sandwiches.
Place the sandwiches on the griddle and cook until golden brown, 2 to 3 minutes. Using a spatula, flip the sandwiches to toast on other side and melt the cheese, another 2 to 3 minutes. Remove to a platter and cover loosely with foil. Hold the sandwiches in a warm oven until ready to serve.